1// Auto-generated to Go types using avdl-compiler v1.4.8 (https://github.com/keybase/node-avdl-compiler)
2//   Input file: ../client/protocol/avdl/keybase1/teams.avdl
3
4package keybase1
5
6import (
7	"errors"
8	"fmt"
9)
10
11type TeamRole int
12
13const (
14	TeamRole_NONE          TeamRole = 0
15	TeamRole_READER        TeamRole = 1
16	TeamRole_WRITER        TeamRole = 2
17	TeamRole_ADMIN         TeamRole = 3
18	TeamRole_OWNER         TeamRole = 4
19	TeamRole_BOT           TeamRole = 5
20	TeamRole_RESTRICTEDBOT TeamRole = 6
21)
22
23func (o TeamRole) DeepCopy() TeamRole { return o }
24
25var TeamRoleMap = map[string]TeamRole{
26	"NONE":          0,
27	"READER":        1,
28	"WRITER":        2,
29	"ADMIN":         3,
30	"OWNER":         4,
31	"BOT":           5,
32	"RESTRICTEDBOT": 6,
33}
34
35var TeamRoleRevMap = map[TeamRole]string{
36	0: "NONE",
37	1: "READER",
38	2: "WRITER",
39	3: "ADMIN",
40	4: "OWNER",
41	5: "BOT",
42	6: "RESTRICTEDBOT",
43}
44
45func (e TeamRole) String() string {
46	if v, ok := TeamRoleRevMap[e]; ok {
47		return v
48	}
49	return fmt.Sprintf("%v", int(e))
50}
51
52type TeamApplication int
53
54const (
55	TeamApplication_KBFS                TeamApplication = 1
56	TeamApplication_CHAT                TeamApplication = 2
57	TeamApplication_SALTPACK            TeamApplication = 3
58	TeamApplication_GIT_METADATA        TeamApplication = 4
59	TeamApplication_SEITAN_INVITE_TOKEN TeamApplication = 5
60	TeamApplication_STELLAR_RELAY       TeamApplication = 6
61	TeamApplication_KVSTORE             TeamApplication = 7
62)
63
64func (o TeamApplication) DeepCopy() TeamApplication { return o }
65
66var TeamApplicationMap = map[string]TeamApplication{
67	"KBFS":                1,
68	"CHAT":                2,
69	"SALTPACK":            3,
70	"GIT_METADATA":        4,
71	"SEITAN_INVITE_TOKEN": 5,
72	"STELLAR_RELAY":       6,
73	"KVSTORE":             7,
74}
75
76var TeamApplicationRevMap = map[TeamApplication]string{
77	1: "KBFS",
78	2: "CHAT",
79	3: "SALTPACK",
80	4: "GIT_METADATA",
81	5: "SEITAN_INVITE_TOKEN",
82	6: "STELLAR_RELAY",
83	7: "KVSTORE",
84}
85
86func (e TeamApplication) String() string {
87	if v, ok := TeamApplicationRevMap[e]; ok {
88		return v
89	}
90	return fmt.Sprintf("%v", int(e))
91}
92
93type TeamStatus int
94
95const (
96	TeamStatus_NONE      TeamStatus = 0
97	TeamStatus_LIVE      TeamStatus = 1
98	TeamStatus_DELETED   TeamStatus = 2
99	TeamStatus_ABANDONED TeamStatus = 3
100)
101
102func (o TeamStatus) DeepCopy() TeamStatus { return o }
103
104var TeamStatusMap = map[string]TeamStatus{
105	"NONE":      0,
106	"LIVE":      1,
107	"DELETED":   2,
108	"ABANDONED": 3,
109}
110
111var TeamStatusRevMap = map[TeamStatus]string{
112	0: "NONE",
113	1: "LIVE",
114	2: "DELETED",
115	3: "ABANDONED",
116}
117
118func (e TeamStatus) String() string {
119	if v, ok := TeamStatusRevMap[e]; ok {
120		return v
121	}
122	return fmt.Sprintf("%v", int(e))
123}
124
125type AuditMode int
126
127const (
128	AuditMode_STANDARD           AuditMode = 0
129	AuditMode_JUST_CREATED       AuditMode = 1
130	AuditMode_SKIP               AuditMode = 2
131	AuditMode_STANDARD_NO_HIDDEN AuditMode = 3
132)
133
134func (o AuditMode) DeepCopy() AuditMode { return o }
135
136var AuditModeMap = map[string]AuditMode{
137	"STANDARD":           0,
138	"JUST_CREATED":       1,
139	"SKIP":               2,
140	"STANDARD_NO_HIDDEN": 3,
141}
142
143var AuditModeRevMap = map[AuditMode]string{
144	0: "STANDARD",
145	1: "JUST_CREATED",
146	2: "SKIP",
147	3: "STANDARD_NO_HIDDEN",
148}
149
150func (e AuditMode) String() string {
151	if v, ok := AuditModeRevMap[e]; ok {
152		return v
153	}
154	return fmt.Sprintf("%v", int(e))
155}
156
157type PerTeamKeyGeneration int
158
159func (o PerTeamKeyGeneration) DeepCopy() PerTeamKeyGeneration {
160	return o
161}
162
163type PTKType int
164
165const (
166	PTKType_READER PTKType = 0
167)
168
169func (o PTKType) DeepCopy() PTKType { return o }
170
171var PTKTypeMap = map[string]PTKType{
172	"READER": 0,
173}
174
175var PTKTypeRevMap = map[PTKType]string{
176	0: "READER",
177}
178
179func (e PTKType) String() string {
180	if v, ok := PTKTypeRevMap[e]; ok {
181		return v
182	}
183	return fmt.Sprintf("%v", int(e))
184}
185
186type PerTeamSeedCheckVersion int
187
188const (
189	PerTeamSeedCheckVersion_V1 PerTeamSeedCheckVersion = 1
190)
191
192func (o PerTeamSeedCheckVersion) DeepCopy() PerTeamSeedCheckVersion { return o }
193
194var PerTeamSeedCheckVersionMap = map[string]PerTeamSeedCheckVersion{
195	"V1": 1,
196}
197
198var PerTeamSeedCheckVersionRevMap = map[PerTeamSeedCheckVersion]string{
199	1: "V1",
200}
201
202func (e PerTeamSeedCheckVersion) String() string {
203	if v, ok := PerTeamSeedCheckVersionRevMap[e]; ok {
204		return v
205	}
206	return fmt.Sprintf("%v", int(e))
207}
208
209type PerTeamSeedCheck struct {
210	Version PerTeamSeedCheckVersion `codec:"version" json:"version"`
211	Value   PerTeamSeedCheckValue   `codec:"value" json:"value"`
212}
213
214func (o PerTeamSeedCheck) DeepCopy() PerTeamSeedCheck {
215	return PerTeamSeedCheck{
216		Version: o.Version.DeepCopy(),
217		Value:   o.Value.DeepCopy(),
218	}
219}
220
221type PerTeamSeedCheckValue []byte
222
223func (o PerTeamSeedCheckValue) DeepCopy() PerTeamSeedCheckValue {
224	return (func(x []byte) []byte {
225		if x == nil {
226			return nil
227		}
228		return append([]byte{}, x...)
229	})(o)
230}
231
232type PerTeamSeedCheckValuePostImage []byte
233
234func (o PerTeamSeedCheckValuePostImage) DeepCopy() PerTeamSeedCheckValuePostImage {
235	return (func(x []byte) []byte {
236		if x == nil {
237			return nil
238		}
239		return append([]byte{}, x...)
240	})(o)
241}
242
243type PerTeamSeedCheckPostImage struct {
244	Value   PerTeamSeedCheckValuePostImage `codec:"h" json:"h"`
245	Version PerTeamSeedCheckVersion        `codec:"v" json:"v"`
246}
247
248func (o PerTeamSeedCheckPostImage) DeepCopy() PerTeamSeedCheckPostImage {
249	return PerTeamSeedCheckPostImage{
250		Value:   o.Value.DeepCopy(),
251		Version: o.Version.DeepCopy(),
252	}
253}
254
255type TeamApplicationKey struct {
256	Application   TeamApplication      `codec:"application" json:"application"`
257	KeyGeneration PerTeamKeyGeneration `codec:"keyGeneration" json:"keyGeneration"`
258	Key           Bytes32              `codec:"key" json:"key"`
259}
260
261func (o TeamApplicationKey) DeepCopy() TeamApplicationKey {
262	return TeamApplicationKey{
263		Application:   o.Application.DeepCopy(),
264		KeyGeneration: o.KeyGeneration.DeepCopy(),
265		Key:           o.Key.DeepCopy(),
266	}
267}
268
269type MaskB64 []byte
270
271func (o MaskB64) DeepCopy() MaskB64 {
272	return (func(x []byte) []byte {
273		if x == nil {
274			return nil
275		}
276		return append([]byte{}, x...)
277	})(o)
278}
279
280type TeamInviteID string
281
282func (o TeamInviteID) DeepCopy() TeamInviteID {
283	return o
284}
285
286type TeamInviteMaxUses int
287
288func (o TeamInviteMaxUses) DeepCopy() TeamInviteMaxUses {
289	return o
290}
291
292type ReaderKeyMask struct {
293	Application TeamApplication      `codec:"application" json:"application"`
294	Generation  PerTeamKeyGeneration `codec:"generation" json:"generation"`
295	Mask        MaskB64              `codec:"mask" json:"mask"`
296}
297
298func (o ReaderKeyMask) DeepCopy() ReaderKeyMask {
299	return ReaderKeyMask{
300		Application: o.Application.DeepCopy(),
301		Generation:  o.Generation.DeepCopy(),
302		Mask:        o.Mask.DeepCopy(),
303	}
304}
305
306type PerTeamKey struct {
307	Gen    PerTeamKeyGeneration `codec:"gen" json:"gen"`
308	Seqno  Seqno                `codec:"seqno" json:"seqno"`
309	SigKID KID                  `codec:"sigKID" json:"sigKID"`
310	EncKID KID                  `codec:"encKID" json:"encKID"`
311}
312
313func (o PerTeamKey) DeepCopy() PerTeamKey {
314	return PerTeamKey{
315		Gen:    o.Gen.DeepCopy(),
316		Seqno:  o.Seqno.DeepCopy(),
317		SigKID: o.SigKID.DeepCopy(),
318		EncKID: o.EncKID.DeepCopy(),
319	}
320}
321
322type PerTeamKeyAndCheck struct {
323	Ptk   PerTeamKey                `codec:"ptk" json:"ptk"`
324	Check PerTeamSeedCheckPostImage `codec:"check" json:"check"`
325}
326
327func (o PerTeamKeyAndCheck) DeepCopy() PerTeamKeyAndCheck {
328	return PerTeamKeyAndCheck{
329		Ptk:   o.Ptk.DeepCopy(),
330		Check: o.Check.DeepCopy(),
331	}
332}
333
334type PerTeamKeySeed [32]byte
335
336func (o PerTeamKeySeed) DeepCopy() PerTeamKeySeed {
337	var ret PerTeamKeySeed
338	copy(ret[:], o[:])
339	return ret
340}
341
342type PerTeamKeySeedItem struct {
343	Seed       PerTeamKeySeed       `codec:"seed" json:"seed"`
344	Generation PerTeamKeyGeneration `codec:"generation" json:"generation"`
345	Seqno      Seqno                `codec:"seqno" json:"seqno"`
346	Check      *PerTeamSeedCheck    `codec:"check,omitempty" json:"check,omitempty"`
347}
348
349func (o PerTeamKeySeedItem) DeepCopy() PerTeamKeySeedItem {
350	return PerTeamKeySeedItem{
351		Seed:       o.Seed.DeepCopy(),
352		Generation: o.Generation.DeepCopy(),
353		Seqno:      o.Seqno.DeepCopy(),
354		Check: (func(x *PerTeamSeedCheck) *PerTeamSeedCheck {
355			if x == nil {
356				return nil
357			}
358			tmp := (*x).DeepCopy()
359			return &tmp
360		})(o.Check),
361	}
362}
363
364type TeamMember struct {
365	Uid         UID              `codec:"uid" json:"uid"`
366	Role        TeamRole         `codec:"role" json:"role"`
367	EldestSeqno Seqno            `codec:"eldestSeqno" json:"eldestSeqno"`
368	Status      TeamMemberStatus `codec:"status" json:"status"`
369	BotSettings *TeamBotSettings `codec:"botSettings,omitempty" json:"botSettings,omitempty"`
370}
371
372func (o TeamMember) DeepCopy() TeamMember {
373	return TeamMember{
374		Uid:         o.Uid.DeepCopy(),
375		Role:        o.Role.DeepCopy(),
376		EldestSeqno: o.EldestSeqno.DeepCopy(),
377		Status:      o.Status.DeepCopy(),
378		BotSettings: (func(x *TeamBotSettings) *TeamBotSettings {
379			if x == nil {
380				return nil
381			}
382			tmp := (*x).DeepCopy()
383			return &tmp
384		})(o.BotSettings),
385	}
386}
387
388type TeamMembers struct {
389	Owners         []UserVersion `codec:"owners" json:"owners"`
390	Admins         []UserVersion `codec:"admins" json:"admins"`
391	Writers        []UserVersion `codec:"writers" json:"writers"`
392	Readers        []UserVersion `codec:"readers" json:"readers"`
393	Bots           []UserVersion `codec:"bots" json:"bots"`
394	RestrictedBots []UserVersion `codec:"restrictedBots" json:"restrictedBots"`
395}
396
397func (o TeamMembers) DeepCopy() TeamMembers {
398	return TeamMembers{
399		Owners: (func(x []UserVersion) []UserVersion {
400			if x == nil {
401				return nil
402			}
403			ret := make([]UserVersion, len(x))
404			for i, v := range x {
405				vCopy := v.DeepCopy()
406				ret[i] = vCopy
407			}
408			return ret
409		})(o.Owners),
410		Admins: (func(x []UserVersion) []UserVersion {
411			if x == nil {
412				return nil
413			}
414			ret := make([]UserVersion, len(x))
415			for i, v := range x {
416				vCopy := v.DeepCopy()
417				ret[i] = vCopy
418			}
419			return ret
420		})(o.Admins),
421		Writers: (func(x []UserVersion) []UserVersion {
422			if x == nil {
423				return nil
424			}
425			ret := make([]UserVersion, len(x))
426			for i, v := range x {
427				vCopy := v.DeepCopy()
428				ret[i] = vCopy
429			}
430			return ret
431		})(o.Writers),
432		Readers: (func(x []UserVersion) []UserVersion {
433			if x == nil {
434				return nil
435			}
436			ret := make([]UserVersion, len(x))
437			for i, v := range x {
438				vCopy := v.DeepCopy()
439				ret[i] = vCopy
440			}
441			return ret
442		})(o.Readers),
443		Bots: (func(x []UserVersion) []UserVersion {
444			if x == nil {
445				return nil
446			}
447			ret := make([]UserVersion, len(x))
448			for i, v := range x {
449				vCopy := v.DeepCopy()
450				ret[i] = vCopy
451			}
452			return ret
453		})(o.Bots),
454		RestrictedBots: (func(x []UserVersion) []UserVersion {
455			if x == nil {
456				return nil
457			}
458			ret := make([]UserVersion, len(x))
459			for i, v := range x {
460				vCopy := v.DeepCopy()
461				ret[i] = vCopy
462			}
463			return ret
464		})(o.RestrictedBots),
465	}
466}
467
468type TeamMemberStatus int
469
470const (
471	TeamMemberStatus_ACTIVE  TeamMemberStatus = 0
472	TeamMemberStatus_RESET   TeamMemberStatus = 1
473	TeamMemberStatus_DELETED TeamMemberStatus = 2
474)
475
476func (o TeamMemberStatus) DeepCopy() TeamMemberStatus { return o }
477
478var TeamMemberStatusMap = map[string]TeamMemberStatus{
479	"ACTIVE":  0,
480	"RESET":   1,
481	"DELETED": 2,
482}
483
484var TeamMemberStatusRevMap = map[TeamMemberStatus]string{
485	0: "ACTIVE",
486	1: "RESET",
487	2: "DELETED",
488}
489
490func (e TeamMemberStatus) String() string {
491	if v, ok := TeamMemberStatusRevMap[e]; ok {
492		return v
493	}
494	return fmt.Sprintf("%v", int(e))
495}
496
497type TeamMemberDetails struct {
498	Uv       UserVersion      `codec:"uv" json:"uv"`
499	Username string           `codec:"username" json:"username"`
500	FullName FullName         `codec:"fullName" json:"fullName"`
501	NeedsPUK bool             `codec:"needsPUK" json:"needsPUK"`
502	Status   TeamMemberStatus `codec:"status" json:"status"`
503	JoinTime *Time            `codec:"joinTime,omitempty" json:"joinTime,omitempty"`
504}
505
506func (o TeamMemberDetails) DeepCopy() TeamMemberDetails {
507	return TeamMemberDetails{
508		Uv:       o.Uv.DeepCopy(),
509		Username: o.Username,
510		FullName: o.FullName.DeepCopy(),
511		NeedsPUK: o.NeedsPUK,
512		Status:   o.Status.DeepCopy(),
513		JoinTime: (func(x *Time) *Time {
514			if x == nil {
515				return nil
516			}
517			tmp := (*x).DeepCopy()
518			return &tmp
519		})(o.JoinTime),
520	}
521}
522
523type TeamMembersDetails struct {
524	Owners         []TeamMemberDetails `codec:"owners" json:"owners"`
525	Admins         []TeamMemberDetails `codec:"admins" json:"admins"`
526	Writers        []TeamMemberDetails `codec:"writers" json:"writers"`
527	Readers        []TeamMemberDetails `codec:"readers" json:"readers"`
528	Bots           []TeamMemberDetails `codec:"bots" json:"bots"`
529	RestrictedBots []TeamMemberDetails `codec:"restrictedBots" json:"restrictedBots"`
530}
531
532func (o TeamMembersDetails) DeepCopy() TeamMembersDetails {
533	return TeamMembersDetails{
534		Owners: (func(x []TeamMemberDetails) []TeamMemberDetails {
535			if x == nil {
536				return nil
537			}
538			ret := make([]TeamMemberDetails, len(x))
539			for i, v := range x {
540				vCopy := v.DeepCopy()
541				ret[i] = vCopy
542			}
543			return ret
544		})(o.Owners),
545		Admins: (func(x []TeamMemberDetails) []TeamMemberDetails {
546			if x == nil {
547				return nil
548			}
549			ret := make([]TeamMemberDetails, len(x))
550			for i, v := range x {
551				vCopy := v.DeepCopy()
552				ret[i] = vCopy
553			}
554			return ret
555		})(o.Admins),
556		Writers: (func(x []TeamMemberDetails) []TeamMemberDetails {
557			if x == nil {
558				return nil
559			}
560			ret := make([]TeamMemberDetails, len(x))
561			for i, v := range x {
562				vCopy := v.DeepCopy()
563				ret[i] = vCopy
564			}
565			return ret
566		})(o.Writers),
567		Readers: (func(x []TeamMemberDetails) []TeamMemberDetails {
568			if x == nil {
569				return nil
570			}
571			ret := make([]TeamMemberDetails, len(x))
572			for i, v := range x {
573				vCopy := v.DeepCopy()
574				ret[i] = vCopy
575			}
576			return ret
577		})(o.Readers),
578		Bots: (func(x []TeamMemberDetails) []TeamMemberDetails {
579			if x == nil {
580				return nil
581			}
582			ret := make([]TeamMemberDetails, len(x))
583			for i, v := range x {
584				vCopy := v.DeepCopy()
585				ret[i] = vCopy
586			}
587			return ret
588		})(o.Bots),
589		RestrictedBots: (func(x []TeamMemberDetails) []TeamMemberDetails {
590			if x == nil {
591				return nil
592			}
593			ret := make([]TeamMemberDetails, len(x))
594			for i, v := range x {
595				vCopy := v.DeepCopy()
596				ret[i] = vCopy
597			}
598			return ret
599		})(o.RestrictedBots),
600	}
601}
602
603type TeamDetails struct {
604	Name                   string                               `codec:"name" json:"name"`
605	Members                TeamMembersDetails                   `codec:"members" json:"members"`
606	KeyGeneration          PerTeamKeyGeneration                 `codec:"keyGeneration" json:"keyGeneration"`
607	AnnotatedActiveInvites map[TeamInviteID]AnnotatedTeamInvite `codec:"annotatedActiveInvites" json:"annotatedActiveInvites"`
608	Settings               TeamSettings                         `codec:"settings" json:"settings"`
609	Showcase               TeamShowcase                         `codec:"showcase" json:"showcase"`
610}
611
612func (o TeamDetails) DeepCopy() TeamDetails {
613	return TeamDetails{
614		Name:          o.Name,
615		Members:       o.Members.DeepCopy(),
616		KeyGeneration: o.KeyGeneration.DeepCopy(),
617		AnnotatedActiveInvites: (func(x map[TeamInviteID]AnnotatedTeamInvite) map[TeamInviteID]AnnotatedTeamInvite {
618			if x == nil {
619				return nil
620			}
621			ret := make(map[TeamInviteID]AnnotatedTeamInvite, len(x))
622			for k, v := range x {
623				kCopy := k.DeepCopy()
624				vCopy := v.DeepCopy()
625				ret[kCopy] = vCopy
626			}
627			return ret
628		})(o.AnnotatedActiveInvites),
629		Settings: o.Settings.DeepCopy(),
630		Showcase: o.Showcase.DeepCopy(),
631	}
632}
633
634type TeamMemberRole struct {
635	Uid      UID      `codec:"uid" json:"uid"`
636	Username string   `codec:"username" json:"username"`
637	FullName FullName `codec:"fullName" json:"fullName"`
638	Role     TeamRole `codec:"role" json:"role"`
639}
640
641func (o TeamMemberRole) DeepCopy() TeamMemberRole {
642	return TeamMemberRole{
643		Uid:      o.Uid.DeepCopy(),
644		Username: o.Username,
645		FullName: o.FullName.DeepCopy(),
646		Role:     o.Role.DeepCopy(),
647	}
648}
649
650type UntrustedTeamInfo struct {
651	Name          TeamName         `codec:"name" json:"name"`
652	InTeam        bool             `codec:"inTeam" json:"inTeam"`
653	Open          bool             `codec:"open" json:"open"`
654	Description   string           `codec:"description" json:"description"`
655	PublicAdmins  []string         `codec:"publicAdmins" json:"publicAdmins"`
656	NumMembers    int              `codec:"numMembers" json:"numMembers"`
657	PublicMembers []TeamMemberRole `codec:"publicMembers" json:"publicMembers"`
658}
659
660func (o UntrustedTeamInfo) DeepCopy() UntrustedTeamInfo {
661	return UntrustedTeamInfo{
662		Name:        o.Name.DeepCopy(),
663		InTeam:      o.InTeam,
664		Open:        o.Open,
665		Description: o.Description,
666		PublicAdmins: (func(x []string) []string {
667			if x == nil {
668				return nil
669			}
670			ret := make([]string, len(x))
671			for i, v := range x {
672				vCopy := v
673				ret[i] = vCopy
674			}
675			return ret
676		})(o.PublicAdmins),
677		NumMembers: o.NumMembers,
678		PublicMembers: (func(x []TeamMemberRole) []TeamMemberRole {
679			if x == nil {
680				return nil
681			}
682			ret := make([]TeamMemberRole, len(x))
683			for i, v := range x {
684				vCopy := v.DeepCopy()
685				ret[i] = vCopy
686			}
687			return ret
688		})(o.PublicMembers),
689	}
690}
691
692type UserVersionPercentForm string
693
694func (o UserVersionPercentForm) DeepCopy() UserVersionPercentForm {
695	return o
696}
697
698type TeamUsedInvite struct {
699	InviteID TeamInviteID           `codec:"inviteID" json:"inviteID"`
700	Uv       UserVersionPercentForm `codec:"uv" json:"uv"`
701}
702
703func (o TeamUsedInvite) DeepCopy() TeamUsedInvite {
704	return TeamUsedInvite{
705		InviteID: o.InviteID.DeepCopy(),
706		Uv:       o.Uv.DeepCopy(),
707	}
708}
709
710type TeamChangeReq struct {
711	Owners           []UserVersion                           `codec:"owners" json:"owners"`
712	Admins           []UserVersion                           `codec:"admins" json:"admins"`
713	Writers          []UserVersion                           `codec:"writers" json:"writers"`
714	Readers          []UserVersion                           `codec:"readers" json:"readers"`
715	Bots             []UserVersion                           `codec:"bots" json:"bots"`
716	RestrictedBots   map[UserVersion]TeamBotSettings         `codec:"restrictedBots" json:"restrictedBots"`
717	None             []UserVersion                           `codec:"none" json:"none"`
718	CompletedInvites map[TeamInviteID]UserVersionPercentForm `codec:"completedInvites" json:"completedInvites"`
719	UsedInvites      []TeamUsedInvite                        `codec:"usedInvites" json:"usedInvites"`
720}
721
722func (o TeamChangeReq) DeepCopy() TeamChangeReq {
723	return TeamChangeReq{
724		Owners: (func(x []UserVersion) []UserVersion {
725			if x == nil {
726				return nil
727			}
728			ret := make([]UserVersion, len(x))
729			for i, v := range x {
730				vCopy := v.DeepCopy()
731				ret[i] = vCopy
732			}
733			return ret
734		})(o.Owners),
735		Admins: (func(x []UserVersion) []UserVersion {
736			if x == nil {
737				return nil
738			}
739			ret := make([]UserVersion, len(x))
740			for i, v := range x {
741				vCopy := v.DeepCopy()
742				ret[i] = vCopy
743			}
744			return ret
745		})(o.Admins),
746		Writers: (func(x []UserVersion) []UserVersion {
747			if x == nil {
748				return nil
749			}
750			ret := make([]UserVersion, len(x))
751			for i, v := range x {
752				vCopy := v.DeepCopy()
753				ret[i] = vCopy
754			}
755			return ret
756		})(o.Writers),
757		Readers: (func(x []UserVersion) []UserVersion {
758			if x == nil {
759				return nil
760			}
761			ret := make([]UserVersion, len(x))
762			for i, v := range x {
763				vCopy := v.DeepCopy()
764				ret[i] = vCopy
765			}
766			return ret
767		})(o.Readers),
768		Bots: (func(x []UserVersion) []UserVersion {
769			if x == nil {
770				return nil
771			}
772			ret := make([]UserVersion, len(x))
773			for i, v := range x {
774				vCopy := v.DeepCopy()
775				ret[i] = vCopy
776			}
777			return ret
778		})(o.Bots),
779		RestrictedBots: (func(x map[UserVersion]TeamBotSettings) map[UserVersion]TeamBotSettings {
780			if x == nil {
781				return nil
782			}
783			ret := make(map[UserVersion]TeamBotSettings, len(x))
784			for k, v := range x {
785				kCopy := k.DeepCopy()
786				vCopy := v.DeepCopy()
787				ret[kCopy] = vCopy
788			}
789			return ret
790		})(o.RestrictedBots),
791		None: (func(x []UserVersion) []UserVersion {
792			if x == nil {
793				return nil
794			}
795			ret := make([]UserVersion, len(x))
796			for i, v := range x {
797				vCopy := v.DeepCopy()
798				ret[i] = vCopy
799			}
800			return ret
801		})(o.None),
802		CompletedInvites: (func(x map[TeamInviteID]UserVersionPercentForm) map[TeamInviteID]UserVersionPercentForm {
803			if x == nil {
804				return nil
805			}
806			ret := make(map[TeamInviteID]UserVersionPercentForm, len(x))
807			for k, v := range x {
808				kCopy := k.DeepCopy()
809				vCopy := v.DeepCopy()
810				ret[kCopy] = vCopy
811			}
812			return ret
813		})(o.CompletedInvites),
814		UsedInvites: (func(x []TeamUsedInvite) []TeamUsedInvite {
815			if x == nil {
816				return nil
817			}
818			ret := make([]TeamUsedInvite, len(x))
819			for i, v := range x {
820				vCopy := v.DeepCopy()
821				ret[i] = vCopy
822			}
823			return ret
824		})(o.UsedInvites),
825	}
826}
827
828type TeamPlusApplicationKeys struct {
829	Id                 TeamID               `codec:"id" json:"id"`
830	Name               string               `codec:"name" json:"name"`
831	Implicit           bool                 `codec:"implicit" json:"implicit"`
832	Public             bool                 `codec:"public" json:"public"`
833	Application        TeamApplication      `codec:"application" json:"application"`
834	Writers            []UserVersion        `codec:"writers" json:"writers"`
835	OnlyReaders        []UserVersion        `codec:"onlyReaders" json:"onlyReaders"`
836	OnlyRestrictedBots []UserVersion        `codec:"onlyRestrictedBots" json:"onlyRestrictedBots"`
837	ApplicationKeys    []TeamApplicationKey `codec:"applicationKeys" json:"applicationKeys"`
838}
839
840func (o TeamPlusApplicationKeys) DeepCopy() TeamPlusApplicationKeys {
841	return TeamPlusApplicationKeys{
842		Id:          o.Id.DeepCopy(),
843		Name:        o.Name,
844		Implicit:    o.Implicit,
845		Public:      o.Public,
846		Application: o.Application.DeepCopy(),
847		Writers: (func(x []UserVersion) []UserVersion {
848			if x == nil {
849				return nil
850			}
851			ret := make([]UserVersion, len(x))
852			for i, v := range x {
853				vCopy := v.DeepCopy()
854				ret[i] = vCopy
855			}
856			return ret
857		})(o.Writers),
858		OnlyReaders: (func(x []UserVersion) []UserVersion {
859			if x == nil {
860				return nil
861			}
862			ret := make([]UserVersion, len(x))
863			for i, v := range x {
864				vCopy := v.DeepCopy()
865				ret[i] = vCopy
866			}
867			return ret
868		})(o.OnlyReaders),
869		OnlyRestrictedBots: (func(x []UserVersion) []UserVersion {
870			if x == nil {
871				return nil
872			}
873			ret := make([]UserVersion, len(x))
874			for i, v := range x {
875				vCopy := v.DeepCopy()
876				ret[i] = vCopy
877			}
878			return ret
879		})(o.OnlyRestrictedBots),
880		ApplicationKeys: (func(x []TeamApplicationKey) []TeamApplicationKey {
881			if x == nil {
882				return nil
883			}
884			ret := make([]TeamApplicationKey, len(x))
885			for i, v := range x {
886				vCopy := v.DeepCopy()
887				ret[i] = vCopy
888			}
889			return ret
890		})(o.ApplicationKeys),
891	}
892}
893
894type TeamData struct {
895	Subversion                int                                                  `codec:"v" json:"v"`
896	Frozen                    bool                                                 `codec:"frozen" json:"frozen"`
897	Tombstoned                bool                                                 `codec:"tombstoned" json:"tombstoned"`
898	Secretless                bool                                                 `codec:"secretless" json:"secretless"`
899	Name                      TeamName                                             `codec:"name" json:"name"`
900	Chain                     TeamSigChainState                                    `codec:"chain" json:"chain"`
901	PerTeamKeySeedsUnverified map[PerTeamKeyGeneration]PerTeamKeySeedItem          `codec:"perTeamKeySeeds" json:"perTeamKeySeedsUnverified"`
902	ReaderKeyMasks            map[TeamApplication]map[PerTeamKeyGeneration]MaskB64 `codec:"readerKeyMasks" json:"readerKeyMasks"`
903	LatestSeqnoHint           Seqno                                                `codec:"latestSeqnoHint" json:"latestSeqnoHint"`
904	CachedAt                  Time                                                 `codec:"cachedAt" json:"cachedAt"`
905	TlfCryptKeys              map[TeamApplication][]CryptKey                       `codec:"tlfCryptKeys" json:"tlfCryptKeys"`
906}
907
908func (o TeamData) DeepCopy() TeamData {
909	return TeamData{
910		Subversion: o.Subversion,
911		Frozen:     o.Frozen,
912		Tombstoned: o.Tombstoned,
913		Secretless: o.Secretless,
914		Name:       o.Name.DeepCopy(),
915		Chain:      o.Chain.DeepCopy(),
916		PerTeamKeySeedsUnverified: (func(x map[PerTeamKeyGeneration]PerTeamKeySeedItem) map[PerTeamKeyGeneration]PerTeamKeySeedItem {
917			if x == nil {
918				return nil
919			}
920			ret := make(map[PerTeamKeyGeneration]PerTeamKeySeedItem, len(x))
921			for k, v := range x {
922				kCopy := k.DeepCopy()
923				vCopy := v.DeepCopy()
924				ret[kCopy] = vCopy
925			}
926			return ret
927		})(o.PerTeamKeySeedsUnverified),
928		ReaderKeyMasks: (func(x map[TeamApplication]map[PerTeamKeyGeneration]MaskB64) map[TeamApplication]map[PerTeamKeyGeneration]MaskB64 {
929			if x == nil {
930				return nil
931			}
932			ret := make(map[TeamApplication]map[PerTeamKeyGeneration]MaskB64, len(x))
933			for k, v := range x {
934				kCopy := k.DeepCopy()
935				vCopy := (func(x map[PerTeamKeyGeneration]MaskB64) map[PerTeamKeyGeneration]MaskB64 {
936					if x == nil {
937						return nil
938					}
939					ret := make(map[PerTeamKeyGeneration]MaskB64, len(x))
940					for k, v := range x {
941						kCopy := k.DeepCopy()
942						vCopy := v.DeepCopy()
943						ret[kCopy] = vCopy
944					}
945					return ret
946				})(v)
947				ret[kCopy] = vCopy
948			}
949			return ret
950		})(o.ReaderKeyMasks),
951		LatestSeqnoHint: o.LatestSeqnoHint.DeepCopy(),
952		CachedAt:        o.CachedAt.DeepCopy(),
953		TlfCryptKeys: (func(x map[TeamApplication][]CryptKey) map[TeamApplication][]CryptKey {
954			if x == nil {
955				return nil
956			}
957			ret := make(map[TeamApplication][]CryptKey, len(x))
958			for k, v := range x {
959				kCopy := k.DeepCopy()
960				vCopy := (func(x []CryptKey) []CryptKey {
961					if x == nil {
962						return nil
963					}
964					ret := make([]CryptKey, len(x))
965					for i, v := range x {
966						vCopy := v.DeepCopy()
967						ret[i] = vCopy
968					}
969					return ret
970				})(v)
971				ret[kCopy] = vCopy
972			}
973			return ret
974		})(o.TlfCryptKeys),
975	}
976}
977
978type FastTeamData struct {
979	Frozen                     bool                                                 `codec:"frozen" json:"frozen"`
980	Subversion                 int                                                  `codec:"subversion" json:"subversion"`
981	Tombstoned                 bool                                                 `codec:"tombstoned" json:"tombstoned"`
982	Name                       TeamName                                             `codec:"name" json:"name"`
983	Chain                      FastTeamSigChainState                                `codec:"chain" json:"chain"`
984	PerTeamKeySeedsUnverified  map[PerTeamKeyGeneration]PerTeamKeySeed              `codec:"perTeamKeySeeds" json:"perTeamKeySeedsUnverified"`
985	MaxContinuousPTKGeneration PerTeamKeyGeneration                                 `codec:"maxContinuousPTKGeneration" json:"maxContinuousPTKGeneration"`
986	SeedChecks                 map[PerTeamKeyGeneration]PerTeamSeedCheck            `codec:"seedChecks" json:"seedChecks"`
987	LatestKeyGeneration        PerTeamKeyGeneration                                 `codec:"latestKeyGeneration" json:"latestKeyGeneration"`
988	ReaderKeyMasks             map[TeamApplication]map[PerTeamKeyGeneration]MaskB64 `codec:"readerKeyMasks" json:"readerKeyMasks"`
989	LatestSeqnoHint            Seqno                                                `codec:"latestSeqnoHint" json:"latestSeqnoHint"`
990	CachedAt                   Time                                                 `codec:"cachedAt" json:"cachedAt"`
991	LoadedLatest               bool                                                 `codec:"loadedLatest" json:"loadedLatest"`
992}
993
994func (o FastTeamData) DeepCopy() FastTeamData {
995	return FastTeamData{
996		Frozen:     o.Frozen,
997		Subversion: o.Subversion,
998		Tombstoned: o.Tombstoned,
999		Name:       o.Name.DeepCopy(),
1000		Chain:      o.Chain.DeepCopy(),
1001		PerTeamKeySeedsUnverified: (func(x map[PerTeamKeyGeneration]PerTeamKeySeed) map[PerTeamKeyGeneration]PerTeamKeySeed {
1002			if x == nil {
1003				return nil
1004			}
1005			ret := make(map[PerTeamKeyGeneration]PerTeamKeySeed, len(x))
1006			for k, v := range x {
1007				kCopy := k.DeepCopy()
1008				vCopy := v.DeepCopy()
1009				ret[kCopy] = vCopy
1010			}
1011			return ret
1012		})(o.PerTeamKeySeedsUnverified),
1013		MaxContinuousPTKGeneration: o.MaxContinuousPTKGeneration.DeepCopy(),
1014		SeedChecks: (func(x map[PerTeamKeyGeneration]PerTeamSeedCheck) map[PerTeamKeyGeneration]PerTeamSeedCheck {
1015			if x == nil {
1016				return nil
1017			}
1018			ret := make(map[PerTeamKeyGeneration]PerTeamSeedCheck, len(x))
1019			for k, v := range x {
1020				kCopy := k.DeepCopy()
1021				vCopy := v.DeepCopy()
1022				ret[kCopy] = vCopy
1023			}
1024			return ret
1025		})(o.SeedChecks),
1026		LatestKeyGeneration: o.LatestKeyGeneration.DeepCopy(),
1027		ReaderKeyMasks: (func(x map[TeamApplication]map[PerTeamKeyGeneration]MaskB64) map[TeamApplication]map[PerTeamKeyGeneration]MaskB64 {
1028			if x == nil {
1029				return nil
1030			}
1031			ret := make(map[TeamApplication]map[PerTeamKeyGeneration]MaskB64, len(x))
1032			for k, v := range x {
1033				kCopy := k.DeepCopy()
1034				vCopy := (func(x map[PerTeamKeyGeneration]MaskB64) map[PerTeamKeyGeneration]MaskB64 {
1035					if x == nil {
1036						return nil
1037					}
1038					ret := make(map[PerTeamKeyGeneration]MaskB64, len(x))
1039					for k, v := range x {
1040						kCopy := k.DeepCopy()
1041						vCopy := v.DeepCopy()
1042						ret[kCopy] = vCopy
1043					}
1044					return ret
1045				})(v)
1046				ret[kCopy] = vCopy
1047			}
1048			return ret
1049		})(o.ReaderKeyMasks),
1050		LatestSeqnoHint: o.LatestSeqnoHint.DeepCopy(),
1051		CachedAt:        o.CachedAt.DeepCopy(),
1052		LoadedLatest:    o.LoadedLatest,
1053	}
1054}
1055
1056type RatchetType int
1057
1058const (
1059	RatchetType_MAIN        RatchetType = 0
1060	RatchetType_BLINDED     RatchetType = 1
1061	RatchetType_SELF        RatchetType = 2
1062	RatchetType_UNCOMMITTED RatchetType = 3
1063)
1064
1065func (o RatchetType) DeepCopy() RatchetType { return o }
1066
1067var RatchetTypeMap = map[string]RatchetType{
1068	"MAIN":        0,
1069	"BLINDED":     1,
1070	"SELF":        2,
1071	"UNCOMMITTED": 3,
1072}
1073
1074var RatchetTypeRevMap = map[RatchetType]string{
1075	0: "MAIN",
1076	1: "BLINDED",
1077	2: "SELF",
1078	3: "UNCOMMITTED",
1079}
1080
1081func (e RatchetType) String() string {
1082	if v, ok := RatchetTypeRevMap[e]; ok {
1083		return v
1084	}
1085	return fmt.Sprintf("%v", int(e))
1086}
1087
1088type HiddenTeamChainRatchetSet struct {
1089	Ratchets map[RatchetType]LinkTripleAndTime `codec:"ratchets" json:"ratchets"`
1090}
1091
1092func (o HiddenTeamChainRatchetSet) DeepCopy() HiddenTeamChainRatchetSet {
1093	return HiddenTeamChainRatchetSet{
1094		Ratchets: (func(x map[RatchetType]LinkTripleAndTime) map[RatchetType]LinkTripleAndTime {
1095			if x == nil {
1096				return nil
1097			}
1098			ret := make(map[RatchetType]LinkTripleAndTime, len(x))
1099			for k, v := range x {
1100				kCopy := k.DeepCopy()
1101				vCopy := v.DeepCopy()
1102				ret[kCopy] = vCopy
1103			}
1104			return ret
1105		})(o.Ratchets),
1106	}
1107}
1108
1109type HiddenTeamChain struct {
1110	Id                 TeamID                         `codec:"id" json:"id"`
1111	Subversion         int                            `codec:"subversion" json:"subversion"`
1112	Public             bool                           `codec:"public" json:"public"`
1113	Frozen             bool                           `codec:"frozen" json:"frozen"`
1114	Tombstoned         bool                           `codec:"tombstoned" json:"tombstoned"`
1115	Last               Seqno                          `codec:"last" json:"last"`
1116	LastFull           Seqno                          `codec:"lastFull" json:"lastFull"`
1117	LatestSeqnoHint    Seqno                          `codec:"latestSeqnoHint" json:"latestSeqnoHint"`
1118	LastCommittedSeqno Seqno                          `codec:"lastCommittedSeqno" json:"lastCommittedSeqno"`
1119	LinkReceiptTimes   map[Seqno]Time                 `codec:"linkReceiptTimes" json:"linkReceiptTimes"`
1120	LastPerTeamKeys    map[PTKType]Seqno              `codec:"lastPerTeamKeys" json:"lastPerTeamKeys"`
1121	Outer              map[Seqno]LinkID               `codec:"outer" json:"outer"`
1122	Inner              map[Seqno]HiddenTeamChainLink  `codec:"inner" json:"inner"`
1123	ReaderPerTeamKeys  map[PerTeamKeyGeneration]Seqno `codec:"readerPerTeamKeys" json:"readerPerTeamKeys"`
1124	RatchetSet         HiddenTeamChainRatchetSet      `codec:"ratchetSet" json:"ratchetSet"`
1125	CachedAt           Time                           `codec:"cachedAt" json:"cachedAt"`
1126	NeedRotate         bool                           `codec:"needRotate" json:"needRotate"`
1127	MerkleRoots        map[Seqno]MerkleRootV2         `codec:"merkleRoots" json:"merkleRoots"`
1128}
1129
1130func (o HiddenTeamChain) DeepCopy() HiddenTeamChain {
1131	return HiddenTeamChain{
1132		Id:                 o.Id.DeepCopy(),
1133		Subversion:         o.Subversion,
1134		Public:             o.Public,
1135		Frozen:             o.Frozen,
1136		Tombstoned:         o.Tombstoned,
1137		Last:               o.Last.DeepCopy(),
1138		LastFull:           o.LastFull.DeepCopy(),
1139		LatestSeqnoHint:    o.LatestSeqnoHint.DeepCopy(),
1140		LastCommittedSeqno: o.LastCommittedSeqno.DeepCopy(),
1141		LinkReceiptTimes: (func(x map[Seqno]Time) map[Seqno]Time {
1142			if x == nil {
1143				return nil
1144			}
1145			ret := make(map[Seqno]Time, len(x))
1146			for k, v := range x {
1147				kCopy := k.DeepCopy()
1148				vCopy := v.DeepCopy()
1149				ret[kCopy] = vCopy
1150			}
1151			return ret
1152		})(o.LinkReceiptTimes),
1153		LastPerTeamKeys: (func(x map[PTKType]Seqno) map[PTKType]Seqno {
1154			if x == nil {
1155				return nil
1156			}
1157			ret := make(map[PTKType]Seqno, len(x))
1158			for k, v := range x {
1159				kCopy := k.DeepCopy()
1160				vCopy := v.DeepCopy()
1161				ret[kCopy] = vCopy
1162			}
1163			return ret
1164		})(o.LastPerTeamKeys),
1165		Outer: (func(x map[Seqno]LinkID) map[Seqno]LinkID {
1166			if x == nil {
1167				return nil
1168			}
1169			ret := make(map[Seqno]LinkID, len(x))
1170			for k, v := range x {
1171				kCopy := k.DeepCopy()
1172				vCopy := v.DeepCopy()
1173				ret[kCopy] = vCopy
1174			}
1175			return ret
1176		})(o.Outer),
1177		Inner: (func(x map[Seqno]HiddenTeamChainLink) map[Seqno]HiddenTeamChainLink {
1178			if x == nil {
1179				return nil
1180			}
1181			ret := make(map[Seqno]HiddenTeamChainLink, len(x))
1182			for k, v := range x {
1183				kCopy := k.DeepCopy()
1184				vCopy := v.DeepCopy()
1185				ret[kCopy] = vCopy
1186			}
1187			return ret
1188		})(o.Inner),
1189		ReaderPerTeamKeys: (func(x map[PerTeamKeyGeneration]Seqno) map[PerTeamKeyGeneration]Seqno {
1190			if x == nil {
1191				return nil
1192			}
1193			ret := make(map[PerTeamKeyGeneration]Seqno, len(x))
1194			for k, v := range x {
1195				kCopy := k.DeepCopy()
1196				vCopy := v.DeepCopy()
1197				ret[kCopy] = vCopy
1198			}
1199			return ret
1200		})(o.ReaderPerTeamKeys),
1201		RatchetSet: o.RatchetSet.DeepCopy(),
1202		CachedAt:   o.CachedAt.DeepCopy(),
1203		NeedRotate: o.NeedRotate,
1204		MerkleRoots: (func(x map[Seqno]MerkleRootV2) map[Seqno]MerkleRootV2 {
1205			if x == nil {
1206				return nil
1207			}
1208			ret := make(map[Seqno]MerkleRootV2, len(x))
1209			for k, v := range x {
1210				kCopy := k.DeepCopy()
1211				vCopy := v.DeepCopy()
1212				ret[kCopy] = vCopy
1213			}
1214			return ret
1215		})(o.MerkleRoots),
1216	}
1217}
1218
1219type LinkTriple struct {
1220	Seqno   Seqno   `codec:"seqno" json:"seqno"`
1221	SeqType SeqType `codec:"seqType" json:"seqType"`
1222	LinkID  LinkID  `codec:"linkID" json:"linkID"`
1223}
1224
1225func (o LinkTriple) DeepCopy() LinkTriple {
1226	return LinkTriple{
1227		Seqno:   o.Seqno.DeepCopy(),
1228		SeqType: o.SeqType.DeepCopy(),
1229		LinkID:  o.LinkID.DeepCopy(),
1230	}
1231}
1232
1233type LinkTripleAndTime struct {
1234	Triple LinkTriple `codec:"triple" json:"triple"`
1235	Time   Time       `codec:"time" json:"time"`
1236}
1237
1238func (o LinkTripleAndTime) DeepCopy() LinkTripleAndTime {
1239	return LinkTripleAndTime{
1240		Triple: o.Triple.DeepCopy(),
1241		Time:   o.Time.DeepCopy(),
1242	}
1243}
1244
1245type UpPointer struct {
1246	OurSeqno    Seqno  `codec:"ourSeqno" json:"ourSeqno"`
1247	ParentID    TeamID `codec:"parentID" json:"parentID"`
1248	ParentSeqno Seqno  `codec:"parentSeqno" json:"parentSeqno"`
1249	Deletion    bool   `codec:"deletion" json:"deletion"`
1250}
1251
1252func (o UpPointer) DeepCopy() UpPointer {
1253	return UpPointer{
1254		OurSeqno:    o.OurSeqno.DeepCopy(),
1255		ParentID:    o.ParentID.DeepCopy(),
1256		ParentSeqno: o.ParentSeqno.DeepCopy(),
1257		Deletion:    o.Deletion,
1258	}
1259}
1260
1261type DownPointer struct {
1262	Id            TeamID `codec:"id" json:"id"`
1263	NameComponent string `codec:"nameComponent" json:"nameComponent"`
1264	IsDeleted     bool   `codec:"isDeleted" json:"isDeleted"`
1265}
1266
1267func (o DownPointer) DeepCopy() DownPointer {
1268	return DownPointer{
1269		Id:            o.Id.DeepCopy(),
1270		NameComponent: o.NameComponent,
1271		IsDeleted:     o.IsDeleted,
1272	}
1273}
1274
1275type Signer struct {
1276	E Seqno `codec:"e" json:"e"`
1277	K KID   `codec:"k" json:"k"`
1278	U UID   `codec:"u" json:"u"`
1279}
1280
1281func (o Signer) DeepCopy() Signer {
1282	return Signer{
1283		E: o.E.DeepCopy(),
1284		K: o.K.DeepCopy(),
1285		U: o.U.DeepCopy(),
1286	}
1287}
1288
1289type HiddenTeamChainLink struct {
1290	MerkleRoot  MerkleRootV2                   `codec:"m" json:"m"`
1291	ParentChain LinkTriple                     `codec:"p" json:"p"`
1292	Signer      Signer                         `codec:"s" json:"s"`
1293	Ptk         map[PTKType]PerTeamKeyAndCheck `codec:"k" json:"k"`
1294}
1295
1296func (o HiddenTeamChainLink) DeepCopy() HiddenTeamChainLink {
1297	return HiddenTeamChainLink{
1298		MerkleRoot:  o.MerkleRoot.DeepCopy(),
1299		ParentChain: o.ParentChain.DeepCopy(),
1300		Signer:      o.Signer.DeepCopy(),
1301		Ptk: (func(x map[PTKType]PerTeamKeyAndCheck) map[PTKType]PerTeamKeyAndCheck {
1302			if x == nil {
1303				return nil
1304			}
1305			ret := make(map[PTKType]PerTeamKeyAndCheck, len(x))
1306			for k, v := range x {
1307				kCopy := k.DeepCopy()
1308				vCopy := v.DeepCopy()
1309				ret[kCopy] = vCopy
1310			}
1311			return ret
1312		})(o.Ptk),
1313	}
1314}
1315
1316type FastTeamSigChainState struct {
1317	ID                      TeamID                                  `codec:"ID" json:"ID"`
1318	Public                  bool                                    `codec:"public" json:"public"`
1319	RootAncestor            TeamName                                `codec:"rootAncestor" json:"rootAncestor"`
1320	NameDepth               int                                     `codec:"nameDepth" json:"nameDepth"`
1321	Last                    *LinkTriple                             `codec:"last,omitempty" json:"last,omitempty"`
1322	PerTeamKeys             map[PerTeamKeyGeneration]PerTeamKey     `codec:"perTeamKeys" json:"perTeamKeys"`
1323	PerTeamKeySeedsVerified map[PerTeamKeyGeneration]PerTeamKeySeed `codec:"perTeamKeySeedsVerified" json:"perTeamKeySeedsVerified"`
1324	DownPointers            map[Seqno]DownPointer                   `codec:"downPointers" json:"downPointers"`
1325	LastUpPointer           *UpPointer                              `codec:"lastUpPointer,omitempty" json:"lastUpPointer,omitempty"`
1326	PerTeamKeyCTime         UnixTime                                `codec:"perTeamKeyCTime" json:"perTeamKeyCTime"`
1327	LinkIDs                 map[Seqno]LinkID                        `codec:"linkIDs" json:"linkIDs"`
1328	MerkleInfo              map[Seqno]MerkleRootV2                  `codec:"merkleInfo" json:"merkleInfo"`
1329}
1330
1331func (o FastTeamSigChainState) DeepCopy() FastTeamSigChainState {
1332	return FastTeamSigChainState{
1333		ID:           o.ID.DeepCopy(),
1334		Public:       o.Public,
1335		RootAncestor: o.RootAncestor.DeepCopy(),
1336		NameDepth:    o.NameDepth,
1337		Last: (func(x *LinkTriple) *LinkTriple {
1338			if x == nil {
1339				return nil
1340			}
1341			tmp := (*x).DeepCopy()
1342			return &tmp
1343		})(o.Last),
1344		PerTeamKeys: (func(x map[PerTeamKeyGeneration]PerTeamKey) map[PerTeamKeyGeneration]PerTeamKey {
1345			if x == nil {
1346				return nil
1347			}
1348			ret := make(map[PerTeamKeyGeneration]PerTeamKey, len(x))
1349			for k, v := range x {
1350				kCopy := k.DeepCopy()
1351				vCopy := v.DeepCopy()
1352				ret[kCopy] = vCopy
1353			}
1354			return ret
1355		})(o.PerTeamKeys),
1356		PerTeamKeySeedsVerified: (func(x map[PerTeamKeyGeneration]PerTeamKeySeed) map[PerTeamKeyGeneration]PerTeamKeySeed {
1357			if x == nil {
1358				return nil
1359			}
1360			ret := make(map[PerTeamKeyGeneration]PerTeamKeySeed, len(x))
1361			for k, v := range x {
1362				kCopy := k.DeepCopy()
1363				vCopy := v.DeepCopy()
1364				ret[kCopy] = vCopy
1365			}
1366			return ret
1367		})(o.PerTeamKeySeedsVerified),
1368		DownPointers: (func(x map[Seqno]DownPointer) map[Seqno]DownPointer {
1369			if x == nil {
1370				return nil
1371			}
1372			ret := make(map[Seqno]DownPointer, len(x))
1373			for k, v := range x {
1374				kCopy := k.DeepCopy()
1375				vCopy := v.DeepCopy()
1376				ret[kCopy] = vCopy
1377			}
1378			return ret
1379		})(o.DownPointers),
1380		LastUpPointer: (func(x *UpPointer) *UpPointer {
1381			if x == nil {
1382				return nil
1383			}
1384			tmp := (*x).DeepCopy()
1385			return &tmp
1386		})(o.LastUpPointer),
1387		PerTeamKeyCTime: o.PerTeamKeyCTime.DeepCopy(),
1388		LinkIDs: (func(x map[Seqno]LinkID) map[Seqno]LinkID {
1389			if x == nil {
1390				return nil
1391			}
1392			ret := make(map[Seqno]LinkID, len(x))
1393			for k, v := range x {
1394				kCopy := k.DeepCopy()
1395				vCopy := v.DeepCopy()
1396				ret[kCopy] = vCopy
1397			}
1398			return ret
1399		})(o.LinkIDs),
1400		MerkleInfo: (func(x map[Seqno]MerkleRootV2) map[Seqno]MerkleRootV2 {
1401			if x == nil {
1402				return nil
1403			}
1404			ret := make(map[Seqno]MerkleRootV2, len(x))
1405			for k, v := range x {
1406				kCopy := k.DeepCopy()
1407				vCopy := v.DeepCopy()
1408				ret[kCopy] = vCopy
1409			}
1410			return ret
1411		})(o.MerkleInfo),
1412	}
1413}
1414
1415type Audit struct {
1416	Time           Time  `codec:"time" json:"time"`
1417	MaxMerkleSeqno Seqno `codec:"mms" json:"mms"`
1418	MaxChainSeqno  Seqno `codec:"mcs" json:"mcs"`
1419	MaxHiddenSeqno Seqno `codec:"mhs" json:"mhs"`
1420	MaxMerkleProbe Seqno `codec:"mmp" json:"mmp"`
1421}
1422
1423func (o Audit) DeepCopy() Audit {
1424	return Audit{
1425		Time:           o.Time.DeepCopy(),
1426		MaxMerkleSeqno: o.MaxMerkleSeqno.DeepCopy(),
1427		MaxChainSeqno:  o.MaxChainSeqno.DeepCopy(),
1428		MaxHiddenSeqno: o.MaxHiddenSeqno.DeepCopy(),
1429		MaxMerkleProbe: o.MaxMerkleProbe.DeepCopy(),
1430	}
1431}
1432
1433type Probe struct {
1434	Index           int   `codec:"i" json:"i"`
1435	TeamSeqno       Seqno `codec:"s" json:"t"`
1436	TeamHiddenSeqno Seqno `codec:"h" json:"h"`
1437}
1438
1439func (o Probe) DeepCopy() Probe {
1440	return Probe{
1441		Index:           o.Index,
1442		TeamSeqno:       o.TeamSeqno.DeepCopy(),
1443		TeamHiddenSeqno: o.TeamHiddenSeqno.DeepCopy(),
1444	}
1445}
1446
1447type AuditVersion int
1448
1449const (
1450	AuditVersion_V0 AuditVersion = 0
1451	AuditVersion_V1 AuditVersion = 1
1452	AuditVersion_V2 AuditVersion = 2
1453	AuditVersion_V3 AuditVersion = 3
1454	AuditVersion_V4 AuditVersion = 4
1455)
1456
1457func (o AuditVersion) DeepCopy() AuditVersion { return o }
1458
1459var AuditVersionMap = map[string]AuditVersion{
1460	"V0": 0,
1461	"V1": 1,
1462	"V2": 2,
1463	"V3": 3,
1464	"V4": 4,
1465}
1466
1467var AuditVersionRevMap = map[AuditVersion]string{
1468	0: "V0",
1469	1: "V1",
1470	2: "V2",
1471	3: "V3",
1472	4: "V4",
1473}
1474
1475func (e AuditVersion) String() string {
1476	if v, ok := AuditVersionRevMap[e]; ok {
1477		return v
1478	}
1479	return fmt.Sprintf("%v", int(e))
1480}
1481
1482type AuditHistory struct {
1483	ID                TeamID           `codec:"ID" json:"ID"`
1484	Public            bool             `codec:"public" json:"public"`
1485	PriorMerkleSeqno  Seqno            `codec:"priorMerkleSeqno" json:"priorMerkleSeqno"`
1486	Version           AuditVersion     `codec:"version" json:"version"`
1487	Audits            []Audit          `codec:"audits" json:"audits"`
1488	PreProbes         map[Seqno]Probe  `codec:"preProbes" json:"preProbes"`
1489	PostProbes        map[Seqno]Probe  `codec:"postProbes" json:"postProbes"`
1490	Tails             map[Seqno]LinkID `codec:"tails" json:"tails"`
1491	HiddenTails       map[Seqno]LinkID `codec:"hiddenTails" json:"hiddenTails"`
1492	PreProbesToRetry  []Seqno          `codec:"preProbesToRetry" json:"preProbesToRetry"`
1493	PostProbesToRetry []Seqno          `codec:"postProbesToRetry" json:"postProbesToRetry"`
1494	SkipUntil         Time             `codec:"skipUntil" json:"skipUntil"`
1495}
1496
1497func (o AuditHistory) DeepCopy() AuditHistory {
1498	return AuditHistory{
1499		ID:               o.ID.DeepCopy(),
1500		Public:           o.Public,
1501		PriorMerkleSeqno: o.PriorMerkleSeqno.DeepCopy(),
1502		Version:          o.Version.DeepCopy(),
1503		Audits: (func(x []Audit) []Audit {
1504			if x == nil {
1505				return nil
1506			}
1507			ret := make([]Audit, len(x))
1508			for i, v := range x {
1509				vCopy := v.DeepCopy()
1510				ret[i] = vCopy
1511			}
1512			return ret
1513		})(o.Audits),
1514		PreProbes: (func(x map[Seqno]Probe) map[Seqno]Probe {
1515			if x == nil {
1516				return nil
1517			}
1518			ret := make(map[Seqno]Probe, len(x))
1519			for k, v := range x {
1520				kCopy := k.DeepCopy()
1521				vCopy := v.DeepCopy()
1522				ret[kCopy] = vCopy
1523			}
1524			return ret
1525		})(o.PreProbes),
1526		PostProbes: (func(x map[Seqno]Probe) map[Seqno]Probe {
1527			if x == nil {
1528				return nil
1529			}
1530			ret := make(map[Seqno]Probe, len(x))
1531			for k, v := range x {
1532				kCopy := k.DeepCopy()
1533				vCopy := v.DeepCopy()
1534				ret[kCopy] = vCopy
1535			}
1536			return ret
1537		})(o.PostProbes),
1538		Tails: (func(x map[Seqno]LinkID) map[Seqno]LinkID {
1539			if x == nil {
1540				return nil
1541			}
1542			ret := make(map[Seqno]LinkID, len(x))
1543			for k, v := range x {
1544				kCopy := k.DeepCopy()
1545				vCopy := v.DeepCopy()
1546				ret[kCopy] = vCopy
1547			}
1548			return ret
1549		})(o.Tails),
1550		HiddenTails: (func(x map[Seqno]LinkID) map[Seqno]LinkID {
1551			if x == nil {
1552				return nil
1553			}
1554			ret := make(map[Seqno]LinkID, len(x))
1555			for k, v := range x {
1556				kCopy := k.DeepCopy()
1557				vCopy := v.DeepCopy()
1558				ret[kCopy] = vCopy
1559			}
1560			return ret
1561		})(o.HiddenTails),
1562		PreProbesToRetry: (func(x []Seqno) []Seqno {
1563			if x == nil {
1564				return nil
1565			}
1566			ret := make([]Seqno, len(x))
1567			for i, v := range x {
1568				vCopy := v.DeepCopy()
1569				ret[i] = vCopy
1570			}
1571			return ret
1572		})(o.PreProbesToRetry),
1573		PostProbesToRetry: (func(x []Seqno) []Seqno {
1574			if x == nil {
1575				return nil
1576			}
1577			ret := make([]Seqno, len(x))
1578			for i, v := range x {
1579				vCopy := v.DeepCopy()
1580				ret[i] = vCopy
1581			}
1582			return ret
1583		})(o.PostProbesToRetry),
1584		SkipUntil: o.SkipUntil.DeepCopy(),
1585	}
1586}
1587
1588type TeamInviteCategory int
1589
1590const (
1591	TeamInviteCategory_NONE       TeamInviteCategory = 0
1592	TeamInviteCategory_UNKNOWN    TeamInviteCategory = 1
1593	TeamInviteCategory_KEYBASE    TeamInviteCategory = 2
1594	TeamInviteCategory_EMAIL      TeamInviteCategory = 3
1595	TeamInviteCategory_SBS        TeamInviteCategory = 4
1596	TeamInviteCategory_SEITAN     TeamInviteCategory = 5
1597	TeamInviteCategory_PHONE      TeamInviteCategory = 6
1598	TeamInviteCategory_INVITELINK TeamInviteCategory = 7
1599)
1600
1601func (o TeamInviteCategory) DeepCopy() TeamInviteCategory { return o }
1602
1603var TeamInviteCategoryMap = map[string]TeamInviteCategory{
1604	"NONE":       0,
1605	"UNKNOWN":    1,
1606	"KEYBASE":    2,
1607	"EMAIL":      3,
1608	"SBS":        4,
1609	"SEITAN":     5,
1610	"PHONE":      6,
1611	"INVITELINK": 7,
1612}
1613
1614var TeamInviteCategoryRevMap = map[TeamInviteCategory]string{
1615	0: "NONE",
1616	1: "UNKNOWN",
1617	2: "KEYBASE",
1618	3: "EMAIL",
1619	4: "SBS",
1620	5: "SEITAN",
1621	6: "PHONE",
1622	7: "INVITELINK",
1623}
1624
1625func (e TeamInviteCategory) String() string {
1626	if v, ok := TeamInviteCategoryRevMap[e]; ok {
1627		return v
1628	}
1629	return fmt.Sprintf("%v", int(e))
1630}
1631
1632type TeamInviteType struct {
1633	C__       TeamInviteCategory       `codec:"c" json:"c"`
1634	Unknown__ *string                  `codec:"unknown,omitempty" json:"unknown,omitempty"`
1635	Sbs__     *TeamInviteSocialNetwork `codec:"sbs,omitempty" json:"sbs,omitempty"`
1636}
1637
1638func (o *TeamInviteType) C() (ret TeamInviteCategory, err error) {
1639	switch o.C__ {
1640	case TeamInviteCategory_UNKNOWN:
1641		if o.Unknown__ == nil {
1642			err = errors.New("unexpected nil value for Unknown__")
1643			return ret, err
1644		}
1645	case TeamInviteCategory_SBS:
1646		if o.Sbs__ == nil {
1647			err = errors.New("unexpected nil value for Sbs__")
1648			return ret, err
1649		}
1650	}
1651	return o.C__, nil
1652}
1653
1654func (o TeamInviteType) Unknown() (res string) {
1655	if o.C__ != TeamInviteCategory_UNKNOWN {
1656		panic("wrong case accessed")
1657	}
1658	if o.Unknown__ == nil {
1659		return
1660	}
1661	return *o.Unknown__
1662}
1663
1664func (o TeamInviteType) Sbs() (res TeamInviteSocialNetwork) {
1665	if o.C__ != TeamInviteCategory_SBS {
1666		panic("wrong case accessed")
1667	}
1668	if o.Sbs__ == nil {
1669		return
1670	}
1671	return *o.Sbs__
1672}
1673
1674func NewTeamInviteTypeWithUnknown(v string) TeamInviteType {
1675	return TeamInviteType{
1676		C__:       TeamInviteCategory_UNKNOWN,
1677		Unknown__: &v,
1678	}
1679}
1680
1681func NewTeamInviteTypeWithSbs(v TeamInviteSocialNetwork) TeamInviteType {
1682	return TeamInviteType{
1683		C__:   TeamInviteCategory_SBS,
1684		Sbs__: &v,
1685	}
1686}
1687
1688func NewTeamInviteTypeDefault(c TeamInviteCategory) TeamInviteType {
1689	return TeamInviteType{
1690		C__: c,
1691	}
1692}
1693
1694func (o TeamInviteType) DeepCopy() TeamInviteType {
1695	return TeamInviteType{
1696		C__: o.C__.DeepCopy(),
1697		Unknown__: (func(x *string) *string {
1698			if x == nil {
1699				return nil
1700			}
1701			tmp := (*x)
1702			return &tmp
1703		})(o.Unknown__),
1704		Sbs__: (func(x *TeamInviteSocialNetwork) *TeamInviteSocialNetwork {
1705			if x == nil {
1706				return nil
1707			}
1708			tmp := (*x).DeepCopy()
1709			return &tmp
1710		})(o.Sbs__),
1711	}
1712}
1713
1714type TeamInviteSocialNetwork string
1715
1716func (o TeamInviteSocialNetwork) DeepCopy() TeamInviteSocialNetwork {
1717	return o
1718}
1719
1720type TeamInviteName string
1721
1722func (o TeamInviteName) DeepCopy() TeamInviteName {
1723	return o
1724}
1725
1726type TeamInviteDisplayName string
1727
1728func (o TeamInviteDisplayName) DeepCopy() TeamInviteDisplayName {
1729	return o
1730}
1731
1732type TeamInvite struct {
1733	Role    TeamRole           `codec:"role" json:"role"`
1734	Id      TeamInviteID       `codec:"id" json:"id"`
1735	Type    TeamInviteType     `codec:"type" json:"type"`
1736	Name    TeamInviteName     `codec:"name" json:"name"`
1737	Inviter UserVersion        `codec:"inviter" json:"inviter"`
1738	MaxUses *TeamInviteMaxUses `codec:"maxUses,omitempty" json:"maxUses,omitempty"`
1739	Etime   *UnixTime          `codec:"etime,omitempty" json:"etime,omitempty"`
1740}
1741
1742func (o TeamInvite) DeepCopy() TeamInvite {
1743	return TeamInvite{
1744		Role:    o.Role.DeepCopy(),
1745		Id:      o.Id.DeepCopy(),
1746		Type:    o.Type.DeepCopy(),
1747		Name:    o.Name.DeepCopy(),
1748		Inviter: o.Inviter.DeepCopy(),
1749		MaxUses: (func(x *TeamInviteMaxUses) *TeamInviteMaxUses {
1750			if x == nil {
1751				return nil
1752			}
1753			tmp := (*x).DeepCopy()
1754			return &tmp
1755		})(o.MaxUses),
1756		Etime: (func(x *UnixTime) *UnixTime {
1757			if x == nil {
1758				return nil
1759			}
1760			tmp := (*x).DeepCopy()
1761			return &tmp
1762		})(o.Etime),
1763	}
1764}
1765
1766type AnnotatedTeamInvite struct {
1767	InviteMetadata       TeamInviteMetadata                `codec:"inviteMetadata" json:"inviteMetadata"`
1768	DisplayName          TeamInviteDisplayName             `codec:"displayName" json:"displayName"`
1769	InviterUsername      string                            `codec:"inviterUsername" json:"inviterUsername"`
1770	InviteeUv            UserVersion                       `codec:"inviteeUv" json:"inviteeUv"`
1771	TeamName             string                            `codec:"teamName" json:"teamName"`
1772	Status               *TeamMemberStatus                 `codec:"status,omitempty" json:"status,omitempty"`
1773	AnnotatedUsedInvites []AnnotatedTeamUsedInviteLogPoint `codec:"annotatedUsedInvites" json:"annotatedUsedInvites"`
1774}
1775
1776func (o AnnotatedTeamInvite) DeepCopy() AnnotatedTeamInvite {
1777	return AnnotatedTeamInvite{
1778		InviteMetadata:  o.InviteMetadata.DeepCopy(),
1779		DisplayName:     o.DisplayName.DeepCopy(),
1780		InviterUsername: o.InviterUsername,
1781		InviteeUv:       o.InviteeUv.DeepCopy(),
1782		TeamName:        o.TeamName,
1783		Status: (func(x *TeamMemberStatus) *TeamMemberStatus {
1784			if x == nil {
1785				return nil
1786			}
1787			tmp := (*x).DeepCopy()
1788			return &tmp
1789		})(o.Status),
1790		AnnotatedUsedInvites: (func(x []AnnotatedTeamUsedInviteLogPoint) []AnnotatedTeamUsedInviteLogPoint {
1791			if x == nil {
1792				return nil
1793			}
1794			ret := make([]AnnotatedTeamUsedInviteLogPoint, len(x))
1795			for i, v := range x {
1796				vCopy := v.DeepCopy()
1797				ret[i] = vCopy
1798			}
1799			return ret
1800		})(o.AnnotatedUsedInvites),
1801	}
1802}
1803
1804type TeamEncryptedKBFSKeyset struct {
1805	V int    `codec:"v" json:"v"`
1806	E []byte `codec:"e" json:"e"`
1807	N []byte `codec:"n" json:"n"`
1808}
1809
1810func (o TeamEncryptedKBFSKeyset) DeepCopy() TeamEncryptedKBFSKeyset {
1811	return TeamEncryptedKBFSKeyset{
1812		V: o.V,
1813		E: (func(x []byte) []byte {
1814			if x == nil {
1815				return nil
1816			}
1817			return append([]byte{}, x...)
1818		})(o.E),
1819		N: (func(x []byte) []byte {
1820			if x == nil {
1821				return nil
1822			}
1823			return append([]byte{}, x...)
1824		})(o.N),
1825	}
1826}
1827
1828type TeamGetLegacyTLFUpgrade struct {
1829	EncryptedKeyset  string               `codec:"encryptedKeyset" json:"encrypted_keyset"`
1830	TeamGeneration   PerTeamKeyGeneration `codec:"teamGeneration" json:"team_generation"`
1831	LegacyGeneration int                  `codec:"legacyGeneration" json:"legacy_generation"`
1832	AppType          TeamApplication      `codec:"appType" json:"app_type"`
1833}
1834
1835func (o TeamGetLegacyTLFUpgrade) DeepCopy() TeamGetLegacyTLFUpgrade {
1836	return TeamGetLegacyTLFUpgrade{
1837		EncryptedKeyset:  o.EncryptedKeyset,
1838		TeamGeneration:   o.TeamGeneration.DeepCopy(),
1839		LegacyGeneration: o.LegacyGeneration,
1840		AppType:          o.AppType.DeepCopy(),
1841	}
1842}
1843
1844type TeamEncryptedKBFSKeysetHash string
1845
1846func (o TeamEncryptedKBFSKeysetHash) DeepCopy() TeamEncryptedKBFSKeysetHash {
1847	return o
1848}
1849
1850type TeamLegacyTLFUpgradeChainInfo struct {
1851	KeysetHash       TeamEncryptedKBFSKeysetHash `codec:"keysetHash" json:"keysetHash"`
1852	TeamGeneration   PerTeamKeyGeneration        `codec:"teamGeneration" json:"teamGeneration"`
1853	LegacyGeneration int                         `codec:"legacyGeneration" json:"legacyGeneration"`
1854	AppType          TeamApplication             `codec:"appType" json:"appType"`
1855}
1856
1857func (o TeamLegacyTLFUpgradeChainInfo) DeepCopy() TeamLegacyTLFUpgradeChainInfo {
1858	return TeamLegacyTLFUpgradeChainInfo{
1859		KeysetHash:       o.KeysetHash.DeepCopy(),
1860		TeamGeneration:   o.TeamGeneration.DeepCopy(),
1861		LegacyGeneration: o.LegacyGeneration,
1862		AppType:          o.AppType.DeepCopy(),
1863	}
1864}
1865
1866type TeamSignatureMetadata struct {
1867	SigMeta SignatureMetadata `codec:"sigMeta" json:"sigMeta"`
1868	Uv      UserVersion       `codec:"uv" json:"uv"`
1869}
1870
1871func (o TeamSignatureMetadata) DeepCopy() TeamSignatureMetadata {
1872	return TeamSignatureMetadata{
1873		SigMeta: o.SigMeta.DeepCopy(),
1874		Uv:      o.Uv.DeepCopy(),
1875	}
1876}
1877
1878type TeamInviteMetadataCancel struct {
1879	TeamSigMeta TeamSignatureMetadata `codec:"teamSigMeta" json:"teamSigMeta"`
1880}
1881
1882func (o TeamInviteMetadataCancel) DeepCopy() TeamInviteMetadataCancel {
1883	return TeamInviteMetadataCancel{
1884		TeamSigMeta: o.TeamSigMeta.DeepCopy(),
1885	}
1886}
1887
1888type TeamInviteMetadataCompleted struct {
1889	TeamSigMeta TeamSignatureMetadata `codec:"teamSigMeta" json:"teamSigMeta"`
1890}
1891
1892func (o TeamInviteMetadataCompleted) DeepCopy() TeamInviteMetadataCompleted {
1893	return TeamInviteMetadataCompleted{
1894		TeamSigMeta: o.TeamSigMeta.DeepCopy(),
1895	}
1896}
1897
1898type TeamInviteMetadataStatusCode int
1899
1900const (
1901	TeamInviteMetadataStatusCode_ACTIVE    TeamInviteMetadataStatusCode = 0
1902	TeamInviteMetadataStatusCode_OBSOLETE  TeamInviteMetadataStatusCode = 1
1903	TeamInviteMetadataStatusCode_CANCELLED TeamInviteMetadataStatusCode = 2
1904	TeamInviteMetadataStatusCode_COMPLETED TeamInviteMetadataStatusCode = 3
1905)
1906
1907func (o TeamInviteMetadataStatusCode) DeepCopy() TeamInviteMetadataStatusCode { return o }
1908
1909var TeamInviteMetadataStatusCodeMap = map[string]TeamInviteMetadataStatusCode{
1910	"ACTIVE":    0,
1911	"OBSOLETE":  1,
1912	"CANCELLED": 2,
1913	"COMPLETED": 3,
1914}
1915
1916var TeamInviteMetadataStatusCodeRevMap = map[TeamInviteMetadataStatusCode]string{
1917	0: "ACTIVE",
1918	1: "OBSOLETE",
1919	2: "CANCELLED",
1920	3: "COMPLETED",
1921}
1922
1923func (e TeamInviteMetadataStatusCode) String() string {
1924	if v, ok := TeamInviteMetadataStatusCodeRevMap[e]; ok {
1925		return v
1926	}
1927	return fmt.Sprintf("%v", int(e))
1928}
1929
1930type TeamInviteMetadataStatus struct {
1931	Code__      TeamInviteMetadataStatusCode `codec:"code" json:"code"`
1932	Cancelled__ *TeamInviteMetadataCancel    `codec:"cancelled,omitempty" json:"cancelled,omitempty"`
1933	Completed__ *TeamInviteMetadataCompleted `codec:"completed,omitempty" json:"completed,omitempty"`
1934}
1935
1936func (o *TeamInviteMetadataStatus) Code() (ret TeamInviteMetadataStatusCode, err error) {
1937	switch o.Code__ {
1938	case TeamInviteMetadataStatusCode_CANCELLED:
1939		if o.Cancelled__ == nil {
1940			err = errors.New("unexpected nil value for Cancelled__")
1941			return ret, err
1942		}
1943	case TeamInviteMetadataStatusCode_COMPLETED:
1944		if o.Completed__ == nil {
1945			err = errors.New("unexpected nil value for Completed__")
1946			return ret, err
1947		}
1948	}
1949	return o.Code__, nil
1950}
1951
1952func (o TeamInviteMetadataStatus) Cancelled() (res TeamInviteMetadataCancel) {
1953	if o.Code__ != TeamInviteMetadataStatusCode_CANCELLED {
1954		panic("wrong case accessed")
1955	}
1956	if o.Cancelled__ == nil {
1957		return
1958	}
1959	return *o.Cancelled__
1960}
1961
1962func (o TeamInviteMetadataStatus) Completed() (res TeamInviteMetadataCompleted) {
1963	if o.Code__ != TeamInviteMetadataStatusCode_COMPLETED {
1964		panic("wrong case accessed")
1965	}
1966	if o.Completed__ == nil {
1967		return
1968	}
1969	return *o.Completed__
1970}
1971
1972func NewTeamInviteMetadataStatusWithActive() TeamInviteMetadataStatus {
1973	return TeamInviteMetadataStatus{
1974		Code__: TeamInviteMetadataStatusCode_ACTIVE,
1975	}
1976}
1977
1978func NewTeamInviteMetadataStatusWithObsolete() TeamInviteMetadataStatus {
1979	return TeamInviteMetadataStatus{
1980		Code__: TeamInviteMetadataStatusCode_OBSOLETE,
1981	}
1982}
1983
1984func NewTeamInviteMetadataStatusWithCancelled(v TeamInviteMetadataCancel) TeamInviteMetadataStatus {
1985	return TeamInviteMetadataStatus{
1986		Code__:      TeamInviteMetadataStatusCode_CANCELLED,
1987		Cancelled__: &v,
1988	}
1989}
1990
1991func NewTeamInviteMetadataStatusWithCompleted(v TeamInviteMetadataCompleted) TeamInviteMetadataStatus {
1992	return TeamInviteMetadataStatus{
1993		Code__:      TeamInviteMetadataStatusCode_COMPLETED,
1994		Completed__: &v,
1995	}
1996}
1997
1998func (o TeamInviteMetadataStatus) DeepCopy() TeamInviteMetadataStatus {
1999	return TeamInviteMetadataStatus{
2000		Code__: o.Code__.DeepCopy(),
2001		Cancelled__: (func(x *TeamInviteMetadataCancel) *TeamInviteMetadataCancel {
2002			if x == nil {
2003				return nil
2004			}
2005			tmp := (*x).DeepCopy()
2006			return &tmp
2007		})(o.Cancelled__),
2008		Completed__: (func(x *TeamInviteMetadataCompleted) *TeamInviteMetadataCompleted {
2009			if x == nil {
2010				return nil
2011			}
2012			tmp := (*x).DeepCopy()
2013			return &tmp
2014		})(o.Completed__),
2015	}
2016}
2017
2018type TeamInviteMetadata struct {
2019	Invite      TeamInvite               `codec:"invite" json:"invite"`
2020	TeamSigMeta TeamSignatureMetadata    `codec:"teamSigMeta" json:"teamSigMeta"`
2021	Status      TeamInviteMetadataStatus `codec:"status" json:"status"`
2022	UsedInvites []TeamUsedInviteLogPoint `codec:"usedInvites" json:"usedInvites"`
2023}
2024
2025func (o TeamInviteMetadata) DeepCopy() TeamInviteMetadata {
2026	return TeamInviteMetadata{
2027		Invite:      o.Invite.DeepCopy(),
2028		TeamSigMeta: o.TeamSigMeta.DeepCopy(),
2029		Status:      o.Status.DeepCopy(),
2030		UsedInvites: (func(x []TeamUsedInviteLogPoint) []TeamUsedInviteLogPoint {
2031			if x == nil {
2032				return nil
2033			}
2034			ret := make([]TeamUsedInviteLogPoint, len(x))
2035			for i, v := range x {
2036				vCopy := v.DeepCopy()
2037				ret[i] = vCopy
2038			}
2039			return ret
2040		})(o.UsedInvites),
2041	}
2042}
2043
2044type TeamSigChainState struct {
2045	Reader                  UserVersion                                       `codec:"reader" json:"reader"`
2046	Id                      TeamID                                            `codec:"id" json:"id"`
2047	Implicit                bool                                              `codec:"implicit" json:"implicit"`
2048	Public                  bool                                              `codec:"public" json:"public"`
2049	RootAncestor            TeamName                                          `codec:"rootAncestor" json:"rootAncestor"`
2050	NameDepth               int                                               `codec:"nameDepth" json:"nameDepth"`
2051	NameLog                 []TeamNameLogPoint                                `codec:"nameLog" json:"nameLog"`
2052	LastSeqno               Seqno                                             `codec:"lastSeqno" json:"lastSeqno"`
2053	LastLinkID              LinkID                                            `codec:"lastLinkID" json:"lastLinkID"`
2054	LastHighSeqno           Seqno                                             `codec:"lastHighSeqno" json:"lastHighSeqno"`
2055	LastHighLinkID          LinkID                                            `codec:"lastHighLinkID" json:"lastHighLinkID"`
2056	ParentID                *TeamID                                           `codec:"parentID,omitempty" json:"parentID,omitempty"`
2057	UserLog                 map[UserVersion][]UserLogPoint                    `codec:"userLog" json:"userLog"`
2058	SubteamLog              map[TeamID][]SubteamLogPoint                      `codec:"subteamLog" json:"subteamLog"`
2059	PerTeamKeys             map[PerTeamKeyGeneration]PerTeamKey               `codec:"perTeamKeys" json:"perTeamKeys"`
2060	MaxPerTeamKeyGeneration PerTeamKeyGeneration                              `codec:"maxPerTeamKeyGeneration" json:"maxPerTeamKeyGeneration"`
2061	PerTeamKeyCTime         UnixTime                                          `codec:"perTeamKeyCTime" json:"perTeamKeyCTime"`
2062	LinkIDs                 map[Seqno]LinkID                                  `codec:"linkIDs" json:"linkIDs"`
2063	StubbedLinks            map[Seqno]bool                                    `codec:"stubbedLinks" json:"stubbedLinks"`
2064	InviteMetadatas         map[TeamInviteID]TeamInviteMetadata               `codec:"inviteMetadatas" json:"inviteMetadatas"`
2065	Open                    bool                                              `codec:"open" json:"open"`
2066	OpenTeamJoinAs          TeamRole                                          `codec:"openTeamJoinAs" json:"openTeamJoinAs"`
2067	Bots                    map[UserVersion]TeamBotSettings                   `codec:"bots" json:"bots"`
2068	TlfIDs                  []TLFID                                           `codec:"tlfIDs" json:"tlfIDs"`
2069	TlfLegacyUpgrade        map[TeamApplication]TeamLegacyTLFUpgradeChainInfo `codec:"tlfLegacyUpgrade" json:"tlfLegacyUpgrade"`
2070	HeadMerkle              *MerkleRootV2                                     `codec:"headMerkle,omitempty" json:"headMerkle,omitempty"`
2071	MerkleRoots             map[Seqno]MerkleRootV2                            `codec:"merkleRoots" json:"merkleRoots"`
2072}
2073
2074func (o TeamSigChainState) DeepCopy() TeamSigChainState {
2075	return TeamSigChainState{
2076		Reader:       o.Reader.DeepCopy(),
2077		Id:           o.Id.DeepCopy(),
2078		Implicit:     o.Implicit,
2079		Public:       o.Public,
2080		RootAncestor: o.RootAncestor.DeepCopy(),
2081		NameDepth:    o.NameDepth,
2082		NameLog: (func(x []TeamNameLogPoint) []TeamNameLogPoint {
2083			if x == nil {
2084				return nil
2085			}
2086			ret := make([]TeamNameLogPoint, len(x))
2087			for i, v := range x {
2088				vCopy := v.DeepCopy()
2089				ret[i] = vCopy
2090			}
2091			return ret
2092		})(o.NameLog),
2093		LastSeqno:      o.LastSeqno.DeepCopy(),
2094		LastLinkID:     o.LastLinkID.DeepCopy(),
2095		LastHighSeqno:  o.LastHighSeqno.DeepCopy(),
2096		LastHighLinkID: o.LastHighLinkID.DeepCopy(),
2097		ParentID: (func(x *TeamID) *TeamID {
2098			if x == nil {
2099				return nil
2100			}
2101			tmp := (*x).DeepCopy()
2102			return &tmp
2103		})(o.ParentID),
2104		UserLog: (func(x map[UserVersion][]UserLogPoint) map[UserVersion][]UserLogPoint {
2105			if x == nil {
2106				return nil
2107			}
2108			ret := make(map[UserVersion][]UserLogPoint, len(x))
2109			for k, v := range x {
2110				kCopy := k.DeepCopy()
2111				vCopy := (func(x []UserLogPoint) []UserLogPoint {
2112					if x == nil {
2113						return nil
2114					}
2115					ret := make([]UserLogPoint, len(x))
2116					for i, v := range x {
2117						vCopy := v.DeepCopy()
2118						ret[i] = vCopy
2119					}
2120					return ret
2121				})(v)
2122				ret[kCopy] = vCopy
2123			}
2124			return ret
2125		})(o.UserLog),
2126		SubteamLog: (func(x map[TeamID][]SubteamLogPoint) map[TeamID][]SubteamLogPoint {
2127			if x == nil {
2128				return nil
2129			}
2130			ret := make(map[TeamID][]SubteamLogPoint, len(x))
2131			for k, v := range x {
2132				kCopy := k.DeepCopy()
2133				vCopy := (func(x []SubteamLogPoint) []SubteamLogPoint {
2134					if x == nil {
2135						return nil
2136					}
2137					ret := make([]SubteamLogPoint, len(x))
2138					for i, v := range x {
2139						vCopy := v.DeepCopy()
2140						ret[i] = vCopy
2141					}
2142					return ret
2143				})(v)
2144				ret[kCopy] = vCopy
2145			}
2146			return ret
2147		})(o.SubteamLog),
2148		PerTeamKeys: (func(x map[PerTeamKeyGeneration]PerTeamKey) map[PerTeamKeyGeneration]PerTeamKey {
2149			if x == nil {
2150				return nil
2151			}
2152			ret := make(map[PerTeamKeyGeneration]PerTeamKey, len(x))
2153			for k, v := range x {
2154				kCopy := k.DeepCopy()
2155				vCopy := v.DeepCopy()
2156				ret[kCopy] = vCopy
2157			}
2158			return ret
2159		})(o.PerTeamKeys),
2160		MaxPerTeamKeyGeneration: o.MaxPerTeamKeyGeneration.DeepCopy(),
2161		PerTeamKeyCTime:         o.PerTeamKeyCTime.DeepCopy(),
2162		LinkIDs: (func(x map[Seqno]LinkID) map[Seqno]LinkID {
2163			if x == nil {
2164				return nil
2165			}
2166			ret := make(map[Seqno]LinkID, len(x))
2167			for k, v := range x {
2168				kCopy := k.DeepCopy()
2169				vCopy := v.DeepCopy()
2170				ret[kCopy] = vCopy
2171			}
2172			return ret
2173		})(o.LinkIDs),
2174		StubbedLinks: (func(x map[Seqno]bool) map[Seqno]bool {
2175			if x == nil {
2176				return nil
2177			}
2178			ret := make(map[Seqno]bool, len(x))
2179			for k, v := range x {
2180				kCopy := k.DeepCopy()
2181				vCopy := v
2182				ret[kCopy] = vCopy
2183			}
2184			return ret
2185		})(o.StubbedLinks),
2186		InviteMetadatas: (func(x map[TeamInviteID]TeamInviteMetadata) map[TeamInviteID]TeamInviteMetadata {
2187			if x == nil {
2188				return nil
2189			}
2190			ret := make(map[TeamInviteID]TeamInviteMetadata, len(x))
2191			for k, v := range x {
2192				kCopy := k.DeepCopy()
2193				vCopy := v.DeepCopy()
2194				ret[kCopy] = vCopy
2195			}
2196			return ret
2197		})(o.InviteMetadatas),
2198		Open:           o.Open,
2199		OpenTeamJoinAs: o.OpenTeamJoinAs.DeepCopy(),
2200		Bots: (func(x map[UserVersion]TeamBotSettings) map[UserVersion]TeamBotSettings {
2201			if x == nil {
2202				return nil
2203			}
2204			ret := make(map[UserVersion]TeamBotSettings, len(x))
2205			for k, v := range x {
2206				kCopy := k.DeepCopy()
2207				vCopy := v.DeepCopy()
2208				ret[kCopy] = vCopy
2209			}
2210			return ret
2211		})(o.Bots),
2212		TlfIDs: (func(x []TLFID) []TLFID {
2213			if x == nil {
2214				return nil
2215			}
2216			ret := make([]TLFID, len(x))
2217			for i, v := range x {
2218				vCopy := v.DeepCopy()
2219				ret[i] = vCopy
2220			}
2221			return ret
2222		})(o.TlfIDs),
2223		TlfLegacyUpgrade: (func(x map[TeamApplication]TeamLegacyTLFUpgradeChainInfo) map[TeamApplication]TeamLegacyTLFUpgradeChainInfo {
2224			if x == nil {
2225				return nil
2226			}
2227			ret := make(map[TeamApplication]TeamLegacyTLFUpgradeChainInfo, len(x))
2228			for k, v := range x {
2229				kCopy := k.DeepCopy()
2230				vCopy := v.DeepCopy()
2231				ret[kCopy] = vCopy
2232			}
2233			return ret
2234		})(o.TlfLegacyUpgrade),
2235		HeadMerkle: (func(x *MerkleRootV2) *MerkleRootV2 {
2236			if x == nil {
2237				return nil
2238			}
2239			tmp := (*x).DeepCopy()
2240			return &tmp
2241		})(o.HeadMerkle),
2242		MerkleRoots: (func(x map[Seqno]MerkleRootV2) map[Seqno]MerkleRootV2 {
2243			if x == nil {
2244				return nil
2245			}
2246			ret := make(map[Seqno]MerkleRootV2, len(x))
2247			for k, v := range x {
2248				kCopy := k.DeepCopy()
2249				vCopy := v.DeepCopy()
2250				ret[kCopy] = vCopy
2251			}
2252			return ret
2253		})(o.MerkleRoots),
2254	}
2255}
2256
2257type BoxSummaryHash string
2258
2259func (o BoxSummaryHash) DeepCopy() BoxSummaryHash {
2260	return o
2261}
2262
2263type TeamNameLogPoint struct {
2264	LastPart TeamNamePart `codec:"lastPart" json:"lastPart"`
2265	Seqno    Seqno        `codec:"seqno" json:"seqno"`
2266}
2267
2268func (o TeamNameLogPoint) DeepCopy() TeamNameLogPoint {
2269	return TeamNameLogPoint{
2270		LastPart: o.LastPart.DeepCopy(),
2271		Seqno:    o.Seqno.DeepCopy(),
2272	}
2273}
2274
2275type UserLogPoint struct {
2276	Role    TeamRole          `codec:"role" json:"role"`
2277	SigMeta SignatureMetadata `codec:"sigMeta" json:"sigMeta"`
2278}
2279
2280func (o UserLogPoint) DeepCopy() UserLogPoint {
2281	return UserLogPoint{
2282		Role:    o.Role.DeepCopy(),
2283		SigMeta: o.SigMeta.DeepCopy(),
2284	}
2285}
2286
2287type AnnotatedTeamUsedInviteLogPoint struct {
2288	Username               string                 `codec:"username" json:"username"`
2289	TeamUsedInviteLogPoint TeamUsedInviteLogPoint `codec:"teamUsedInviteLogPoint" json:"teamUsedInviteLogPoint"`
2290}
2291
2292func (o AnnotatedTeamUsedInviteLogPoint) DeepCopy() AnnotatedTeamUsedInviteLogPoint {
2293	return AnnotatedTeamUsedInviteLogPoint{
2294		Username:               o.Username,
2295		TeamUsedInviteLogPoint: o.TeamUsedInviteLogPoint.DeepCopy(),
2296	}
2297}
2298
2299type TeamUsedInviteLogPoint struct {
2300	Uv       UserVersion `codec:"uv" json:"uv"`
2301	LogPoint int         `codec:"logPoint" json:"logPoint"`
2302}
2303
2304func (o TeamUsedInviteLogPoint) DeepCopy() TeamUsedInviteLogPoint {
2305	return TeamUsedInviteLogPoint{
2306		Uv:       o.Uv.DeepCopy(),
2307		LogPoint: o.LogPoint,
2308	}
2309}
2310
2311type SubteamLogPoint struct {
2312	Name  TeamName `codec:"name" json:"name"`
2313	Seqno Seqno    `codec:"seqno" json:"seqno"`
2314}
2315
2316func (o SubteamLogPoint) DeepCopy() SubteamLogPoint {
2317	return SubteamLogPoint{
2318		Name:  o.Name.DeepCopy(),
2319		Seqno: o.Seqno.DeepCopy(),
2320	}
2321}
2322
2323type TeamNamePart string
2324
2325func (o TeamNamePart) DeepCopy() TeamNamePart {
2326	return o
2327}
2328
2329type TeamName struct {
2330	Parts []TeamNamePart `codec:"parts" json:"parts"`
2331}
2332
2333func (o TeamName) DeepCopy() TeamName {
2334	return TeamName{
2335		Parts: (func(x []TeamNamePart) []TeamNamePart {
2336			if x == nil {
2337				return nil
2338			}
2339			ret := make([]TeamNamePart, len(x))
2340			for i, v := range x {
2341				vCopy := v.DeepCopy()
2342				ret[i] = vCopy
2343			}
2344			return ret
2345		})(o.Parts),
2346	}
2347}
2348
2349type TeamCLKRResetUser struct {
2350	Uid               UID   `codec:"uid" json:"uid"`
2351	UserEldestSeqno   Seqno `codec:"userEldestSeqno" json:"user_eldest"`
2352	MemberEldestSeqno Seqno `codec:"memberEldestSeqno" json:"member_eldest"`
2353}
2354
2355func (o TeamCLKRResetUser) DeepCopy() TeamCLKRResetUser {
2356	return TeamCLKRResetUser{
2357		Uid:               o.Uid.DeepCopy(),
2358		UserEldestSeqno:   o.UserEldestSeqno.DeepCopy(),
2359		MemberEldestSeqno: o.MemberEldestSeqno.DeepCopy(),
2360	}
2361}
2362
2363type TeamCLKRMsg struct {
2364	TeamID              TeamID               `codec:"teamID" json:"team_id"`
2365	Generation          PerTeamKeyGeneration `codec:"generation" json:"generation"`
2366	Score               int                  `codec:"score" json:"score"`
2367	ResetUsersUntrusted []TeamCLKRResetUser  `codec:"resetUsersUntrusted" json:"reset_users"`
2368}
2369
2370func (o TeamCLKRMsg) DeepCopy() TeamCLKRMsg {
2371	return TeamCLKRMsg{
2372		TeamID:     o.TeamID.DeepCopy(),
2373		Generation: o.Generation.DeepCopy(),
2374		Score:      o.Score,
2375		ResetUsersUntrusted: (func(x []TeamCLKRResetUser) []TeamCLKRResetUser {
2376			if x == nil {
2377				return nil
2378			}
2379			ret := make([]TeamCLKRResetUser, len(x))
2380			for i, v := range x {
2381				vCopy := v.DeepCopy()
2382				ret[i] = vCopy
2383			}
2384			return ret
2385		})(o.ResetUsersUntrusted),
2386	}
2387}
2388
2389type TeamResetUser struct {
2390	Username    string `codec:"username" json:"username"`
2391	Uid         UID    `codec:"uid" json:"uid"`
2392	EldestSeqno Seqno  `codec:"eldestSeqno" json:"eldest_seqno"`
2393	IsDelete    bool   `codec:"isDelete" json:"is_delete"`
2394}
2395
2396func (o TeamResetUser) DeepCopy() TeamResetUser {
2397	return TeamResetUser{
2398		Username:    o.Username,
2399		Uid:         o.Uid.DeepCopy(),
2400		EldestSeqno: o.EldestSeqno.DeepCopy(),
2401		IsDelete:    o.IsDelete,
2402	}
2403}
2404
2405type TeamMemberOutFromReset struct {
2406	TeamID    TeamID        `codec:"teamID" json:"team_id"`
2407	TeamName  string        `codec:"teamName" json:"team_name"`
2408	ResetUser TeamResetUser `codec:"resetUser" json:"reset_user"`
2409}
2410
2411func (o TeamMemberOutFromReset) DeepCopy() TeamMemberOutFromReset {
2412	return TeamMemberOutFromReset{
2413		TeamID:    o.TeamID.DeepCopy(),
2414		TeamName:  o.TeamName,
2415		ResetUser: o.ResetUser.DeepCopy(),
2416	}
2417}
2418
2419type TeamChangeRow struct {
2420	Id                  TeamID `codec:"id" json:"id"`
2421	Name                string `codec:"name" json:"name"`
2422	KeyRotated          bool   `codec:"keyRotated" json:"key_rotated"`
2423	MembershipChanged   bool   `codec:"membershipChanged" json:"membership_changed"`
2424	LatestSeqno         Seqno  `codec:"latestSeqno" json:"latest_seqno"`
2425	LatestHiddenSeqno   Seqno  `codec:"latestHiddenSeqno" json:"latest_hidden_seqno"`
2426	LatestOffchainSeqno Seqno  `codec:"latestOffchainSeqno" json:"latest_offchain_version"`
2427	ImplicitTeam        bool   `codec:"implicitTeam" json:"implicit_team"`
2428	Misc                bool   `codec:"misc" json:"misc"`
2429	RemovedResetUsers   bool   `codec:"removedResetUsers" json:"removed_reset_users"`
2430}
2431
2432func (o TeamChangeRow) DeepCopy() TeamChangeRow {
2433	return TeamChangeRow{
2434		Id:                  o.Id.DeepCopy(),
2435		Name:                o.Name,
2436		KeyRotated:          o.KeyRotated,
2437		MembershipChanged:   o.MembershipChanged,
2438		LatestSeqno:         o.LatestSeqno.DeepCopy(),
2439		LatestHiddenSeqno:   o.LatestHiddenSeqno.DeepCopy(),
2440		LatestOffchainSeqno: o.LatestOffchainSeqno.DeepCopy(),
2441		ImplicitTeam:        o.ImplicitTeam,
2442		Misc:                o.Misc,
2443		RemovedResetUsers:   o.RemovedResetUsers,
2444	}
2445}
2446
2447type TeamExitRow struct {
2448	Id TeamID `codec:"id" json:"id"`
2449}
2450
2451func (o TeamExitRow) DeepCopy() TeamExitRow {
2452	return TeamExitRow{
2453		Id: o.Id.DeepCopy(),
2454	}
2455}
2456
2457type TeamNewlyAddedRow struct {
2458	Id   TeamID `codec:"id" json:"id"`
2459	Name string `codec:"name" json:"name"`
2460}
2461
2462func (o TeamNewlyAddedRow) DeepCopy() TeamNewlyAddedRow {
2463	return TeamNewlyAddedRow{
2464		Id:   o.Id.DeepCopy(),
2465		Name: o.Name,
2466	}
2467}
2468
2469type TeamInvitee struct {
2470	InviteID    TeamInviteID `codec:"inviteID" json:"invite_id"`
2471	Uid         UID          `codec:"uid" json:"uid"`
2472	EldestSeqno Seqno        `codec:"eldestSeqno" json:"eldest_seqno"`
2473	Role        TeamRole     `codec:"role" json:"role"`
2474}
2475
2476func (o TeamInvitee) DeepCopy() TeamInvitee {
2477	return TeamInvitee{
2478		InviteID:    o.InviteID.DeepCopy(),
2479		Uid:         o.Uid.DeepCopy(),
2480		EldestSeqno: o.EldestSeqno.DeepCopy(),
2481		Role:        o.Role.DeepCopy(),
2482	}
2483}
2484
2485type TeamSBSMsg struct {
2486	TeamID   TeamID        `codec:"teamID" json:"team_id"`
2487	Score    int           `codec:"score" json:"score"`
2488	Invitees []TeamInvitee `codec:"invitees" json:"invitees"`
2489}
2490
2491func (o TeamSBSMsg) DeepCopy() TeamSBSMsg {
2492	return TeamSBSMsg{
2493		TeamID: o.TeamID.DeepCopy(),
2494		Score:  o.Score,
2495		Invitees: (func(x []TeamInvitee) []TeamInvitee {
2496			if x == nil {
2497				return nil
2498			}
2499			ret := make([]TeamInvitee, len(x))
2500			for i, v := range x {
2501				vCopy := v.DeepCopy()
2502				ret[i] = vCopy
2503			}
2504			return ret
2505		})(o.Invitees),
2506	}
2507}
2508
2509type TeamAccessRequest struct {
2510	Uid         UID   `codec:"uid" json:"uid"`
2511	EldestSeqno Seqno `codec:"eldestSeqno" json:"eldest_seqno"`
2512}
2513
2514func (o TeamAccessRequest) DeepCopy() TeamAccessRequest {
2515	return TeamAccessRequest{
2516		Uid:         o.Uid.DeepCopy(),
2517		EldestSeqno: o.EldestSeqno.DeepCopy(),
2518	}
2519}
2520
2521type TeamOpenReqMsg struct {
2522	TeamID TeamID              `codec:"teamID" json:"team_id"`
2523	Tars   []TeamAccessRequest `codec:"tars" json:"tars"`
2524}
2525
2526func (o TeamOpenReqMsg) DeepCopy() TeamOpenReqMsg {
2527	return TeamOpenReqMsg{
2528		TeamID: o.TeamID.DeepCopy(),
2529		Tars: (func(x []TeamAccessRequest) []TeamAccessRequest {
2530			if x == nil {
2531				return nil
2532			}
2533			ret := make([]TeamAccessRequest, len(x))
2534			for i, v := range x {
2535				vCopy := v.DeepCopy()
2536				ret[i] = vCopy
2537			}
2538			return ret
2539		})(o.Tars),
2540	}
2541}
2542
2543type SeitanAKey string
2544
2545func (o SeitanAKey) DeepCopy() SeitanAKey {
2546	return o
2547}
2548
2549type SeitanIKey string
2550
2551func (o SeitanIKey) DeepCopy() SeitanIKey {
2552	return o
2553}
2554
2555type SeitanIKeyInvitelink string
2556
2557func (o SeitanIKeyInvitelink) DeepCopy() SeitanIKeyInvitelink {
2558	return o
2559}
2560
2561type SeitanPubKey string
2562
2563func (o SeitanPubKey) DeepCopy() SeitanPubKey {
2564	return o
2565}
2566
2567type SeitanIKeyV2 string
2568
2569func (o SeitanIKeyV2) DeepCopy() SeitanIKeyV2 {
2570	return o
2571}
2572
2573type SeitanKeyAndLabelVersion int
2574
2575const (
2576	SeitanKeyAndLabelVersion_V1         SeitanKeyAndLabelVersion = 1
2577	SeitanKeyAndLabelVersion_V2         SeitanKeyAndLabelVersion = 2
2578	SeitanKeyAndLabelVersion_Invitelink SeitanKeyAndLabelVersion = 3
2579)
2580
2581func (o SeitanKeyAndLabelVersion) DeepCopy() SeitanKeyAndLabelVersion { return o }
2582
2583var SeitanKeyAndLabelVersionMap = map[string]SeitanKeyAndLabelVersion{
2584	"V1":         1,
2585	"V2":         2,
2586	"Invitelink": 3,
2587}
2588
2589var SeitanKeyAndLabelVersionRevMap = map[SeitanKeyAndLabelVersion]string{
2590	1: "V1",
2591	2: "V2",
2592	3: "Invitelink",
2593}
2594
2595func (e SeitanKeyAndLabelVersion) String() string {
2596	if v, ok := SeitanKeyAndLabelVersionRevMap[e]; ok {
2597		return v
2598	}
2599	return fmt.Sprintf("%v", int(e))
2600}
2601
2602type SeitanKeyAndLabel struct {
2603	V__          SeitanKeyAndLabelVersion     `codec:"v" json:"v"`
2604	V1__         *SeitanKeyAndLabelVersion1   `codec:"v1,omitempty" json:"v1,omitempty"`
2605	V2__         *SeitanKeyAndLabelVersion2   `codec:"v2,omitempty" json:"v2,omitempty"`
2606	Invitelink__ *SeitanKeyAndLabelInvitelink `codec:"invitelink,omitempty" json:"invitelink,omitempty"`
2607}
2608
2609func (o *SeitanKeyAndLabel) V() (ret SeitanKeyAndLabelVersion, err error) {
2610	switch o.V__ {
2611	case SeitanKeyAndLabelVersion_V1:
2612		if o.V1__ == nil {
2613			err = errors.New("unexpected nil value for V1__")
2614			return ret, err
2615		}
2616	case SeitanKeyAndLabelVersion_V2:
2617		if o.V2__ == nil {
2618			err = errors.New("unexpected nil value for V2__")
2619			return ret, err
2620		}
2621	case SeitanKeyAndLabelVersion_Invitelink:
2622		if o.Invitelink__ == nil {
2623			err = errors.New("unexpected nil value for Invitelink__")
2624			return ret, err
2625		}
2626	}
2627	return o.V__, nil
2628}
2629
2630func (o SeitanKeyAndLabel) V1() (res SeitanKeyAndLabelVersion1) {
2631	if o.V__ != SeitanKeyAndLabelVersion_V1 {
2632		panic("wrong case accessed")
2633	}
2634	if o.V1__ == nil {
2635		return
2636	}
2637	return *o.V1__
2638}
2639
2640func (o SeitanKeyAndLabel) V2() (res SeitanKeyAndLabelVersion2) {
2641	if o.V__ != SeitanKeyAndLabelVersion_V2 {
2642		panic("wrong case accessed")
2643	}
2644	if o.V2__ == nil {
2645		return
2646	}
2647	return *o.V2__
2648}
2649
2650func (o SeitanKeyAndLabel) Invitelink() (res SeitanKeyAndLabelInvitelink) {
2651	if o.V__ != SeitanKeyAndLabelVersion_Invitelink {
2652		panic("wrong case accessed")
2653	}
2654	if o.Invitelink__ == nil {
2655		return
2656	}
2657	return *o.Invitelink__
2658}
2659
2660func NewSeitanKeyAndLabelWithV1(v SeitanKeyAndLabelVersion1) SeitanKeyAndLabel {
2661	return SeitanKeyAndLabel{
2662		V__:  SeitanKeyAndLabelVersion_V1,
2663		V1__: &v,
2664	}
2665}
2666
2667func NewSeitanKeyAndLabelWithV2(v SeitanKeyAndLabelVersion2) SeitanKeyAndLabel {
2668	return SeitanKeyAndLabel{
2669		V__:  SeitanKeyAndLabelVersion_V2,
2670		V2__: &v,
2671	}
2672}
2673
2674func NewSeitanKeyAndLabelWithInvitelink(v SeitanKeyAndLabelInvitelink) SeitanKeyAndLabel {
2675	return SeitanKeyAndLabel{
2676		V__:          SeitanKeyAndLabelVersion_Invitelink,
2677		Invitelink__: &v,
2678	}
2679}
2680
2681func NewSeitanKeyAndLabelDefault(v SeitanKeyAndLabelVersion) SeitanKeyAndLabel {
2682	return SeitanKeyAndLabel{
2683		V__: v,
2684	}
2685}
2686
2687func (o SeitanKeyAndLabel) DeepCopy() SeitanKeyAndLabel {
2688	return SeitanKeyAndLabel{
2689		V__: o.V__.DeepCopy(),
2690		V1__: (func(x *SeitanKeyAndLabelVersion1) *SeitanKeyAndLabelVersion1 {
2691			if x == nil {
2692				return nil
2693			}
2694			tmp := (*x).DeepCopy()
2695			return &tmp
2696		})(o.V1__),
2697		V2__: (func(x *SeitanKeyAndLabelVersion2) *SeitanKeyAndLabelVersion2 {
2698			if x == nil {
2699				return nil
2700			}
2701			tmp := (*x).DeepCopy()
2702			return &tmp
2703		})(o.V2__),
2704		Invitelink__: (func(x *SeitanKeyAndLabelInvitelink) *SeitanKeyAndLabelInvitelink {
2705			if x == nil {
2706				return nil
2707			}
2708			tmp := (*x).DeepCopy()
2709			return &tmp
2710		})(o.Invitelink__),
2711	}
2712}
2713
2714type SeitanKeyAndLabelVersion1 struct {
2715	I SeitanIKey     `codec:"i" json:"i"`
2716	L SeitanKeyLabel `codec:"l" json:"l"`
2717}
2718
2719func (o SeitanKeyAndLabelVersion1) DeepCopy() SeitanKeyAndLabelVersion1 {
2720	return SeitanKeyAndLabelVersion1{
2721		I: o.I.DeepCopy(),
2722		L: o.L.DeepCopy(),
2723	}
2724}
2725
2726type SeitanKeyAndLabelVersion2 struct {
2727	K SeitanPubKey   `codec:"k" json:"k"`
2728	L SeitanKeyLabel `codec:"l" json:"l"`
2729}
2730
2731func (o SeitanKeyAndLabelVersion2) DeepCopy() SeitanKeyAndLabelVersion2 {
2732	return SeitanKeyAndLabelVersion2{
2733		K: o.K.DeepCopy(),
2734		L: o.L.DeepCopy(),
2735	}
2736}
2737
2738type SeitanKeyAndLabelInvitelink struct {
2739	I SeitanIKeyInvitelink `codec:"i" json:"i"`
2740	L SeitanKeyLabel       `codec:"l" json:"l"`
2741}
2742
2743func (o SeitanKeyAndLabelInvitelink) DeepCopy() SeitanKeyAndLabelInvitelink {
2744	return SeitanKeyAndLabelInvitelink{
2745		I: o.I.DeepCopy(),
2746		L: o.L.DeepCopy(),
2747	}
2748}
2749
2750type SeitanKeyLabelType int
2751
2752const (
2753	SeitanKeyLabelType_SMS     SeitanKeyLabelType = 1
2754	SeitanKeyLabelType_GENERIC SeitanKeyLabelType = 2
2755)
2756
2757func (o SeitanKeyLabelType) DeepCopy() SeitanKeyLabelType { return o }
2758
2759var SeitanKeyLabelTypeMap = map[string]SeitanKeyLabelType{
2760	"SMS":     1,
2761	"GENERIC": 2,
2762}
2763
2764var SeitanKeyLabelTypeRevMap = map[SeitanKeyLabelType]string{
2765	1: "SMS",
2766	2: "GENERIC",
2767}
2768
2769func (e SeitanKeyLabelType) String() string {
2770	if v, ok := SeitanKeyLabelTypeRevMap[e]; ok {
2771		return v
2772	}
2773	return fmt.Sprintf("%v", int(e))
2774}
2775
2776type SeitanKeyLabel struct {
2777	T__       SeitanKeyLabelType     `codec:"t" json:"t"`
2778	Sms__     *SeitanKeyLabelSms     `codec:"sms,omitempty" json:"sms,omitempty"`
2779	Generic__ *SeitanKeyLabelGeneric `codec:"generic,omitempty" json:"generic,omitempty"`
2780}
2781
2782func (o *SeitanKeyLabel) T() (ret SeitanKeyLabelType, err error) {
2783	switch o.T__ {
2784	case SeitanKeyLabelType_SMS:
2785		if o.Sms__ == nil {
2786			err = errors.New("unexpected nil value for Sms__")
2787			return ret, err
2788		}
2789	case SeitanKeyLabelType_GENERIC:
2790		if o.Generic__ == nil {
2791			err = errors.New("unexpected nil value for Generic__")
2792			return ret, err
2793		}
2794	}
2795	return o.T__, nil
2796}
2797
2798func (o SeitanKeyLabel) Sms() (res SeitanKeyLabelSms) {
2799	if o.T__ != SeitanKeyLabelType_SMS {
2800		panic("wrong case accessed")
2801	}
2802	if o.Sms__ == nil {
2803		return
2804	}
2805	return *o.Sms__
2806}
2807
2808func (o SeitanKeyLabel) Generic() (res SeitanKeyLabelGeneric) {
2809	if o.T__ != SeitanKeyLabelType_GENERIC {
2810		panic("wrong case accessed")
2811	}
2812	if o.Generic__ == nil {
2813		return
2814	}
2815	return *o.Generic__
2816}
2817
2818func NewSeitanKeyLabelWithSms(v SeitanKeyLabelSms) SeitanKeyLabel {
2819	return SeitanKeyLabel{
2820		T__:   SeitanKeyLabelType_SMS,
2821		Sms__: &v,
2822	}
2823}
2824
2825func NewSeitanKeyLabelWithGeneric(v SeitanKeyLabelGeneric) SeitanKeyLabel {
2826	return SeitanKeyLabel{
2827		T__:       SeitanKeyLabelType_GENERIC,
2828		Generic__: &v,
2829	}
2830}
2831
2832func NewSeitanKeyLabelDefault(t SeitanKeyLabelType) SeitanKeyLabel {
2833	return SeitanKeyLabel{
2834		T__: t,
2835	}
2836}
2837
2838func (o SeitanKeyLabel) DeepCopy() SeitanKeyLabel {
2839	return SeitanKeyLabel{
2840		T__: o.T__.DeepCopy(),
2841		Sms__: (func(x *SeitanKeyLabelSms) *SeitanKeyLabelSms {
2842			if x == nil {
2843				return nil
2844			}
2845			tmp := (*x).DeepCopy()
2846			return &tmp
2847		})(o.Sms__),
2848		Generic__: (func(x *SeitanKeyLabelGeneric) *SeitanKeyLabelGeneric {
2849			if x == nil {
2850				return nil
2851			}
2852			tmp := (*x).DeepCopy()
2853			return &tmp
2854		})(o.Generic__),
2855	}
2856}
2857
2858type SeitanKeyLabelSms struct {
2859	F string `codec:"f" json:"f"`
2860	N string `codec:"n" json:"n"`
2861}
2862
2863func (o SeitanKeyLabelSms) DeepCopy() SeitanKeyLabelSms {
2864	return SeitanKeyLabelSms{
2865		F: o.F,
2866		N: o.N,
2867	}
2868}
2869
2870type SeitanKeyLabelGeneric struct {
2871	L string `codec:"l" json:"l"`
2872}
2873
2874func (o SeitanKeyLabelGeneric) DeepCopy() SeitanKeyLabelGeneric {
2875	return SeitanKeyLabelGeneric{
2876		L: o.L,
2877	}
2878}
2879
2880type TeamSeitanRequest struct {
2881	InviteID    TeamInviteID `codec:"inviteID" json:"invite_id"`
2882	Uid         UID          `codec:"uid" json:"uid"`
2883	EldestSeqno Seqno        `codec:"eldestSeqno" json:"eldest_seqno"`
2884	Akey        SeitanAKey   `codec:"akey" json:"akey"`
2885	Role        TeamRole     `codec:"role" json:"role"`
2886	UnixCTime   int64        `codec:"unixCTime" json:"ctime"`
2887}
2888
2889func (o TeamSeitanRequest) DeepCopy() TeamSeitanRequest {
2890	return TeamSeitanRequest{
2891		InviteID:    o.InviteID.DeepCopy(),
2892		Uid:         o.Uid.DeepCopy(),
2893		EldestSeqno: o.EldestSeqno.DeepCopy(),
2894		Akey:        o.Akey.DeepCopy(),
2895		Role:        o.Role.DeepCopy(),
2896		UnixCTime:   o.UnixCTime,
2897	}
2898}
2899
2900type TeamSeitanMsg struct {
2901	TeamID  TeamID              `codec:"teamID" json:"team_id"`
2902	Seitans []TeamSeitanRequest `codec:"seitans" json:"seitans"`
2903}
2904
2905func (o TeamSeitanMsg) DeepCopy() TeamSeitanMsg {
2906	return TeamSeitanMsg{
2907		TeamID: o.TeamID.DeepCopy(),
2908		Seitans: (func(x []TeamSeitanRequest) []TeamSeitanRequest {
2909			if x == nil {
2910				return nil
2911			}
2912			ret := make([]TeamSeitanRequest, len(x))
2913			for i, v := range x {
2914				vCopy := v.DeepCopy()
2915				ret[i] = vCopy
2916			}
2917			return ret
2918		})(o.Seitans),
2919	}
2920}
2921
2922type TeamOpenSweepMsg struct {
2923	TeamID              TeamID              `codec:"teamID" json:"team_id"`
2924	ResetUsersUntrusted []TeamCLKRResetUser `codec:"resetUsersUntrusted" json:"reset_users"`
2925}
2926
2927func (o TeamOpenSweepMsg) DeepCopy() TeamOpenSweepMsg {
2928	return TeamOpenSweepMsg{
2929		TeamID: o.TeamID.DeepCopy(),
2930		ResetUsersUntrusted: (func(x []TeamCLKRResetUser) []TeamCLKRResetUser {
2931			if x == nil {
2932				return nil
2933			}
2934			ret := make([]TeamCLKRResetUser, len(x))
2935			for i, v := range x {
2936				vCopy := v.DeepCopy()
2937				ret[i] = vCopy
2938			}
2939			return ret
2940		})(o.ResetUsersUntrusted),
2941	}
2942}
2943
2944type TeamKBFSKeyRefresher struct {
2945	Generation int             `codec:"generation" json:"generation"`
2946	AppType    TeamApplication `codec:"appType" json:"appType"`
2947}
2948
2949func (o TeamKBFSKeyRefresher) DeepCopy() TeamKBFSKeyRefresher {
2950	return TeamKBFSKeyRefresher{
2951		Generation: o.Generation,
2952		AppType:    o.AppType.DeepCopy(),
2953	}
2954}
2955
2956// * TeamRefreshData are needed or wanted data requirements that, if unmet, will cause
2957// * a refresh of the cache.
2958type TeamRefreshers struct {
2959	NeedKeyGeneration                     PerTeamKeyGeneration                       `codec:"needKeyGeneration" json:"needKeyGeneration"`
2960	NeedApplicationsAtGenerations         map[PerTeamKeyGeneration][]TeamApplication `codec:"needApplicationsAtGenerations" json:"needApplicationsAtGenerations"`
2961	NeedApplicationsAtGenerationsWithKBFS map[PerTeamKeyGeneration][]TeamApplication `codec:"needApplicationsAtGenerationsWithKBFS" json:"needApplicationsAtGenerationsWithKBFS"`
2962	WantMembers                           []UserVersion                              `codec:"wantMembers" json:"wantMembers"`
2963	WantMembersRole                       TeamRole                                   `codec:"wantMembersRole" json:"wantMembersRole"`
2964	NeedKBFSKeyGeneration                 TeamKBFSKeyRefresher                       `codec:"needKBFSKeyGeneration" json:"needKBFSKeyGeneration"`
2965}
2966
2967func (o TeamRefreshers) DeepCopy() TeamRefreshers {
2968	return TeamRefreshers{
2969		NeedKeyGeneration: o.NeedKeyGeneration.DeepCopy(),
2970		NeedApplicationsAtGenerations: (func(x map[PerTeamKeyGeneration][]TeamApplication) map[PerTeamKeyGeneration][]TeamApplication {
2971			if x == nil {
2972				return nil
2973			}
2974			ret := make(map[PerTeamKeyGeneration][]TeamApplication, len(x))
2975			for k, v := range x {
2976				kCopy := k.DeepCopy()
2977				vCopy := (func(x []TeamApplication) []TeamApplication {
2978					if x == nil {
2979						return nil
2980					}
2981					ret := make([]TeamApplication, len(x))
2982					for i, v := range x {
2983						vCopy := v.DeepCopy()
2984						ret[i] = vCopy
2985					}
2986					return ret
2987				})(v)
2988				ret[kCopy] = vCopy
2989			}
2990			return ret
2991		})(o.NeedApplicationsAtGenerations),
2992		NeedApplicationsAtGenerationsWithKBFS: (func(x map[PerTeamKeyGeneration][]TeamApplication) map[PerTeamKeyGeneration][]TeamApplication {
2993			if x == nil {
2994				return nil
2995			}
2996			ret := make(map[PerTeamKeyGeneration][]TeamApplication, len(x))
2997			for k, v := range x {
2998				kCopy := k.DeepCopy()
2999				vCopy := (func(x []TeamApplication) []TeamApplication {
3000					if x == nil {
3001						return nil
3002					}
3003					ret := make([]TeamApplication, len(x))
3004					for i, v := range x {
3005						vCopy := v.DeepCopy()
3006						ret[i] = vCopy
3007					}
3008					return ret
3009				})(v)
3010				ret[kCopy] = vCopy
3011			}
3012			return ret
3013		})(o.NeedApplicationsAtGenerationsWithKBFS),
3014		WantMembers: (func(x []UserVersion) []UserVersion {
3015			if x == nil {
3016				return nil
3017			}
3018			ret := make([]UserVersion, len(x))
3019			for i, v := range x {
3020				vCopy := v.DeepCopy()
3021				ret[i] = vCopy
3022			}
3023			return ret
3024		})(o.WantMembers),
3025		WantMembersRole:       o.WantMembersRole.DeepCopy(),
3026		NeedKBFSKeyGeneration: o.NeedKBFSKeyGeneration.DeepCopy(),
3027	}
3028}
3029
3030type LoadTeamArg struct {
3031	ID                        TeamID         `codec:"ID" json:"ID"`
3032	Name                      string         `codec:"name" json:"name"`
3033	Public                    bool           `codec:"public" json:"public"`
3034	NeedAdmin                 bool           `codec:"needAdmin" json:"needAdmin"`
3035	RefreshUIDMapper          bool           `codec:"refreshUIDMapper" json:"refreshUIDMapper"`
3036	Refreshers                TeamRefreshers `codec:"refreshers" json:"refreshers"`
3037	ForceFullReload           bool           `codec:"forceFullReload" json:"forceFullReload"`
3038	ForceRepoll               bool           `codec:"forceRepoll" json:"forceRepoll"`
3039	StaleOK                   bool           `codec:"staleOK" json:"staleOK"`
3040	AllowNameLookupBurstCache bool           `codec:"allowNameLookupBurstCache" json:"allowNameLookupBurstCache"`
3041	SkipNeedHiddenRotateCheck bool           `codec:"skipNeedHiddenRotateCheck" json:"skipNeedHiddenRotateCheck"`
3042	AuditMode                 AuditMode      `codec:"auditMode" json:"auditMode"`
3043}
3044
3045func (o LoadTeamArg) DeepCopy() LoadTeamArg {
3046	return LoadTeamArg{
3047		ID:                        o.ID.DeepCopy(),
3048		Name:                      o.Name,
3049		Public:                    o.Public,
3050		NeedAdmin:                 o.NeedAdmin,
3051		RefreshUIDMapper:          o.RefreshUIDMapper,
3052		Refreshers:                o.Refreshers.DeepCopy(),
3053		ForceFullReload:           o.ForceFullReload,
3054		ForceRepoll:               o.ForceRepoll,
3055		StaleOK:                   o.StaleOK,
3056		AllowNameLookupBurstCache: o.AllowNameLookupBurstCache,
3057		SkipNeedHiddenRotateCheck: o.SkipNeedHiddenRotateCheck,
3058		AuditMode:                 o.AuditMode.DeepCopy(),
3059	}
3060}
3061
3062type FastTeamLoadArg struct {
3063	ID                    TeamID                 `codec:"ID" json:"ID"`
3064	Public                bool                   `codec:"public" json:"public"`
3065	AssertTeamName        *TeamName              `codec:"assertTeamName,omitempty" json:"assertTeamName,omitempty"`
3066	Applications          []TeamApplication      `codec:"applications" json:"applications"`
3067	KeyGenerationsNeeded  []PerTeamKeyGeneration `codec:"keyGenerationsNeeded" json:"keyGenerationsNeeded"`
3068	NeedLatestKey         bool                   `codec:"needLatestKey" json:"needLatestKey"`
3069	ForceRefresh          bool                   `codec:"forceRefresh" json:"forceRefresh"`
3070	HiddenChainIsOptional bool                   `codec:"hiddenChainIsOptional" json:"hiddenChainIsOptional"`
3071}
3072
3073func (o FastTeamLoadArg) DeepCopy() FastTeamLoadArg {
3074	return FastTeamLoadArg{
3075		ID:     o.ID.DeepCopy(),
3076		Public: o.Public,
3077		AssertTeamName: (func(x *TeamName) *TeamName {
3078			if x == nil {
3079				return nil
3080			}
3081			tmp := (*x).DeepCopy()
3082			return &tmp
3083		})(o.AssertTeamName),
3084		Applications: (func(x []TeamApplication) []TeamApplication {
3085			if x == nil {
3086				return nil
3087			}
3088			ret := make([]TeamApplication, len(x))
3089			for i, v := range x {
3090				vCopy := v.DeepCopy()
3091				ret[i] = vCopy
3092			}
3093			return ret
3094		})(o.Applications),
3095		KeyGenerationsNeeded: (func(x []PerTeamKeyGeneration) []PerTeamKeyGeneration {
3096			if x == nil {
3097				return nil
3098			}
3099			ret := make([]PerTeamKeyGeneration, len(x))
3100			for i, v := range x {
3101				vCopy := v.DeepCopy()
3102				ret[i] = vCopy
3103			}
3104			return ret
3105		})(o.KeyGenerationsNeeded),
3106		NeedLatestKey:         o.NeedLatestKey,
3107		ForceRefresh:          o.ForceRefresh,
3108		HiddenChainIsOptional: o.HiddenChainIsOptional,
3109	}
3110}
3111
3112type FastTeamLoadRes struct {
3113	Name            TeamName             `codec:"name" json:"name"`
3114	ApplicationKeys []TeamApplicationKey `codec:"applicationKeys" json:"applicationKeys"`
3115}
3116
3117func (o FastTeamLoadRes) DeepCopy() FastTeamLoadRes {
3118	return FastTeamLoadRes{
3119		Name: o.Name.DeepCopy(),
3120		ApplicationKeys: (func(x []TeamApplicationKey) []TeamApplicationKey {
3121			if x == nil {
3122				return nil
3123			}
3124			ret := make([]TeamApplicationKey, len(x))
3125			for i, v := range x {
3126				vCopy := v.DeepCopy()
3127				ret[i] = vCopy
3128			}
3129			return ret
3130		})(o.ApplicationKeys),
3131	}
3132}
3133
3134type ImplicitRole struct {
3135	Role     TeamRole `codec:"role" json:"role"`
3136	Ancestor TeamID   `codec:"ancestor" json:"ancestor"`
3137}
3138
3139func (o ImplicitRole) DeepCopy() ImplicitRole {
3140	return ImplicitRole{
3141		Role:     o.Role.DeepCopy(),
3142		Ancestor: o.Ancestor.DeepCopy(),
3143	}
3144}
3145
3146type MemberInfo struct {
3147	UserID              UID           `codec:"userID" json:"uid"`
3148	TeamID              TeamID        `codec:"teamID" json:"team_id"`
3149	FqName              string        `codec:"fqName" json:"fq_name"`
3150	IsImplicitTeam      bool          `codec:"isImplicitTeam" json:"is_implicit_team"`
3151	IsOpenTeam          bool          `codec:"isOpenTeam" json:"is_open_team"`
3152	Role                TeamRole      `codec:"role" json:"role"`
3153	Implicit            *ImplicitRole `codec:"implicit,omitempty" json:"implicit,omitempty"`
3154	MemberCount         int           `codec:"memberCount" json:"member_count"`
3155	AllowProfilePromote bool          `codec:"allowProfilePromote" json:"allow_profile_promote"`
3156	IsMemberShowcased   bool          `codec:"isMemberShowcased" json:"is_member_showcased"`
3157}
3158
3159func (o MemberInfo) DeepCopy() MemberInfo {
3160	return MemberInfo{
3161		UserID:         o.UserID.DeepCopy(),
3162		TeamID:         o.TeamID.DeepCopy(),
3163		FqName:         o.FqName,
3164		IsImplicitTeam: o.IsImplicitTeam,
3165		IsOpenTeam:     o.IsOpenTeam,
3166		Role:           o.Role.DeepCopy(),
3167		Implicit: (func(x *ImplicitRole) *ImplicitRole {
3168			if x == nil {
3169				return nil
3170			}
3171			tmp := (*x).DeepCopy()
3172			return &tmp
3173		})(o.Implicit),
3174		MemberCount:         o.MemberCount,
3175		AllowProfilePromote: o.AllowProfilePromote,
3176		IsMemberShowcased:   o.IsMemberShowcased,
3177	}
3178}
3179
3180type TeamList struct {
3181	Teams []MemberInfo `codec:"teams" json:"teams"`
3182}
3183
3184func (o TeamList) DeepCopy() TeamList {
3185	return TeamList{
3186		Teams: (func(x []MemberInfo) []MemberInfo {
3187			if x == nil {
3188				return nil
3189			}
3190			ret := make([]MemberInfo, len(x))
3191			for i, v := range x {
3192				vCopy := v.DeepCopy()
3193				ret[i] = vCopy
3194			}
3195			return ret
3196		})(o.Teams),
3197	}
3198}
3199
3200type AnnotatedMemberInfo struct {
3201	UserID              UID              `codec:"userID" json:"uid"`
3202	TeamID              TeamID           `codec:"teamID" json:"team_id"`
3203	Username            string           `codec:"username" json:"username"`
3204	FullName            string           `codec:"fullName" json:"full_name"`
3205	FqName              string           `codec:"fqName" json:"fq_name"`
3206	IsImplicitTeam      bool             `codec:"isImplicitTeam" json:"is_implicit_team"`
3207	ImpTeamDisplayName  string           `codec:"impTeamDisplayName" json:"implicit_team_display_name"`
3208	IsOpenTeam          bool             `codec:"isOpenTeam" json:"is_open_team"`
3209	Role                TeamRole         `codec:"role" json:"role"`
3210	Implicit            *ImplicitRole    `codec:"implicit,omitempty" json:"implicit,omitempty"`
3211	NeedsPUK            bool             `codec:"needsPUK" json:"needsPUK"`
3212	MemberCount         int              `codec:"memberCount" json:"member_count"`
3213	EldestSeqno         Seqno            `codec:"eldestSeqno" json:"member_eldest_seqno"`
3214	AllowProfilePromote bool             `codec:"allowProfilePromote" json:"allow_profile_promote"`
3215	IsMemberShowcased   bool             `codec:"isMemberShowcased" json:"is_member_showcased"`
3216	Status              TeamMemberStatus `codec:"status" json:"status"`
3217}
3218
3219func (o AnnotatedMemberInfo) DeepCopy() AnnotatedMemberInfo {
3220	return AnnotatedMemberInfo{
3221		UserID:             o.UserID.DeepCopy(),
3222		TeamID:             o.TeamID.DeepCopy(),
3223		Username:           o.Username,
3224		FullName:           o.FullName,
3225		FqName:             o.FqName,
3226		IsImplicitTeam:     o.IsImplicitTeam,
3227		ImpTeamDisplayName: o.ImpTeamDisplayName,
3228		IsOpenTeam:         o.IsOpenTeam,
3229		Role:               o.Role.DeepCopy(),
3230		Implicit: (func(x *ImplicitRole) *ImplicitRole {
3231			if x == nil {
3232				return nil
3233			}
3234			tmp := (*x).DeepCopy()
3235			return &tmp
3236		})(o.Implicit),
3237		NeedsPUK:            o.NeedsPUK,
3238		MemberCount:         o.MemberCount,
3239		EldestSeqno:         o.EldestSeqno.DeepCopy(),
3240		AllowProfilePromote: o.AllowProfilePromote,
3241		IsMemberShowcased:   o.IsMemberShowcased,
3242		Status:              o.Status.DeepCopy(),
3243	}
3244}
3245
3246type AnnotatedTeamList struct {
3247	Teams                  []AnnotatedMemberInfo                `codec:"teams" json:"teams"`
3248	AnnotatedActiveInvites map[TeamInviteID]AnnotatedTeamInvite `codec:"annotatedActiveInvites" json:"annotatedActiveInvites"`
3249}
3250
3251func (o AnnotatedTeamList) DeepCopy() AnnotatedTeamList {
3252	return AnnotatedTeamList{
3253		Teams: (func(x []AnnotatedMemberInfo) []AnnotatedMemberInfo {
3254			if x == nil {
3255				return nil
3256			}
3257			ret := make([]AnnotatedMemberInfo, len(x))
3258			for i, v := range x {
3259				vCopy := v.DeepCopy()
3260				ret[i] = vCopy
3261			}
3262			return ret
3263		})(o.Teams),
3264		AnnotatedActiveInvites: (func(x map[TeamInviteID]AnnotatedTeamInvite) map[TeamInviteID]AnnotatedTeamInvite {
3265			if x == nil {
3266				return nil
3267			}
3268			ret := make(map[TeamInviteID]AnnotatedTeamInvite, len(x))
3269			for k, v := range x {
3270				kCopy := k.DeepCopy()
3271				vCopy := v.DeepCopy()
3272				ret[kCopy] = vCopy
3273			}
3274			return ret
3275		})(o.AnnotatedActiveInvites),
3276	}
3277}
3278
3279type TeamAddMemberResult struct {
3280	Invited     bool  `codec:"invited" json:"invited"`
3281	User        *User `codec:"user,omitempty" json:"user,omitempty"`
3282	ChatSending bool  `codec:"chatSending" json:"chatSending"`
3283}
3284
3285func (o TeamAddMemberResult) DeepCopy() TeamAddMemberResult {
3286	return TeamAddMemberResult{
3287		Invited: o.Invited,
3288		User: (func(x *User) *User {
3289			if x == nil {
3290				return nil
3291			}
3292			tmp := (*x).DeepCopy()
3293			return &tmp
3294		})(o.User),
3295		ChatSending: o.ChatSending,
3296	}
3297}
3298
3299type TeamAddMembersResult struct {
3300	NotAdded []User `codec:"notAdded" json:"notAdded"`
3301}
3302
3303func (o TeamAddMembersResult) DeepCopy() TeamAddMembersResult {
3304	return TeamAddMembersResult{
3305		NotAdded: (func(x []User) []User {
3306			if x == nil {
3307				return nil
3308			}
3309			ret := make([]User, len(x))
3310			for i, v := range x {
3311				vCopy := v.DeepCopy()
3312				ret[i] = vCopy
3313			}
3314			return ret
3315		})(o.NotAdded),
3316	}
3317}
3318
3319type TeamJoinRequest struct {
3320	Name     string   `codec:"name" json:"name"`
3321	Username string   `codec:"username" json:"username"`
3322	FullName FullName `codec:"fullName" json:"fullName"`
3323	Ctime    UnixTime `codec:"ctime" json:"ctime"`
3324}
3325
3326func (o TeamJoinRequest) DeepCopy() TeamJoinRequest {
3327	return TeamJoinRequest{
3328		Name:     o.Name,
3329		Username: o.Username,
3330		FullName: o.FullName.DeepCopy(),
3331		Ctime:    o.Ctime.DeepCopy(),
3332	}
3333}
3334
3335type TeamTreeResult struct {
3336	Entries []TeamTreeEntry `codec:"entries" json:"entries"`
3337}
3338
3339func (o TeamTreeResult) DeepCopy() TeamTreeResult {
3340	return TeamTreeResult{
3341		Entries: (func(x []TeamTreeEntry) []TeamTreeEntry {
3342			if x == nil {
3343				return nil
3344			}
3345			ret := make([]TeamTreeEntry, len(x))
3346			for i, v := range x {
3347				vCopy := v.DeepCopy()
3348				ret[i] = vCopy
3349			}
3350			return ret
3351		})(o.Entries),
3352	}
3353}
3354
3355type TeamTreeEntry struct {
3356	Name  TeamName `codec:"name" json:"name"`
3357	Admin bool     `codec:"admin" json:"admin"`
3358}
3359
3360func (o TeamTreeEntry) DeepCopy() TeamTreeEntry {
3361	return TeamTreeEntry{
3362		Name:  o.Name.DeepCopy(),
3363		Admin: o.Admin,
3364	}
3365}
3366
3367type SubteamListEntry struct {
3368	Name        TeamName `codec:"name" json:"name"`
3369	TeamID      TeamID   `codec:"teamID" json:"teamID"`
3370	MemberCount int      `codec:"memberCount" json:"memberCount"`
3371}
3372
3373func (o SubteamListEntry) DeepCopy() SubteamListEntry {
3374	return SubteamListEntry{
3375		Name:        o.Name.DeepCopy(),
3376		TeamID:      o.TeamID.DeepCopy(),
3377		MemberCount: o.MemberCount,
3378	}
3379}
3380
3381type SubteamListResult struct {
3382	Entries []SubteamListEntry `codec:"entries" json:"entries"`
3383}
3384
3385func (o SubteamListResult) DeepCopy() SubteamListResult {
3386	return SubteamListResult{
3387		Entries: (func(x []SubteamListEntry) []SubteamListEntry {
3388			if x == nil {
3389				return nil
3390			}
3391			ret := make([]SubteamListEntry, len(x))
3392			for i, v := range x {
3393				vCopy := v.DeepCopy()
3394				ret[i] = vCopy
3395			}
3396			return ret
3397		})(o.Entries),
3398	}
3399}
3400
3401type TeamCreateResult struct {
3402	TeamID       TeamID `codec:"teamID" json:"teamID"`
3403	ChatSent     bool   `codec:"chatSent" json:"chatSent"`
3404	CreatorAdded bool   `codec:"creatorAdded" json:"creatorAdded"`
3405}
3406
3407func (o TeamCreateResult) DeepCopy() TeamCreateResult {
3408	return TeamCreateResult{
3409		TeamID:       o.TeamID.DeepCopy(),
3410		ChatSent:     o.ChatSent,
3411		CreatorAdded: o.CreatorAdded,
3412	}
3413}
3414
3415type TeamSettings struct {
3416	Open   bool     `codec:"open" json:"open"`
3417	JoinAs TeamRole `codec:"joinAs" json:"joinAs"`
3418}
3419
3420func (o TeamSettings) DeepCopy() TeamSettings {
3421	return TeamSettings{
3422		Open:   o.Open,
3423		JoinAs: o.JoinAs.DeepCopy(),
3424	}
3425}
3426
3427type TeamBotSettings struct {
3428	Cmds     bool     `codec:"cmds" json:"cmds"`
3429	Mentions bool     `codec:"mentions" json:"mentions"`
3430	Triggers []string `codec:"triggers" json:"triggers"`
3431	Convs    []string `codec:"convs" json:"convs"`
3432}
3433
3434func (o TeamBotSettings) DeepCopy() TeamBotSettings {
3435	return TeamBotSettings{
3436		Cmds:     o.Cmds,
3437		Mentions: o.Mentions,
3438		Triggers: (func(x []string) []string {
3439			if x == nil {
3440				return nil
3441			}
3442			ret := make([]string, len(x))
3443			for i, v := range x {
3444				vCopy := v
3445				ret[i] = vCopy
3446			}
3447			return ret
3448		})(o.Triggers),
3449		Convs: (func(x []string) []string {
3450			if x == nil {
3451				return nil
3452			}
3453			ret := make([]string, len(x))
3454			for i, v := range x {
3455				vCopy := v
3456				ret[i] = vCopy
3457			}
3458			return ret
3459		})(o.Convs),
3460	}
3461}
3462
3463type TeamRequestAccessResult struct {
3464	Open bool `codec:"open" json:"open"`
3465}
3466
3467func (o TeamRequestAccessResult) DeepCopy() TeamRequestAccessResult {
3468	return TeamRequestAccessResult{
3469		Open: o.Open,
3470	}
3471}
3472
3473type TeamAcceptOrRequestResult struct {
3474	WasToken    bool `codec:"wasToken" json:"wasToken"`
3475	WasSeitan   bool `codec:"wasSeitan" json:"wasSeitan"`
3476	WasTeamName bool `codec:"wasTeamName" json:"wasTeamName"`
3477	WasOpenTeam bool `codec:"wasOpenTeam" json:"wasOpenTeam"`
3478}
3479
3480func (o TeamAcceptOrRequestResult) DeepCopy() TeamAcceptOrRequestResult {
3481	return TeamAcceptOrRequestResult{
3482		WasToken:    o.WasToken,
3483		WasSeitan:   o.WasSeitan,
3484		WasTeamName: o.WasTeamName,
3485		WasOpenTeam: o.WasOpenTeam,
3486	}
3487}
3488
3489type TeamShowcase struct {
3490	IsShowcased       bool    `codec:"isShowcased" json:"is_showcased"`
3491	Description       *string `codec:"description,omitempty" json:"description,omitempty"`
3492	SetByUID          *UID    `codec:"setByUID,omitempty" json:"set_by_uid,omitempty"`
3493	AnyMemberShowcase bool    `codec:"anyMemberShowcase" json:"any_member_showcase"`
3494}
3495
3496func (o TeamShowcase) DeepCopy() TeamShowcase {
3497	return TeamShowcase{
3498		IsShowcased: o.IsShowcased,
3499		Description: (func(x *string) *string {
3500			if x == nil {
3501				return nil
3502			}
3503			tmp := (*x)
3504			return &tmp
3505		})(o.Description),
3506		SetByUID: (func(x *UID) *UID {
3507			if x == nil {
3508				return nil
3509			}
3510			tmp := (*x).DeepCopy()
3511			return &tmp
3512		})(o.SetByUID),
3513		AnyMemberShowcase: o.AnyMemberShowcase,
3514	}
3515}
3516
3517type TeamAndMemberShowcase struct {
3518	TeamShowcase      TeamShowcase `codec:"teamShowcase" json:"teamShowcase"`
3519	IsMemberShowcased bool         `codec:"isMemberShowcased" json:"isMemberShowcased"`
3520}
3521
3522func (o TeamAndMemberShowcase) DeepCopy() TeamAndMemberShowcase {
3523	return TeamAndMemberShowcase{
3524		TeamShowcase:      o.TeamShowcase.DeepCopy(),
3525		IsMemberShowcased: o.IsMemberShowcased,
3526	}
3527}
3528
3529type TeamAvatar struct {
3530	AvatarFilename string         `codec:"avatarFilename" json:"avatarFilename"`
3531	Crop           *ImageCropRect `codec:"crop,omitempty" json:"crop,omitempty"`
3532}
3533
3534func (o TeamAvatar) DeepCopy() TeamAvatar {
3535	return TeamAvatar{
3536		AvatarFilename: o.AvatarFilename,
3537		Crop: (func(x *ImageCropRect) *ImageCropRect {
3538			if x == nil {
3539				return nil
3540			}
3541			tmp := (*x).DeepCopy()
3542			return &tmp
3543		})(o.Crop),
3544	}
3545}
3546
3547type TeamCreateFancyInfo struct {
3548	Name               string         `codec:"name" json:"name"`
3549	Description        string         `codec:"description" json:"description"`
3550	JoinSubteam        bool           `codec:"joinSubteam" json:"joinSubteam"`
3551	OpenSettings       TeamSettings   `codec:"openSettings" json:"openSettings"`
3552	Showcase           bool           `codec:"showcase" json:"showcase"`
3553	Avatar             *TeamAvatar    `codec:"avatar,omitempty" json:"avatar,omitempty"`
3554	ChatChannels       []string       `codec:"chatChannels" json:"chatChannels"`
3555	Subteams           []string       `codec:"subteams" json:"subteams"`
3556	Users              []UserRolePair `codec:"users" json:"users"`
3557	EmailInviteMessage *string        `codec:"emailInviteMessage,omitempty" json:"emailInviteMessage,omitempty"`
3558}
3559
3560func (o TeamCreateFancyInfo) DeepCopy() TeamCreateFancyInfo {
3561	return TeamCreateFancyInfo{
3562		Name:         o.Name,
3563		Description:  o.Description,
3564		JoinSubteam:  o.JoinSubteam,
3565		OpenSettings: o.OpenSettings.DeepCopy(),
3566		Showcase:     o.Showcase,
3567		Avatar: (func(x *TeamAvatar) *TeamAvatar {
3568			if x == nil {
3569				return nil
3570			}
3571			tmp := (*x).DeepCopy()
3572			return &tmp
3573		})(o.Avatar),
3574		ChatChannels: (func(x []string) []string {
3575			if x == nil {
3576				return nil
3577			}
3578			ret := make([]string, len(x))
3579			for i, v := range x {
3580				vCopy := v
3581				ret[i] = vCopy
3582			}
3583			return ret
3584		})(o.ChatChannels),
3585		Subteams: (func(x []string) []string {
3586			if x == nil {
3587				return nil
3588			}
3589			ret := make([]string, len(x))
3590			for i, v := range x {
3591				vCopy := v
3592				ret[i] = vCopy
3593			}
3594			return ret
3595		})(o.Subteams),
3596		Users: (func(x []UserRolePair) []UserRolePair {
3597			if x == nil {
3598				return nil
3599			}
3600			ret := make([]UserRolePair, len(x))
3601			for i, v := range x {
3602				vCopy := v.DeepCopy()
3603				ret[i] = vCopy
3604			}
3605			return ret
3606		})(o.Users),
3607		EmailInviteMessage: (func(x *string) *string {
3608			if x == nil {
3609				return nil
3610			}
3611			tmp := (*x)
3612			return &tmp
3613		})(o.EmailInviteMessage),
3614	}
3615}
3616
3617type UserRolePair struct {
3618	Assertion   string           `codec:"assertion" json:"assertion"`
3619	Role        TeamRole         `codec:"role" json:"role"`
3620	BotSettings *TeamBotSettings `codec:"botSettings,omitempty" json:"botSettings,omitempty"`
3621}
3622
3623func (o UserRolePair) DeepCopy() UserRolePair {
3624	return UserRolePair{
3625		Assertion: o.Assertion,
3626		Role:      o.Role.DeepCopy(),
3627		BotSettings: (func(x *TeamBotSettings) *TeamBotSettings {
3628			if x == nil {
3629				return nil
3630			}
3631			tmp := (*x).DeepCopy()
3632			return &tmp
3633		})(o.BotSettings),
3634	}
3635}
3636
3637type AssertionTeamMemberToRemove struct {
3638	Assertion         string `codec:"assertion" json:"assertion"`
3639	RemoveFromSubtree bool   `codec:"removeFromSubtree" json:"removeFromSubtree"`
3640}
3641
3642func (o AssertionTeamMemberToRemove) DeepCopy() AssertionTeamMemberToRemove {
3643	return AssertionTeamMemberToRemove{
3644		Assertion:         o.Assertion,
3645		RemoveFromSubtree: o.RemoveFromSubtree,
3646	}
3647}
3648
3649type InviteTeamMemberToRemove struct {
3650	InviteID TeamInviteID `codec:"inviteID" json:"inviteID"`
3651}
3652
3653func (o InviteTeamMemberToRemove) DeepCopy() InviteTeamMemberToRemove {
3654	return InviteTeamMemberToRemove{
3655		InviteID: o.InviteID.DeepCopy(),
3656	}
3657}
3658
3659type TeamMemberToRemoveType int
3660
3661const (
3662	TeamMemberToRemoveType_ASSERTION TeamMemberToRemoveType = 0
3663	TeamMemberToRemoveType_INVITEID  TeamMemberToRemoveType = 1
3664)
3665
3666func (o TeamMemberToRemoveType) DeepCopy() TeamMemberToRemoveType { return o }
3667
3668var TeamMemberToRemoveTypeMap = map[string]TeamMemberToRemoveType{
3669	"ASSERTION": 0,
3670	"INVITEID":  1,
3671}
3672
3673var TeamMemberToRemoveTypeRevMap = map[TeamMemberToRemoveType]string{
3674	0: "ASSERTION",
3675	1: "INVITEID",
3676}
3677
3678func (e TeamMemberToRemoveType) String() string {
3679	if v, ok := TeamMemberToRemoveTypeRevMap[e]; ok {
3680		return v
3681	}
3682	return fmt.Sprintf("%v", int(e))
3683}
3684
3685type TeamMemberToRemove struct {
3686	Type__      TeamMemberToRemoveType       `codec:"type" json:"type"`
3687	Assertion__ *AssertionTeamMemberToRemove `codec:"assertion,omitempty" json:"assertion,omitempty"`
3688	Inviteid__  *InviteTeamMemberToRemove    `codec:"inviteid,omitempty" json:"inviteid,omitempty"`
3689}
3690
3691func (o *TeamMemberToRemove) Type() (ret TeamMemberToRemoveType, err error) {
3692	switch o.Type__ {
3693	case TeamMemberToRemoveType_ASSERTION:
3694		if o.Assertion__ == nil {
3695			err = errors.New("unexpected nil value for Assertion__")
3696			return ret, err
3697		}
3698	case TeamMemberToRemoveType_INVITEID:
3699		if o.Inviteid__ == nil {
3700			err = errors.New("unexpected nil value for Inviteid__")
3701			return ret, err
3702		}
3703	}
3704	return o.Type__, nil
3705}
3706
3707func (o TeamMemberToRemove) Assertion() (res AssertionTeamMemberToRemove) {
3708	if o.Type__ != TeamMemberToRemoveType_ASSERTION {
3709		panic("wrong case accessed")
3710	}
3711	if o.Assertion__ == nil {
3712		return
3713	}
3714	return *o.Assertion__
3715}
3716
3717func (o TeamMemberToRemove) Inviteid() (res InviteTeamMemberToRemove) {
3718	if o.Type__ != TeamMemberToRemoveType_INVITEID {
3719		panic("wrong case accessed")
3720	}
3721	if o.Inviteid__ == nil {
3722		return
3723	}
3724	return *o.Inviteid__
3725}
3726
3727func NewTeamMemberToRemoveWithAssertion(v AssertionTeamMemberToRemove) TeamMemberToRemove {
3728	return TeamMemberToRemove{
3729		Type__:      TeamMemberToRemoveType_ASSERTION,
3730		Assertion__: &v,
3731	}
3732}
3733
3734func NewTeamMemberToRemoveWithInviteid(v InviteTeamMemberToRemove) TeamMemberToRemove {
3735	return TeamMemberToRemove{
3736		Type__:     TeamMemberToRemoveType_INVITEID,
3737		Inviteid__: &v,
3738	}
3739}
3740
3741func (o TeamMemberToRemove) DeepCopy() TeamMemberToRemove {
3742	return TeamMemberToRemove{
3743		Type__: o.Type__.DeepCopy(),
3744		Assertion__: (func(x *AssertionTeamMemberToRemove) *AssertionTeamMemberToRemove {
3745			if x == nil {
3746				return nil
3747			}
3748			tmp := (*x).DeepCopy()
3749			return &tmp
3750		})(o.Assertion__),
3751		Inviteid__: (func(x *InviteTeamMemberToRemove) *InviteTeamMemberToRemove {
3752			if x == nil {
3753				return nil
3754			}
3755			tmp := (*x).DeepCopy()
3756			return &tmp
3757		})(o.Inviteid__),
3758	}
3759}
3760
3761type RemoveTeamMemberFailure struct {
3762	TeamMember     TeamMemberToRemove `codec:"teamMember" json:"teamMember"`
3763	ErrorAtTarget  *string            `codec:"errorAtTarget,omitempty" json:"errorAtTarget,omitempty"`
3764	ErrorAtSubtree *string            `codec:"errorAtSubtree,omitempty" json:"errorAtSubtree,omitempty"`
3765}
3766
3767func (o RemoveTeamMemberFailure) DeepCopy() RemoveTeamMemberFailure {
3768	return RemoveTeamMemberFailure{
3769		TeamMember: o.TeamMember.DeepCopy(),
3770		ErrorAtTarget: (func(x *string) *string {
3771			if x == nil {
3772				return nil
3773			}
3774			tmp := (*x)
3775			return &tmp
3776		})(o.ErrorAtTarget),
3777		ErrorAtSubtree: (func(x *string) *string {
3778			if x == nil {
3779				return nil
3780			}
3781			tmp := (*x)
3782			return &tmp
3783		})(o.ErrorAtSubtree),
3784	}
3785}
3786
3787type TeamRemoveMembersResult struct {
3788	Failures []RemoveTeamMemberFailure `codec:"failures" json:"failures"`
3789}
3790
3791func (o TeamRemoveMembersResult) DeepCopy() TeamRemoveMembersResult {
3792	return TeamRemoveMembersResult{
3793		Failures: (func(x []RemoveTeamMemberFailure) []RemoveTeamMemberFailure {
3794			if x == nil {
3795				return nil
3796			}
3797			ret := make([]RemoveTeamMemberFailure, len(x))
3798			for i, v := range x {
3799				vCopy := v.DeepCopy()
3800				ret[i] = vCopy
3801			}
3802			return ret
3803		})(o.Failures),
3804	}
3805}
3806
3807type TeamEditMembersResult struct {
3808	Failures []UserRolePair `codec:"failures" json:"failures"`
3809}
3810
3811func (o TeamEditMembersResult) DeepCopy() TeamEditMembersResult {
3812	return TeamEditMembersResult{
3813		Failures: (func(x []UserRolePair) []UserRolePair {
3814			if x == nil {
3815				return nil
3816			}
3817			ret := make([]UserRolePair, len(x))
3818			for i, v := range x {
3819				vCopy := v.DeepCopy()
3820				ret[i] = vCopy
3821			}
3822			return ret
3823		})(o.Failures),
3824	}
3825}
3826
3827type UntrustedTeamExistsResult struct {
3828	Exists bool       `codec:"exists" json:"exists"`
3829	Status StatusCode `codec:"status" json:"status"`
3830}
3831
3832func (o UntrustedTeamExistsResult) DeepCopy() UntrustedTeamExistsResult {
3833	return UntrustedTeamExistsResult{
3834		Exists: o.Exists,
3835		Status: o.Status.DeepCopy(),
3836	}
3837}
3838
3839type Invitelink struct {
3840	Ikey SeitanIKeyInvitelink `codec:"ikey" json:"ikey"`
3841	Url  string               `codec:"url" json:"url"`
3842}
3843
3844func (o Invitelink) DeepCopy() Invitelink {
3845	return Invitelink{
3846		Ikey: o.Ikey.DeepCopy(),
3847		Url:  o.Url,
3848	}
3849}
3850
3851type BulkRes struct {
3852	Malformed []string `codec:"malformed" json:"malformed"`
3853}
3854
3855func (o BulkRes) DeepCopy() BulkRes {
3856	return BulkRes{
3857		Malformed: (func(x []string) []string {
3858			if x == nil {
3859				return nil
3860			}
3861			ret := make([]string, len(x))
3862			for i, v := range x {
3863				vCopy := v
3864				ret[i] = vCopy
3865			}
3866			return ret
3867		})(o.Malformed),
3868	}
3869}
3870
3871type InviteLinkDetails struct {
3872	InviteID          TeamInviteID               `codec:"inviteID" json:"inviteID"`
3873	InviterResetOrDel bool                       `codec:"inviterResetOrDel" json:"inviterResetOrDel"`
3874	InviterUID        UID                        `codec:"inviterUID" json:"inviterUID"`
3875	InviterUsername   string                     `codec:"inviterUsername" json:"inviterUsername"`
3876	IsMember          bool                       `codec:"isMember" json:"isMember"`
3877	TeamAvatars       map[AvatarFormat]AvatarUrl `codec:"teamAvatars" json:"teamAvatars"`
3878	TeamDesc          string                     `codec:"teamDesc" json:"teamDesc"`
3879	TeamID            TeamID                     `codec:"teamID" json:"teamID"`
3880	TeamIsOpen        bool                       `codec:"teamIsOpen" json:"teamIsOpen"`
3881	TeamName          TeamName                   `codec:"teamName" json:"teamName"`
3882	TeamNumMembers    int                        `codec:"teamNumMembers" json:"teamNumMembers"`
3883}
3884
3885func (o InviteLinkDetails) DeepCopy() InviteLinkDetails {
3886	return InviteLinkDetails{
3887		InviteID:          o.InviteID.DeepCopy(),
3888		InviterResetOrDel: o.InviterResetOrDel,
3889		InviterUID:        o.InviterUID.DeepCopy(),
3890		InviterUsername:   o.InviterUsername,
3891		IsMember:          o.IsMember,
3892		TeamAvatars: (func(x map[AvatarFormat]AvatarUrl) map[AvatarFormat]AvatarUrl {
3893			if x == nil {
3894				return nil
3895			}
3896			ret := make(map[AvatarFormat]AvatarUrl, len(x))
3897			for k, v := range x {
3898				kCopy := k.DeepCopy()
3899				vCopy := v.DeepCopy()
3900				ret[kCopy] = vCopy
3901			}
3902			return ret
3903		})(o.TeamAvatars),
3904		TeamDesc:       o.TeamDesc,
3905		TeamID:         o.TeamID.DeepCopy(),
3906		TeamIsOpen:     o.TeamIsOpen,
3907		TeamName:       o.TeamName.DeepCopy(),
3908		TeamNumMembers: o.TeamNumMembers,
3909	}
3910}
3911
3912type ImplicitTeamUserSet struct {
3913	KeybaseUsers    []string          `codec:"keybaseUsers" json:"keybaseUsers"`
3914	UnresolvedUsers []SocialAssertion `codec:"unresolvedUsers" json:"unresolvedUsers"`
3915}
3916
3917func (o ImplicitTeamUserSet) DeepCopy() ImplicitTeamUserSet {
3918	return ImplicitTeamUserSet{
3919		KeybaseUsers: (func(x []string) []string {
3920			if x == nil {
3921				return nil
3922			}
3923			ret := make([]string, len(x))
3924			for i, v := range x {
3925				vCopy := v
3926				ret[i] = vCopy
3927			}
3928			return ret
3929		})(o.KeybaseUsers),
3930		UnresolvedUsers: (func(x []SocialAssertion) []SocialAssertion {
3931			if x == nil {
3932				return nil
3933			}
3934			ret := make([]SocialAssertion, len(x))
3935			for i, v := range x {
3936				vCopy := v.DeepCopy()
3937				ret[i] = vCopy
3938			}
3939			return ret
3940		})(o.UnresolvedUsers),
3941	}
3942}
3943
3944// * iTeams
3945type ImplicitTeamDisplayName struct {
3946	IsPublic     bool                      `codec:"isPublic" json:"isPublic"`
3947	Writers      ImplicitTeamUserSet       `codec:"writers" json:"writers"`
3948	Readers      ImplicitTeamUserSet       `codec:"readers" json:"readers"`
3949	ConflictInfo *ImplicitTeamConflictInfo `codec:"conflictInfo,omitempty" json:"conflictInfo,omitempty"`
3950}
3951
3952func (o ImplicitTeamDisplayName) DeepCopy() ImplicitTeamDisplayName {
3953	return ImplicitTeamDisplayName{
3954		IsPublic: o.IsPublic,
3955		Writers:  o.Writers.DeepCopy(),
3956		Readers:  o.Readers.DeepCopy(),
3957		ConflictInfo: (func(x *ImplicitTeamConflictInfo) *ImplicitTeamConflictInfo {
3958			if x == nil {
3959				return nil
3960			}
3961			tmp := (*x).DeepCopy()
3962			return &tmp
3963		})(o.ConflictInfo),
3964	}
3965}
3966
3967type ConflictGeneration int
3968
3969func (o ConflictGeneration) DeepCopy() ConflictGeneration {
3970	return o
3971}
3972
3973type ImplicitTeamConflictInfo struct {
3974	Generation ConflictGeneration `codec:"generation" json:"generation"`
3975	Time       Time               `codec:"time" json:"time"`
3976}
3977
3978func (o ImplicitTeamConflictInfo) DeepCopy() ImplicitTeamConflictInfo {
3979	return ImplicitTeamConflictInfo{
3980		Generation: o.Generation.DeepCopy(),
3981		Time:       o.Time.DeepCopy(),
3982	}
3983}
3984
3985type LookupImplicitTeamRes struct {
3986	TeamID      TeamID                  `codec:"teamID" json:"teamID"`
3987	Name        TeamName                `codec:"name" json:"name"`
3988	DisplayName ImplicitTeamDisplayName `codec:"displayName" json:"displayName"`
3989	TlfID       TLFID                   `codec:"tlfID" json:"tlfID"`
3990}
3991
3992func (o LookupImplicitTeamRes) DeepCopy() LookupImplicitTeamRes {
3993	return LookupImplicitTeamRes{
3994		TeamID:      o.TeamID.DeepCopy(),
3995		Name:        o.Name.DeepCopy(),
3996		DisplayName: o.DisplayName.DeepCopy(),
3997		TlfID:       o.TlfID.DeepCopy(),
3998	}
3999}
4000
4001type TeamOperation struct {
4002	ManageMembers          bool `codec:"manageMembers" json:"manageMembers"`
4003	ManageSubteams         bool `codec:"manageSubteams" json:"manageSubteams"`
4004	CreateChannel          bool `codec:"createChannel" json:"createChannel"`
4005	Chat                   bool `codec:"chat" json:"chat"`
4006	DeleteChannel          bool `codec:"deleteChannel" json:"deleteChannel"`
4007	RenameChannel          bool `codec:"renameChannel" json:"renameChannel"`
4008	RenameTeam             bool `codec:"renameTeam" json:"renameTeam"`
4009	EditChannelDescription bool `codec:"editChannelDescription" json:"editChannelDescription"`
4010	EditTeamDescription    bool `codec:"editTeamDescription" json:"editTeamDescription"`
4011	SetTeamShowcase        bool `codec:"setTeamShowcase" json:"setTeamShowcase"`
4012	SetMemberShowcase      bool `codec:"setMemberShowcase" json:"setMemberShowcase"`
4013	SetRetentionPolicy     bool `codec:"setRetentionPolicy" json:"setRetentionPolicy"`
4014	SetMinWriterRole       bool `codec:"setMinWriterRole" json:"setMinWriterRole"`
4015	ChangeOpenTeam         bool `codec:"changeOpenTeam" json:"changeOpenTeam"`
4016	LeaveTeam              bool `codec:"leaveTeam" json:"leaveTeam"`
4017	JoinTeam               bool `codec:"joinTeam" json:"joinTeam"`
4018	SetPublicityAny        bool `codec:"setPublicityAny" json:"setPublicityAny"`
4019	ListFirst              bool `codec:"listFirst" json:"listFirst"`
4020	ChangeTarsDisabled     bool `codec:"changeTarsDisabled" json:"changeTarsDisabled"`
4021	DeleteChatHistory      bool `codec:"deleteChatHistory" json:"deleteChatHistory"`
4022	DeleteOtherEmojis      bool `codec:"deleteOtherEmojis" json:"deleteOtherEmojis"`
4023	DeleteOtherMessages    bool `codec:"deleteOtherMessages" json:"deleteOtherMessages"`
4024	DeleteTeam             bool `codec:"deleteTeam" json:"deleteTeam"`
4025	PinMessage             bool `codec:"pinMessage" json:"pinMessage"`
4026	ManageBots             bool `codec:"manageBots" json:"manageBots"`
4027	ManageEmojis           bool `codec:"manageEmojis" json:"manageEmojis"`
4028}
4029
4030func (o TeamOperation) DeepCopy() TeamOperation {
4031	return TeamOperation{
4032		ManageMembers:          o.ManageMembers,
4033		ManageSubteams:         o.ManageSubteams,
4034		CreateChannel:          o.CreateChannel,
4035		Chat:                   o.Chat,
4036		DeleteChannel:          o.DeleteChannel,
4037		RenameChannel:          o.RenameChannel,
4038		RenameTeam:             o.RenameTeam,
4039		EditChannelDescription: o.EditChannelDescription,
4040		EditTeamDescription:    o.EditTeamDescription,
4041		SetTeamShowcase:        o.SetTeamShowcase,
4042		SetMemberShowcase:      o.SetMemberShowcase,
4043		SetRetentionPolicy:     o.SetRetentionPolicy,
4044		SetMinWriterRole:       o.SetMinWriterRole,
4045		ChangeOpenTeam:         o.ChangeOpenTeam,
4046		LeaveTeam:              o.LeaveTeam,
4047		JoinTeam:               o.JoinTeam,
4048		SetPublicityAny:        o.SetPublicityAny,
4049		ListFirst:              o.ListFirst,
4050		ChangeTarsDisabled:     o.ChangeTarsDisabled,
4051		DeleteChatHistory:      o.DeleteChatHistory,
4052		DeleteOtherEmojis:      o.DeleteOtherEmojis,
4053		DeleteOtherMessages:    o.DeleteOtherMessages,
4054		DeleteTeam:             o.DeleteTeam,
4055		PinMessage:             o.PinMessage,
4056		ManageBots:             o.ManageBots,
4057		ManageEmojis:           o.ManageEmojis,
4058	}
4059}
4060
4061type ProfileTeamLoadRes struct {
4062	LoadTimeNsec int64 `codec:"loadTimeNsec" json:"loadTimeNsec"`
4063}
4064
4065func (o ProfileTeamLoadRes) DeepCopy() ProfileTeamLoadRes {
4066	return ProfileTeamLoadRes{
4067		LoadTimeNsec: o.LoadTimeNsec,
4068	}
4069}
4070
4071type RotationType int
4072
4073const (
4074	RotationType_VISIBLE RotationType = 0
4075	RotationType_HIDDEN  RotationType = 1
4076	RotationType_CLKR    RotationType = 2
4077)
4078
4079func (o RotationType) DeepCopy() RotationType { return o }
4080
4081var RotationTypeMap = map[string]RotationType{
4082	"VISIBLE": 0,
4083	"HIDDEN":  1,
4084	"CLKR":    2,
4085}
4086
4087var RotationTypeRevMap = map[RotationType]string{
4088	0: "VISIBLE",
4089	1: "HIDDEN",
4090	2: "CLKR",
4091}
4092
4093func (e RotationType) String() string {
4094	if v, ok := RotationTypeRevMap[e]; ok {
4095		return v
4096	}
4097	return fmt.Sprintf("%v", int(e))
4098}
4099
4100type TeamDebugRes struct {
4101	Chain TeamSigChainState `codec:"chain" json:"chain"`
4102}
4103
4104func (o TeamDebugRes) DeepCopy() TeamDebugRes {
4105	return TeamDebugRes{
4106		Chain: o.Chain.DeepCopy(),
4107	}
4108}
4109
4110type TeamProfileAddEntry struct {
4111	TeamID         TeamID   `codec:"teamID" json:"teamID"`
4112	TeamName       TeamName `codec:"teamName" json:"teamName"`
4113	Open           bool     `codec:"open" json:"open"`
4114	DisabledReason string   `codec:"disabledReason" json:"disabledReason"`
4115}
4116
4117func (o TeamProfileAddEntry) DeepCopy() TeamProfileAddEntry {
4118	return TeamProfileAddEntry{
4119		TeamID:         o.TeamID.DeepCopy(),
4120		TeamName:       o.TeamName.DeepCopy(),
4121		Open:           o.Open,
4122		DisabledReason: o.DisabledReason,
4123	}
4124}
4125
4126type MemberEmail struct {
4127	Email string `codec:"email" json:"email"`
4128	Role  string `codec:"role" json:"role"`
4129}
4130
4131func (o MemberEmail) DeepCopy() MemberEmail {
4132	return MemberEmail{
4133		Email: o.Email,
4134		Role:  o.Role,
4135	}
4136}
4137
4138type MemberUsername struct {
4139	Username string `codec:"username" json:"username"`
4140	Role     string `codec:"role" json:"role"`
4141}
4142
4143func (o MemberUsername) DeepCopy() MemberUsername {
4144	return MemberUsername{
4145		Username: o.Username,
4146		Role:     o.Role,
4147	}
4148}
4149
4150type TeamRolePair struct {
4151	Role         TeamRole `codec:"role" json:"role"`
4152	ImplicitRole TeamRole `codec:"implicitRole" json:"implicit_role"`
4153}
4154
4155func (o TeamRolePair) DeepCopy() TeamRolePair {
4156	return TeamRolePair{
4157		Role:         o.Role.DeepCopy(),
4158		ImplicitRole: o.ImplicitRole.DeepCopy(),
4159	}
4160}
4161
4162type TeamRoleMapAndVersion struct {
4163	Teams   map[TeamID]TeamRolePair `codec:"teams" json:"teams"`
4164	Version UserTeamVersion         `codec:"version" json:"user_team_version"`
4165}
4166
4167func (o TeamRoleMapAndVersion) DeepCopy() TeamRoleMapAndVersion {
4168	return TeamRoleMapAndVersion{
4169		Teams: (func(x map[TeamID]TeamRolePair) map[TeamID]TeamRolePair {
4170			if x == nil {
4171				return nil
4172			}
4173			ret := make(map[TeamID]TeamRolePair, len(x))
4174			for k, v := range x {
4175				kCopy := k.DeepCopy()
4176				vCopy := v.DeepCopy()
4177				ret[kCopy] = vCopy
4178			}
4179			return ret
4180		})(o.Teams),
4181		Version: o.Version.DeepCopy(),
4182	}
4183}
4184
4185type TeamRoleMapStored struct {
4186	Data     TeamRoleMapAndVersion `codec:"data" json:"data"`
4187	CachedAt Time                  `codec:"cachedAt" json:"cachedAt"`
4188}
4189
4190func (o TeamRoleMapStored) DeepCopy() TeamRoleMapStored {
4191	return TeamRoleMapStored{
4192		Data:     o.Data.DeepCopy(),
4193		CachedAt: o.CachedAt.DeepCopy(),
4194	}
4195}
4196
4197type UserTeamVersion int
4198
4199func (o UserTeamVersion) DeepCopy() UserTeamVersion {
4200	return o
4201}
4202
4203type UserTeamVersionUpdate struct {
4204	Version UserTeamVersion `codec:"version" json:"version"`
4205}
4206
4207func (o UserTeamVersionUpdate) DeepCopy() UserTeamVersionUpdate {
4208	return UserTeamVersionUpdate{
4209		Version: o.Version.DeepCopy(),
4210	}
4211}
4212
4213type AnnotatedTeamMemberDetails struct {
4214	Details TeamMemberDetails `codec:"details" json:"details"`
4215	Role    TeamRole          `codec:"role" json:"role"`
4216}
4217
4218func (o AnnotatedTeamMemberDetails) DeepCopy() AnnotatedTeamMemberDetails {
4219	return AnnotatedTeamMemberDetails{
4220		Details: o.Details.DeepCopy(),
4221		Role:    o.Role.DeepCopy(),
4222	}
4223}
4224
4225type AnnotatedTeam struct {
4226	TeamID                       TeamID                       `codec:"teamID" json:"teamID"`
4227	Name                         string                       `codec:"name" json:"name"`
4228	TransitiveSubteamsUnverified SubteamListResult            `codec:"transitiveSubteamsUnverified" json:"transitiveSubteamsUnverified"`
4229	Members                      []AnnotatedTeamMemberDetails `codec:"members" json:"members"`
4230	Invites                      []AnnotatedTeamInvite        `codec:"invites" json:"invites"`
4231	JoinRequests                 []TeamJoinRequest            `codec:"joinRequests" json:"joinRequests"`
4232	TarsDisabled                 bool                         `codec:"tarsDisabled" json:"tarsDisabled"`
4233	Settings                     TeamSettings                 `codec:"settings" json:"settings"`
4234	Showcase                     TeamShowcase                 `codec:"showcase" json:"showcase"`
4235}
4236
4237func (o AnnotatedTeam) DeepCopy() AnnotatedTeam {
4238	return AnnotatedTeam{
4239		TeamID: o.TeamID.DeepCopy(),
4240		Name:   o.Name,
4241		TransitiveSubteamsUnverified: o.TransitiveSubteamsUnverified.DeepCopy(),
4242		Members: (func(x []AnnotatedTeamMemberDetails) []AnnotatedTeamMemberDetails {
4243			if x == nil {
4244				return nil
4245			}
4246			ret := make([]AnnotatedTeamMemberDetails, len(x))
4247			for i, v := range x {
4248				vCopy := v.DeepCopy()
4249				ret[i] = vCopy
4250			}
4251			return ret
4252		})(o.Members),
4253		Invites: (func(x []AnnotatedTeamInvite) []AnnotatedTeamInvite {
4254			if x == nil {
4255				return nil
4256			}
4257			ret := make([]AnnotatedTeamInvite, len(x))
4258			for i, v := range x {
4259				vCopy := v.DeepCopy()
4260				ret[i] = vCopy
4261			}
4262			return ret
4263		})(o.Invites),
4264		JoinRequests: (func(x []TeamJoinRequest) []TeamJoinRequest {
4265			if x == nil {
4266				return nil
4267			}
4268			ret := make([]TeamJoinRequest, len(x))
4269			for i, v := range x {
4270				vCopy := v.DeepCopy()
4271				ret[i] = vCopy
4272			}
4273			return ret
4274		})(o.JoinRequests),
4275		TarsDisabled: o.TarsDisabled,
4276		Settings:     o.Settings.DeepCopy(),
4277		Showcase:     o.Showcase.DeepCopy(),
4278	}
4279}
4280
4281type TeamTreeMembershipValue struct {
4282	Role     TeamRole `codec:"role" json:"role"`
4283	JoinTime *Time    `codec:"joinTime,omitempty" json:"joinTime,omitempty"`
4284	TeamID   TeamID   `codec:"teamID" json:"teamID"`
4285}
4286
4287func (o TeamTreeMembershipValue) DeepCopy() TeamTreeMembershipValue {
4288	return TeamTreeMembershipValue{
4289		Role: o.Role.DeepCopy(),
4290		JoinTime: (func(x *Time) *Time {
4291			if x == nil {
4292				return nil
4293			}
4294			tmp := (*x).DeepCopy()
4295			return &tmp
4296		})(o.JoinTime),
4297		TeamID: o.TeamID.DeepCopy(),
4298	}
4299}
4300
4301type TeamTreeMembershipStatus int
4302
4303const (
4304	TeamTreeMembershipStatus_OK     TeamTreeMembershipStatus = 0
4305	TeamTreeMembershipStatus_ERROR  TeamTreeMembershipStatus = 1
4306	TeamTreeMembershipStatus_HIDDEN TeamTreeMembershipStatus = 2
4307)
4308
4309func (o TeamTreeMembershipStatus) DeepCopy() TeamTreeMembershipStatus { return o }
4310
4311var TeamTreeMembershipStatusMap = map[string]TeamTreeMembershipStatus{
4312	"OK":     0,
4313	"ERROR":  1,
4314	"HIDDEN": 2,
4315}
4316
4317var TeamTreeMembershipStatusRevMap = map[TeamTreeMembershipStatus]string{
4318	0: "OK",
4319	1: "ERROR",
4320	2: "HIDDEN",
4321}
4322
4323func (e TeamTreeMembershipStatus) String() string {
4324	if v, ok := TeamTreeMembershipStatusRevMap[e]; ok {
4325		return v
4326	}
4327	return fmt.Sprintf("%v", int(e))
4328}
4329
4330type TeamTreeError struct {
4331	Message           string `codec:"message" json:"message"`
4332	WillSkipSubtree   bool   `codec:"willSkipSubtree" json:"willSkipSubtree"`
4333	WillSkipAncestors bool   `codec:"willSkipAncestors" json:"willSkipAncestors"`
4334}
4335
4336func (o TeamTreeError) DeepCopy() TeamTreeError {
4337	return TeamTreeError{
4338		Message:           o.Message,
4339		WillSkipSubtree:   o.WillSkipSubtree,
4340		WillSkipAncestors: o.WillSkipAncestors,
4341	}
4342}
4343
4344type TeamTreeMembershipResult struct {
4345	S__     TeamTreeMembershipStatus `codec:"s" json:"s"`
4346	Ok__    *TeamTreeMembershipValue `codec:"ok,omitempty" json:"ok,omitempty"`
4347	Error__ *TeamTreeError           `codec:"error,omitempty" json:"error,omitempty"`
4348}
4349
4350func (o *TeamTreeMembershipResult) S() (ret TeamTreeMembershipStatus, err error) {
4351	switch o.S__ {
4352	case TeamTreeMembershipStatus_OK:
4353		if o.Ok__ == nil {
4354			err = errors.New("unexpected nil value for Ok__")
4355			return ret, err
4356		}
4357	case TeamTreeMembershipStatus_ERROR:
4358		if o.Error__ == nil {
4359			err = errors.New("unexpected nil value for Error__")
4360			return ret, err
4361		}
4362	}
4363	return o.S__, nil
4364}
4365
4366func (o TeamTreeMembershipResult) Ok() (res TeamTreeMembershipValue) {
4367	if o.S__ != TeamTreeMembershipStatus_OK {
4368		panic("wrong case accessed")
4369	}
4370	if o.Ok__ == nil {
4371		return
4372	}
4373	return *o.Ok__
4374}
4375
4376func (o TeamTreeMembershipResult) Error() (res TeamTreeError) {
4377	if o.S__ != TeamTreeMembershipStatus_ERROR {
4378		panic("wrong case accessed")
4379	}
4380	if o.Error__ == nil {
4381		return
4382	}
4383	return *o.Error__
4384}
4385
4386func NewTeamTreeMembershipResultWithOk(v TeamTreeMembershipValue) TeamTreeMembershipResult {
4387	return TeamTreeMembershipResult{
4388		S__:  TeamTreeMembershipStatus_OK,
4389		Ok__: &v,
4390	}
4391}
4392
4393func NewTeamTreeMembershipResultWithError(v TeamTreeError) TeamTreeMembershipResult {
4394	return TeamTreeMembershipResult{
4395		S__:     TeamTreeMembershipStatus_ERROR,
4396		Error__: &v,
4397	}
4398}
4399
4400func NewTeamTreeMembershipResultWithHidden() TeamTreeMembershipResult {
4401	return TeamTreeMembershipResult{
4402		S__: TeamTreeMembershipStatus_HIDDEN,
4403	}
4404}
4405
4406func (o TeamTreeMembershipResult) DeepCopy() TeamTreeMembershipResult {
4407	return TeamTreeMembershipResult{
4408		S__: o.S__.DeepCopy(),
4409		Ok__: (func(x *TeamTreeMembershipValue) *TeamTreeMembershipValue {
4410			if x == nil {
4411				return nil
4412			}
4413			tmp := (*x).DeepCopy()
4414			return &tmp
4415		})(o.Ok__),
4416		Error__: (func(x *TeamTreeError) *TeamTreeError {
4417			if x == nil {
4418				return nil
4419			}
4420			tmp := (*x).DeepCopy()
4421			return &tmp
4422		})(o.Error__),
4423	}
4424}
4425
4426type TeamTreeMembership struct {
4427	TeamName       string                   `codec:"teamName" json:"teamName"`
4428	Result         TeamTreeMembershipResult `codec:"result" json:"result"`
4429	TargetTeamID   TeamID                   `codec:"targetTeamID" json:"targetTeamID"`
4430	TargetUsername string                   `codec:"targetUsername" json:"targetUsername"`
4431	Guid           int                      `codec:"guid" json:"guid"`
4432}
4433
4434func (o TeamTreeMembership) DeepCopy() TeamTreeMembership {
4435	return TeamTreeMembership{
4436		TeamName:       o.TeamName,
4437		Result:         o.Result.DeepCopy(),
4438		TargetTeamID:   o.TargetTeamID.DeepCopy(),
4439		TargetUsername: o.TargetUsername,
4440		Guid:           o.Guid,
4441	}
4442}
4443
4444type TeamTreeMembershipsDoneResult struct {
4445	ExpectedCount  int    `codec:"expectedCount" json:"expectedCount"`
4446	TargetTeamID   TeamID `codec:"targetTeamID" json:"targetTeamID"`
4447	TargetUsername string `codec:"targetUsername" json:"targetUsername"`
4448	Guid           int    `codec:"guid" json:"guid"`
4449}
4450
4451func (o TeamTreeMembershipsDoneResult) DeepCopy() TeamTreeMembershipsDoneResult {
4452	return TeamTreeMembershipsDoneResult{
4453		ExpectedCount:  o.ExpectedCount,
4454		TargetTeamID:   o.TargetTeamID.DeepCopy(),
4455		TargetUsername: o.TargetUsername,
4456		Guid:           o.Guid,
4457	}
4458}
4459
4460type TeamTreeInitial struct {
4461	Guid int `codec:"guid" json:"guid"`
4462}
4463
4464func (o TeamTreeInitial) DeepCopy() TeamTreeInitial {
4465	return TeamTreeInitial{
4466		Guid: o.Guid,
4467	}
4468}
4469