UNPKG

iam-floyd

Version:

AWS IAM policy statement generator with fluent interface

233 lines 24.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NovaAct = void 0; const shared_1 = require("../../shared"); /** * Statement provider for service [nova-act](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsservicetomanageaiagentsforuiworkflows.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ class NovaAct extends shared_1.PolicyStatement { /** * Statement provider for service [nova-act](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsservicetomanageaiagentsforuiworkflows.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ constructor(sid) { super(sid); this.servicePrefix = 'nova-act'; this.accessLevelList = { Write: [ 'CreateAct', 'CreateSession', 'CreateWorkflowDefinition', 'CreateWorkflowRun', 'DeleteWorkflowDefinition', 'DeleteWorkflowRun', 'InvokeActStep', 'UpdateAct', 'UpdateWorkflowRun' ], Read: [ 'GetWorkflowDefinition', 'GetWorkflowRun', 'ListActs', 'ListModels', 'ListSessions' ], List: [ 'ListWorkflowDefinitions', 'ListWorkflowRuns' ] }; } /** * Grants permission to create a new AI task (act) within a session that can interact with tools and perform specific actions * * Access Level: Write * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_CreateAct.html */ toCreateAct() { return this.to('CreateAct'); } /** * Grants permission to create a new session context within a workflow run to manage conversation state and acts * * Access Level: Write * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_CreateSession.html */ toCreateSession() { return this.to('CreateSession'); } /** * Grants permission to create a new workflow definition template that can be used to execute multiple workflow runs * * Access Level: Write * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_CreateWorkflowDefinition.html */ toCreateWorkflowDefinition() { return this.to('CreateWorkflowDefinition'); } /** * Grants permission to create a new execution instance of a workflow definition with specified parameters * * Access Level: Write * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_CreateWorkflowRun.html */ toCreateWorkflowRun() { return this.to('CreateWorkflowRun'); } /** * Grants permission to delete a workflow definition and all associated resources * * Access Level: Write * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_DeleteWorkflowDefinition.html */ toDeleteWorkflowDefinition() { return this.to('DeleteWorkflowDefinition'); } /** * Grants permission to terminate and clean up a workflow run, stopping all associated acts and sessions * * Access Level: Write * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_DeleteWorkflowRun.html */ toDeleteWorkflowRun() { return this.to('DeleteWorkflowRun'); } /** * Grants permission to retrieve details and configuration of a specific workflow definition * * Access Level: Read * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_GetWorkflowDefinition.html */ toGetWorkflowDefinition() { return this.to('GetWorkflowDefinition'); } /** * Grants permission to retrieve the current state, configuration, and execution details of a workflow run * * Access Level: Read * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_GetWorkflowRun.html */ toGetWorkflowRun() { return this.to('GetWorkflowRun'); } /** * Grants permission to execute the next step of an act, processing tool call results and returning new tool calls if needed * * Access Level: Write * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_InvokeActStep.html */ toInvokeActStep() { return this.to('InvokeActStep'); } /** * Grants permission to list all acts within a specific session with their current status and execution details * * Access Level: Read * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_ListActs.html */ toListActs() { return this.to('ListActs'); } /** * Grants permission to list all available AI models that can be used for workflow execution, including their status and compatibility information * * Access Level: Read * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_ListModels.html */ toListModels() { return this.to('ListModels'); } /** * Grants permission to list all sessions within a specific workflow run * * Access Level: Read * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_ListSessions.html */ toListSessions() { return this.to('ListSessions'); } /** * Grants permission to list all workflow definitions in your account with optional filtering and pagination * * Access Level: List * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_ListWorkflowDefinitions.html */ toListWorkflowDefinitions() { return this.to('ListWorkflowDefinitions'); } /** * Grants permission to list all workflow runs for a specific workflow definition with optional filtering and pagination * * Access Level: List * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_ListWorkflowRuns.html */ toListWorkflowRuns() { return this.to('ListWorkflowRuns'); } /** * Grants permission to update an existing act's configuration, status, or error information * * Access Level: Write * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_UpdateAct.html */ toUpdateAct() { return this.to('UpdateAct'); } /** * Grants permission to update the configuration or state of an active workflow run * * Access Level: Write * * https://docs.aws.amazon.com/nova-act/latest/APIReference/API_UpdateWorkflowRun.html */ toUpdateWorkflowRun() { return this.to('UpdateWorkflowRun'); } /** * Adds a resource of type workflow-definition to the statement * * https://docs.aws.amazon.com/nova-act/latest/userguide/workflow-definition.html * * @param workflowDefinitionName - Identifier for the workflowDefinitionName. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onWorkflowDefinition(workflowDefinitionName, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:nova-act:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:workflow-definition/${workflowDefinitionName}`); } /** * Adds a resource of type workflow-run to the statement * * https://docs.aws.amazon.com/nova-act/latest/userguide/workflow-run.html * * @param workflowDefinitionName - Identifier for the workflowDefinitionName. * @param workflowRunId - Identifier for the workflowRunId. * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account. * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onWorkflowRun(workflowDefinitionName, workflowRunId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:nova-act:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:workflow-definition/${workflowDefinitionName}/workflow-run/${workflowRunId}`); } } exports.NovaAct = NovaAct; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXRvbWFuYWdlYWlhZ2VudHNmb3J1aXdvcmtmbG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlcnZpY2V0b21hbmFnZWFpYWdlbnRzZm9ydWl3b3JrZmxvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQStDO0FBRS9DOzs7O0dBSUc7QUFDSCxNQUFhLE9BQVEsU0FBUSx3QkFBZTtJQUcxQzs7OztPQUlHO0lBQ0gsWUFBWSxHQUFZO1FBQ3RCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQVJOLGtCQUFhLEdBQUcsVUFBVSxDQUFDO1FBMkx4QixvQkFBZSxHQUFvQjtZQUMzQyxLQUFLLEVBQUU7Z0JBQ0wsV0FBVztnQkFDWCxlQUFlO2dCQUNmLDBCQUEwQjtnQkFDMUIsbUJBQW1CO2dCQUNuQiwwQkFBMEI7Z0JBQzFCLG1CQUFtQjtnQkFDbkIsZUFBZTtnQkFDZixXQUFXO2dCQUNYLG1CQUFtQjthQUNwQjtZQUNELElBQUksRUFBRTtnQkFDSix1QkFBdUI7Z0JBQ3ZCLGdCQUFnQjtnQkFDaEIsVUFBVTtnQkFDVixZQUFZO2dCQUNaLGNBQWM7YUFDZjtZQUNELElBQUksRUFBRTtnQkFDSix5QkFBeUI7Z0JBQ3pCLGtCQUFrQjthQUNuQjtTQUNGLENBQUM7SUF6TUYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksMEJBQTBCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDBCQUEwQjtRQUMvQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQTJCRDs7Ozs7Ozs7O09BU0c7SUFDSSxvQkFBb0IsQ0FBQyxzQkFBOEIsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxTQUFrQjtRQUMvRyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBUSxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFpQixhQUFjLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYyxJQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBZSx3QkFBeUIsc0JBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBQy9MLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksYUFBYSxDQUFDLHNCQUE4QixFQUFFLGFBQXFCLEVBQUUsT0FBZ0IsRUFBRSxNQUFlLEVBQUUsU0FBa0I7UUFDL0gsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQVEsU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBaUIsYUFBYyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWMsSUFBSyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWUsd0JBQXlCLHNCQUF1QixpQkFBa0IsYUFBYyxFQUFFLENBQUMsQ0FBQztJQUMvTixDQUFDO0NBQ0Y7QUFqUEQsMEJBaVBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzTGV2ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuXG4vKipcbiAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbbm92YS1hY3RdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2F3c3NlcnZpY2V0b21hbmFnZWFpYWdlbnRzZm9ydWl3b3JrZmxvd3MuaHRtbCkuXG4gKlxuICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBOb3ZhQWN0IGV4dGVuZHMgUG9saWN5U3RhdGVtZW50IHtcbiAgcHVibGljIHNlcnZpY2VQcmVmaXggPSAnbm92YS1hY3QnO1xuXG4gIC8qKlxuICAgKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW25vdmEtYWN0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hd3NzZXJ2aWNldG9tYW5hZ2VhaWFnZW50c2ZvcnVpd29ya2Zsb3dzLmh0bWwpLlxuICAgKlxuICAgKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNpZD86IHN0cmluZykge1xuICAgIHN1cGVyKHNpZCk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgbmV3IEFJIHRhc2sgKGFjdCkgd2l0aGluIGEgc2Vzc2lvbiB0aGF0IGNhbiBpbnRlcmFjdCB3aXRoIHRvb2xzIGFuZCBwZXJmb3JtIHNwZWNpZmljIGFjdGlvbnNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbm92YS1hY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlQWN0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUFjdCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlQWN0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgbmV3IHNlc3Npb24gY29udGV4dCB3aXRoaW4gYSB3b3JrZmxvdyBydW4gdG8gbWFuYWdlIGNvbnZlcnNhdGlvbiBzdGF0ZSBhbmQgYWN0c1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ub3ZhLWFjdC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVTZXNzaW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZVNlc3Npb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBuZXcgd29ya2Zsb3cgZGVmaW5pdGlvbiB0ZW1wbGF0ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgbXVsdGlwbGUgd29ya2Zsb3cgcnVuc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ub3ZhLWFjdC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVXb3JrZmxvd0RlZmluaXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlV29ya2Zsb3dEZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVXb3JrZmxvd0RlZmluaXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBuZXcgZXhlY3V0aW9uIGluc3RhbmNlIG9mIGEgd29ya2Zsb3cgZGVmaW5pdGlvbiB3aXRoIHNwZWNpZmllZCBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL25vdmEtYWN0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZVdvcmtmbG93UnVuLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVdvcmtmbG93UnVuKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVXb3JrZmxvd1J1bicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBhIHdvcmtmbG93IGRlZmluaXRpb24gYW5kIGFsbCBhc3NvY2lhdGVkIHJlc291cmNlc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ub3ZhLWFjdC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVXb3JrZmxvd0RlZmluaXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlV29ya2Zsb3dEZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVXb3JrZmxvd0RlZmluaXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB0ZXJtaW5hdGUgYW5kIGNsZWFuIHVwIGEgd29ya2Zsb3cgcnVuLCBzdG9wcGluZyBhbGwgYXNzb2NpYXRlZCBhY3RzIGFuZCBzZXNzaW9uc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ub3ZhLWFjdC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVXb3JrZmxvd1J1bi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVXb3JrZmxvd1J1bigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlV29ya2Zsb3dSdW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBkZXRhaWxzIGFuZCBjb25maWd1cmF0aW9uIG9mIGEgc3BlY2lmaWMgd29ya2Zsb3cgZGVmaW5pdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL25vdmEtYWN0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFdvcmtmbG93RGVmaW5pdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRXb3JrZmxvd0RlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldFdvcmtmbG93RGVmaW5pdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHN0YXRlLCBjb25maWd1cmF0aW9uLCBhbmQgZXhlY3V0aW9uIGRldGFpbHMgb2YgYSB3b3JrZmxvdyBydW5cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ub3ZhLWFjdC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRXb3JrZmxvd1J1bi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRXb3JrZmxvd1J1bigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0V29ya2Zsb3dSdW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBleGVjdXRlIHRoZSBuZXh0IHN0ZXAgb2YgYW4gYWN0LCBwcm9jZXNzaW5nIHRvb2wgY2FsbCByZXN1bHRzIGFuZCByZXR1cm5pbmcgbmV3IHRvb2wgY2FsbHMgaWYgbmVlZGVkXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL25vdmEtYWN0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0ludm9rZUFjdFN0ZXAuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvSW52b2tlQWN0U3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnSW52b2tlQWN0U3RlcCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGxpc3QgYWxsIGFjdHMgd2l0aGluIGEgc3BlY2lmaWMgc2Vzc2lvbiB3aXRoIHRoZWlyIGN1cnJlbnQgc3RhdHVzIGFuZCBleGVjdXRpb24gZGV0YWlsc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL25vdmEtYWN0L2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3RBY3RzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RBY3RzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0QWN0cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGxpc3QgYWxsIGF2YWlsYWJsZSBBSSBtb2RlbHMgdGhhdCBjYW4gYmUgdXNlZCBmb3Igd29ya2Zsb3cgZXhlY3V0aW9uLCBpbmNsdWRpbmcgdGhlaXIgc3RhdHVzIGFuZCBjb21wYXRpYmlsaXR5IGluZm9ybWF0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbm92YS1hY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdE1vZGVscy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0TW9kZWxzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0TW9kZWxzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBhbGwgc2Vzc2lvbnMgd2l0aGluIGEgc3BlY2lmaWMgd29ya2Zsb3cgcnVuXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbm92YS1hY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdFNlc3Npb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RTZXNzaW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdFNlc3Npb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBhbGwgd29ya2Zsb3cgZGVmaW5pdGlvbnMgaW4geW91ciBhY2NvdW50IHdpdGggb3B0aW9uYWwgZmlsdGVyaW5nIGFuZCBwYWdpbmF0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbm92YS1hY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdFdvcmtmbG93RGVmaW5pdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdFdvcmtmbG93RGVmaW5pdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RXb3JrZmxvd0RlZmluaXRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBhbGwgd29ya2Zsb3cgcnVucyBmb3IgYSBzcGVjaWZpYyB3b3JrZmxvdyBkZWZpbml0aW9uIHdpdGggb3B0aW9uYWwgZmlsdGVyaW5nIGFuZCBwYWdpbmF0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbm92YS1hY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdFdvcmtmbG93UnVucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0V29ya2Zsb3dSdW5zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0V29ya2Zsb3dSdW5zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBkYXRlIGFuIGV4aXN0aW5nIGFjdCdzIGNvbmZpZ3VyYXRpb24sIHN0YXR1cywgb3IgZXJyb3IgaW5mb3JtYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbm92YS1hY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVXBkYXRlQWN0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZUFjdCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlQWN0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoZSBjb25maWd1cmF0aW9uIG9yIHN0YXRlIG9mIGFuIGFjdGl2ZSB3b3JrZmxvdyBydW5cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbm92YS1hY3QvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVXBkYXRlV29ya2Zsb3dSdW4uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlV29ya2Zsb3dSdW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZVdvcmtmbG93UnVuJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWNjZXNzTGV2ZWxMaXN0OiBBY2Nlc3NMZXZlbExpc3QgPSB7XG4gICAgV3JpdGU6IFtcbiAgICAgICdDcmVhdGVBY3QnLFxuICAgICAgJ0NyZWF0ZVNlc3Npb24nLFxuICAgICAgJ0NyZWF0ZVdvcmtmbG93RGVmaW5pdGlvbicsXG4gICAgICAnQ3JlYXRlV29ya2Zsb3dSdW4nLFxuICAgICAgJ0RlbGV0ZVdvcmtmbG93RGVmaW5pdGlvbicsXG4gICAgICAnRGVsZXRlV29ya2Zsb3dSdW4nLFxuICAgICAgJ0ludm9rZUFjdFN0ZXAnLFxuICAgICAgJ1VwZGF0ZUFjdCcsXG4gICAgICAnVXBkYXRlV29ya2Zsb3dSdW4nXG4gICAgXSxcbiAgICBSZWFkOiBbXG4gICAgICAnR2V0V29ya2Zsb3dEZWZpbml0aW9uJyxcbiAgICAgICdHZXRXb3JrZmxvd1J1bicsXG4gICAgICAnTGlzdEFjdHMnLFxuICAgICAgJ0xpc3RNb2RlbHMnLFxuICAgICAgJ0xpc3RTZXNzaW9ucydcbiAgICBdLFxuICAgIExpc3Q6IFtcbiAgICAgICdMaXN0V29ya2Zsb3dEZWZpbml0aW9ucycsXG4gICAgICAnTGlzdFdvcmtmbG93UnVucydcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIHdvcmtmbG93LWRlZmluaXRpb24gdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbm92YS1hY3QvbGF0ZXN0L3VzZXJndWlkZS93b3JrZmxvdy1kZWZpbml0aW9uLmh0bWxcbiAgICpcbiAgICogQHBhcmFtIHdvcmtmbG93RGVmaW5pdGlvbk5hbWUgLSBJZGVudGlmaWVyIGZvciB0aGUgd29ya2Zsb3dEZWZpbml0aW9uTmFtZS5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqL1xuICBwdWJsaWMgb25Xb3JrZmxvd0RlZmluaXRpb24od29ya2Zsb3dEZWZpbml0aW9uTmFtZTogc3RyaW5nLCBhY2NvdW50Pzogc3RyaW5nLCByZWdpb24/OiBzdHJpbmcsIHBhcnRpdGlvbj86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm9uKGBhcm46JHsgcGFydGl0aW9uID8/IHRoaXMuZGVmYXVsdFBhcnRpdGlvbiB9Om5vdmEtYWN0OiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTp3b3JrZmxvdy1kZWZpbml0aW9uLyR7IHdvcmtmbG93RGVmaW5pdGlvbk5hbWUgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIHdvcmtmbG93LXJ1biB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ub3ZhLWFjdC9sYXRlc3QvdXNlcmd1aWRlL3dvcmtmbG93LXJ1bi5odG1sXG4gICAqXG4gICAqIEBwYXJhbSB3b3JrZmxvd0RlZmluaXRpb25OYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIHdvcmtmbG93RGVmaW5pdGlvbk5hbWUuXG4gICAqIEBwYXJhbSB3b3JrZmxvd1J1bklkIC0gSWRlbnRpZmllciBmb3IgdGhlIHdvcmtmbG93UnVuSWQuXG4gICAqIEBwYXJhbSBhY2NvdW50IC0gQWNjb3VudCBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgYWNjb3VudC5cbiAgICogQHBhcmFtIHJlZ2lvbiAtIFJlZ2lvbiBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcmVnaW9uLlxuICAgKiBAcGFyYW0gcGFydGl0aW9uIC0gUGFydGl0aW9uIG9mIHRoZSBBV1MgYWNjb3VudCBbYXdzLCBhd3MtY24sIGF3cy11cy1nb3ZdOyBkZWZhdWx0cyB0byBgYXdzYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcGFydGl0aW9uLlxuICAgKi9cbiAgcHVibGljIG9uV29ya2Zsb3dSdW4od29ya2Zsb3dEZWZpbml0aW9uTmFtZTogc3RyaW5nLCB3b3JrZmxvd1J1bklkOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06bm92YS1hY3Q6JHsgcmVnaW9uID8/IHRoaXMuZGVmYXVsdFJlZ2lvbiB9OiR7IGFjY291bnQgPz8gdGhpcy5kZWZhdWx0QWNjb3VudCB9OndvcmtmbG93LWRlZmluaXRpb24vJHsgd29ya2Zsb3dEZWZpbml0aW9uTmFtZSB9L3dvcmtmbG93LXJ1bi8keyB3b3JrZmxvd1J1bklkIH1gKTtcbiAgfVxufVxuIl19