UNPKG

cdk-iam-floyd

Version:

AWS IAM policy statement generator with fluent interface for AWS CDK

787 lines 77.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Odb = void 0; const shared_1 = require("../../shared"); /** * Statement provider for service [odb](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsservice-oracledatabase_aws.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ class Odb extends shared_1.PolicyStatement { /** * Grants permission to register the Amazon Web Services Marketplace token for your Amazon Web Services account to activate your Oracle Database@Amazon Web Services subscription * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_AcceptMarketplaceRegistration.html */ toAcceptMarketplaceRegistration() { return this.to('AcceptMarketplaceRegistration'); } /** * Grants permission to associate an AWS Identity and Access Management (IAM) service role with a specified resource to enable AWS service integration * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_AssociateIamRoleToResource.html */ toAssociateIamRoleToResource() { return this.to('AssociateIamRoleToResource'); } /** * Grants permission to create a new Autonomous VM cluster in the specified Exadata infrastructure * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateCloudAutonomousVmCluster.html */ toCreateCloudAutonomousVmCluster() { return this.to('CreateCloudAutonomousVmCluster'); } /** * Grants permission to create an Exadata infrastructure * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateCloudExadataInfrastructure.html */ toCreateCloudExadataInfrastructure() { return this.to('CreateCloudExadataInfrastructure'); } /** * Grants permission to create a VM cluster on the specified Exadata infrastructure * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateCloudVmCluster.html */ toCreateCloudVmCluster() { return this.to('CreateCloudVmCluster'); } /** * Grants permission to create a DB Node * * Access Level: Write */ toCreateDbNode() { return this.to('CreateDbNode'); } /** * Grants permission to create an ODB Grant Share * * Access Level: Write */ toCreateGrantShare() { return this.to('CreateGrantShare'); } /** * Grants permission to create an ODB network * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateOdbNetwork.html */ toCreateOdbNetwork() { return this.to('CreateOdbNetwork'); } /** * Grants permission to create an ODB Peering Connection * * Access Level: Write * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateOdbPeeringConnection.html */ toCreateOdbPeeringConnection() { return this.to('CreateOdbPeeringConnection'); } /** * Grants permission to create an Outbound Integration * * Access Level: Write */ toCreateOutboundIntegration() { return this.to('CreateOutboundIntegration'); } /** * Grants permission to Deletes an Autonomous VM cluster * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteCloudAutonomousVmCluster.html */ toDeleteCloudAutonomousVmCluster() { return this.to('DeleteCloudAutonomousVmCluster'); } /** * Grants permission to delete a specified Exadata infrastructure. Before you use this operation, make sure to delete all of the VM clusters that are hosted on this Exadata infrastructure * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteCloudExadataInfrastructure.html */ toDeleteCloudExadataInfrastructure() { return this.to('DeleteCloudExadataInfrastructure'); } /** * Grants permission to delete a specified VM cluster * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteCloudVmCluster.html */ toDeleteCloudVmCluster() { return this.to('DeleteCloudVmCluster'); } /** * Grants permission to delete a DB Node * * Access Level: Write */ toDeleteDbNode() { return this.to('DeleteDbNode'); } /** * Grants permission to delete an ODB Grant Share * * Access Level: Write */ toDeleteGrantShare() { return this.to('DeleteGrantShare'); } /** * Grants permission to delete the specified ODB network * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteOdbNetwork.html */ toDeleteOdbNetwork() { return this.to('DeleteOdbNetwork'); } /** * Grants permission to delete the specified ODB Peering Connection. When you delete an ODB peering connection, the underlying VPC peering connection is also deleted * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteOdbPeeringConnection.html */ toDeleteOdbPeeringConnection() { return this.to('DeleteOdbPeeringConnection'); } /** * Grants permission to delete a resource policy * * Access Level: Write */ toDeleteResourcePolicy() { return this.to('DeleteResourcePolicy'); } /** * Grants permission to disassociate an AWS Identity and Access Management (IAM) service role from a specified resource to disable AWS service integration * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_DisassociateIamRoleFromResource.html */ toDisassociateIamRoleFromResource() { return this.to('DisassociateIamRoleFromResource'); } /** * Grants permission to get information about a specific Autonomous VM cluster * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetCloudAutonomousVmCluster.html */ toGetCloudAutonomousVmCluster() { return this.to('GetCloudAutonomousVmCluster'); } /** * Grants permission to get information about the specified Exadata infrastructure * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetCloudExadataInfrastructure.html */ toGetCloudExadataInfrastructure() { return this.to('GetCloudExadataInfrastructure'); } /** * Grants permission to retrieve information about unallocated resources in a specified Cloud Exadata Infrastructure * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetCloudExadataInfrastructureUnallocatedResources.html */ toGetCloudExadataInfrastructureUnallocatedResources() { return this.to('GetCloudExadataInfrastructureUnallocatedResources'); } /** * Grants permission to get information about the specified VM cluster * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetCloudVmCluster.html */ toGetCloudVmCluster() { return this.to('GetCloudVmCluster'); } /** * Grants permission to get information about the specified DB node * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetDbNode.html */ toGetDbNode() { return this.to('GetDbNode'); } /** * Grants permission to get information about the specified database server * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetDbServer.html */ toGetDbServer() { return this.to('GetDbServer'); } /** * Grants permission to get the tenancy activation link and onboarding status for your Amazon Web Services account * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetOciOnboardingStatus.html */ toGetOciOnboardingStatus() { return this.to('GetOciOnboardingStatus'); } /** * Grants permission to get information about the specified ODB network * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetOdbNetwork.html */ toGetOdbNetwork() { return this.to('GetOdbNetwork'); } /** * Grants permission to get information about the specified ODB Peering connection * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetOdbPeeringConnection.html */ toGetOdbPeeringConnection() { return this.to('GetOdbPeeringConnection'); } /** * Grants permission to get a resource policy * * Access Level: Read */ toGetResourcePolicy() { return this.to('GetResourcePolicy'); } /** * Grants permission to initialize the ODB service for the first time in an account * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_InitializeService.html */ toInitializeService() { return this.to('InitializeService'); } /** * Grants permission to list all Autonomous VMs in an Autonomous VM cluster * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListAutonomousVirtualMachines.html */ toListAutonomousVirtualMachines() { return this.to('ListAutonomousVirtualMachines'); } /** * Grants permission to list all Autonomous VM clusters in a specified Cloud Exadata infrastructure * * Access Level: List * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListCloudAutonomousVmClusters.html */ toListCloudAutonomousVmClusters() { return this.to('ListCloudAutonomousVmClusters'); } /** * Grants permission to list information about the Exadata infrastructures owned by your Amazon Web Services account * * Access Level: List * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListCloudExadataInfrastructures.html */ toListCloudExadataInfrastructures() { return this.to('ListCloudExadataInfrastructures'); } /** * Grants permission to list information about the VM clusters owned by your Amazon Web Services account or only the ones on the specified Exadata infrastructure * * Access Level: List * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListCloudVmClusters.html */ toListCloudVmClusters() { return this.to('ListCloudVmClusters'); } /** * Grants permission to list information about the DB nodes for the specified VM cluster * * Access Level: List * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListDbNodes.html */ toListDbNodes() { return this.to('ListDbNodes'); } /** * Grants permission to list information about the database servers that belong to the specified Exadata infrastructure * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListDbServers.html */ toListDbServers() { return this.to('ListDbServers'); } /** * Grants permission to list information about the shapes that are available for an Exadata infrastructure * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListDbSystemShapes.html */ toListDbSystemShapes() { return this.to('ListDbSystemShapes'); } /** * Grants permission to list information about Oracle Grid Infrastructure (GI) software versions that are available for a VM cluster for the specified shape * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListGiVersions.html */ toListGiVersions() { return this.to('ListGiVersions'); } /** * Grants permission to list information about the ODB networks owned by your Amazon Web Services account * * Access Level: List * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListOdbNetworks.html */ toListOdbNetworks() { return this.to('ListOdbNetworks'); } /** * Grants permission to list all ODB peering connections or those associated with a specific ODB network * * Access Level: List * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListOdbPeeringConnections.html */ toListOdbPeeringConnections() { return this.to('ListOdbPeeringConnections'); } /** * Grants permission to list information about the system versions that are available for a VM cluster for the specified giVersion and shape * * Access Level: Read * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListSystemVersions.html */ toListSystemVersions() { return this.to('ListSystemVersions'); } /** * Grants permission to list information about the tags applied to this resource * * Access Level: Read * * Possible conditions: * - .ifAwsResourceTag() * * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListTagsForResource.html */ toListTagsForResource() { return this.to('ListTagsForResource'); } /** * Grants permission to update a resource policy * * Access Level: Write */ toPutResourcePolicy() { return this.to('PutResourcePolicy'); } /** * Grants permission to reboot the specified DB node in a VM cluster * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_RebootDbNode.html */ toRebootDbNode() { return this.to('RebootDbNode'); } /** * Grants permission to start the specified DB node in a VM cluster * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_StartDbNode.html */ toStartDbNode() { return this.to('StartDbNode'); } /** * Grants permission to stop the specified DB node in a VM cluster * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_StopDbNode.html */ toStopDbNode() { return this.to('StopDbNode'); } /** * Grants permission to apply tags to the specified resource * * Access Level: Tagging * * Possible conditions: * - .ifAwsRequestTag() * - .ifAwsResourceTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/odb/latest/APIReference/API_TagResource.html */ toTagResource() { return this.to('TagResource'); } /** * Grants permission to remove tags from the specified resource * * Access Level: Tagging * * Possible conditions: * - .ifAwsResourceTag() * - .ifAwsTagKeys() * * https://docs.aws.amazon.com/odb/latest/APIReference/API_UntagResource.html */ toUntagResource() { return this.to('UntagResource'); } /** * Grants permission to update the properties of an Exadata infrastructure resource * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_UpdateCloudExadataInfrastructure.html */ toUpdateCloudExadataInfrastructure() { return this.to('UpdateCloudExadataInfrastructure'); } /** * Grants permission to update an ODB Grant Share * * Access Level: Write */ toUpdateGrantShare() { return this.to('UpdateGrantShare'); } /** * Grants permission to update properties of a specified ODB network * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_UpdateOdbNetwork.html */ toUpdateOdbNetwork() { return this.to('UpdateOdbNetwork'); } /** * Grants permission to update properties of a specified ODB Peering Connection * * Access Level: Write * * https://docs.aws.amazon.com/odb/latest/APIReference/API_UpdateOdbPeeringConnection.html */ toUpdateOdbPeeringConnection() { return this.to('UpdateOdbPeeringConnection'); } /** * Grants permission to update an Outbound Integration * * Access Level: Write */ toUpdateOutboundIntegration() { return this.to('UpdateOutboundIntegration'); } /** * Adds a resource of type cloud-autonomous-vm-cluster to the statement * * https://docs.aws.amazon.com/odb/latest/APIReference/API_CloudAutonomousVmCluster.html * * @param cloudAutonomousVmClusterId - Identifier for the cloudAutonomousVmClusterId. * @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. * * Possible conditions: * - .ifAwsResourceTag() */ onCloudAutonomousVmCluster(cloudAutonomousVmClusterId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:cloud-autonomous-vm-cluster/${cloudAutonomousVmClusterId}`); } /** * Adds a resource of type cloud-exadata-infrastructure to the statement * * https://docs.aws.amazon.com/odb/latest/APIReference/API_CloudExadataInfrastructure.html * * @param cloudExadataInfrastructureId - Identifier for the cloudExadataInfrastructureId. * @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. * * Possible conditions: * - .ifAwsResourceTag() */ onCloudExadataInfrastructure(cloudExadataInfrastructureId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:cloud-exadata-infrastructure/${cloudExadataInfrastructureId}`); } /** * Adds a resource of type cloud-vm-cluster to the statement * * https://docs.aws.amazon.com/odb/latest/APIReference/API_CloudVmCluster.html * * @param cloudVmClusterId - Identifier for the cloudVmClusterId. * @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. * * Possible conditions: * - .ifAwsResourceTag() */ onCloudVmCluster(cloudVmClusterId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:cloud-vm-cluster/${cloudVmClusterId}`); } /** * Adds a resource of type db-node to the statement * * https://docs.aws.amazon.com/odb/latest/APIReference/API_DbNode.html * * @param dbNodeId - Identifier for the dbNodeId. * @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. * * Possible conditions: * - .ifAwsResourceTag() */ onDbNode(dbNodeId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:db-node/${dbNodeId}`); } /** * Adds a resource of type odb-network to the statement * * https://docs.aws.amazon.com/odb/latest/APIReference/API_OdbNetwork.html * * @param odbNetworkId - Identifier for the odbNetworkId. * @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. * * Possible conditions: * - .ifAwsResourceTag() */ onOdbNetwork(odbNetworkId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:odb-network/${odbNetworkId}`); } /** * Adds a resource of type odb-peering-connection to the statement * * https://docs.aws.amazon.com/odb/latest/APIReference/API_OdbPeeringConnection.html * * @param odbPeeringConnectionId - Identifier for the odbPeeringConnectionId. * @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. * * Possible conditions: * - .ifAwsResourceTag() */ onOdbPeeringConnection(odbPeeringConnectionId, account, region, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:odb-peering-connection/${odbPeeringConnectionId}`); } /** * Filters access by a tag key and value pair that is allowed in the request * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag * * Applies to actions: * - .toCreateCloudAutonomousVmCluster() * - .toCreateCloudExadataInfrastructure() * - .toCreateCloudVmCluster() * - .toCreateOdbNetwork() * - .toCreateOdbPeeringConnection() * - .toTagResource() * * @param tagKey The tag key to check * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsRequestTag(tagKey, value, operator) { return this.if(`aws:RequestTag/${tagKey}`, value, operator ?? 'StringLike'); } /** * Filters access by a tag key and value pair of a resource * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag * * Applies to actions: * - .toListTagsForResource() * - .toTagResource() * - .toUntagResource() * * Applies to resource types: * - cloud-autonomous-vm-cluster * - cloud-exadata-infrastructure * - cloud-vm-cluster * - db-node * - odb-network * - odb-peering-connection * * @param tagKey The tag key to check * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsResourceTag(tagKey, value, operator) { return this.if(`aws:ResourceTag/${tagKey}`, value, operator ?? 'StringLike'); } /** * Filters access by a list of tag keys that are allowed in the request * * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys * * Applies to actions: * - .toCreateCloudAutonomousVmCluster() * - .toCreateCloudExadataInfrastructure() * - .toCreateCloudVmCluster() * - .toCreateOdbNetwork() * - .toCreateOdbPeeringConnection() * - .toTagResource() * - .toUntagResource() * * @param value The value(s) to check * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike` */ ifAwsTagKeys(value, operator) { return this.if(`aws:TagKeys`, value, operator ?? 'StringLike'); } /** * Statement provider for service [odb](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsservice-oracledatabase_aws.html). * */ constructor(props) { super(props); this.servicePrefix = 'odb'; this.accessLevelList = { Write: [ 'AcceptMarketplaceRegistration', 'AssociateIamRoleToResource', 'CreateCloudAutonomousVmCluster', 'CreateCloudExadataInfrastructure', 'CreateCloudVmCluster', 'CreateDbNode', 'CreateGrantShare', 'CreateOdbNetwork', 'CreateOdbPeeringConnection', 'CreateOutboundIntegration', 'DeleteCloudAutonomousVmCluster', 'DeleteCloudExadataInfrastructure', 'DeleteCloudVmCluster', 'DeleteDbNode', 'DeleteGrantShare', 'DeleteOdbNetwork', 'DeleteOdbPeeringConnection', 'DeleteResourcePolicy', 'DisassociateIamRoleFromResource', 'InitializeService', 'PutResourcePolicy', 'RebootDbNode', 'StartDbNode', 'StopDbNode', 'UpdateCloudExadataInfrastructure', 'UpdateGrantShare', 'UpdateOdbNetwork', 'UpdateOdbPeeringConnection', 'UpdateOutboundIntegration' ], Read: [ 'GetCloudAutonomousVmCluster', 'GetCloudExadataInfrastructure', 'GetCloudExadataInfrastructureUnallocatedResources', 'GetCloudVmCluster', 'GetDbNode', 'GetDbServer', 'GetOciOnboardingStatus', 'GetOdbNetwork', 'GetOdbPeeringConnection', 'GetResourcePolicy', 'ListAutonomousVirtualMachines', 'ListDbServers', 'ListDbSystemShapes', 'ListGiVersions', 'ListSystemVersions', 'ListTagsForResource' ], List: [ 'ListCloudAutonomousVmClusters', 'ListCloudExadataInfrastructures', 'ListCloudVmClusters', 'ListDbNodes', 'ListOdbNetworks', 'ListOdbPeeringConnections' ], Tagging: [ 'TagResource', 'UntagResource' ] }; } } exports.Odb = Odb; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1vcmFjbGVkYXRhYmFzZS1hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzZXJ2aWNlLW9yYWNsZWRhdGFiYXNlLWF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBeUQ7QUFHekQ7Ozs7R0FJRztBQUNILE1BQWEsR0FBSSxTQUFRLHdCQUFlO0lBR3RDOzs7Ozs7T0FNRztJQUNJLCtCQUErQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksNEJBQTRCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksZ0NBQWdDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksa0NBQWtDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksc0JBQXNCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7Ozs7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bUQ7Z0JBQ25ELG1CQUFtQjtnQkFDbkIsV0FBVztnQkFDWCxhQUFhO2dCQUNiLHdCQUF3QjtnQkFDeEIsZUFBZTtnQkFDZix5QkFBeUI7Z0JBQ3pCLG1CQUFtQjtnQkFDbkIsK0JBQStCO2dCQUMvQixlQUFlO2dCQUNmLG9CQUFvQjtnQkFDcEIsZ0JBQWdCO2dCQUNoQixvQkFBb0I7Z0JBQ3BCLHFCQUFxQjthQUN0QjtZQUNELElBQUksRUFBRTtnQkFDSiwrQkFBK0I7Z0JBQy9CLGlDQUFpQztnQkFDakMscUJBQXFCO2dCQUNyQixhQUFhO2dCQUNiLGlCQUFpQjtnQkFDakIsMkJBQTJCO2FBQzVCO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLGFBQWE7Z0JBQ2IsZUFBZTthQUNoQjtTQUNGLENBQUM7SUFrTEYsQ0FBQztDQUNGO0FBdjBCRCxrQkF1MEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzTGV2ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IGF3c19pYW0gYXMgaWFtIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbi8qKlxuICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFtvZGJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2F3c3NlcnZpY2Utb3JhY2xlZGF0YWJhc2VfYXdzLmh0bWwpLlxuICpcbiAqIEBwYXJhbSBzaWQgW1NJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19zaWQuaHRtbCkgb2YgdGhlIHN0YXRlbWVudFxuICovXG5leHBvcnQgY2xhc3MgT2RiIGV4dGVuZHMgUG9saWN5U3RhdGVtZW50IHtcbiAgcHVibGljIHNlcnZpY2VQcmVmaXggPSAnb2RiJztcblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmVnaXN0ZXIgdGhlIEFtYXpvbiBXZWIgU2VydmljZXMgTWFya2V0cGxhY2UgdG9rZW4gZm9yIHlvdXIgQW1hem9uIFdlYiBTZXJ2aWNlcyBhY2NvdW50IHRvIGFjdGl2YXRlIHlvdXIgT3JhY2xlIERhdGFiYXNlQEFtYXpvbiBXZWIgU2VydmljZXMgc3Vic2NyaXB0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9BY2NlcHRNYXJrZXRwbGFjZVJlZ2lzdHJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9BY2NlcHRNYXJrZXRwbGFjZVJlZ2lzdHJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQWNjZXB0TWFya2V0cGxhY2VSZWdpc3RyYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBhc3NvY2lhdGUgYW4gQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSBzZXJ2aWNlIHJvbGUgd2l0aCBhIHNwZWNpZmllZCByZXNvdXJjZSB0byBlbmFibGUgQVdTIHNlcnZpY2UgaW50ZWdyYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Fzc29jaWF0ZUlhbVJvbGVUb1Jlc291cmNlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Fzc29jaWF0ZUlhbVJvbGVUb1Jlc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdBc3NvY2lhdGVJYW1Sb2xlVG9SZXNvdXJjZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIG5ldyBBdXRvbm9tb3VzIFZNIGNsdXN0ZXIgaW4gdGhlIHNwZWNpZmllZCBFeGFkYXRhIGluZnJhc3RydWN0dXJlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlQ2xvdWRBdXRvbm9tb3VzVm1DbHVzdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gRXhhZGF0YSBpbmZyYXN0cnVjdHVyZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlQ2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmUuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlQ2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUNsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgVk0gY2x1c3RlciBvbiB0aGUgc3BlY2lmaWVkIEV4YWRhdGEgaW5mcmFzdHJ1Y3R1cmVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUNsb3VkVm1DbHVzdGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUNsb3VkVm1DbHVzdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVDbG91ZFZtQ2x1c3RlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIERCIE5vZGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlRGJOb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVEYk5vZGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gT0RCIEdyYW50IFNoYXJlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUdyYW50U2hhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUdyYW50U2hhcmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gT0RCIG5ldHdvcmtcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZU9kYk5ldHdvcmsuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlT2RiTmV0d29yaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlT2RiTmV0d29yaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBPREIgUGVlcmluZyBDb25uZWN0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVPZGJQZWVyaW5nQ29ubmVjdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVPZGJQZWVyaW5nQ29ubmVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlT2RiUGVlcmluZ0Nvbm5lY3Rpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYW4gT3V0Ym91bmQgSW50ZWdyYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlT3V0Ym91bmRJbnRlZ3JhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlT3V0Ym91bmRJbnRlZ3JhdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIERlbGV0ZXMgYW4gQXV0b25vbW91cyBWTSBjbHVzdGVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlQ2xvdWRBdXRvbm9tb3VzVm1DbHVzdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgYSBzcGVjaWZpZWQgRXhhZGF0YSBpbmZyYXN0cnVjdHVyZS4gQmVmb3JlIHlvdSB1c2UgdGhpcyBvcGVyYXRpb24sIG1ha2Ugc3VyZSB0byBkZWxldGUgYWxsIG9mIHRoZSBWTSBjbHVzdGVycyB0aGF0IGFyZSBob3N0ZWQgb24gdGhpcyBFeGFkYXRhIGluZnJhc3RydWN0dXJlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlQ2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgYSBzcGVjaWZpZWQgVk0gY2x1c3RlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlQ2xvdWRWbUNsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlQ2xvdWRWbUNsdXN0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUNsb3VkVm1DbHVzdGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIGEgREIgTm9kZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVEYk5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZURiTm9kZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBhbiBPREIgR3JhbnQgU2hhcmVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlR3JhbnRTaGFyZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlR3JhbnRTaGFyZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgc3BlY2lmaWVkIE9EQiBuZXR3b3JrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVPZGJOZXR3b3JrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZU9kYk5ldHdvcmsoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZU9kYk5ldHdvcmsnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIHNwZWNpZmllZCBPREIgUGVlcmluZyBDb25uZWN0aW9uLiBXaGVuIHlvdSBkZWxldGUgYW4gT0RCIHBlZXJpbmcgY29ubmVjdGlvbiwgdGhlIHVuZGVybHlpbmcgVlBDIHBlZXJpbmcgY29ubmVjdGlvbiBpcyBhbHNvIGRlbGV0ZWRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZU9kYlBlZXJpbmdDb25uZWN0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZU9kYlBlZXJpbmdDb25uZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVPZGJQZWVyaW5nQ29ubmVjdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBhIHJlc291cmNlIHBvbGljeVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVSZXNvdXJjZVBvbGljeSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlUmVzb3VyY2VQb2xpY3knKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkaXNhc3NvY2lhdGUgYW4gQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSBzZXJ2aWNlIHJvbGUgZnJvbSBhIHNwZWNpZmllZCByZXNvdXJjZSB0byBkaXNhYmxlIEFXUyBzZXJ2aWNlIGludGVncmF0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EaXNhc3NvY2lhdGVJYW1Sb2xlRnJvbVJlc291cmNlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rpc2Fzc29jaWF0ZUlhbVJvbGVGcm9tUmVzb3VyY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rpc2Fzc29jaWF0ZUlhbVJvbGVGcm9tUmVzb3VyY2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBBdXRvbm9tb3VzIFZNIGNsdXN0ZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0Q2xvdWRBdXRvbm9tb3VzVm1DbHVzdGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldENsb3VkQXV0b25vbW91c1ZtQ2x1c3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0Q2xvdWRBdXRvbm9tb3VzVm1DbHVzdGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQgRXhhZGF0YSBpbmZyYXN0cnVjdHVyZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0Q2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCB1bmFsbG9jYXRlZCByZXNvdXJjZXMgaW4gYSBzcGVjaWZpZWQgQ2xvdWQgRXhhZGF0YSBJbmZyYXN0cnVjdHVyZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZVVuYWxsb2NhdGVkUmVzb3VyY2VzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldENsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlVW5hbGxvY2F0ZWRSZXNvdXJjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldENsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlVW5hbGxvY2F0ZWRSZXNvdXJjZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNwZWNpZmllZCBWTSBjbHVzdGVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldENsb3VkVm1DbHVzdGVyLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldENsb3VkVm1DbHVzdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXRDbG91ZFZtQ2x1c3RlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIERCIG5vZGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqI