//go:build !no_gotd_slices
// +build !no_gotd_slices

// Code generated by gotdgen, DO NOT EDIT.

package tg

import (
	
	
	
	
	

	

	
	
	
	
)

// No-op definition for keeping imports.
var (
	_ = bin.Buffer{}
	_ = context.Background()
	_ = fmt.Stringer(nil)
	_ = strings.Builder{}
	_ = errors.Is
	_ = multierr.AppendInto
	_ = sort.Ints
	_ = tdp.Format
	_ = tgerr.Error{}
	_ = tdjson.Encoder{}
)

// ChannelAdminLogEventActionClassArray is adapter for slice of ChannelAdminLogEventActionClass.
type ChannelAdminLogEventActionClassArray []ChannelAdminLogEventActionClass

// Sort sorts slice of ChannelAdminLogEventActionClass.
func ( ChannelAdminLogEventActionClassArray) ( func(,  ChannelAdminLogEventActionClass) bool) ChannelAdminLogEventActionClassArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionClass.
func ( ChannelAdminLogEventActionClassArray) ( func(,  ChannelAdminLogEventActionClass) bool) ChannelAdminLogEventActionClassArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionClass.
func ( ChannelAdminLogEventActionClassArray) ( func( ChannelAdminLogEventActionClass) bool) ChannelAdminLogEventActionClassArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionClass,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionClass,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionClass,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionClass
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionClass,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// AsChannelAdminLogEventActionChangeTitle returns copy with only ChannelAdminLogEventActionChangeTitle constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeTitleArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeTitle)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeAbout returns copy with only ChannelAdminLogEventActionChangeAbout constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeAboutArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeAbout)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeUsername returns copy with only ChannelAdminLogEventActionChangeUsername constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeUsernameArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeUsername)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangePhoto returns copy with only ChannelAdminLogEventActionChangePhoto constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangePhotoArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangePhoto)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionToggleInvites returns copy with only ChannelAdminLogEventActionToggleInvites constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionToggleInvitesArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionToggleInvites)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionToggleSignatures returns copy with only ChannelAdminLogEventActionToggleSignatures constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionToggleSignaturesArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionToggleSignatures)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionUpdatePinned returns copy with only ChannelAdminLogEventActionUpdatePinned constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionUpdatePinnedArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionUpdatePinned)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionEditMessage returns copy with only ChannelAdminLogEventActionEditMessage constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionEditMessageArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionEditMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionDeleteMessage returns copy with only ChannelAdminLogEventActionDeleteMessage constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionDeleteMessageArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionDeleteMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionParticipantInvite returns copy with only ChannelAdminLogEventActionParticipantInvite constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionParticipantInviteArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionParticipantInvite)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionParticipantToggleBan returns copy with only ChannelAdminLogEventActionParticipantToggleBan constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionParticipantToggleBanArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionParticipantToggleBan)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionParticipantToggleAdmin returns copy with only ChannelAdminLogEventActionParticipantToggleAdmin constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionParticipantToggleAdminArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionParticipantToggleAdmin)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeStickerSet returns copy with only ChannelAdminLogEventActionChangeStickerSet constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeStickerSetArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeStickerSet)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionTogglePreHistoryHidden returns copy with only ChannelAdminLogEventActionTogglePreHistoryHidden constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionTogglePreHistoryHiddenArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionTogglePreHistoryHidden)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionDefaultBannedRights returns copy with only ChannelAdminLogEventActionDefaultBannedRights constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionDefaultBannedRightsArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionDefaultBannedRights)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionStopPoll returns copy with only ChannelAdminLogEventActionStopPoll constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionStopPollArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionStopPoll)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeLinkedChat returns copy with only ChannelAdminLogEventActionChangeLinkedChat constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeLinkedChatArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeLinkedChat)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeLocation returns copy with only ChannelAdminLogEventActionChangeLocation constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeLocationArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeLocation)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionToggleSlowMode returns copy with only ChannelAdminLogEventActionToggleSlowMode constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionToggleSlowModeArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionToggleSlowMode)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionStartGroupCall returns copy with only ChannelAdminLogEventActionStartGroupCall constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionStartGroupCallArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionStartGroupCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionDiscardGroupCall returns copy with only ChannelAdminLogEventActionDiscardGroupCall constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionDiscardGroupCallArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionDiscardGroupCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionParticipantMute returns copy with only ChannelAdminLogEventActionParticipantMute constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionParticipantMuteArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionParticipantMute)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionParticipantUnmute returns copy with only ChannelAdminLogEventActionParticipantUnmute constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionParticipantUnmuteArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionParticipantUnmute)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionToggleGroupCallSetting returns copy with only ChannelAdminLogEventActionToggleGroupCallSetting constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionToggleGroupCallSettingArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionToggleGroupCallSetting)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionParticipantJoinByInvite returns copy with only ChannelAdminLogEventActionParticipantJoinByInvite constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionParticipantJoinByInviteArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionParticipantJoinByInvite)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionExportedInviteDelete returns copy with only ChannelAdminLogEventActionExportedInviteDelete constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionExportedInviteDeleteArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionExportedInviteDelete)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionExportedInviteRevoke returns copy with only ChannelAdminLogEventActionExportedInviteRevoke constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionExportedInviteRevokeArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionExportedInviteRevoke)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionExportedInviteEdit returns copy with only ChannelAdminLogEventActionExportedInviteEdit constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionExportedInviteEditArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionExportedInviteEdit)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionParticipantVolume returns copy with only ChannelAdminLogEventActionParticipantVolume constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionParticipantVolumeArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionParticipantVolume)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeHistoryTTL returns copy with only ChannelAdminLogEventActionChangeHistoryTTL constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeHistoryTTLArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeHistoryTTL)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionParticipantJoinByRequest returns copy with only ChannelAdminLogEventActionParticipantJoinByRequest constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionParticipantJoinByRequestArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionParticipantJoinByRequest)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionToggleNoForwards returns copy with only ChannelAdminLogEventActionToggleNoForwards constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionToggleNoForwardsArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionToggleNoForwards)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionSendMessage returns copy with only ChannelAdminLogEventActionSendMessage constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionSendMessageArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionSendMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeAvailableReactions returns copy with only ChannelAdminLogEventActionChangeAvailableReactions constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeAvailableReactionsArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeAvailableReactions)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeUsernames returns copy with only ChannelAdminLogEventActionChangeUsernames constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeUsernamesArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeUsernames)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionToggleForum returns copy with only ChannelAdminLogEventActionToggleForum constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionToggleForumArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionToggleForum)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionCreateTopic returns copy with only ChannelAdminLogEventActionCreateTopic constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionCreateTopicArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionCreateTopic)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionEditTopic returns copy with only ChannelAdminLogEventActionEditTopic constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionEditTopicArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionEditTopic)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionDeleteTopic returns copy with only ChannelAdminLogEventActionDeleteTopic constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionDeleteTopicArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionDeleteTopic)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionPinTopic returns copy with only ChannelAdminLogEventActionPinTopic constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionPinTopicArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionPinTopic)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionToggleAntiSpam returns copy with only ChannelAdminLogEventActionToggleAntiSpam constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionToggleAntiSpamArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionToggleAntiSpam)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangePeerColor returns copy with only ChannelAdminLogEventActionChangePeerColor constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangePeerColorArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangePeerColor)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeProfilePeerColor returns copy with only ChannelAdminLogEventActionChangeProfilePeerColor constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeProfilePeerColorArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeProfilePeerColor)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeWallpaper returns copy with only ChannelAdminLogEventActionChangeWallpaper constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeWallpaperArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeWallpaper)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsChannelAdminLogEventActionChangeEmojiStatus returns copy with only ChannelAdminLogEventActionChangeEmojiStatus constructors.
func ( ChannelAdminLogEventActionClassArray) () ( ChannelAdminLogEventActionChangeEmojiStatusArray) {
	for ,  := range  {
		,  := .(*ChannelAdminLogEventActionChangeEmojiStatus)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// ChannelAdminLogEventActionChangeTitleArray is adapter for slice of ChannelAdminLogEventActionChangeTitle.
type ChannelAdminLogEventActionChangeTitleArray []ChannelAdminLogEventActionChangeTitle

// Sort sorts slice of ChannelAdminLogEventActionChangeTitle.
func ( ChannelAdminLogEventActionChangeTitleArray) ( func(,  ChannelAdminLogEventActionChangeTitle) bool) ChannelAdminLogEventActionChangeTitleArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeTitle.
func ( ChannelAdminLogEventActionChangeTitleArray) ( func(,  ChannelAdminLogEventActionChangeTitle) bool) ChannelAdminLogEventActionChangeTitleArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeTitle.
func ( ChannelAdminLogEventActionChangeTitleArray) ( func( ChannelAdminLogEventActionChangeTitle) bool) ChannelAdminLogEventActionChangeTitleArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeTitleArray) () ( ChannelAdminLogEventActionChangeTitle,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeTitleArray) () ( ChannelAdminLogEventActionChangeTitle,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeTitleArray) () ( ChannelAdminLogEventActionChangeTitle,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeTitle
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeTitleArray) () ( ChannelAdminLogEventActionChangeTitle,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeAboutArray is adapter for slice of ChannelAdminLogEventActionChangeAbout.
type ChannelAdminLogEventActionChangeAboutArray []ChannelAdminLogEventActionChangeAbout

// Sort sorts slice of ChannelAdminLogEventActionChangeAbout.
func ( ChannelAdminLogEventActionChangeAboutArray) ( func(,  ChannelAdminLogEventActionChangeAbout) bool) ChannelAdminLogEventActionChangeAboutArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeAbout.
func ( ChannelAdminLogEventActionChangeAboutArray) ( func(,  ChannelAdminLogEventActionChangeAbout) bool) ChannelAdminLogEventActionChangeAboutArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeAbout.
func ( ChannelAdminLogEventActionChangeAboutArray) ( func( ChannelAdminLogEventActionChangeAbout) bool) ChannelAdminLogEventActionChangeAboutArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeAboutArray) () ( ChannelAdminLogEventActionChangeAbout,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeAboutArray) () ( ChannelAdminLogEventActionChangeAbout,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeAboutArray) () ( ChannelAdminLogEventActionChangeAbout,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeAbout
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeAboutArray) () ( ChannelAdminLogEventActionChangeAbout,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeUsernameArray is adapter for slice of ChannelAdminLogEventActionChangeUsername.
type ChannelAdminLogEventActionChangeUsernameArray []ChannelAdminLogEventActionChangeUsername

// Sort sorts slice of ChannelAdminLogEventActionChangeUsername.
func ( ChannelAdminLogEventActionChangeUsernameArray) ( func(,  ChannelAdminLogEventActionChangeUsername) bool) ChannelAdminLogEventActionChangeUsernameArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeUsername.
func ( ChannelAdminLogEventActionChangeUsernameArray) ( func(,  ChannelAdminLogEventActionChangeUsername) bool) ChannelAdminLogEventActionChangeUsernameArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeUsername.
func ( ChannelAdminLogEventActionChangeUsernameArray) ( func( ChannelAdminLogEventActionChangeUsername) bool) ChannelAdminLogEventActionChangeUsernameArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeUsernameArray) () ( ChannelAdminLogEventActionChangeUsername,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeUsernameArray) () ( ChannelAdminLogEventActionChangeUsername,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeUsernameArray) () ( ChannelAdminLogEventActionChangeUsername,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeUsername
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeUsernameArray) () ( ChannelAdminLogEventActionChangeUsername,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangePhotoArray is adapter for slice of ChannelAdminLogEventActionChangePhoto.
type ChannelAdminLogEventActionChangePhotoArray []ChannelAdminLogEventActionChangePhoto

// Sort sorts slice of ChannelAdminLogEventActionChangePhoto.
func ( ChannelAdminLogEventActionChangePhotoArray) ( func(,  ChannelAdminLogEventActionChangePhoto) bool) ChannelAdminLogEventActionChangePhotoArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangePhoto.
func ( ChannelAdminLogEventActionChangePhotoArray) ( func(,  ChannelAdminLogEventActionChangePhoto) bool) ChannelAdminLogEventActionChangePhotoArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangePhoto.
func ( ChannelAdminLogEventActionChangePhotoArray) ( func( ChannelAdminLogEventActionChangePhoto) bool) ChannelAdminLogEventActionChangePhotoArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangePhotoArray) () ( ChannelAdminLogEventActionChangePhoto,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangePhotoArray) () ( ChannelAdminLogEventActionChangePhoto,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangePhotoArray) () ( ChannelAdminLogEventActionChangePhoto,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangePhoto
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangePhotoArray) () ( ChannelAdminLogEventActionChangePhoto,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionToggleInvitesArray is adapter for slice of ChannelAdminLogEventActionToggleInvites.
type ChannelAdminLogEventActionToggleInvitesArray []ChannelAdminLogEventActionToggleInvites

// Sort sorts slice of ChannelAdminLogEventActionToggleInvites.
func ( ChannelAdminLogEventActionToggleInvitesArray) ( func(,  ChannelAdminLogEventActionToggleInvites) bool) ChannelAdminLogEventActionToggleInvitesArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionToggleInvites.
func ( ChannelAdminLogEventActionToggleInvitesArray) ( func(,  ChannelAdminLogEventActionToggleInvites) bool) ChannelAdminLogEventActionToggleInvitesArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionToggleInvites.
func ( ChannelAdminLogEventActionToggleInvitesArray) ( func( ChannelAdminLogEventActionToggleInvites) bool) ChannelAdminLogEventActionToggleInvitesArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionToggleInvitesArray) () ( ChannelAdminLogEventActionToggleInvites,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionToggleInvitesArray) () ( ChannelAdminLogEventActionToggleInvites,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleInvitesArray) () ( ChannelAdminLogEventActionToggleInvites,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionToggleInvites
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleInvitesArray) () ( ChannelAdminLogEventActionToggleInvites,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionToggleSignaturesArray is adapter for slice of ChannelAdminLogEventActionToggleSignatures.
type ChannelAdminLogEventActionToggleSignaturesArray []ChannelAdminLogEventActionToggleSignatures

// Sort sorts slice of ChannelAdminLogEventActionToggleSignatures.
func ( ChannelAdminLogEventActionToggleSignaturesArray) ( func(,  ChannelAdminLogEventActionToggleSignatures) bool) ChannelAdminLogEventActionToggleSignaturesArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionToggleSignatures.
func ( ChannelAdminLogEventActionToggleSignaturesArray) ( func(,  ChannelAdminLogEventActionToggleSignatures) bool) ChannelAdminLogEventActionToggleSignaturesArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionToggleSignatures.
func ( ChannelAdminLogEventActionToggleSignaturesArray) ( func( ChannelAdminLogEventActionToggleSignatures) bool) ChannelAdminLogEventActionToggleSignaturesArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionToggleSignaturesArray) () ( ChannelAdminLogEventActionToggleSignatures,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionToggleSignaturesArray) () ( ChannelAdminLogEventActionToggleSignatures,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleSignaturesArray) () ( ChannelAdminLogEventActionToggleSignatures,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionToggleSignatures
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleSignaturesArray) () ( ChannelAdminLogEventActionToggleSignatures,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionUpdatePinnedArray is adapter for slice of ChannelAdminLogEventActionUpdatePinned.
type ChannelAdminLogEventActionUpdatePinnedArray []ChannelAdminLogEventActionUpdatePinned

// Sort sorts slice of ChannelAdminLogEventActionUpdatePinned.
func ( ChannelAdminLogEventActionUpdatePinnedArray) ( func(,  ChannelAdminLogEventActionUpdatePinned) bool) ChannelAdminLogEventActionUpdatePinnedArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionUpdatePinned.
func ( ChannelAdminLogEventActionUpdatePinnedArray) ( func(,  ChannelAdminLogEventActionUpdatePinned) bool) ChannelAdminLogEventActionUpdatePinnedArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionUpdatePinned.
func ( ChannelAdminLogEventActionUpdatePinnedArray) ( func( ChannelAdminLogEventActionUpdatePinned) bool) ChannelAdminLogEventActionUpdatePinnedArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionUpdatePinnedArray) () ( ChannelAdminLogEventActionUpdatePinned,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionUpdatePinnedArray) () ( ChannelAdminLogEventActionUpdatePinned,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionUpdatePinnedArray) () ( ChannelAdminLogEventActionUpdatePinned,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionUpdatePinned
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionUpdatePinnedArray) () ( ChannelAdminLogEventActionUpdatePinned,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionEditMessageArray is adapter for slice of ChannelAdminLogEventActionEditMessage.
type ChannelAdminLogEventActionEditMessageArray []ChannelAdminLogEventActionEditMessage

// Sort sorts slice of ChannelAdminLogEventActionEditMessage.
func ( ChannelAdminLogEventActionEditMessageArray) ( func(,  ChannelAdminLogEventActionEditMessage) bool) ChannelAdminLogEventActionEditMessageArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionEditMessage.
func ( ChannelAdminLogEventActionEditMessageArray) ( func(,  ChannelAdminLogEventActionEditMessage) bool) ChannelAdminLogEventActionEditMessageArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionEditMessage.
func ( ChannelAdminLogEventActionEditMessageArray) ( func( ChannelAdminLogEventActionEditMessage) bool) ChannelAdminLogEventActionEditMessageArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionEditMessageArray) () ( ChannelAdminLogEventActionEditMessage,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionEditMessageArray) () ( ChannelAdminLogEventActionEditMessage,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionEditMessageArray) () ( ChannelAdminLogEventActionEditMessage,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionEditMessage
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionEditMessageArray) () ( ChannelAdminLogEventActionEditMessage,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionDeleteMessageArray is adapter for slice of ChannelAdminLogEventActionDeleteMessage.
type ChannelAdminLogEventActionDeleteMessageArray []ChannelAdminLogEventActionDeleteMessage

// Sort sorts slice of ChannelAdminLogEventActionDeleteMessage.
func ( ChannelAdminLogEventActionDeleteMessageArray) ( func(,  ChannelAdminLogEventActionDeleteMessage) bool) ChannelAdminLogEventActionDeleteMessageArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionDeleteMessage.
func ( ChannelAdminLogEventActionDeleteMessageArray) ( func(,  ChannelAdminLogEventActionDeleteMessage) bool) ChannelAdminLogEventActionDeleteMessageArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionDeleteMessage.
func ( ChannelAdminLogEventActionDeleteMessageArray) ( func( ChannelAdminLogEventActionDeleteMessage) bool) ChannelAdminLogEventActionDeleteMessageArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionDeleteMessageArray) () ( ChannelAdminLogEventActionDeleteMessage,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionDeleteMessageArray) () ( ChannelAdminLogEventActionDeleteMessage,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionDeleteMessageArray) () ( ChannelAdminLogEventActionDeleteMessage,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionDeleteMessage
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionDeleteMessageArray) () ( ChannelAdminLogEventActionDeleteMessage,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionParticipantInviteArray is adapter for slice of ChannelAdminLogEventActionParticipantInvite.
type ChannelAdminLogEventActionParticipantInviteArray []ChannelAdminLogEventActionParticipantInvite

// Sort sorts slice of ChannelAdminLogEventActionParticipantInvite.
func ( ChannelAdminLogEventActionParticipantInviteArray) ( func(,  ChannelAdminLogEventActionParticipantInvite) bool) ChannelAdminLogEventActionParticipantInviteArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionParticipantInvite.
func ( ChannelAdminLogEventActionParticipantInviteArray) ( func(,  ChannelAdminLogEventActionParticipantInvite) bool) ChannelAdminLogEventActionParticipantInviteArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionParticipantInvite.
func ( ChannelAdminLogEventActionParticipantInviteArray) ( func( ChannelAdminLogEventActionParticipantInvite) bool) ChannelAdminLogEventActionParticipantInviteArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantInviteArray) () ( ChannelAdminLogEventActionParticipantInvite,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantInviteArray) () ( ChannelAdminLogEventActionParticipantInvite,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantInviteArray) () ( ChannelAdminLogEventActionParticipantInvite,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionParticipantInvite
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantInviteArray) () ( ChannelAdminLogEventActionParticipantInvite,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionParticipantToggleBanArray is adapter for slice of ChannelAdminLogEventActionParticipantToggleBan.
type ChannelAdminLogEventActionParticipantToggleBanArray []ChannelAdminLogEventActionParticipantToggleBan

// Sort sorts slice of ChannelAdminLogEventActionParticipantToggleBan.
func ( ChannelAdminLogEventActionParticipantToggleBanArray) ( func(,  ChannelAdminLogEventActionParticipantToggleBan) bool) ChannelAdminLogEventActionParticipantToggleBanArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionParticipantToggleBan.
func ( ChannelAdminLogEventActionParticipantToggleBanArray) ( func(,  ChannelAdminLogEventActionParticipantToggleBan) bool) ChannelAdminLogEventActionParticipantToggleBanArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionParticipantToggleBan.
func ( ChannelAdminLogEventActionParticipantToggleBanArray) ( func( ChannelAdminLogEventActionParticipantToggleBan) bool) ChannelAdminLogEventActionParticipantToggleBanArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantToggleBanArray) () ( ChannelAdminLogEventActionParticipantToggleBan,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantToggleBanArray) () ( ChannelAdminLogEventActionParticipantToggleBan,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantToggleBanArray) () ( ChannelAdminLogEventActionParticipantToggleBan,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionParticipantToggleBan
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantToggleBanArray) () ( ChannelAdminLogEventActionParticipantToggleBan,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionParticipantToggleAdminArray is adapter for slice of ChannelAdminLogEventActionParticipantToggleAdmin.
type ChannelAdminLogEventActionParticipantToggleAdminArray []ChannelAdminLogEventActionParticipantToggleAdmin

// Sort sorts slice of ChannelAdminLogEventActionParticipantToggleAdmin.
func ( ChannelAdminLogEventActionParticipantToggleAdminArray) ( func(,  ChannelAdminLogEventActionParticipantToggleAdmin) bool) ChannelAdminLogEventActionParticipantToggleAdminArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionParticipantToggleAdmin.
func ( ChannelAdminLogEventActionParticipantToggleAdminArray) ( func(,  ChannelAdminLogEventActionParticipantToggleAdmin) bool) ChannelAdminLogEventActionParticipantToggleAdminArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionParticipantToggleAdmin.
func ( ChannelAdminLogEventActionParticipantToggleAdminArray) ( func( ChannelAdminLogEventActionParticipantToggleAdmin) bool) ChannelAdminLogEventActionParticipantToggleAdminArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantToggleAdminArray) () ( ChannelAdminLogEventActionParticipantToggleAdmin,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantToggleAdminArray) () ( ChannelAdminLogEventActionParticipantToggleAdmin,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantToggleAdminArray) () ( ChannelAdminLogEventActionParticipantToggleAdmin,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionParticipantToggleAdmin
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantToggleAdminArray) () ( ChannelAdminLogEventActionParticipantToggleAdmin,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeStickerSetArray is adapter for slice of ChannelAdminLogEventActionChangeStickerSet.
type ChannelAdminLogEventActionChangeStickerSetArray []ChannelAdminLogEventActionChangeStickerSet

// Sort sorts slice of ChannelAdminLogEventActionChangeStickerSet.
func ( ChannelAdminLogEventActionChangeStickerSetArray) ( func(,  ChannelAdminLogEventActionChangeStickerSet) bool) ChannelAdminLogEventActionChangeStickerSetArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeStickerSet.
func ( ChannelAdminLogEventActionChangeStickerSetArray) ( func(,  ChannelAdminLogEventActionChangeStickerSet) bool) ChannelAdminLogEventActionChangeStickerSetArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeStickerSet.
func ( ChannelAdminLogEventActionChangeStickerSetArray) ( func( ChannelAdminLogEventActionChangeStickerSet) bool) ChannelAdminLogEventActionChangeStickerSetArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeStickerSetArray) () ( ChannelAdminLogEventActionChangeStickerSet,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeStickerSetArray) () ( ChannelAdminLogEventActionChangeStickerSet,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeStickerSetArray) () ( ChannelAdminLogEventActionChangeStickerSet,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeStickerSet
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeStickerSetArray) () ( ChannelAdminLogEventActionChangeStickerSet,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionTogglePreHistoryHiddenArray is adapter for slice of ChannelAdminLogEventActionTogglePreHistoryHidden.
type ChannelAdminLogEventActionTogglePreHistoryHiddenArray []ChannelAdminLogEventActionTogglePreHistoryHidden

// Sort sorts slice of ChannelAdminLogEventActionTogglePreHistoryHidden.
func ( ChannelAdminLogEventActionTogglePreHistoryHiddenArray) ( func(,  ChannelAdminLogEventActionTogglePreHistoryHidden) bool) ChannelAdminLogEventActionTogglePreHistoryHiddenArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionTogglePreHistoryHidden.
func ( ChannelAdminLogEventActionTogglePreHistoryHiddenArray) ( func(,  ChannelAdminLogEventActionTogglePreHistoryHidden) bool) ChannelAdminLogEventActionTogglePreHistoryHiddenArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionTogglePreHistoryHidden.
func ( ChannelAdminLogEventActionTogglePreHistoryHiddenArray) ( func( ChannelAdminLogEventActionTogglePreHistoryHidden) bool) ChannelAdminLogEventActionTogglePreHistoryHiddenArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionTogglePreHistoryHiddenArray) () ( ChannelAdminLogEventActionTogglePreHistoryHidden,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionTogglePreHistoryHiddenArray) () ( ChannelAdminLogEventActionTogglePreHistoryHidden,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionTogglePreHistoryHiddenArray) () ( ChannelAdminLogEventActionTogglePreHistoryHidden,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionTogglePreHistoryHidden
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionTogglePreHistoryHiddenArray) () ( ChannelAdminLogEventActionTogglePreHistoryHidden,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionDefaultBannedRightsArray is adapter for slice of ChannelAdminLogEventActionDefaultBannedRights.
type ChannelAdminLogEventActionDefaultBannedRightsArray []ChannelAdminLogEventActionDefaultBannedRights

// Sort sorts slice of ChannelAdminLogEventActionDefaultBannedRights.
func ( ChannelAdminLogEventActionDefaultBannedRightsArray) ( func(,  ChannelAdminLogEventActionDefaultBannedRights) bool) ChannelAdminLogEventActionDefaultBannedRightsArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionDefaultBannedRights.
func ( ChannelAdminLogEventActionDefaultBannedRightsArray) ( func(,  ChannelAdminLogEventActionDefaultBannedRights) bool) ChannelAdminLogEventActionDefaultBannedRightsArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionDefaultBannedRights.
func ( ChannelAdminLogEventActionDefaultBannedRightsArray) ( func( ChannelAdminLogEventActionDefaultBannedRights) bool) ChannelAdminLogEventActionDefaultBannedRightsArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionDefaultBannedRightsArray) () ( ChannelAdminLogEventActionDefaultBannedRights,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionDefaultBannedRightsArray) () ( ChannelAdminLogEventActionDefaultBannedRights,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionDefaultBannedRightsArray) () ( ChannelAdminLogEventActionDefaultBannedRights,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionDefaultBannedRights
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionDefaultBannedRightsArray) () ( ChannelAdminLogEventActionDefaultBannedRights,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionStopPollArray is adapter for slice of ChannelAdminLogEventActionStopPoll.
type ChannelAdminLogEventActionStopPollArray []ChannelAdminLogEventActionStopPoll

// Sort sorts slice of ChannelAdminLogEventActionStopPoll.
func ( ChannelAdminLogEventActionStopPollArray) ( func(,  ChannelAdminLogEventActionStopPoll) bool) ChannelAdminLogEventActionStopPollArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionStopPoll.
func ( ChannelAdminLogEventActionStopPollArray) ( func(,  ChannelAdminLogEventActionStopPoll) bool) ChannelAdminLogEventActionStopPollArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionStopPoll.
func ( ChannelAdminLogEventActionStopPollArray) ( func( ChannelAdminLogEventActionStopPoll) bool) ChannelAdminLogEventActionStopPollArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionStopPollArray) () ( ChannelAdminLogEventActionStopPoll,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionStopPollArray) () ( ChannelAdminLogEventActionStopPoll,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionStopPollArray) () ( ChannelAdminLogEventActionStopPoll,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionStopPoll
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionStopPollArray) () ( ChannelAdminLogEventActionStopPoll,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeLinkedChatArray is adapter for slice of ChannelAdminLogEventActionChangeLinkedChat.
type ChannelAdminLogEventActionChangeLinkedChatArray []ChannelAdminLogEventActionChangeLinkedChat

// Sort sorts slice of ChannelAdminLogEventActionChangeLinkedChat.
func ( ChannelAdminLogEventActionChangeLinkedChatArray) ( func(,  ChannelAdminLogEventActionChangeLinkedChat) bool) ChannelAdminLogEventActionChangeLinkedChatArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeLinkedChat.
func ( ChannelAdminLogEventActionChangeLinkedChatArray) ( func(,  ChannelAdminLogEventActionChangeLinkedChat) bool) ChannelAdminLogEventActionChangeLinkedChatArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeLinkedChat.
func ( ChannelAdminLogEventActionChangeLinkedChatArray) ( func( ChannelAdminLogEventActionChangeLinkedChat) bool) ChannelAdminLogEventActionChangeLinkedChatArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeLinkedChatArray) () ( ChannelAdminLogEventActionChangeLinkedChat,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeLinkedChatArray) () ( ChannelAdminLogEventActionChangeLinkedChat,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeLinkedChatArray) () ( ChannelAdminLogEventActionChangeLinkedChat,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeLinkedChat
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeLinkedChatArray) () ( ChannelAdminLogEventActionChangeLinkedChat,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeLocationArray is adapter for slice of ChannelAdminLogEventActionChangeLocation.
type ChannelAdminLogEventActionChangeLocationArray []ChannelAdminLogEventActionChangeLocation

// Sort sorts slice of ChannelAdminLogEventActionChangeLocation.
func ( ChannelAdminLogEventActionChangeLocationArray) ( func(,  ChannelAdminLogEventActionChangeLocation) bool) ChannelAdminLogEventActionChangeLocationArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeLocation.
func ( ChannelAdminLogEventActionChangeLocationArray) ( func(,  ChannelAdminLogEventActionChangeLocation) bool) ChannelAdminLogEventActionChangeLocationArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeLocation.
func ( ChannelAdminLogEventActionChangeLocationArray) ( func( ChannelAdminLogEventActionChangeLocation) bool) ChannelAdminLogEventActionChangeLocationArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeLocationArray) () ( ChannelAdminLogEventActionChangeLocation,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeLocationArray) () ( ChannelAdminLogEventActionChangeLocation,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeLocationArray) () ( ChannelAdminLogEventActionChangeLocation,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeLocation
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeLocationArray) () ( ChannelAdminLogEventActionChangeLocation,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionToggleSlowModeArray is adapter for slice of ChannelAdminLogEventActionToggleSlowMode.
type ChannelAdminLogEventActionToggleSlowModeArray []ChannelAdminLogEventActionToggleSlowMode

// Sort sorts slice of ChannelAdminLogEventActionToggleSlowMode.
func ( ChannelAdminLogEventActionToggleSlowModeArray) ( func(,  ChannelAdminLogEventActionToggleSlowMode) bool) ChannelAdminLogEventActionToggleSlowModeArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionToggleSlowMode.
func ( ChannelAdminLogEventActionToggleSlowModeArray) ( func(,  ChannelAdminLogEventActionToggleSlowMode) bool) ChannelAdminLogEventActionToggleSlowModeArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionToggleSlowMode.
func ( ChannelAdminLogEventActionToggleSlowModeArray) ( func( ChannelAdminLogEventActionToggleSlowMode) bool) ChannelAdminLogEventActionToggleSlowModeArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionToggleSlowModeArray) () ( ChannelAdminLogEventActionToggleSlowMode,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionToggleSlowModeArray) () ( ChannelAdminLogEventActionToggleSlowMode,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleSlowModeArray) () ( ChannelAdminLogEventActionToggleSlowMode,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionToggleSlowMode
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleSlowModeArray) () ( ChannelAdminLogEventActionToggleSlowMode,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionStartGroupCallArray is adapter for slice of ChannelAdminLogEventActionStartGroupCall.
type ChannelAdminLogEventActionStartGroupCallArray []ChannelAdminLogEventActionStartGroupCall

// Sort sorts slice of ChannelAdminLogEventActionStartGroupCall.
func ( ChannelAdminLogEventActionStartGroupCallArray) ( func(,  ChannelAdminLogEventActionStartGroupCall) bool) ChannelAdminLogEventActionStartGroupCallArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionStartGroupCall.
func ( ChannelAdminLogEventActionStartGroupCallArray) ( func(,  ChannelAdminLogEventActionStartGroupCall) bool) ChannelAdminLogEventActionStartGroupCallArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionStartGroupCall.
func ( ChannelAdminLogEventActionStartGroupCallArray) ( func( ChannelAdminLogEventActionStartGroupCall) bool) ChannelAdminLogEventActionStartGroupCallArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionStartGroupCallArray) () ( ChannelAdminLogEventActionStartGroupCall,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionStartGroupCallArray) () ( ChannelAdminLogEventActionStartGroupCall,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionStartGroupCallArray) () ( ChannelAdminLogEventActionStartGroupCall,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionStartGroupCall
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionStartGroupCallArray) () ( ChannelAdminLogEventActionStartGroupCall,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionDiscardGroupCallArray is adapter for slice of ChannelAdminLogEventActionDiscardGroupCall.
type ChannelAdminLogEventActionDiscardGroupCallArray []ChannelAdminLogEventActionDiscardGroupCall

// Sort sorts slice of ChannelAdminLogEventActionDiscardGroupCall.
func ( ChannelAdminLogEventActionDiscardGroupCallArray) ( func(,  ChannelAdminLogEventActionDiscardGroupCall) bool) ChannelAdminLogEventActionDiscardGroupCallArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionDiscardGroupCall.
func ( ChannelAdminLogEventActionDiscardGroupCallArray) ( func(,  ChannelAdminLogEventActionDiscardGroupCall) bool) ChannelAdminLogEventActionDiscardGroupCallArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionDiscardGroupCall.
func ( ChannelAdminLogEventActionDiscardGroupCallArray) ( func( ChannelAdminLogEventActionDiscardGroupCall) bool) ChannelAdminLogEventActionDiscardGroupCallArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionDiscardGroupCallArray) () ( ChannelAdminLogEventActionDiscardGroupCall,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionDiscardGroupCallArray) () ( ChannelAdminLogEventActionDiscardGroupCall,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionDiscardGroupCallArray) () ( ChannelAdminLogEventActionDiscardGroupCall,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionDiscardGroupCall
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionDiscardGroupCallArray) () ( ChannelAdminLogEventActionDiscardGroupCall,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionParticipantMuteArray is adapter for slice of ChannelAdminLogEventActionParticipantMute.
type ChannelAdminLogEventActionParticipantMuteArray []ChannelAdminLogEventActionParticipantMute

// Sort sorts slice of ChannelAdminLogEventActionParticipantMute.
func ( ChannelAdminLogEventActionParticipantMuteArray) ( func(,  ChannelAdminLogEventActionParticipantMute) bool) ChannelAdminLogEventActionParticipantMuteArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionParticipantMute.
func ( ChannelAdminLogEventActionParticipantMuteArray) ( func(,  ChannelAdminLogEventActionParticipantMute) bool) ChannelAdminLogEventActionParticipantMuteArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionParticipantMute.
func ( ChannelAdminLogEventActionParticipantMuteArray) ( func( ChannelAdminLogEventActionParticipantMute) bool) ChannelAdminLogEventActionParticipantMuteArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantMuteArray) () ( ChannelAdminLogEventActionParticipantMute,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantMuteArray) () ( ChannelAdminLogEventActionParticipantMute,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantMuteArray) () ( ChannelAdminLogEventActionParticipantMute,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionParticipantMute
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantMuteArray) () ( ChannelAdminLogEventActionParticipantMute,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionParticipantUnmuteArray is adapter for slice of ChannelAdminLogEventActionParticipantUnmute.
type ChannelAdminLogEventActionParticipantUnmuteArray []ChannelAdminLogEventActionParticipantUnmute

// Sort sorts slice of ChannelAdminLogEventActionParticipantUnmute.
func ( ChannelAdminLogEventActionParticipantUnmuteArray) ( func(,  ChannelAdminLogEventActionParticipantUnmute) bool) ChannelAdminLogEventActionParticipantUnmuteArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionParticipantUnmute.
func ( ChannelAdminLogEventActionParticipantUnmuteArray) ( func(,  ChannelAdminLogEventActionParticipantUnmute) bool) ChannelAdminLogEventActionParticipantUnmuteArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionParticipantUnmute.
func ( ChannelAdminLogEventActionParticipantUnmuteArray) ( func( ChannelAdminLogEventActionParticipantUnmute) bool) ChannelAdminLogEventActionParticipantUnmuteArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantUnmuteArray) () ( ChannelAdminLogEventActionParticipantUnmute,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantUnmuteArray) () ( ChannelAdminLogEventActionParticipantUnmute,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantUnmuteArray) () ( ChannelAdminLogEventActionParticipantUnmute,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionParticipantUnmute
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantUnmuteArray) () ( ChannelAdminLogEventActionParticipantUnmute,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionToggleGroupCallSettingArray is adapter for slice of ChannelAdminLogEventActionToggleGroupCallSetting.
type ChannelAdminLogEventActionToggleGroupCallSettingArray []ChannelAdminLogEventActionToggleGroupCallSetting

// Sort sorts slice of ChannelAdminLogEventActionToggleGroupCallSetting.
func ( ChannelAdminLogEventActionToggleGroupCallSettingArray) ( func(,  ChannelAdminLogEventActionToggleGroupCallSetting) bool) ChannelAdminLogEventActionToggleGroupCallSettingArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionToggleGroupCallSetting.
func ( ChannelAdminLogEventActionToggleGroupCallSettingArray) ( func(,  ChannelAdminLogEventActionToggleGroupCallSetting) bool) ChannelAdminLogEventActionToggleGroupCallSettingArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionToggleGroupCallSetting.
func ( ChannelAdminLogEventActionToggleGroupCallSettingArray) ( func( ChannelAdminLogEventActionToggleGroupCallSetting) bool) ChannelAdminLogEventActionToggleGroupCallSettingArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionToggleGroupCallSettingArray) () ( ChannelAdminLogEventActionToggleGroupCallSetting,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionToggleGroupCallSettingArray) () ( ChannelAdminLogEventActionToggleGroupCallSetting,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleGroupCallSettingArray) () ( ChannelAdminLogEventActionToggleGroupCallSetting,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionToggleGroupCallSetting
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleGroupCallSettingArray) () ( ChannelAdminLogEventActionToggleGroupCallSetting,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionParticipantJoinByInviteArray is adapter for slice of ChannelAdminLogEventActionParticipantJoinByInvite.
type ChannelAdminLogEventActionParticipantJoinByInviteArray []ChannelAdminLogEventActionParticipantJoinByInvite

// Sort sorts slice of ChannelAdminLogEventActionParticipantJoinByInvite.
func ( ChannelAdminLogEventActionParticipantJoinByInviteArray) ( func(,  ChannelAdminLogEventActionParticipantJoinByInvite) bool) ChannelAdminLogEventActionParticipantJoinByInviteArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionParticipantJoinByInvite.
func ( ChannelAdminLogEventActionParticipantJoinByInviteArray) ( func(,  ChannelAdminLogEventActionParticipantJoinByInvite) bool) ChannelAdminLogEventActionParticipantJoinByInviteArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionParticipantJoinByInvite.
func ( ChannelAdminLogEventActionParticipantJoinByInviteArray) ( func( ChannelAdminLogEventActionParticipantJoinByInvite) bool) ChannelAdminLogEventActionParticipantJoinByInviteArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantJoinByInviteArray) () ( ChannelAdminLogEventActionParticipantJoinByInvite,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantJoinByInviteArray) () ( ChannelAdminLogEventActionParticipantJoinByInvite,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantJoinByInviteArray) () ( ChannelAdminLogEventActionParticipantJoinByInvite,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionParticipantJoinByInvite
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantJoinByInviteArray) () ( ChannelAdminLogEventActionParticipantJoinByInvite,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionExportedInviteDeleteArray is adapter for slice of ChannelAdminLogEventActionExportedInviteDelete.
type ChannelAdminLogEventActionExportedInviteDeleteArray []ChannelAdminLogEventActionExportedInviteDelete

// Sort sorts slice of ChannelAdminLogEventActionExportedInviteDelete.
func ( ChannelAdminLogEventActionExportedInviteDeleteArray) ( func(,  ChannelAdminLogEventActionExportedInviteDelete) bool) ChannelAdminLogEventActionExportedInviteDeleteArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionExportedInviteDelete.
func ( ChannelAdminLogEventActionExportedInviteDeleteArray) ( func(,  ChannelAdminLogEventActionExportedInviteDelete) bool) ChannelAdminLogEventActionExportedInviteDeleteArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionExportedInviteDelete.
func ( ChannelAdminLogEventActionExportedInviteDeleteArray) ( func( ChannelAdminLogEventActionExportedInviteDelete) bool) ChannelAdminLogEventActionExportedInviteDeleteArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionExportedInviteDeleteArray) () ( ChannelAdminLogEventActionExportedInviteDelete,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionExportedInviteDeleteArray) () ( ChannelAdminLogEventActionExportedInviteDelete,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionExportedInviteDeleteArray) () ( ChannelAdminLogEventActionExportedInviteDelete,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionExportedInviteDelete
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionExportedInviteDeleteArray) () ( ChannelAdminLogEventActionExportedInviteDelete,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionExportedInviteRevokeArray is adapter for slice of ChannelAdminLogEventActionExportedInviteRevoke.
type ChannelAdminLogEventActionExportedInviteRevokeArray []ChannelAdminLogEventActionExportedInviteRevoke

// Sort sorts slice of ChannelAdminLogEventActionExportedInviteRevoke.
func ( ChannelAdminLogEventActionExportedInviteRevokeArray) ( func(,  ChannelAdminLogEventActionExportedInviteRevoke) bool) ChannelAdminLogEventActionExportedInviteRevokeArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionExportedInviteRevoke.
func ( ChannelAdminLogEventActionExportedInviteRevokeArray) ( func(,  ChannelAdminLogEventActionExportedInviteRevoke) bool) ChannelAdminLogEventActionExportedInviteRevokeArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionExportedInviteRevoke.
func ( ChannelAdminLogEventActionExportedInviteRevokeArray) ( func( ChannelAdminLogEventActionExportedInviteRevoke) bool) ChannelAdminLogEventActionExportedInviteRevokeArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionExportedInviteRevokeArray) () ( ChannelAdminLogEventActionExportedInviteRevoke,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionExportedInviteRevokeArray) () ( ChannelAdminLogEventActionExportedInviteRevoke,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionExportedInviteRevokeArray) () ( ChannelAdminLogEventActionExportedInviteRevoke,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionExportedInviteRevoke
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionExportedInviteRevokeArray) () ( ChannelAdminLogEventActionExportedInviteRevoke,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionExportedInviteEditArray is adapter for slice of ChannelAdminLogEventActionExportedInviteEdit.
type ChannelAdminLogEventActionExportedInviteEditArray []ChannelAdminLogEventActionExportedInviteEdit

// Sort sorts slice of ChannelAdminLogEventActionExportedInviteEdit.
func ( ChannelAdminLogEventActionExportedInviteEditArray) ( func(,  ChannelAdminLogEventActionExportedInviteEdit) bool) ChannelAdminLogEventActionExportedInviteEditArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionExportedInviteEdit.
func ( ChannelAdminLogEventActionExportedInviteEditArray) ( func(,  ChannelAdminLogEventActionExportedInviteEdit) bool) ChannelAdminLogEventActionExportedInviteEditArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionExportedInviteEdit.
func ( ChannelAdminLogEventActionExportedInviteEditArray) ( func( ChannelAdminLogEventActionExportedInviteEdit) bool) ChannelAdminLogEventActionExportedInviteEditArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionExportedInviteEditArray) () ( ChannelAdminLogEventActionExportedInviteEdit,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionExportedInviteEditArray) () ( ChannelAdminLogEventActionExportedInviteEdit,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionExportedInviteEditArray) () ( ChannelAdminLogEventActionExportedInviteEdit,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionExportedInviteEdit
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionExportedInviteEditArray) () ( ChannelAdminLogEventActionExportedInviteEdit,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionParticipantVolumeArray is adapter for slice of ChannelAdminLogEventActionParticipantVolume.
type ChannelAdminLogEventActionParticipantVolumeArray []ChannelAdminLogEventActionParticipantVolume

// Sort sorts slice of ChannelAdminLogEventActionParticipantVolume.
func ( ChannelAdminLogEventActionParticipantVolumeArray) ( func(,  ChannelAdminLogEventActionParticipantVolume) bool) ChannelAdminLogEventActionParticipantVolumeArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionParticipantVolume.
func ( ChannelAdminLogEventActionParticipantVolumeArray) ( func(,  ChannelAdminLogEventActionParticipantVolume) bool) ChannelAdminLogEventActionParticipantVolumeArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionParticipantVolume.
func ( ChannelAdminLogEventActionParticipantVolumeArray) ( func( ChannelAdminLogEventActionParticipantVolume) bool) ChannelAdminLogEventActionParticipantVolumeArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantVolumeArray) () ( ChannelAdminLogEventActionParticipantVolume,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantVolumeArray) () ( ChannelAdminLogEventActionParticipantVolume,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantVolumeArray) () ( ChannelAdminLogEventActionParticipantVolume,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionParticipantVolume
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantVolumeArray) () ( ChannelAdminLogEventActionParticipantVolume,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeHistoryTTLArray is adapter for slice of ChannelAdminLogEventActionChangeHistoryTTL.
type ChannelAdminLogEventActionChangeHistoryTTLArray []ChannelAdminLogEventActionChangeHistoryTTL

// Sort sorts slice of ChannelAdminLogEventActionChangeHistoryTTL.
func ( ChannelAdminLogEventActionChangeHistoryTTLArray) ( func(,  ChannelAdminLogEventActionChangeHistoryTTL) bool) ChannelAdminLogEventActionChangeHistoryTTLArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeHistoryTTL.
func ( ChannelAdminLogEventActionChangeHistoryTTLArray) ( func(,  ChannelAdminLogEventActionChangeHistoryTTL) bool) ChannelAdminLogEventActionChangeHistoryTTLArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeHistoryTTL.
func ( ChannelAdminLogEventActionChangeHistoryTTLArray) ( func( ChannelAdminLogEventActionChangeHistoryTTL) bool) ChannelAdminLogEventActionChangeHistoryTTLArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeHistoryTTLArray) () ( ChannelAdminLogEventActionChangeHistoryTTL,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeHistoryTTLArray) () ( ChannelAdminLogEventActionChangeHistoryTTL,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeHistoryTTLArray) () ( ChannelAdminLogEventActionChangeHistoryTTL,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeHistoryTTL
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeHistoryTTLArray) () ( ChannelAdminLogEventActionChangeHistoryTTL,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionParticipantJoinByRequestArray is adapter for slice of ChannelAdminLogEventActionParticipantJoinByRequest.
type ChannelAdminLogEventActionParticipantJoinByRequestArray []ChannelAdminLogEventActionParticipantJoinByRequest

// Sort sorts slice of ChannelAdminLogEventActionParticipantJoinByRequest.
func ( ChannelAdminLogEventActionParticipantJoinByRequestArray) ( func(,  ChannelAdminLogEventActionParticipantJoinByRequest) bool) ChannelAdminLogEventActionParticipantJoinByRequestArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionParticipantJoinByRequest.
func ( ChannelAdminLogEventActionParticipantJoinByRequestArray) ( func(,  ChannelAdminLogEventActionParticipantJoinByRequest) bool) ChannelAdminLogEventActionParticipantJoinByRequestArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionParticipantJoinByRequest.
func ( ChannelAdminLogEventActionParticipantJoinByRequestArray) ( func( ChannelAdminLogEventActionParticipantJoinByRequest) bool) ChannelAdminLogEventActionParticipantJoinByRequestArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantJoinByRequestArray) () ( ChannelAdminLogEventActionParticipantJoinByRequest,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionParticipantJoinByRequestArray) () ( ChannelAdminLogEventActionParticipantJoinByRequest,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantJoinByRequestArray) () ( ChannelAdminLogEventActionParticipantJoinByRequest,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionParticipantJoinByRequest
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionParticipantJoinByRequestArray) () ( ChannelAdminLogEventActionParticipantJoinByRequest,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionToggleNoForwardsArray is adapter for slice of ChannelAdminLogEventActionToggleNoForwards.
type ChannelAdminLogEventActionToggleNoForwardsArray []ChannelAdminLogEventActionToggleNoForwards

// Sort sorts slice of ChannelAdminLogEventActionToggleNoForwards.
func ( ChannelAdminLogEventActionToggleNoForwardsArray) ( func(,  ChannelAdminLogEventActionToggleNoForwards) bool) ChannelAdminLogEventActionToggleNoForwardsArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionToggleNoForwards.
func ( ChannelAdminLogEventActionToggleNoForwardsArray) ( func(,  ChannelAdminLogEventActionToggleNoForwards) bool) ChannelAdminLogEventActionToggleNoForwardsArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionToggleNoForwards.
func ( ChannelAdminLogEventActionToggleNoForwardsArray) ( func( ChannelAdminLogEventActionToggleNoForwards) bool) ChannelAdminLogEventActionToggleNoForwardsArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionToggleNoForwardsArray) () ( ChannelAdminLogEventActionToggleNoForwards,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionToggleNoForwardsArray) () ( ChannelAdminLogEventActionToggleNoForwards,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleNoForwardsArray) () ( ChannelAdminLogEventActionToggleNoForwards,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionToggleNoForwards
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleNoForwardsArray) () ( ChannelAdminLogEventActionToggleNoForwards,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionSendMessageArray is adapter for slice of ChannelAdminLogEventActionSendMessage.
type ChannelAdminLogEventActionSendMessageArray []ChannelAdminLogEventActionSendMessage

// Sort sorts slice of ChannelAdminLogEventActionSendMessage.
func ( ChannelAdminLogEventActionSendMessageArray) ( func(,  ChannelAdminLogEventActionSendMessage) bool) ChannelAdminLogEventActionSendMessageArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionSendMessage.
func ( ChannelAdminLogEventActionSendMessageArray) ( func(,  ChannelAdminLogEventActionSendMessage) bool) ChannelAdminLogEventActionSendMessageArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionSendMessage.
func ( ChannelAdminLogEventActionSendMessageArray) ( func( ChannelAdminLogEventActionSendMessage) bool) ChannelAdminLogEventActionSendMessageArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionSendMessageArray) () ( ChannelAdminLogEventActionSendMessage,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionSendMessageArray) () ( ChannelAdminLogEventActionSendMessage,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionSendMessageArray) () ( ChannelAdminLogEventActionSendMessage,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionSendMessage
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionSendMessageArray) () ( ChannelAdminLogEventActionSendMessage,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeAvailableReactionsArray is adapter for slice of ChannelAdminLogEventActionChangeAvailableReactions.
type ChannelAdminLogEventActionChangeAvailableReactionsArray []ChannelAdminLogEventActionChangeAvailableReactions

// Sort sorts slice of ChannelAdminLogEventActionChangeAvailableReactions.
func ( ChannelAdminLogEventActionChangeAvailableReactionsArray) ( func(,  ChannelAdminLogEventActionChangeAvailableReactions) bool) ChannelAdminLogEventActionChangeAvailableReactionsArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeAvailableReactions.
func ( ChannelAdminLogEventActionChangeAvailableReactionsArray) ( func(,  ChannelAdminLogEventActionChangeAvailableReactions) bool) ChannelAdminLogEventActionChangeAvailableReactionsArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeAvailableReactions.
func ( ChannelAdminLogEventActionChangeAvailableReactionsArray) ( func( ChannelAdminLogEventActionChangeAvailableReactions) bool) ChannelAdminLogEventActionChangeAvailableReactionsArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeAvailableReactionsArray) () ( ChannelAdminLogEventActionChangeAvailableReactions,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeAvailableReactionsArray) () ( ChannelAdminLogEventActionChangeAvailableReactions,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeAvailableReactionsArray) () ( ChannelAdminLogEventActionChangeAvailableReactions,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeAvailableReactions
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeAvailableReactionsArray) () ( ChannelAdminLogEventActionChangeAvailableReactions,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeUsernamesArray is adapter for slice of ChannelAdminLogEventActionChangeUsernames.
type ChannelAdminLogEventActionChangeUsernamesArray []ChannelAdminLogEventActionChangeUsernames

// Sort sorts slice of ChannelAdminLogEventActionChangeUsernames.
func ( ChannelAdminLogEventActionChangeUsernamesArray) ( func(,  ChannelAdminLogEventActionChangeUsernames) bool) ChannelAdminLogEventActionChangeUsernamesArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeUsernames.
func ( ChannelAdminLogEventActionChangeUsernamesArray) ( func(,  ChannelAdminLogEventActionChangeUsernames) bool) ChannelAdminLogEventActionChangeUsernamesArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeUsernames.
func ( ChannelAdminLogEventActionChangeUsernamesArray) ( func( ChannelAdminLogEventActionChangeUsernames) bool) ChannelAdminLogEventActionChangeUsernamesArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeUsernamesArray) () ( ChannelAdminLogEventActionChangeUsernames,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeUsernamesArray) () ( ChannelAdminLogEventActionChangeUsernames,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeUsernamesArray) () ( ChannelAdminLogEventActionChangeUsernames,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeUsernames
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeUsernamesArray) () ( ChannelAdminLogEventActionChangeUsernames,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionToggleForumArray is adapter for slice of ChannelAdminLogEventActionToggleForum.
type ChannelAdminLogEventActionToggleForumArray []ChannelAdminLogEventActionToggleForum

// Sort sorts slice of ChannelAdminLogEventActionToggleForum.
func ( ChannelAdminLogEventActionToggleForumArray) ( func(,  ChannelAdminLogEventActionToggleForum) bool) ChannelAdminLogEventActionToggleForumArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionToggleForum.
func ( ChannelAdminLogEventActionToggleForumArray) ( func(,  ChannelAdminLogEventActionToggleForum) bool) ChannelAdminLogEventActionToggleForumArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionToggleForum.
func ( ChannelAdminLogEventActionToggleForumArray) ( func( ChannelAdminLogEventActionToggleForum) bool) ChannelAdminLogEventActionToggleForumArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionToggleForumArray) () ( ChannelAdminLogEventActionToggleForum,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionToggleForumArray) () ( ChannelAdminLogEventActionToggleForum,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleForumArray) () ( ChannelAdminLogEventActionToggleForum,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionToggleForum
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleForumArray) () ( ChannelAdminLogEventActionToggleForum,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionCreateTopicArray is adapter for slice of ChannelAdminLogEventActionCreateTopic.
type ChannelAdminLogEventActionCreateTopicArray []ChannelAdminLogEventActionCreateTopic

// Sort sorts slice of ChannelAdminLogEventActionCreateTopic.
func ( ChannelAdminLogEventActionCreateTopicArray) ( func(,  ChannelAdminLogEventActionCreateTopic) bool) ChannelAdminLogEventActionCreateTopicArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionCreateTopic.
func ( ChannelAdminLogEventActionCreateTopicArray) ( func(,  ChannelAdminLogEventActionCreateTopic) bool) ChannelAdminLogEventActionCreateTopicArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionCreateTopic.
func ( ChannelAdminLogEventActionCreateTopicArray) ( func( ChannelAdminLogEventActionCreateTopic) bool) ChannelAdminLogEventActionCreateTopicArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionCreateTopicArray) () ( ChannelAdminLogEventActionCreateTopic,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionCreateTopicArray) () ( ChannelAdminLogEventActionCreateTopic,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionCreateTopicArray) () ( ChannelAdminLogEventActionCreateTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionCreateTopic
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionCreateTopicArray) () ( ChannelAdminLogEventActionCreateTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionEditTopicArray is adapter for slice of ChannelAdminLogEventActionEditTopic.
type ChannelAdminLogEventActionEditTopicArray []ChannelAdminLogEventActionEditTopic

// Sort sorts slice of ChannelAdminLogEventActionEditTopic.
func ( ChannelAdminLogEventActionEditTopicArray) ( func(,  ChannelAdminLogEventActionEditTopic) bool) ChannelAdminLogEventActionEditTopicArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionEditTopic.
func ( ChannelAdminLogEventActionEditTopicArray) ( func(,  ChannelAdminLogEventActionEditTopic) bool) ChannelAdminLogEventActionEditTopicArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionEditTopic.
func ( ChannelAdminLogEventActionEditTopicArray) ( func( ChannelAdminLogEventActionEditTopic) bool) ChannelAdminLogEventActionEditTopicArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionEditTopicArray) () ( ChannelAdminLogEventActionEditTopic,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionEditTopicArray) () ( ChannelAdminLogEventActionEditTopic,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionEditTopicArray) () ( ChannelAdminLogEventActionEditTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionEditTopic
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionEditTopicArray) () ( ChannelAdminLogEventActionEditTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionDeleteTopicArray is adapter for slice of ChannelAdminLogEventActionDeleteTopic.
type ChannelAdminLogEventActionDeleteTopicArray []ChannelAdminLogEventActionDeleteTopic

// Sort sorts slice of ChannelAdminLogEventActionDeleteTopic.
func ( ChannelAdminLogEventActionDeleteTopicArray) ( func(,  ChannelAdminLogEventActionDeleteTopic) bool) ChannelAdminLogEventActionDeleteTopicArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionDeleteTopic.
func ( ChannelAdminLogEventActionDeleteTopicArray) ( func(,  ChannelAdminLogEventActionDeleteTopic) bool) ChannelAdminLogEventActionDeleteTopicArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionDeleteTopic.
func ( ChannelAdminLogEventActionDeleteTopicArray) ( func( ChannelAdminLogEventActionDeleteTopic) bool) ChannelAdminLogEventActionDeleteTopicArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionDeleteTopicArray) () ( ChannelAdminLogEventActionDeleteTopic,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionDeleteTopicArray) () ( ChannelAdminLogEventActionDeleteTopic,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionDeleteTopicArray) () ( ChannelAdminLogEventActionDeleteTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionDeleteTopic
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionDeleteTopicArray) () ( ChannelAdminLogEventActionDeleteTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionPinTopicArray is adapter for slice of ChannelAdminLogEventActionPinTopic.
type ChannelAdminLogEventActionPinTopicArray []ChannelAdminLogEventActionPinTopic

// Sort sorts slice of ChannelAdminLogEventActionPinTopic.
func ( ChannelAdminLogEventActionPinTopicArray) ( func(,  ChannelAdminLogEventActionPinTopic) bool) ChannelAdminLogEventActionPinTopicArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionPinTopic.
func ( ChannelAdminLogEventActionPinTopicArray) ( func(,  ChannelAdminLogEventActionPinTopic) bool) ChannelAdminLogEventActionPinTopicArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionPinTopic.
func ( ChannelAdminLogEventActionPinTopicArray) ( func( ChannelAdminLogEventActionPinTopic) bool) ChannelAdminLogEventActionPinTopicArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionPinTopicArray) () ( ChannelAdminLogEventActionPinTopic,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionPinTopicArray) () ( ChannelAdminLogEventActionPinTopic,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionPinTopicArray) () ( ChannelAdminLogEventActionPinTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionPinTopic
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionPinTopicArray) () ( ChannelAdminLogEventActionPinTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionToggleAntiSpamArray is adapter for slice of ChannelAdminLogEventActionToggleAntiSpam.
type ChannelAdminLogEventActionToggleAntiSpamArray []ChannelAdminLogEventActionToggleAntiSpam

// Sort sorts slice of ChannelAdminLogEventActionToggleAntiSpam.
func ( ChannelAdminLogEventActionToggleAntiSpamArray) ( func(,  ChannelAdminLogEventActionToggleAntiSpam) bool) ChannelAdminLogEventActionToggleAntiSpamArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionToggleAntiSpam.
func ( ChannelAdminLogEventActionToggleAntiSpamArray) ( func(,  ChannelAdminLogEventActionToggleAntiSpam) bool) ChannelAdminLogEventActionToggleAntiSpamArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionToggleAntiSpam.
func ( ChannelAdminLogEventActionToggleAntiSpamArray) ( func( ChannelAdminLogEventActionToggleAntiSpam) bool) ChannelAdminLogEventActionToggleAntiSpamArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionToggleAntiSpamArray) () ( ChannelAdminLogEventActionToggleAntiSpam,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionToggleAntiSpamArray) () ( ChannelAdminLogEventActionToggleAntiSpam,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleAntiSpamArray) () ( ChannelAdminLogEventActionToggleAntiSpam,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionToggleAntiSpam
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionToggleAntiSpamArray) () ( ChannelAdminLogEventActionToggleAntiSpam,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangePeerColorArray is adapter for slice of ChannelAdminLogEventActionChangePeerColor.
type ChannelAdminLogEventActionChangePeerColorArray []ChannelAdminLogEventActionChangePeerColor

// Sort sorts slice of ChannelAdminLogEventActionChangePeerColor.
func ( ChannelAdminLogEventActionChangePeerColorArray) ( func(,  ChannelAdminLogEventActionChangePeerColor) bool) ChannelAdminLogEventActionChangePeerColorArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangePeerColor.
func ( ChannelAdminLogEventActionChangePeerColorArray) ( func(,  ChannelAdminLogEventActionChangePeerColor) bool) ChannelAdminLogEventActionChangePeerColorArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangePeerColor.
func ( ChannelAdminLogEventActionChangePeerColorArray) ( func( ChannelAdminLogEventActionChangePeerColor) bool) ChannelAdminLogEventActionChangePeerColorArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangePeerColorArray) () ( ChannelAdminLogEventActionChangePeerColor,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangePeerColorArray) () ( ChannelAdminLogEventActionChangePeerColor,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangePeerColorArray) () ( ChannelAdminLogEventActionChangePeerColor,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangePeerColor
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangePeerColorArray) () ( ChannelAdminLogEventActionChangePeerColor,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeProfilePeerColorArray is adapter for slice of ChannelAdminLogEventActionChangeProfilePeerColor.
type ChannelAdminLogEventActionChangeProfilePeerColorArray []ChannelAdminLogEventActionChangeProfilePeerColor

// Sort sorts slice of ChannelAdminLogEventActionChangeProfilePeerColor.
func ( ChannelAdminLogEventActionChangeProfilePeerColorArray) ( func(,  ChannelAdminLogEventActionChangeProfilePeerColor) bool) ChannelAdminLogEventActionChangeProfilePeerColorArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeProfilePeerColor.
func ( ChannelAdminLogEventActionChangeProfilePeerColorArray) ( func(,  ChannelAdminLogEventActionChangeProfilePeerColor) bool) ChannelAdminLogEventActionChangeProfilePeerColorArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeProfilePeerColor.
func ( ChannelAdminLogEventActionChangeProfilePeerColorArray) ( func( ChannelAdminLogEventActionChangeProfilePeerColor) bool) ChannelAdminLogEventActionChangeProfilePeerColorArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeProfilePeerColorArray) () ( ChannelAdminLogEventActionChangeProfilePeerColor,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeProfilePeerColorArray) () ( ChannelAdminLogEventActionChangeProfilePeerColor,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeProfilePeerColorArray) () ( ChannelAdminLogEventActionChangeProfilePeerColor,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeProfilePeerColor
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeProfilePeerColorArray) () ( ChannelAdminLogEventActionChangeProfilePeerColor,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeWallpaperArray is adapter for slice of ChannelAdminLogEventActionChangeWallpaper.
type ChannelAdminLogEventActionChangeWallpaperArray []ChannelAdminLogEventActionChangeWallpaper

// Sort sorts slice of ChannelAdminLogEventActionChangeWallpaper.
func ( ChannelAdminLogEventActionChangeWallpaperArray) ( func(,  ChannelAdminLogEventActionChangeWallpaper) bool) ChannelAdminLogEventActionChangeWallpaperArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeWallpaper.
func ( ChannelAdminLogEventActionChangeWallpaperArray) ( func(,  ChannelAdminLogEventActionChangeWallpaper) bool) ChannelAdminLogEventActionChangeWallpaperArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeWallpaper.
func ( ChannelAdminLogEventActionChangeWallpaperArray) ( func( ChannelAdminLogEventActionChangeWallpaper) bool) ChannelAdminLogEventActionChangeWallpaperArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeWallpaperArray) () ( ChannelAdminLogEventActionChangeWallpaper,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeWallpaperArray) () ( ChannelAdminLogEventActionChangeWallpaper,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeWallpaperArray) () ( ChannelAdminLogEventActionChangeWallpaper,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeWallpaper
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeWallpaperArray) () ( ChannelAdminLogEventActionChangeWallpaper,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// ChannelAdminLogEventActionChangeEmojiStatusArray is adapter for slice of ChannelAdminLogEventActionChangeEmojiStatus.
type ChannelAdminLogEventActionChangeEmojiStatusArray []ChannelAdminLogEventActionChangeEmojiStatus

// Sort sorts slice of ChannelAdminLogEventActionChangeEmojiStatus.
func ( ChannelAdminLogEventActionChangeEmojiStatusArray) ( func(,  ChannelAdminLogEventActionChangeEmojiStatus) bool) ChannelAdminLogEventActionChangeEmojiStatusArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelAdminLogEventActionChangeEmojiStatus.
func ( ChannelAdminLogEventActionChangeEmojiStatusArray) ( func(,  ChannelAdminLogEventActionChangeEmojiStatus) bool) ChannelAdminLogEventActionChangeEmojiStatusArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelAdminLogEventActionChangeEmojiStatus.
func ( ChannelAdminLogEventActionChangeEmojiStatusArray) ( func( ChannelAdminLogEventActionChangeEmojiStatus) bool) ChannelAdminLogEventActionChangeEmojiStatusArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelAdminLogEventActionChangeEmojiStatusArray) () ( ChannelAdminLogEventActionChangeEmojiStatus,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelAdminLogEventActionChangeEmojiStatusArray) () ( ChannelAdminLogEventActionChangeEmojiStatus,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeEmojiStatusArray) () ( ChannelAdminLogEventActionChangeEmojiStatus,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelAdminLogEventActionChangeEmojiStatus
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelAdminLogEventActionChangeEmojiStatusArray) () ( ChannelAdminLogEventActionChangeEmojiStatus,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}