internal ConfigurationOptions GetConfigurationOptions()
        {
            ConfigurationOptions configurationOptions = new ConfigurationOptions()
            {
                ClientName  = ClientName,
                ServiceName = ServiceName,
                KeepAlive   = KeepAlive.GetValueOrDefault(-1),
                SyncTimeout = SyncTimeout.GetValueOrDefault(1000),
                AllowAdmin  = AllowAdmin.GetValueOrDefault(),
                Password    = Password,
                TieBreaker  = TieBreaker ?? "__Booksleeve_TieBreak",
                WriteBuffer = WriteBuffer.GetValueOrDefault(4096),
                Ssl         = Ssl.GetValueOrDefault(),
                SslHost     = SslHost,
                HighPrioritySocketThreads = HighPrioritySocketThreads ?? true,
                ConfigurationChannel      = ConfigChannel,
                ResolveDns           = ResolveDns.GetValueOrDefault(),
                CommandMap           = CommandMap,
                ChannelPrefix        = ChannelPrefix,
                ConnectRetry         = ConnectRetry ?? 3,
                ConfigCheckSeconds   = ConfigCheckSeconds.GetValueOrDefault(60),
                DefaultDatabase      = DefaultDatabase,
                ReconnectRetryPolicy = ReconnectRetryPolicy,
                SslProtocols         = this.SslProtocols
            };

            foreach (var server in Servers)
            {
                configurationOptions.EndPoints.Add(server);
            }

            configurationOptions.ConnectTimeout     = ConnectTimeout ?? Math.Max(5000, configurationOptions.SyncTimeout);
            configurationOptions.ResponseTimeout    = ResponseTimeout ?? configurationOptions.SyncTimeout;
            configurationOptions.AbortOnConnectFail = AbortConnect ?? GetDefaultAbortOnConnectFailSetting(configurationOptions.EndPoints);

            if (Enum.TryParse <Proxy>(Proxy, true, out var proxy))
            {
                configurationOptions.Proxy = proxy;
            }

            return(configurationOptions);
        }