Commit f86cc0e1 authored by dasharatha.vamshi's avatar dasharatha.vamshi

agent-handoff

parent cb45c50a

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27428.2037
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntermediatorBotSample", "IntermediatorBotSample\IntermediatorBotSample.csproj", "{C5442A0C-E1AB-4237-B069-097A470AF818}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C5442A0C-E1AB-4237-B069-097A470AF818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5442A0C-E1AB-4237-B069-097A470AF818}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5442A0C-E1AB-4237-B069-097A470AF818}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5442A0C-E1AB-4237-B069-097A470AF818}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4EAC083F-2C41-4CBF-895D-24097084BDA7}
EndGlobalSection
EndGlobal
using IntermediatorBotSample.CommandHandling;
using Microsoft.Bot;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace IntermediatorBotSample.Bot
{
public class IntermediatorBot : IBot
{
private const string SampleUrl = "https://github.com/tompaana/intermediator-bot-sample";
public async Task OnTurnAsync(ITurnContext context, CancellationToken ct)
{
Command showOptionsCommand = new Command(Commands.ShowOptions);
await context.SendActivityAsync("text --> " + context.Activity.Text + "conv-id --> " + context.Activity.Conversation.Id);
HeroCard heroCard = new HeroCard()
{
Title = "Hello!",
Subtitle = "I am Intermediator Bot",
Text = $"My purpose is to serve as a sample on how to implement the human hand-off. Click/tap the button below or type \"{new Command(Commands.ShowOptions).ToString()}\" to see all possible commands. To learn more visit <a href=\"{SampleUrl}\">{SampleUrl}</a>.",
Buttons = new List<CardAction>()
{
new CardAction()
{
Title = "Show options",
Value = showOptionsCommand.ToString(),
Type = ActionTypes.ImBack
}
}
};
var singleton = Singleton.GetInstance();
singleton.Log("bot_message: " + "hero card displayed");
singleton.addToLog(context.Activity.Conversation.Id, "{" + DateTime.Now.ToLongTimeString().ToString() + "}" + " bot_message: " + "hero card displayed");
Activity replyActivity = context.Activity.CreateReply();
replyActivity.Attachments = new List<Attachment>() { heroCard.ToAttachment() };
await context.SendActivityAsync(replyActivity);
}
}
}
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Underscore.Bot.MessageRouting.DataStore;
using Underscore.Bot.MessageRouting.Models;
namespace IntermediatorBotSample.CommandHandling
{
/// <summary>
/// The commands.
/// </summary>
public enum Commands
{
Undefined = 0,
ShowOptions,
Watch, // Adds aggregation channel
Unwatch, // Removes aggregation channel
GetRequests,
CreateRequest,
AcceptRequest,
RejectRequest,
GetHistory,
Disconnect
}
/// <summary>
/// Command representation.
/// </summary>
public class Command
{
public const string CommandKeyword = "command"; // Used if the channel does not support mentions
public const string CommandParameterAll = "*";
/// <summary>
/// The actual command such as "watch" or "unwatch".
/// </summary>
public Commands BaseCommand
{
get;
protected set;
}
/// <summary>
/// The command parameters.
/// </summary>
public IList<string> Parameters
{
get;
protected set;
}
/// <summary>
/// The bot name.
/// </summary>
public string BotName
{
get;
set;
}
/// <summary>
/// Constructor.
/// </summary>
/// <param name="baseCommand">The actual command.</param>
/// <param name="parameters">The command parameters.</param>
/// <param name="botName">The bot name (optional).</param>
public Command(Commands baseCommand, string[] parameters = null, string botName = null)
{
if (baseCommand == Commands.Undefined)
{
throw new ArgumentNullException("The base command must be defined");
}
BaseCommand = baseCommand;
if (parameters != null)
{
Parameters = parameters.ToList();
}
else
{
Parameters = new List<string>();
}
BotName = botName;
}
/// <summary>
/// Creates an accept/reject connection request command.
/// </summary>
/// <param name="connectionRequest">The connection request to accept/reject.</param>
/// <param name="doAccept">If true, will create an accept command. Reject command, if false.</param>
/// <param name="botName">The bot name (optional).</param>
/// <returns>A newly created accept/reject connection request command.</returns>
public static Command CreateAcceptOrRejectConnectionRequestCommand(
ConnectionRequest connectionRequest, bool doAccept, string botName = null)
{
ChannelAccount requestorChannelAccount =
RoutingDataManager.GetChannelAccount(connectionRequest.Requestor);
return new Command(
doAccept ? Commands.AcceptRequest : Commands.RejectRequest,
new string[] { requestorChannelAccount?.Id, connectionRequest.Requestor.Conversation?.Id },
botName);
}
/// <summary>
/// Tries to parse the given JSON string into a command object.
/// </summary>
/// <param name="commandAsJsonString">The command as JSON string.</param>
/// <returns>A newly created command instance or null, if failed to parse.</returns>
public static Command FromJson(string commandAsJsonString)
{
Command command = null;
if (!string.IsNullOrWhiteSpace(commandAsJsonString))
{
try
{
command = JsonConvert.DeserializeObject<Command>(commandAsJsonString);
}
catch (Exception)
{
}
}
return command;
}
/// <summary>
/// Serializes this object into a JSON string.
/// </summary>
/// <returns>A newly created JSON string based on this object instance.</returns>
public string ToJson()
{
return JsonConvert.SerializeObject(this);
}
/// <summary>
/// Tries to parse the given string into a command object.
/// </summary>
/// <param name="commandAsString">The command as string.</param>
/// <returns>A newly created command instance based on the string content or null, if no command found.</returns>
public static Command FromString(string commandAsString)
{
if (string.IsNullOrWhiteSpace(commandAsString))
{
return null;
}
string[] commandAsStringArray = commandAsString.Split(' ');
Command command = null;
int baseCommandIndex = -1;
for (int i = 1; i < commandAsStringArray.Length; ++i)
{
Commands baseCommand = StringToCommand(commandAsStringArray[i].Trim());
if (baseCommand != Commands.Undefined)
{
command = new Command(baseCommand);
baseCommandIndex = i;
break;
}
}
if (command != null)
{
if (baseCommandIndex == 1
&& !string.IsNullOrWhiteSpace(commandAsStringArray[baseCommandIndex - 1])
&& !commandAsStringArray[baseCommandIndex - 1].Equals(CommandKeyword))
{
command.BotName = commandAsStringArray[baseCommandIndex - 1];
command.BotName = command.BotName.Replace('@', ' ').Trim();
}
for (int i = baseCommandIndex + 1; i < commandAsStringArray.Length; ++i)
{
if (!string.IsNullOrWhiteSpace(commandAsStringArray[i]))
{
command.Parameters.Add(commandAsStringArray[i].Trim());
}
}
}
return command;
}
/// <summary>
/// For convenience.
/// Tries to parse the text content in the given message activity to a command object.
/// </summary>
/// <param name="messageActivity">The message activity whose text content to parse.</param>
/// <returns>A newly created command instance or null, if no command found.</returns>
public static Command FromMessageActivity(IMessageActivity messageActivity)
{
return FromString(messageActivity.Text?.Trim());
}
/// <summary>
/// Tries to parse the string in the channel data of the given activity to a command object.
/// </summary>
/// <param name="activity">The activity whose channel data to parse.</param>
/// <returns>A newly created command instance or null, if no command found.</returns>
public static Command FromChannelData(Activity activity)
{
return FromJson(activity.ChannelData as string);
}
public string ToString(bool addCommandKeywordOrBotName = true)
{
StringBuilder stringBuilder = new StringBuilder();
if (addCommandKeywordOrBotName)
{
if (string.IsNullOrWhiteSpace(BotName))
{
stringBuilder.Append(CommandKeyword);
}
else
{
stringBuilder.Append("@");
stringBuilder.Append(BotName);
}
stringBuilder.Append(' ');
}
stringBuilder.Append(CommandToString(BaseCommand));
if (Parameters != null && Parameters.Count > 0)
{
foreach (string parameter in Parameters)
{
stringBuilder.Append(' ');
stringBuilder.Append(parameter);
}
}
return stringBuilder.ToString();
}
public override string ToString()
{
return ToString(true);
}
/// <param name="command">The command (enum).</param>
/// <returns>The command as string.</returns>
public static string CommandToString(Commands command)
{
return command.ToString();
}
/// <param name="commandAsString">The command as string.</param>
/// <returns>The command (enum).</returns>
public static Commands StringToCommand(string commandAsString)
{
if (Enum.TryParse(commandAsString, out Commands result))
{
return result;
}
foreach (Commands command in Enum.GetValues(typeof(Commands)))
{
if (command.ToString().ToLower().Equals(commandAsString.ToLower()))
{
return command;
}
}
return Commands.Undefined;
}
}
}
using IntermediatorBotSample.Resources;
using Microsoft.Bot.Schema;
using System;
using System.Collections.Generic;
using System.Globalization;
using Underscore.Bot.MessageRouting.DataStore;
using Underscore.Bot.MessageRouting.Models;
namespace IntermediatorBotSample.CommandHandling
{
/// <summary>
/// An utility class for creating command related cards.
/// </summary>
public class CommandCardFactory
{
/// <summary>
/// Creates a card with all command options.
/// </summary>
/// <param name="botName">The name of the bot (optional).</param>
/// <returns>A newly created command options card.</returns>
public static HeroCard CreateCommandOptionsCard(string botName)
{
HeroCard card = new HeroCard()
{
Title = Strings.CommandMenuTitle,
Subtitle = Strings.CommandMenuDescription,
Text = string.Format(
Strings.CommandMenuInstructions,
Command.CommandKeyword,
botName,
new Command(
Commands.AcceptRequest,
new string[] { "(user ID)", "(user conversation ID)" },
botName).ToString()),
Buttons = new List<CardAction>()
{
new CardAction()
{
Title = Command.CommandToString(Commands.Watch),
Type = ActionTypes.ImBack,
Value = new Command(Commands.Watch, null, botName).ToString()
},
new CardAction()
{
Title = Command.CommandToString(Commands.Unwatch),
Type = ActionTypes.ImBack,
Value = new Command(Commands.Unwatch, null, botName).ToString()
},
new CardAction()
{
Title = Command.CommandToString(Commands.GetRequests),
Type = ActionTypes.ImBack,
Value = new Command(Commands.GetRequests, null, botName).ToString()
},
new CardAction()
{
Title = Command.CommandToString(Commands.AcceptRequest),
Type = ActionTypes.ImBack,
Value = new Command(Commands.AcceptRequest, null, botName).ToString()
},
new CardAction()
{
Title = Command.CommandToString(Commands.RejectRequest),
Type = ActionTypes.ImBack,
Value = new Command(Commands.RejectRequest, null, botName).ToString()
},
new CardAction()
{
Title = Command.CommandToString(Commands.GetHistory),
Type = ActionTypes.ImBack,
Value = new Command(Commands.GetHistory, null, botName).ToString()
},
new CardAction()
{
Title = Command.CommandToString(Commands.Disconnect),
Type = ActionTypes.ImBack,
Value = new Command(Commands.Disconnect, null, botName).ToString()
}
}
};
return card;
}
/// <summary>
/// Creates a large connection request card.
/// </summary>
/// <param name="connectionRequest">The connection request.</param>
/// <param name="botName">The name of the bot (optional).</param>
/// <returns>A newly created request card.</returns>
public static HeroCard CreateConnectionRequestCard(
ConnectionRequest connectionRequest, string botName = null)
{
if (connectionRequest == null || connectionRequest.Requestor == null)
{
throw new ArgumentNullException("The connection request or the conversation reference of the requestor is null");
}
ChannelAccount requestorChannelAccount =
RoutingDataManager.GetChannelAccount(connectionRequest.Requestor);
if (requestorChannelAccount == null)
{
throw new ArgumentNullException("The channel account of the requestor is null");
}
string requestorChannelAccountName = string.IsNullOrEmpty(requestorChannelAccount.Name)
? StringConstants.NoUserNamePlaceholder : requestorChannelAccount.Name;
string requestorChannelId =
CultureInfo.CurrentCulture.TextInfo.ToTitleCase(connectionRequest.Requestor.ChannelId);
Command acceptCommand =
Command.CreateAcceptOrRejectConnectionRequestCommand(connectionRequest, true, botName);
Command rejectCommand =
Command.CreateAcceptOrRejectConnectionRequestCommand(connectionRequest, false, botName);
HeroCard card = new HeroCard()
{
Title = Strings.ConnectionRequestTitle,
Subtitle = string.Format(Strings.RequestorDetailsTitle, requestorChannelAccountName, requestorChannelId),
Text = string.Format(Strings.AcceptRejectConnectionHint, acceptCommand.ToString(), rejectCommand.ToString()),
Buttons = new List<CardAction>()
{
new CardAction()
{
Title = Strings.AcceptButtonTitle,
Type = ActionTypes.ImBack,
Value = acceptCommand.ToString()
},
new CardAction()
{
Title = Strings.RejectButtonTitle,
Type = ActionTypes.ImBack,
Value = rejectCommand.ToString()
}
}
};
return card;
}
/// <summary>
/// Creates multiple large connection request cards.
/// </summary>
/// <param name="connectionRequests">The connection requests.</param>
/// <param name="botName">The name of the bot (optional).</param>
/// <returns>A list of request cards as attachments.</returns>
public static IList<Attachment> CreateMultipleConnectionRequestCards(
IList<ConnectionRequest> connectionRequests, string botName = null)
{
IList<Attachment> attachments = new List<Attachment>();
foreach (ConnectionRequest connectionRequest in connectionRequests)
{
attachments.Add(CreateConnectionRequestCard(connectionRequest, botName).ToAttachment());
}
return attachments;
}
/// <summary>
/// Creates a compact card for accepting/rejecting multiple requests.
/// </summary>
/// <param name="connectionRequests">The connection requests.</param>
/// <param name="doAccept">If true, will create an accept card. If false, will create a reject card.</param>
/// <param name="botName">The name of the bot (optional).</param>
/// <returns>The newly created card.</returns>
public static HeroCard CreateMultiConnectionRequestCard(
IList<ConnectionRequest> connectionRequests, bool doAccept, string botName = null)
{
HeroCard card = new HeroCard()
{
Title = (doAccept
? Strings.AcceptConnectionRequestsCardTitle
: Strings.RejectConnectionRequestCardTitle),
Subtitle = (doAccept
? Strings.AcceptConnectionRequestsCardInstructions
: Strings.RejectConnectionRequestsCardInstructions),
};
card.Buttons = new List<CardAction>();
if (!doAccept && connectionRequests.Count > 1)
{
card.Buttons.Add(new CardAction()
{
Title = Strings.RejectAll,
Type = ActionTypes.ImBack,
Value = new Command(Commands.RejectRequest, new string[] { Command.CommandParameterAll }, botName).ToString()
});
}
foreach (ConnectionRequest connectionRequest in connectionRequests)
{
ChannelAccount requestorChannelAccount =
RoutingDataManager.GetChannelAccount(connectionRequest.Requestor, out bool isBot);
if (requestorChannelAccount == null)
{
throw new ArgumentNullException("The channel account of the requestor is null");
}
string requestorChannelAccountName = string.IsNullOrEmpty(requestorChannelAccount.Name)
? StringConstants.NoUserNamePlaceholder : requestorChannelAccount.Name;
string requestorChannelId =
CultureInfo.CurrentCulture.TextInfo.ToTitleCase(connectionRequest.Requestor.ChannelId);
string requestorChannelAccountId = requestorChannelAccount.Id;
Command command =
Command.CreateAcceptOrRejectConnectionRequestCommand(connectionRequest, doAccept, botName);
card.Buttons.Add(new CardAction()
{
Title = string.Format(
Strings.RequestorDetailsItem,
requestorChannelAccountName,
requestorChannelId,
requestorChannelAccountId),
Type = ActionTypes.ImBack,
Value = command.ToString()
});
}
return card;
}
/// <summary>
/// Adds the given card into the given activity as an attachment.
/// </summary>
/// <param name="activity">The activity to add the card into.</param>
/// <param name="card">The card to add.</param>
/// <returns>The given activity with the card added.</returns>
public static Activity AddCardToActivity(Activity activity, HeroCard card)
{
activity.Attachments = new List<Attachment>() { card.ToAttachment() };
return activity;
}
}
}
using IntermediatorBotSample.MessageRouting;
using IntermediatorBotSample.Resources;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Connector;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Underscore.Bot.MessageRouting;
using Underscore.Bot.MessageRouting.DataStore;
using Underscore.Bot.MessageRouting.Models;
using Underscore.Bot.MessageRouting.Results;
namespace IntermediatorBotSample.CommandHandling
{
/// <summary>
/// Handler for bot commands related to message routing.
/// </summary>
public class CommandHandler
{
private MessageRouter _messageRouter;
private MessageRouterResultHandler _messageRouterResultHandler;
private ConnectionRequestHandler _connectionRequestHandler;
private IList<string> _permittedAggregationChannels;
/// <summary>
/// Constructor.
/// </summary>
/// <param name="messageRouter">The message router.</param>
/// <param name="messageRouterResultHandler">A MessageRouterResultHandler instance for
/// handling possible routing actions such as accepting connection requests.</param>
/// <param name="connectionRequestHandler">The connection request handler.</param>
/// <param name="permittedAggregationChannels">Permitted aggregation channels.
/// Null list means all channels are allowed.</param>
public CommandHandler(
MessageRouter messageRouter,
MessageRouterResultHandler messageRouterResultHandler,
ConnectionRequestHandler connectionRequestHandler,
IList<string> permittedAggregationChannels = null)
{
_messageRouter = messageRouter;
_messageRouterResultHandler = messageRouterResultHandler;
_connectionRequestHandler = connectionRequestHandler;
_permittedAggregationChannels = permittedAggregationChannels;
}
/// <summary>
/// Checks the given activity for a possible command.
/// </summary>
/// <param name="activity">The context containing the activity, which in turn may contain a possible command.</param>
/// <returns>True, if a command was detected and handled. False otherwise.</returns>
public async virtual Task<bool> HandleCommandAsync(ITurnContext context)
{
Activity activity = context.Activity;
Command command = Command.FromMessageActivity(activity);
if (command == null)
{
// Check for back channel command
command = Command.FromChannelData(activity);
}
if (command == null)
{
return false;
}
bool wasHandled = false;
Activity replyActivity = null;
ConversationReference sender = MessageRouter.CreateSenderConversationReference(activity);
switch (command.BaseCommand)
{
case Commands.ShowOptions:
// Present all command options in a card
replyActivity = CommandCardFactory.AddCardToActivity(
activity.CreateReply(), CommandCardFactory.CreateCommandOptionsCard(activity.Recipient?.Name));
wasHandled = true;
break;
case Commands.Watch:
// Add the sender's channel/conversation into the list of aggregation channels
bool isPermittedAggregationChannel = false;
if (_permittedAggregationChannels != null && _permittedAggregationChannels.Count > 0)
{
foreach (string permittedAggregationChannel in _permittedAggregationChannels)
{
if (!string.IsNullOrWhiteSpace(activity.ChannelId)
&& activity.ChannelId.ToLower().Equals(permittedAggregationChannel.ToLower()))
{
isPermittedAggregationChannel = true;
break;
}
}
}
else
{
isPermittedAggregationChannel = true;
}
if (isPermittedAggregationChannel)
{
ConversationReference aggregationChannelToAdd = new ConversationReference(
null, null, null,
activity.Conversation, activity.ChannelId, activity.ServiceUrl);
ModifyRoutingDataResult modifyRoutingDataResult =
_messageRouter.RoutingDataManager.AddAggregationChannel(aggregationChannelToAdd);
if (modifyRoutingDataResult.Type == ModifyRoutingDataResultType.Added)
{
replyActivity = activity.CreateReply(Strings.AggregationChannelSet);
}
else if (modifyRoutingDataResult.Type == ModifyRoutingDataResultType.AlreadyExists)
{
replyActivity = activity.CreateReply(Strings.AggregationChannelAlreadySet);
}
else if (modifyRoutingDataResult.Type == ModifyRoutingDataResultType.Error)
{
replyActivity = activity.CreateReply(
string.Format(Strings.FailedToSetAggregationChannel, modifyRoutingDataResult.ErrorMessage));
}
}
else
{
replyActivity = activity.CreateReply(
string.Format(Strings.NotPermittedAggregationChannel, activity.ChannelId));
}
wasHandled = true;
break;
case Commands.Unwatch:
// Remove the sender's channel/conversation from the list of aggregation channels
if (_messageRouter.RoutingDataManager.IsAssociatedWithAggregation(sender))
{
ConversationReference aggregationChannelToRemove = new ConversationReference(
null, null, null,
activity.Conversation, activity.ChannelId, activity.ServiceUrl);
if (_messageRouter.RoutingDataManager.RemoveAggregationChannel(aggregationChannelToRemove))
{
replyActivity = activity.CreateReply(Strings.AggregationChannelRemoved);
}
else
{
replyActivity = activity.CreateReply(Strings.FailedToRemoveAggregationChannel);
}
wasHandled = true;
}
break;
case Commands.GetRequests:
IList<ConnectionRequest> connectionRequests =
_messageRouter.RoutingDataManager.GetConnectionRequests();
replyActivity = activity.CreateReply();
if (connectionRequests.Count == 0)
{
replyActivity.Text = Strings.NoPendingRequests;
}
else
{
replyActivity.Attachments = CommandCardFactory.CreateMultipleConnectionRequestCards(
connectionRequests, activity.Recipient?.Name);
}
replyActivity.ChannelData = JsonConvert.SerializeObject(connectionRequests);
wasHandled = true;
break;
case Commands.AcceptRequest:
case Commands.RejectRequest:
// Accept/reject connection request
bool doAccept = (command.BaseCommand == Commands.AcceptRequest);
if (_messageRouter.RoutingDataManager.IsAssociatedWithAggregation(sender))
{
// The sender is associated with the aggregation and has the right to accept/reject
if (command.Parameters.Count == 0)
{
replyActivity = activity.CreateReply();
connectionRequests =
_messageRouter.RoutingDataManager.GetConnectionRequests();
if (connectionRequests.Count == 0)
{
replyActivity.Text = Strings.NoPendingRequests;
}
else
{
replyActivity = CommandCardFactory.AddCardToActivity(
replyActivity, CommandCardFactory.CreateMultiConnectionRequestCard(
connectionRequests, doAccept, activity.Recipient?.Name));
}
}
else if (!doAccept
&& command.Parameters[0].Equals(Command.CommandParameterAll))
{
// Reject all pending connection requests
if (!await _connectionRequestHandler.RejectAllPendingRequestsAsync(
_messageRouter, _messageRouterResultHandler))
{
replyActivity = activity.CreateReply();
replyActivity.Text = Strings.FailedToRejectPendingRequests;
}
}
else if (command.Parameters.Count > 1)
{
// Try to accept/reject the specified connection request
ChannelAccount requestorChannelAccount =
new ChannelAccount(command.Parameters[0]);
ConversationAccount requestorConversationAccount =
new ConversationAccount(null, null, command.Parameters[1]);
AbstractMessageRouterResult messageRouterResult =
await _connectionRequestHandler.AcceptOrRejectRequestAsync(
_messageRouter, _messageRouterResultHandler, sender, doAccept,
requestorChannelAccount, requestorConversationAccount);
await _messageRouterResultHandler.HandleResultAsync(messageRouterResult);
}
else
{
replyActivity = activity.CreateReply(Strings.InvalidOrMissingCommandParameter);
}
}
#if DEBUG
// We shouldn't respond to command attempts by regular users, but I guess
// it's okay when debugging
else
{
replyActivity = activity.CreateReply(Strings.ConnectionRequestResponseNotAllowed);
}
#endif
wasHandled = true;
break;
case Commands.Disconnect:
// End the 1:1 conversation(s)
IList<ConnectionResult> disconnectResults = _messageRouter.Disconnect(sender);
if (disconnectResults != null && disconnectResults.Count > 0)
{
foreach (ConnectionResult disconnectResult in disconnectResults)
{
await _messageRouterResultHandler.HandleResultAsync(disconnectResult);
}
wasHandled = true;
}
break;
default:
replyActivity = activity.CreateReply(string.Format(Strings.CommandNotRecognized, command.BaseCommand));
break;
}
if (replyActivity != null)
{
await context.SendActivityAsync(replyActivity);
}
return wasHandled;
}
/// <summary>
/// Checks the given activity and determines whether the message was addressed directly to
/// the bot or not.
///
/// Note: Only mentions are inspected at the moment.
/// </summary>
/// <param name="messageActivity">The message activity.</param>
/// <param name="strict">Use false for channels that do not properly support mentions.</param>
/// <returns>True, if the message was address directly to the bot. False otherwise.</returns>
public bool WasBotAddressedDirectly(IMessageActivity messageActivity, bool strict = true)
{
bool botWasMentioned = false;
if (strict)
{
Mention[] mentions = messageActivity.GetMentions();
foreach (Mention mention in mentions)
{
foreach (ConversationReference bot in _messageRouter.RoutingDataManager.GetBotInstances())
{
if (mention.Mentioned.Id.Equals(RoutingDataManager.GetChannelAccount(bot).Id))
{
botWasMentioned = true;
break;
}
}
}
}
else
{
// Here we assume the message starts with the bot name, for instance:
//
// * "@<BOT NAME>..."
// * "<BOT NAME>: ..."
string botName = messageActivity.Recipient?.Name;
string message = messageActivity.Text?.Trim();
if (!string.IsNullOrEmpty(botName) && !string.IsNullOrEmpty(message) && message.Length > botName.Length)
{
try
{
message = message.Remove(botName.Length + 1, message.Length - botName.Length - 1);
botWasMentioned = message.Contains(botName);
}
catch (ArgumentOutOfRangeException e)
{
System.Diagnostics.Debug.WriteLine($"Failed to check if bot was mentioned: {e.Message}");
}
}
}
return botWasMentioned;
}
}
}
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace IntermediatorBotSample.ConversationHistory
{
public class MessageLog
{
/// <summary>
/// The messages in the log.
/// </summary>
public IList<Activity> Activities
{
get;
private set;
}
/// <summary>
/// The user associated with this message log.
/// </summary>
public ConversationReference User
{
get;
private set;
}
/// <summary>
/// Constructor.
/// </summary>
/// <param name="user">The user associated with this message log.</param>
public MessageLog(ConversationReference user)
{
User = user;
Activities = new List<Activity>();
}
/// <summary>
/// Adds a message (an activity) to the log.
/// </summary>
/// <param name="activity">The activity to add.</param>
public void AddMessage(Activity activity)
{
Activities.Add(activity);
}
public string ToJson()
{
return JsonConvert.SerializeObject(this);
}
public static MessageLog FromJson(string messageLogAsJsonString)
{
MessageLog messageLog = null;
try
{
messageLog = JsonConvert.DeserializeObject<MessageLog>(messageLogAsJsonString);
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine($"Failed to deserialize message log: {e.Message}");
}
return messageLog;
}
}
}
using Microsoft.WindowsAzure.Storage.Table;
using System;
namespace IntermediatorBotSample.ConversationHistory
{
public class MessageLogEntity : TableEntity
{
public string Body
{
get;
set;
}
}
}
using Microsoft.Bot.Schema;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Table;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Threading.Tasks;
using Underscore.Bot.MessageRouting.DataStore;
using Underscore.Bot.MessageRouting.DataStore.Azure;
namespace IntermediatorBotSample.ConversationHistory
{
public class MessageLogs
{
private const string MessageLogsTableName = "testforagent47";
private const string PartitionKey = "IntermediatorBot";
private CloudTable _messageLogsTable;
private readonly IList<MessageLog> _inMemoryMessageLogs;
/// <summary>
/// Constructor.
/// </summary>
/// <param name="connectionString">The connection string for Azure Table Storage.</param>
public MessageLogs(string connectionString)
{
if (string.IsNullOrEmpty(connectionString))
{
System.Diagnostics.Debug.WriteLine("WARNING!!! No connection string - storing message logs in memory");
_inMemoryMessageLogs = new List<MessageLog>();
}
else
{
System.Diagnostics.Debug.WriteLine("Using Azure Table Storage for storing message logs");
_messageLogsTable = AzureStorageHelper.GetTable(connectionString, MessageLogsTableName);
MakeSureConversationHistoryTableExistsAsync().Wait();
}
}
/// <returns>All the message logs.</returns>
public IList<MessageLog> GetMessageLogs()
{
if (_messageLogsTable != null)
{
var entities = GetAllEntitiesFromTable(_messageLogsTable).Result;
return GetAllMessageLogsFromEntities(entities);
}
return _inMemoryMessageLogs;
}
/// <summary>
/// Finds the message log associated with the given user.
/// </summary>
/// <param name="user">The user whose message log to find.</param>
/// <returns>The message log of the user or null, if not found.</returns>
public MessageLog GetMessageLog(ConversationReference user)
{
var messageLogs = GetMessageLogs();
foreach (MessageLog messageLog in messageLogs)
{
if (RoutingDataManager.Match(user, messageLog.User))
{
return messageLog;
}
}
return null;
}
/// <summary>
/// Adds a message (an activity) to the log associated with the given user.
/// </summary>
/// <param name="activity">The activity to add.</param>
/// <param name="user">The user associated with the message.</param>
public void AddMessageLog(Microsoft.Bot.Schema.Activity activity, ConversationReference user)
{
if (_messageLogsTable != null)
{
// Add to AzureTable
}
else
{
// Add to InMemory storage
}
}
/// <summary>
///
/// </summary>
/// <param name="user">The user whose message log to delete.</param>
public void DeleteMessageLog(ConversationReference user)
{
// TODO
}
/// <summary>
/// Makes sure the cloud table for storing message logs exists.
/// A table is created, if one doesn't exist.
/// </summary>
private async Task MakeSureConversationHistoryTableExistsAsync()
{
try
{
await _messageLogsTable.CreateIfNotExistsAsync();
System.Diagnostics.Debug.WriteLine($"Table '{_messageLogsTable.Name}' created or did already exist");
}
catch (StorageException e)
{
System.Diagnostics.Debug.WriteLine($"Failed to create table '{_messageLogsTable.Name}' (perhaps it already exists): {e.Message}");
}
}
private async Task<IList<MessageLogEntity>> GetAllEntitiesFromTable(CloudTable table)
{
var query = new TableQuery<MessageLogEntity>()
.Where(TableQuery.GenerateFilterCondition(
"PartitionKey", QueryComparisons.Equal, PartitionKey));
return await table.ExecuteTableQueryAsync(query);
}
private IList<MessageLog> GetAllMessageLogsFromEntities(IList<MessageLogEntity> entities)
{
IList<MessageLog> messageLogs = new List<MessageLog>();
foreach (var entity in entities)
{
var messageLog = JsonConvert.DeserializeObject<MessageLog>(entity.Body);
messageLogs.Add(messageLog);
}
return messageLogs;
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Azure.Storage.Blobs" Version="12.6.0" />
<PackageReference Include="BotMessageRouting" Version="2.0.2-alpha" />
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.Bot.Builder" Version="4.2.2" />
<PackageReference Include="Microsoft.Bot.Builder.Integration.AspNet.Core" Version="4.2.2" />
<PackageReference Include="Microsoft.Bot.Configuration" Version="4.2.2" />
<PackageReference Include="Microsoft.Bot.Connector" Version="4.2.2" />
<PackageReference Include="Microsoft.Bot.Schema" Version="4.2.2" />
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" />
<PackageReference Include="RestSharp" Version="106.11.4" />
</ItemGroup>
<ItemGroup>
<Compile Update="Resources\Strings.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Strings.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Folder Include="Pages\" />
</ItemGroup>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<NameOfLastUsedPublishProfile>agent-hand-off-test - Web Deploy</NameOfLastUsedPublishProfile>
</PropertyGroup>
</Project>
\ No newline at end of file
using Microsoft.Bot.Schema;
using System;
using System.Runtime.CompilerServices;
using Underscore.Bot.MessageRouting;
using Underscore.Bot.MessageRouting.Logging;
namespace IntermediatorBotSample.Logging
{
/// <summary>
/// Logger that outputs all log messages to all aggregation channel conversations.
/// </summary>
public class AggregationChannelLogger : ILogger
{
private MessageRouter _messageRouter;
public AggregationChannelLogger(MessageRouter messageRouter)
{
_messageRouter = messageRouter;
}
public async void Log(string message, [CallerMemberName] string methodName = "")
{
if (!string.IsNullOrWhiteSpace(methodName))
{
message = $"{DateTime.Now}> {methodName}: {message}";
}
bool wasSent = false;
foreach (ConversationReference aggregationChannel in
_messageRouter.RoutingDataManager.GetAggregationChannels())
{
ResourceResponse resourceResponse =
await _messageRouter.SendMessageAsync(aggregationChannel, message);
if (resourceResponse != null)
{
wasSent = true;
}
}
if (!wasSent)
{
System.Diagnostics.Debug.WriteLine(message);
}
}
}
}
using IntermediatorBotSample.Resources;
using Microsoft.Bot.Schema;
using System.Collections.Generic;
using System.Threading.Tasks;
using Underscore.Bot.MessageRouting;
using Underscore.Bot.MessageRouting.DataStore;
using Underscore.Bot.MessageRouting.Models;
using Underscore.Bot.MessageRouting.Results;
namespace IntermediatorBotSample.MessageRouting
{
/// <summary>
/// Contains utility methods for accepting and rejecting connection requests.
/// </summary>
public class ConnectionRequestHandler
{
private IList<string> _noDirectConversationsWithChannels;
/// <summary>
/// Constructor.
/// </summary>
/// <param name="noDirectConversationsWithChannels">Does not try to create direct
/// conversations when the agent is on one of the channels on this list.</param>
public ConnectionRequestHandler(IList<string> noDirectConversationsWithChannels)
{
_noDirectConversationsWithChannels = noDirectConversationsWithChannels;
}
/// <summary>
/// Tries to accept/reject a pending connection request.
/// </summary>
/// <param name="messageRouter">The message router.</param>
/// <param name="messageRouterResultHandler">The message router result handler.</param>
/// <param name="sender">The sender party (accepter/rejecter).</param>
/// <param name="doAccept">If true, will try to accept the request. If false, will reject.</param>
/// <param name="requestorChannelAccountId">The channel account ID of the user/bot whose request to accept/reject.</param>
/// <param name="requestorConversationAccountId">The conversation account ID of the user/bot whose request to accept/reject.</param>
/// <returns>The result.</returns>
public async Task<AbstractMessageRouterResult> AcceptOrRejectRequestAsync(
MessageRouter messageRouter, MessageRouterResultHandler messageRouterResultHandler,
ConversationReference sender, bool doAccept,
ChannelAccount requestorChannelAccountId, ConversationAccount requestorConversationAccountId)
{
AbstractMessageRouterResult messageRouterResult = new ConnectionRequestResult()
{
Type = ConnectionRequestResultType.Error
};
ConversationReference requestor =
new ConversationReference(
null, requestorChannelAccountId, null, requestorConversationAccountId);
ConnectionRequest connectionRequest =
messageRouter.RoutingDataManager.FindConnectionRequest(requestor);
if (connectionRequest == null)
{
// Try bot
requestor.Bot = requestor.User;
requestor.User = null;
connectionRequest =
messageRouter.RoutingDataManager.FindConnectionRequest(requestor);
}
if (connectionRequest != null)
{
Connection connection = null;
if (sender != null)
{
connection = messageRouter.RoutingDataManager.FindConnection(sender);
}
ConversationReference senderInConnection = null;
ConversationReference counterpart = null;
if (connection != null && connection.ConversationReference1 != null)
{
if (RoutingDataManager.Match(sender, connection.ConversationReference1))
{
senderInConnection = connection.ConversationReference1;
counterpart = connection.ConversationReference2;
}
else
{
senderInConnection = connection.ConversationReference2;
counterpart = connection.ConversationReference1;
}
}
if (doAccept)
{
if (senderInConnection != null)
{
// The sender (accepter/rejecter) is ALREADY connected to another party
if (counterpart != null)
{
messageRouterResult.ErrorMessage = string.Format(
Strings.AlreadyConnectedWithUser,
RoutingDataManager.GetChannelAccount(counterpart)?.Name);
}
else
{
messageRouterResult.ErrorMessage = Strings.ErrorOccured;
}
}
else
{
bool createNewDirectConversation =
(_noDirectConversationsWithChannels == null
|| !(_noDirectConversationsWithChannels.Contains(sender.ChannelId.ToLower())));
// Try to accept
messageRouterResult = await messageRouter.ConnectAsync(
sender,
connectionRequest.Requestor,
createNewDirectConversation);
}
}
else
{
// Note: Rejecting is OK even if the sender is alreay connected
messageRouterResult = messageRouter.RejectConnectionRequest(connectionRequest.Requestor, sender);
}
}
else
{
messageRouterResult.ErrorMessage = Strings.FailedToFindPendingRequest;
}
return messageRouterResult;
}
/// <summary>
/// Tries to reject all pending requests.
/// </summary>
/// <param name="messageRouter">The message router.</param>
/// <param name="messageRouterResultHandler">The message router result handler.</param>
/// <returns>True, if successful. False otherwise.</returns>
public async Task<bool> RejectAllPendingRequestsAsync(
MessageRouter messageRouter, MessageRouterResultHandler messageRouterResultHandler)
{
bool wasSuccessful = false;
IList<ConnectionRequest> connectionRequests = messageRouter.RoutingDataManager.GetConnectionRequests();
if (connectionRequests.Count > 0)
{
IList<ConnectionRequestResult> connectionRequestResults =
new List<ConnectionRequestResult>();
foreach (ConnectionRequest connectionRequest in connectionRequests)
{
connectionRequestResults.Add(
messageRouter.RejectConnectionRequest(connectionRequest.Requestor));
}
foreach (ConnectionRequestResult connectionRequestResult in connectionRequestResults)
{
await messageRouterResultHandler.HandleResultAsync(connectionRequestResult);
}
wasSuccessful = true;
}
return wasSuccessful;
}
}
}
using IntermediatorBotSample.CommandHandling;
using IntermediatorBotSample.Resources;
using Microsoft.Bot.Schema;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Underscore.Bot.MessageRouting;
using Underscore.Bot.MessageRouting.DataStore;
using Underscore.Bot.MessageRouting.Models;
using Underscore.Bot.MessageRouting.Results;
namespace IntermediatorBotSample.MessageRouting
{
/// <summary>
/// Handles the message router results.
/// </summary>
public class MessageRouterResultHandler
{
private MessageRouter _messageRouter;
public MessageRouterResultHandler(MessageRouter messageRouter)
{
_messageRouter = messageRouter
?? throw new ArgumentNullException(
$"({nameof(messageRouter)}) cannot be null");
}
/// <summary>
/// Handles the given message router result.
/// </summary>
/// <param name="messageRouterResult">The result to handle.</param>
/// <returns>True, if the result was handled. False, if no action was taken.</returns>
public virtual async Task<bool> HandleResultAsync(AbstractMessageRouterResult messageRouterResult)
{
if (messageRouterResult != null)
{
if (messageRouterResult is ConnectionRequestResult)
{
return await HandleConnectionRequestResultAsync(messageRouterResult as ConnectionRequestResult);
}
if (messageRouterResult is ConnectionResult)
{
return await HandleConnectionResultAsync(messageRouterResult as ConnectionResult);
}
if (messageRouterResult is MessageRoutingResult)
{
return await HandleMessageRoutingResultAsync(messageRouterResult as MessageRoutingResult);
}
}
return false;
}
/// <summary>
/// Handles the given connection request result.
/// </summary>
/// <param name="connectionRequestResult">The result to handle.</param>
/// <returns>True, if the result was handled. False, if no action was taken.</returns>
protected virtual async Task<bool> HandleConnectionRequestResultAsync(
ConnectionRequestResult connectionRequestResult)
{
ConnectionRequest connectionRequest = connectionRequestResult?.ConnectionRequest;
if (connectionRequest == null || connectionRequest.Requestor == null)
{
System.Diagnostics.Debug.WriteLine("No client to inform about the connection request result");
return false;
}
switch (connectionRequestResult.Type)
{
case ConnectionRequestResultType.Created:
foreach (ConversationReference aggregationChannel
in _messageRouter.RoutingDataManager.GetAggregationChannels())
{
ConversationReference botConversationReference =
_messageRouter.RoutingDataManager.FindConversationReference(
aggregationChannel.ChannelId, aggregationChannel.Conversation.Id, null, true);
if (botConversationReference != null)
{
IMessageActivity messageActivity = Activity.CreateMessageActivity();
messageActivity.Conversation = aggregationChannel.Conversation;
messageActivity.Recipient = RoutingDataManager.GetChannelAccount(aggregationChannel);
messageActivity.Attachments = new List<Attachment>
{
CommandCardFactory.CreateConnectionRequestCard(
connectionRequest,
RoutingDataManager.GetChannelAccount(
botConversationReference)?.Name).ToAttachment()
};
await _messageRouter.SendMessageAsync(aggregationChannel, messageActivity);
}
}
await _messageRouter.SendMessageAsync(
connectionRequest.Requestor, Strings.NotifyClientWaitForRequestHandling);
return true;
case ConnectionRequestResultType.AlreadyExists:
await _messageRouter.SendMessageAsync(
connectionRequest.Requestor, Strings.NotifyClientDuplicateRequest);
return true;
case ConnectionRequestResultType.Rejected:
if (connectionRequestResult.Rejecter != null)
{
await _messageRouter.SendMessageAsync(
connectionRequestResult.Rejecter,
string.Format(Strings.NotifyOwnerRequestRejected, GetNameOrId(connectionRequest.Requestor)));
}
await _messageRouter.SendMessageAsync(
connectionRequest.Requestor, Strings.NotifyClientRequestRejected);
return true;
case ConnectionRequestResultType.NotSetup:
await _messageRouter.SendMessageAsync(
connectionRequest.Requestor, Strings.NoAgentsAvailable);
return true;
case ConnectionRequestResultType.Error:
if (connectionRequestResult.Rejecter != null)
{
await _messageRouter.SendMessageAsync(
connectionRequestResult.Rejecter,
string.Format(Strings.ConnectionRequestResultErrorWithResult, connectionRequestResult.ErrorMessage));
}
return true;
default:
break;
}
return false;
}
/// <summary>
/// Handles the given connection result.
/// </summary>
/// <param name="connectionResult">The result to handle.</param>
/// <returns>True, if the result was handled. False, if no action was taken.</returns>
protected virtual async Task<bool> HandleConnectionResultAsync(ConnectionResult connectionResult)
{
Connection connection = connectionResult.Connection;
switch (connectionResult.Type)
{
case ConnectionResultType.Connected:
if (connection != null)
{
if (connection.ConversationReference1 != null)
{
await _messageRouter.SendMessageAsync(
connection.ConversationReference1,
string.Format(Strings.NotifyOwnerConnected,
GetNameOrId(connection.ConversationReference2)));
var client = new RestSharp.RestClient("http://093a5be57653.ngrok.io/getLogs");
client.Timeout = -1;
var request = new RestSharp.RestRequest(RestSharp.Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\r\n \"conid\" : \"100\"\r\n}", RestSharp.ParameterType.RequestBody);
RestSharp.IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
await _messageRouter.SendMessageAsync(connection.ConversationReference1, response.Content.ToString());
}
if (connection.ConversationReference2 != null)
{
await _messageRouter.SendMessageAsync(
connection.ConversationReference2,
string.Format(Strings.NotifyOwnerConnected,
GetNameOrId(connection.ConversationReference1)));
}
}
return true;
case ConnectionResultType.Disconnected:
if (connection != null)
{
if (connection.ConversationReference1 != null)
{
await _messageRouter.SendMessageAsync(
connection.ConversationReference1,
string.Format(Strings.NotifyOwnerDisconnected,
GetNameOrId(connection.ConversationReference2)));
}
if (connection.ConversationReference2 != null)
{
await _messageRouter.SendMessageAsync(
connection.ConversationReference2,
string.Format(Strings.NotifyClientDisconnected,
GetNameOrId(connection.ConversationReference1)));
}
}
return true;
case ConnectionResultType.Error:
if (connection.ConversationReference1 != null)
{
await _messageRouter.SendMessageAsync(
connection.ConversationReference1,
string.Format(Strings.ConnectionResultErrorWithResult, connectionResult.ErrorMessage));
}
return true;
default:
break;
}
return false;
}
/// <summary>
/// Handles the given message routing result.
/// </summary>
/// <param name="messageRoutingResult">The result to handle.</param>
/// <returns>True, if the result was handled. False, if no action was taken.</returns>
protected virtual async Task<bool> HandleMessageRoutingResultAsync(
MessageRoutingResult messageRoutingResult)
{
ConversationReference agent = messageRoutingResult?.Connection?.ConversationReference1;
switch (messageRoutingResult.Type)
{
case MessageRoutingResultType.NoActionTaken:
case MessageRoutingResultType.MessageRouted:
// No need to do anything
break;
case MessageRoutingResultType.FailedToRouteMessage:
case MessageRoutingResultType.Error:
if (agent != null)
{
string errorMessage = string.IsNullOrWhiteSpace(messageRoutingResult.ErrorMessage)
? Strings.FailedToForwardMessage
: messageRoutingResult.ErrorMessage;
await _messageRouter.SendMessageAsync(agent, errorMessage);
}
return true;
default:
break;
}
return false;
}
/// <summary>
/// Tries to resolve the name of the given user/bot instance.
/// Will fallback to ID, if no name specified.
/// </summary>
/// <param name="conversationReference">The conversation reference, whose details to resolve.</param>
/// <returns>The name or the ID of the given user/bot instance.</returns>
protected virtual string GetNameOrId(ConversationReference conversationReference)
{
if (conversationReference != null)
{
ChannelAccount channelAccount =
RoutingDataManager.GetChannelAccount(conversationReference);
if (channelAccount != null)
{
if (!string.IsNullOrWhiteSpace(channelAccount.Name))
{
return channelAccount.Name;
}
if (!string.IsNullOrWhiteSpace(channelAccount.Id))
{
return channelAccount.Id;
}
}
}
return StringConstants.NoNameOrId;
}
}
}
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Microsoft.Bot.Builder.Core.Extensions
{
/// <summary>
/// This piece of middleware can be added to allow you to handle exceptions when they are thrown
/// within your bot's code or middleware further down the pipeline. Using this handler you might
/// send an appropriate message to the user to let them know that something has gone wrong.
/// You can specify the type of exception the middleware should catch and this middleware can be added
/// multiple times to allow you to handle different exception types in different ways.
/// </summary>
/// <typeparam name="T">
/// The type of the exception that you want to catch. This can be 'Exception' to
/// catch all or a specific type of exception
/// </typeparam>
public class CatchExceptionMiddleware<T> : IMiddleware where T : Exception
{
private readonly Func<ITurnContext, T, Task> _handler;
public CatchExceptionMiddleware(Func<ITurnContext, T, Task> callOnException)
{
_handler = callOnException;
}
public async Task OnTurnAsync(ITurnContext context, NextDelegate next, CancellationToken cancellationToken = default(CancellationToken))
{
try
{
// Continue to route the activity through the pipeline
// any errors further down the pipeline will be caught by
// this try / catch
await next(cancellationToken).ConfigureAwait(false);
}
catch (T ex)
{
// If an error is thrown and the exception is of type T then invoke the handler
await _handler.Invoke(context, ex).ConfigureAwait(false);
}
}
}
}
using IntermediatorBotSample.CommandHandling;
using IntermediatorBotSample.ConversationHistory;
using IntermediatorBotSample.MessageRouting;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Connector.Authentication;
using Microsoft.Bot.Schema;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Underscore.Bot.MessageRouting;
using Underscore.Bot.MessageRouting.DataStore;
using Underscore.Bot.MessageRouting.DataStore.Azure;
using Underscore.Bot.MessageRouting.DataStore.Local;
using Underscore.Bot.MessageRouting.Results;
namespace IntermediatorBotSample.Middleware
{
public class HandoffMiddleware : IMiddleware
{
private const string KeyAzureTableStorageConnectionString = "AzureTableStorageConnectionString";
private const string KeyRejectConnectionRequestIfNoAggregationChannel = "RejectConnectionRequestIfNoAggregationChannel";
private const string KeyPermittedAggregationChannels = "PermittedAggregationChannels";
private const string KeyNoDirectConversationsWithChannels = "NoDirectConversationsWithChannels";
public IConfiguration Configuration
{
get;
protected set;
}
public MessageRouter MessageRouter
{
get;
protected set;
}
public MessageRouterResultHandler MessageRouterResultHandler
{
get;
protected set;
}
public CommandHandler CommandHandler
{
get;
protected set;
}
public MessageLogs MessageLogs
{
get;
protected set;
}
public HandoffMiddleware(IConfiguration configuration)
{
Configuration = configuration;
string connectionString = Configuration[KeyAzureTableStorageConnectionString];
IRoutingDataStore routingDataStore = null;
if (string.IsNullOrEmpty(connectionString))
{
System.Diagnostics.Debug.WriteLine($"WARNING!!! No connection string found - using {nameof(InMemoryRoutingDataStore)}");
routingDataStore = new InMemoryRoutingDataStore();
}
else
{
System.Diagnostics.Debug.WriteLine($"Found a connection string - using {nameof(AzureTableRoutingDataStore)}");
routingDataStore = new AzureTableRoutingDataStore(connectionString);
}
MessageRouter = new MessageRouter(
routingDataStore,
new MicrosoftAppCredentials(Configuration["MicrosoftAppId"], Configuration["MicrosoftAppPassword"]));
//MessageRouter.Logger = new Logging.AggregationChannelLogger(MessageRouter);
MessageRouterResultHandler = new MessageRouterResultHandler(MessageRouter);
ConnectionRequestHandler connectionRequestHandler =
new ConnectionRequestHandler(GetChannelList(KeyNoDirectConversationsWithChannels));
CommandHandler = new CommandHandler(
MessageRouter,
MessageRouterResultHandler,
connectionRequestHandler,
GetChannelList(KeyPermittedAggregationChannels));
MessageLogs = new MessageLogs(connectionString);
}
public async Task OnTurnAsync(ITurnContext context, NextDelegate next, CancellationToken ct)
{
Activity activity = context.Activity;
if (activity.Type is ActivityTypes.Message)
{
bool.TryParse(
Configuration[KeyRejectConnectionRequestIfNoAggregationChannel],
out bool rejectConnectionRequestIfNoAggregationChannel);
// Store the conversation references (identities of the sender and the recipient [bot])
// in the activity
MessageRouter.StoreConversationReferences(activity);
AbstractMessageRouterResult messageRouterResult = null;
// Check the activity for commands
if (await CommandHandler.HandleCommandAsync(context) == false)
{
// No command detected/handled
// Let the message router route the activity, if the sender is connected with
// another user/bot
messageRouterResult = await MessageRouter.RouteMessageIfSenderIsConnectedAsync(activity);
if (messageRouterResult is MessageRoutingResult
&& (messageRouterResult as MessageRoutingResult).Type == MessageRoutingResultType.NoActionTaken)
{
// No action was taken by the message router. This means that the user
// is not connected (in a 1:1 conversation) with a human
// (e.g. customer service agent) yet.
// Check for cry for help (agent assistance)
var singleton = Singleton.GetInstance();
if (!string.IsNullOrWhiteSpace(activity.Text)
&& activity.Text.ToLower().Contains("human"))
{
// Create a connection request on behalf of the sender
// Note that the returned result must be handled
singleton.Log( "input_message: " + context.Activity.Text);
singleton.addToLog(context.Activity.Conversation.Id, "{" + DateTime.Now.ToLongTimeString().ToString() + "}" + " input_message: " + context.Activity.Text);
await context.SendActivityAsync("text --> " + context.Activity.Text + " conv-id --> " + context.Activity.Conversation.Id);
//singleton.Log("end");
List<string> x = singleton.final_msg();
for (int i=0;i<x.Count;i++)
{
await context.SendActivityAsync("Transcript --> " + x[i].ToString());
}
messageRouterResult = MessageRouter.CreateConnectionRequest(
MessageRouter.CreateSenderConversationReference(activity),
rejectConnectionRequestIfNoAggregationChannel);
}
else
{
singleton.addconversationid(context.Activity.Conversation.Id);
singleton.Log("input_message: " + context.Activity.Text);
singleton.addToLog(context.Activity.Conversation.Id, "{" + DateTime.Now.ToLongTimeString().ToString() + "}" + " input_message: " + context.Activity.Text);
// No action taken - this middleware did not consume the activity so let it propagate
await next(ct).ConfigureAwait(false);
}
}
}
// Uncomment to see the result in a reply (may be useful for debugging)
//if (messageRouterResult != null)
//{
// await MessageRouter.ReplyToActivityAsync(activity, messageRouterResult.ToString());
//}
// Handle the result, if necessary
await MessageRouterResultHandler.HandleResultAsync(messageRouterResult);
}
else
{
// No action taken - this middleware did not consume the activity so let it propagate
await next(ct).ConfigureAwait(false);
}
}
/// <summary>
/// Extracts the channel list from the settings matching the given key.
/// </summary>
/// <returns>The list of channels or null, if none found.</returns>
private IList<string> GetChannelList(string key)
{
IList<string> channelList = null;
string channels = Configuration[key];
if (!string.IsNullOrWhiteSpace(channels))
{
System.Diagnostics.Debug.WriteLine($"Channels by key \"{key}\": {channels}");
string[] channelArray = channels.Split(',');
if (channelArray.Length > 0)
{
channelList = new List<string>();
foreach (string channel in channelArray)
{
channelList.Add(channel.Trim());
}
}
}
else
{
System.Diagnostics.Debug.WriteLine($"No channels defined by key \"{key}\" in app settings");
}
return channelList;
}
}
}
@page
@using IntermediatorBotSample.Pages
@model IndexModel
@{
}
<h1>Intermediator Bot Sample</h1>
<p>
The purpose is to serve as a sample on how to implement the human hand-off.
Visit <a href="https://github.com/tompaana/intermediator-bot-sample">https://github.com/tompaana/intermediator-bot-sample</a> to learn more.
</p>
<p>The bot endpoint URL is: <a id="botEndpointUrl" /></p>
<script>
var botEndpointUrlLink = document.getElementById("botEndpointUrl");
botEndpointUrlLink.setAttribute('href', location.protocol + "//" + location.host + "@Model.BotEndpointPath");
botEndpointUrlLink.innerHTML = location.protocol + "//" + location.host + "@Model.BotEndpointPath";
</script>
<p>The bot credentials are:</p>
<ul>
<li id="botAppId" />
<li id="botAppPassword" />
</ul>
<script>
var botAppIdItem = document.getElementById("botAppId");
botAppIdItem.innerHTML = "App ID: @Model.BotAppId";
var botAppPasswordItem = document.getElementById("botAppPassword");
botAppPasswordItem.innerHTML = "App password: @Model.BotAppPassword";
</script>
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Configuration;
namespace IntermediatorBotSample.Pages
{
public class IndexModel : PageModel
{
[BindProperty]
public string BotEndpointPath
{
get
{
return $"{Configuration["BotBasePath"]}{Configuration["BotMessagesPath"]}";
}
}
[BindProperty]
public string BotAppId
{
get
{
#if DEBUG
return Configuration["MicrosoftAppId"];
#else
return "None of your business";
#endif
}
}
[BindProperty]
public string BotAppPassword
{
get
{
#if DEBUG
return Configuration["MicrosoftAppPassword"];
#else
return "Also none of your business";
#endif
}
}
private IConfiguration Configuration
{
get;
}
public IndexModel(IConfiguration configuration)
{
Configuration = configuration;
}
public void OnGet()
{
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace IntermediatorBotSample
{
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
}
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<ResourceId>/subscriptions/a57571fe-3203-41d8-bd24-9fceb6f7972a/resourceGroups/rg-ppb/providers/Microsoft.Web/sites/agent-hand-off-test</ResourceId>
<ResourceGroup>rg-ppb</ResourceGroup>
<PublishProvider>AzureWebSite</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>http://agent-hand-off-test.azurewebsites.net</SiteUrlToLaunchAfterPublish>
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<ProjectGuid>c5442a0c-e1ab-4237-b069-097a470af818</ProjectGuid>
<MSDeployServiceURL>agent-hand-off-test.scm.azurewebsites.net:443</MSDeployServiceURL>
<DeployIisAppPath>agent-hand-off-test</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>True</EnableMSDeployBackup>
<UserName>$agent-hand-off-test</UserName>
<_SavePWD>True</_SavePWD>
<_DestinationType>AzureWebSite</_DestinationType>
<InstallAspNetCoreSiteExtension>False</InstallAspNetCoreSiteExtension>
</PropertyGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TimeStampOfAssociatedLegacyPublishXmlFile />
<EncryptedPassword>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAiYRDSigWlkmVK6UfeoqX1gAAAAACAAAAAAAQZgAAAAEAACAAAADHCb6bHieH9IWxccqti/qBFiK6SdFwd5MdenZzAK/myQAAAAAOgAAAAAIAACAAAACxoI4BNLW5wqx/VokZNlpDruCcHXUI+uWt31Gm3gbQM4AAAABDoEfdBfxpSI1e6DX4VMyWWpNGpyKfL/aupj8gCXm2aJDM6kSxHzTt80OmXqTeDR+sFd4kMMixjwCXGd2nLaejLlWcOBpchP5q+VoIv3vj5VC++X7jBHk3fUYR1xqia5Zkx4rDzTGnIjHfRI9BoQMiZqUDxDKjecdxcOnY1hAGjkAAAADhlnx+lIq8KqVvxfaN+MSKnHnan/fN2TB/NePfiLSol6AZDMYnTWrXlcVJ5CmNGHvqSWOKf3DSdvxj8BqzMjGg</EncryptedPassword>
</PropertyGroup>
</Project>
\ No newline at end of file
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:29210/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IntermediatorBotSample": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:29211/"
}
}
}
namespace IntermediatorBotSample.Resources
{
public class StringConstants
{
public static readonly string NoUserNamePlaceholder = "(no user name)";
public static readonly string NoNameOrId = "(no name or ID)";
public static readonly string LineBreak = "\n\r";
public static readonly char QuotationMark = '"';
// For parsing JSON
public static readonly string EndOfLineInJsonResponse = "\\r\\n";
public static readonly char BackslashInJsonResponse = '\\';
}
}
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace IntermediatorBotSample.Resources {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Strings {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Strings() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IntermediatorBotSample.Resources.Strings", typeof(Strings).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to Accept.
/// </summary>
internal static string AcceptButtonTitle {
get {
return ResourceManager.GetString("AcceptButtonTitle", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Choose the user whose request to accept.
/// </summary>
internal static string AcceptConnectionRequestsCardInstructions {
get {
return ResourceManager.GetString("AcceptConnectionRequestsCardInstructions", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Accept request.
/// </summary>
internal static string AcceptConnectionRequestsCardTitle {
get {
return ResourceManager.GetString("AcceptConnectionRequestsCardTitle", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Accept or reject the request: Type &quot;{0}&quot; to accept, &quot;{1}&quot; to reject or use the buttons if enabled.
/// </summary>
internal static string AcceptRejectConnectionHint {
get {
return ResourceManager.GetString("AcceptRejectConnectionHint", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to To set up an aggregation channel, type &quot;{0}&quot;.
/// </summary>
internal static string AddAggregationChannelCommandHint {
get {
return ResourceManager.GetString("AddAggregationChannelCommandHint", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to This channel/conversation is already receiving requests.
/// </summary>
internal static string AggregationChannelAlreadySet {
get {
return ResourceManager.GetString("AggregationChannelAlreadySet", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to This channel/conversation will no longer receive requests.
/// </summary>
internal static string AggregationChannelRemoved {
get {
return ResourceManager.GetString("AggregationChannelRemoved", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to This channel/conversation is now where the requests are aggregated.
/// </summary>
internal static string AggregationChannelSet {
get {
return ResourceManager.GetString("AggregationChannelSet", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to You are already connected with user &quot;{0}&quot;.
/// </summary>
internal static string AlreadyConnectedWithUser {
get {
return ResourceManager.GetString("AlreadyConnectedWithUser", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Apply to all.
/// </summary>
internal static string ApplyToAll {
get {
return ResourceManager.GetString("ApplyToAll", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Bots.
/// </summary>
internal static string Bots {
get {
return ResourceManager.GetString("Bots", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Administrative options for controlling the end user bot conversations.
/// </summary>
internal static string CommandMenuDescription {
get {
return ResourceManager.GetString("CommandMenuDescription", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Select the command using the buttons below or type the command keyword (&quot;{0}&quot;)/bot handle (&quot;@{1}&quot;) followed by the command and its parameters (if any), for example: &quot;{2}&quot;..
/// </summary>
internal static string CommandMenuInstructions {
get {
return ResourceManager.GetString("CommandMenuInstructions", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Commands.
/// </summary>
internal static string CommandMenuTitle {
get {
return ResourceManager.GetString("CommandMenuTitle", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Command &quot;{0}&quot; not recognized.
/// </summary>
internal static string CommandNotRecognized {
get {
return ResourceManager.GetString("CommandNotRecognized", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to A connection request was made, but the requestor party is null.
/// </summary>
internal static string ConnectionRequestMadeButRequestorIsNull {
get {
return ResourceManager.GetString("ConnectionRequestMadeButRequestorIsNull", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Sorry, you are not allowed to accept or reject requests.
/// </summary>
internal static string ConnectionRequestResponseNotAllowed {
get {
return ResourceManager.GetString("ConnectionRequestResponseNotAllowed", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to A connection request error occurred: {0}.
/// </summary>
internal static string ConnectionRequestResultErrorWithResult {
get {
return ResourceManager.GetString("ConnectionRequestResultErrorWithResult", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Assistance request.
/// </summary>
internal static string ConnectionRequestTitle {
get {
return ResourceManager.GetString("ConnectionRequestTitle", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to A connection error occurred: {0}.
/// </summary>
internal static string ConnectionResultErrorWithResult {
get {
return ResourceManager.GetString("ConnectionResultErrorWithResult", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to To initiate a conversation with an agent, type &quot;{0}&quot;.
/// </summary>
internal static string ConnectRequestCommandHint {
get {
return ResourceManager.GetString("ConnectRequestCommandHint", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Deleting all data....
/// </summary>
internal static string DeletingAllData {
get {
return ResourceManager.GetString("DeletingAllData", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Deleting all data as requested by &quot;0&quot;....
/// </summary>
internal static string DeletingAllDataWithCommandIssuer {
get {
return ResourceManager.GetString("DeletingAllDataWithCommandIssuer", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to You said: {0}.
/// </summary>
internal static string EchoMessage {
get {
return ResourceManager.GetString("EchoMessage", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to An error occurred.
/// </summary>
internal static string ErrorOccured {
get {
return ResourceManager.GetString("ErrorOccured", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to An error occurred: {0}.
/// </summary>
internal static string ErrorOccuredWithResult {
get {
return ResourceManager.GetString("ErrorOccuredWithResult", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Failed to find the bot instance on aggregation channel &quot;{0}&quot;.
/// </summary>
internal static string FailedToFindBotOnAggregationChannel {
get {
return ResourceManager.GetString("FailedToFindBotOnAggregationChannel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Failed to find the pending request.
/// </summary>
internal static string FailedToFindPendingRequest {
get {
return ResourceManager.GetString("FailedToFindPendingRequest", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Failed to find a pending request for user &quot;0&quot;: {1}.
/// </summary>
internal static string FailedToFindPendingRequestForUserWithErrorMessage {
get {
return ResourceManager.GetString("FailedToFindPendingRequestForUserWithErrorMessage", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Failed to forward the message.
/// </summary>
internal static string FailedToForwardMessage {
get {
return ResourceManager.GetString("FailedToForwardMessage", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Failed to reject pending requests.
/// </summary>
internal static string FailedToRejectPendingRequests {
get {
return ResourceManager.GetString("FailedToRejectPendingRequests", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Failed to remove aggregation channel.
/// </summary>
internal static string FailedToRemoveAggregationChannel {
get {
return ResourceManager.GetString("FailedToRemoveAggregationChannel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Failed to set the aggregation channel: {0}.
/// </summary>
internal static string FailedToSetAggregationChannel {
get {
return ResourceManager.GetString("FailedToSetAggregationChannel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Invalid command.
/// </summary>
internal static string InvalidCommand {
get {
return ResourceManager.GetString("InvalidCommand", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Command parameter invalid or missing.
/// </summary>
internal static string InvalidOrMissingCommandParameter {
get {
return ResourceManager.GetString("InvalidOrMissingCommandParameter", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Sorry, there are no agents available right now.
/// </summary>
internal static string NoAgentsAvailable {
get {
return ResourceManager.GetString("NoAgentsAvailable", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to No aggregation channel set up.
/// </summary>
internal static string NoAggregationChannel {
get {
return ResourceManager.GetString("NoAggregationChannel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to No bots stored.
/// </summary>
internal static string NoBotsStored {
get {
return ResourceManager.GetString("NoBotsStored", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to No conversations.
/// </summary>
internal static string NoConversations {
get {
return ResourceManager.GetString("NoConversations", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to No pending requests.
/// </summary>
internal static string NoPendingRequests {
get {
return ResourceManager.GetString("NoPendingRequests", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to No results.
/// </summary>
internal static string NoResults {
get {
return ResourceManager.GetString("NoResults", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Your request was accepted and you are now chatting with {0}.
/// </summary>
internal static string NotifyClientConnected {
get {
return ResourceManager.GetString("NotifyClientConnected", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Your conversation with {0} has ended.
/// </summary>
internal static string NotifyClientDisconnected {
get {
return ResourceManager.GetString("NotifyClientDisconnected", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Your request has already been received, please wait for an agent to respond.
/// </summary>
internal static string NotifyClientDuplicateRequest {
get {
return ResourceManager.GetString("NotifyClientDuplicateRequest", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Unfortunately your request could not be processed.
/// </summary>
internal static string NotifyClientRequestRejected {
get {
return ResourceManager.GetString("NotifyClientRequestRejected", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Please wait for your request to be accepted.
/// </summary>
internal static string NotifyClientWaitForRequestHandling {
get {
return ResourceManager.GetString("NotifyClientWaitForRequestHandling", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to You are now connected to user &quot;{0}&quot;.
/// </summary>
internal static string NotifyOwnerConnected {
get {
return ResourceManager.GetString("NotifyOwnerConnected", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to You are now disconnected from the conversation with user &quot;{0}&quot;.
/// </summary>
internal static string NotifyOwnerDisconnected {
get {
return ResourceManager.GetString("NotifyOwnerDisconnected", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Request from user &quot;{0}&quot; rejected.
/// </summary>
internal static string NotifyOwnerRequestRejected {
get {
return ResourceManager.GetString("NotifyOwnerRequestRejected", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {0} is not a permitted aggregation channel.
/// </summary>
internal static string NotPermittedAggregationChannel {
get {
return ResourceManager.GetString("NotPermittedAggregationChannel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to No users stored.
/// </summary>
internal static string NoUsersStored {
get {
return ResourceManager.GetString("NoUsersStored", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to To see the available commands, type &quot;{0}&quot;.
/// </summary>
internal static string OptionsCommandHint {
get {
return ResourceManager.GetString("OptionsCommandHint", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Party &quot;{0}&quot; removed.
/// </summary>
internal static string PartyRemoved {
get {
return ResourceManager.GetString("PartyRemoved", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {0} pending request(s) found.
/// </summary>
internal static string PendingRequestsFoundWithCount {
get {
return ResourceManager.GetString("PendingRequestsFoundWithCount", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Reject all.
/// </summary>
internal static string RejectAll {
get {
return ResourceManager.GetString("RejectAll", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Reject.
/// </summary>
internal static string RejectButtonTitle {
get {
return ResourceManager.GetString("RejectButtonTitle", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Reject request.
/// </summary>
internal static string RejectConnectionRequestCardTitle {
get {
return ResourceManager.GetString("RejectConnectionRequestCardTitle", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Choose the user whose request to reject.
/// </summary>
internal static string RejectConnectionRequestsCardInstructions {
get {
return ResourceManager.GetString("RejectConnectionRequestsCardInstructions", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to &quot;{0}&quot; on channel &quot;{1}&quot; ({2}).
/// </summary>
internal static string RequestorDetailsItem {
get {
return ResourceManager.GetString("RequestorDetailsItem", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Request was made, but the details of the requestor are missing.
/// </summary>
internal static string RequestorDetailsMissing {
get {
return ResourceManager.GetString("RequestorDetailsMissing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Requested by user &quot;{0}&quot; on channel &quot;{1}&quot;.
/// </summary>
internal static string RequestorDetailsTitle {
get {
return ResourceManager.GetString("RequestorDetailsTitle", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Data of user &quot;{0}&quot; deleted.
/// </summary>
internal static string UserDataDeleted {
get {
return ResourceManager.GetString("UserDataDeleted", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to User name missing.
/// </summary>
internal static string UserNameMissing {
get {
return ResourceManager.GetString("UserNameMissing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Users.
/// </summary>
internal static string Users {
get {
return ResourceManager.GetString("Users", resourceCulture);
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AcceptButtonTitle" xml:space="preserve">
<value>Accept</value>
</data>
<data name="AcceptRejectConnectionHint" xml:space="preserve">
<value>Accept or reject the request: Type "{0}" to accept, "{1}" to reject or use the buttons if enabled</value>
</data>
<data name="AddAggregationChannelCommandHint" xml:space="preserve">
<value>To set up an aggregation channel, type "{0}"</value>
</data>
<data name="AggregationChannelAlreadySet" xml:space="preserve">
<value>This channel/conversation is already receiving requests</value>
</data>
<data name="AggregationChannelRemoved" xml:space="preserve">
<value>This channel/conversation will no longer receive requests</value>
</data>
<data name="AggregationChannelSet" xml:space="preserve">
<value>This channel/conversation is now where the requests are aggregated</value>
</data>
<data name="AlreadyConnectedWithUser" xml:space="preserve">
<value>You are already connected with user "{0}"</value>
</data>
<data name="CommandMenuDescription" xml:space="preserve">
<value>Administrative options for controlling the end user bot conversations</value>
</data>
<data name="CommandMenuInstructions" xml:space="preserve">
<value>Select the command using the buttons below or type the command keyword ("{0}")/bot handle ("@{1}") followed by the command and its parameters (if any), for example: "{2}".</value>
</data>
<data name="CommandMenuTitle" xml:space="preserve">
<value>Commands</value>
</data>
<data name="CommandNotRecognized" xml:space="preserve">
<value>Command "{0}" not recognized</value>
</data>
<data name="ConnectionRequestMadeButRequestorIsNull" xml:space="preserve">
<value>A connection request was made, but the requestor party is null</value>
</data>
<data name="ConnectionRequestResponseNotAllowed" xml:space="preserve">
<value>Sorry, you are not allowed to accept or reject requests</value>
</data>
<data name="ConnectionRequestTitle" xml:space="preserve">
<value>Assistance request</value>
</data>
<data name="ConnectRequestCommandHint" xml:space="preserve">
<value>To initiate a conversation with an agent, type "{0}"</value>
</data>
<data name="DeletingAllData" xml:space="preserve">
<value>Deleting all data...</value>
</data>
<data name="DeletingAllDataWithCommandIssuer" xml:space="preserve">
<value>Deleting all data as requested by "0"...</value>
</data>
<data name="EchoMessage" xml:space="preserve">
<value>You said: {0}</value>
</data>
<data name="ErrorOccured" xml:space="preserve">
<value>An error occurred</value>
</data>
<data name="ErrorOccuredWithResult" xml:space="preserve">
<value>An error occurred: {0}</value>
</data>
<data name="FailedToFindBotOnAggregationChannel" xml:space="preserve">
<value>Failed to find the bot instance on aggregation channel "{0}"</value>
</data>
<data name="FailedToFindPendingRequestForUserWithErrorMessage" xml:space="preserve">
<value>Failed to find a pending request for user "0": {1}</value>
</data>
<data name="FailedToForwardMessage" xml:space="preserve">
<value>Failed to forward the message</value>
</data>
<data name="FailedToRemoveAggregationChannel" xml:space="preserve">
<value>Failed to remove aggregation channel</value>
</data>
<data name="NoAgentsAvailable" xml:space="preserve">
<value>Sorry, there are no agents available right now</value>
</data>
<data name="NoAggregationChannel" xml:space="preserve">
<value>No aggregation channel set up</value>
</data>
<data name="NoPendingRequests" xml:space="preserve">
<value>No pending requests</value>
</data>
<data name="NotifyClientConnected" xml:space="preserve">
<value>Your request was accepted and you are now chatting with {0}</value>
</data>
<data name="NotifyClientDisconnected" xml:space="preserve">
<value>Your conversation with {0} has ended</value>
</data>
<data name="NotifyClientDuplicateRequest" xml:space="preserve">
<value>Your request has already been received, please wait for an agent to respond</value>
</data>
<data name="NotifyClientRequestRejected" xml:space="preserve">
<value>Unfortunately your request could not be processed</value>
</data>
<data name="NotifyClientWaitForRequestHandling" xml:space="preserve">
<value>Please wait for your request to be accepted</value>
</data>
<data name="NotifyOwnerConnected" xml:space="preserve">
<value>You are now connected to user "{0}"</value>
</data>
<data name="NotifyOwnerDisconnected" xml:space="preserve">
<value>You are now disconnected from the conversation with user "{0}"</value>
</data>
<data name="NotifyOwnerRequestRejected" xml:space="preserve">
<value>Request from user "{0}" rejected</value>
</data>
<data name="OptionsCommandHint" xml:space="preserve">
<value>To see the available commands, type "{0}"</value>
</data>
<data name="PartyRemoved" xml:space="preserve">
<value>Party "{0}" removed</value>
</data>
<data name="RejectButtonTitle" xml:space="preserve">
<value>Reject</value>
</data>
<data name="RequestorDetailsTitle" xml:space="preserve">
<value>Requested by user "{0}" on channel "{1}"</value>
</data>
<data name="UserDataDeleted" xml:space="preserve">
<value>Data of user "{0}" deleted</value>
</data>
<data name="UserNameMissing" xml:space="preserve">
<value>User name missing</value>
</data>
<data name="AcceptConnectionRequestsCardInstructions" xml:space="preserve">
<value>Choose the user whose request to accept</value>
</data>
<data name="AcceptConnectionRequestsCardTitle" xml:space="preserve">
<value>Accept request</value>
</data>
<data name="ApplyToAll" xml:space="preserve">
<value>Apply to all</value>
</data>
<data name="Bots" xml:space="preserve">
<value>Bots</value>
</data>
<data name="FailedToFindPendingRequest" xml:space="preserve">
<value>Failed to find the pending request</value>
</data>
<data name="FailedToRejectPendingRequests" xml:space="preserve">
<value>Failed to reject pending requests</value>
</data>
<data name="InvalidCommand" xml:space="preserve">
<value>Invalid command</value>
</data>
<data name="InvalidOrMissingCommandParameter" xml:space="preserve">
<value>Command parameter invalid or missing</value>
</data>
<data name="NoBotsStored" xml:space="preserve">
<value>No bots stored</value>
</data>
<data name="NoConversations" xml:space="preserve">
<value>No conversations</value>
</data>
<data name="NoResults" xml:space="preserve">
<value>No results</value>
</data>
<data name="NoUsersStored" xml:space="preserve">
<value>No users stored</value>
</data>
<data name="PendingRequestsFoundWithCount" xml:space="preserve">
<value>{0} pending request(s) found</value>
</data>
<data name="RejectAll" xml:space="preserve">
<value>Reject all</value>
</data>
<data name="RejectConnectionRequestCardTitle" xml:space="preserve">
<value>Reject request</value>
</data>
<data name="RejectConnectionRequestsCardInstructions" xml:space="preserve">
<value>Choose the user whose request to reject</value>
</data>
<data name="RequestorDetailsItem" xml:space="preserve">
<value>"{0}" on channel "{1}" ({2})</value>
</data>
<data name="Users" xml:space="preserve">
<value>Users</value>
</data>
<data name="RequestorDetailsMissing" xml:space="preserve">
<value>Request was made, but the details of the requestor are missing</value>
</data>
<data name="ConnectionRequestResultErrorWithResult" xml:space="preserve">
<value>A connection request error occurred: {0}</value>
</data>
<data name="ConnectionResultErrorWithResult" xml:space="preserve">
<value>A connection error occurred: {0}</value>
</data>
<data name="FailedToSetAggregationChannel" xml:space="preserve">
<value>Failed to set the aggregation channel: {0}</value>
</data>
<data name="NotPermittedAggregationChannel" xml:space="preserve">
<value>{0} is not a permitted aggregation channel</value>
</data>
</root>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.IO;
using Azure.Storage;
using Azure.Storage.Blobs;
using System.Collections;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.Auth;
using System.Threading.Tasks;
using System.Text;
using Microsoft.WindowsAzure.Storage.Table;
namespace IntermediatorBotSample
{
public class Singleton
{
public static Singleton instance = null;
public IList<string> strList = new List<string>();
public Hashtable myTable = new Hashtable();
public string newconvid;
public int i = 0;
public string x = "";
//private IList<string> finalList;
public string finalconvid = "";
public string finalid = "";
public List<string> msglist = new List<string>();
public Hashtable ht;
//Private constructor to deny instance creation of this class from outside
public Singleton() { }
//GetInstace method to be used to create or reach the single resource (instance)
public static Singleton GetInstance()
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
public void addId(string Id)
{
finalid = Id;
}
public void all_messages(List<string> messages)
{
msglist = messages;
}
public List<string> final_msg()
{
return (List<string>)msglist;
}
//Implement functionality as public instance methods
public void addconversationid(string conid)
{
finalconvid = conid;
ht = new Hashtable();
ht.Add(finalconvid, new List<string>());
Console.WriteLine("1-------------------------------- " + conid);
}
public class logEntity : TableEntity
{
public logEntity() { }
public logEntity(string convId, string message)
{
PartitionKey = convId;
RowKey = message;
}
public string ConvId => PartitionKey;
public string Message => RowKey;
public override string ToString() => $"{ConvId} {Message}";
}
public void addToLog(string conid, string message)
{
string accName = "azradlppb";
string accKey = "VLhJjo77rwYnHWaeNh2UlEdswUypR0uWSTyLn6Hu9SWlAYtujHymXZxdFo9kuEK5WcpDwBySpOjizcqxd3hMHA==";
var storageAccount = new CloudStorageAccount(new StorageCredentials(accName, accKey), true);
var tableClient = storageAccount.CreateCloudTableClient();
var logsTable = tableClient.GetTableReference("logs");
logsTable.CreateIfNotExistsAsync();
logsTable.ExecuteAsync(TableOperation.InsertOrReplace(new logEntity("100", message)));
}
/*public getLogs(string conid, string partitionKey)
{
string accName = "azradlppb";
string accKey = "VLhJjo77rwYnHWaeNh2UlEdswUypR0uWSTyLn6Hu9SWlAYtujHymXZxdFo9kuEK5WcpDwBySpOjizcqxd3hMHA==";
var storageAccount = new CloudStorageAccount(new StorageCredentials(accName, accKey), false);
var tableClient = storageAccount.CreateCloudTableClient();
var logsTable = tableClient.GetTableReference("logs");
TableOperation retrieve = TableOperation.Retrieve<logEntity>(partitionKey, null);
TableResult result = logsTable.ExecuteAsync(retrieve);
Console.WriteLine(((logEntity)result.Result).Date);
var logs = logsTable.Execute(TableOperation.Retrieve<logEntity>(conid));
}*/
public void push(string conid, string id, string message)
{
if (message == "end")
{
string accName = "azradlppb";
string accKey = "VLhJjo77rwYnHWaeNh2UlEdswUypR0uWSTyLn6Hu9SWlAYtujHymXZxdFo9kuEK5WcpDwBySpOjizcqxd3hMHA==";
var storageAccount = new CloudStorageAccount(new StorageCredentials(accName, accKey),true);
var tableClient = storageAccount.CreateCloudTableClient();
var logsTable = tableClient.GetTableReference("logs");
logsTable.CreateIfNotExistsAsync();
// Implement the accout, set true for https for SSL.
StorageCredentials creds = new StorageCredentials(accName, accKey);
CloudStorageAccount strAcc = new CloudStorageAccount(creds, true);
// Create the blob client.
CloudBlobClient blobClient = strAcc.CreateCloudBlobClient();
// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference("agent");
// Create the container if it doesn't already exist.
container.CreateIfNotExistsAsync();
string folder = DateTime.Now.ToString("MM-dd-yyyy/");
string fileName = conid + ".txt";
DateTime dateLogEntry = DateTime.Now;
// This creates a reference to the append blob.
CloudAppendBlob appBlob = container.GetAppendBlobReference(folder + fileName);
// Now we are going to check if todays file exists and if it doesn't we create it.
/*if (!appBlob.Exists())
{
appBlob.CreateOrReplace();
}*/
appBlob.CreateOrReplaceAsync();
List<string> messages1 = ((List<string>)ht[conid]);
/*logsTable.ExecuteAsync(TableOperation.InsertOrReplace(new logEntity("1", "++")));
logsTable.ExecuteAsync(TableOperation.InsertOrReplace(new logEntity("1", "--")));*/
/*var tasks = new Task[messages1.Count];
all_messages(messages1);
for (int k = 0; k < messages1.Count; k++)
{
var bytes = Encoding.UTF8.GetBytes(messages1[k]);
var stream = new MemoryStream(bytes);
tasks[i] = appBlob.AppendBlockAsync(stream);
}*/
var tasks = new Task[messages1.Count];
all_messages(messages1);
for (int i = 0; i < messages1.Count; i++)
logsTable.ExecuteAsync(TableOperation.InsertOrReplace(new logEntity(conid.ToString(), messages1[i].ToString())));
//Task.WaitAll(tasks);
/*for (int i = 0; i < 100; i++)
{
var message = string.Format("Appending log number {0} to an append blob.\r\n", i);
var bytes = Encoding.UTF8.GetBytes(message);
var stream = new MemoryStream(bytes);
tasks[i] = blob.AppendBlockAsync(stream);
}
*/
/*List<string> messages1 = ((List<string>)ht[conid]);
all_messages(messages1);
for (int k = 0; k < messages1.Count; k++)
{
appBlob.AppendTextAsync(messages1[k].ToString());
appBlob.AppendTextAsync("\n");
*//*sw.Flush();
stream.Position = 0;
blob.UploadFromStream(stream);*//*
}*/
// Add the entry to file.
/*string connection = "DefaultEndpointsProtocol=https;AccountName=azradlppb;AccountKey=VLhJjo77rwYnHWaeNh2UlEdswUypR0uWSTyLn6Hu9SWlAYtujHymXZxdFo9kuEK5WcpDwBySpOjizcqxd3hMHA==;EndpointSuffix=core.windows.net";
string folder = DateTime.Now.ToString("MM-dd-yyyy/");
string fileName = conid + ".txt";
Console.WriteLine(fileName);
string containerString = "agent";
CloudStorageAccount storage = CloudStorageAccount.Parse(connection);
CloudBlobClient client = storage.CreateCloudBlobClient();
CloudBlobContainer container = client.GetContainerReference(containerString);
CloudAppendBlob blob = container.GetAppendBlobReference(folder + fileName);
//if (!blob.ExistsAsync())
blob.CreateOrReplaceAsync();
blob.AppendTextAsync("hiiiiiiiiiiiiii");
blob.AppendTextAsync("Vamshi");
List<string> messages1 = ((List<string>)ht[conid]);
for (int k = 0; k < messages1.Count; k++)
{
blob.AppendTextAsync(messages1[k].ToString());
blob.AppendTextAsync("\n");
*//*sw.Flush();
stream.Position = 0;
blob.UploadFromStream(stream);*//*
}
using (MemoryStream stream = new MemoryStream())
using (StreamWriter sw = new StreamWriter(stream))
{
//blob.DownloadToStreamAsync(stream);
Console.WriteLine("2--------------------------------" + (List<string>)ht[conid]);
*//*foreach (string s in ((List<string>)ht[conid]))
{
//blob.DownloadToStream(stream);
sw.Write(s);
sw.Write("\n");
sw.Flush();
stream.Position = 0;
blob.UploadFromStreamAsync(stream);
}*//*
//ht.Remove(conid);
List<string> messages = ((List<string>)ht[conid]);
Console.WriteLine("2--------------------------------" + messages);
//foreach (string s in ((List<string>)ht[conid]))
all_messages(messages);
for (int i = 0; i < messages.Count; i++)
{
blob.AppendTextAsync(messages[i].ToString());
blob.AppendTextAsync("\n");
sw.WriteLineAsync(messages[i].ToString());
sw.WriteAsync("\n");
*//*sw.Flush();
stream.Position = 0;
blob.UploadFromStream(stream);*//*
}
sw.WriteAsync("======================================================================================");
sw.WriteAsync("\n");
sw.Flush();
stream.Position = 0;
blob.AppendFromStreamAsync(stream);
stream.Close();
//blob.UploadFromStream(stream);*/
//ht.Remove(conid);
//ht.Clear();
//}
ht.Remove(conid);
}
}
public void Log(string message)
{
try
{
string msg = message;
((List<string>)ht[finalconvid]).Add(msg);
push(finalconvid, finalconvid, message);
//push(finalid, message);
}
catch
{
Console.WriteLine("--");
}
}
}
}
using IntermediatorBotSample.Bot;
using IntermediatorBotSample.Middleware;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder.Core.Extensions;
using Microsoft.Bot.Builder.BotFramework;
using Microsoft.Bot.Builder.Integration;
using Microsoft.Bot.Builder.Integration.AspNet.Core;
using Microsoft.Bot.Builder.TraceExtensions;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
namespace IntermediatorBotSample
{
public class Startup
{
public IConfiguration Configuration
{
get;
}
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
/// <summary>
/// This method gets called by the runtime. Use this method to add services to the container.
/// </summary>
/// <param name="services"></param>
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddControllersAsServices();
services.AddSingleton(_ => Configuration);
services.AddBot<IntermediatorBot>(options =>
{
options.CredentialProvider = new ConfigurationCredentialProvider(Configuration);
// The CatchExceptionMiddleware provides a top-level exception handler for your bot.
// Any exceptions thrown by other Middleware, or by your OnTurn method, will be
// caught here. To facillitate debugging, the exception is sent out, via Trace,
// to the emulator. Trace activities are NOT displayed to users, so in addition
// an "Ooops" message is sent.
options.Middleware.Add(new CatchExceptionMiddleware<Exception>(async (context, exception) =>
{
await context.TraceActivityAsync("Bot Exception", exception);
await context.SendActivityAsync($"Sorry, it looks like something went wrong: {exception.Message}");
}));
// The Memory Storage used here is for local bot debugging only. When the bot
// is restarted, anything stored in memory will be gone.
IStorage dataStore = new MemoryStorage();
// The File data store, shown here, is suitable for bots that run on
// a single machine and need durable state across application restarts.
// IStorage dataStore = new FileStorage(System.IO.Path.GetTempPath());
// For production bots use the Azure Table Store, Azure Blob, or
// Azure CosmosDB storage provides, as seen below. To include any of
// the Azure based storage providers, add the Microsoft.Bot.Builder.Azure
// Nuget package to your solution. That package is found at:
// https://www.nuget.org/packages/Microsoft.Bot.Builder.Azure/
// IStorage dataStore = new Microsoft.Bot.Builder.Azure.AzureTableStorage("AzureTablesConnectionString", "TableName");
// IStorage dataStore = new Microsoft.Bot.Builder.Azure.AzureBlobStorage("AzureBlobConnectionString", "containerName");
// Handoff middleware
options.Middleware.Add(new HandoffMiddleware(Configuration));
});
services.AddMvc(); // Required Razor pages
}
/// <summary>
/// This method gets called by the runtime.
/// Use this method to configure the HTTP request pipeline.
/// </summary>
/// <param name="app"></param>
/// <param name="env"></param>
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseDefaultFiles()
.UseStaticFiles()
.UseMvc() // Required Razor pages
.UseBotFramework();
}
}
}
{
"$schema": "https://statics.teams.microsoft.com/sdk/v1.2/manifest/MicrosoftTeams.schema.json",
"manifestVersion": "1.2",
"version": "0.0.1",
"id": "INSERT YOUR TEAMS APP ID HERE",
"packageName": "com.underscore.intermediator.bot.sample",
"developer": {
"name": "Tomi",
"websiteUrl": "https://github.com/tompaana/intermediator-bot-sample",
"privacyUrl": "https://github.com/tompaana/intermediator-bot-sample/README.md",
"termsOfUseUrl": "https://github.com/tompaana/intermediator-bot-sample/LICENSE"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Intermediator Bot",
"full": "Intermediator Bot Sample"
},
"description": {
"short": "Intermediator Bot Sample",
"full": "A sample bot, that routes messages between two users on different channels."
},
"accentColor": "#00FF00",
"configurableTabs": [
],
"staticTabs": [
],
"bots": [
{
"botId": "INSERT YOUR BOT'S MICROSOFT APP ID HERE",
"scopes": [
"personal",
"team"
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"*.azurewebsites.net"
]
}
\ No newline at end of file
{
"MicrosoftAppId": "",
"MicrosoftAppPassword": "",
"BotBasePath": "/api",
"BotMessagesPath": "/messages",
"AzureTableStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=azradlppb;AccountKey=VLhJjo77rwYnHWaeNh2UlEdswUypR0uWSTyLn6Hu9SWlAYtujHymXZxdFo9kuEK5WcpDwBySpOjizcqxd3hMHA==;EndpointSuffix=core.windows.net",
"RejectConnectionRequestIfNoAggregationChannel": true,
"PermittedAggregationChannels": "",
"NoDirectConversationsWithChannels": "emulator, facebook, skype, msteams, webchat"
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\Admin\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\Admin\\.nuget\\packages"
]
}
}
\ No newline at end of file
{
"runtimeOptions": {
"tfm": "netcoreapp2.2",
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "2.2.0"
},
"configProperties": {
"System.GC.Server": true
}
}
}
\ No newline at end of file
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:29210/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IntermediatorBotSample": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:29211/"
}
}
}
{
"$schema": "https://statics.teams.microsoft.com/sdk/v1.2/manifest/MicrosoftTeams.schema.json",
"manifestVersion": "1.2",
"version": "0.0.1",
"id": "INSERT YOUR TEAMS APP ID HERE",
"packageName": "com.underscore.intermediator.bot.sample",
"developer": {
"name": "Tomi",
"websiteUrl": "https://github.com/tompaana/intermediator-bot-sample",
"privacyUrl": "https://github.com/tompaana/intermediator-bot-sample/README.md",
"termsOfUseUrl": "https://github.com/tompaana/intermediator-bot-sample/LICENSE"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Intermediator Bot",
"full": "Intermediator Bot Sample"
},
"description": {
"short": "Intermediator Bot Sample",
"full": "A sample bot, that routes messages between two users on different channels."
},
"accentColor": "#00FF00",
"configurableTabs": [
],
"staticTabs": [
],
"bots": [
{
"botId": "INSERT YOUR BOT'S MICROSOFT APP ID HERE",
"scopes": [
"personal",
"team"
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"*.azurewebsites.net"
]
}
\ No newline at end of file
{
"MicrosoftAppId": "",
"MicrosoftAppPassword": "",
"BotBasePath": "/api",
"BotMessagesPath": "/messages",
"AzureTableStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=azradlppb;AccountKey=VLhJjo77rwYnHWaeNh2UlEdswUypR0uWSTyLn6Hu9SWlAYtujHymXZxdFo9kuEK5WcpDwBySpOjizcqxd3hMHA==;EndpointSuffix=core.windows.net",
"RejectConnectionRequestIfNoAggregationChannel": true,
"PermittedAggregationChannels": "",
"NoDirectConversationsWithChannels": "emulator, facebook, skype, msteams, webchat"
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\Admin\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\Admin\\.nuget\\packages"
]
}
}
\ No newline at end of file
{
"runtimeOptions": {
"tfm": "netcoreapp2.2",
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "2.2.0"
},
"configProperties": {
"System.GC.Server": true
}
}
}
\ No newline at end of file
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:29210/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IntermediatorBotSample": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:29211/"
}
}
}
{
"$schema": "https://statics.teams.microsoft.com/sdk/v1.2/manifest/MicrosoftTeams.schema.json",
"manifestVersion": "1.2",
"version": "0.0.1",
"id": "INSERT YOUR TEAMS APP ID HERE",
"packageName": "com.underscore.intermediator.bot.sample",
"developer": {
"name": "Tomi",
"websiteUrl": "https://github.com/tompaana/intermediator-bot-sample",
"privacyUrl": "https://github.com/tompaana/intermediator-bot-sample/README.md",
"termsOfUseUrl": "https://github.com/tompaana/intermediator-bot-sample/LICENSE"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Intermediator Bot",
"full": "Intermediator Bot Sample"
},
"description": {
"short": "Intermediator Bot Sample",
"full": "A sample bot, that routes messages between two users on different channels."
},
"accentColor": "#00FF00",
"configurableTabs": [
],
"staticTabs": [
],
"bots": [
{
"botId": "INSERT YOUR BOT'S MICROSOFT APP ID HERE",
"scopes": [
"personal",
"team"
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"*.azurewebsites.net"
]
}
\ No newline at end of file
{
"MicrosoftAppId": "",
"MicrosoftAppPassword": "",
"BotBasePath": "/api",
"BotMessagesPath": "/messages",
"AzureTableStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=azradlppb;AccountKey=VLhJjo77rwYnHWaeNh2UlEdswUypR0uWSTyLn6Hu9SWlAYtujHymXZxdFo9kuEK5WcpDwBySpOjizcqxd3hMHA==;EndpointSuffix=core.windows.net",
"RejectConnectionRequestIfNoAggregationChannel": true,
"PermittedAggregationChannels": "",
"NoDirectConversationsWithChannels": "emulator, facebook, skype, msteams, webchat"
}
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v2.2", FrameworkDisplayName = "")]
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyTitleAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute("IntermediatorBotSample.Views")]
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorLanguageVersionAttribute("2.1")]
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorConfigurationNameAttribute("MVC-2.1")]
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorExtensionAssemblyNameAttribute("MVC-2.1", "Microsoft.AspNetCore.Mvc.Razor.Extensions")]
// Generated by the MSBuild WriteCodeFragment class.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute("Microsoft.AspNetCore.Mvc.ApplicationParts.CompiledRazorAssemblyApplicationPartFac" +
"tory, Microsoft.AspNetCore.Mvc.Razor")]
[assembly: System.Reflection.AssemblyCompanyAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyProductAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyTitleAttribute("IntermediatorBotSample.Views")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
[{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.BodyTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"body","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.BodyTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.HeadTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"head","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.HeadTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"*","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"itemid","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"applet","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"archive","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"area","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"audio","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"base","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"blockquote","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"formaction","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"del","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"embed","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"action","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"html","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"manifest","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"iframe","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"srcset","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"formaction","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"ins","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"menuitem","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"icon","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"object","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"archive","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"object","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"data","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"q","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"source","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"source","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"srcset","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"track","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"video","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"video","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"poster","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-host","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-protocol","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-protocol","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Protocol"}},{"Kind":"ITagHelper","Name":"asp-host","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Host"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.CacheTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"cache","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"priority","TypeName":"Microsoft.Extensions.Caching.Memory.CacheItemPriority?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Priority"}},{"Kind":"ITagHelper","Name":"vary-by","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryBy"}},{"Kind":"ITagHelper","Name":"vary-by-header","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByHeader"}},{"Kind":"ITagHelper","Name":"vary-by-query","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByQuery"}},{"Kind":"ITagHelper","Name":"vary-by-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByRoute"}},{"Kind":"ITagHelper","Name":"vary-by-cookie","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCookie"}},{"Kind":"ITagHelper","Name":"vary-by-user","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByUser"}},{"Kind":"ITagHelper","Name":"vary-by-culture","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCulture"}},{"Kind":"ITagHelper","Name":"expires-on","TypeName":"System.DateTimeOffset?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresOn"}},{"Kind":"ITagHelper","Name":"expires-after","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresAfter"}},{"Kind":"ITagHelper","Name":"expires-sliding","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresSliding"}},{"Kind":"ITagHelper","Name":"enabled","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Enabled"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.CacheTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.DistributedCacheTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"distributed-cache","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"name","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"vary-by","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryBy"}},{"Kind":"ITagHelper","Name":"vary-by-header","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByHeader"}},{"Kind":"ITagHelper","Name":"vary-by-query","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByQuery"}},{"Kind":"ITagHelper","Name":"vary-by-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByRoute"}},{"Kind":"ITagHelper","Name":"vary-by-cookie","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCookie"}},{"Kind":"ITagHelper","Name":"vary-by-user","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByUser"}},{"Kind":"ITagHelper","Name":"vary-by-culture","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCulture"}},{"Kind":"ITagHelper","Name":"expires-on","TypeName":"System.DateTimeOffset?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresOn"}},{"Kind":"ITagHelper","Name":"expires-after","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresAfter"}},{"Kind":"ITagHelper","Name":"expires-sliding","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresSliding"}},{"Kind":"ITagHelper","Name":"enabled","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Enabled"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.DistributedCacheTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.EnvironmentTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"environment","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"names","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Names"}},{"Kind":"ITagHelper","Name":"include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Include"}},{"Kind":"ITagHelper","Name":"exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Exclude"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.EnvironmentTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.FormActionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.FormActionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-antiforgery","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Antiforgery"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"method","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Method"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ImageTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]},{"Name":"src","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Src"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ImageTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"asp-format","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Format"}},{"Kind":"ITagHelper","Name":"type","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"InputTypeName"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Value"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"label","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.LinkTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-href-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-href-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-class","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-property","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-value","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"href","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Href"}},{"Kind":"ITagHelper","Name":"asp-href-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"HrefInclude"}},{"Kind":"ITagHelper","Name":"asp-href-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"HrefExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-href","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHref"}},{"Kind":"ITagHelper","Name":"asp-suppress-fallback-integrity","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SuppressFallbackIntegrity"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}},{"Kind":"ITagHelper","Name":"asp-fallback-href-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHrefInclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-href-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHrefExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-class","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestClass"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-property","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestProperty"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestValue"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.LinkTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"option","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Value"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"partial","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"name","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"model","TypeName":"System.Object","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Model"}},{"Kind":"ITagHelper","Name":"optional","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Optional"}},{"Kind":"ITagHelper","Name":"fallback-name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackName"}},{"Kind":"ITagHelper","Name":"view-data","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary","IsEnum":false,"IndexerNamePrefix":"view-data-","IndexerTypeName":"System.Object","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ViewData"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-src-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-src-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-test","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Src"}},{"Kind":"ITagHelper","Name":"asp-src-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SrcInclude"}},{"Kind":"ITagHelper","Name":"asp-src-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SrcExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrc"}},{"Kind":"ITagHelper","Name":"asp-suppress-fallback-integrity","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SuppressFallbackIntegrity"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}},{"Kind":"ITagHelper","Name":"asp-fallback-src-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrcInclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-src-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrcExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-test","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestExpression"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"select","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"select","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-items","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"asp-items","TypeName":"System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem>","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Items"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"textarea","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"span","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-validation-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-validation-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationSummaryTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"div","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-validation-summary","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-validation-summary","TypeName":"Microsoft.AspNetCore.Mvc.Rendering.ValidationSummary","IsEnum":true,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ValidationSummary"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationSummaryTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.SpaServices.Prerendering.PrerenderTagHelper","AssemblyName":"Microsoft.AspNetCore.SpaServices","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"*","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-prerender-module","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-prerender-module","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ModuleName"}},{"Kind":"ITagHelper","Name":"asp-prerender-export","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExportName"}},{"Kind":"ITagHelper","Name":"asp-prerender-data","TypeName":"System.Object","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"CustomDataParameter"}},{"Kind":"ITagHelper","Name":"asp-prerender-timeout","TypeName":"System.Int32","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"TimeoutMillisecondsParameter"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.SpaServices.Prerendering.PrerenderTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.BodyTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"body","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.BodyTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.HeadTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"head","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.HeadTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"*","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"itemid","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"applet","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"archive","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"area","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"audio","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"base","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"blockquote","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"formaction","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"del","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"embed","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"action","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"html","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"manifest","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"iframe","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"srcset","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"formaction","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"ins","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"menuitem","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"icon","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"object","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"archive","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"object","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"data","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"q","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"source","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"source","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"srcset","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"track","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"video","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"video","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"poster","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-host","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-protocol","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-protocol","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Protocol"}},{"Kind":"ITagHelper","Name":"asp-host","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Host"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.CacheTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"cache","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"priority","TypeName":"Microsoft.Extensions.Caching.Memory.CacheItemPriority?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Priority"}},{"Kind":"ITagHelper","Name":"vary-by","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryBy"}},{"Kind":"ITagHelper","Name":"vary-by-header","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByHeader"}},{"Kind":"ITagHelper","Name":"vary-by-query","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByQuery"}},{"Kind":"ITagHelper","Name":"vary-by-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByRoute"}},{"Kind":"ITagHelper","Name":"vary-by-cookie","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCookie"}},{"Kind":"ITagHelper","Name":"vary-by-user","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByUser"}},{"Kind":"ITagHelper","Name":"vary-by-culture","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCulture"}},{"Kind":"ITagHelper","Name":"expires-on","TypeName":"System.DateTimeOffset?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresOn"}},{"Kind":"ITagHelper","Name":"expires-after","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresAfter"}},{"Kind":"ITagHelper","Name":"expires-sliding","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresSliding"}},{"Kind":"ITagHelper","Name":"enabled","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Enabled"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.CacheTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.DistributedCacheTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"distributed-cache","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"name","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"vary-by","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryBy"}},{"Kind":"ITagHelper","Name":"vary-by-header","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByHeader"}},{"Kind":"ITagHelper","Name":"vary-by-query","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByQuery"}},{"Kind":"ITagHelper","Name":"vary-by-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByRoute"}},{"Kind":"ITagHelper","Name":"vary-by-cookie","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCookie"}},{"Kind":"ITagHelper","Name":"vary-by-user","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByUser"}},{"Kind":"ITagHelper","Name":"vary-by-culture","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCulture"}},{"Kind":"ITagHelper","Name":"expires-on","TypeName":"System.DateTimeOffset?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresOn"}},{"Kind":"ITagHelper","Name":"expires-after","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresAfter"}},{"Kind":"ITagHelper","Name":"expires-sliding","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresSliding"}},{"Kind":"ITagHelper","Name":"enabled","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Enabled"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.DistributedCacheTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.EnvironmentTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"environment","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"names","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Names"}},{"Kind":"ITagHelper","Name":"include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Include"}},{"Kind":"ITagHelper","Name":"exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Exclude"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.EnvironmentTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.FormActionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.FormActionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-antiforgery","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Antiforgery"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"method","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Method"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ImageTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]},{"Name":"src","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Src"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ImageTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"asp-format","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Format"}},{"Kind":"ITagHelper","Name":"type","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"InputTypeName"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Value"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"label","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.LinkTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-href-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-href-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-class","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-property","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-value","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"href","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Href"}},{"Kind":"ITagHelper","Name":"asp-href-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"HrefInclude"}},{"Kind":"ITagHelper","Name":"asp-href-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"HrefExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-href","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHref"}},{"Kind":"ITagHelper","Name":"asp-suppress-fallback-integrity","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SuppressFallbackIntegrity"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}},{"Kind":"ITagHelper","Name":"asp-fallback-href-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHrefInclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-href-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHrefExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-class","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestClass"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-property","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestProperty"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestValue"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.LinkTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"option","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Value"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"partial","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"name","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"model","TypeName":"System.Object","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Model"}},{"Kind":"ITagHelper","Name":"optional","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Optional"}},{"Kind":"ITagHelper","Name":"fallback-name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackName"}},{"Kind":"ITagHelper","Name":"view-data","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary","IsEnum":false,"IndexerNamePrefix":"view-data-","IndexerTypeName":"System.Object","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ViewData"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-src-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-src-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-test","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Src"}},{"Kind":"ITagHelper","Name":"asp-src-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SrcInclude"}},{"Kind":"ITagHelper","Name":"asp-src-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SrcExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrc"}},{"Kind":"ITagHelper","Name":"asp-suppress-fallback-integrity","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SuppressFallbackIntegrity"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}},{"Kind":"ITagHelper","Name":"asp-fallback-src-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrcInclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-src-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrcExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-test","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestExpression"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"select","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"select","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-items","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"asp-items","TypeName":"System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem>","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Items"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"textarea","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"span","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-validation-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-validation-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationSummaryTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"div","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-validation-summary","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-validation-summary","TypeName":"Microsoft.AspNetCore.Mvc.Rendering.ValidationSummary","IsEnum":true,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ValidationSummary"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationSummaryTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.SpaServices.Prerendering.PrerenderTagHelper","AssemblyName":"Microsoft.AspNetCore.SpaServices","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"*","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-prerender-module","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-prerender-module","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ModuleName"}},{"Kind":"ITagHelper","Name":"asp-prerender-export","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExportName"}},{"Kind":"ITagHelper","Name":"asp-prerender-data","TypeName":"System.Object","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"CustomDataParameter"}},{"Kind":"ITagHelper","Name":"asp-prerender-timeout","TypeName":"System.Int32","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"TimeoutMillisecondsParameter"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.SpaServices.Prerendering.PrerenderTagHelper"}}]
\ No newline at end of file
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\appsettings.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\Properties\launchSettings.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\TeamsManifest\manifest.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\IntermediatorBotSample.deps.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\IntermediatorBotSample.runtimeconfig.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\IntermediatorBotSample.runtimeconfig.dev.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\IntermediatorBotSample.dll
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\IntermediatorBotSample.pdb
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\IntermediatorBotSample.Views.dll
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Debug\netcoreapp2.2\IntermediatorBotSample.Views.pdb
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.csprojAssemblyReference.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.Resources.Strings.resources
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.csproj.GenerateResource.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.AssemblyInfoInputs.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.AssemblyInfo.cs
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.RazorAssemblyInfo.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.RazorAssemblyInfo.cs
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.TagHelpers.input.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.TagHelpers.output.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.RazorCoreGenerate.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\Razor\Pages\Index.cshtml.g.cs
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.RazorTargetAssemblyInfo.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.RazorTargetAssemblyInfo.cs
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.Views.pdb
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.dll
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.pdb
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.genruntimeconfig.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Debug\netcoreapp2.2\IntermediatorBotSample.csproj.CopyComplete
#pragma checksum "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "62513363e2fb1c111ceec45dab9b820553d6df7a"
// <auto-generated/>
#pragma warning disable 1591
[assembly: global::Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute(typeof(AspNetCore.Pages_Index), @"mvc.1.0.razor-page", @"/Pages/Index.cshtml")]
[assembly:global::Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.RazorPageAttribute(@"/Pages/Index.cshtml", typeof(AspNetCore.Pages_Index), null)]
namespace AspNetCore
{
#line hidden
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
#line 2 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
using IntermediatorBotSample.Pages;
#line default
#line hidden
[global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute(@"SHA1", @"62513363e2fb1c111ceec45dab9b820553d6df7a", @"/Pages/Index.cshtml")]
public class Pages_Index : global::Microsoft.AspNetCore.Mvc.RazorPages.Page
{
#pragma warning disable 1998
public async override global::System.Threading.Tasks.Task ExecuteAsync()
{
BeginContext(71, 503, true);
WriteLiteral(@"
<h1>Intermediator Bot Sample</h1>
<p>
The purpose is to serve as a sample on how to implement the human hand-off.
Visit <a href=""https://github.com/tompaana/intermediator-bot-sample"">https://github.com/tompaana/intermediator-bot-sample</a> to learn more.
</p>
<p>The bot endpoint URL is: <a id=""botEndpointUrl"" /></p>
<script>
var botEndpointUrlLink = document.getElementById(""botEndpointUrl"");
botEndpointUrlLink.setAttribute('href', location.protocol + ""//"" + location.host + """);
EndContext();
BeginContext(575, 21, false);
#line 18 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
Write(Model.BotEndpointPath);
#line default
#line hidden
EndContext();
BeginContext(596, 84, true);
WriteLiteral("\");\r\n botEndpointUrlLink.innerHTML = location.protocol + \"//\" + location.host + \"");
EndContext();
BeginContext(681, 21, false);
#line 19 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
Write(Model.BotEndpointPath);
#line default
#line hidden
EndContext();
BeginContext(702, 232, true);
WriteLiteral("\";\r\n</script>\r\n\r\n<p>The bot credentials are:</p>\r\n<ul>\r\n <li id=\"botAppId\" />\r\n <li id=\"botAppPassword\" />\r\n</ul>\r\n\r\n<script>\r\n var botAppIdItem = document.getElementById(\"botAppId\");\r\n botAppIdItem.innerHTML = \"App ID: ");
EndContext();
BeginContext(935, 14, false);
#line 30 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
Write(Model.BotAppId);
#line default
#line hidden
EndContext();
BeginContext(949, 127, true);
WriteLiteral("\";\r\n var botAppPasswordItem = document.getElementById(\"botAppPassword\");\r\n botAppPasswordItem.innerHTML = \"App password: ");
EndContext();
BeginContext(1077, 20, false);
#line 32 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
Write(Model.BotAppPassword);
#line default
#line hidden
EndContext();
BeginContext(1097, 15, true);
WriteLiteral("\";\r\n</script>\r\n");
EndContext();
}
#pragma warning restore 1998
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.IUrlHelper Url { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.IViewComponentHelper Component { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper<IndexModel> Html { get; private set; }
public global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<IndexModel> ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<IndexModel>)PageContext?.ViewData;
public IndexModel Model => ViewData.Model;
}
}
#pragma warning restore 1591
{
"format": 1,
"restore": {
"E:\\ChatBots\\poc\\intermediator-bot-sample\\IntermediatorBotSample\\IntermediatorBotSample.csproj": {}
},
"projects": {
"E:\\ChatBots\\poc\\intermediator-bot-sample\\IntermediatorBotSample\\IntermediatorBotSample.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "E:\\ChatBots\\poc\\intermediator-bot-sample\\IntermediatorBotSample\\IntermediatorBotSample.csproj",
"projectName": "IntermediatorBotSample",
"projectPath": "E:\\ChatBots\\poc\\intermediator-bot-sample\\IntermediatorBotSample\\IntermediatorBotSample.csproj",
"packagesPath": "C:\\Users\\Admin\\.nuget\\packages\\",
"outputPath": "E:\\ChatBots\\poc\\intermediator-bot-sample\\IntermediatorBotSample\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\Admin\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netcoreapp2.2"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netcoreapp2.2": {
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netcoreapp2.2": {
"dependencies": {
"Azure.Storage.Blobs": {
"target": "Package",
"version": "[12.6.0, )"
},
"BotMessageRouting": {
"target": "Package",
"version": "[2.0.2-alpha, )"
},
"Microsoft.AspNetCore": {
"target": "Package",
"version": "[2.2.0, )"
},
"Microsoft.AspNetCore.App": {
"suppressParent": "All",
"target": "Package",
"version": "[2.2.0, )",
"autoReferenced": true
},
"Microsoft.Bot.Builder": {
"target": "Package",
"version": "[4.2.2, )"
},
"Microsoft.Bot.Builder.Integration.AspNet.Core": {
"target": "Package",
"version": "[4.2.2, )"
},
"Microsoft.Bot.Configuration": {
"target": "Package",
"version": "[4.2.2, )"
},
"Microsoft.Bot.Connector": {
"target": "Package",
"version": "[4.2.2, )"
},
"Microsoft.Bot.Schema": {
"target": "Package",
"version": "[4.2.2, )"
},
"Microsoft.Extensions.Logging.AzureAppServices": {
"target": "Package",
"version": "[2.2.0, )"
},
"Microsoft.NETCore.App": {
"suppressParent": "All",
"target": "Package",
"version": "[2.2.0, )",
"autoReferenced": true
},
"RestSharp": {
"target": "Package",
"version": "[106.11.4, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json"
}
}
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Admin\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.6.0</NuGetToolVersion>
</PropertyGroup>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.netcore.app\2.2.0\build\netcoreapp2.2\Microsoft.NETCore.App.props" Condition="Exists('$(NuGetPackageRoot)microsoft.netcore.app\2.2.0\build\netcoreapp2.2\Microsoft.NETCore.App.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.fileproviders.embedded\2.2.0\build\netstandard2.0\Microsoft.Extensions.FileProviders.Embedded.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.fileproviders.embedded\2.2.0\build\netstandard2.0\Microsoft.Extensions.FileProviders.Embedded.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets\2.2.0\build\netstandard2.0\Microsoft.Extensions.Configuration.UserSecrets.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets\2.2.0\build\netstandard2.0\Microsoft.Extensions.Configuration.UserSecrets.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design\2.2.0\build\netcoreapp2.0\Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design\2.2.0\build\netcoreapp2.0\Microsoft.EntityFrameworkCore.Design.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.mvc.razor.extensions\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.Extensions.props" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.mvc.razor.extensions\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.Extensions.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.razor.design\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Razor.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.razor.design\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Razor.Design.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.app\2.2.0\build\netcoreapp2.2\Microsoft.AspNetCore.App.props" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.app\2.2.0\build\netcoreapp2.2\Microsoft.AspNetCore.App.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Users\Admin\.nuget\packages\microsoft.codeanalysis.analyzers\1.1.0</PkgMicrosoft_CodeAnalysis_Analyzers>
<PkgMicrosoft_EntityFrameworkCore_Tools Condition=" '$(PkgMicrosoft_EntityFrameworkCore_Tools)' == '' ">C:\Users\Admin\.nuget\packages\microsoft.entityframeworkcore.tools\2.2.0</PkgMicrosoft_EntityFrameworkCore_Tools>
<PkgMicrosoft_AspNetCore_Razor_Design Condition=" '$(PkgMicrosoft_AspNetCore_Razor_Design)' == '' ">C:\Users\Admin\.nuget\packages\microsoft.aspnetcore.razor.design\2.2.0</PkgMicrosoft_AspNetCore_Razor_Design>
</PropertyGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('$(NuGetPackageRoot)netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.netcore.app\2.2.0\build\netcoreapp2.2\Microsoft.NETCore.App.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.netcore.app\2.2.0\build\netcoreapp2.2\Microsoft.NETCore.App.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.fileproviders.embedded\2.2.0\build\netstandard2.0\Microsoft.Extensions.FileProviders.Embedded.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.fileproviders.embedded\2.2.0\build\netstandard2.0\Microsoft.Extensions.FileProviders.Embedded.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets\2.2.0\build\netstandard2.0\Microsoft.Extensions.Configuration.UserSecrets.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets\2.2.0\build\netstandard2.0\Microsoft.Extensions.Configuration.UserSecrets.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.mvc.razor.extensions\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.Extensions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.mvc.razor.extensions\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.Extensions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.server.iisintegration\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Server.IISIntegration.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.server.iisintegration\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Server.IISIntegration.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.server.iis\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Server.IIS.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.server.iis\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Server.IIS.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.mvc.razor.viewcompilation\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.mvc.razor.viewcompilation\2.2.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.app\2.2.0\build\netcoreapp2.2\Microsoft.AspNetCore.App.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.app\2.2.0\build\netcoreapp2.2\Microsoft.AspNetCore.App.targets')" />
</ImportGroup>
</Project>
\ No newline at end of file
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v2.2", FrameworkDisplayName = "")]
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyTitleAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute("IntermediatorBotSample.Views")]
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorLanguageVersionAttribute("2.1")]
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorConfigurationNameAttribute("MVC-2.1")]
[assembly: Microsoft.AspNetCore.Razor.Hosting.RazorExtensionAssemblyNameAttribute("MVC-2.1", "Microsoft.AspNetCore.Mvc.Razor.Extensions")]
// Generated by the MSBuild WriteCodeFragment class.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute("Microsoft.AspNetCore.Mvc.ApplicationParts.CompiledRazorAssemblyApplicationPartFac" +
"tory, Microsoft.AspNetCore.Mvc.Razor")]
[assembly: System.Reflection.AssemblyCompanyAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyProductAttribute("IntermediatorBotSample")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyTitleAttribute("IntermediatorBotSample.Views")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
[{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.BodyTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"body","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.BodyTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.HeadTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"head","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.HeadTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"*","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"itemid","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"applet","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"archive","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"area","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"audio","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"base","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"blockquote","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"formaction","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"del","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"embed","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"action","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"html","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"manifest","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"iframe","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"srcset","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"formaction","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"ins","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"menuitem","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"icon","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"object","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"archive","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"object","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"data","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"q","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"source","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"source","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"srcset","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"track","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"video","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"video","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"poster","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-host","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-protocol","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-protocol","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Protocol"}},{"Kind":"ITagHelper","Name":"asp-host","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Host"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.CacheTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"cache","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"priority","TypeName":"Microsoft.Extensions.Caching.Memory.CacheItemPriority?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Priority"}},{"Kind":"ITagHelper","Name":"vary-by","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryBy"}},{"Kind":"ITagHelper","Name":"vary-by-header","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByHeader"}},{"Kind":"ITagHelper","Name":"vary-by-query","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByQuery"}},{"Kind":"ITagHelper","Name":"vary-by-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByRoute"}},{"Kind":"ITagHelper","Name":"vary-by-cookie","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCookie"}},{"Kind":"ITagHelper","Name":"vary-by-user","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByUser"}},{"Kind":"ITagHelper","Name":"vary-by-culture","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCulture"}},{"Kind":"ITagHelper","Name":"expires-on","TypeName":"System.DateTimeOffset?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresOn"}},{"Kind":"ITagHelper","Name":"expires-after","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresAfter"}},{"Kind":"ITagHelper","Name":"expires-sliding","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresSliding"}},{"Kind":"ITagHelper","Name":"enabled","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Enabled"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.CacheTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.DistributedCacheTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"distributed-cache","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"name","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"vary-by","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryBy"}},{"Kind":"ITagHelper","Name":"vary-by-header","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByHeader"}},{"Kind":"ITagHelper","Name":"vary-by-query","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByQuery"}},{"Kind":"ITagHelper","Name":"vary-by-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByRoute"}},{"Kind":"ITagHelper","Name":"vary-by-cookie","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCookie"}},{"Kind":"ITagHelper","Name":"vary-by-user","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByUser"}},{"Kind":"ITagHelper","Name":"vary-by-culture","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCulture"}},{"Kind":"ITagHelper","Name":"expires-on","TypeName":"System.DateTimeOffset?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresOn"}},{"Kind":"ITagHelper","Name":"expires-after","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresAfter"}},{"Kind":"ITagHelper","Name":"expires-sliding","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresSliding"}},{"Kind":"ITagHelper","Name":"enabled","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Enabled"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.DistributedCacheTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.EnvironmentTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"environment","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"names","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Names"}},{"Kind":"ITagHelper","Name":"include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Include"}},{"Kind":"ITagHelper","Name":"exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Exclude"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.EnvironmentTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.FormActionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.FormActionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-antiforgery","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Antiforgery"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"method","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Method"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ImageTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]},{"Name":"src","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Src"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ImageTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"asp-format","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Format"}},{"Kind":"ITagHelper","Name":"type","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"InputTypeName"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Value"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"label","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.LinkTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-href-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-href-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-class","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-property","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-value","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"href","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Href"}},{"Kind":"ITagHelper","Name":"asp-href-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"HrefInclude"}},{"Kind":"ITagHelper","Name":"asp-href-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"HrefExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-href","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHref"}},{"Kind":"ITagHelper","Name":"asp-suppress-fallback-integrity","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SuppressFallbackIntegrity"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}},{"Kind":"ITagHelper","Name":"asp-fallback-href-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHrefInclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-href-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHrefExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-class","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestClass"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-property","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestProperty"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestValue"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.LinkTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"option","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Value"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"partial","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"name","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"model","TypeName":"System.Object","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Model"}},{"Kind":"ITagHelper","Name":"optional","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Optional"}},{"Kind":"ITagHelper","Name":"fallback-name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackName"}},{"Kind":"ITagHelper","Name":"view-data","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary","IsEnum":false,"IndexerNamePrefix":"view-data-","IndexerTypeName":"System.Object","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ViewData"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-src-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-src-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-test","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Src"}},{"Kind":"ITagHelper","Name":"asp-src-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SrcInclude"}},{"Kind":"ITagHelper","Name":"asp-src-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SrcExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrc"}},{"Kind":"ITagHelper","Name":"asp-suppress-fallback-integrity","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SuppressFallbackIntegrity"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}},{"Kind":"ITagHelper","Name":"asp-fallback-src-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrcInclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-src-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrcExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-test","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestExpression"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"select","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"select","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-items","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"asp-items","TypeName":"System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem>","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Items"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"textarea","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"span","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-validation-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-validation-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationSummaryTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"div","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-validation-summary","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-validation-summary","TypeName":"Microsoft.AspNetCore.Mvc.Rendering.ValidationSummary","IsEnum":true,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ValidationSummary"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationSummaryTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.SpaServices.Prerendering.PrerenderTagHelper","AssemblyName":"Microsoft.AspNetCore.SpaServices","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"*","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-prerender-module","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-prerender-module","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ModuleName"}},{"Kind":"ITagHelper","Name":"asp-prerender-export","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExportName"}},{"Kind":"ITagHelper","Name":"asp-prerender-data","TypeName":"System.Object","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"CustomDataParameter"}},{"Kind":"ITagHelper","Name":"asp-prerender-timeout","TypeName":"System.Int32","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"TimeoutMillisecondsParameter"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.SpaServices.Prerendering.PrerenderTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.BodyTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"body","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.BodyTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.HeadTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"head","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.HeadTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.Razor","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"*","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"itemid","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"applet","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"archive","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"area","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"audio","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"base","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"blockquote","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"formaction","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"del","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"embed","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"action","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"html","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"manifest","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"iframe","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"srcset","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"formaction","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"ins","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"href","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"menuitem","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"icon","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"object","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"archive","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"object","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"data","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"q","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"cite","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"source","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"source","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"srcset","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"track","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"video","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"src","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"video","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"poster","NameComparison":0,"Value":"~/","ValueComparison":2,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-host","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-protocol","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"a","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-protocol","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Protocol"}},{"Kind":"ITagHelper","Name":"asp-host","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Host"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.CacheTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"cache","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"priority","TypeName":"Microsoft.Extensions.Caching.Memory.CacheItemPriority?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Priority"}},{"Kind":"ITagHelper","Name":"vary-by","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryBy"}},{"Kind":"ITagHelper","Name":"vary-by-header","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByHeader"}},{"Kind":"ITagHelper","Name":"vary-by-query","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByQuery"}},{"Kind":"ITagHelper","Name":"vary-by-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByRoute"}},{"Kind":"ITagHelper","Name":"vary-by-cookie","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCookie"}},{"Kind":"ITagHelper","Name":"vary-by-user","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByUser"}},{"Kind":"ITagHelper","Name":"vary-by-culture","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCulture"}},{"Kind":"ITagHelper","Name":"expires-on","TypeName":"System.DateTimeOffset?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresOn"}},{"Kind":"ITagHelper","Name":"expires-after","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresAfter"}},{"Kind":"ITagHelper","Name":"expires-sliding","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresSliding"}},{"Kind":"ITagHelper","Name":"enabled","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Enabled"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.CacheTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.DistributedCacheTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"distributed-cache","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"name","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"vary-by","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryBy"}},{"Kind":"ITagHelper","Name":"vary-by-header","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByHeader"}},{"Kind":"ITagHelper","Name":"vary-by-query","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByQuery"}},{"Kind":"ITagHelper","Name":"vary-by-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByRoute"}},{"Kind":"ITagHelper","Name":"vary-by-cookie","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCookie"}},{"Kind":"ITagHelper","Name":"vary-by-user","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByUser"}},{"Kind":"ITagHelper","Name":"vary-by-culture","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"VaryByCulture"}},{"Kind":"ITagHelper","Name":"expires-on","TypeName":"System.DateTimeOffset?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresOn"}},{"Kind":"ITagHelper","Name":"expires-after","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresAfter"}},{"Kind":"ITagHelper","Name":"expires-sliding","TypeName":"System.TimeSpan?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExpiresSliding"}},{"Kind":"ITagHelper","Name":"enabled","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Enabled"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.DistributedCacheTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.EnvironmentTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"environment","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"names","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Names"}},{"Kind":"ITagHelper","Name":"include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Include"}},{"Kind":"ITagHelper","Name":"exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Exclude"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.EnvironmentTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.FormActionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"button","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"image","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-action","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-controller","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-area","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-page-handler","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-fragment","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-all-route-data","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"type","NameComparison":0,"Value":"submit","ValueComparison":1,"Diagnostics":[]},{"Name":"asp-route-","NameComparison":1,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.FormActionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-action","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Action"}},{"Kind":"ITagHelper","Name":"asp-controller","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Controller"}},{"Kind":"ITagHelper","Name":"asp-area","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Area"}},{"Kind":"ITagHelper","Name":"asp-page","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Page"}},{"Kind":"ITagHelper","Name":"asp-page-handler","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"PageHandler"}},{"Kind":"ITagHelper","Name":"asp-antiforgery","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Antiforgery"}},{"Kind":"ITagHelper","Name":"asp-fragment","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Fragment"}},{"Kind":"ITagHelper","Name":"asp-route","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Route"}},{"Kind":"ITagHelper","Name":"method","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Method"}},{"Kind":"ITagHelper","Name":"asp-all-route-data","TypeName":"System.Collections.Generic.IDictionary<System.String, System.String>","IsEnum":false,"IndexerNamePrefix":"asp-route-","IndexerTypeName":"System.String","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"RouteValues"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ImageTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"img","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]},{"Name":"src","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Src"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ImageTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"input","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"asp-format","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Format"}},{"Kind":"ITagHelper","Name":"type","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"InputTypeName"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Value"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"label","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.LinkTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-href-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-href-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-href-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-class","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-property","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-fallback-test-value","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"link","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"href","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Href"}},{"Kind":"ITagHelper","Name":"asp-href-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"HrefInclude"}},{"Kind":"ITagHelper","Name":"asp-href-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"HrefExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-href","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHref"}},{"Kind":"ITagHelper","Name":"asp-suppress-fallback-integrity","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SuppressFallbackIntegrity"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}},{"Kind":"ITagHelper","Name":"asp-fallback-href-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHrefInclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-href-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackHrefExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-class","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestClass"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-property","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestProperty"}},{"Kind":"ITagHelper","Name":"asp-fallback-test-value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestValue"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.LinkTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"option","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"value","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Value"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"partial","ParentTag":null,"TagStructure":2,"Attributes":[{"Name":"name","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}},{"Kind":"ITagHelper","Name":"for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"model","TypeName":"System.Object","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Model"}},{"Kind":"ITagHelper","Name":"optional","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Optional"}},{"Kind":"ITagHelper","Name":"fallback-name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackName"}},{"Kind":"ITagHelper","Name":"view-data","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary","IsEnum":false,"IndexerNamePrefix":"view-data-","IndexerTypeName":"System.Object","Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ViewData"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.PartialTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"form","ParentTag":null,"TagStructure":0,"Attributes":[],"Diagnostics":[]}],"BoundAttributes":[],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-src-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-src-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src-include","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-src-exclude","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-fallback-test","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"script","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-append-version","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Src"}},{"Kind":"ITagHelper","Name":"asp-src-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SrcInclude"}},{"Kind":"ITagHelper","Name":"asp-src-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SrcExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-src","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrc"}},{"Kind":"ITagHelper","Name":"asp-suppress-fallback-integrity","TypeName":"System.Boolean","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"SuppressFallbackIntegrity"}},{"Kind":"ITagHelper","Name":"asp-append-version","TypeName":"System.Boolean?","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"AppendVersion"}},{"Kind":"ITagHelper","Name":"asp-fallback-src-include","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrcInclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-src-exclude","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackSrcExclude"}},{"Kind":"ITagHelper","Name":"asp-fallback-test","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"FallbackTestExpression"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"select","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]},{"TagName":"select","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-items","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"asp-items","TypeName":"System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem>","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Items"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"textarea","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}},{"Kind":"ITagHelper","Name":"name","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"Name"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"span","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-validation-for","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-validation-for","TypeName":"Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"For"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationSummaryTagHelper","AssemblyName":"Microsoft.AspNetCore.Mvc.TagHelpers","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"div","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-validation-summary","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-validation-summary","TypeName":"Microsoft.AspNetCore.Mvc.Rendering.ValidationSummary","IsEnum":true,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ValidationSummary"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.Mvc.TagHelpers.ValidationSummaryTagHelper"}},{"Kind":"ITagHelper","Name":"Microsoft.AspNetCore.SpaServices.Prerendering.PrerenderTagHelper","AssemblyName":"Microsoft.AspNetCore.SpaServices","Documentation":null,"TagOutputHint":null,"TagMatchingRules":[{"TagName":"*","ParentTag":null,"TagStructure":0,"Attributes":[{"Name":"asp-prerender-module","NameComparison":0,"Value":null,"ValueComparison":0,"Diagnostics":[]}],"Diagnostics":[]}],"BoundAttributes":[{"Kind":"ITagHelper","Name":"asp-prerender-module","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ModuleName"}},{"Kind":"ITagHelper","Name":"asp-prerender-export","TypeName":"System.String","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"ExportName"}},{"Kind":"ITagHelper","Name":"asp-prerender-data","TypeName":"System.Object","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"CustomDataParameter"}},{"Kind":"ITagHelper","Name":"asp-prerender-timeout","TypeName":"System.Int32","IsEnum":false,"IndexerNamePrefix":null,"IndexerTypeName":null,"Documentation":null,"Diagnostics":[],"Metadata":{"Common.PropertyName":"TimeoutMillisecondsParameter"}}],"AllowedChildTags":[],"Diagnostics":[],"Metadata":{"Runtime.Name":"ITagHelper","Common.TypeName":"Microsoft.AspNetCore.SpaServices.Prerendering.PrerenderTagHelper"}}]
\ No newline at end of file
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\appsettings.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\Properties\launchSettings.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\TeamsManifest\manifest.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\IntermediatorBotSample.deps.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\IntermediatorBotSample.runtimeconfig.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\IntermediatorBotSample.runtimeconfig.dev.json
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\IntermediatorBotSample.dll
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\IntermediatorBotSample.pdb
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\IntermediatorBotSample.Views.dll
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\bin\Release\netcoreapp2.2\IntermediatorBotSample.Views.pdb
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.csprojAssemblyReference.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.Resources.Strings.resources
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.csproj.GenerateResource.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.AssemblyInfoInputs.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.AssemblyInfo.cs
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.csproj.CoreCompileInputs.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.RazorAssemblyInfo.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.RazorAssemblyInfo.cs
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.TagHelpers.input.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.TagHelpers.output.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.RazorCoreGenerate.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\Razor\Pages\Index.cshtml.g.cs
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.RazorTargetAssemblyInfo.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.RazorTargetAssemblyInfo.cs
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.Views.pdb
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.dll
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.pdb
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.genruntimeconfig.cache
E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\IntermediatorBotSample.csproj.CopyComplete
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<parameter name="IIS Web Application Name" description="" value="agent-hand-off-test" tags="IisApp">
<parameterEntry kind="ProviderPath" scope="IisApp" match="^E:\\ChatBots\\poc\\intermediator-bot-sample\\IntermediatorBotSample\\obj\\Release\\netcoreapp2\.2\\PubTmp\\Out\\$" />
</parameter>
</parameters>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
<IisApp path="E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\obj\Release\netcoreapp2.2\PubTmp\Out\" />
</sitemanifest>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"runtimeOptions": {
"tfm": "netcoreapp2.2",
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "2.2.0"
},
"configProperties": {
"System.GC.Server": true
}
}
}
\ No newline at end of file
{
"$schema": "https://statics.teams.microsoft.com/sdk/v1.2/manifest/MicrosoftTeams.schema.json",
"manifestVersion": "1.2",
"version": "0.0.1",
"id": "INSERT YOUR TEAMS APP ID HERE",
"packageName": "com.underscore.intermediator.bot.sample",
"developer": {
"name": "Tomi",
"websiteUrl": "https://github.com/tompaana/intermediator-bot-sample",
"privacyUrl": "https://github.com/tompaana/intermediator-bot-sample/README.md",
"termsOfUseUrl": "https://github.com/tompaana/intermediator-bot-sample/LICENSE"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Intermediator Bot",
"full": "Intermediator Bot Sample"
},
"description": {
"short": "Intermediator Bot Sample",
"full": "A sample bot, that routes messages between two users on different channels."
},
"accentColor": "#00FF00",
"configurableTabs": [
],
"staticTabs": [
],
"bots": [
{
"botId": "INSERT YOUR BOT'S MICROSOFT APP ID HERE",
"scopes": [
"personal",
"team"
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"*.azurewebsites.net"
]
}
\ No newline at end of file
{
"MicrosoftAppId": "",
"MicrosoftAppPassword": "",
"BotBasePath": "/api",
"BotMessagesPath": "/messages",
"AzureTableStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=azradlppb;AccountKey=VLhJjo77rwYnHWaeNh2UlEdswUypR0uWSTyLn6Hu9SWlAYtujHymXZxdFo9kuEK5WcpDwBySpOjizcqxd3hMHA==;EndpointSuffix=core.windows.net",
"RejectConnectionRequestIfNoAggregationChannel": true,
"PermittedAggregationChannels": "",
"NoDirectConversationsWithChannels": "emulator, facebook, skype, msteams, webchat"
}
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\IntermediatorBotSample.dll" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: c5442a0c-e1ab-4237-b069-097a470af818-->
\ No newline at end of file
#pragma checksum "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "62513363e2fb1c111ceec45dab9b820553d6df7a"
// <auto-generated/>
#pragma warning disable 1591
[assembly: global::Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute(typeof(AspNetCore.Pages_Index), @"mvc.1.0.razor-page", @"/Pages/Index.cshtml")]
[assembly:global::Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.RazorPageAttribute(@"/Pages/Index.cshtml", typeof(AspNetCore.Pages_Index), null)]
namespace AspNetCore
{
#line hidden
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
#line 2 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
using IntermediatorBotSample.Pages;
#line default
#line hidden
[global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute(@"SHA1", @"62513363e2fb1c111ceec45dab9b820553d6df7a", @"/Pages/Index.cshtml")]
public class Pages_Index : global::Microsoft.AspNetCore.Mvc.RazorPages.Page
{
#pragma warning disable 1998
public async override global::System.Threading.Tasks.Task ExecuteAsync()
{
BeginContext(71, 503, true);
WriteLiteral(@"
<h1>Intermediator Bot Sample</h1>
<p>
The purpose is to serve as a sample on how to implement the human hand-off.
Visit <a href=""https://github.com/tompaana/intermediator-bot-sample"">https://github.com/tompaana/intermediator-bot-sample</a> to learn more.
</p>
<p>The bot endpoint URL is: <a id=""botEndpointUrl"" /></p>
<script>
var botEndpointUrlLink = document.getElementById(""botEndpointUrl"");
botEndpointUrlLink.setAttribute('href', location.protocol + ""//"" + location.host + """);
EndContext();
BeginContext(575, 21, false);
#line 18 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
Write(Model.BotEndpointPath);
#line default
#line hidden
EndContext();
BeginContext(596, 84, true);
WriteLiteral("\");\r\n botEndpointUrlLink.innerHTML = location.protocol + \"//\" + location.host + \"");
EndContext();
BeginContext(681, 21, false);
#line 19 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
Write(Model.BotEndpointPath);
#line default
#line hidden
EndContext();
BeginContext(702, 232, true);
WriteLiteral("\";\r\n</script>\r\n\r\n<p>The bot credentials are:</p>\r\n<ul>\r\n <li id=\"botAppId\" />\r\n <li id=\"botAppPassword\" />\r\n</ul>\r\n\r\n<script>\r\n var botAppIdItem = document.getElementById(\"botAppId\");\r\n botAppIdItem.innerHTML = \"App ID: ");
EndContext();
BeginContext(935, 14, false);
#line 30 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
Write(Model.BotAppId);
#line default
#line hidden
EndContext();
BeginContext(949, 127, true);
WriteLiteral("\";\r\n var botAppPasswordItem = document.getElementById(\"botAppPassword\");\r\n botAppPasswordItem.innerHTML = \"App password: ");
EndContext();
BeginContext(1077, 20, false);
#line 32 "E:\ChatBots\poc\intermediator-bot-sample\IntermediatorBotSample\Pages\Index.cshtml"
Write(Model.BotAppPassword);
#line default
#line hidden
EndContext();
BeginContext(1097, 15, true);
WriteLiteral("\";\r\n</script>\r\n");
EndContext();
}
#pragma warning restore 1998
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.IUrlHelper Url { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.IViewComponentHelper Component { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper<IndexModel> Html { get; private set; }
public global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<IndexModel> ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<IndexModel>)PageContext?.ViewData;
public IndexModel Model => ViewData.Model;
}
}
#pragma warning restore 1591
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"version": 2,
"dgSpecHash": "x2n85Il9GKMblwIdr+WC3mzIy6kSx3xDGde0VK05gFuuOlZlKYovuXlez3ieaG8PuJw4c27sYW/oHaSpA11b8g==",
"success": true,
"projectFilePath": "E:\\ChatBots\\poc\\intermediator-bot-sample\\IntermediatorBotSample\\IntermediatorBotSample.csproj",
"expectedPackageFiles": [
"C:\\Users\\Admin\\.nuget\\packages\\azure.core\\1.4.1\\azure.core.1.4.1.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\azure.storage.blobs\\12.6.0\\azure.storage.blobs.12.6.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\azure.storage.common\\12.5.2\\azure.storage.common.12.5.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\botmessagerouting\\2.0.2-alpha\\botmessagerouting.2.0.2-alpha.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnet.webapi.client\\5.2.6\\microsoft.aspnet.webapi.client.5.2.6.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore\\2.2.0\\microsoft.aspnetcore.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.antiforgery\\2.2.0\\microsoft.aspnetcore.antiforgery.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.app\\2.2.0\\microsoft.aspnetcore.app.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication\\2.2.0\\microsoft.aspnetcore.authentication.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.abstractions\\2.2.0\\microsoft.aspnetcore.authentication.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.cookies\\2.2.0\\microsoft.aspnetcore.authentication.cookies.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.core\\2.2.0\\microsoft.aspnetcore.authentication.core.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.facebook\\2.2.0\\microsoft.aspnetcore.authentication.facebook.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.google\\2.2.0\\microsoft.aspnetcore.authentication.google.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\2.2.0\\microsoft.aspnetcore.authentication.jwtbearer.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.microsoftaccount\\2.2.0\\microsoft.aspnetcore.authentication.microsoftaccount.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.oauth\\2.2.0\\microsoft.aspnetcore.authentication.oauth.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.openidconnect\\2.2.0\\microsoft.aspnetcore.authentication.openidconnect.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.twitter\\2.2.0\\microsoft.aspnetcore.authentication.twitter.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authentication.wsfederation\\2.2.0\\microsoft.aspnetcore.authentication.wsfederation.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authorization\\2.2.0\\microsoft.aspnetcore.authorization.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.authorization.policy\\2.2.0\\microsoft.aspnetcore.authorization.policy.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.connections.abstractions\\2.2.0\\microsoft.aspnetcore.connections.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.cookiepolicy\\2.2.0\\microsoft.aspnetcore.cookiepolicy.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.cors\\2.2.0\\microsoft.aspnetcore.cors.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.cryptography.internal\\2.2.0\\microsoft.aspnetcore.cryptography.internal.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.cryptography.keyderivation\\2.2.0\\microsoft.aspnetcore.cryptography.keyderivation.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.dataprotection\\2.2.0\\microsoft.aspnetcore.dataprotection.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.dataprotection.abstractions\\2.2.0\\microsoft.aspnetcore.dataprotection.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.dataprotection.extensions\\2.2.0\\microsoft.aspnetcore.dataprotection.extensions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.diagnostics\\2.2.0\\microsoft.aspnetcore.diagnostics.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.diagnostics.abstractions\\2.2.0\\microsoft.aspnetcore.diagnostics.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.diagnostics.entityframeworkcore\\2.2.0\\microsoft.aspnetcore.diagnostics.entityframeworkcore.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.diagnostics.healthchecks\\2.2.0\\microsoft.aspnetcore.diagnostics.healthchecks.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.hostfiltering\\2.2.0\\microsoft.aspnetcore.hostfiltering.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.hosting\\2.2.0\\microsoft.aspnetcore.hosting.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.hosting.abstractions\\2.2.0\\microsoft.aspnetcore.hosting.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.hosting.server.abstractions\\2.2.0\\microsoft.aspnetcore.hosting.server.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.html.abstractions\\2.2.0\\microsoft.aspnetcore.html.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.http\\2.2.0\\microsoft.aspnetcore.http.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.http.abstractions\\2.2.0\\microsoft.aspnetcore.http.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.http.connections\\1.1.0\\microsoft.aspnetcore.http.connections.1.1.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.http.connections.common\\1.1.0\\microsoft.aspnetcore.http.connections.common.1.1.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.http.extensions\\2.2.0\\microsoft.aspnetcore.http.extensions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.http.features\\2.2.0\\microsoft.aspnetcore.http.features.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.httpoverrides\\2.2.0\\microsoft.aspnetcore.httpoverrides.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.httpspolicy\\2.2.0\\microsoft.aspnetcore.httpspolicy.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.identity\\2.2.0\\microsoft.aspnetcore.identity.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.identity.entityframeworkcore\\2.2.0\\microsoft.aspnetcore.identity.entityframeworkcore.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.identity.ui\\2.2.0\\microsoft.aspnetcore.identity.ui.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.jsonpatch\\2.2.0\\microsoft.aspnetcore.jsonpatch.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.localization\\2.2.0\\microsoft.aspnetcore.localization.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.localization.routing\\2.2.0\\microsoft.aspnetcore.localization.routing.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.middlewareanalysis\\2.2.0\\microsoft.aspnetcore.middlewareanalysis.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc\\2.2.0\\microsoft.aspnetcore.mvc.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.abstractions\\2.2.0\\microsoft.aspnetcore.mvc.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.analyzers\\2.2.0\\microsoft.aspnetcore.mvc.analyzers.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.apiexplorer\\2.2.0\\microsoft.aspnetcore.mvc.apiexplorer.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.core\\2.2.0\\microsoft.aspnetcore.mvc.core.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.cors\\2.2.0\\microsoft.aspnetcore.mvc.cors.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.dataannotations\\2.2.0\\microsoft.aspnetcore.mvc.dataannotations.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.formatters.json\\2.2.0\\microsoft.aspnetcore.mvc.formatters.json.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.formatters.xml\\2.2.0\\microsoft.aspnetcore.mvc.formatters.xml.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.localization\\2.2.0\\microsoft.aspnetcore.mvc.localization.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.razor\\2.2.0\\microsoft.aspnetcore.mvc.razor.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.razor.extensions\\2.2.0\\microsoft.aspnetcore.mvc.razor.extensions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.razor.viewcompilation\\2.2.0\\microsoft.aspnetcore.mvc.razor.viewcompilation.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.razorpages\\2.2.0\\microsoft.aspnetcore.mvc.razorpages.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.taghelpers\\2.2.0\\microsoft.aspnetcore.mvc.taghelpers.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.mvc.viewfeatures\\2.2.0\\microsoft.aspnetcore.mvc.viewfeatures.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.nodeservices\\2.2.0\\microsoft.aspnetcore.nodeservices.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.owin\\2.2.0\\microsoft.aspnetcore.owin.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.razor\\2.2.0\\microsoft.aspnetcore.razor.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.razor.design\\2.2.0\\microsoft.aspnetcore.razor.design.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.razor.language\\2.2.0\\microsoft.aspnetcore.razor.language.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.razor.runtime\\2.2.0\\microsoft.aspnetcore.razor.runtime.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.responsecaching\\2.2.0\\microsoft.aspnetcore.responsecaching.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.responsecaching.abstractions\\2.2.0\\microsoft.aspnetcore.responsecaching.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.responsecompression\\2.2.0\\microsoft.aspnetcore.responsecompression.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.rewrite\\2.2.0\\microsoft.aspnetcore.rewrite.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.routing\\2.2.0\\microsoft.aspnetcore.routing.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.routing.abstractions\\2.2.0\\microsoft.aspnetcore.routing.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.server.httpsys\\2.2.0\\microsoft.aspnetcore.server.httpsys.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.server.iis\\2.2.0\\microsoft.aspnetcore.server.iis.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.server.iisintegration\\2.2.0\\microsoft.aspnetcore.server.iisintegration.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.server.kestrel\\2.2.0\\microsoft.aspnetcore.server.kestrel.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.server.kestrel.core\\2.2.0\\microsoft.aspnetcore.server.kestrel.core.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.server.kestrel.https\\2.2.0\\microsoft.aspnetcore.server.kestrel.https.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.server.kestrel.transport.abstractions\\2.2.0\\microsoft.aspnetcore.server.kestrel.transport.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.server.kestrel.transport.sockets\\2.2.0\\microsoft.aspnetcore.server.kestrel.transport.sockets.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.session\\2.2.0\\microsoft.aspnetcore.session.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.signalr\\1.1.0\\microsoft.aspnetcore.signalr.1.1.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.signalr.common\\1.1.0\\microsoft.aspnetcore.signalr.common.1.1.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.signalr.core\\1.1.0\\microsoft.aspnetcore.signalr.core.1.1.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.signalr.protocols.json\\1.1.0\\microsoft.aspnetcore.signalr.protocols.json.1.1.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.spaservices\\2.2.0\\microsoft.aspnetcore.spaservices.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.spaservices.extensions\\2.2.0\\microsoft.aspnetcore.spaservices.extensions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.staticfiles\\2.2.0\\microsoft.aspnetcore.staticfiles.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.websockets\\2.2.0\\microsoft.aspnetcore.websockets.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.aspnetcore.webutilities\\2.2.0\\microsoft.aspnetcore.webutilities.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\1.0.0\\microsoft.bcl.asyncinterfaces.1.0.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.bot.builder\\4.2.2\\microsoft.bot.builder.4.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.bot.builder.integration.aspnet.core\\4.2.2\\microsoft.bot.builder.integration.aspnet.core.4.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.bot.configuration\\4.2.2\\microsoft.bot.configuration.4.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.bot.connector\\4.2.2\\microsoft.bot.connector.4.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.bot.schema\\4.2.2\\microsoft.bot.schema.4.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\1.1.0\\microsoft.codeanalysis.analyzers.1.1.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.codeanalysis.common\\2.8.0\\microsoft.codeanalysis.common.2.8.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.codeanalysis.csharp\\2.8.0\\microsoft.codeanalysis.csharp.2.8.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\2.8.0\\microsoft.codeanalysis.csharp.workspaces.2.8.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.codeanalysis.razor\\2.2.0\\microsoft.codeanalysis.razor.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\2.8.0\\microsoft.codeanalysis.workspaces.common.2.8.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.csharp\\4.5.0\\microsoft.csharp.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.dotnet.platformabstractions\\2.1.0\\microsoft.dotnet.platformabstractions.2.1.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.entityframeworkcore\\2.2.0\\microsoft.entityframeworkcore.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\2.2.0\\microsoft.entityframeworkcore.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\2.2.0\\microsoft.entityframeworkcore.analyzers.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.entityframeworkcore.design\\2.2.0\\microsoft.entityframeworkcore.design.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.entityframeworkcore.inmemory\\2.2.0\\microsoft.entityframeworkcore.inmemory.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\2.2.0\\microsoft.entityframeworkcore.relational.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.entityframeworkcore.sqlserver\\2.2.0\\microsoft.entityframeworkcore.sqlserver.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.entityframeworkcore.tools\\2.2.0\\microsoft.entityframeworkcore.tools.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\2.2.0\\microsoft.extensions.caching.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.caching.memory\\2.2.0\\microsoft.extensions.caching.memory.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.caching.sqlserver\\2.2.0\\microsoft.extensions.caching.sqlserver.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration\\2.2.0\\microsoft.extensions.configuration.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\2.2.0\\microsoft.extensions.configuration.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.binder\\2.2.0\\microsoft.extensions.configuration.binder.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.commandline\\2.2.0\\microsoft.extensions.configuration.commandline.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.environmentvariables\\2.2.0\\microsoft.extensions.configuration.environmentvariables.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\2.2.0\\microsoft.extensions.configuration.fileextensions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.ini\\2.2.0\\microsoft.extensions.configuration.ini.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.json\\2.2.0\\microsoft.extensions.configuration.json.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.keyperfile\\2.2.0\\microsoft.extensions.configuration.keyperfile.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.usersecrets\\2.2.0\\microsoft.extensions.configuration.usersecrets.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.configuration.xml\\2.2.0\\microsoft.extensions.configuration.xml.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\2.2.0\\microsoft.extensions.dependencyinjection.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\2.2.0\\microsoft.extensions.dependencyinjection.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.dependencymodel\\2.1.0\\microsoft.extensions.dependencymodel.2.1.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.diagnosticadapter\\2.2.0\\microsoft.extensions.diagnosticadapter.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.diagnostics.healthchecks\\2.2.0\\microsoft.extensions.diagnostics.healthchecks.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.diagnostics.healthchecks.abstractions\\2.2.0\\microsoft.extensions.diagnostics.healthchecks.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\2.2.0\\microsoft.extensions.fileproviders.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.fileproviders.composite\\2.2.0\\microsoft.extensions.fileproviders.composite.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.fileproviders.embedded\\2.2.0\\microsoft.extensions.fileproviders.embedded.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\2.2.0\\microsoft.extensions.fileproviders.physical.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\2.2.0\\microsoft.extensions.filesystemglobbing.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.hosting\\2.2.0\\microsoft.extensions.hosting.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\2.2.0\\microsoft.extensions.hosting.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.http\\2.2.0\\microsoft.extensions.http.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.identity.core\\2.2.0\\microsoft.extensions.identity.core.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.identity.stores\\2.2.0\\microsoft.extensions.identity.stores.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.localization\\2.2.0\\microsoft.extensions.localization.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.localization.abstractions\\2.2.0\\microsoft.extensions.localization.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.logging\\2.2.0\\microsoft.extensions.logging.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\2.2.0\\microsoft.extensions.logging.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.logging.azureappservices\\2.2.0\\microsoft.extensions.logging.azureappservices.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.logging.configuration\\2.2.0\\microsoft.extensions.logging.configuration.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.logging.console\\2.2.0\\microsoft.extensions.logging.console.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.logging.debug\\2.2.0\\microsoft.extensions.logging.debug.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.logging.eventsource\\2.2.0\\microsoft.extensions.logging.eventsource.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.logging.tracesource\\2.2.0\\microsoft.extensions.logging.tracesource.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.objectpool\\2.2.0\\microsoft.extensions.objectpool.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.options\\2.2.0\\microsoft.extensions.options.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\2.2.0\\microsoft.extensions.options.configurationextensions.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.options.dataannotations\\2.2.0\\microsoft.extensions.options.dataannotations.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.primitives\\2.2.0\\microsoft.extensions.primitives.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.extensions.webencoders\\2.2.0\\microsoft.extensions.webencoders.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.identitymodel.clients.activedirectory\\4.5.0\\microsoft.identitymodel.clients.activedirectory.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\5.3.0\\microsoft.identitymodel.jsonwebtokens.5.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.identitymodel.logging\\5.3.0\\microsoft.identitymodel.logging.5.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.identitymodel.protocols\\5.3.0\\microsoft.identitymodel.protocols.5.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\5.3.0\\microsoft.identitymodel.protocols.openidconnect.5.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.identitymodel.protocols.wsfederation\\5.3.0\\microsoft.identitymodel.protocols.wsfederation.5.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.identitymodel.tokens\\5.3.0\\microsoft.identitymodel.tokens.5.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.identitymodel.tokens.saml\\5.3.0\\microsoft.identitymodel.tokens.saml.5.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.identitymodel.xml\\5.3.0\\microsoft.identitymodel.xml.5.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.net.http.headers\\2.2.0\\microsoft.net.http.headers.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.netcore.app\\2.2.0\\microsoft.netcore.app.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.netcore.dotnetapphost\\2.2.0\\microsoft.netcore.dotnetapphost.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.netcore.dotnethostpolicy\\2.2.0\\microsoft.netcore.dotnethostpolicy.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.netcore.dotnethostresolver\\2.2.0\\microsoft.netcore.dotnethostresolver.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.netcore.platforms\\2.2.0\\microsoft.netcore.platforms.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.netcore.targets\\2.0.0\\microsoft.netcore.targets.2.0.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.rest.clientruntime\\2.3.13\\microsoft.rest.clientruntime.2.3.13.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.visualstudio.web.codegeneration\\2.2.2\\microsoft.visualstudio.web.codegeneration.2.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.visualstudio.web.codegeneration.contracts\\2.2.2\\microsoft.visualstudio.web.codegeneration.contracts.2.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.visualstudio.web.codegeneration.core\\2.2.2\\microsoft.visualstudio.web.codegeneration.core.2.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.visualstudio.web.codegeneration.design\\2.2.2\\microsoft.visualstudio.web.codegeneration.design.2.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.visualstudio.web.codegeneration.entityframeworkcore\\2.2.2\\microsoft.visualstudio.web.codegeneration.entityframeworkcore.2.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.visualstudio.web.codegeneration.templating\\2.2.2\\microsoft.visualstudio.web.codegeneration.templating.2.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.visualstudio.web.codegeneration.utils\\2.2.2\\microsoft.visualstudio.web.codegeneration.utils.2.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.visualstudio.web.codegenerators.mvc\\2.2.2\\microsoft.visualstudio.web.codegenerators.mvc.2.2.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\microsoft.win32.registry\\4.5.0\\microsoft.win32.registry.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\netstandard.library\\2.0.3\\netstandard.library.2.0.3.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\newtonsoft.json\\11.0.2\\newtonsoft.json.11.0.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\newtonsoft.json.bson\\1.0.1\\newtonsoft.json.bson.1.0.1.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\nuget.frameworks\\4.7.0\\nuget.frameworks.4.7.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\remotion.linq\\2.2.0\\remotion.linq.2.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\restsharp\\106.11.4\\restsharp.106.11.4.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.native.system\\4.3.0\\runtime.native.system.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.native.system.data.sqlclient.sni\\4.5.0\\runtime.native.system.data.sqlclient.sni.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.native.system.io.compression\\4.3.0\\runtime.native.system.io.compression.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.native.system.net.http\\4.3.0\\runtime.native.system.net.http.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.win-x64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\runtime.win-x86.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\sourcelink.create.commandline\\2.8.1\\sourcelink.create.commandline.2.8.1.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.appcontext\\4.3.0\\system.appcontext.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.buffers\\4.5.0\\system.buffers.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.collections.concurrent\\4.3.0\\system.collections.concurrent.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.collections.immutable\\1.5.0\\system.collections.immutable.1.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.collections.nongeneric\\4.3.0\\system.collections.nongeneric.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.collections.specialized\\4.3.0\\system.collections.specialized.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.componentmodel.annotations\\4.5.0\\system.componentmodel.annotations.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.composition\\1.0.31\\system.composition.1.0.31.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.composition.attributedmodel\\1.0.31\\system.composition.attributedmodel.1.0.31.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.composition.convention\\1.0.31\\system.composition.convention.1.0.31.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.composition.hosting\\1.0.31\\system.composition.hosting.1.0.31.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.composition.runtime\\1.0.31\\system.composition.runtime.1.0.31.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.composition.typedparts\\1.0.31\\system.composition.typedparts.1.0.31.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.console\\4.3.0\\system.console.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.data.sqlclient\\4.6.0\\system.data.sqlclient.4.6.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.diagnostics.contracts\\4.3.0\\system.diagnostics.contracts.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.diagnostics.diagnosticsource\\4.6.0\\system.diagnostics.diagnosticsource.4.6.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.diagnostics.fileversioninfo\\4.3.0\\system.diagnostics.fileversioninfo.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.diagnostics.stacktrace\\4.3.0\\system.diagnostics.stacktrace.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.diagnostics.tools\\4.3.0\\system.diagnostics.tools.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.dynamic.runtime\\4.3.0\\system.dynamic.runtime.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.globalization.calendars\\4.3.0\\system.globalization.calendars.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.globalization.extensions\\4.3.0\\system.globalization.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.identitymodel.tokens.jwt\\5.3.0\\system.identitymodel.tokens.jwt.5.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.interactive.async\\3.2.0\\system.interactive.async.3.2.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.io.compression\\4.3.0\\system.io.compression.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.io.filesystem\\4.3.0\\system.io.filesystem.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.io.filesystem.primitives\\4.3.0\\system.io.filesystem.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.io.pipelines\\4.5.2\\system.io.pipelines.4.5.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.linq\\4.3.0\\system.linq.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.linq.expressions\\4.3.0\\system.linq.expressions.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.linq.parallel\\4.3.0\\system.linq.parallel.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.linq.queryable\\4.0.1\\system.linq.queryable.4.0.1.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.net.http\\4.3.0\\system.net.http.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.net.primitives\\4.3.0\\system.net.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.net.websockets.websocketprotocol\\4.5.1\\system.net.websockets.websocketprotocol.4.5.1.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.objectmodel\\4.3.0\\system.objectmodel.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.private.datacontractserialization\\4.3.0\\system.private.datacontractserialization.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.reflection.emit\\4.3.0\\system.reflection.emit.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.reflection.emit.ilgeneration\\4.3.0\\system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.reflection.emit.lightweight\\4.3.0\\system.reflection.emit.lightweight.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.reflection.extensions\\4.3.0\\system.reflection.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.reflection.metadata\\1.6.0\\system.reflection.metadata.1.6.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.reflection.typeextensions\\4.3.0\\system.reflection.typeextensions.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\4.6.0\\system.runtime.compilerservices.unsafe.4.6.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.3.0\\system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime.numerics\\4.3.0\\system.runtime.numerics.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime.serialization.json\\4.3.0\\system.runtime.serialization.json.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime.serialization.primitives\\4.3.0\\system.runtime.serialization.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.runtime.serialization.xml\\4.3.0\\system.runtime.serialization.xml.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.accesscontrol\\4.5.0\\system.security.accesscontrol.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.claims\\4.3.0\\system.security.claims.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.cryptography.algorithms\\4.3.0\\system.security.cryptography.algorithms.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.cryptography.cng\\4.5.0\\system.security.cryptography.cng.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.cryptography.csp\\4.3.0\\system.security.cryptography.csp.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.cryptography.encoding\\4.3.0\\system.security.cryptography.encoding.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.cryptography.openssl\\4.3.0\\system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.cryptography.pkcs\\4.5.0\\system.security.cryptography.pkcs.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.cryptography.primitives\\4.3.0\\system.security.cryptography.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.cryptography.x509certificates\\4.3.0\\system.security.cryptography.x509certificates.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.cryptography.xml\\4.5.0\\system.security.cryptography.xml.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.permissions\\4.5.0\\system.security.permissions.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.principal\\4.3.0\\system.security.principal.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.principal.windows\\4.5.0\\system.security.principal.windows.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.security.securestring\\4.3.0\\system.security.securestring.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.text.encoding.codepages\\4.5.0\\system.text.encoding.codepages.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.text.encoding.extensions\\4.3.0\\system.text.encoding.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.text.encodings.web\\4.6.0\\system.text.encodings.web.4.6.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.text.json\\4.6.0\\system.text.json.4.6.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.text.regularexpressions\\4.3.0\\system.text.regularexpressions.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.threading.channels\\4.5.0\\system.threading.channels.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.2\\system.threading.tasks.extensions.4.5.2.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.threading.tasks.parallel\\4.3.0\\system.threading.tasks.parallel.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.threading.thread\\4.3.0\\system.threading.thread.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.valuetuple\\4.5.0\\system.valuetuple.4.5.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.xml.readerwriter\\4.3.0\\system.xml.readerwriter.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.xml.xdocument\\4.3.0\\system.xml.xdocument.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.xml.xmldocument\\4.3.0\\system.xml.xmldocument.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.xml.xmlserializer\\4.3.0\\system.xml.xmlserializer.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.xml.xpath\\4.3.0\\system.xml.xpath.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\system.xml.xpath.xdocument\\4.3.0\\system.xml.xpath.xdocument.4.3.0.nupkg.sha512",
"C:\\Users\\Admin\\.nuget\\packages\\windowsazure.storage\\9.3.3\\windowsazure.storage.9.3.3.nupkg.sha512"
],
"logs": []
}
\ No newline at end of file
MIT License
Copyright (c) 2016-2019 Microsoft
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
\ No newline at end of file
version: 1.9.{build}
image: Visual Studio 2017
configuration: Release
platform: Any CPU
before_build:
- cmd: dotnet --version
- cmd: nuget restore
build:
verbosity: minimal
test:
assemblies:
only:
- '**\*.Tests.dll'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment