@pulumi/azure-native
Version:
[](https://slack.pulumi.com) [](https://npmjs.com/package/@pulumi/azure-native) [;
exports.WorkloadRuntime = exports.WeekDay = exports.UpgradeChannel = exports.Type = exports.SnapshotType = exports.ServiceMeshMode = exports.ScaleSetPriority = exports.ScaleSetEvictionPolicy = exports.ScaleDownMode = exports.RestrictionLevel = exports.ResourceIdentityType = exports.PublicNetworkAccess = exports.Protocol = exports.PolicyRule = exports.OutboundType = exports.Operator = exports.OSType = exports.OSSKU = exports.OSDiskType = exports.NodeOSUpgradeChannel = exports.NodeImageSelectionType = exports.NetworkPolicy = exports.NetworkPluginMode = exports.NetworkPlugin = exports.NetworkMode = exports.NetworkDataplane = exports.ManagedServiceIdentityType = exports.ManagedClusterUpgradeType = exports.ManagedClusterSKUTier = exports.ManagedClusterSKUName = exports.LoadBalancerSku = exports.LicenseType = exports.KubernetesSupportPlan = exports.KubeletDiskType = exports.KeyVaultNetworkAccessTypes = exports.IstioIngressGatewayMode = exports.IpFamily = exports.GPUInstanceProfile = exports.ExtendedLocationTypes = exports.Expander = exports.DeploymentSafeguardsLevel = exports.DeletePolicy = exports.ConnectionStatus = exports.Code = exports.BackendPoolType = exports.AutoUpgradeNodeImageSelectionType = exports.AgentPoolType = exports.AgentPoolMode = exports.AdoptionPolicy = void 0;
exports.AdoptionPolicy = {
/**
* If the namespace already exists in Kubernetes, attempts to create that same namespace in ARM will fail.
*/
Never: "Never",
/**
* Take over the existing namespace to be managed by ARM, if there is no difference.
*/
IfIdentical: "IfIdentical",
/**
* Always take over the existing namespace to be managed by ARM, some fields might be overwritten.
*/
Always: "Always",
};
exports.AgentPoolMode = {
/**
* System agent pools are primarily for hosting critical system pods such as CoreDNS and metrics-server. System agent pools osType must be Linux. System agent pools VM SKU must have at least 2vCPUs and 4GB of memory.
*/
System: "System",
/**
* User agent pools are primarily for hosting your application pods.
*/
User: "User",
};
exports.AgentPoolType = {
/**
* Create an Agent Pool backed by a Virtual Machine Scale Set.
*/
VirtualMachineScaleSets: "VirtualMachineScaleSets",
/**
* Use of this is strongly discouraged.
*/
AvailabilitySet: "AvailabilitySet",
};
exports.AutoUpgradeNodeImageSelectionType = {
/**
* Use the latest image version when upgrading nodes. Clusters may use different image versions (e.g., 'AKSUbuntu-1804gen2containerd-2021.10.12' and 'AKSUbuntu-1804gen2containerd-2021.10.19') because, for example, the latest available version is different in different regions.
*/
Latest: "Latest",
/**
* The image versions to upgrade nodes to are selected as described below: for each node pool in managed clusters affected by the update run, the system selects the latest image version such that it is available across all other node pools (in all other clusters) of the same image type. As a result, all node pools of the same image type will be upgraded to the same image version. For example, if the latest image version for image type 'AKSUbuntu-1804gen2containerd' is 'AKSUbuntu-1804gen2containerd-2021.10.12' for a node pool in cluster A in region X, and is 'AKSUbuntu-1804gen2containerd-2021.10.17' for a node pool in cluster B in region Y, the system will upgrade both node pools to image version 'AKSUbuntu-1804gen2containerd-2021.10.12'.
*/
Consistent: "Consistent",
};
exports.BackendPoolType = {
/**
* The type of the managed inbound Load Balancer BackendPool. https://cloud-provider-azure.sigs.k8s.io/topics/loadbalancer/#configure-load-balancer-backend.
*/
NodeIPConfiguration: "NodeIPConfiguration",
/**
* The type of the managed inbound Load Balancer BackendPool. https://cloud-provider-azure.sigs.k8s.io/topics/loadbalancer/#configure-load-balancer-backend.
*/
NodeIP: "NodeIP",
};
exports.Code = {
/**
* The cluster is running.
*/
Running: "Running",
/**
* The cluster is stopped.
*/
Stopped: "Stopped",
};
exports.ConnectionStatus = {
Pending: "Pending",
Approved: "Approved",
Rejected: "Rejected",
Disconnected: "Disconnected",
};
exports.DeletePolicy = {
/**
* Only delete the ARM resource, keep the Kubernetes namespace. Also delete the ManagedByARM label.
*/
Keep: "Keep",
/**
* Delete both the ARM resource and the Kubernetes namespace together.
*/
Delete: "Delete",
};
exports.DeploymentSafeguardsLevel = {
/**
* Best practice violations will only show warnings
*/
Warn: "Warn",
/**
* Best practice violations will be denied
*/
Enforce: "Enforce",
};
exports.Expander = {
/**
* Selects the node group that will have the least idle CPU (if tied, unused memory) after scale-up. This is useful when you have different classes of nodes, for example, high CPU or high memory nodes, and only want to expand those when there are pending pods that need a lot of those resources.
*/
Least_waste: "least-waste",
/**
* Selects the node group that would be able to schedule the most pods when scaling up. This is useful when you are using nodeSelector to make sure certain pods land on certain nodes. Note that this won't cause the autoscaler to select bigger nodes vs. smaller, as it can add multiple smaller nodes at once.
*/
Most_pods: "most-pods",
/**
* Selects the node group that has the highest priority assigned by the user. It's configuration is described in more details [here](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/expander/priority/readme.md).
*/
Priority: "priority",
/**
* Used when you don't have a particular need for the node groups to scale differently.
*/
Random: "random",
};
exports.ExtendedLocationTypes = {
EdgeZone: "EdgeZone",
};
exports.GPUInstanceProfile = {
MIG1g: "MIG1g",
MIG2g: "MIG2g",
MIG3g: "MIG3g",
MIG4g: "MIG4g",
MIG7g: "MIG7g",
};
exports.IpFamily = {
IPv4: "IPv4",
IPv6: "IPv6",
};
exports.IstioIngressGatewayMode = {
/**
* The ingress gateway is assigned a public IP address and is publicly accessible.
*/
External: "External",
/**
* The ingress gateway is assigned an internal IP address and cannot is accessed publicly.
*/
Internal: "Internal",
};
exports.KeyVaultNetworkAccessTypes = {
Public: "Public",
Private: "Private",
};
exports.KubeletDiskType = {
/**
* Kubelet will use the OS disk for its data.
*/
OS: "OS",
/**
* Kubelet will use the temporary disk for its data.
*/
Temporary: "Temporary",
};
exports.KubernetesSupportPlan = {
/**
* Support for the version is the same as for the open source Kubernetes offering. Official Kubernetes open source community support versions for 1 year after release.
*/
KubernetesOfficial: "KubernetesOfficial",
/**
* Support for the version extended past the KubernetesOfficial support of 1 year. AKS continues to patch CVEs for another 1 year, for a total of 2 years of support.
*/
AKSLongTermSupport: "AKSLongTermSupport",
};
exports.LicenseType = {
/**
* No additional licensing is applied.
*/
None: "None",
/**
* Enables Azure Hybrid User Benefits for Windows VMs.
*/
Windows_Server: "Windows_Server",
};
exports.LoadBalancerSku = {
/**
* Use a a standard Load Balancer. This is the recommended Load Balancer SKU. For more information about on working with the load balancer in the managed cluster, see the [standard Load Balancer](https://docs.microsoft.com/azure/aks/load-balancer-standard) article.
*/
Standard: "standard",
/**
* Use a basic Load Balancer with limited functionality.
*/
Basic: "basic",
};
exports.ManagedClusterSKUName = {
/**
* Base option for the AKS control plane.
*/
Base: "Base",
};
exports.ManagedClusterSKUTier = {
/**
* Cluster has premium capabilities in addition to all of the capabilities included in 'Standard'. Premium enables selection of LongTermSupport (aka.ms/aks/lts) for certain Kubernetes versions.
*/
Premium: "Premium",
/**
* Recommended for mission-critical and production workloads. Includes Kubernetes control plane autoscaling, workload-intensive testing, and up to 5,000 nodes per cluster. Guarantees 99.95% availability of the Kubernetes API server endpoint for clusters that use Availability Zones and 99.9% of availability for clusters that don't use Availability Zones.
*/
Standard: "Standard",
/**
* The cluster management is free, but charged for VM, storage, and networking usage. Best for experimenting, learning, simple testing, or workloads with fewer than 10 nodes. Not recommended for production use cases.
*/
Free: "Free",
};
exports.ManagedClusterUpgradeType = {
/**
* Full upgrades the control plane and all agent pools of the target ManagedClusters. Requires the ManagedClusterUpgradeSpec.KubernetesVersion property to be set.
*/
Full: "Full",
/**
* NodeImageOnly upgrades only the node images of the target ManagedClusters. Requires the ManagedClusterUpgradeSpec.KubernetesVersion property to NOT be set.
*/
NodeImageOnly: "NodeImageOnly",
/**
* ControlPlaneOnly upgrades only targets the KubernetesVersion of the ManagedClusters and will not be applied to the AgentPool. Requires the ManagedClusterUpgradeSpec.KubernetesVersion property to be set.
*/
ControlPlaneOnly: "ControlPlaneOnly",
};
exports.ManagedServiceIdentityType = {
None: "None",
SystemAssigned: "SystemAssigned",
UserAssigned: "UserAssigned",
SystemAssigned_UserAssigned: "SystemAssigned, UserAssigned",
};
exports.NetworkDataplane = {
/**
* Use Azure network dataplane.
*/
Azure: "azure",
/**
* Use Cilium network dataplane. See [Azure CNI Powered by Cilium](https://learn.microsoft.com/azure/aks/azure-cni-powered-by-cilium) for more information.
*/
Cilium: "cilium",
};
exports.NetworkMode = {
/**
* No bridge is created. Intra-VM Pod to Pod communication is through IP routes created by Azure CNI. See [Transparent Mode](https://docs.microsoft.com/azure/aks/faq#transparent-mode) for more information.
*/
Transparent: "transparent",
/**
* This is no longer supported
*/
Bridge: "bridge",
};
exports.NetworkPlugin = {
/**
* Use the Azure CNI network plugin. See [Azure CNI (advanced) networking](https://docs.microsoft.com/azure/aks/concepts-network#azure-cni-advanced-networking) for more information.
*/
Azure: "azure",
/**
* Use the Kubenet network plugin. See [Kubenet (basic) networking](https://docs.microsoft.com/azure/aks/concepts-network#kubenet-basic-networking) for more information.
*/
Kubenet: "kubenet",
/**
* No CNI plugin is pre-installed. See [BYO CNI](https://docs.microsoft.com/en-us/azure/aks/use-byo-cni) for more information.
*/
None: "none",
};
exports.NetworkPluginMode = {
/**
* Used with networkPlugin=azure, pods are given IPs from the PodCIDR address space but use Azure Routing Domains rather than Kubenet's method of route tables. For more information visit https://aka.ms/aks/azure-cni-overlay.
*/
Overlay: "overlay",
};
exports.NetworkPolicy = {
/**
* Network policies will not be enforced. This is the default value when NetworkPolicy is not specified.
*/
None: "none",
/**
* Use Calico network policies. See [differences between Azure and Calico policies](https://docs.microsoft.com/azure/aks/use-network-policies#differences-between-azure-and-calico-policies-and-their-capabilities) for more information.
*/
Calico: "calico",
/**
* Use Azure network policies. See [differences between Azure and Calico policies](https://docs.microsoft.com/azure/aks/use-network-policies#differences-between-azure-and-calico-policies-and-their-capabilities) for more information.
*/
Azure: "azure",
/**
* Use Cilium to enforce network policies. This requires networkDataplane to be 'cilium'.
*/
Cilium: "cilium",
};
exports.NodeImageSelectionType = {
/**
* Use the latest image version when upgrading nodes. Clusters may use different image versions (e.g., 'AKSUbuntu-1804gen2containerd-2021.10.12' and 'AKSUbuntu-1804gen2containerd-2021.10.19') because, for example, the latest available version is different in different regions.
*/
Latest: "Latest",
/**
* The image versions to upgrade nodes to are selected as described below: for each node pool in managed clusters affected by the update run, the system selects the latest image version such that it is available across all other node pools (in all other clusters) of the same image type. As a result, all node pools of the same image type will be upgraded to the same image version. For example, if the latest image version for image type 'AKSUbuntu-1804gen2containerd' is 'AKSUbuntu-1804gen2containerd-2021.10.12' for a node pool in cluster A in region X, and is 'AKSUbuntu-1804gen2containerd-2021.10.17' for a node pool in cluster B in region Y, the system will upgrade both node pools to image version 'AKSUbuntu-1804gen2containerd-2021.10.12'.
*/
Consistent: "Consistent",
/**
* Upgrade the nodes to the custom image versions. When set, update run will use node image versions provided in customNodeImageVersions to upgrade the nodes. If set, customNodeImageVersions must not be empty.
*/
Custom: "Custom",
};
exports.NodeOSUpgradeChannel = {
/**
* No attempt to update your machines OS will be made either by OS or by rolling VHDs. This means you are responsible for your security updates
*/
None: "None",
/**
* OS updates will be applied automatically through the OS built-in patching infrastructure. Newly scaled in machines will be unpatched initially and will be patched at some point by the OS's infrastructure. Behavior of this option depends on the OS in question. Ubuntu and Mariner apply security patches through unattended upgrade roughly once a day around 06:00 UTC. Windows does not apply security patches automatically and so for them this option is equivalent to None till further notice
*/
Unmanaged: "Unmanaged",
/**
* AKS will update the nodes with a newly patched VHD containing security fixes and bugfixes on a weekly cadence. With the VHD update machines will be rolling reimaged to that VHD following maintenance windows and surge settings. No extra VHD cost is incurred when choosing this option as AKS hosts the images.
*/
NodeImage: "NodeImage",
/**
* AKS downloads and updates the nodes with tested security updates. These updates honor the maintenance window settings and produce a new VHD that is used on new nodes. On some occasions it's not possible to apply the updates in place, in such cases the existing nodes will also be re-imaged to the newly produced VHD in order to apply the changes. This option incurs an extra cost of hosting the new Security Patch VHDs in your resource group for just in time consumption.
*/
SecurityPatch: "SecurityPatch",
};
exports.OSDiskType = {
/**
* Azure replicates the operating system disk for a virtual machine to Azure storage to avoid data loss should the VM need to be relocated to another host. Since containers aren't designed to have local state persisted, this behavior offers limited value while providing some drawbacks, including slower node provisioning and higher read/write latency.
*/
Managed: "Managed",
/**
* Ephemeral OS disks are stored only on the host machine, just like a temporary disk. This provides lower read/write latency, along with faster node scaling and cluster upgrades.
*/
Ephemeral: "Ephemeral",
};
exports.OSSKU = {
/**
* Use Ubuntu as the OS for node images.
*/
Ubuntu: "Ubuntu",
/**
* Use AzureLinux as the OS for node images. Azure Linux is a container-optimized Linux distro built by Microsoft, visit https://aka.ms/azurelinux for more information.
*/
AzureLinux: "AzureLinux",
/**
* Deprecated OSSKU. Microsoft recommends that new deployments choose 'AzureLinux' instead.
*/
CBLMariner: "CBLMariner",
/**
* Use Windows2019 as the OS for node images. Unsupported for system node pools. Windows2019 only supports Windows2019 containers; it cannot run Windows2022 containers and vice versa.
*/
Windows2019: "Windows2019",
/**
* Use Windows2022 as the OS for node images. Unsupported for system node pools. Windows2022 only supports Windows2022 containers; it cannot run Windows2019 containers and vice versa.
*/
Windows2022: "Windows2022",
};
exports.OSType = {
/**
* Use Linux.
*/
Linux: "Linux",
/**
* Use Windows.
*/
Windows: "Windows",
};
exports.Operator = {
/**
* The value of the key should be in the given list.
*/
In: "In",
/**
* The value of the key should not be in the given list.
*/
NotIn: "NotIn",
/**
* The value of the key should exist.
*/
Exists: "Exists",
/**
* The value of the key should not exist.
*/
DoesNotExist: "DoesNotExist",
};
exports.OutboundType = {
/**
* The load balancer is used for egress through an AKS assigned public IP. This supports Kubernetes services of type 'loadBalancer'. For more information see [outbound type loadbalancer](https://docs.microsoft.com/azure/aks/egress-outboundtype#outbound-type-of-loadbalancer).
*/
LoadBalancer: "loadBalancer",
/**
* Egress paths must be defined by the user. This is an advanced scenario and requires proper network configuration. For more information see [outbound type userDefinedRouting](https://docs.microsoft.com/azure/aks/egress-outboundtype#outbound-type-of-userdefinedrouting).
*/
UserDefinedRouting: "userDefinedRouting",
/**
* The AKS-managed NAT gateway is used for egress.
*/
ManagedNATGateway: "managedNATGateway",
/**
* The user-assigned NAT gateway associated to the cluster subnet is used for egress. This is an advanced scenario and requires proper network configuration.
*/
UserAssignedNATGateway: "userAssignedNATGateway",
};
exports.PolicyRule = {
/**
* Deny all network traffic.
*/
DenyAll: "DenyAll",
/**
* Allow all network traffic.
*/
AllowAll: "AllowAll",
/**
* Allow traffic within the same namespace.
*/
AllowSameNamespace: "AllowSameNamespace",
};
exports.Protocol = {
/**
* TCP protocol.
*/
TCP: "TCP",
/**
* UDP protocol.
*/
UDP: "UDP",
};
exports.PublicNetworkAccess = {
Enabled: "Enabled",
Disabled: "Disabled",
};
exports.ResourceIdentityType = {
/**
* Use an implicitly created system assigned managed identity to manage cluster resources. Master components in the control plane such as kube-controller-manager will use the system assigned managed identity to manipulate Azure resources.
*/
SystemAssigned: "SystemAssigned",
/**
* Use a user-specified identity to manage cluster resources. Master components in the control plane such as kube-controller-manager will use the specified user assigned managed identity to manipulate Azure resources.
*/
UserAssigned: "UserAssigned",
/**
* Do not use a managed identity for the Managed Cluster, service principal will be used instead.
*/
None: "None",
};
exports.RestrictionLevel = {
/**
* All RBAC permissions are allowed on the managed node resource group
*/
Unrestricted: "Unrestricted",
/**
* Only */read RBAC permissions allowed on the managed node resource group
*/
ReadOnly: "ReadOnly",
};
exports.ScaleDownMode = {
/**
* Create new instances during scale up and remove instances during scale down.
*/
Delete: "Delete",
/**
* Attempt to start deallocated instances (if they exist) during scale up and deallocate instances during scale down.
*/
Deallocate: "Deallocate",
};
exports.ScaleSetEvictionPolicy = {
/**
* Nodes in the underlying Scale Set of the node pool are deleted when they're evicted.
*/
Delete: "Delete",
/**
* Nodes in the underlying Scale Set of the node pool are set to the stopped-deallocated state upon eviction. Nodes in the stopped-deallocated state count against your compute quota and can cause issues with cluster scaling or upgrading.
*/
Deallocate: "Deallocate",
};
exports.ScaleSetPriority = {
/**
* Spot priority VMs will be used. There is no SLA for spot nodes. See [spot on AKS](https://docs.microsoft.com/azure/aks/spot-node-pool) for more information.
*/
Spot: "Spot",
/**
* Regular VMs will be used.
*/
Regular: "Regular",
};
exports.ServiceMeshMode = {
/**
* Istio deployed as an AKS addon.
*/
Istio: "Istio",
/**
* Mesh is disabled.
*/
Disabled: "Disabled",
};
exports.SnapshotType = {
/**
* The snapshot is a snapshot of a node pool.
*/
NodePool: "NodePool",
};
exports.Type = {
/**
* First week of the month.
*/
First: "First",
/**
* Second week of the month.
*/
Second: "Second",
/**
* Third week of the month.
*/
Third: "Third",
/**
* Fourth week of the month.
*/
Fourth: "Fourth",
/**
* Last week of the month.
*/
Last: "Last",
};
exports.UpgradeChannel = {
/**
* Automatically upgrade the cluster to the latest supported patch release on the latest supported minor version. In cases where the cluster is at a version of Kubernetes that is at an N-2 minor version where N is the latest supported minor version, the cluster first upgrades to the latest supported patch version on N-1 minor version. For example, if a cluster is running version 1.17.7 and versions 1.17.9, 1.18.4, 1.18.6, and 1.19.1 are available, your cluster first is upgraded to 1.18.6, then is upgraded to 1.19.1.
*/
Rapid: "rapid",
/**
* Automatically upgrade the cluster to the latest supported patch release on minor version N-1, where N is the latest supported minor version. For example, if a cluster is running version 1.17.7 and versions 1.17.9, 1.18.4, 1.18.6, and 1.19.1 are available, your cluster is upgraded to 1.18.6.
*/
Stable: "stable",
/**
* Automatically upgrade the cluster to the latest supported patch version when it becomes available while keeping the minor version the same. For example, if a cluster is running version 1.17.7 and versions 1.17.9, 1.18.4, 1.18.6, and 1.19.1 are available, your cluster is upgraded to 1.17.9.
*/
Patch: "patch",
/**
* Automatically upgrade the node image to the latest version available. Consider using nodeOSUpgradeChannel instead as that allows you to configure node OS patching separate from Kubernetes version patching
*/
Node_image: "node-image",
/**
* Disables auto-upgrades and keeps the cluster at its current version of Kubernetes.
*/
None: "none",
};
exports.WeekDay = {
Sunday: "Sunday",
Monday: "Monday",
Tuesday: "Tuesday",
Wednesday: "Wednesday",
Thursday: "Thursday",
Friday: "Friday",
Saturday: "Saturday",
};
exports.WorkloadRuntime = {
/**
* Nodes will use Kubelet to run standard OCI container workloads.
*/
OCIContainer: "OCIContainer",
/**
* Nodes will use Krustlet to run WASM workloads using the WASI provider (Preview).
*/
WasmWasi: "WasmWasi",
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90eXBlcy9lbnVtcy9jb250YWluZXJzZXJ2aWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzRUFBc0U7QUFDdEUsaUZBQWlGOzs7QUFHcEUsUUFBQSxjQUFjLEdBQUc7SUFDMUI7O09BRUc7SUFDSCxLQUFLLEVBQUUsT0FBTztJQUNkOztPQUVHO0lBQ0gsV0FBVyxFQUFFLGFBQWE7SUFDMUI7O09BRUc7SUFDSCxNQUFNLEVBQUUsUUFBUTtDQUNWLENBQUM7QUFPRSxRQUFBLGFBQWEsR0FBRztJQUN6Qjs7T0FFRztJQUNILE1BQU0sRUFBRSxRQUFRO0lBQ2hCOztPQUVHO0lBQ0gsSUFBSSxFQUFFLE1BQU07Q0FDTixDQUFDO0FBT0UsUUFBQSxhQUFhLEdBQUc7SUFDekI7O09BRUc7SUFDSCx1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQ7O09BRUc7SUFDSCxlQUFlLEVBQUUsaUJBQWlCO0NBQzVCLENBQUM7QUFPRSxRQUFBLGlDQUFpQyxHQUFHO0lBQzdDOztPQUVHO0lBQ0gsTUFBTSxFQUFFLFFBQVE7SUFDaEI7O09BRUc7SUFDSCxVQUFVLEVBQUUsWUFBWTtDQUNsQixDQUFDO0FBT0UsUUFBQSxlQUFlLEdBQUc7SUFDM0I7O09BRUc7SUFDSCxtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUM7O09BRUc7SUFDSCxNQUFNLEVBQUUsUUFBUTtDQUNWLENBQUM7QUFPRSxRQUFBLElBQUksR0FBRztJQUNoQjs7T0FFRztJQUNILE9BQU8sRUFBRSxTQUFTO0lBQ2xCOztPQUVHO0lBQ0gsT0FBTyxFQUFFLFNBQVM7Q0FDWixDQUFDO0FBT0UsUUFBQSxnQkFBZ0IsR0FBRztJQUM1QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixRQUFRLEVBQUUsVUFBVTtJQUNwQixZQUFZLEVBQUUsY0FBYztDQUN0QixDQUFDO0FBT0UsUUFBQSxZ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