cdk-iam-floyd
Version:
AWS IAM policy statement generator with fluent interface for AWS CDK
404 lines • 36.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Support = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [support](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssupport.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Support extends shared_1.PolicyStatement {
/**
* Grants permission to add one or more attachments to an AWS Support case
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_AddAttachmentsToSet.html
*/
toAddAttachmentsToSet() {
return this.to('AddAttachmentsToSet');
}
/**
* Grants permission to add a customer communication to an AWS Support case
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_AddCommunicationToCase.html
*/
toAddCommunicationToCase() {
return this.to('AddCommunicationToCase');
}
/**
* Grants permission to creates a new AWS Support case
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_CreateCase.html
*/
toCreateCase() {
return this.to('CreateCase');
}
/**
* Grants permission to describe attachment detail
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeAttachment.html
*/
toDescribeAttachment() {
return this.to('DescribeAttachment');
}
/**
* Grants permission to allow secondary services to read AWS Support case attributes.This is an internally managed function
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toDescribeCaseAttributes() {
return this.to('DescribeCaseAttributes');
}
/**
* Grants permission to describe the available options for a single AWS Support case. This is an internally managed function
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeCaseOptions.html
*/
toDescribeCaseOptions() {
return this.to('DescribeCaseOptions');
}
/**
* Grants permission to list AWS Support cases that matches the given inputs
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeCases.html
*/
toDescribeCases() {
return this.to('DescribeCases');
}
/**
* Grants permission to get a single communication and attachments for a single AWS Support case
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toDescribeCommunication() {
return this.to('DescribeCommunication');
}
/**
* Grants permission to list the communications and attachments for one or more AWS Support cases
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeCommunications.html
*/
toDescribeCommunications() {
return this.to('DescribeCommunications');
}
/**
* Grants permission to describes the available options for creating a support case
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeCreateCaseOptions.html
*/
toDescribeCreateCaseOptions() {
return this.to('DescribeCreateCaseOptions');
}
/**
* Grants permission to return issue types for AWS Support cases
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toDescribeIssueTypes() {
return this.to('DescribeIssueTypes');
}
/**
* Grants permission to list AWS services and categories that applies to each service
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeServices.html
*/
toDescribeServices() {
return this.to('DescribeServices');
}
/**
* Grants permission to list severity levels that can be assigned to an AWS Support case
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeSeverityLevels.html
*/
toDescribeSeverityLevels() {
return this.to('DescribeSeverityLevels');
}
/**
* Grants permission to return the support level for an AWS Account identifier
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toDescribeSupportLevel() {
return this.to('DescribeSupportLevel');
}
/**
* Grants permission to describes the available support languages for a given category code, service code and issue type
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeSupportedLanguages.html
*/
toDescribeSupportedLanguages() {
return this.to('DescribeSupportedLanguages');
}
/**
* Grants permission to get the status of a Trusted Advisor refresh check based on a list of check identifiers
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckRefreshStatuses.html
*/
toDescribeTrustedAdvisorCheckRefreshStatuses() {
return this.to('DescribeTrustedAdvisorCheckRefreshStatuses');
}
/**
* Grants permission to get the results of the Trusted Advisor check that has the specified check identifier
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckResult.html
*/
toDescribeTrustedAdvisorCheckResult() {
return this.to('DescribeTrustedAdvisorCheckResult');
}
/**
* Grants permission to get the summaries of the results of the Trusted Advisor checks that have the specified check identifiers
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckSummaries.html
*/
toDescribeTrustedAdvisorCheckSummaries() {
return this.to('DescribeTrustedAdvisorCheckSummaries');
}
/**
* Grants permission to get a list of all available Trusted Advisor checks, including name, identifier, category and description
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorChecks.html
*/
toDescribeTrustedAdvisorChecks() {
return this.to('DescribeTrustedAdvisorChecks');
}
/**
* Grants permission to retrieve personalized troubleshooting assistance for account and technical issues for a specific interaction
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_GetInteraction.html
*/
toGetInteraction() {
return this.to('GetInteraction');
}
/**
* Grants permission to initiate a call on AWS Support Center. This is an internally managed function
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toInitiateCallForCase() {
return this.to('InitiateCallForCase');
}
/**
* Grants permission to initiate a chat on AWS Support Center.This is an internally managed function
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toInitiateChatForCase() {
return this.to('InitiateChatForCase');
}
/**
* Grants permission to initiate a live contact on AWS Support Center. This is an internally managed function
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toInitiateLiveContactForCase() {
return this.to('InitiateLiveContactForCase');
}
/**
* Grants permission to retrieve a list of entries within a specific interaction, including messages, status updates, or other relevant data points
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toListInteractionEntries() {
return this.to('ListInteractionEntries');
}
/**
* Grants permission to retrieve a list of interactions, potentially with filters or pagination
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toListInteractions() {
return this.to('ListInteractions');
}
/**
* Grants permission to allow secondary services to attach attributes to AWS Support cases. This is an internally managed function
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toPutCaseAttributes() {
return this.to('PutCaseAttributes');
}
/**
* Grants permission to rate an AWS Support case communication
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toRateCaseCommunication() {
return this.to('RateCaseCommunication');
}
/**
* Grants permission to requests a refresh of the Trusted Advisor check that has the specified check identifier
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_RefreshTrustedAdvisorCheck.html
*/
toRefreshTrustedAdvisorCheck() {
return this.to('RefreshTrustedAdvisorCheck');
}
/**
* Grants permission to resolve an AWS Support case
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_ResolveCase.html
*/
toResolveCase() {
return this.to('ResolveCase');
}
/**
* Grants permission to mark a specific interaction as resolved by its unique identifier, indicating that the issue has been addressed and no further action is needed
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toResolveInteraction() {
return this.to('ResolveInteraction');
}
/**
* Grants permission to return a list of AWS Support cases that matches the given inputs
*
* Access Level: Read
*
* https://docs.aws.amazon.com/awssupport/latest/user/accessing-support.html
*/
toSearchForCases() {
return this.to('SearchForCases');
}
/**
* Grants permission to start a specific interaction to receive personalized troubleshooting assistance for account and technical issues
*
* Access Level: Write
*
* Dependent actions:
* - support:DescribeSupportLevel
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_StartInteraction.html
*/
toStartInteraction() {
return this.to('StartInteraction');
}
/**
* Grants permission to update the severity for a single AWS Support case. This is an internally managed function
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_UpdateCaseSeverity.html
*/
toUpdateCaseSeverity() {
return this.to('UpdateCaseSeverity');
}
/**
* Grants permission to update a specific interaction to receive personalized troubleshooting assistance for account and technical issues
*
* Access Level: Write
*
* https://docs.aws.amazon.com/awssupport/latest/APIReference/API_UpdateInteraction.html
*/
toUpdateInteraction() {
return this.to('UpdateInteraction');
}
/**
* Statement provider for service [support](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssupport.html).
*
*/
constructor(props) {
super(props);
this.servicePrefix = 'support';
this.accessLevelList = {
Write: [
'AddAttachmentsToSet',
'AddCommunicationToCase',
'CreateCase',
'InitiateCallForCase',
'InitiateChatForCase',
'InitiateLiveContactForCase',
'PutCaseAttributes',
'RateCaseCommunication',
'RefreshTrustedAdvisorCheck',
'ResolveCase',
'ResolveInteraction',
'StartInteraction',
'UpdateCaseSeverity',
'UpdateInteraction'
],
Read: [
'DescribeAttachment',
'DescribeCaseAttributes',
'DescribeCaseOptions',
'DescribeCases',
'DescribeCommunication',
'DescribeCommunications',
'DescribeCreateCaseOptions',
'DescribeIssueTypes',
'DescribeServices',
'DescribeSeverityLevels',
'DescribeSupportLevel',
'DescribeSupportedLanguages',
'DescribeTrustedAdvisorCheckRefreshStatuses',
'DescribeTrustedAdvisorCheckResult',
'DescribeTrustedAdvisorCheckSummaries',
'DescribeTrustedAdvisorChecks',
'GetInteraction',
'ListInteractionEntries',
'ListInteractions',
'SearchForCases'
]
};
}
}
exports.Support = Support;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN1cHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQStDO0FBRy9DOzs7O0dBSUc7QUFDSCxNQUFhLE9BQVEsU0FBUSx3QkFBZTtJQUcxQzs7Ozs7O09BTUc7SUFDSSxxQkFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHdCQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG9CQUFvQjtRQUN6QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksd0JBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxxQkFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHdCQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksMkJBQTJCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxvQkFBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksd0JBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDRCQUE0QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksNENBQTRDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxtQ0FBbUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHNDQUFzQztRQUMzQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksOEJBQThCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0kscUJBQXFCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSw0QkFBNEI7UUFDakMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHdCQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHVCQUF1QjtRQUM1QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksNEJBQTRCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQTJDRDs7O09BR0c7SUFDSCxZQUFZLEtBQWdDO1FBQzFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQXphUixrQkFBYSxHQUFHLFNBQVMsQ0FBQztRQTJYdkIsb0JBQWUsR0FBb0I7WUFDM0MsS0FBSyxFQUFFO2dCQUNMLHFCQUFxQjtnQkFDckIsd0JBQXdCO2dCQUN4QixZQUFZO2dCQUNaLHFCQUFxQjtnQkFDckIscUJBQXFCO2dCQUNyQiw0QkFBNEI7Z0JBQzVCLG1CQUFtQjtnQkFDbkIsdUJBQXVCO2dCQUN2Qiw0QkFBNEI7Z0JBQzVCLGFBQWE7Z0JBQ2Isb0JBQW9CO2dCQUNwQixrQkFBa0I7Z0JBQ2xCLG9CQUFvQjtnQkFDcEIsbUJBQW1CO2FBQ3BCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLG9CQUFvQjtnQkFDcEIsd0JBQXdCO2dCQUN4QixxQkFBcUI7Z0JBQ3JCLGVBQWU7Z0JBQ2YsdUJBQXVCO2dCQUN2Qix3QkFBd0I7Z0JBQ3hCLDJCQUEyQjtnQkFDM0Isb0JBQW9CO2dCQUNwQixrQkFBa0I7Z0JBQ2xCLHdCQUF3QjtnQkFDeEIsc0JBQXNCO2dCQUN0Qiw0QkFBNEI7Z0JBQzVCLDRDQUE0QztnQkFDNUMsbUNBQW1DO2dCQUNuQyxzQ0FBc0M7Z0JBQ3RDLDhCQUE4QjtnQkFDOUIsZ0JBQWdCO2dCQUNoQix3QkFBd0I7Z0JBQ3hCLGtCQUFrQjtnQkFDbEIsZ0JBQWdCO2FBQ2pCO1NBQ0YsQ0FBQztJQVFGLENBQUM7Q0FDRjtBQTVhRCwwQkE0YUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2Nlc3NMZXZlbExpc3QgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWNjZXNzLWxldmVsJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBhd3NfaWFtIGFzIGlhbSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG4vKipcbiAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbc3VwcG9ydF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYXdzc3VwcG9ydC5odG1sKS5cbiAqXG4gKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFN1cHBvcnQgZXh0ZW5kcyBQb2xpY3lTdGF0ZW1lbnQge1xuICBwdWJsaWMgc2VydmljZVByZWZpeCA9ICdzdXBwb3J0JztcblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYWRkIG9uZSBvciBtb3JlIGF0dGFjaG1lbnRzIHRvIGFuIEFXUyBTdXBwb3J0IGNhc2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9BZGRBdHRhY2htZW50c1RvU2V0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0FkZEF0dGFjaG1lbnRzVG9TZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0FkZEF0dGFjaG1lbnRzVG9TZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBhZGQgYSBjdXN0b21lciBjb21tdW5pY2F0aW9uIHRvIGFuIEFXUyBTdXBwb3J0IGNhc2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9BZGRDb21tdW5pY2F0aW9uVG9DYXNlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0FkZENvbW11bmljYXRpb25Ub0Nhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0FkZENvbW11bmljYXRpb25Ub0Nhc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGVzIGEgbmV3IEFXUyBTdXBwb3J0IGNhc2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVDYXNlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUNhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUNhc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZXNjcmliZSBhdHRhY2htZW50IGRldGFpbFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVBdHRhY2htZW50Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlQXR0YWNobWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVBdHRhY2htZW50Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYWxsb3cgc2Vjb25kYXJ5IHNlcnZpY2VzIHRvIHJlYWQgQVdTIFN1cHBvcnQgY2FzZSBhdHRyaWJ1dGVzLlRoaXMgaXMgYW4gaW50ZXJuYWxseSBtYW5hZ2VkIGZ1bmN0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvdXNlci9hY2Nlc3Npbmctc3VwcG9ydC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUNhc2VBdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUNhc2VBdHRyaWJ1dGVzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVzY3JpYmUgdGhlIGF2YWlsYWJsZSBvcHRpb25zIGZvciBhIHNpbmdsZSBBV1MgU3VwcG9ydCBjYXNlLiBUaGlzIGlzIGFuIGludGVybmFsbHkgbWFuYWdlZCBmdW5jdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVDYXNlT3B0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUNhc2VPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUNhc2VPcHRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBBV1MgU3VwcG9ydCBjYXNlcyB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIGlucHV0c1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVDYXNlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUNhc2VzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUNhc2VzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGEgc2luZ2xlIGNvbW11bmljYXRpb24gYW5kIGF0dGFjaG1lbnRzIGZvciBhIHNpbmdsZSBBV1MgU3VwcG9ydCBjYXNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvdXNlci9hY2Nlc3Npbmctc3VwcG9ydC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUNvbW11bmljYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlQ29tbXVuaWNhdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGxpc3QgdGhlIGNvbW11bmljYXRpb25zIGFuZCBhdHRhY2htZW50cyBmb3Igb25lIG9yIG1vcmUgQVdTIFN1cHBvcnQgY2FzZXNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlQ29tbXVuaWNhdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVDb21tdW5pY2F0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVDb21tdW5pY2F0aW9ucycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlc2NyaWJlcyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgc3VwcG9ydCBjYXNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUNyZWF0ZUNhc2VPcHRpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlQ3JlYXRlQ2FzZU9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlQ3JlYXRlQ2FzZU9wdGlvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXR1cm4gaXNzdWUgdHlwZXMgZm9yIEFXUyBTdXBwb3J0IGNhc2VzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvdXNlci9hY2Nlc3Npbmctc3VwcG9ydC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUlzc3VlVHlwZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlSXNzdWVUeXBlcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGxpc3QgQVdTIHNlcnZpY2VzIGFuZCBjYXRlZ29yaWVzIHRoYXQgYXBwbGllcyB0byBlYWNoIHNlcnZpY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlU2VydmljZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVTZXJ2aWNlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVTZXJ2aWNlcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGxpc3Qgc2V2ZXJpdHkgbGV2ZWxzIHRoYXQgY2FuIGJlIGFzc2lnbmVkIHRvIGFuIEFXUyBTdXBwb3J0IGNhc2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlU2V2ZXJpdHlMZXZlbHMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVTZXZlcml0eUxldmVscygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVTZXZlcml0eUxldmVscycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHVybiB0aGUgc3VwcG9ydCBsZXZlbCBmb3IgYW4gQVdTIEFjY291bnQgaWRlbnRpZmllclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L3VzZXIvYWNjZXNzaW5nLXN1cHBvcnQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVTdXBwb3J0TGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlU3VwcG9ydExldmVsJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVzY3JpYmVzIHRoZSBhdmFpbGFibGUgc3VwcG9ydCBsYW5ndWFnZXMgZm9yIGEgZ2l2ZW4gY2F0ZWdvcnkgY29kZSwgc2VydmljZSBjb2RlIGFuZCBpc3N1ZSB0eXBlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZVN1cHBvcnRlZExhbmd1YWdlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZVN1cHBvcnRlZExhbmd1YWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVTdXBwb3J0ZWRMYW5ndWFnZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgdGhlIHN0YXR1cyBvZiBhIFRydXN0ZWQgQWR2aXNvciByZWZyZXNoIGNoZWNrIGJhc2VkIG9uIGEgbGlzdCBvZiBjaGVjayBpZGVudGlmaWVyc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVUcnVzdGVkQWR2aXNvckNoZWNrUmVmcmVzaFN0YXR1c2VzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlVHJ1c3RlZEFkdmlzb3JDaGVja1JlZnJlc2hTdGF0dXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVUcnVzdGVkQWR2aXNvckNoZWNrUmVmcmVzaFN0YXR1c2VzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IHRoZSByZXN1bHRzIG9mIHRoZSBUcnVzdGVkIEFkdmlzb3IgY2hlY2sgdGhhdCBoYXMgdGhlIHNwZWNpZmllZCBjaGVjayBpZGVudGlmaWVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZVRydXN0ZWRBZHZpc29yQ2hlY2tSZXN1bHQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVUcnVzdGVkQWR2aXNvckNoZWNrUmVzdWx0KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZVRydXN0ZWRBZHZpc29yQ2hlY2tSZXN1bHQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgdGhlIHN1bW1hcmllcyBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgVHJ1c3RlZCBBZHZpc29yIGNoZWNrcyB0aGF0IGhhdmUgdGhlIHNwZWNpZmllZCBjaGVjayBpZGVudGlmaWVyc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVUcnVzdGVkQWR2aXNvckNoZWNrU3VtbWFyaWVzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlVHJ1c3RlZEFkdmlzb3JDaGVja1N1bW1hcmllcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVUcnVzdGVkQWR2aXNvckNoZWNrU3VtbWFyaWVzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIFRydXN0ZWQgQWR2aXNvciBjaGVja3MsIGluY2x1ZGluZyBuYW1lLCBpZGVudGlmaWVyLCBjYXRlZ29yeSBhbmQgZGVzY3JpcHRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlVHJ1c3RlZEFkdmlzb3JDaGVja3MuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVUcnVzdGVkQWR2aXNvckNoZWNrcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVUcnVzdGVkQWR2aXNvckNoZWNrcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIHBlcnNvbmFsaXplZCB0cm91Ymxlc2hvb3RpbmcgYXNzaXN0YW5jZSBmb3IgYWNjb3VudCBhbmQgdGVjaG5pY2FsIGlzc3VlcyBmb3IgYSBzcGVjaWZpYyBpbnRlcmFjdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0SW50ZXJhY3Rpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0SW50ZXJhY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldEludGVyYWN0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gaW5pdGlhdGUgYSBjYWxsIG9uIEFXUyBTdXBwb3J0IENlbnRlci4gVGhpcyBpcyBhbiBpbnRlcm5hbGx5IG1hbmFnZWQgZnVuY3Rpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvdXNlci9hY2Nlc3Npbmctc3VwcG9ydC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9Jbml0aWF0ZUNhbGxGb3JDYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdJbml0aWF0ZUNhbGxGb3JDYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gaW5pdGlhdGUgYSBjaGF0IG9uIEFXUyBTdXBwb3J0IENlbnRlci5UaGlzIGlzIGFuIGludGVybmFsbHkgbWFuYWdlZCBmdW5jdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC91c2VyL2FjY2Vzc2luZy1zdXBwb3J0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0luaXRpYXRlQ2hhdEZvckNhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0luaXRpYXRlQ2hhdEZvckNhc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBpbml0aWF0ZSBhIGxpdmUgY29udGFjdCBvbiBBV1MgU3VwcG9ydCBDZW50ZXIuIFRoaXMgaXMgYW4gaW50ZXJuYWxseSBtYW5hZ2VkIGZ1bmN0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L3VzZXIvYWNjZXNzaW5nLXN1cHBvcnQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvSW5pdGlhdGVMaXZlQ29udGFjdEZvckNhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0luaXRpYXRlTGl2ZUNvbnRhY3RGb3JDYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IG9mIGVudHJpZXMgd2l0aGluIGEgc3BlY2lmaWMgaW50ZXJhY3Rpb24sIGluY2x1ZGluZyBtZXNzYWdlcywgc3RhdHVzIHVwZGF0ZXMsIG9yIG90aGVyIHJlbGV2YW50IGRhdGEgcG9pbnRzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvdXNlci9hY2Nlc3Npbmctc3VwcG9ydC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0SW50ZXJhY3Rpb25FbnRyaWVzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0SW50ZXJhY3Rpb25FbnRyaWVzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgYSBsaXN0IG9mIGludGVyYWN0aW9ucywgcG90ZW50aWFsbHkgd2l0aCBmaWx0ZXJzIG9yIHBhZ2luYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC91c2VyL2FjY2Vzc2luZy1zdXBwb3J0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RJbnRlcmFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RJbnRlcmFjdGlvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBhbGxvdyBzZWNvbmRhcnkgc2VydmljZXMgdG8gYXR0YWNoIGF0dHJpYnV0ZXMgdG8gQVdTIFN1cHBvcnQgY2FzZXMuIFRoaXMgaXMgYW4gaW50ZXJuYWxseSBtYW5hZ2VkIGZ1bmN0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L3VzZXIvYWNjZXNzaW5nLXN1cHBvcnQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvUHV0Q2FzZUF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1B1dENhc2VBdHRyaWJ1dGVzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmF0ZSBhbiBBV1MgU3VwcG9ydCBjYXNlIGNvbW11bmljYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvdXNlci9hY2Nlc3Npbmctc3VwcG9ydC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9SYXRlQ2FzZUNvbW11bmljYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1JhdGVDYXNlQ29tbXVuaWNhdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJlcXVlc3RzIGEgcmVmcmVzaCBvZiB0aGUgVHJ1c3RlZCBBZHZpc29yIGNoZWNrIHRoYXQgaGFzIHRoZSBzcGVjaWZpZWQgY2hlY2sgaWRlbnRpZmllclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1JlZnJlc2hUcnVzdGVkQWR2aXNvckNoZWNrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1JlZnJlc2hUcnVzdGVkQWR2aXNvckNoZWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdSZWZyZXNoVHJ1c3RlZEFkdmlzb3JDaGVjaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJlc29sdmUgYW4gQVdTIFN1cHBvcnQgY2FzZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1Jlc29sdmVDYXNlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1Jlc29sdmVDYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdSZXNvbHZlQ2FzZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIG1hcmsgYSBzcGVjaWZpYyBpbnRlcmFjdGlvbiBhcyByZXNvbHZlZCBieSBpdHMgdW5pcXVlIGlkZW50aWZpZXIsIGluZGljYXRpbmcgdGhhdCB0aGUgaXNzdWUgaGFzIGJlZW4gYWRkcmVzc2VkIGFuZCBubyBmdXJ0aGVyIGFjdGlvbiBpcyBuZWVkZWRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvdXNlci9hY2Nlc3Npbmctc3VwcG9ydC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9SZXNvbHZlSW50ZXJhY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1Jlc29sdmVJbnRlcmFjdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHVybiBhIGxpc3Qgb2YgQVdTIFN1cHBvcnQgY2FzZXMgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBpbnB1dHNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC91c2VyL2FjY2Vzc2luZy1zdXBwb3J0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1NlYXJjaEZvckNhc2VzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTZWFyY2hGb3JDYXNlcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHN0YXJ0IGEgc3BlY2lmaWMgaW50ZXJhY3Rpb24gdG8gcmVjZWl2ZSBwZXJzb25hbGl6ZWQgdHJvdWJsZXNob290aW5nIGFzc2lzdGFuY2UgZm9yIGFjY291bnQgYW5kIHRlY2huaWNhbCBpc3N1ZXNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBEZXBlbmRlbnQgYWN0aW9uczpcbiAgICogLSBzdXBwb3J0OkRlc2NyaWJlU3VwcG9ydExldmVsXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hd3NzdXBwb3J0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1N0YXJ0SW50ZXJhY3Rpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvU3RhcnRJbnRlcmFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU3RhcnRJbnRlcmFjdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc2V2ZXJpdHkgZm9yIGEgc2luZ2xlIEFXUyBTdXBwb3J0IGNhc2UuIFRoaXMgaXMgYW4gaW50ZXJuYWxseSBtYW5hZ2VkIGZ1bmN0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F3c3N1cHBvcnQvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVXBkYXRlQ2FzZVNldmVyaXR5Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZUNhc2VTZXZlcml0eSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlQ2FzZVNldmVyaXR5Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBkYXRlIGEgc3BlY2lmaWMgaW50ZXJhY3Rpb24gdG8gcmVjZWl2ZSBwZXJzb25hbGl6ZWQgdHJvdWJsZXNob290aW5nIGFzc2lzdGFuY2UgZm9yIGFjY291bnQgYW5kIHRlY2huaWNhbCBpc3N1ZXNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXdzc3VwcG9ydC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9VcGRhdGVJbnRlcmFjdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVJbnRlcmFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlSW50ZXJhY3Rpb24nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhY2Nlc3NMZXZlbExpc3Q6IEFjY2Vzc0xldmVsTGlzdCA9IHtcbiAgICBXcml0ZTogW1xuICAgICAgJ0FkZEF0dGFjaG1lbnRzVG9TZXQnLFxuICAgICAgJ0FkZENvbW11bmljYXRpb25Ub0Nhc2UnLFxuICAgICAgJ0NyZWF0ZUNhc2UnLFxuICAgICAgJ0luaXRpYXRlQ2FsbEZvckNhc2UnLFxuICAgICAgJ0luaXRpYXRlQ2hhdEZvckNhc2UnLFxuICAgICAgJ0luaXRpYXRlTGl2ZUNvbnRhY3RGb3JDYXNlJyxcbiAgICAgICdQdXRDYXNlQXR0cmlidXRlcycsXG4gICAgICAnUmF0ZUNhc2VDb21tdW5pY2F0aW9uJyxcbiAgICAgICdSZWZyZXNoVHJ1c3RlZEFkdmlzb3JDaGVjaycsXG4gICAgICAnUmVzb2x2ZUNhc2UnLFxuICAgICAgJ1Jlc29sdmVJbnRlcmFjdGlvbicsXG4gICAgICAnU3RhcnRJbnRlcmFjdGlvbicsXG4gICAgICAnVXBkYXRlQ2FzZVNldmVyaXR5JyxcbiAgICAgICdVcGRhdGVJbnRlcmFjdGlvbidcbiAgICBdLFxuICAgIFJlYWQ6IFtcbiAgICAgICdEZXNjcmliZUF0dGFjaG1lbnQnLFxuICAgICAgJ0Rlc2NyaWJlQ2FzZUF0dHJpYnV0ZXMnLFxuICAgICAgJ0Rlc2NyaWJlQ2FzZU9wdGlvbnMnLFxuICAgICAgJ0Rlc2NyaWJlQ2FzZXMnLFxuICAgICAgJ0Rlc2NyaWJlQ29tbXVuaWNhdGlvbicsXG4gICAgICAnRGVzY3JpYmVDb21tdW5pY2F0aW9ucycsXG4gICAgICAnRGVzY3JpYmVDcmVhdGVDYXNlT3B0aW9ucycsXG4gICAgICAnRGVzY3JpYmVJc3N1ZVR5cGVzJyxcbiAgICAgICdEZXNjcmliZVNlcnZpY2VzJyxcbiAgICAgICdEZXNjcmliZVNldmVyaXR5TGV2ZWxzJyxcbiAgICAgICdEZXNjcmliZVN1cHBvcnRMZXZlbCcsXG4gICAgICAnRGVzY3JpYmVTdXBwb3J0ZWRMYW5ndWFnZXMnLFxuICAgICAgJ0Rlc2NyaWJlVHJ1c3RlZEFkdmlzb3JDaGVja1JlZnJlc2hTdGF0dXNlcycsXG4gICAgICAnRGVzY3JpYmVUcnVzdGVkQWR2aXNvckNoZWNrUmVzdWx0JyxcbiAgICAgICdEZXNjcmliZVRydXN0ZWRBZHZpc29yQ2hlY2tTdW1tYXJpZXMnLFxuICAgICAgJ0Rlc2NyaWJlVHJ1c3RlZEFkdmlzb3JDaGVja3MnLFxuICAgICAgJ0dldEludGVyYWN0aW9uJyxcbiAgICAgICdMaXN0SW50ZXJhY3Rpb25FbnRyaWVzJyxcbiAgICAgICdMaXN0SW50ZXJhY3Rpb25zJyxcbiAgICAgICdTZWFyY2hGb3JDYXNlcydcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbc3VwcG9ydF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYXdzc3VwcG9ydC5odG1sKS5cbiAgICpcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzPzogaWFtLlBvbGljeVN0YXRlbWVudFByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG59XG4iXX0=