PSKubectlCompletion.psm1

function Register-KubectlCompletion {
    [scriptblock]$ArgumentCompleter = {
        param($wordToComplete, $commandAst, $cursorPosition)
        $script:cast = @{
            CursorPosition  = $cursorPosition
            EndOffset       = $commandAst.Extent.EndOffset;
            WordToComplete  = $wordToComplete;
            LastCommand     = Get-LastCommand($commandAst.ToString());
            CommandElements = $commandAst.CommandElements | ForEach-Object { $_.Extent.ToString().Split('=')[0] };
            Commands        = Get-Commands($commandAst.ToString());
            ResourceFlags   = Get-Resource-Flags($commandAst.ToString());
        };
        return Get-Completions;
    }
    $rootCommands = ('kubectl', 'kubectl.exe');
    $aliases = (get-alias).Where( { $_.Definition -in $rootCommands }).Name;
    if ($aliases) {
        $rootCommands += $aliases
    }
    Register-ArgumentCompleter -CommandName $rootCommands -ScriptBlock $ArgumentCompleter -Native
}
function Get-Completions() {
    if ($cast.Commands.Count -gt 2) {
        $availableOpts = (Get-AvailableOptions($cast.LastCommand)).Where( { $_.StartsWith($cast.WordToComplete) });
        if ($availableOpts.Count -gt 0) 
        {
            return $availableOpts |
            Where-Object { $_.StartsWith($cast.WordToComplete) -and $_.Split("=")[0] -notin $cast.CommandElements } |
            ForEach-Object { $_ };
        }
    }
    else {
        [string[]]$opts = Get-RootCompletionOptions;
        if ($cast.WordToComplete -eq [string]::Empty -and $cast.LastCommand -eq [string]::Empty) {
            return $opts | ForEach-Object { $_ };
        }
        elseIf ($opts.Contains($cast.LastCommand)) {
            if ($cast.EndOffset -gt $cast.CursorPosition) {
                return $null;
            }
            return Get-AvailableOptions($cast.LastCommand) |
            Where-Object {  $_.StartsWith($cast.WordToComplete) -and $_.Split("=")[0] -notin $cast.CommandElements } |
            ForEach-Object { $_ };
        }
        else {
            return $opts |
            Where-Object { $_.StartsWith($cast.WordToComplete) } |
            ForEach-Object { $_ };
        }
    }
}
function Remove-CommandFlags($parameterName) {
    $cmd = $parameterName.Trim();
    $flags = Select-String '\s-{1,2}[\w-]*[=?|\s+]?[\w1-9_:/-]*' -InputObject $cmd -AllMatches;
    $flags.Matches.Value | ForEach-Object { $cmd = $cmd.Replace($_, " ") };
    return $cmd;
}
function Get-LastCommand($parameterName) {
    $cmd = Remove-CommandFlags($parameterName);
    $options = $cmd.Trim().Split(' ');
    if ($options.Count -lt 2) {
        return 'root';
    }
    return $options[1];
}
function Get-Commands($parameterName) {
    $cmd = Remove-CommandFlags($parameterName);
    $commands = $cmd.Split(' ') | Where-Object { $_ -ne [string]::Empty };
    return $commands;
}
function Get-AvailableOptions($lastCommand) {
    $completions = [System.Collections.ArrayList]@();
    if ($lastCommand -in ("kubectl", "kubectl.exe")) {
        return $completions += Get-RootCompletionOptions($wordToComplete);
    }
    switch ($lastCommand) {
        get {
            return $completions += Get-KubectlGet;
        }
        default {
            $completions = Invoke-Expression "Get-$lastCommand" -ErrorAction Ignore;
        }
    }
    return $completions;
}
function Get-Resource-Flags($commandAst) {
    $results = "";
    $resourceFlags = ("--kubeconfig", "--cluster", "--user", "--context", "--namespace", "--server", "-n", "-s");
    $flags = Select-String '\s-{1,2}[\w-]*[=?|\s+]?[\w1-9_:/-]*' -InputObject $commandAst.Trim() -AllMatches;

    foreach ($flag in $flags.Matches.Value) {
        foreach ($resourceFlag in $resourceFlags) {
            if ($flag.Trim().StartsWith(($resourceFlag))) {
                $results += $flag.Trim() + " ";
            }
        }
    }

    return $results.Trim();
}
function Get-Kubectl-Resources($resourceType) {
    if ($null -eq $resourceType) {
        $resourceType = $cast.Commands[2];
    }
    $completions = [System.Collections.ArrayList]@();
    $kubectl = $cast.Commands[0];
    $template = "{{range .items}}{{.metadata.name}} {{end}}"
    $resources = Invoke-Expression "$kubectl get $resourceType $($cast.ResourceFlags) --template ""$template""" -ErrorAction Ignore;
    if ($resources.Length -gt 0) {
        $completions += $resources.trim().split();
    }
    return $completions;
}
function Get-Kubectl-Config($configType) {
    $completions = [System.Collections.ArrayList]@();
    $kubectl = $cast.Commands[0];
    $template = "{{ range .$configType }}{{ .name }} {{ end }}"
    $resources = Invoke-Expression "$kubectl config -o template --template=""$template"" view" -ErrorAction Ignore;
    if ($resources.Length -gt 0) {
        $completions += $resources.trim().split();
    }
    return $completions;
}
function Get-KubectlCommon() {
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    return $flags;
}
function Get-RootCompletionOptions() {
    $commands = [System.Collections.ArrayList]@();
    $commands += ("alpha")
    $commands += ("annotate")
    $commands += ("api-resources")
    $commands += ("api-versions")
    $commands += ("apply")
    $commands += ("attach")
    $commands += ("auth")
    $commands += ("autoscale")
    $commands += ("certificate")
    $commands += ("cluster-info")
    $commands += ("completion")
    $commands += ("config")
    $commands += ("convert")
    $commands += ("cordon")
    $commands += ("cp")
    $commands += ("create")
    $commands += ("delete")
    $commands += ("describe")
    $commands += ("diff")
    $commands += ("drain")
    $commands += ("edit")
    $commands += ("exec")
    $commands += ("explain")
    $commands += ("expose")
    $commands += ("get")
    $commands += ("kustomize")
    $commands += ("label")
    $commands += ("logs")
    $commands += ("options")
    $commands += ("patch")
    $commands += ("plugin")
    $commands += ("port-forward")
    $commands += ("proxy")
    $commands += ("replace")
    $commands += ("rollout")
    $commands += ("run")
    $commands += ("scale")
    $commands += ("set")
    $commands += ("taint")
    $commands += ("top")
    $commands += ("uncordon")
    $commands += ("version")
    $commands += ("wait")
    $commands += ( { Get-KubectlCommon }.Invoke());
    return $commands;
}
function Get-alpha {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $commands += ("debug");
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    if ($commands.Contains($cast.Commands[2])) {
        $resource = $cast.Commands[2];
        return Invoke-Expression "Get-alpha-$resource"
    }
    $commands += $flags;
    return $commands;
}
function Get-annotate() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--field-selector=")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--overwrite")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--resource-version=")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-api-resources() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--api-group=")
    $flags += ("--cached")
    $flags += ("--namespaced")
    $flags += ("--no-headers")
    $flags += ("--output=")
    $flags += ("--sort-by=")
    $flags += ("--verbs=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-api-versions() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-apply() {
    $commands = [System.Collections.ArrayList]@()
    $flags = [System.Collections.ArrayList]@()
    $commands += ("edit-last-applied")
    $commands += ("set-last-applied")
    $commands += ("view-last-applied")
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--cascade")
    $flags += ("--dry-run")
    $flags += ("--field-manager=")
    $flags += ("--filename=")
    $flags += ("--force")
    $flags += ("--force-conflicts")
    $flags += ("--grace-period=")
    $flags += ("--kustomize=")
    $flags += ("--openapi-patch")
    $flags += ("--output=")
    $flags += ("--overwrite")
    $flags += ("--prune")
    $flags += ("--prune-whitelist=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--selector=")
    $flags += ("--server-side")
    $flags += ("--template=")
    $flags += ("--timeout=")
    $flags += ("--validate")
    $flags += ("--wait")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    if ($commands.Contains($cast.Commands[2])) {
        return $flags;
    }
    $commands += $flags;
    return $commands;
}
function Get-attach() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--container=")
    $flags += ("--pod-running-timeout=")
    $flags += ("--stdin")
    $flags += ("-i")
    $flags += ("--tty")
    $flags += ("-t")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources("pods"));
    $commands += $flags;
    return $commands;
}
function Get-auth() {
    $commands = [System.Collections.ArrayList]@()
    $commands += ("can-i")
    $commands += ("reconcile")
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-autoscale() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--allow-missing-template-keys")
    $flags += ("--cpu-percent=")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--generator=")
    $flags += ("--kustomize=")
    $flags += ("--max=")
    $flags += ("--min=")
    $flags += ("--name=")
    $flags += ("--output=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-certificate() {
    $commands = [System.Collections.ArrayList]@()
    $commands += ("approve")
    $commands += ("deny")
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-cluster-info() {
    $commands = [System.Collections.ArrayList]@()
    $flags = [System.Collections.ArrayList]@()
    $commands += ("dump")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    if ($commands.Contains($cast.Commands[2])) {
        $resource = $cast.Commands[2];
        return Invoke-Expression "Get-config-$resource"
    }
    $commands += $flags;
    return $commands;
}
function Get-completion() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--help")
    $flags += ("-h")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-config() {
    $commands = [System.Collections.ArrayList]@()
    $flags = [System.Collections.ArrayList]@()
    $commands += ("current-context")
    $commands += ("delete-cluster")
    $commands += ("delete-context")
    $commands += ("get-clusters")
    $commands += ("get-contexts")
    $commands += ("rename-context")
    $commands += ("set")
    $commands += ("set-cluster")
    $commands += ("set-context")
    $commands += ("set-credentials")
    $commands += ("unset")
    $commands += ("use-context")
    $commands += ("view")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    if ($commands.Contains($cast.Commands[2])) {
        $resource = $cast.Commands[2];
        return Invoke-Expression "Get-config-$resource"
    }
    return $commands;
}
function Get-convert() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--allow-missing-template-keys")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--output-version=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-cordon() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--dry-run")
    $flags += ("--selector=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources("nodes"));
    $commands += $flags;
    return $commands;
}
function Get-cp() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--container=")
    $flags += ("--no-preserve")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create($parameterName) {
    $commands = [System.Collections.ArrayList]@()
    $commands += ("clusterrole")
    $commands += ("clusterrolebinding")
    $commands += ("configmap")
    $commands += ("cronjob")
    $commands += ("deployment")
    $commands += ("job")
    $commands += ("namespace")
    $commands += ("poddisruptionbudget")
    $commands += ("priorityclass")
    $commands += ("quota")
    $commands += ("role")
    $commands += ("rolebinding")
    $commands += ("secret")
    $commands += ("service")
    $commands += ("serviceaccount")
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--edit")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--raw=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--save-config")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--windows-line-endings")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    if ($commands.Contains($cast.Commands[2])) {
        $resource = $cast.Commands[2];
        return Invoke-Expression "Get-create-$resource"
    }
    $commands += $flags;
    return $commands;
}
function Get-delete() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--all")
    $flags += ("--all-namespaces")
    $flags += ("-A")
    $flags += ("--cascade")
    $flags += ("--dry-run")
    $flags += ("--field-selector=")
    $flags += ("--filename=")
    $flags += ("--force")
    $flags += ("--grace-period=")
    $flags += ("--ignore-not-found")
    $flags += ("--kustomize=")
    $flags += ("--now")
    $flags += ("--output=")
    $flags += ("--raw=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--selector=")
    $flags += ("--timeout=")
    $flags += ("--wait")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-describe() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--all-namespaces")
    $flags += ("-A")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--selector=")
    $flags += ("--show-events")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-diff() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--field-manager=")
    $flags += ("--filename=")
    $flags += ("--force-conflicts")
    $flags += ("--kustomize=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--server-side")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-drain() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--delete-local-data")
    $flags += ("--disable-eviction")
    $flags += ("--dry-run")
    $flags += ("--force")
    $flags += ("--grace-period=")
    $flags += ("--ignore-daemonsets")
    $flags += ("--pod-selector=")
    $flags += ("--selector=")
    $flags += ("--skip-wait-for-delete-timeout=")
    $flags += ("--timeout=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources("nodes"));
    $commands += $flags;
    return $commands;
}
function Get-edit() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--allow-missing-template-keys")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--output-patch")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--windows-line-endings")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-exec() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--container=")
    $flags += ("--filename=")
    $flags += ("--pod-running-timeout=")
    $flags += ("--stdin")
    $flags += ("-i")
    $flags += ("--tty")
    $flags += ("-t")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources("pods"));
    $commands += $flags;
    return $commands;
}
function Get-explain() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--api-version=")
    $flags += ("--recursive")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-expose() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--allow-missing-template-keys")
    $flags += ("--cluster-ip=")
    $flags += ("--dry-run")
    $flags += ("--external-ip=")
    $flags += ("--filename=")
    $flags += ("--generator=")
    $flags += ("--kustomize=")
    $flags += ("--labels=")
    $flags += ("--load-balancer-ip=")
    $flags += ("--name=")
    $flags += ("--output=")
    $flags += ("--overrides=")
    $flags += ("--port=")
    $flags += ("--protocol=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--save-config")
    $flags += ("--selector=")
    $flags += ("--session-affinity=")
    $flags += ("--target-port=")
    $flags += ("--template=")
    $flags += ("--type=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-kustomize() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-label() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--field-selector=")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--list")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--overwrite")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--resource-version=")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-logs() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--all-containers")
    $flags += ("--container=")
    $flags += ("--follow")
    $flags += ("-f")
    $flags += ("--ignore-errors")
    $flags += ("--insecure-skip-tls-verify-backend")
    $flags += ("--limit-bytes=")
    $flags += ("--max-log-requests=")
    $flags += ("--pod-running-timeout=")
    $flags += ("--prefix")
    $flags += ("--previous")
    $flags += ("-p")
    $flags += ("--selector=")
    $flags += ("--since=")
    $flags += ("--since-time=")
    $flags += ("--tail=")
    $flags += ("--timestamps")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources("pods"));
    $commands += $flags;
    return $commands;
}
function Get-options() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-patch() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--patch=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--type=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-plugin() {
    $commands = [System.Collections.ArrayList]@()
    $commands += ("list")
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-port-forward() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--address=")
    $flags += ("--pod-running-timeout=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources("pods"));
    $commands += $flags;
    return $commands;
}
function Get-proxy() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--accept-hosts=")
    $flags += ("--accept-paths=")
    $flags += ("--address=")
    $flags += ("--api-prefix=")
    $flags += ("--disable-filter")
    $flags += ("--keepalive=")
    $flags += ("--port=")
    $flags += ("--reject-methods=")
    $flags += ("--reject-paths=")
    $flags += ("--unix-socket=")
    $flags += ("--www=")
    $flags += ("--www-prefix=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-replace() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--allow-missing-template-keys")
    $flags += ("--cascade")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--force")
    $flags += ("--grace-period=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--raw=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--timeout=")
    $flags += ("--validate")
    $flags += ("--wait")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-rollout() {
    $commands = [System.Collections.ArrayList]@()
    $commands += ("history")
    $commands += ("pause")
    $commands += ("restart")
    $commands += ("resume")
    $commands += ("status")
    $commands += ("undo")
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    if ($commands.Contains($cast.Commands[2])) {
        $resource = $cast.Commands[2];
        return Invoke-Expression "Get-rollout-$resource"
    }
    $commands += $flags;
    return $commands;
}
function Get-run() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--allow-missing-template-keys")
    $flags += ("--attach")
    $flags += ("--cascade")
    $flags += ("--command")
    $flags += ("--dry-run")
    $flags += ("--env=")
    $flags += ("--expose")
    $flags += ("--filename=")
    $flags += ("--force")
    $flags += ("--grace-period=")
    $flags += ("--hostport=")
    $flags += ("--image=")
    $flags += ("--image-pull-policy=")
    $flags += ("--kustomize=")
    $flags += ("--labels=")
    $flags += ("--leave-stdin-open")
    $flags += ("--limits=")
    $flags += ("--output=")
    $flags += ("--overrides=")
    $flags += ("--pod-running-timeout=")
    $flags += ("--port=")
    $flags += ("--quiet")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--requests=")
    $flags += ("--restart=")
    $flags += ("--rm")
    $flags += ("--save-config")
    $flags += ("--serviceaccount=")
    $flags += ("--stdin")
    $flags += ("-i")
    $flags += ("--template=")
    $flags += ("--timeout=")
    $flags += ("--tty")
    $flags += ("-t")
    $flags += ("--wait")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-scale() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--current-replicas=")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--replicas=")
    $flags += ("--resource-version=")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--timeout=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-set() {
    $commands = [System.Collections.ArrayList]@()
    $flags = [System.Collections.ArrayList]@()
    $commands += ("env")
    $commands += ("image")
    $commands += ("resources")
    $commands += ("selector")
    $commands += ("serviceaccount")
    $commands += ("subject")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    if ($commands.Contains($cast.Commands[2])) {
        $resource = $cast.Commands[2];
        return Invoke-Expression "Get-set-$resource"
    }
    $commands += $flags;
    return $commands;
}
function Get-taint() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--output=")
    $flags += ("--overwrite")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources);
    $commands += $flags;
    return $commands;
}
function Get-top() {
    $commands = [System.Collections.ArrayList]@()
    $flags = [System.Collections.ArrayList]@()
    $commands += ("node")
    $commands += ("pod")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    if ($commands.Contains($cast.Commands[2])) {
        $resource = $cast.Commands[2];
        return Invoke-Expression "Get-top-$resource"
    }
    $commands += $flags;
    return $commands;
}
function Get-uncordon() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--dry-run")
    $flags += ("--selector=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources("nodes"));
    $commands += $flags;
    return $commands;
}
function Get-version() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--client")
    $flags += ("--output=")
    $flags += ("--short")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-wait() {
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--all")
    $flags += ("--all-namespaces")
    $flags += ("-A")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--field-selector=")
    $flags += ("--filename=")
    $flags += ("--for=")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--timeout=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-KubectlGet() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@()
    $flags += ("--all-namespaces")
    $flags += ("-A")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--chunk-size=")
    $flags += ("--field-selector=")
    $flags += ("--filename=")
    $flags += ("--ignore-not-found")
    $flags += ("--kustomize=")
    $flags += ("--label-columns=")
    $flags += ("--no-headers")
    $flags += ("--output=")
    $flags += ("--output-watch-events")
    $flags += ("--raw=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--selector=")
    $flags += ("--server-print")
    $flags += ("--show-kind")
    $flags += ("--show-labels")
    $flags += ("--sort-by=")
    $flags += ("--template=")
    $flags += ("--watch")
    $flags += ("-w")
    $flags += ("--watch-only")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += Get-CommonApiResources;
    if ($commands.Contains($cast.Commands[2]) ) {
        if ($cast.WordToComplete -eq $cast.Commands[2]) {
            return $null;
        }
        $resources =  @(Get-Kubectl-Resources);
        return $resources += $flags;
    }
    $commands += $flags;
    return $commands;
}
function Get-CommonApiResources {
    return (
        # plural
        "bindings",
        "componentstatuses",
        "configmaps",
        "endpoints",
        "events",
        "limitranges",
        "namespaces",
        "nodes",
        "persistentvolumeclaims",
        "persistentvolumes",
        "pods",
        "podtemplates",
        "replicationcontrollers",
        "resourcequotas",
        "secrets",
        "serviceaccounts",
        "services",
        "mutatingwebhookconfigurations",
        "validatingwebhookconfigurations",
        "customresourcedefinitions",
        "apiservices.apiregistration",
        "controllerrevisions",
        "daemonsets",
        "deployments",
        "replicasets",
        "statefulsets",
        "tokenreviews.authentication",
        "localsubjectaccessreviews",
        "selfsubjectaccessreviews",
        "selfsubjectrulesreviews",
        "subjectaccessreviews",
        "horizontalpodautoscalers",
        "cronjobs",
        "jobs",
        "leases",
        "events",
        "daemonsets",
        "deployments",
        "ingresses",
        "networkpolicies",
        "podsecuritypolicies",
        "replicasets",
        "ingresses",
        "networkpolicies",
        "runtimeclasses",
        "poddisruptionbudgets",
        "podsecuritypolicies",
        "clusterrolebindings",
        "clusterroles",
        "rolebindings",
        "roles",
        "priorityclasses",
        "csidrivers",
        "csinodes",
        "storageclasses",
        "volumeattachments",

        #singular
        "binding",
        "componentstatus",
        "configmap",
        "endpoint",
        "event",
        "limitrange",
        "namespace",
        "node",
        "persistentvolumeclaim",
        "persistentvolume",
        "pod",
        "podtemplate",
        "replicationcontroller",
        "resourcequota",
        "secret",
        "serviceaccount",
        "service",
        "mutatingwebhookconfiguration",
        "validatingwebhookconfiguration",
        "customresourcedefinition",
        "apiservice.apiregistration",
        "controllerrevision",
        "daemonset",
        "deployment",
        "replicaset",
        "statefulset",
        "tokenreview.authentication",
        "localsubjectaccessreview",
        "selfsubjectaccessreview",
        "selfsubjectrulesreview",
        "subjectaccessreview",
        "horizontalpodautoscaler",
        "cronjob",
        "job",
        "lease",
        "event",
        "daemonset",
        "deployment",
        "ingress",
        "networkpolicy",
        "podsecuritypolicy",
        "replicaset",
        "ingress",
        "networkpolicy",
        "runtimeclass",
        "poddisruptionbudget",
        "podsecuritypolicy",
        "clusterrolebinding",
        "clusterrole",
        "rolebinding",
        "role",
        "priorityclass",
        "csidriver",
        "csinode",
        "storageclass",
        "volumeattachment",

        # shortname
        "cs",
        "cm",
        "ep",
        "ev",
        "limits",
        "ns",
        "no",
        "pvc",
        "pv",
        "po",
        "rc",
        "quota",
        "sa",
        "svc",
        "crd",
        "crds",
        "ds",
        "deploy",
        "rs",
        "sts",
        "hpa",
        "cj",
        "csr",
        "ev",
        "ing",
        "netpol",
        "pdb",
        "psp",
        "pc",
        "sc"
    );
}
function Get-alpha-debug() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--arguments-only")
    $flags += ("--attach")
    $flags += ("--container=")
    $flags += ("--env=")
    $flags += ("--image=")
    $flags += ("--image-pull-policy=")
    $flags += ("--quiet")
    $flags += ("--stdin")
    $flags += ("-i")
    $flags += ("--target=")
    $flags += ("--tty")
    $flags += ("-t")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-apply-edit-last-applied() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--windows-line-endings")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-apply-set-last-applied() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--create-annotation")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--output=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-apply-view-last-applied() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--selector=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-auth-can-i() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all-namespaces")
    $flags += ("-A")
    $flags += ("--list")
    $flags += ("--no-headers")
    $flags += ("--quiet")
    $flags += ("-q")
    $flags += ("--subresource=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-auth-reconcile() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--remove-extra-permissions")
    $flags += ("--remove-extra-subjects")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-certificate-approve() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--filename=")
    $flags += ("--force")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-certificate-deny() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--filename=")
    $flags += ("--force")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-cluster-info-dump() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all-namespaces")
    $flags += ("-A")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--namespaces=")
    $flags += ("--output=")
    $flags += ("--output-directory=")
    $flags += ("--pod-running-timeout=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function  Get-config-current-context() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function  Get-config-delete-cluster() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    $commands += Get-Kubectl-Config("clusters");
    return $commands;
}
function  Get-config-delete-context() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function  Get-config-get-clusters() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function  Get-config-get-contexts() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--no-headers")
    $flags += ("--output=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function  Get-config-rename-context() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    $commands += Get-Kubectl-Config("contexts");
    return $commands;
}
function  Get-config-set-cluster() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--embed-certs")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function  Get-config-set-context() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--current")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function  Get-config-set-credentials() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--auth-provider=")
    $flags += ("--auth-provider-arg=")
    $flags += ("--embed-certs")
    $flags += ("--exec-api-version=")
    $flags += ("--exec-arg=")
    $flags += ("--exec-command=")
    $flags += ("--exec-env=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function  Get-config-unset() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function  Get-config-use-context() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    $commands += Get-Kubectl-Config("contexts");
    return $commands;
}
function  Get-config-view() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--flatten")
    $flags += ("--merge")
    $flags += ("--minify")
    $flags += ("--output=")
    $flags += ("--raw")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-clusterrole() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--aggregation-rule=")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--non-resource-url=")
    $flags += ("--output=")
    $flags += ("--resource=")
    $flags += ("--resource-name=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--verb=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-clusterrolebinding() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--clusterrole=")
    $flags += ("--dry-run")
    $flags += ("--group=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--serviceaccount=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-configmap() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--append-hash")
    $flags += ("--dry-run")
    $flags += ("--from-env-file=")
    $flags += ("--from-file=")
    $flags += ("--from-literal=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-cronjob() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--image=")
    $flags += ("--output=")
    $flags += ("--restart=")
    $flags += ("--save-config")
    $flags += ("--schedule=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-deployment() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--image=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-job() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--from=")
    $flags += ("--image=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-namespace() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-poddisruptionbudget() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--max-unavailable=")
    $flags += ("--min-available=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-priorityclass() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--description=")
    $flags += ("--dry-run")
    $flags += ("--global-default")
    $flags += ("--output=")
    $flags += ("--preemption-policy=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--value=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-quota() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--hard=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--scopes=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-role() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--output=")
    $flags += ("--resource=")
    $flags += ("--resource-name=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--verb=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-rolebinding() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--clusterrole=")
    $flags += ("--dry-run")
    $flags += ("--group=")
    $flags += ("--output=")
    $flags += ("--role=")
    $flags += ("--save-config")
    $flags += ("--serviceaccount=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-secret-docker-registry() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--append-hash")
    $flags += ("--docker-email=")
    $flags += ("--docker-password=")
    $flags += ("--docker-server=")
    $flags += ("--docker-username=")
    $flags += ("--dry-run")
    $flags += ("--from-file=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-secret-generic() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--append-hash")
    $flags += ("--dry-run")
    $flags += ("--from-env-file=")
    $flags += ("--from-file=")
    $flags += ("--from-literal=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--type=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-secret-tls() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--append-hash")
    $flags += ("--cert=")
    $flags += ("--dry-run")
    $flags += ("--key=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-secret() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $commands += ("docker-registry")
    $commands += ("generic")
    $commands += ("tls")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    if ($commands.Contains($cast.Commands[3])) {
        return $flags;
    }
    $commands += $flags;
    return $commands;
}
function Get-create-service-clusterip() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--clusterip=")
    $flags += ("--dry-run")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--tcp=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-service-externalname() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--external-name=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--tcp=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-service-loadbalancer() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--tcp=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-service-nodeport() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--node-port=")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--tcp=")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-service() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $commands += ("clusterip")
    $commands += ("externalname")
    $commands += ("loadbalancer")
    $commands += ("nodeport")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-create-serviceaccount() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--output=")
    $flags += ("--save-config")
    $flags += ("--template=")
    $flags += ("--validate")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-rollout-history() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $nouns = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--revision=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $nouns += ("daemonset")
    $nouns += ("deployment")
    $nouns += ("statefulset")
    if ($nouns.Contains($cast.Commands[3])) {
        $commands += $flags;
        return $commands;
    }
    $commands += $nouns;
    $commands += $flags;
    return $commands;
}
function Get-rollout-pause() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $nouns = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $nouns += ("deployment")
    if ($nouns.Contains($cast.Commands[3])) {
        $commands += $flags;
        return $commands;
    }
    $commands += $nouns;
    $commands += $flags;
    return $commands;
}
function Get-rollout-restart() {
    $commands = [System.Collections.ArrayList]@();
    $nouns = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $nouns += ("daemonset")
    $nouns += ("deployment")
    $nouns += ("statefulset")
    if ($nouns.Contains($cast.Commands[3])) {
        $commands += $flags;
        return $commands;
    }
    $commands += $nouns;
    $commands += $flags;
    return $commands;
}
function Get-rollout-resume() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $nouns = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $nouns += ("deployment")
    if ($nouns.Contains($cast.Commands[3])) {
        $commands += $flags;
        return $commands;
    }
    $commands += $nouns;
    $commands += $flags;
    return $commands;
}
function Get-rollout-status() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $nouns = [System.Collections.ArrayList]@();
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--revision=")
    $flags += ("--timeout=")
    $flags += ("--watch")
    $flags += ("-w")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $nouns += ("daemonset")
    $nouns += ("deployment")
    $nouns += ("statefulset")
    if ($nouns.Contains($cast.Commands[3])) {
        $commands += $flags;
        return $commands;
    }
    $commands += $flags;
    $commands += $nouns;
    return $commands;
}
function Get-rollout-undo() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $nouns = [System.Collections.ArrayList]@();
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--to-revision=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $nouns += ("daemonset")
    $nouns += ("deployment")
    $nouns += ("statefulset")
    if ($nouns.Contains($cast.Commands[3])) {
        $commands += $flags;
        return $commands;
    }
    $commands += $nouns;
    $commands += $flags;
    return $commands;
}
function Get-set-env() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--containers=")
    $flags += ("--dry-run")
    $flags += ("--env=")
    $flags += ("--filename=")
    $flags += ("--from=")
    $flags += ("--keys=")
    $flags += ("--kustomize=")
    $flags += ("--list")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--overwrite")
    $flags += ("--prefix=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--resolve")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-set-image() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-set-resources() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--containers=")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--limits=")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--requests=")
    $flags += ("--selector=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-set-selector() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--resource-version=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-set-serviceaccount() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--kustomize=")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--record")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-set-subject() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all")
    $flags += ("--allow-missing-template-keys")
    $flags += ("--dry-run")
    $flags += ("--filename=")
    $flags += ("--group=")
    $flags += ("--kustomize=")
    $flags += ("--local")
    $flags += ("--output=")
    $flags += ("--recursive")
    $flags += ("-R")
    $flags += ("--selector=")
    $flags += ("--serviceaccount=")
    $flags += ("--template=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += $flags;
    return $commands;
}
function Get-top-node() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--heapster-namespace=")
    $flags += ("--heapster-port=")
    $flags += ("--heapster-scheme=")
    $flags += ("--heapster-service=")
    $flags += ("--no-headers")
    $flags += ("--selector=")
    $flags += ("--sort-by=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources("nodes"));
    $commands += $flags;
    return $commands;
}
function Get-top-pod() {
    $commands = [System.Collections.ArrayList]@();
    $flags = [System.Collections.ArrayList]@();
    $flags += ("--all-namespaces")
    $flags += ("-A")
    $flags += ("--containers")
    $flags += ("--heapster-namespace=")
    $flags += ("--heapster-port=")
    $flags += ("--heapster-scheme=")
    $flags += ("--heapster-service=")
    $flags += ("--no-headers")
    $flags += ("--selector=")
    $flags += ("--sort-by=")
    $flags += ("--add-dir-header")
    $flags += ("--alsologtostderr")
    $flags += ("--as=")
    $flags += ("--as-group=")
    $flags += ("--cache-dir=")
    $flags += ("--certificate-authority=")
    $flags += ("--client-certificate=")
    $flags += ("--client-key=")
    $flags += ("--cluster=")
    $flags += ("--context=")
    $flags += ("--insecure-skip-tls-verify")
    $flags += ("--kubeconfig=")
    $flags += ("--log-backtrace-at=")
    $flags += ("--log-dir=")
    $flags += ("--log-file=")
    $flags += ("--log-file-max-size=")
    $flags += ("--log-flush-frequency=")
    $flags += ("--logtostderr")
    $flags += ("--match-server-version")
    $flags += ("--namespace=")
    $flags += ("--password=")
    $flags += ("--profile=")
    $flags += ("--profile-output=")
    $flags += ("--request-timeout=")
    $flags += ("--server=")
    $flags += ("--skip-headers")
    $flags += ("--skip-log-headers")
    $flags += ("--stderrthreshold=")
    $flags += ("--tls-server-name=")
    $flags += ("--token=")
    $flags += ("--user=")
    $flags += ("--username=")
    $flags += ("--v=")
    $flags += ("--vmodule=")
    $commands += @(Get-Kubectl-Resources("pods"));
    $commands += $flags;
    return $commands;
}
Export-ModuleMember Register-KubectlCompletion
Register-KubectlCompletion