github.com/devops-filetransfer/sshego@v7.0.4+incompatible/user_gen.go (about)

     1  package sshego
     2  
     3  // NOTE: THIS FILE WAS PRODUCED BY THE
     4  // GREENPACK CODE GENERATION TOOL (github.com/glycerine/greenpack)
     5  // DO NOT EDIT
     6  
     7  import (
     8  	"github.com/glycerine/greenpack/msgp"
     9  )
    10  
    11  // DecodeMsg implements msgp.Decodable
    12  // We treat empty fields as if we read a Nil from the wire.
    13  func (z *HostDb) DecodeMsg(dc *msgp.Reader) (err error) {
    14  	var sawTopNil bool
    15  	if dc.IsNil() {
    16  		sawTopNil = true
    17  		err = dc.ReadNil()
    18  		if err != nil {
    19  			return
    20  		}
    21  		dc.PushAlwaysNil()
    22  	}
    23  
    24  	var field []byte
    25  	_ = field
    26  	const maxFields0zgensym_189e87a53e58dbf2_1 = 3
    27  
    28  	// -- templateDecodeMsg starts here--
    29  	var totalEncodedFields0zgensym_189e87a53e58dbf2_1 uint32
    30  	totalEncodedFields0zgensym_189e87a53e58dbf2_1, err = dc.ReadMapHeader()
    31  	if err != nil {
    32  		return
    33  	}
    34  	encodedFieldsLeft0zgensym_189e87a53e58dbf2_1 := totalEncodedFields0zgensym_189e87a53e58dbf2_1
    35  	missingFieldsLeft0zgensym_189e87a53e58dbf2_1 := maxFields0zgensym_189e87a53e58dbf2_1 - totalEncodedFields0zgensym_189e87a53e58dbf2_1
    36  
    37  	var nextMiss0zgensym_189e87a53e58dbf2_1 int32 = -1
    38  	var found0zgensym_189e87a53e58dbf2_1 [maxFields0zgensym_189e87a53e58dbf2_1]bool
    39  	var curField0zgensym_189e87a53e58dbf2_1 string
    40  
    41  doneWithStruct0zgensym_189e87a53e58dbf2_1:
    42  	// First fill all the encoded fields, then
    43  	// treat the remaining, missing fields, as Nil.
    44  	for encodedFieldsLeft0zgensym_189e87a53e58dbf2_1 > 0 || missingFieldsLeft0zgensym_189e87a53e58dbf2_1 > 0 {
    45  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft0zgensym_189e87a53e58dbf2_1, missingFieldsLeft0zgensym_189e87a53e58dbf2_1, msgp.ShowFound(found0zgensym_189e87a53e58dbf2_1[:]), decodeMsgFieldOrder0zgensym_189e87a53e58dbf2_1)
    46  		if encodedFieldsLeft0zgensym_189e87a53e58dbf2_1 > 0 {
    47  			encodedFieldsLeft0zgensym_189e87a53e58dbf2_1--
    48  			field, err = dc.ReadMapKeyPtr()
    49  			if err != nil {
    50  				return
    51  			}
    52  			curField0zgensym_189e87a53e58dbf2_1 = msgp.UnsafeString(field)
    53  		} else {
    54  			//missing fields need handling
    55  			if nextMiss0zgensym_189e87a53e58dbf2_1 < 0 {
    56  				// tell the reader to only give us Nils
    57  				// until further notice.
    58  				dc.PushAlwaysNil()
    59  				nextMiss0zgensym_189e87a53e58dbf2_1 = 0
    60  			}
    61  			for nextMiss0zgensym_189e87a53e58dbf2_1 < maxFields0zgensym_189e87a53e58dbf2_1 && (found0zgensym_189e87a53e58dbf2_1[nextMiss0zgensym_189e87a53e58dbf2_1] || decodeMsgFieldSkip0zgensym_189e87a53e58dbf2_1[nextMiss0zgensym_189e87a53e58dbf2_1]) {
    62  				nextMiss0zgensym_189e87a53e58dbf2_1++
    63  			}
    64  			if nextMiss0zgensym_189e87a53e58dbf2_1 == maxFields0zgensym_189e87a53e58dbf2_1 {
    65  				// filled all the empty fields!
    66  				break doneWithStruct0zgensym_189e87a53e58dbf2_1
    67  			}
    68  			missingFieldsLeft0zgensym_189e87a53e58dbf2_1--
    69  			curField0zgensym_189e87a53e58dbf2_1 = decodeMsgFieldOrder0zgensym_189e87a53e58dbf2_1[nextMiss0zgensym_189e87a53e58dbf2_1]
    70  		}
    71  		//fmt.Printf("switching on curField: '%v'\n", curField0zgensym_189e87a53e58dbf2_1)
    72  		switch curField0zgensym_189e87a53e58dbf2_1 {
    73  		// -- templateDecodeMsg ends here --
    74  
    75  		case "UserHomePrefix__str":
    76  			found0zgensym_189e87a53e58dbf2_1[0] = true
    77  			z.UserHomePrefix, err = dc.ReadString()
    78  			if err != nil {
    79  				return
    80  			}
    81  		case "Persist__rct":
    82  			found0zgensym_189e87a53e58dbf2_1[2] = true
    83  			const maxFields2zgensym_189e87a53e58dbf2_3 = 2
    84  
    85  			// -- templateDecodeMsg starts here--
    86  			var totalEncodedFields2zgensym_189e87a53e58dbf2_3 uint32
    87  			totalEncodedFields2zgensym_189e87a53e58dbf2_3, err = dc.ReadMapHeader()
    88  			if err != nil {
    89  				return
    90  			}
    91  			encodedFieldsLeft2zgensym_189e87a53e58dbf2_3 := totalEncodedFields2zgensym_189e87a53e58dbf2_3
    92  			missingFieldsLeft2zgensym_189e87a53e58dbf2_3 := maxFields2zgensym_189e87a53e58dbf2_3 - totalEncodedFields2zgensym_189e87a53e58dbf2_3
    93  
    94  			var nextMiss2zgensym_189e87a53e58dbf2_3 int32 = -1
    95  			var found2zgensym_189e87a53e58dbf2_3 [maxFields2zgensym_189e87a53e58dbf2_3]bool
    96  			var curField2zgensym_189e87a53e58dbf2_3 string
    97  
    98  		doneWithStruct2zgensym_189e87a53e58dbf2_3:
    99  			// First fill all the encoded fields, then
   100  			// treat the remaining, missing fields, as Nil.
   101  			for encodedFieldsLeft2zgensym_189e87a53e58dbf2_3 > 0 || missingFieldsLeft2zgensym_189e87a53e58dbf2_3 > 0 {
   102  				//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft2zgensym_189e87a53e58dbf2_3, missingFieldsLeft2zgensym_189e87a53e58dbf2_3, msgp.ShowFound(found2zgensym_189e87a53e58dbf2_3[:]), decodeMsgFieldOrder2zgensym_189e87a53e58dbf2_3)
   103  				if encodedFieldsLeft2zgensym_189e87a53e58dbf2_3 > 0 {
   104  					encodedFieldsLeft2zgensym_189e87a53e58dbf2_3--
   105  					field, err = dc.ReadMapKeyPtr()
   106  					if err != nil {
   107  						return
   108  					}
   109  					curField2zgensym_189e87a53e58dbf2_3 = msgp.UnsafeString(field)
   110  				} else {
   111  					//missing fields need handling
   112  					if nextMiss2zgensym_189e87a53e58dbf2_3 < 0 {
   113  						// tell the reader to only give us Nils
   114  						// until further notice.
   115  						dc.PushAlwaysNil()
   116  						nextMiss2zgensym_189e87a53e58dbf2_3 = 0
   117  					}
   118  					for nextMiss2zgensym_189e87a53e58dbf2_3 < maxFields2zgensym_189e87a53e58dbf2_3 && (found2zgensym_189e87a53e58dbf2_3[nextMiss2zgensym_189e87a53e58dbf2_3] || decodeMsgFieldSkip2zgensym_189e87a53e58dbf2_3[nextMiss2zgensym_189e87a53e58dbf2_3]) {
   119  						nextMiss2zgensym_189e87a53e58dbf2_3++
   120  					}
   121  					if nextMiss2zgensym_189e87a53e58dbf2_3 == maxFields2zgensym_189e87a53e58dbf2_3 {
   122  						// filled all the empty fields!
   123  						break doneWithStruct2zgensym_189e87a53e58dbf2_3
   124  					}
   125  					missingFieldsLeft2zgensym_189e87a53e58dbf2_3--
   126  					curField2zgensym_189e87a53e58dbf2_3 = decodeMsgFieldOrder2zgensym_189e87a53e58dbf2_3[nextMiss2zgensym_189e87a53e58dbf2_3]
   127  				}
   128  				//fmt.Printf("switching on curField: '%v'\n", curField2zgensym_189e87a53e58dbf2_3)
   129  				switch curField2zgensym_189e87a53e58dbf2_3 {
   130  				// -- templateDecodeMsg ends here --
   131  
   132  				case "Users_zid00_ptr":
   133  					found2zgensym_189e87a53e58dbf2_3[0] = true
   134  					if dc.IsNil() {
   135  						err = dc.ReadNil()
   136  						if err != nil {
   137  							return
   138  						}
   139  
   140  						if z.Persist.Users != nil {
   141  							dc.PushAlwaysNil()
   142  							err = z.Persist.Users.DecodeMsg(dc)
   143  							if err != nil {
   144  								return
   145  							}
   146  							dc.PopAlwaysNil()
   147  						}
   148  					} else {
   149  						// not Nil, we have something to read
   150  
   151  						if z.Persist.Users == nil {
   152  							z.Persist.Users = new(AtomicUserMap)
   153  						}
   154  						err = z.Persist.Users.DecodeMsg(dc)
   155  						if err != nil {
   156  							return
   157  						}
   158  					}
   159  				case "HostPrivateKeyPath_zid01_str":
   160  					found2zgensym_189e87a53e58dbf2_3[1] = true
   161  					z.Persist.HostPrivateKeyPath, err = dc.ReadString()
   162  					if err != nil {
   163  						return
   164  					}
   165  				default:
   166  					err = dc.Skip()
   167  					if err != nil {
   168  						return
   169  					}
   170  				}
   171  			}
   172  			if nextMiss2zgensym_189e87a53e58dbf2_3 != -1 {
   173  				dc.PopAlwaysNil()
   174  			}
   175  
   176  		default:
   177  			err = dc.Skip()
   178  			if err != nil {
   179  				return
   180  			}
   181  		}
   182  	}
   183  	if nextMiss0zgensym_189e87a53e58dbf2_1 != -1 {
   184  		dc.PopAlwaysNil()
   185  	}
   186  
   187  	if sawTopNil {
   188  		dc.PopAlwaysNil()
   189  	}
   190  
   191  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
   192  		p.PostLoadHook()
   193  	}
   194  
   195  	return
   196  }
   197  
   198  // fields of HostDb
   199  var decodeMsgFieldOrder0zgensym_189e87a53e58dbf2_1 = []string{"UserHomePrefix__str", "", "Persist__rct"}
   200  
   201  var decodeMsgFieldSkip0zgensym_189e87a53e58dbf2_1 = []bool{false, true, false}
   202  
   203  // fields of HostDbPersist
   204  var decodeMsgFieldOrder2zgensym_189e87a53e58dbf2_3 = []string{"Users_zid00_ptr", "HostPrivateKeyPath_zid01_str"}
   205  
   206  var decodeMsgFieldSkip2zgensym_189e87a53e58dbf2_3 = []bool{false, false}
   207  
   208  // fieldsNotEmpty supports omitempty tags
   209  func (z *HostDb) fieldsNotEmpty(isempty []bool) uint32 {
   210  	if len(isempty) == 0 {
   211  		return 2
   212  	}
   213  	var fieldsInUse uint32 = 2
   214  	isempty[0] = (len(z.UserHomePrefix) == 0) // string, omitempty
   215  	if isempty[0] {
   216  		fieldsInUse--
   217  	}
   218  	isempty[2] = false // struct values are never empty
   219  	if isempty[2] {
   220  		fieldsInUse--
   221  	}
   222  
   223  	return fieldsInUse
   224  }
   225  
   226  // EncodeMsg implements msgp.Encodable
   227  func (z *HostDb) EncodeMsg(en *msgp.Writer) (err error) {
   228  	if p, ok := interface{}(z).(msgp.PreSave); ok {
   229  		p.PreSaveHook()
   230  	}
   231  
   232  	// honor the omitempty tags
   233  	var empty_zgensym_189e87a53e58dbf2_4 [3]bool
   234  	fieldsInUse_zgensym_189e87a53e58dbf2_5 := z.fieldsNotEmpty(empty_zgensym_189e87a53e58dbf2_4[:])
   235  
   236  	// map header
   237  	err = en.WriteMapHeader(fieldsInUse_zgensym_189e87a53e58dbf2_5)
   238  	if err != nil {
   239  		return err
   240  	}
   241  
   242  	if !empty_zgensym_189e87a53e58dbf2_4[0] {
   243  		// write "UserHomePrefix__str"
   244  		err = en.Append(0xb3, 0x55, 0x73, 0x65, 0x72, 0x48, 0x6f, 0x6d, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x5f, 0x73, 0x74, 0x72)
   245  		if err != nil {
   246  			return err
   247  		}
   248  		err = en.WriteString(z.UserHomePrefix)
   249  		if err != nil {
   250  			return
   251  		}
   252  	}
   253  
   254  	if !empty_zgensym_189e87a53e58dbf2_4[2] {
   255  		// write "Persist__rct"
   256  		err = en.Append(0xac, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x5f, 0x72, 0x63, 0x74)
   257  		if err != nil {
   258  			return err
   259  		}
   260  
   261  		// honor the omitempty tags
   262  		var empty_zgensym_189e87a53e58dbf2_6 [2]bool
   263  		fieldsInUse_zgensym_189e87a53e58dbf2_7 := z.Persist.fieldsNotEmpty(empty_zgensym_189e87a53e58dbf2_6[:])
   264  
   265  		// map header
   266  		err = en.WriteMapHeader(fieldsInUse_zgensym_189e87a53e58dbf2_7)
   267  		if err != nil {
   268  			return err
   269  		}
   270  
   271  		if !empty_zgensym_189e87a53e58dbf2_6[0] {
   272  			// write "Users_zid00_ptr"
   273  			err = en.Append(0xaf, 0x55, 0x73, 0x65, 0x72, 0x73, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x30, 0x5f, 0x70, 0x74, 0x72)
   274  			if err != nil {
   275  				return err
   276  			}
   277  			if z.Persist.Users == nil {
   278  				err = en.WriteNil()
   279  				if err != nil {
   280  					return
   281  				}
   282  			} else {
   283  				err = z.Persist.Users.EncodeMsg(en)
   284  				if err != nil {
   285  					return
   286  				}
   287  			}
   288  		}
   289  
   290  		if !empty_zgensym_189e87a53e58dbf2_6[1] {
   291  			// write "HostPrivateKeyPath_zid01_str"
   292  			err = en.Append(0xbc, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x31, 0x5f, 0x73, 0x74, 0x72)
   293  			if err != nil {
   294  				return err
   295  			}
   296  			err = en.WriteString(z.Persist.HostPrivateKeyPath)
   297  			if err != nil {
   298  				return
   299  			}
   300  		}
   301  
   302  	}
   303  
   304  	return
   305  }
   306  
   307  // MarshalMsg implements msgp.Marshaler
   308  func (z *HostDb) MarshalMsg(b []byte) (o []byte, err error) {
   309  	if p, ok := interface{}(z).(msgp.PreSave); ok {
   310  		p.PreSaveHook()
   311  	}
   312  
   313  	o = msgp.Require(b, z.Msgsize())
   314  
   315  	// honor the omitempty tags
   316  	var empty [3]bool
   317  	fieldsInUse := z.fieldsNotEmpty(empty[:])
   318  	o = msgp.AppendMapHeader(o, fieldsInUse)
   319  
   320  	if !empty[0] {
   321  		// string "UserHomePrefix__str"
   322  		o = append(o, 0xb3, 0x55, 0x73, 0x65, 0x72, 0x48, 0x6f, 0x6d, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x5f, 0x73, 0x74, 0x72)
   323  		o = msgp.AppendString(o, z.UserHomePrefix)
   324  	}
   325  
   326  	if !empty[2] {
   327  		// string "Persist__rct"
   328  		o = append(o, 0xac, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x5f, 0x72, 0x63, 0x74)
   329  
   330  		// honor the omitempty tags
   331  		var empty [2]bool
   332  		fieldsInUse := z.Persist.fieldsNotEmpty(empty[:])
   333  		o = msgp.AppendMapHeader(o, fieldsInUse)
   334  
   335  		if !empty[0] {
   336  			// string "Users_zid00_ptr"
   337  			o = append(o, 0xaf, 0x55, 0x73, 0x65, 0x72, 0x73, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x30, 0x5f, 0x70, 0x74, 0x72)
   338  			if z.Persist.Users == nil {
   339  				o = msgp.AppendNil(o)
   340  			} else {
   341  				o, err = z.Persist.Users.MarshalMsg(o)
   342  				if err != nil {
   343  					return
   344  				}
   345  			}
   346  		}
   347  
   348  		if !empty[1] {
   349  			// string "HostPrivateKeyPath_zid01_str"
   350  			o = append(o, 0xbc, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x31, 0x5f, 0x73, 0x74, 0x72)
   351  			o = msgp.AppendString(o, z.Persist.HostPrivateKeyPath)
   352  		}
   353  
   354  	}
   355  
   356  	return
   357  }
   358  
   359  // UnmarshalMsg implements msgp.Unmarshaler
   360  func (z *HostDb) UnmarshalMsg(bts []byte) (o []byte, err error) {
   361  	return z.UnmarshalMsgWithCfg(bts, nil)
   362  }
   363  func (z *HostDb) UnmarshalMsgWithCfg(bts []byte, cfg *msgp.RuntimeConfig) (o []byte, err error) {
   364  	var nbs msgp.NilBitsStack
   365  	nbs.Init(cfg)
   366  	var sawTopNil bool
   367  	if msgp.IsNil(bts) {
   368  		sawTopNil = true
   369  		bts = nbs.PushAlwaysNil(bts[1:])
   370  	}
   371  
   372  	var field []byte
   373  	_ = field
   374  	const maxFields8zgensym_189e87a53e58dbf2_9 = 3
   375  
   376  	// -- templateUnmarshalMsg starts here--
   377  	var totalEncodedFields8zgensym_189e87a53e58dbf2_9 uint32
   378  	if !nbs.AlwaysNil {
   379  		totalEncodedFields8zgensym_189e87a53e58dbf2_9, bts, err = nbs.ReadMapHeaderBytes(bts)
   380  		if err != nil {
   381  			return
   382  		}
   383  	}
   384  	encodedFieldsLeft8zgensym_189e87a53e58dbf2_9 := totalEncodedFields8zgensym_189e87a53e58dbf2_9
   385  	missingFieldsLeft8zgensym_189e87a53e58dbf2_9 := maxFields8zgensym_189e87a53e58dbf2_9 - totalEncodedFields8zgensym_189e87a53e58dbf2_9
   386  
   387  	var nextMiss8zgensym_189e87a53e58dbf2_9 int32 = -1
   388  	var found8zgensym_189e87a53e58dbf2_9 [maxFields8zgensym_189e87a53e58dbf2_9]bool
   389  	var curField8zgensym_189e87a53e58dbf2_9 string
   390  
   391  doneWithStruct8zgensym_189e87a53e58dbf2_9:
   392  	// First fill all the encoded fields, then
   393  	// treat the remaining, missing fields, as Nil.
   394  	for encodedFieldsLeft8zgensym_189e87a53e58dbf2_9 > 0 || missingFieldsLeft8zgensym_189e87a53e58dbf2_9 > 0 {
   395  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft8zgensym_189e87a53e58dbf2_9, missingFieldsLeft8zgensym_189e87a53e58dbf2_9, msgp.ShowFound(found8zgensym_189e87a53e58dbf2_9[:]), unmarshalMsgFieldOrder8zgensym_189e87a53e58dbf2_9)
   396  		if encodedFieldsLeft8zgensym_189e87a53e58dbf2_9 > 0 {
   397  			encodedFieldsLeft8zgensym_189e87a53e58dbf2_9--
   398  			field, bts, err = nbs.ReadMapKeyZC(bts)
   399  			if err != nil {
   400  				return
   401  			}
   402  			curField8zgensym_189e87a53e58dbf2_9 = msgp.UnsafeString(field)
   403  		} else {
   404  			//missing fields need handling
   405  			if nextMiss8zgensym_189e87a53e58dbf2_9 < 0 {
   406  				// set bts to contain just mnil (0xc0)
   407  				bts = nbs.PushAlwaysNil(bts)
   408  				nextMiss8zgensym_189e87a53e58dbf2_9 = 0
   409  			}
   410  			for nextMiss8zgensym_189e87a53e58dbf2_9 < maxFields8zgensym_189e87a53e58dbf2_9 && (found8zgensym_189e87a53e58dbf2_9[nextMiss8zgensym_189e87a53e58dbf2_9] || unmarshalMsgFieldSkip8zgensym_189e87a53e58dbf2_9[nextMiss8zgensym_189e87a53e58dbf2_9]) {
   411  				nextMiss8zgensym_189e87a53e58dbf2_9++
   412  			}
   413  			if nextMiss8zgensym_189e87a53e58dbf2_9 == maxFields8zgensym_189e87a53e58dbf2_9 {
   414  				// filled all the empty fields!
   415  				break doneWithStruct8zgensym_189e87a53e58dbf2_9
   416  			}
   417  			missingFieldsLeft8zgensym_189e87a53e58dbf2_9--
   418  			curField8zgensym_189e87a53e58dbf2_9 = unmarshalMsgFieldOrder8zgensym_189e87a53e58dbf2_9[nextMiss8zgensym_189e87a53e58dbf2_9]
   419  		}
   420  		//fmt.Printf("switching on curField: '%v'\n", curField8zgensym_189e87a53e58dbf2_9)
   421  		switch curField8zgensym_189e87a53e58dbf2_9 {
   422  		// -- templateUnmarshalMsg ends here --
   423  
   424  		case "UserHomePrefix__str":
   425  			found8zgensym_189e87a53e58dbf2_9[0] = true
   426  			z.UserHomePrefix, bts, err = nbs.ReadStringBytes(bts)
   427  
   428  			if err != nil {
   429  				return
   430  			}
   431  		case "Persist__rct":
   432  			found8zgensym_189e87a53e58dbf2_9[2] = true
   433  			const maxFields10zgensym_189e87a53e58dbf2_11 = 2
   434  
   435  			// -- templateUnmarshalMsg starts here--
   436  			var totalEncodedFields10zgensym_189e87a53e58dbf2_11 uint32
   437  			if !nbs.AlwaysNil {
   438  				totalEncodedFields10zgensym_189e87a53e58dbf2_11, bts, err = nbs.ReadMapHeaderBytes(bts)
   439  				if err != nil {
   440  					return
   441  				}
   442  			}
   443  			encodedFieldsLeft10zgensym_189e87a53e58dbf2_11 := totalEncodedFields10zgensym_189e87a53e58dbf2_11
   444  			missingFieldsLeft10zgensym_189e87a53e58dbf2_11 := maxFields10zgensym_189e87a53e58dbf2_11 - totalEncodedFields10zgensym_189e87a53e58dbf2_11
   445  
   446  			var nextMiss10zgensym_189e87a53e58dbf2_11 int32 = -1
   447  			var found10zgensym_189e87a53e58dbf2_11 [maxFields10zgensym_189e87a53e58dbf2_11]bool
   448  			var curField10zgensym_189e87a53e58dbf2_11 string
   449  
   450  		doneWithStruct10zgensym_189e87a53e58dbf2_11:
   451  			// First fill all the encoded fields, then
   452  			// treat the remaining, missing fields, as Nil.
   453  			for encodedFieldsLeft10zgensym_189e87a53e58dbf2_11 > 0 || missingFieldsLeft10zgensym_189e87a53e58dbf2_11 > 0 {
   454  				//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft10zgensym_189e87a53e58dbf2_11, missingFieldsLeft10zgensym_189e87a53e58dbf2_11, msgp.ShowFound(found10zgensym_189e87a53e58dbf2_11[:]), unmarshalMsgFieldOrder10zgensym_189e87a53e58dbf2_11)
   455  				if encodedFieldsLeft10zgensym_189e87a53e58dbf2_11 > 0 {
   456  					encodedFieldsLeft10zgensym_189e87a53e58dbf2_11--
   457  					field, bts, err = nbs.ReadMapKeyZC(bts)
   458  					if err != nil {
   459  						return
   460  					}
   461  					curField10zgensym_189e87a53e58dbf2_11 = msgp.UnsafeString(field)
   462  				} else {
   463  					//missing fields need handling
   464  					if nextMiss10zgensym_189e87a53e58dbf2_11 < 0 {
   465  						// set bts to contain just mnil (0xc0)
   466  						bts = nbs.PushAlwaysNil(bts)
   467  						nextMiss10zgensym_189e87a53e58dbf2_11 = 0
   468  					}
   469  					for nextMiss10zgensym_189e87a53e58dbf2_11 < maxFields10zgensym_189e87a53e58dbf2_11 && (found10zgensym_189e87a53e58dbf2_11[nextMiss10zgensym_189e87a53e58dbf2_11] || unmarshalMsgFieldSkip10zgensym_189e87a53e58dbf2_11[nextMiss10zgensym_189e87a53e58dbf2_11]) {
   470  						nextMiss10zgensym_189e87a53e58dbf2_11++
   471  					}
   472  					if nextMiss10zgensym_189e87a53e58dbf2_11 == maxFields10zgensym_189e87a53e58dbf2_11 {
   473  						// filled all the empty fields!
   474  						break doneWithStruct10zgensym_189e87a53e58dbf2_11
   475  					}
   476  					missingFieldsLeft10zgensym_189e87a53e58dbf2_11--
   477  					curField10zgensym_189e87a53e58dbf2_11 = unmarshalMsgFieldOrder10zgensym_189e87a53e58dbf2_11[nextMiss10zgensym_189e87a53e58dbf2_11]
   478  				}
   479  				//fmt.Printf("switching on curField: '%v'\n", curField10zgensym_189e87a53e58dbf2_11)
   480  				switch curField10zgensym_189e87a53e58dbf2_11 {
   481  				// -- templateUnmarshalMsg ends here --
   482  
   483  				case "Users_zid00_ptr":
   484  					found10zgensym_189e87a53e58dbf2_11[0] = true
   485  					if nbs.AlwaysNil {
   486  						if z.Persist.Users != nil {
   487  							z.Persist.Users.UnmarshalMsg(msgp.OnlyNilSlice)
   488  						}
   489  					} else {
   490  						// not nbs.AlwaysNil
   491  						if msgp.IsNil(bts) {
   492  							bts = bts[1:]
   493  							if nil != z.Persist.Users {
   494  								z.Persist.Users.UnmarshalMsg(msgp.OnlyNilSlice)
   495  							}
   496  						} else {
   497  							// not nbs.AlwaysNil and not IsNil(bts): have something to read
   498  
   499  							if z.Persist.Users == nil {
   500  								z.Persist.Users = new(AtomicUserMap)
   501  							}
   502  							bts, err = z.Persist.Users.UnmarshalMsg(bts)
   503  							if err != nil {
   504  								return
   505  							}
   506  							if err != nil {
   507  								return
   508  							}
   509  						}
   510  					}
   511  				case "HostPrivateKeyPath_zid01_str":
   512  					found10zgensym_189e87a53e58dbf2_11[1] = true
   513  					z.Persist.HostPrivateKeyPath, bts, err = nbs.ReadStringBytes(bts)
   514  
   515  					if err != nil {
   516  						return
   517  					}
   518  				default:
   519  					bts, err = msgp.Skip(bts)
   520  					if err != nil {
   521  						return
   522  					}
   523  				}
   524  			}
   525  			if nextMiss10zgensym_189e87a53e58dbf2_11 != -1 {
   526  				bts = nbs.PopAlwaysNil()
   527  			}
   528  
   529  		default:
   530  			bts, err = msgp.Skip(bts)
   531  			if err != nil {
   532  				return
   533  			}
   534  		}
   535  	}
   536  	if nextMiss8zgensym_189e87a53e58dbf2_9 != -1 {
   537  		bts = nbs.PopAlwaysNil()
   538  	}
   539  
   540  	if sawTopNil {
   541  		bts = nbs.PopAlwaysNil()
   542  	}
   543  	o = bts
   544  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
   545  		p.PostLoadHook()
   546  	}
   547  
   548  	return
   549  }
   550  
   551  // fields of HostDb
   552  var unmarshalMsgFieldOrder8zgensym_189e87a53e58dbf2_9 = []string{"UserHomePrefix__str", "", "Persist__rct"}
   553  
   554  var unmarshalMsgFieldSkip8zgensym_189e87a53e58dbf2_9 = []bool{false, true, false}
   555  
   556  // fields of HostDbPersist
   557  var unmarshalMsgFieldOrder10zgensym_189e87a53e58dbf2_11 = []string{"Users_zid00_ptr", "HostPrivateKeyPath_zid01_str"}
   558  
   559  var unmarshalMsgFieldSkip10zgensym_189e87a53e58dbf2_11 = []bool{false, false}
   560  
   561  // Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
   562  func (z *HostDb) Msgsize() (s int) {
   563  	s = 1 + 20 + msgp.StringPrefixSize + len(z.UserHomePrefix) + 13 + 1 + 16
   564  	if z.Persist.Users == nil {
   565  		s += msgp.NilSize
   566  	} else {
   567  		s += z.Persist.Users.Msgsize()
   568  	}
   569  	s += 29 + msgp.StringPrefixSize + len(z.Persist.HostPrivateKeyPath)
   570  	return
   571  }
   572  
   573  // DecodeMsg implements msgp.Decodable
   574  // We treat empty fields as if we read a Nil from the wire.
   575  func (z *HostDbPersist) DecodeMsg(dc *msgp.Reader) (err error) {
   576  	var sawTopNil bool
   577  	if dc.IsNil() {
   578  		sawTopNil = true
   579  		err = dc.ReadNil()
   580  		if err != nil {
   581  			return
   582  		}
   583  		dc.PushAlwaysNil()
   584  	}
   585  
   586  	var field []byte
   587  	_ = field
   588  	const maxFields12zgensym_189e87a53e58dbf2_13 = 2
   589  
   590  	// -- templateDecodeMsg starts here--
   591  	var totalEncodedFields12zgensym_189e87a53e58dbf2_13 uint32
   592  	totalEncodedFields12zgensym_189e87a53e58dbf2_13, err = dc.ReadMapHeader()
   593  	if err != nil {
   594  		return
   595  	}
   596  	encodedFieldsLeft12zgensym_189e87a53e58dbf2_13 := totalEncodedFields12zgensym_189e87a53e58dbf2_13
   597  	missingFieldsLeft12zgensym_189e87a53e58dbf2_13 := maxFields12zgensym_189e87a53e58dbf2_13 - totalEncodedFields12zgensym_189e87a53e58dbf2_13
   598  
   599  	var nextMiss12zgensym_189e87a53e58dbf2_13 int32 = -1
   600  	var found12zgensym_189e87a53e58dbf2_13 [maxFields12zgensym_189e87a53e58dbf2_13]bool
   601  	var curField12zgensym_189e87a53e58dbf2_13 string
   602  
   603  doneWithStruct12zgensym_189e87a53e58dbf2_13:
   604  	// First fill all the encoded fields, then
   605  	// treat the remaining, missing fields, as Nil.
   606  	for encodedFieldsLeft12zgensym_189e87a53e58dbf2_13 > 0 || missingFieldsLeft12zgensym_189e87a53e58dbf2_13 > 0 {
   607  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft12zgensym_189e87a53e58dbf2_13, missingFieldsLeft12zgensym_189e87a53e58dbf2_13, msgp.ShowFound(found12zgensym_189e87a53e58dbf2_13[:]), decodeMsgFieldOrder12zgensym_189e87a53e58dbf2_13)
   608  		if encodedFieldsLeft12zgensym_189e87a53e58dbf2_13 > 0 {
   609  			encodedFieldsLeft12zgensym_189e87a53e58dbf2_13--
   610  			field, err = dc.ReadMapKeyPtr()
   611  			if err != nil {
   612  				return
   613  			}
   614  			curField12zgensym_189e87a53e58dbf2_13 = msgp.UnsafeString(field)
   615  		} else {
   616  			//missing fields need handling
   617  			if nextMiss12zgensym_189e87a53e58dbf2_13 < 0 {
   618  				// tell the reader to only give us Nils
   619  				// until further notice.
   620  				dc.PushAlwaysNil()
   621  				nextMiss12zgensym_189e87a53e58dbf2_13 = 0
   622  			}
   623  			for nextMiss12zgensym_189e87a53e58dbf2_13 < maxFields12zgensym_189e87a53e58dbf2_13 && (found12zgensym_189e87a53e58dbf2_13[nextMiss12zgensym_189e87a53e58dbf2_13] || decodeMsgFieldSkip12zgensym_189e87a53e58dbf2_13[nextMiss12zgensym_189e87a53e58dbf2_13]) {
   624  				nextMiss12zgensym_189e87a53e58dbf2_13++
   625  			}
   626  			if nextMiss12zgensym_189e87a53e58dbf2_13 == maxFields12zgensym_189e87a53e58dbf2_13 {
   627  				// filled all the empty fields!
   628  				break doneWithStruct12zgensym_189e87a53e58dbf2_13
   629  			}
   630  			missingFieldsLeft12zgensym_189e87a53e58dbf2_13--
   631  			curField12zgensym_189e87a53e58dbf2_13 = decodeMsgFieldOrder12zgensym_189e87a53e58dbf2_13[nextMiss12zgensym_189e87a53e58dbf2_13]
   632  		}
   633  		//fmt.Printf("switching on curField: '%v'\n", curField12zgensym_189e87a53e58dbf2_13)
   634  		switch curField12zgensym_189e87a53e58dbf2_13 {
   635  		// -- templateDecodeMsg ends here --
   636  
   637  		case "Users_zid00_ptr":
   638  			found12zgensym_189e87a53e58dbf2_13[0] = true
   639  			if dc.IsNil() {
   640  				err = dc.ReadNil()
   641  				if err != nil {
   642  					return
   643  				}
   644  
   645  				if z.Users != nil {
   646  					dc.PushAlwaysNil()
   647  					err = z.Users.DecodeMsg(dc)
   648  					if err != nil {
   649  						return
   650  					}
   651  					dc.PopAlwaysNil()
   652  				}
   653  			} else {
   654  				// not Nil, we have something to read
   655  
   656  				if z.Users == nil {
   657  					z.Users = new(AtomicUserMap)
   658  				}
   659  				err = z.Users.DecodeMsg(dc)
   660  				if err != nil {
   661  					return
   662  				}
   663  			}
   664  		case "HostPrivateKeyPath_zid01_str":
   665  			found12zgensym_189e87a53e58dbf2_13[1] = true
   666  			z.HostPrivateKeyPath, err = dc.ReadString()
   667  			if err != nil {
   668  				return
   669  			}
   670  		default:
   671  			err = dc.Skip()
   672  			if err != nil {
   673  				return
   674  			}
   675  		}
   676  	}
   677  	if nextMiss12zgensym_189e87a53e58dbf2_13 != -1 {
   678  		dc.PopAlwaysNil()
   679  	}
   680  
   681  	if sawTopNil {
   682  		dc.PopAlwaysNil()
   683  	}
   684  
   685  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
   686  		p.PostLoadHook()
   687  	}
   688  
   689  	return
   690  }
   691  
   692  // fields of HostDbPersist
   693  var decodeMsgFieldOrder12zgensym_189e87a53e58dbf2_13 = []string{"Users_zid00_ptr", "HostPrivateKeyPath_zid01_str"}
   694  
   695  var decodeMsgFieldSkip12zgensym_189e87a53e58dbf2_13 = []bool{false, false}
   696  
   697  // fieldsNotEmpty supports omitempty tags
   698  func (z *HostDbPersist) fieldsNotEmpty(isempty []bool) uint32 {
   699  	if len(isempty) == 0 {
   700  		return 2
   701  	}
   702  	var fieldsInUse uint32 = 2
   703  	isempty[0] = (z.Users == nil) // pointer, omitempty
   704  	if isempty[0] {
   705  		fieldsInUse--
   706  	}
   707  	isempty[1] = (len(z.HostPrivateKeyPath) == 0) // string, omitempty
   708  	if isempty[1] {
   709  		fieldsInUse--
   710  	}
   711  
   712  	return fieldsInUse
   713  }
   714  
   715  // EncodeMsg implements msgp.Encodable
   716  func (z *HostDbPersist) EncodeMsg(en *msgp.Writer) (err error) {
   717  	if p, ok := interface{}(z).(msgp.PreSave); ok {
   718  		p.PreSaveHook()
   719  	}
   720  
   721  	// honor the omitempty tags
   722  	var empty_zgensym_189e87a53e58dbf2_14 [2]bool
   723  	fieldsInUse_zgensym_189e87a53e58dbf2_15 := z.fieldsNotEmpty(empty_zgensym_189e87a53e58dbf2_14[:])
   724  
   725  	// map header
   726  	err = en.WriteMapHeader(fieldsInUse_zgensym_189e87a53e58dbf2_15)
   727  	if err != nil {
   728  		return err
   729  	}
   730  
   731  	if !empty_zgensym_189e87a53e58dbf2_14[0] {
   732  		// write "Users_zid00_ptr"
   733  		err = en.Append(0xaf, 0x55, 0x73, 0x65, 0x72, 0x73, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x30, 0x5f, 0x70, 0x74, 0x72)
   734  		if err != nil {
   735  			return err
   736  		}
   737  		if z.Users == nil {
   738  			err = en.WriteNil()
   739  			if err != nil {
   740  				return
   741  			}
   742  		} else {
   743  			err = z.Users.EncodeMsg(en)
   744  			if err != nil {
   745  				return
   746  			}
   747  		}
   748  	}
   749  
   750  	if !empty_zgensym_189e87a53e58dbf2_14[1] {
   751  		// write "HostPrivateKeyPath_zid01_str"
   752  		err = en.Append(0xbc, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x31, 0x5f, 0x73, 0x74, 0x72)
   753  		if err != nil {
   754  			return err
   755  		}
   756  		err = en.WriteString(z.HostPrivateKeyPath)
   757  		if err != nil {
   758  			return
   759  		}
   760  	}
   761  
   762  	return
   763  }
   764  
   765  // MarshalMsg implements msgp.Marshaler
   766  func (z *HostDbPersist) MarshalMsg(b []byte) (o []byte, err error) {
   767  	if p, ok := interface{}(z).(msgp.PreSave); ok {
   768  		p.PreSaveHook()
   769  	}
   770  
   771  	o = msgp.Require(b, z.Msgsize())
   772  
   773  	// honor the omitempty tags
   774  	var empty [2]bool
   775  	fieldsInUse := z.fieldsNotEmpty(empty[:])
   776  	o = msgp.AppendMapHeader(o, fieldsInUse)
   777  
   778  	if !empty[0] {
   779  		// string "Users_zid00_ptr"
   780  		o = append(o, 0xaf, 0x55, 0x73, 0x65, 0x72, 0x73, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x30, 0x5f, 0x70, 0x74, 0x72)
   781  		if z.Users == nil {
   782  			o = msgp.AppendNil(o)
   783  		} else {
   784  			o, err = z.Users.MarshalMsg(o)
   785  			if err != nil {
   786  				return
   787  			}
   788  		}
   789  	}
   790  
   791  	if !empty[1] {
   792  		// string "HostPrivateKeyPath_zid01_str"
   793  		o = append(o, 0xbc, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x7a, 0x69, 0x64, 0x30, 0x31, 0x5f, 0x73, 0x74, 0x72)
   794  		o = msgp.AppendString(o, z.HostPrivateKeyPath)
   795  	}
   796  
   797  	return
   798  }
   799  
   800  // UnmarshalMsg implements msgp.Unmarshaler
   801  func (z *HostDbPersist) UnmarshalMsg(bts []byte) (o []byte, err error) {
   802  	return z.UnmarshalMsgWithCfg(bts, nil)
   803  }
   804  func (z *HostDbPersist) UnmarshalMsgWithCfg(bts []byte, cfg *msgp.RuntimeConfig) (o []byte, err error) {
   805  	var nbs msgp.NilBitsStack
   806  	nbs.Init(cfg)
   807  	var sawTopNil bool
   808  	if msgp.IsNil(bts) {
   809  		sawTopNil = true
   810  		bts = nbs.PushAlwaysNil(bts[1:])
   811  	}
   812  
   813  	var field []byte
   814  	_ = field
   815  	const maxFields16zgensym_189e87a53e58dbf2_17 = 2
   816  
   817  	// -- templateUnmarshalMsg starts here--
   818  	var totalEncodedFields16zgensym_189e87a53e58dbf2_17 uint32
   819  	if !nbs.AlwaysNil {
   820  		totalEncodedFields16zgensym_189e87a53e58dbf2_17, bts, err = nbs.ReadMapHeaderBytes(bts)
   821  		if err != nil {
   822  			return
   823  		}
   824  	}
   825  	encodedFieldsLeft16zgensym_189e87a53e58dbf2_17 := totalEncodedFields16zgensym_189e87a53e58dbf2_17
   826  	missingFieldsLeft16zgensym_189e87a53e58dbf2_17 := maxFields16zgensym_189e87a53e58dbf2_17 - totalEncodedFields16zgensym_189e87a53e58dbf2_17
   827  
   828  	var nextMiss16zgensym_189e87a53e58dbf2_17 int32 = -1
   829  	var found16zgensym_189e87a53e58dbf2_17 [maxFields16zgensym_189e87a53e58dbf2_17]bool
   830  	var curField16zgensym_189e87a53e58dbf2_17 string
   831  
   832  doneWithStruct16zgensym_189e87a53e58dbf2_17:
   833  	// First fill all the encoded fields, then
   834  	// treat the remaining, missing fields, as Nil.
   835  	for encodedFieldsLeft16zgensym_189e87a53e58dbf2_17 > 0 || missingFieldsLeft16zgensym_189e87a53e58dbf2_17 > 0 {
   836  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft16zgensym_189e87a53e58dbf2_17, missingFieldsLeft16zgensym_189e87a53e58dbf2_17, msgp.ShowFound(found16zgensym_189e87a53e58dbf2_17[:]), unmarshalMsgFieldOrder16zgensym_189e87a53e58dbf2_17)
   837  		if encodedFieldsLeft16zgensym_189e87a53e58dbf2_17 > 0 {
   838  			encodedFieldsLeft16zgensym_189e87a53e58dbf2_17--
   839  			field, bts, err = nbs.ReadMapKeyZC(bts)
   840  			if err != nil {
   841  				return
   842  			}
   843  			curField16zgensym_189e87a53e58dbf2_17 = msgp.UnsafeString(field)
   844  		} else {
   845  			//missing fields need handling
   846  			if nextMiss16zgensym_189e87a53e58dbf2_17 < 0 {
   847  				// set bts to contain just mnil (0xc0)
   848  				bts = nbs.PushAlwaysNil(bts)
   849  				nextMiss16zgensym_189e87a53e58dbf2_17 = 0
   850  			}
   851  			for nextMiss16zgensym_189e87a53e58dbf2_17 < maxFields16zgensym_189e87a53e58dbf2_17 && (found16zgensym_189e87a53e58dbf2_17[nextMiss16zgensym_189e87a53e58dbf2_17] || unmarshalMsgFieldSkip16zgensym_189e87a53e58dbf2_17[nextMiss16zgensym_189e87a53e58dbf2_17]) {
   852  				nextMiss16zgensym_189e87a53e58dbf2_17++
   853  			}
   854  			if nextMiss16zgensym_189e87a53e58dbf2_17 == maxFields16zgensym_189e87a53e58dbf2_17 {
   855  				// filled all the empty fields!
   856  				break doneWithStruct16zgensym_189e87a53e58dbf2_17
   857  			}
   858  			missingFieldsLeft16zgensym_189e87a53e58dbf2_17--
   859  			curField16zgensym_189e87a53e58dbf2_17 = unmarshalMsgFieldOrder16zgensym_189e87a53e58dbf2_17[nextMiss16zgensym_189e87a53e58dbf2_17]
   860  		}
   861  		//fmt.Printf("switching on curField: '%v'\n", curField16zgensym_189e87a53e58dbf2_17)
   862  		switch curField16zgensym_189e87a53e58dbf2_17 {
   863  		// -- templateUnmarshalMsg ends here --
   864  
   865  		case "Users_zid00_ptr":
   866  			found16zgensym_189e87a53e58dbf2_17[0] = true
   867  			if nbs.AlwaysNil {
   868  				if z.Users != nil {
   869  					z.Users.UnmarshalMsg(msgp.OnlyNilSlice)
   870  				}
   871  			} else {
   872  				// not nbs.AlwaysNil
   873  				if msgp.IsNil(bts) {
   874  					bts = bts[1:]
   875  					if nil != z.Users {
   876  						z.Users.UnmarshalMsg(msgp.OnlyNilSlice)
   877  					}
   878  				} else {
   879  					// not nbs.AlwaysNil and not IsNil(bts): have something to read
   880  
   881  					if z.Users == nil {
   882  						z.Users = new(AtomicUserMap)
   883  					}
   884  					bts, err = z.Users.UnmarshalMsg(bts)
   885  					if err != nil {
   886  						return
   887  					}
   888  					if err != nil {
   889  						return
   890  					}
   891  				}
   892  			}
   893  		case "HostPrivateKeyPath_zid01_str":
   894  			found16zgensym_189e87a53e58dbf2_17[1] = true
   895  			z.HostPrivateKeyPath, bts, err = nbs.ReadStringBytes(bts)
   896  
   897  			if err != nil {
   898  				return
   899  			}
   900  		default:
   901  			bts, err = msgp.Skip(bts)
   902  			if err != nil {
   903  				return
   904  			}
   905  		}
   906  	}
   907  	if nextMiss16zgensym_189e87a53e58dbf2_17 != -1 {
   908  		bts = nbs.PopAlwaysNil()
   909  	}
   910  
   911  	if sawTopNil {
   912  		bts = nbs.PopAlwaysNil()
   913  	}
   914  	o = bts
   915  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
   916  		p.PostLoadHook()
   917  	}
   918  
   919  	return
   920  }
   921  
   922  // fields of HostDbPersist
   923  var unmarshalMsgFieldOrder16zgensym_189e87a53e58dbf2_17 = []string{"Users_zid00_ptr", "HostPrivateKeyPath_zid01_str"}
   924  
   925  var unmarshalMsgFieldSkip16zgensym_189e87a53e58dbf2_17 = []bool{false, false}
   926  
   927  // Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
   928  func (z *HostDbPersist) Msgsize() (s int) {
   929  	s = 1 + 16
   930  	if z.Users == nil {
   931  		s += msgp.NilSize
   932  	} else {
   933  		s += z.Users.Msgsize()
   934  	}
   935  	s += 29 + msgp.StringPrefixSize + len(z.HostPrivateKeyPath)
   936  	return
   937  }
   938  
   939  // DecodeMsg implements msgp.Decodable
   940  // We treat empty fields as if we read a Nil from the wire.
   941  func (z *LoginRecord) DecodeMsg(dc *msgp.Reader) (err error) {
   942  	var sawTopNil bool
   943  	if dc.IsNil() {
   944  		sawTopNil = true
   945  		err = dc.ReadNil()
   946  		if err != nil {
   947  			return
   948  		}
   949  		dc.PushAlwaysNil()
   950  	}
   951  
   952  	var field []byte
   953  	_ = field
   954  	const maxFields18zgensym_189e87a53e58dbf2_19 = 5
   955  
   956  	// -- templateDecodeMsg starts here--
   957  	var totalEncodedFields18zgensym_189e87a53e58dbf2_19 uint32
   958  	totalEncodedFields18zgensym_189e87a53e58dbf2_19, err = dc.ReadMapHeader()
   959  	if err != nil {
   960  		return
   961  	}
   962  	encodedFieldsLeft18zgensym_189e87a53e58dbf2_19 := totalEncodedFields18zgensym_189e87a53e58dbf2_19
   963  	missingFieldsLeft18zgensym_189e87a53e58dbf2_19 := maxFields18zgensym_189e87a53e58dbf2_19 - totalEncodedFields18zgensym_189e87a53e58dbf2_19
   964  
   965  	var nextMiss18zgensym_189e87a53e58dbf2_19 int32 = -1
   966  	var found18zgensym_189e87a53e58dbf2_19 [maxFields18zgensym_189e87a53e58dbf2_19]bool
   967  	var curField18zgensym_189e87a53e58dbf2_19 string
   968  
   969  doneWithStruct18zgensym_189e87a53e58dbf2_19:
   970  	// First fill all the encoded fields, then
   971  	// treat the remaining, missing fields, as Nil.
   972  	for encodedFieldsLeft18zgensym_189e87a53e58dbf2_19 > 0 || missingFieldsLeft18zgensym_189e87a53e58dbf2_19 > 0 {
   973  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft18zgensym_189e87a53e58dbf2_19, missingFieldsLeft18zgensym_189e87a53e58dbf2_19, msgp.ShowFound(found18zgensym_189e87a53e58dbf2_19[:]), decodeMsgFieldOrder18zgensym_189e87a53e58dbf2_19)
   974  		if encodedFieldsLeft18zgensym_189e87a53e58dbf2_19 > 0 {
   975  			encodedFieldsLeft18zgensym_189e87a53e58dbf2_19--
   976  			field, err = dc.ReadMapKeyPtr()
   977  			if err != nil {
   978  				return
   979  			}
   980  			curField18zgensym_189e87a53e58dbf2_19 = msgp.UnsafeString(field)
   981  		} else {
   982  			//missing fields need handling
   983  			if nextMiss18zgensym_189e87a53e58dbf2_19 < 0 {
   984  				// tell the reader to only give us Nils
   985  				// until further notice.
   986  				dc.PushAlwaysNil()
   987  				nextMiss18zgensym_189e87a53e58dbf2_19 = 0
   988  			}
   989  			for nextMiss18zgensym_189e87a53e58dbf2_19 < maxFields18zgensym_189e87a53e58dbf2_19 && (found18zgensym_189e87a53e58dbf2_19[nextMiss18zgensym_189e87a53e58dbf2_19] || decodeMsgFieldSkip18zgensym_189e87a53e58dbf2_19[nextMiss18zgensym_189e87a53e58dbf2_19]) {
   990  				nextMiss18zgensym_189e87a53e58dbf2_19++
   991  			}
   992  			if nextMiss18zgensym_189e87a53e58dbf2_19 == maxFields18zgensym_189e87a53e58dbf2_19 {
   993  				// filled all the empty fields!
   994  				break doneWithStruct18zgensym_189e87a53e58dbf2_19
   995  			}
   996  			missingFieldsLeft18zgensym_189e87a53e58dbf2_19--
   997  			curField18zgensym_189e87a53e58dbf2_19 = decodeMsgFieldOrder18zgensym_189e87a53e58dbf2_19[nextMiss18zgensym_189e87a53e58dbf2_19]
   998  		}
   999  		//fmt.Printf("switching on curField: '%v'\n", curField18zgensym_189e87a53e58dbf2_19)
  1000  		switch curField18zgensym_189e87a53e58dbf2_19 {
  1001  		// -- templateDecodeMsg ends here --
  1002  
  1003  		case "FirstTm__tim":
  1004  			found18zgensym_189e87a53e58dbf2_19[0] = true
  1005  			z.FirstTm, err = dc.ReadTime()
  1006  			if err != nil {
  1007  				return
  1008  			}
  1009  		case "LastTm__tim":
  1010  			found18zgensym_189e87a53e58dbf2_19[1] = true
  1011  			z.LastTm, err = dc.ReadTime()
  1012  			if err != nil {
  1013  				return
  1014  			}
  1015  		case "SeenCount__i64":
  1016  			found18zgensym_189e87a53e58dbf2_19[2] = true
  1017  			z.SeenCount, err = dc.ReadInt64()
  1018  			if err != nil {
  1019  				return
  1020  			}
  1021  		case "AcceptedCount__i64":
  1022  			found18zgensym_189e87a53e58dbf2_19[3] = true
  1023  			z.AcceptedCount, err = dc.ReadInt64()
  1024  			if err != nil {
  1025  				return
  1026  			}
  1027  		case "PubFinger__str":
  1028  			found18zgensym_189e87a53e58dbf2_19[4] = true
  1029  			z.PubFinger, err = dc.ReadString()
  1030  			if err != nil {
  1031  				return
  1032  			}
  1033  		default:
  1034  			err = dc.Skip()
  1035  			if err != nil {
  1036  				return
  1037  			}
  1038  		}
  1039  	}
  1040  	if nextMiss18zgensym_189e87a53e58dbf2_19 != -1 {
  1041  		dc.PopAlwaysNil()
  1042  	}
  1043  
  1044  	if sawTopNil {
  1045  		dc.PopAlwaysNil()
  1046  	}
  1047  
  1048  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
  1049  		p.PostLoadHook()
  1050  	}
  1051  
  1052  	return
  1053  }
  1054  
  1055  // fields of LoginRecord
  1056  var decodeMsgFieldOrder18zgensym_189e87a53e58dbf2_19 = []string{"FirstTm__tim", "LastTm__tim", "SeenCount__i64", "AcceptedCount__i64", "PubFinger__str"}
  1057  
  1058  var decodeMsgFieldSkip18zgensym_189e87a53e58dbf2_19 = []bool{false, false, false, false, false}
  1059  
  1060  // fieldsNotEmpty supports omitempty tags
  1061  func (z *LoginRecord) fieldsNotEmpty(isempty []bool) uint32 {
  1062  	if len(isempty) == 0 {
  1063  		return 5
  1064  	}
  1065  	var fieldsInUse uint32 = 5
  1066  	isempty[0] = (z.FirstTm.IsZero()) // time.Time, omitempty
  1067  	if isempty[0] {
  1068  		fieldsInUse--
  1069  	}
  1070  	isempty[1] = (z.LastTm.IsZero()) // time.Time, omitempty
  1071  	if isempty[1] {
  1072  		fieldsInUse--
  1073  	}
  1074  	isempty[2] = (z.SeenCount == 0) // number, omitempty
  1075  	if isempty[2] {
  1076  		fieldsInUse--
  1077  	}
  1078  	isempty[3] = (z.AcceptedCount == 0) // number, omitempty
  1079  	if isempty[3] {
  1080  		fieldsInUse--
  1081  	}
  1082  	isempty[4] = (len(z.PubFinger) == 0) // string, omitempty
  1083  	if isempty[4] {
  1084  		fieldsInUse--
  1085  	}
  1086  
  1087  	return fieldsInUse
  1088  }
  1089  
  1090  // EncodeMsg implements msgp.Encodable
  1091  func (z *LoginRecord) EncodeMsg(en *msgp.Writer) (err error) {
  1092  	if p, ok := interface{}(z).(msgp.PreSave); ok {
  1093  		p.PreSaveHook()
  1094  	}
  1095  
  1096  	// honor the omitempty tags
  1097  	var empty_zgensym_189e87a53e58dbf2_20 [5]bool
  1098  	fieldsInUse_zgensym_189e87a53e58dbf2_21 := z.fieldsNotEmpty(empty_zgensym_189e87a53e58dbf2_20[:])
  1099  
  1100  	// map header
  1101  	err = en.WriteMapHeader(fieldsInUse_zgensym_189e87a53e58dbf2_21)
  1102  	if err != nil {
  1103  		return err
  1104  	}
  1105  
  1106  	if !empty_zgensym_189e87a53e58dbf2_20[0] {
  1107  		// write "FirstTm__tim"
  1108  		err = en.Append(0xac, 0x46, 0x69, 0x72, 0x73, 0x74, 0x54, 0x6d, 0x5f, 0x5f, 0x74, 0x69, 0x6d)
  1109  		if err != nil {
  1110  			return err
  1111  		}
  1112  		err = en.WriteTime(z.FirstTm)
  1113  		if err != nil {
  1114  			return
  1115  		}
  1116  	}
  1117  
  1118  	if !empty_zgensym_189e87a53e58dbf2_20[1] {
  1119  		// write "LastTm__tim"
  1120  		err = en.Append(0xab, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x6d, 0x5f, 0x5f, 0x74, 0x69, 0x6d)
  1121  		if err != nil {
  1122  			return err
  1123  		}
  1124  		err = en.WriteTime(z.LastTm)
  1125  		if err != nil {
  1126  			return
  1127  		}
  1128  	}
  1129  
  1130  	if !empty_zgensym_189e87a53e58dbf2_20[2] {
  1131  		// write "SeenCount__i64"
  1132  		err = en.Append(0xae, 0x53, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x5f, 0x69, 0x36, 0x34)
  1133  		if err != nil {
  1134  			return err
  1135  		}
  1136  		err = en.WriteInt64(z.SeenCount)
  1137  		if err != nil {
  1138  			return
  1139  		}
  1140  	}
  1141  
  1142  	if !empty_zgensym_189e87a53e58dbf2_20[3] {
  1143  		// write "AcceptedCount__i64"
  1144  		err = en.Append(0xb2, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x5f, 0x69, 0x36, 0x34)
  1145  		if err != nil {
  1146  			return err
  1147  		}
  1148  		err = en.WriteInt64(z.AcceptedCount)
  1149  		if err != nil {
  1150  			return
  1151  		}
  1152  	}
  1153  
  1154  	if !empty_zgensym_189e87a53e58dbf2_20[4] {
  1155  		// write "PubFinger__str"
  1156  		err = en.Append(0xae, 0x50, 0x75, 0x62, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1157  		if err != nil {
  1158  			return err
  1159  		}
  1160  		err = en.WriteString(z.PubFinger)
  1161  		if err != nil {
  1162  			return
  1163  		}
  1164  	}
  1165  
  1166  	return
  1167  }
  1168  
  1169  // MarshalMsg implements msgp.Marshaler
  1170  func (z *LoginRecord) MarshalMsg(b []byte) (o []byte, err error) {
  1171  	if p, ok := interface{}(z).(msgp.PreSave); ok {
  1172  		p.PreSaveHook()
  1173  	}
  1174  
  1175  	o = msgp.Require(b, z.Msgsize())
  1176  
  1177  	// honor the omitempty tags
  1178  	var empty [5]bool
  1179  	fieldsInUse := z.fieldsNotEmpty(empty[:])
  1180  	o = msgp.AppendMapHeader(o, fieldsInUse)
  1181  
  1182  	if !empty[0] {
  1183  		// string "FirstTm__tim"
  1184  		o = append(o, 0xac, 0x46, 0x69, 0x72, 0x73, 0x74, 0x54, 0x6d, 0x5f, 0x5f, 0x74, 0x69, 0x6d)
  1185  		o = msgp.AppendTime(o, z.FirstTm)
  1186  	}
  1187  
  1188  	if !empty[1] {
  1189  		// string "LastTm__tim"
  1190  		o = append(o, 0xab, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x6d, 0x5f, 0x5f, 0x74, 0x69, 0x6d)
  1191  		o = msgp.AppendTime(o, z.LastTm)
  1192  	}
  1193  
  1194  	if !empty[2] {
  1195  		// string "SeenCount__i64"
  1196  		o = append(o, 0xae, 0x53, 0x65, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x5f, 0x69, 0x36, 0x34)
  1197  		o = msgp.AppendInt64(o, z.SeenCount)
  1198  	}
  1199  
  1200  	if !empty[3] {
  1201  		// string "AcceptedCount__i64"
  1202  		o = append(o, 0xb2, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x5f, 0x69, 0x36, 0x34)
  1203  		o = msgp.AppendInt64(o, z.AcceptedCount)
  1204  	}
  1205  
  1206  	if !empty[4] {
  1207  		// string "PubFinger__str"
  1208  		o = append(o, 0xae, 0x50, 0x75, 0x62, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1209  		o = msgp.AppendString(o, z.PubFinger)
  1210  	}
  1211  
  1212  	return
  1213  }
  1214  
  1215  // UnmarshalMsg implements msgp.Unmarshaler
  1216  func (z *LoginRecord) UnmarshalMsg(bts []byte) (o []byte, err error) {
  1217  	return z.UnmarshalMsgWithCfg(bts, nil)
  1218  }
  1219  func (z *LoginRecord) UnmarshalMsgWithCfg(bts []byte, cfg *msgp.RuntimeConfig) (o []byte, err error) {
  1220  	var nbs msgp.NilBitsStack
  1221  	nbs.Init(cfg)
  1222  	var sawTopNil bool
  1223  	if msgp.IsNil(bts) {
  1224  		sawTopNil = true
  1225  		bts = nbs.PushAlwaysNil(bts[1:])
  1226  	}
  1227  
  1228  	var field []byte
  1229  	_ = field
  1230  	const maxFields22zgensym_189e87a53e58dbf2_23 = 5
  1231  
  1232  	// -- templateUnmarshalMsg starts here--
  1233  	var totalEncodedFields22zgensym_189e87a53e58dbf2_23 uint32
  1234  	if !nbs.AlwaysNil {
  1235  		totalEncodedFields22zgensym_189e87a53e58dbf2_23, bts, err = nbs.ReadMapHeaderBytes(bts)
  1236  		if err != nil {
  1237  			return
  1238  		}
  1239  	}
  1240  	encodedFieldsLeft22zgensym_189e87a53e58dbf2_23 := totalEncodedFields22zgensym_189e87a53e58dbf2_23
  1241  	missingFieldsLeft22zgensym_189e87a53e58dbf2_23 := maxFields22zgensym_189e87a53e58dbf2_23 - totalEncodedFields22zgensym_189e87a53e58dbf2_23
  1242  
  1243  	var nextMiss22zgensym_189e87a53e58dbf2_23 int32 = -1
  1244  	var found22zgensym_189e87a53e58dbf2_23 [maxFields22zgensym_189e87a53e58dbf2_23]bool
  1245  	var curField22zgensym_189e87a53e58dbf2_23 string
  1246  
  1247  doneWithStruct22zgensym_189e87a53e58dbf2_23:
  1248  	// First fill all the encoded fields, then
  1249  	// treat the remaining, missing fields, as Nil.
  1250  	for encodedFieldsLeft22zgensym_189e87a53e58dbf2_23 > 0 || missingFieldsLeft22zgensym_189e87a53e58dbf2_23 > 0 {
  1251  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft22zgensym_189e87a53e58dbf2_23, missingFieldsLeft22zgensym_189e87a53e58dbf2_23, msgp.ShowFound(found22zgensym_189e87a53e58dbf2_23[:]), unmarshalMsgFieldOrder22zgensym_189e87a53e58dbf2_23)
  1252  		if encodedFieldsLeft22zgensym_189e87a53e58dbf2_23 > 0 {
  1253  			encodedFieldsLeft22zgensym_189e87a53e58dbf2_23--
  1254  			field, bts, err = nbs.ReadMapKeyZC(bts)
  1255  			if err != nil {
  1256  				return
  1257  			}
  1258  			curField22zgensym_189e87a53e58dbf2_23 = msgp.UnsafeString(field)
  1259  		} else {
  1260  			//missing fields need handling
  1261  			if nextMiss22zgensym_189e87a53e58dbf2_23 < 0 {
  1262  				// set bts to contain just mnil (0xc0)
  1263  				bts = nbs.PushAlwaysNil(bts)
  1264  				nextMiss22zgensym_189e87a53e58dbf2_23 = 0
  1265  			}
  1266  			for nextMiss22zgensym_189e87a53e58dbf2_23 < maxFields22zgensym_189e87a53e58dbf2_23 && (found22zgensym_189e87a53e58dbf2_23[nextMiss22zgensym_189e87a53e58dbf2_23] || unmarshalMsgFieldSkip22zgensym_189e87a53e58dbf2_23[nextMiss22zgensym_189e87a53e58dbf2_23]) {
  1267  				nextMiss22zgensym_189e87a53e58dbf2_23++
  1268  			}
  1269  			if nextMiss22zgensym_189e87a53e58dbf2_23 == maxFields22zgensym_189e87a53e58dbf2_23 {
  1270  				// filled all the empty fields!
  1271  				break doneWithStruct22zgensym_189e87a53e58dbf2_23
  1272  			}
  1273  			missingFieldsLeft22zgensym_189e87a53e58dbf2_23--
  1274  			curField22zgensym_189e87a53e58dbf2_23 = unmarshalMsgFieldOrder22zgensym_189e87a53e58dbf2_23[nextMiss22zgensym_189e87a53e58dbf2_23]
  1275  		}
  1276  		//fmt.Printf("switching on curField: '%v'\n", curField22zgensym_189e87a53e58dbf2_23)
  1277  		switch curField22zgensym_189e87a53e58dbf2_23 {
  1278  		// -- templateUnmarshalMsg ends here --
  1279  
  1280  		case "FirstTm__tim":
  1281  			found22zgensym_189e87a53e58dbf2_23[0] = true
  1282  			z.FirstTm, bts, err = nbs.ReadTimeBytes(bts)
  1283  
  1284  			if err != nil {
  1285  				return
  1286  			}
  1287  		case "LastTm__tim":
  1288  			found22zgensym_189e87a53e58dbf2_23[1] = true
  1289  			z.LastTm, bts, err = nbs.ReadTimeBytes(bts)
  1290  
  1291  			if err != nil {
  1292  				return
  1293  			}
  1294  		case "SeenCount__i64":
  1295  			found22zgensym_189e87a53e58dbf2_23[2] = true
  1296  			z.SeenCount, bts, err = nbs.ReadInt64Bytes(bts)
  1297  
  1298  			if err != nil {
  1299  				return
  1300  			}
  1301  		case "AcceptedCount__i64":
  1302  			found22zgensym_189e87a53e58dbf2_23[3] = true
  1303  			z.AcceptedCount, bts, err = nbs.ReadInt64Bytes(bts)
  1304  
  1305  			if err != nil {
  1306  				return
  1307  			}
  1308  		case "PubFinger__str":
  1309  			found22zgensym_189e87a53e58dbf2_23[4] = true
  1310  			z.PubFinger, bts, err = nbs.ReadStringBytes(bts)
  1311  
  1312  			if err != nil {
  1313  				return
  1314  			}
  1315  		default:
  1316  			bts, err = msgp.Skip(bts)
  1317  			if err != nil {
  1318  				return
  1319  			}
  1320  		}
  1321  	}
  1322  	if nextMiss22zgensym_189e87a53e58dbf2_23 != -1 {
  1323  		bts = nbs.PopAlwaysNil()
  1324  	}
  1325  
  1326  	if sawTopNil {
  1327  		bts = nbs.PopAlwaysNil()
  1328  	}
  1329  	o = bts
  1330  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
  1331  		p.PostLoadHook()
  1332  	}
  1333  
  1334  	return
  1335  }
  1336  
  1337  // fields of LoginRecord
  1338  var unmarshalMsgFieldOrder22zgensym_189e87a53e58dbf2_23 = []string{"FirstTm__tim", "LastTm__tim", "SeenCount__i64", "AcceptedCount__i64", "PubFinger__str"}
  1339  
  1340  var unmarshalMsgFieldSkip22zgensym_189e87a53e58dbf2_23 = []bool{false, false, false, false, false}
  1341  
  1342  // Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
  1343  func (z *LoginRecord) Msgsize() (s int) {
  1344  	s = 1 + 13 + msgp.TimeSize + 12 + msgp.TimeSize + 15 + msgp.Int64Size + 19 + msgp.Int64Size + 15 + msgp.StringPrefixSize + len(z.PubFinger)
  1345  	return
  1346  }
  1347  
  1348  // DecodeMsg implements msgp.Decodable
  1349  // We treat empty fields as if we read a Nil from the wire.
  1350  func (z *User) DecodeMsg(dc *msgp.Reader) (err error) {
  1351  	var sawTopNil bool
  1352  	if dc.IsNil() {
  1353  		sawTopNil = true
  1354  		err = dc.ReadNil()
  1355  		if err != nil {
  1356  			return
  1357  		}
  1358  		dc.PushAlwaysNil()
  1359  	}
  1360  
  1361  	var field []byte
  1362  	_ = field
  1363  	const maxFields27zgensym_189e87a53e58dbf2_28 = 18
  1364  
  1365  	// -- templateDecodeMsg starts here--
  1366  	var totalEncodedFields27zgensym_189e87a53e58dbf2_28 uint32
  1367  	totalEncodedFields27zgensym_189e87a53e58dbf2_28, err = dc.ReadMapHeader()
  1368  	if err != nil {
  1369  		return
  1370  	}
  1371  	encodedFieldsLeft27zgensym_189e87a53e58dbf2_28 := totalEncodedFields27zgensym_189e87a53e58dbf2_28
  1372  	missingFieldsLeft27zgensym_189e87a53e58dbf2_28 := maxFields27zgensym_189e87a53e58dbf2_28 - totalEncodedFields27zgensym_189e87a53e58dbf2_28
  1373  
  1374  	var nextMiss27zgensym_189e87a53e58dbf2_28 int32 = -1
  1375  	var found27zgensym_189e87a53e58dbf2_28 [maxFields27zgensym_189e87a53e58dbf2_28]bool
  1376  	var curField27zgensym_189e87a53e58dbf2_28 string
  1377  
  1378  doneWithStruct27zgensym_189e87a53e58dbf2_28:
  1379  	// First fill all the encoded fields, then
  1380  	// treat the remaining, missing fields, as Nil.
  1381  	for encodedFieldsLeft27zgensym_189e87a53e58dbf2_28 > 0 || missingFieldsLeft27zgensym_189e87a53e58dbf2_28 > 0 {
  1382  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft27zgensym_189e87a53e58dbf2_28, missingFieldsLeft27zgensym_189e87a53e58dbf2_28, msgp.ShowFound(found27zgensym_189e87a53e58dbf2_28[:]), decodeMsgFieldOrder27zgensym_189e87a53e58dbf2_28)
  1383  		if encodedFieldsLeft27zgensym_189e87a53e58dbf2_28 > 0 {
  1384  			encodedFieldsLeft27zgensym_189e87a53e58dbf2_28--
  1385  			field, err = dc.ReadMapKeyPtr()
  1386  			if err != nil {
  1387  				return
  1388  			}
  1389  			curField27zgensym_189e87a53e58dbf2_28 = msgp.UnsafeString(field)
  1390  		} else {
  1391  			//missing fields need handling
  1392  			if nextMiss27zgensym_189e87a53e58dbf2_28 < 0 {
  1393  				// tell the reader to only give us Nils
  1394  				// until further notice.
  1395  				dc.PushAlwaysNil()
  1396  				nextMiss27zgensym_189e87a53e58dbf2_28 = 0
  1397  			}
  1398  			for nextMiss27zgensym_189e87a53e58dbf2_28 < maxFields27zgensym_189e87a53e58dbf2_28 && (found27zgensym_189e87a53e58dbf2_28[nextMiss27zgensym_189e87a53e58dbf2_28] || decodeMsgFieldSkip27zgensym_189e87a53e58dbf2_28[nextMiss27zgensym_189e87a53e58dbf2_28]) {
  1399  				nextMiss27zgensym_189e87a53e58dbf2_28++
  1400  			}
  1401  			if nextMiss27zgensym_189e87a53e58dbf2_28 == maxFields27zgensym_189e87a53e58dbf2_28 {
  1402  				// filled all the empty fields!
  1403  				break doneWithStruct27zgensym_189e87a53e58dbf2_28
  1404  			}
  1405  			missingFieldsLeft27zgensym_189e87a53e58dbf2_28--
  1406  			curField27zgensym_189e87a53e58dbf2_28 = decodeMsgFieldOrder27zgensym_189e87a53e58dbf2_28[nextMiss27zgensym_189e87a53e58dbf2_28]
  1407  		}
  1408  		//fmt.Printf("switching on curField: '%v'\n", curField27zgensym_189e87a53e58dbf2_28)
  1409  		switch curField27zgensym_189e87a53e58dbf2_28 {
  1410  		// -- templateDecodeMsg ends here --
  1411  
  1412  		case "MyEmail__str":
  1413  			found27zgensym_189e87a53e58dbf2_28[0] = true
  1414  			z.MyEmail, err = dc.ReadString()
  1415  			if err != nil {
  1416  				return
  1417  			}
  1418  		case "MyFullname__str":
  1419  			found27zgensym_189e87a53e58dbf2_28[1] = true
  1420  			z.MyFullname, err = dc.ReadString()
  1421  			if err != nil {
  1422  				return
  1423  			}
  1424  		case "MyLogin__str":
  1425  			found27zgensym_189e87a53e58dbf2_28[2] = true
  1426  			z.MyLogin, err = dc.ReadString()
  1427  			if err != nil {
  1428  				return
  1429  			}
  1430  		case "PublicKeyPath__str":
  1431  			found27zgensym_189e87a53e58dbf2_28[3] = true
  1432  			z.PublicKeyPath, err = dc.ReadString()
  1433  			if err != nil {
  1434  				return
  1435  			}
  1436  		case "PrivateKeyPath__str":
  1437  			found27zgensym_189e87a53e58dbf2_28[4] = true
  1438  			z.PrivateKeyPath, err = dc.ReadString()
  1439  			if err != nil {
  1440  				return
  1441  			}
  1442  		case "TOTPpath__str":
  1443  			found27zgensym_189e87a53e58dbf2_28[5] = true
  1444  			z.TOTPpath, err = dc.ReadString()
  1445  			if err != nil {
  1446  				return
  1447  			}
  1448  		case "QrPath__str":
  1449  			found27zgensym_189e87a53e58dbf2_28[6] = true
  1450  			z.QrPath, err = dc.ReadString()
  1451  			if err != nil {
  1452  				return
  1453  			}
  1454  		case "Issuer__str":
  1455  			found27zgensym_189e87a53e58dbf2_28[7] = true
  1456  			z.Issuer, err = dc.ReadString()
  1457  			if err != nil {
  1458  				return
  1459  			}
  1460  		case "SeenPubKey__map":
  1461  			found27zgensym_189e87a53e58dbf2_28[9] = true
  1462  			var zgensym_189e87a53e58dbf2_29 uint32
  1463  			zgensym_189e87a53e58dbf2_29, err = dc.ReadMapHeader()
  1464  			if err != nil {
  1465  				return
  1466  			}
  1467  			if z.SeenPubKey == nil && zgensym_189e87a53e58dbf2_29 > 0 {
  1468  				z.SeenPubKey = make(map[string]LoginRecord, zgensym_189e87a53e58dbf2_29)
  1469  			} else if len(z.SeenPubKey) > 0 {
  1470  				for key, _ := range z.SeenPubKey {
  1471  					delete(z.SeenPubKey, key)
  1472  				}
  1473  			}
  1474  			for zgensym_189e87a53e58dbf2_29 > 0 {
  1475  				zgensym_189e87a53e58dbf2_29--
  1476  				var zgensym_189e87a53e58dbf2_24 string
  1477  				var zgensym_189e87a53e58dbf2_25 LoginRecord
  1478  				zgensym_189e87a53e58dbf2_24, err = dc.ReadString()
  1479  				if err != nil {
  1480  					return
  1481  				}
  1482  				err = zgensym_189e87a53e58dbf2_25.DecodeMsg(dc)
  1483  				if err != nil {
  1484  					return
  1485  				}
  1486  				z.SeenPubKey[zgensym_189e87a53e58dbf2_24] = zgensym_189e87a53e58dbf2_25
  1487  			}
  1488  		case "ScryptedPassword__bin":
  1489  			found27zgensym_189e87a53e58dbf2_28[10] = true
  1490  			z.ScryptedPassword, err = dc.ReadBytes(z.ScryptedPassword)
  1491  			if err != nil {
  1492  				return
  1493  			}
  1494  		case "ClearPw__str":
  1495  			found27zgensym_189e87a53e58dbf2_28[11] = true
  1496  			z.ClearPw, err = dc.ReadString()
  1497  			if err != nil {
  1498  				return
  1499  			}
  1500  		case "TOTPorig__str":
  1501  			found27zgensym_189e87a53e58dbf2_28[12] = true
  1502  			z.TOTPorig, err = dc.ReadString()
  1503  			if err != nil {
  1504  				return
  1505  			}
  1506  		case "FirstLoginTime__tim":
  1507  			found27zgensym_189e87a53e58dbf2_28[13] = true
  1508  			z.FirstLoginTime, err = dc.ReadTime()
  1509  			if err != nil {
  1510  				return
  1511  			}
  1512  		case "LastLoginTime__tim":
  1513  			found27zgensym_189e87a53e58dbf2_28[14] = true
  1514  			z.LastLoginTime, err = dc.ReadTime()
  1515  			if err != nil {
  1516  				return
  1517  			}
  1518  		case "LastLoginAddr__str":
  1519  			found27zgensym_189e87a53e58dbf2_28[15] = true
  1520  			z.LastLoginAddr, err = dc.ReadString()
  1521  			if err != nil {
  1522  				return
  1523  			}
  1524  		case "IPwhitelist__slc":
  1525  			found27zgensym_189e87a53e58dbf2_28[16] = true
  1526  			var zgensym_189e87a53e58dbf2_30 uint32
  1527  			zgensym_189e87a53e58dbf2_30, err = dc.ReadArrayHeader()
  1528  			if err != nil {
  1529  				return
  1530  			}
  1531  			if cap(z.IPwhitelist) >= int(zgensym_189e87a53e58dbf2_30) {
  1532  				z.IPwhitelist = (z.IPwhitelist)[:zgensym_189e87a53e58dbf2_30]
  1533  			} else {
  1534  				z.IPwhitelist = make([]string, zgensym_189e87a53e58dbf2_30)
  1535  			}
  1536  			for zgensym_189e87a53e58dbf2_26 := range z.IPwhitelist {
  1537  				z.IPwhitelist[zgensym_189e87a53e58dbf2_26], err = dc.ReadString()
  1538  				if err != nil {
  1539  					return
  1540  				}
  1541  			}
  1542  		case "DisabledAcct__boo":
  1543  			found27zgensym_189e87a53e58dbf2_28[17] = true
  1544  			z.DisabledAcct, err = dc.ReadBool()
  1545  			if err != nil {
  1546  				return
  1547  			}
  1548  		default:
  1549  			err = dc.Skip()
  1550  			if err != nil {
  1551  				return
  1552  			}
  1553  		}
  1554  	}
  1555  	if nextMiss27zgensym_189e87a53e58dbf2_28 != -1 {
  1556  		dc.PopAlwaysNil()
  1557  	}
  1558  
  1559  	if sawTopNil {
  1560  		dc.PopAlwaysNil()
  1561  	}
  1562  
  1563  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
  1564  		p.PostLoadHook()
  1565  	}
  1566  
  1567  	return
  1568  }
  1569  
  1570  // fields of User
  1571  var decodeMsgFieldOrder27zgensym_189e87a53e58dbf2_28 = []string{"MyEmail__str", "MyFullname__str", "MyLogin__str", "PublicKeyPath__str", "PrivateKeyPath__str", "TOTPpath__str", "QrPath__str", "Issuer__str", "", "SeenPubKey__map", "ScryptedPassword__bin", "ClearPw__str", "TOTPorig__str", "FirstLoginTime__tim", "LastLoginTime__tim", "LastLoginAddr__str", "IPwhitelist__slc", "DisabledAcct__boo"}
  1572  
  1573  var decodeMsgFieldSkip27zgensym_189e87a53e58dbf2_28 = []bool{false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false}
  1574  
  1575  // fieldsNotEmpty supports omitempty tags
  1576  func (z *User) fieldsNotEmpty(isempty []bool) uint32 {
  1577  	if len(isempty) == 0 {
  1578  		return 17
  1579  	}
  1580  	var fieldsInUse uint32 = 17
  1581  	isempty[0] = (len(z.MyEmail) == 0) // string, omitempty
  1582  	if isempty[0] {
  1583  		fieldsInUse--
  1584  	}
  1585  	isempty[1] = (len(z.MyFullname) == 0) // string, omitempty
  1586  	if isempty[1] {
  1587  		fieldsInUse--
  1588  	}
  1589  	isempty[2] = (len(z.MyLogin) == 0) // string, omitempty
  1590  	if isempty[2] {
  1591  		fieldsInUse--
  1592  	}
  1593  	isempty[3] = (len(z.PublicKeyPath) == 0) // string, omitempty
  1594  	if isempty[3] {
  1595  		fieldsInUse--
  1596  	}
  1597  	isempty[4] = (len(z.PrivateKeyPath) == 0) // string, omitempty
  1598  	if isempty[4] {
  1599  		fieldsInUse--
  1600  	}
  1601  	isempty[5] = (len(z.TOTPpath) == 0) // string, omitempty
  1602  	if isempty[5] {
  1603  		fieldsInUse--
  1604  	}
  1605  	isempty[6] = (len(z.QrPath) == 0) // string, omitempty
  1606  	if isempty[6] {
  1607  		fieldsInUse--
  1608  	}
  1609  	isempty[7] = (len(z.Issuer) == 0) // string, omitempty
  1610  	if isempty[7] {
  1611  		fieldsInUse--
  1612  	}
  1613  	isempty[9] = (len(z.SeenPubKey) == 0) // string, omitempty
  1614  	if isempty[9] {
  1615  		fieldsInUse--
  1616  	}
  1617  	isempty[10] = (len(z.ScryptedPassword) == 0) // string, omitempty
  1618  	if isempty[10] {
  1619  		fieldsInUse--
  1620  	}
  1621  	isempty[11] = (len(z.ClearPw) == 0) // string, omitempty
  1622  	if isempty[11] {
  1623  		fieldsInUse--
  1624  	}
  1625  	isempty[12] = (len(z.TOTPorig) == 0) // string, omitempty
  1626  	if isempty[12] {
  1627  		fieldsInUse--
  1628  	}
  1629  	isempty[13] = (z.FirstLoginTime.IsZero()) // time.Time, omitempty
  1630  	if isempty[13] {
  1631  		fieldsInUse--
  1632  	}
  1633  	isempty[14] = (z.LastLoginTime.IsZero()) // time.Time, omitempty
  1634  	if isempty[14] {
  1635  		fieldsInUse--
  1636  	}
  1637  	isempty[15] = (len(z.LastLoginAddr) == 0) // string, omitempty
  1638  	if isempty[15] {
  1639  		fieldsInUse--
  1640  	}
  1641  	isempty[16] = (len(z.IPwhitelist) == 0) // string, omitempty
  1642  	if isempty[16] {
  1643  		fieldsInUse--
  1644  	}
  1645  	isempty[17] = (!z.DisabledAcct) // bool, omitempty
  1646  	if isempty[17] {
  1647  		fieldsInUse--
  1648  	}
  1649  
  1650  	return fieldsInUse
  1651  }
  1652  
  1653  // EncodeMsg implements msgp.Encodable
  1654  func (z *User) EncodeMsg(en *msgp.Writer) (err error) {
  1655  	if p, ok := interface{}(z).(msgp.PreSave); ok {
  1656  		p.PreSaveHook()
  1657  	}
  1658  
  1659  	// honor the omitempty tags
  1660  	var empty_zgensym_189e87a53e58dbf2_31 [18]bool
  1661  	fieldsInUse_zgensym_189e87a53e58dbf2_32 := z.fieldsNotEmpty(empty_zgensym_189e87a53e58dbf2_31[:])
  1662  
  1663  	// map header
  1664  	err = en.WriteMapHeader(fieldsInUse_zgensym_189e87a53e58dbf2_32)
  1665  	if err != nil {
  1666  		return err
  1667  	}
  1668  
  1669  	if !empty_zgensym_189e87a53e58dbf2_31[0] {
  1670  		// write "MyEmail__str"
  1671  		err = en.Append(0xac, 0x4d, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1672  		if err != nil {
  1673  			return err
  1674  		}
  1675  		err = en.WriteString(z.MyEmail)
  1676  		if err != nil {
  1677  			return
  1678  		}
  1679  	}
  1680  
  1681  	if !empty_zgensym_189e87a53e58dbf2_31[1] {
  1682  		// write "MyFullname__str"
  1683  		err = en.Append(0xaf, 0x4d, 0x79, 0x46, 0x75, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1684  		if err != nil {
  1685  			return err
  1686  		}
  1687  		err = en.WriteString(z.MyFullname)
  1688  		if err != nil {
  1689  			return
  1690  		}
  1691  	}
  1692  
  1693  	if !empty_zgensym_189e87a53e58dbf2_31[2] {
  1694  		// write "MyLogin__str"
  1695  		err = en.Append(0xac, 0x4d, 0x79, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1696  		if err != nil {
  1697  			return err
  1698  		}
  1699  		err = en.WriteString(z.MyLogin)
  1700  		if err != nil {
  1701  			return
  1702  		}
  1703  	}
  1704  
  1705  	if !empty_zgensym_189e87a53e58dbf2_31[3] {
  1706  		// write "PublicKeyPath__str"
  1707  		err = en.Append(0xb2, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1708  		if err != nil {
  1709  			return err
  1710  		}
  1711  		err = en.WriteString(z.PublicKeyPath)
  1712  		if err != nil {
  1713  			return
  1714  		}
  1715  	}
  1716  
  1717  	if !empty_zgensym_189e87a53e58dbf2_31[4] {
  1718  		// write "PrivateKeyPath__str"
  1719  		err = en.Append(0xb3, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1720  		if err != nil {
  1721  			return err
  1722  		}
  1723  		err = en.WriteString(z.PrivateKeyPath)
  1724  		if err != nil {
  1725  			return
  1726  		}
  1727  	}
  1728  
  1729  	if !empty_zgensym_189e87a53e58dbf2_31[5] {
  1730  		// write "TOTPpath__str"
  1731  		err = en.Append(0xad, 0x54, 0x4f, 0x54, 0x50, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1732  		if err != nil {
  1733  			return err
  1734  		}
  1735  		err = en.WriteString(z.TOTPpath)
  1736  		if err != nil {
  1737  			return
  1738  		}
  1739  	}
  1740  
  1741  	if !empty_zgensym_189e87a53e58dbf2_31[6] {
  1742  		// write "QrPath__str"
  1743  		err = en.Append(0xab, 0x51, 0x72, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1744  		if err != nil {
  1745  			return err
  1746  		}
  1747  		err = en.WriteString(z.QrPath)
  1748  		if err != nil {
  1749  			return
  1750  		}
  1751  	}
  1752  
  1753  	if !empty_zgensym_189e87a53e58dbf2_31[7] {
  1754  		// write "Issuer__str"
  1755  		err = en.Append(0xab, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1756  		if err != nil {
  1757  			return err
  1758  		}
  1759  		err = en.WriteString(z.Issuer)
  1760  		if err != nil {
  1761  			return
  1762  		}
  1763  	}
  1764  
  1765  	if !empty_zgensym_189e87a53e58dbf2_31[9] {
  1766  		// write "SeenPubKey__map"
  1767  		err = en.Append(0xaf, 0x53, 0x65, 0x65, 0x6e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x5f, 0x5f, 0x6d, 0x61, 0x70)
  1768  		if err != nil {
  1769  			return err
  1770  		}
  1771  		err = en.WriteMapHeader(uint32(len(z.SeenPubKey)))
  1772  		if err != nil {
  1773  			return
  1774  		}
  1775  		for zgensym_189e87a53e58dbf2_24, zgensym_189e87a53e58dbf2_25 := range z.SeenPubKey {
  1776  			err = en.WriteString(zgensym_189e87a53e58dbf2_24)
  1777  			if err != nil {
  1778  				return
  1779  			}
  1780  			err = zgensym_189e87a53e58dbf2_25.EncodeMsg(en)
  1781  			if err != nil {
  1782  				return
  1783  			}
  1784  		}
  1785  	}
  1786  
  1787  	if !empty_zgensym_189e87a53e58dbf2_31[10] {
  1788  		// write "ScryptedPassword__bin"
  1789  		err = en.Append(0xb5, 0x53, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x5f, 0x62, 0x69, 0x6e)
  1790  		if err != nil {
  1791  			return err
  1792  		}
  1793  		err = en.WriteBytes(z.ScryptedPassword)
  1794  		if err != nil {
  1795  			return
  1796  		}
  1797  	}
  1798  
  1799  	if !empty_zgensym_189e87a53e58dbf2_31[11] {
  1800  		// write "ClearPw__str"
  1801  		err = en.Append(0xac, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x77, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1802  		if err != nil {
  1803  			return err
  1804  		}
  1805  		err = en.WriteString(z.ClearPw)
  1806  		if err != nil {
  1807  			return
  1808  		}
  1809  	}
  1810  
  1811  	if !empty_zgensym_189e87a53e58dbf2_31[12] {
  1812  		// write "TOTPorig__str"
  1813  		err = en.Append(0xad, 0x54, 0x4f, 0x54, 0x50, 0x6f, 0x72, 0x69, 0x67, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1814  		if err != nil {
  1815  			return err
  1816  		}
  1817  		err = en.WriteString(z.TOTPorig)
  1818  		if err != nil {
  1819  			return
  1820  		}
  1821  	}
  1822  
  1823  	if !empty_zgensym_189e87a53e58dbf2_31[13] {
  1824  		// write "FirstLoginTime__tim"
  1825  		err = en.Append(0xb3, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x5f, 0x5f, 0x74, 0x69, 0x6d)
  1826  		if err != nil {
  1827  			return err
  1828  		}
  1829  		err = en.WriteTime(z.FirstLoginTime)
  1830  		if err != nil {
  1831  			return
  1832  		}
  1833  	}
  1834  
  1835  	if !empty_zgensym_189e87a53e58dbf2_31[14] {
  1836  		// write "LastLoginTime__tim"
  1837  		err = en.Append(0xb2, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x5f, 0x5f, 0x74, 0x69, 0x6d)
  1838  		if err != nil {
  1839  			return err
  1840  		}
  1841  		err = en.WriteTime(z.LastLoginTime)
  1842  		if err != nil {
  1843  			return
  1844  		}
  1845  	}
  1846  
  1847  	if !empty_zgensym_189e87a53e58dbf2_31[15] {
  1848  		// write "LastLoginAddr__str"
  1849  		err = en.Append(0xb2, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1850  		if err != nil {
  1851  			return err
  1852  		}
  1853  		err = en.WriteString(z.LastLoginAddr)
  1854  		if err != nil {
  1855  			return
  1856  		}
  1857  	}
  1858  
  1859  	if !empty_zgensym_189e87a53e58dbf2_31[16] {
  1860  		// write "IPwhitelist__slc"
  1861  		err = en.Append(0xb0, 0x49, 0x50, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x5f, 0x73, 0x6c, 0x63)
  1862  		if err != nil {
  1863  			return err
  1864  		}
  1865  		err = en.WriteArrayHeader(uint32(len(z.IPwhitelist)))
  1866  		if err != nil {
  1867  			return
  1868  		}
  1869  		for zgensym_189e87a53e58dbf2_26 := range z.IPwhitelist {
  1870  			err = en.WriteString(z.IPwhitelist[zgensym_189e87a53e58dbf2_26])
  1871  			if err != nil {
  1872  				return
  1873  			}
  1874  		}
  1875  	}
  1876  
  1877  	if !empty_zgensym_189e87a53e58dbf2_31[17] {
  1878  		// write "DisabledAcct__boo"
  1879  		err = en.Append(0xb1, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x74, 0x5f, 0x5f, 0x62, 0x6f, 0x6f)
  1880  		if err != nil {
  1881  			return err
  1882  		}
  1883  		err = en.WriteBool(z.DisabledAcct)
  1884  		if err != nil {
  1885  			return
  1886  		}
  1887  	}
  1888  
  1889  	return
  1890  }
  1891  
  1892  // MarshalMsg implements msgp.Marshaler
  1893  func (z *User) MarshalMsg(b []byte) (o []byte, err error) {
  1894  	if p, ok := interface{}(z).(msgp.PreSave); ok {
  1895  		p.PreSaveHook()
  1896  	}
  1897  
  1898  	o = msgp.Require(b, z.Msgsize())
  1899  
  1900  	// honor the omitempty tags
  1901  	var empty [18]bool
  1902  	fieldsInUse := z.fieldsNotEmpty(empty[:])
  1903  	o = msgp.AppendMapHeader(o, fieldsInUse)
  1904  
  1905  	if !empty[0] {
  1906  		// string "MyEmail__str"
  1907  		o = append(o, 0xac, 0x4d, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1908  		o = msgp.AppendString(o, z.MyEmail)
  1909  	}
  1910  
  1911  	if !empty[1] {
  1912  		// string "MyFullname__str"
  1913  		o = append(o, 0xaf, 0x4d, 0x79, 0x46, 0x75, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1914  		o = msgp.AppendString(o, z.MyFullname)
  1915  	}
  1916  
  1917  	if !empty[2] {
  1918  		// string "MyLogin__str"
  1919  		o = append(o, 0xac, 0x4d, 0x79, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1920  		o = msgp.AppendString(o, z.MyLogin)
  1921  	}
  1922  
  1923  	if !empty[3] {
  1924  		// string "PublicKeyPath__str"
  1925  		o = append(o, 0xb2, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1926  		o = msgp.AppendString(o, z.PublicKeyPath)
  1927  	}
  1928  
  1929  	if !empty[4] {
  1930  		// string "PrivateKeyPath__str"
  1931  		o = append(o, 0xb3, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1932  		o = msgp.AppendString(o, z.PrivateKeyPath)
  1933  	}
  1934  
  1935  	if !empty[5] {
  1936  		// string "TOTPpath__str"
  1937  		o = append(o, 0xad, 0x54, 0x4f, 0x54, 0x50, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1938  		o = msgp.AppendString(o, z.TOTPpath)
  1939  	}
  1940  
  1941  	if !empty[6] {
  1942  		// string "QrPath__str"
  1943  		o = append(o, 0xab, 0x51, 0x72, 0x50, 0x61, 0x74, 0x68, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1944  		o = msgp.AppendString(o, z.QrPath)
  1945  	}
  1946  
  1947  	if !empty[7] {
  1948  		// string "Issuer__str"
  1949  		o = append(o, 0xab, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1950  		o = msgp.AppendString(o, z.Issuer)
  1951  	}
  1952  
  1953  	if !empty[9] {
  1954  		// string "SeenPubKey__map"
  1955  		o = append(o, 0xaf, 0x53, 0x65, 0x65, 0x6e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x5f, 0x5f, 0x6d, 0x61, 0x70)
  1956  		o = msgp.AppendMapHeader(o, uint32(len(z.SeenPubKey)))
  1957  		for zgensym_189e87a53e58dbf2_24, zgensym_189e87a53e58dbf2_25 := range z.SeenPubKey {
  1958  			o = msgp.AppendString(o, zgensym_189e87a53e58dbf2_24)
  1959  			o, err = zgensym_189e87a53e58dbf2_25.MarshalMsg(o)
  1960  			if err != nil {
  1961  				return
  1962  			}
  1963  		}
  1964  	}
  1965  
  1966  	if !empty[10] {
  1967  		// string "ScryptedPassword__bin"
  1968  		o = append(o, 0xb5, 0x53, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x5f, 0x62, 0x69, 0x6e)
  1969  		o = msgp.AppendBytes(o, z.ScryptedPassword)
  1970  	}
  1971  
  1972  	if !empty[11] {
  1973  		// string "ClearPw__str"
  1974  		o = append(o, 0xac, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x77, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1975  		o = msgp.AppendString(o, z.ClearPw)
  1976  	}
  1977  
  1978  	if !empty[12] {
  1979  		// string "TOTPorig__str"
  1980  		o = append(o, 0xad, 0x54, 0x4f, 0x54, 0x50, 0x6f, 0x72, 0x69, 0x67, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1981  		o = msgp.AppendString(o, z.TOTPorig)
  1982  	}
  1983  
  1984  	if !empty[13] {
  1985  		// string "FirstLoginTime__tim"
  1986  		o = append(o, 0xb3, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x5f, 0x5f, 0x74, 0x69, 0x6d)
  1987  		o = msgp.AppendTime(o, z.FirstLoginTime)
  1988  	}
  1989  
  1990  	if !empty[14] {
  1991  		// string "LastLoginTime__tim"
  1992  		o = append(o, 0xb2, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x5f, 0x5f, 0x74, 0x69, 0x6d)
  1993  		o = msgp.AppendTime(o, z.LastLoginTime)
  1994  	}
  1995  
  1996  	if !empty[15] {
  1997  		// string "LastLoginAddr__str"
  1998  		o = append(o, 0xb2, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x5f, 0x5f, 0x73, 0x74, 0x72)
  1999  		o = msgp.AppendString(o, z.LastLoginAddr)
  2000  	}
  2001  
  2002  	if !empty[16] {
  2003  		// string "IPwhitelist__slc"
  2004  		o = append(o, 0xb0, 0x49, 0x50, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x5f, 0x73, 0x6c, 0x63)
  2005  		o = msgp.AppendArrayHeader(o, uint32(len(z.IPwhitelist)))
  2006  		for zgensym_189e87a53e58dbf2_26 := range z.IPwhitelist {
  2007  			o = msgp.AppendString(o, z.IPwhitelist[zgensym_189e87a53e58dbf2_26])
  2008  		}
  2009  	}
  2010  
  2011  	if !empty[17] {
  2012  		// string "DisabledAcct__boo"
  2013  		o = append(o, 0xb1, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x74, 0x5f, 0x5f, 0x62, 0x6f, 0x6f)
  2014  		o = msgp.AppendBool(o, z.DisabledAcct)
  2015  	}
  2016  
  2017  	return
  2018  }
  2019  
  2020  // UnmarshalMsg implements msgp.Unmarshaler
  2021  func (z *User) UnmarshalMsg(bts []byte) (o []byte, err error) {
  2022  	return z.UnmarshalMsgWithCfg(bts, nil)
  2023  }
  2024  func (z *User) UnmarshalMsgWithCfg(bts []byte, cfg *msgp.RuntimeConfig) (o []byte, err error) {
  2025  	var nbs msgp.NilBitsStack
  2026  	nbs.Init(cfg)
  2027  	var sawTopNil bool
  2028  	if msgp.IsNil(bts) {
  2029  		sawTopNil = true
  2030  		bts = nbs.PushAlwaysNil(bts[1:])
  2031  	}
  2032  
  2033  	var field []byte
  2034  	_ = field
  2035  	const maxFields33zgensym_189e87a53e58dbf2_34 = 18
  2036  
  2037  	// -- templateUnmarshalMsg starts here--
  2038  	var totalEncodedFields33zgensym_189e87a53e58dbf2_34 uint32
  2039  	if !nbs.AlwaysNil {
  2040  		totalEncodedFields33zgensym_189e87a53e58dbf2_34, bts, err = nbs.ReadMapHeaderBytes(bts)
  2041  		if err != nil {
  2042  			return
  2043  		}
  2044  	}
  2045  	encodedFieldsLeft33zgensym_189e87a53e58dbf2_34 := totalEncodedFields33zgensym_189e87a53e58dbf2_34
  2046  	missingFieldsLeft33zgensym_189e87a53e58dbf2_34 := maxFields33zgensym_189e87a53e58dbf2_34 - totalEncodedFields33zgensym_189e87a53e58dbf2_34
  2047  
  2048  	var nextMiss33zgensym_189e87a53e58dbf2_34 int32 = -1
  2049  	var found33zgensym_189e87a53e58dbf2_34 [maxFields33zgensym_189e87a53e58dbf2_34]bool
  2050  	var curField33zgensym_189e87a53e58dbf2_34 string
  2051  
  2052  doneWithStruct33zgensym_189e87a53e58dbf2_34:
  2053  	// First fill all the encoded fields, then
  2054  	// treat the remaining, missing fields, as Nil.
  2055  	for encodedFieldsLeft33zgensym_189e87a53e58dbf2_34 > 0 || missingFieldsLeft33zgensym_189e87a53e58dbf2_34 > 0 {
  2056  		//fmt.Printf("encodedFieldsLeft: %v, missingFieldsLeft: %v, found: '%v', fields: '%#v'\n", encodedFieldsLeft33zgensym_189e87a53e58dbf2_34, missingFieldsLeft33zgensym_189e87a53e58dbf2_34, msgp.ShowFound(found33zgensym_189e87a53e58dbf2_34[:]), unmarshalMsgFieldOrder33zgensym_189e87a53e58dbf2_34)
  2057  		if encodedFieldsLeft33zgensym_189e87a53e58dbf2_34 > 0 {
  2058  			encodedFieldsLeft33zgensym_189e87a53e58dbf2_34--
  2059  			field, bts, err = nbs.ReadMapKeyZC(bts)
  2060  			if err != nil {
  2061  				return
  2062  			}
  2063  			curField33zgensym_189e87a53e58dbf2_34 = msgp.UnsafeString(field)
  2064  		} else {
  2065  			//missing fields need handling
  2066  			if nextMiss33zgensym_189e87a53e58dbf2_34 < 0 {
  2067  				// set bts to contain just mnil (0xc0)
  2068  				bts = nbs.PushAlwaysNil(bts)
  2069  				nextMiss33zgensym_189e87a53e58dbf2_34 = 0
  2070  			}
  2071  			for nextMiss33zgensym_189e87a53e58dbf2_34 < maxFields33zgensym_189e87a53e58dbf2_34 && (found33zgensym_189e87a53e58dbf2_34[nextMiss33zgensym_189e87a53e58dbf2_34] || unmarshalMsgFieldSkip33zgensym_189e87a53e58dbf2_34[nextMiss33zgensym_189e87a53e58dbf2_34]) {
  2072  				nextMiss33zgensym_189e87a53e58dbf2_34++
  2073  			}
  2074  			if nextMiss33zgensym_189e87a53e58dbf2_34 == maxFields33zgensym_189e87a53e58dbf2_34 {
  2075  				// filled all the empty fields!
  2076  				break doneWithStruct33zgensym_189e87a53e58dbf2_34
  2077  			}
  2078  			missingFieldsLeft33zgensym_189e87a53e58dbf2_34--
  2079  			curField33zgensym_189e87a53e58dbf2_34 = unmarshalMsgFieldOrder33zgensym_189e87a53e58dbf2_34[nextMiss33zgensym_189e87a53e58dbf2_34]
  2080  		}
  2081  		//fmt.Printf("switching on curField: '%v'\n", curField33zgensym_189e87a53e58dbf2_34)
  2082  		switch curField33zgensym_189e87a53e58dbf2_34 {
  2083  		// -- templateUnmarshalMsg ends here --
  2084  
  2085  		case "MyEmail__str":
  2086  			found33zgensym_189e87a53e58dbf2_34[0] = true
  2087  			z.MyEmail, bts, err = nbs.ReadStringBytes(bts)
  2088  
  2089  			if err != nil {
  2090  				return
  2091  			}
  2092  		case "MyFullname__str":
  2093  			found33zgensym_189e87a53e58dbf2_34[1] = true
  2094  			z.MyFullname, bts, err = nbs.ReadStringBytes(bts)
  2095  
  2096  			if err != nil {
  2097  				return
  2098  			}
  2099  		case "MyLogin__str":
  2100  			found33zgensym_189e87a53e58dbf2_34[2] = true
  2101  			z.MyLogin, bts, err = nbs.ReadStringBytes(bts)
  2102  
  2103  			if err != nil {
  2104  				return
  2105  			}
  2106  		case "PublicKeyPath__str":
  2107  			found33zgensym_189e87a53e58dbf2_34[3] = true
  2108  			z.PublicKeyPath, bts, err = nbs.ReadStringBytes(bts)
  2109  
  2110  			if err != nil {
  2111  				return
  2112  			}
  2113  		case "PrivateKeyPath__str":
  2114  			found33zgensym_189e87a53e58dbf2_34[4] = true
  2115  			z.PrivateKeyPath, bts, err = nbs.ReadStringBytes(bts)
  2116  
  2117  			if err != nil {
  2118  				return
  2119  			}
  2120  		case "TOTPpath__str":
  2121  			found33zgensym_189e87a53e58dbf2_34[5] = true
  2122  			z.TOTPpath, bts, err = nbs.ReadStringBytes(bts)
  2123  
  2124  			if err != nil {
  2125  				return
  2126  			}
  2127  		case "QrPath__str":
  2128  			found33zgensym_189e87a53e58dbf2_34[6] = true
  2129  			z.QrPath, bts, err = nbs.ReadStringBytes(bts)
  2130  
  2131  			if err != nil {
  2132  				return
  2133  			}
  2134  		case "Issuer__str":
  2135  			found33zgensym_189e87a53e58dbf2_34[7] = true
  2136  			z.Issuer, bts, err = nbs.ReadStringBytes(bts)
  2137  
  2138  			if err != nil {
  2139  				return
  2140  			}
  2141  		case "SeenPubKey__map":
  2142  			found33zgensym_189e87a53e58dbf2_34[9] = true
  2143  			if nbs.AlwaysNil {
  2144  				if len(z.SeenPubKey) > 0 {
  2145  					for key, _ := range z.SeenPubKey {
  2146  						delete(z.SeenPubKey, key)
  2147  					}
  2148  				}
  2149  
  2150  			} else {
  2151  
  2152  				var zgensym_189e87a53e58dbf2_35 uint32
  2153  				zgensym_189e87a53e58dbf2_35, bts, err = nbs.ReadMapHeaderBytes(bts)
  2154  				if err != nil {
  2155  					return
  2156  				}
  2157  				if z.SeenPubKey == nil && zgensym_189e87a53e58dbf2_35 > 0 {
  2158  					z.SeenPubKey = make(map[string]LoginRecord, zgensym_189e87a53e58dbf2_35)
  2159  				} else if len(z.SeenPubKey) > 0 {
  2160  					for key, _ := range z.SeenPubKey {
  2161  						delete(z.SeenPubKey, key)
  2162  					}
  2163  				}
  2164  				for zgensym_189e87a53e58dbf2_35 > 0 {
  2165  					var zgensym_189e87a53e58dbf2_24 string
  2166  					var zgensym_189e87a53e58dbf2_25 LoginRecord
  2167  					zgensym_189e87a53e58dbf2_35--
  2168  					zgensym_189e87a53e58dbf2_24, bts, err = nbs.ReadStringBytes(bts)
  2169  					if err != nil {
  2170  						return
  2171  					}
  2172  					bts, err = zgensym_189e87a53e58dbf2_25.UnmarshalMsg(bts)
  2173  					if err != nil {
  2174  						return
  2175  					}
  2176  					if err != nil {
  2177  						return
  2178  					}
  2179  					z.SeenPubKey[zgensym_189e87a53e58dbf2_24] = zgensym_189e87a53e58dbf2_25
  2180  				}
  2181  			}
  2182  		case "ScryptedPassword__bin":
  2183  			found33zgensym_189e87a53e58dbf2_34[10] = true
  2184  			if nbs.AlwaysNil || msgp.IsNil(bts) {
  2185  				if !nbs.AlwaysNil {
  2186  					bts = bts[1:]
  2187  				}
  2188  				z.ScryptedPassword = z.ScryptedPassword[:0]
  2189  			} else {
  2190  				z.ScryptedPassword, bts, err = nbs.ReadBytesBytes(bts, z.ScryptedPassword)
  2191  
  2192  				if err != nil {
  2193  					return
  2194  				}
  2195  			}
  2196  			if err != nil {
  2197  				return
  2198  			}
  2199  		case "ClearPw__str":
  2200  			found33zgensym_189e87a53e58dbf2_34[11] = true
  2201  			z.ClearPw, bts, err = nbs.ReadStringBytes(bts)
  2202  
  2203  			if err != nil {
  2204  				return
  2205  			}
  2206  		case "TOTPorig__str":
  2207  			found33zgensym_189e87a53e58dbf2_34[12] = true
  2208  			z.TOTPorig, bts, err = nbs.ReadStringBytes(bts)
  2209  
  2210  			if err != nil {
  2211  				return
  2212  			}
  2213  		case "FirstLoginTime__tim":
  2214  			found33zgensym_189e87a53e58dbf2_34[13] = true
  2215  			z.FirstLoginTime, bts, err = nbs.ReadTimeBytes(bts)
  2216  
  2217  			if err != nil {
  2218  				return
  2219  			}
  2220  		case "LastLoginTime__tim":
  2221  			found33zgensym_189e87a53e58dbf2_34[14] = true
  2222  			z.LastLoginTime, bts, err = nbs.ReadTimeBytes(bts)
  2223  
  2224  			if err != nil {
  2225  				return
  2226  			}
  2227  		case "LastLoginAddr__str":
  2228  			found33zgensym_189e87a53e58dbf2_34[15] = true
  2229  			z.LastLoginAddr, bts, err = nbs.ReadStringBytes(bts)
  2230  
  2231  			if err != nil {
  2232  				return
  2233  			}
  2234  		case "IPwhitelist__slc":
  2235  			found33zgensym_189e87a53e58dbf2_34[16] = true
  2236  			if nbs.AlwaysNil {
  2237  				(z.IPwhitelist) = (z.IPwhitelist)[:0]
  2238  			} else {
  2239  
  2240  				var zgensym_189e87a53e58dbf2_36 uint32
  2241  				zgensym_189e87a53e58dbf2_36, bts, err = nbs.ReadArrayHeaderBytes(bts)
  2242  				if err != nil {
  2243  					return
  2244  				}
  2245  				if cap(z.IPwhitelist) >= int(zgensym_189e87a53e58dbf2_36) {
  2246  					z.IPwhitelist = (z.IPwhitelist)[:zgensym_189e87a53e58dbf2_36]
  2247  				} else {
  2248  					z.IPwhitelist = make([]string, zgensym_189e87a53e58dbf2_36)
  2249  				}
  2250  				for zgensym_189e87a53e58dbf2_26 := range z.IPwhitelist {
  2251  					z.IPwhitelist[zgensym_189e87a53e58dbf2_26], bts, err = nbs.ReadStringBytes(bts)
  2252  
  2253  					if err != nil {
  2254  						return
  2255  					}
  2256  				}
  2257  			}
  2258  		case "DisabledAcct__boo":
  2259  			found33zgensym_189e87a53e58dbf2_34[17] = true
  2260  			z.DisabledAcct, bts, err = nbs.ReadBoolBytes(bts)
  2261  
  2262  			if err != nil {
  2263  				return
  2264  			}
  2265  		default:
  2266  			bts, err = msgp.Skip(bts)
  2267  			if err != nil {
  2268  				return
  2269  			}
  2270  		}
  2271  	}
  2272  	if nextMiss33zgensym_189e87a53e58dbf2_34 != -1 {
  2273  		bts = nbs.PopAlwaysNil()
  2274  	}
  2275  
  2276  	if sawTopNil {
  2277  		bts = nbs.PopAlwaysNil()
  2278  	}
  2279  	o = bts
  2280  	if p, ok := interface{}(z).(msgp.PostLoad); ok {
  2281  		p.PostLoadHook()
  2282  	}
  2283  
  2284  	return
  2285  }
  2286  
  2287  // fields of User
  2288  var unmarshalMsgFieldOrder33zgensym_189e87a53e58dbf2_34 = []string{"MyEmail__str", "MyFullname__str", "MyLogin__str", "PublicKeyPath__str", "PrivateKeyPath__str", "TOTPpath__str", "QrPath__str", "Issuer__str", "", "SeenPubKey__map", "ScryptedPassword__bin", "ClearPw__str", "TOTPorig__str", "FirstLoginTime__tim", "LastLoginTime__tim", "LastLoginAddr__str", "IPwhitelist__slc", "DisabledAcct__boo"}
  2289  
  2290  var unmarshalMsgFieldSkip33zgensym_189e87a53e58dbf2_34 = []bool{false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false}
  2291  
  2292  // Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
  2293  func (z *User) Msgsize() (s int) {
  2294  	s = 3 + 13 + msgp.StringPrefixSize + len(z.MyEmail) + 16 + msgp.StringPrefixSize + len(z.MyFullname) + 13 + msgp.StringPrefixSize + len(z.MyLogin) + 19 + msgp.StringPrefixSize + len(z.PublicKeyPath) + 20 + msgp.StringPrefixSize + len(z.PrivateKeyPath) + 14 + msgp.StringPrefixSize + len(z.TOTPpath) + 12 + msgp.StringPrefixSize + len(z.QrPath) + 12 + msgp.StringPrefixSize + len(z.Issuer) + 16 + msgp.MapHeaderSize
  2295  	if z.SeenPubKey != nil {
  2296  		for zgensym_189e87a53e58dbf2_24, zgensym_189e87a53e58dbf2_25 := range z.SeenPubKey {
  2297  			_ = zgensym_189e87a53e58dbf2_25
  2298  			_ = zgensym_189e87a53e58dbf2_24
  2299  			s += msgp.StringPrefixSize + len(zgensym_189e87a53e58dbf2_24) + zgensym_189e87a53e58dbf2_25.Msgsize()
  2300  		}
  2301  	}
  2302  	s += 22 + msgp.BytesPrefixSize + len(z.ScryptedPassword) + 13 + msgp.StringPrefixSize + len(z.ClearPw) + 14 + msgp.StringPrefixSize + len(z.TOTPorig) + 20 + msgp.TimeSize + 19 + msgp.TimeSize + 19 + msgp.StringPrefixSize + len(z.LastLoginAddr) + 17 + msgp.ArrayHeaderSize
  2303  	for zgensym_189e87a53e58dbf2_26 := range z.IPwhitelist {
  2304  		s += msgp.StringPrefixSize + len(z.IPwhitelist[zgensym_189e87a53e58dbf2_26])
  2305  	}
  2306  	s += 18 + msgp.BoolSize
  2307  	return
  2308  }