//go:build !ignore_autogenerated
// +build !ignore_autogenerated

// Code generated by controller-gen. DO NOT EDIT.

package v1alpha1

import (
	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/runtime"
)

// Ensure imports are used
var (
	_ = corev1.LocalObjectReference{}
	_ = metav1.LabelSelectorRequirement{}
)

// DeepCopyInto is an autogenerated deepcopy function
func (in *MCPProvider) DeepCopyInto(out *MCPProvider) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
}
func (in *MCPProvider) DeepCopy() *MCPProvider {
	if in == nil {
		return nil
	}
	out := new(MCPProvider)
	in.DeepCopyInto(out)
	return out
}
func (in *MCPProvider) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *MCPProviderList) DeepCopyInto(out *MCPProviderList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]MCPProvider, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *MCPProviderList) DeepCopy() *MCPProviderList {
	if in == nil {
		return nil
	}
	out := new(MCPProviderList)
	in.DeepCopyInto(out)
	return out
}
func (in *MCPProviderList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *MCPProviderSpec) DeepCopyInto(out *MCPProviderSpec) {
	*out = *in
	if in.Command != nil {
		in, out := &in.Command, &out.Command
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.Args != nil {
		in, out := &in.Args, &out.Args
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.Replicas != nil {
		in, out := &in.Replicas, &out.Replicas
		*out = new(int32)
		**out = **in
	}
	if in.HealthCheck != nil {
		in, out := &in.HealthCheck, &out.HealthCheck
		*out = new(HealthCheckConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Resources != nil {
		in, out := &in.Resources, &out.Resources
		*out = new(ResourceRequirements)
		(*in).DeepCopyInto(*out)
	}
	if in.Env != nil {
		in, out := &in.Env, &out.Env
		*out = make([]EnvVar, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make([]Volume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.SecurityContext != nil {
		in, out := &in.SecurityContext, &out.SecurityContext
		*out = new(SecurityContext)
		(*in).DeepCopyInto(*out)
	}
	if in.ImagePullSecrets != nil {
		in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
		*out = make([]corev1.LocalObjectReference, len(*in))
		copy(*out, *in)
	}
	if in.NodeSelector != nil {
		in, out := &in.NodeSelector, &out.NodeSelector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Tolerations != nil {
		in, out := &in.Tolerations, &out.Tolerations
		*out = make([]Toleration, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Affinity != nil {
		in, out := &in.Affinity, &out.Affinity
		*out = new(corev1.Affinity)
		(*in).DeepCopyInto(*out)
	}
	if in.Tools != nil {
		in, out := &in.Tools, &out.Tools
		*out = new(ToolsConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.CircuitBreaker != nil {
		in, out := &in.CircuitBreaker, &out.CircuitBreaker
		*out = new(CircuitBreakerConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Observability != nil {
		in, out := &in.Observability, &out.Observability
		*out = new(ObservabilityConfig)
		(*in).DeepCopyInto(*out)
	}
}
func (in *MCPProviderSpec) DeepCopy() *MCPProviderSpec {
	if in == nil {
		return nil
	}
	out := new(MCPProviderSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *MCPProviderStatus) DeepCopyInto(out *MCPProviderStatus) {
	*out = *in
	if in.Tools != nil {
		in, out := &in.Tools, &out.Tools
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.LastStartedAt != nil {
		in, out := &in.LastStartedAt, &out.LastStartedAt
		*out = (*in).DeepCopy()
	}
	if in.LastStoppedAt != nil {
		in, out := &in.LastStoppedAt, &out.LastStoppedAt
		*out = (*in).DeepCopy()
	}
	if in.LastHealthCheck != nil {
		in, out := &in.LastHealthCheck, &out.LastHealthCheck
		*out = (*in).DeepCopy()
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *MCPProviderStatus) DeepCopy() *MCPProviderStatus {
	if in == nil {
		return nil
	}
	out := new(MCPProviderStatus)
	in.DeepCopyInto(out)
	return out
}
func (in *HealthCheckConfig) DeepCopyInto(out *HealthCheckConfig) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
}
func (in *HealthCheckConfig) DeepCopy() *HealthCheckConfig {
	if in == nil {
		return nil
	}
	out := new(HealthCheckConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *ResourceRequirements) DeepCopyInto(out *ResourceRequirements) {
	*out = *in
	if in.Requests != nil {
		in, out := &in.Requests, &out.Requests
		*out = new(ResourceList)
		**out = **in
	}
	if in.Limits != nil {
		in, out := &in.Limits, &out.Limits
		*out = new(ResourceList)
		**out = **in
	}
}
func (in *ResourceRequirements) DeepCopy() *ResourceRequirements {
	if in == nil {
		return nil
	}
	out := new(ResourceRequirements)
	in.DeepCopyInto(out)
	return out
}
func (in *ResourceList) DeepCopyInto(out *ResourceList) { *out = *in }
func (in *ResourceList) DeepCopy() *ResourceList {
	if in == nil {
		return nil
	}
	out := new(ResourceList)
	in.DeepCopyInto(out)
	return out
}
func (in *EnvVar) DeepCopyInto(out *EnvVar) {
	*out = *in
	if in.ValueFrom != nil {
		in, out := &in.ValueFrom, &out.ValueFrom
		*out = new(EnvVarSource)
		(*in).DeepCopyInto(*out)
	}
}
func (in *EnvVar) DeepCopy() *EnvVar {
	if in == nil {
		return nil
	}
	out := new(EnvVar)
	in.DeepCopyInto(out)
	return out
}
func (in *EnvVarSource) DeepCopyInto(out *EnvVarSource) {
	*out = *in
	if in.SecretKeyRef != nil {
		in, out := &in.SecretKeyRef, &out.SecretKeyRef
		*out = new(SecretKeySelector)
		(*in).DeepCopyInto(*out)
	}
	if in.ConfigMapKeyRef != nil {
		in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef
		*out = new(ConfigMapKeySelector)
		(*in).DeepCopyInto(*out)
	}
}
func (in *EnvVarSource) DeepCopy() *EnvVarSource {
	if in == nil {
		return nil
	}
	out := new(EnvVarSource)
	in.DeepCopyInto(out)
	return out
}
func (in *SecretKeySelector) DeepCopyInto(out *SecretKeySelector) {
	*out = *in
	if in.Optional != nil {
		in, out := &in.Optional, &out.Optional
		*out = new(bool)
		**out = **in
	}
}
func (in *SecretKeySelector) DeepCopy() *SecretKeySelector {
	if in == nil {
		return nil
	}
	out := new(SecretKeySelector)
	in.DeepCopyInto(out)
	return out
}
func (in *ConfigMapKeySelector) DeepCopyInto(out *ConfigMapKeySelector) {
	*out = *in
	if in.Optional != nil {
		in, out := &in.Optional, &out.Optional
		*out = new(bool)
		**out = **in
	}
}
func (in *ConfigMapKeySelector) DeepCopy() *ConfigMapKeySelector {
	if in == nil {
		return nil
	}
	out := new(ConfigMapKeySelector)
	in.DeepCopyInto(out)
	return out
}
func (in *Volume) DeepCopyInto(out *Volume) {
	*out = *in
	if in.Secret != nil {
		in, out := &in.Secret, &out.Secret
		*out = new(SecretVolumeSource)
		(*in).DeepCopyInto(*out)
	}
	if in.ConfigMap != nil {
		in, out := &in.ConfigMap, &out.ConfigMap
		*out = new(ConfigMapVolumeSource)
		(*in).DeepCopyInto(*out)
	}
	if in.PersistentVolumeClaim != nil {
		in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim
		*out = new(PVCVolumeSource)
		**out = **in
	}
	if in.EmptyDir != nil {
		in, out := &in.EmptyDir, &out.EmptyDir
		*out = new(EmptyDirVolumeSource)
		**out = **in
	}
}
func (in *Volume) DeepCopy() *Volume {
	if in == nil {
		return nil
	}
	out := new(Volume)
	in.DeepCopyInto(out)
	return out
}
func (in *SecretVolumeSource) DeepCopyInto(out *SecretVolumeSource) {
	*out = *in
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]KeyToPath, len(*in))
		copy(*out, *in)
	}
}
func (in *SecretVolumeSource) DeepCopy() *SecretVolumeSource {
	if in == nil {
		return nil
	}
	out := new(SecretVolumeSource)
	in.DeepCopyInto(out)
	return out
}
func (in *ConfigMapVolumeSource) DeepCopyInto(out *ConfigMapVolumeSource) {
	*out = *in
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]KeyToPath, len(*in))
		copy(*out, *in)
	}
}
func (in *ConfigMapVolumeSource) DeepCopy() *ConfigMapVolumeSource {
	if in == nil {
		return nil
	}
	out := new(ConfigMapVolumeSource)
	in.DeepCopyInto(out)
	return out
}
func (in *PVCVolumeSource) DeepCopyInto(out *PVCVolumeSource) { *out = *in }
func (in *PVCVolumeSource) DeepCopy() *PVCVolumeSource {
	if in == nil {
		return nil
	}
	out := new(PVCVolumeSource)
	in.DeepCopyInto(out)
	return out
}
func (in *EmptyDirVolumeSource) DeepCopyInto(out *EmptyDirVolumeSource) { *out = *in }
func (in *EmptyDirVolumeSource) DeepCopy() *EmptyDirVolumeSource {
	if in == nil {
		return nil
	}
	out := new(EmptyDirVolumeSource)
	in.DeepCopyInto(out)
	return out
}
func (in *KeyToPath) DeepCopyInto(out *KeyToPath) { *out = *in }
func (in *KeyToPath) DeepCopy() *KeyToPath {
	if in == nil {
		return nil
	}
	out := new(KeyToPath)
	in.DeepCopyInto(out)
	return out
}
func (in *SecurityContext) DeepCopyInto(out *SecurityContext) {
	*out = *in
	if in.RunAsNonRoot != nil {
		in, out := &in.RunAsNonRoot, &out.RunAsNonRoot
		*out = new(bool)
		**out = **in
	}
	if in.RunAsUser != nil {
		in, out := &in.RunAsUser, &out.RunAsUser
		*out = new(int64)
		**out = **in
	}
	if in.RunAsGroup != nil {
		in, out := &in.RunAsGroup, &out.RunAsGroup
		*out = new(int64)
		**out = **in
	}
	if in.FSGroup != nil {
		in, out := &in.FSGroup, &out.FSGroup
		*out = new(int64)
		**out = **in
	}
	if in.ReadOnlyRootFilesystem != nil {
		in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem
		*out = new(bool)
		**out = **in
	}
	if in.AllowPrivilegeEscalation != nil {
		in, out := &in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation
		*out = new(bool)
		**out = **in
	}
	if in.Capabilities != nil {
		in, out := &in.Capabilities, &out.Capabilities
		*out = new(Capabilities)
		(*in).DeepCopyInto(*out)
	}
	if in.SeccompProfile != nil {
		in, out := &in.SeccompProfile, &out.SeccompProfile
		*out = new(SeccompProfile)
		**out = **in
	}
}
func (in *SecurityContext) DeepCopy() *SecurityContext {
	if in == nil {
		return nil
	}
	out := new(SecurityContext)
	in.DeepCopyInto(out)
	return out
}
func (in *Capabilities) DeepCopyInto(out *Capabilities) {
	*out = *in
	if in.Add != nil {
		in, out := &in.Add, &out.Add
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.Drop != nil {
		in, out := &in.Drop, &out.Drop
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
}
func (in *Capabilities) DeepCopy() *Capabilities {
	if in == nil {
		return nil
	}
	out := new(Capabilities)
	in.DeepCopyInto(out)
	return out
}
func (in *SeccompProfile) DeepCopyInto(out *SeccompProfile) { *out = *in }
func (in *SeccompProfile) DeepCopy() *SeccompProfile {
	if in == nil {
		return nil
	}
	out := new(SeccompProfile)
	in.DeepCopyInto(out)
	return out
}
func (in *Toleration) DeepCopyInto(out *Toleration) {
	*out = *in
	if in.TolerationSeconds != nil {
		in, out := &in.TolerationSeconds, &out.TolerationSeconds
		*out = new(int64)
		**out = **in
	}
}
func (in *Toleration) DeepCopy() *Toleration {
	if in == nil {
		return nil
	}
	out := new(Toleration)
	in.DeepCopyInto(out)
	return out
}
func (in *ToolsConfig) DeepCopyInto(out *ToolsConfig) {
	*out = *in
	if in.AllowList != nil {
		in, out := &in.AllowList, &out.AllowList
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.DenyList != nil {
		in, out := &in.DenyList, &out.DenyList
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.RateLimit != nil {
		in, out := &in.RateLimit, &out.RateLimit
		*out = new(RateLimitConfig)
		**out = **in
	}
}
func (in *ToolsConfig) DeepCopy() *ToolsConfig {
	if in == nil {
		return nil
	}
	out := new(ToolsConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *RateLimitConfig) DeepCopyInto(out *RateLimitConfig) { *out = *in }
func (in *RateLimitConfig) DeepCopy() *RateLimitConfig {
	if in == nil {
		return nil
	}
	out := new(RateLimitConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *CircuitBreakerConfig) DeepCopyInto(out *CircuitBreakerConfig) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
}
func (in *CircuitBreakerConfig) DeepCopy() *CircuitBreakerConfig {
	if in == nil {
		return nil
	}
	out := new(CircuitBreakerConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *ObservabilityConfig) DeepCopyInto(out *ObservabilityConfig) {
	*out = *in
	if in.Tracing != nil {
		in, out := &in.Tracing, &out.Tracing
		*out = new(TracingConfig)
		**out = **in
	}
	if in.Metrics != nil {
		in, out := &in.Metrics, &out.Metrics
		*out = new(MetricsConfig)
		**out = **in
	}
}
func (in *ObservabilityConfig) DeepCopy() *ObservabilityConfig {
	if in == nil {
		return nil
	}
	out := new(ObservabilityConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *TracingConfig) DeepCopyInto(out *TracingConfig) { *out = *in }
func (in *TracingConfig) DeepCopy() *TracingConfig {
	if in == nil {
		return nil
	}
	out := new(TracingConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *MetricsConfig) DeepCopyInto(out *MetricsConfig) { *out = *in }
func (in *MetricsConfig) DeepCopy() *MetricsConfig {
	if in == nil {
		return nil
	}
	out := new(MetricsConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *Condition) DeepCopyInto(out *Condition) {
	*out = *in
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
}
func (in *Condition) DeepCopy() *Condition {
	if in == nil {
		return nil
	}
	out := new(Condition)
	in.DeepCopyInto(out)
	return out
}

// MCPProviderGroup
func (in *MCPProviderGroup) DeepCopyInto(out *MCPProviderGroup) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
}
func (in *MCPProviderGroup) DeepCopy() *MCPProviderGroup {
	if in == nil {
		return nil
	}
	out := new(MCPProviderGroup)
	in.DeepCopyInto(out)
	return out
}
func (in *MCPProviderGroup) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *MCPProviderGroupList) DeepCopyInto(out *MCPProviderGroupList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]MCPProviderGroup, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *MCPProviderGroupList) DeepCopy() *MCPProviderGroupList {
	if in == nil {
		return nil
	}
	out := new(MCPProviderGroupList)
	in.DeepCopyInto(out)
	return out
}
func (in *MCPProviderGroupList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *MCPProviderGroupSpec) DeepCopyInto(out *MCPProviderGroupSpec) {
	*out = *in
	if in.Selector != nil {
		in, out := &in.Selector, &out.Selector
		*out = new(metav1.LabelSelector)
		(*in).DeepCopyInto(*out)
	}
	if in.Failover != nil {
		in, out := &in.Failover, &out.Failover
		*out = new(FailoverConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.HealthPolicy != nil {
		in, out := &in.HealthPolicy, &out.HealthPolicy
		*out = new(HealthPolicy)
		(*in).DeepCopyInto(*out)
	}
	if in.SessionAffinity != nil {
		in, out := &in.SessionAffinity, &out.SessionAffinity
		*out = new(SessionAffinityConfig)
		**out = **in
	}
	if in.CircuitBreaker != nil {
		in, out := &in.CircuitBreaker, &out.CircuitBreaker
		*out = new(GroupCircuitBreakerConfig)
		**out = **in
	}
}
func (in *MCPProviderGroupSpec) DeepCopy() *MCPProviderGroupSpec {
	if in == nil {
		return nil
	}
	out := new(MCPProviderGroupSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *MCPProviderGroupStatus) DeepCopyInto(out *MCPProviderGroupStatus) {
	*out = *in
	if in.Providers != nil {
		in, out := &in.Providers, &out.Providers
		*out = make([]ProviderMemberStatus, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *MCPProviderGroupStatus) DeepCopy() *MCPProviderGroupStatus {
	if in == nil {
		return nil
	}
	out := new(MCPProviderGroupStatus)
	in.DeepCopyInto(out)
	return out
}
func (in *FailoverConfig) DeepCopyInto(out *FailoverConfig) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.RetryOn != nil {
		in, out := &in.RetryOn, &out.RetryOn
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
}
func (in *FailoverConfig) DeepCopy() *FailoverConfig {
	if in == nil {
		return nil
	}
	out := new(FailoverConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *HealthPolicy) DeepCopyInto(out *HealthPolicy) {
	*out = *in
	if in.MinHealthyCount != nil {
		in, out := &in.MinHealthyCount, &out.MinHealthyCount
		*out = new(int32)
		**out = **in
	}
}
func (in *HealthPolicy) DeepCopy() *HealthPolicy {
	if in == nil {
		return nil
	}
	out := new(HealthPolicy)
	in.DeepCopyInto(out)
	return out
}
func (in *SessionAffinityConfig) DeepCopyInto(out *SessionAffinityConfig) { *out = *in }
func (in *SessionAffinityConfig) DeepCopy() *SessionAffinityConfig {
	if in == nil {
		return nil
	}
	out := new(SessionAffinityConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *GroupCircuitBreakerConfig) DeepCopyInto(out *GroupCircuitBreakerConfig) { *out = *in }
func (in *GroupCircuitBreakerConfig) DeepCopy() *GroupCircuitBreakerConfig {
	if in == nil {
		return nil
	}
	out := new(GroupCircuitBreakerConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *ProviderMemberStatus) DeepCopyInto(out *ProviderMemberStatus) {
	*out = *in
	if in.LastHealthCheck != nil {
		in, out := &in.LastHealthCheck, &out.LastHealthCheck
		*out = (*in).DeepCopy()
	}
}
func (in *ProviderMemberStatus) DeepCopy() *ProviderMemberStatus {
	if in == nil {
		return nil
	}
	out := new(ProviderMemberStatus)
	in.DeepCopyInto(out)
	return out
}

// MCPDiscoverySource
func (in *MCPDiscoverySource) DeepCopyInto(out *MCPDiscoverySource) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
}
func (in *MCPDiscoverySource) DeepCopy() *MCPDiscoverySource {
	if in == nil {
		return nil
	}
	out := new(MCPDiscoverySource)
	in.DeepCopyInto(out)
	return out
}
func (in *MCPDiscoverySource) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *MCPDiscoverySourceList) DeepCopyInto(out *MCPDiscoverySourceList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]MCPDiscoverySource, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *MCPDiscoverySourceList) DeepCopy() *MCPDiscoverySourceList {
	if in == nil {
		return nil
	}
	out := new(MCPDiscoverySourceList)
	in.DeepCopyInto(out)
	return out
}
func (in *MCPDiscoverySourceList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *MCPDiscoverySourceSpec) DeepCopyInto(out *MCPDiscoverySourceSpec) {
	*out = *in
	if in.NamespaceSelector != nil {
		in, out := &in.NamespaceSelector, &out.NamespaceSelector
		*out = new(NamespaceSelectorConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ConfigMapRef != nil {
		in, out := &in.ConfigMapRef, &out.ConfigMapRef
		*out = new(ConfigMapReference)
		**out = **in
	}
	if in.Annotations != nil {
		in, out := &in.Annotations, &out.Annotations
		*out = new(AnnotationDiscoveryConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ServiceDiscovery != nil {
		in, out := &in.ServiceDiscovery, &out.ServiceDiscovery
		*out = new(ServiceDiscoveryConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ProviderTemplate != nil {
		in, out := &in.ProviderTemplate, &out.ProviderTemplate
		*out = new(ProviderTemplateConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Filters != nil {
		in, out := &in.Filters, &out.Filters
		*out = new(DiscoveryFilters)
		(*in).DeepCopyInto(*out)
	}
	if in.Ownership != nil {
		in, out := &in.Ownership, &out.Ownership
		*out = new(OwnershipConfig)
		(*in).DeepCopyInto(*out)
	}
}
func (in *MCPDiscoverySourceSpec) DeepCopy() *MCPDiscoverySourceSpec {
	if in == nil {
		return nil
	}
	out := new(MCPDiscoverySourceSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *MCPDiscoverySourceStatus) DeepCopyInto(out *MCPDiscoverySourceStatus) {
	*out = *in
	if in.LastSyncTime != nil {
		in, out := &in.LastSyncTime, &out.LastSyncTime
		*out = (*in).DeepCopy()
	}
	if in.NextSyncTime != nil {
		in, out := &in.NextSyncTime, &out.NextSyncTime
		*out = (*in).DeepCopy()
	}
	if in.DiscoveredProviders != nil {
		in, out := &in.DiscoveredProviders, &out.DiscoveredProviders
		*out = make([]DiscoveredProvider, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *MCPDiscoverySourceStatus) DeepCopy() *MCPDiscoverySourceStatus {
	if in == nil {
		return nil
	}
	out := new(MCPDiscoverySourceStatus)
	in.DeepCopyInto(out)
	return out
}
func (in *NamespaceSelectorConfig) DeepCopyInto(out *NamespaceSelectorConfig) {
	*out = *in
	if in.MatchLabels != nil {
		in, out := &in.MatchLabels, &out.MatchLabels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.MatchExpressions != nil {
		in, out := &in.MatchExpressions, &out.MatchExpressions
		*out = make([]metav1.LabelSelectorRequirement, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.ExcludeNamespaces != nil {
		in, out := &in.ExcludeNamespaces, &out.ExcludeNamespaces
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
}
func (in *NamespaceSelectorConfig) DeepCopy() *NamespaceSelectorConfig {
	if in == nil {
		return nil
	}
	out := new(NamespaceSelectorConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *ConfigMapReference) DeepCopyInto(out *ConfigMapReference) { *out = *in }
func (in *ConfigMapReference) DeepCopy() *ConfigMapReference {
	if in == nil {
		return nil
	}
	out := new(ConfigMapReference)
	in.DeepCopyInto(out)
	return out
}
func (in *AnnotationDiscoveryConfig) DeepCopyInto(out *AnnotationDiscoveryConfig) {
	*out = *in
	if in.PodSelector != nil {
		in, out := &in.PodSelector, &out.PodSelector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.ServiceSelector != nil {
		in, out := &in.ServiceSelector, &out.ServiceSelector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.RequiredAnnotations != nil {
		in, out := &in.RequiredAnnotations, &out.RequiredAnnotations
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
}
func (in *AnnotationDiscoveryConfig) DeepCopy() *AnnotationDiscoveryConfig {
	if in == nil {
		return nil
	}
	out := new(AnnotationDiscoveryConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *ServiceDiscoveryConfig) DeepCopyInto(out *ServiceDiscoveryConfig) {
	*out = *in
	if in.Selector != nil {
		in, out := &in.Selector, &out.Selector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
}
func (in *ServiceDiscoveryConfig) DeepCopy() *ServiceDiscoveryConfig {
	if in == nil {
		return nil
	}
	out := new(ServiceDiscoveryConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *ProviderTemplateConfig) DeepCopyInto(out *ProviderTemplateConfig) {
	*out = *in
	if in.Metadata != nil {
		in, out := &in.Metadata, &out.Metadata
		*out = new(TemplateMetadata)
		(*in).DeepCopyInto(*out)
	}
	if in.Spec != nil {
		in, out := &in.Spec, &out.Spec
		*out = new(MCPProviderSpec)
		(*in).DeepCopyInto(*out)
	}
}
func (in *ProviderTemplateConfig) DeepCopy() *ProviderTemplateConfig {
	if in == nil {
		return nil
	}
	out := new(ProviderTemplateConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *TemplateMetadata) DeepCopyInto(out *TemplateMetadata) {
	*out = *in
	if in.Labels != nil {
		in, out := &in.Labels, &out.Labels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Annotations != nil {
		in, out := &in.Annotations, &out.Annotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
}
func (in *TemplateMetadata) DeepCopy() *TemplateMetadata {
	if in == nil {
		return nil
	}
	out := new(TemplateMetadata)
	in.DeepCopyInto(out)
	return out
}
func (in *DiscoveryFilters) DeepCopyInto(out *DiscoveryFilters) {
	*out = *in
	if in.IncludePatterns != nil {
		in, out := &in.IncludePatterns, &out.IncludePatterns
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.ExcludePatterns != nil {
		in, out := &in.ExcludePatterns, &out.ExcludePatterns
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.MaxProviders != nil {
		in, out := &in.MaxProviders, &out.MaxProviders
		*out = new(int32)
		**out = **in
	}
}
func (in *DiscoveryFilters) DeepCopy() *DiscoveryFilters {
	if in == nil {
		return nil
	}
	out := new(DiscoveryFilters)
	in.DeepCopyInto(out)
	return out
}
func (in *OwnershipConfig) DeepCopyInto(out *OwnershipConfig) {
	*out = *in
	if in.Controller != nil {
		in, out := &in.Controller, &out.Controller
		*out = new(bool)
		**out = **in
	}
}
func (in *OwnershipConfig) DeepCopy() *OwnershipConfig {
	if in == nil {
		return nil
	}
	out := new(OwnershipConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *DiscoveredProvider) DeepCopyInto(out *DiscoveredProvider) {
	*out = *in
	in.DiscoveredAt.DeepCopyInto(&out.DiscoveredAt)
}
func (in *DiscoveredProvider) DeepCopy() *DiscoveredProvider {
	if in == nil {
		return nil
	}
	out := new(DiscoveredProvider)
	in.DeepCopyInto(out)
	return out
}
