@horietakehiro/aws-cdk-utul 0.10.2 → 0.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/lib/stack-manager.d.ts +41 -0
  2. package/lib/stack-manager.js +132 -0
  3. package/lib/types/cfn-resource-types/aws-amazonmq-configuration.d.ts +35 -5
  4. package/lib/types/cfn-resource-types/aws-amazonmq-configuration.js +1 -1
  5. package/lib/types/cfn-resource-types/aws-apigateway-vpclink.d.ts +0 -9
  6. package/lib/types/cfn-resource-types/aws-apigateway-vpclink.js +1 -1
  7. package/lib/types/cfn-resource-types/aws-apigatewayv2-domainname.d.ts +2 -2
  8. package/lib/types/cfn-resource-types/aws-apigatewayv2-domainname.js +1 -1
  9. package/lib/types/cfn-resource-types/aws-appconfig-deploymentstrategy.d.ts +56 -8
  10. package/lib/types/cfn-resource-types/aws-appconfig-deploymentstrategy.js +1 -1
  11. package/lib/types/cfn-resource-types/aws-appsync-datasource.d.ts +151 -31
  12. package/lib/types/cfn-resource-types/aws-appsync-datasource.js +1 -1
  13. package/lib/types/cfn-resource-types/aws-appsync-graphqlapi.d.ts +225 -36
  14. package/lib/types/cfn-resource-types/aws-appsync-graphqlapi.js +1 -1
  15. package/lib/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.d.ts +6 -1
  16. package/lib/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.js +1 -1
  17. package/lib/types/cfn-resource-types/aws-b2bi-capability.d.ts +2 -0
  18. package/lib/types/cfn-resource-types/aws-b2bi-capability.js +1 -1
  19. package/lib/types/cfn-resource-types/aws-b2bi-partnership.d.ts +37 -1
  20. package/lib/types/cfn-resource-types/aws-b2bi-partnership.js +1 -1
  21. package/lib/types/cfn-resource-types/aws-b2bi-transformer.d.ts +41 -4
  22. package/lib/types/cfn-resource-types/aws-b2bi-transformer.js +1 -1
  23. package/lib/types/cfn-resource-types/aws-backup-logicallyairgappedbackupvault.d.ts +28 -0
  24. package/lib/types/cfn-resource-types/aws-backup-logicallyairgappedbackupvault.js +3 -0
  25. package/lib/types/cfn-resource-types/aws-bedrock-agent.d.ts +1 -1
  26. package/lib/types/cfn-resource-types/aws-bedrock-agent.js +1 -1
  27. package/lib/types/cfn-resource-types/aws-bedrock-flow.d.ts +17 -6
  28. package/lib/types/cfn-resource-types/aws-bedrock-flow.js +1 -1
  29. package/lib/types/cfn-resource-types/aws-bedrock-flowversion.d.ts +17 -6
  30. package/lib/types/cfn-resource-types/aws-bedrock-flowversion.js +1 -1
  31. package/lib/types/cfn-resource-types/aws-bedrock-prompt.d.ts +3 -7
  32. package/lib/types/cfn-resource-types/aws-bedrock-prompt.js +1 -1
  33. package/lib/types/cfn-resource-types/aws-bedrock-promptversion.d.ts +4 -8
  34. package/lib/types/cfn-resource-types/aws-bedrock-promptversion.js +1 -1
  35. package/lib/types/cfn-resource-types/aws-cloudformation-customresource.d.ts +2 -1
  36. package/lib/types/cfn-resource-types/aws-cloudformation-customresource.js +1 -1
  37. package/lib/types/cfn-resource-types/aws-codepipeline-pipeline.d.ts +23 -2
  38. package/lib/types/cfn-resource-types/aws-codepipeline-pipeline.js +1 -1
  39. package/lib/types/cfn-resource-types/aws-cognito-userpool.d.ts +2 -0
  40. package/lib/types/cfn-resource-types/aws-cognito-userpool.js +1 -1
  41. package/lib/types/cfn-resource-types/aws-cognito-userpoolidentityprovider.d.ts +15 -8
  42. package/lib/types/cfn-resource-types/aws-cognito-userpoolidentityprovider.js +1 -1
  43. package/lib/types/cfn-resource-types/aws-connect-contactflow.d.ts +1 -1
  44. package/lib/types/cfn-resource-types/aws-connect-contactflow.js +1 -1
  45. package/lib/types/cfn-resource-types/aws-connect-hoursofoperation.d.ts +18 -18
  46. package/lib/types/cfn-resource-types/aws-connect-hoursofoperation.js +1 -1
  47. package/lib/types/cfn-resource-types/aws-datasync-task.d.ts +96 -96
  48. package/lib/types/cfn-resource-types/aws-datasync-task.js +1 -1
  49. package/lib/types/cfn-resource-types/aws-dms-datamigration.d.ts +90 -0
  50. package/lib/types/cfn-resource-types/aws-dms-datamigration.js +3 -0
  51. package/lib/types/cfn-resource-types/aws-dms-replicationinstance.d.ts +1 -0
  52. package/lib/types/cfn-resource-types/aws-dms-replicationinstance.js +1 -1
  53. package/lib/types/cfn-resource-types/aws-ec2-capacityreservation.d.ts +1 -0
  54. package/lib/types/cfn-resource-types/aws-ec2-capacityreservation.js +1 -1
  55. package/lib/types/cfn-resource-types/aws-ec2-eip.d.ts +2 -0
  56. package/lib/types/cfn-resource-types/aws-ec2-eip.js +1 -1
  57. package/lib/types/cfn-resource-types/aws-ec2-natgateway.d.ts +1 -1
  58. package/lib/types/cfn-resource-types/aws-ec2-natgateway.js +1 -1
  59. package/lib/types/cfn-resource-types/aws-ec2-transitgateway.d.ts +6 -5
  60. package/lib/types/cfn-resource-types/aws-ec2-transitgateway.js +1 -1
  61. package/lib/types/cfn-resource-types/aws-ec2-transitgatewayattachment.d.ts +4 -0
  62. package/lib/types/cfn-resource-types/aws-ec2-transitgatewayattachment.js +1 -1
  63. package/lib/types/cfn-resource-types/aws-ec2-transitgatewayvpcattachment.d.ts +14 -10
  64. package/lib/types/cfn-resource-types/aws-ec2-transitgatewayvpcattachment.js +1 -1
  65. package/lib/types/cfn-resource-types/aws-ec2-vpc.d.ts +1 -1
  66. package/lib/types/cfn-resource-types/aws-ec2-vpc.js +1 -1
  67. package/lib/types/cfn-resource-types/aws-ec2-vpcendpoint.d.ts +2 -1
  68. package/lib/types/cfn-resource-types/aws-ec2-vpcendpoint.js +1 -1
  69. package/lib/types/cfn-resource-types/aws-ec2-vpcendpointconnectionnotification.d.ts +8 -8
  70. package/lib/types/cfn-resource-types/aws-ec2-vpcendpointconnectionnotification.js +1 -1
  71. package/lib/types/cfn-resource-types/aws-ec2-vpnconnection.d.ts +213 -3
  72. package/lib/types/cfn-resource-types/aws-ec2-vpnconnection.js +1 -1
  73. package/lib/types/cfn-resource-types/aws-ecs-capacityprovider.d.ts +1 -1
  74. package/lib/types/cfn-resource-types/aws-ecs-capacityprovider.js +1 -1
  75. package/lib/types/cfn-resource-types/aws-ecs-service.d.ts +10 -1
  76. package/lib/types/cfn-resource-types/aws-ecs-service.js +1 -1
  77. package/lib/types/cfn-resource-types/aws-ecs-taskset.d.ts +57 -51
  78. package/lib/types/cfn-resource-types/aws-ecs-taskset.js +1 -1
  79. package/lib/types/cfn-resource-types/aws-eks-cluster.d.ts +11 -1
  80. package/lib/types/cfn-resource-types/aws-eks-cluster.js +1 -1
  81. package/lib/types/cfn-resource-types/aws-elasticache-globalreplicationgroup.d.ts +4 -0
  82. package/lib/types/cfn-resource-types/aws-elasticache-globalreplicationgroup.js +1 -1
  83. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.d.ts +79 -63
  84. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.js +1 -1
  85. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.d.ts +65 -63
  86. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.js +1 -1
  87. package/lib/types/cfn-resource-types/aws-emr-cluster.d.ts +35 -14
  88. package/lib/types/cfn-resource-types/aws-emr-cluster.js +1 -1
  89. package/lib/types/cfn-resource-types/aws-emr-instancefleetconfig.d.ts +21 -0
  90. package/lib/types/cfn-resource-types/aws-emr-instancefleetconfig.js +1 -1
  91. package/lib/types/cfn-resource-types/aws-fis-experimenttemplate.d.ts +81 -81
  92. package/lib/types/cfn-resource-types/aws-fis-experimenttemplate.js +1 -1
  93. package/lib/types/cfn-resource-types/aws-gamelift-containergroupdefinition.d.ts +19 -0
  94. package/lib/types/cfn-resource-types/aws-gamelift-containergroupdefinition.js +1 -1
  95. package/lib/types/cfn-resource-types/aws-glue-crawler.d.ts +179 -1
  96. package/lib/types/cfn-resource-types/aws-glue-crawler.js +1 -1
  97. package/lib/types/cfn-resource-types/aws-glue-job.d.ts +96 -6
  98. package/lib/types/cfn-resource-types/aws-glue-job.js +1 -1
  99. package/lib/types/cfn-resource-types/aws-glue-schema.d.ts +1 -1
  100. package/lib/types/cfn-resource-types/aws-glue-schema.js +1 -1
  101. package/lib/types/cfn-resource-types/aws-glue-usageprofile.d.ts +64 -0
  102. package/lib/types/cfn-resource-types/aws-glue-usageprofile.js +3 -0
  103. package/lib/types/cfn-resource-types/aws-iam-policy.d.ts +4 -1
  104. package/lib/types/cfn-resource-types/aws-iam-policy.js +1 -1
  105. package/lib/types/cfn-resource-types/aws-iam-role.d.ts +3 -2
  106. package/lib/types/cfn-resource-types/aws-iam-role.js +1 -1
  107. package/lib/types/cfn-resource-types/aws-imagebuilder-component.d.ts +1 -1
  108. package/lib/types/cfn-resource-types/aws-imagebuilder-component.js +1 -1
  109. package/lib/types/cfn-resource-types/aws-imagebuilder-infrastructureconfiguration.d.ts +22 -0
  110. package/lib/types/cfn-resource-types/aws-imagebuilder-infrastructureconfiguration.js +1 -1
  111. package/lib/types/cfn-resource-types/aws-iot-domainconfiguration.d.ts +6 -0
  112. package/lib/types/cfn-resource-types/aws-iot-domainconfiguration.js +1 -1
  113. package/lib/types/cfn-resource-types/aws-iotevents-alarmmodel.d.ts +195 -79
  114. package/lib/types/cfn-resource-types/aws-iotevents-alarmmodel.js +1 -1
  115. package/lib/types/cfn-resource-types/aws-iotevents-detectormodel.d.ts +177 -85
  116. package/lib/types/cfn-resource-types/aws-iotevents-detectormodel.js +1 -1
  117. package/lib/types/cfn-resource-types/aws-iotevents-input.d.ts +9 -11
  118. package/lib/types/cfn-resource-types/aws-iotevents-input.js +1 -1
  119. package/lib/types/cfn-resource-types/aws-ivs-encoderconfiguration.d.ts +2 -2
  120. package/lib/types/cfn-resource-types/aws-ivs-encoderconfiguration.js +1 -1
  121. package/lib/types/cfn-resource-types/aws-kinesis-resourcepolicy.d.ts +17 -0
  122. package/lib/types/cfn-resource-types/aws-kinesis-resourcepolicy.js +3 -0
  123. package/lib/types/cfn-resource-types/aws-lakeformation-principalpermissions.d.ts +1 -1
  124. package/lib/types/cfn-resource-types/aws-lakeformation-principalpermissions.js +1 -1
  125. package/lib/types/cfn-resource-types/aws-lakeformation-tag.d.ts +1 -1
  126. package/lib/types/cfn-resource-types/aws-lakeformation-tag.js +1 -1
  127. package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.d.ts +115 -108
  128. package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.js +1 -1
  129. package/lib/types/cfn-resource-types/aws-medialive-channel.d.ts +2 -0
  130. package/lib/types/cfn-resource-types/aws-medialive-channel.js +1 -1
  131. package/lib/types/cfn-resource-types/aws-memorydb-cluster.d.ts +4 -0
  132. package/lib/types/cfn-resource-types/aws-memorydb-cluster.js +1 -1
  133. package/lib/types/cfn-resource-types/aws-networkfirewall-firewallpolicy.d.ts +3 -0
  134. package/lib/types/cfn-resource-types/aws-networkfirewall-firewallpolicy.js +1 -1
  135. package/lib/types/cfn-resource-types/aws-organizations-policy.d.ts +2 -2
  136. package/lib/types/cfn-resource-types/aws-organizations-policy.js +1 -1
  137. package/lib/types/cfn-resource-types/aws-qbusiness-webexperience.d.ts +6 -0
  138. package/lib/types/cfn-resource-types/aws-qbusiness-webexperience.js +1 -1
  139. package/lib/types/cfn-resource-types/aws-quicksight-analysis.d.ts +13 -0
  140. package/lib/types/cfn-resource-types/aws-quicksight-analysis.js +1 -1
  141. package/lib/types/cfn-resource-types/aws-quicksight-dashboard.d.ts +13 -0
  142. package/lib/types/cfn-resource-types/aws-quicksight-dashboard.js +1 -1
  143. package/lib/types/cfn-resource-types/aws-quicksight-dataset.d.ts +2 -2
  144. package/lib/types/cfn-resource-types/aws-quicksight-dataset.js +1 -1
  145. package/lib/types/cfn-resource-types/aws-quicksight-datasource.d.ts +247 -242
  146. package/lib/types/cfn-resource-types/aws-quicksight-datasource.js +1 -1
  147. package/lib/types/cfn-resource-types/aws-quicksight-folder.d.ts +79 -0
  148. package/lib/types/cfn-resource-types/aws-quicksight-folder.js +3 -0
  149. package/lib/types/cfn-resource-types/aws-quicksight-template.d.ts +8 -0
  150. package/lib/types/cfn-resource-types/aws-quicksight-template.js +1 -1
  151. package/lib/types/cfn-resource-types/aws-rds-dbcluster.d.ts +366 -366
  152. package/lib/types/cfn-resource-types/aws-rds-dbcluster.js +1 -1
  153. package/lib/types/cfn-resource-types/aws-rds-dbinstance.d.ts +1 -4
  154. package/lib/types/cfn-resource-types/aws-rds-dbinstance.js +1 -1
  155. package/lib/types/cfn-resource-types/aws-rds-globalcluster.d.ts +19 -0
  156. package/lib/types/cfn-resource-types/aws-rds-globalcluster.js +1 -1
  157. package/lib/types/cfn-resource-types/aws-redshift-integration.d.ts +61 -0
  158. package/lib/types/cfn-resource-types/aws-redshift-integration.js +3 -0
  159. package/lib/types/cfn-resource-types/aws-refactorspaces-environment.d.ts +2 -2
  160. package/lib/types/cfn-resource-types/aws-refactorspaces-environment.js +1 -1
  161. package/lib/types/cfn-resource-types/aws-route53profiles-profileassociation.d.ts +1 -1
  162. package/lib/types/cfn-resource-types/aws-route53profiles-profileassociation.js +1 -1
  163. package/lib/types/cfn-resource-types/aws-route53resolver-resolverrule.d.ts +4 -4
  164. package/lib/types/cfn-resource-types/aws-route53resolver-resolverrule.js +1 -1
  165. package/lib/types/cfn-resource-types/aws-s3-bucket.d.ts +599 -591
  166. package/lib/types/cfn-resource-types/aws-s3-bucket.js +1 -1
  167. package/lib/types/cfn-resource-types/aws-s3express-directorybucket.d.ts +34 -3
  168. package/lib/types/cfn-resource-types/aws-s3express-directorybucket.js +1 -1
  169. package/lib/types/cfn-resource-types/aws-sagemaker-domain.d.ts +8 -0
  170. package/lib/types/cfn-resource-types/aws-sagemaker-domain.js +1 -1
  171. package/lib/types/cfn-resource-types/aws-sagemaker-endpoint.d.ts +137 -20
  172. package/lib/types/cfn-resource-types/aws-sagemaker-endpoint.js +1 -1
  173. package/lib/types/cfn-resource-types/aws-secretsmanager-secret.d.ts +1 -1
  174. package/lib/types/cfn-resource-types/aws-secretsmanager-secret.js +1 -1
  175. package/lib/types/cfn-resource-types/aws-securityhub-automationrule.d.ts +4 -4
  176. package/lib/types/cfn-resource-types/aws-securityhub-automationrule.js +1 -1
  177. package/lib/types/cfn-resource-types/aws-securityhub-findingaggregator.d.ts +2 -2
  178. package/lib/types/cfn-resource-types/aws-securityhub-findingaggregator.js +1 -1
  179. package/lib/types/cfn-resource-types/aws-ses-mailmanagerruleset.d.ts +4 -1
  180. package/lib/types/cfn-resource-types/aws-ses-mailmanagerruleset.js +1 -1
  181. package/lib/types/cfn-resource-types/aws-sns-topic.d.ts +2 -6
  182. package/lib/types/cfn-resource-types/aws-sns-topic.js +1 -1
  183. package/lib/types/cfn-resource-types/aws-sqs-queue.d.ts +12 -12
  184. package/lib/types/cfn-resource-types/aws-sqs-queue.js +1 -1
  185. package/lib/types/cfn-resource-types/aws-sqs-queuepolicy.d.ts +1 -3
  186. package/lib/types/cfn-resource-types/aws-sqs-queuepolicy.js +1 -1
  187. package/lib/types/cfn-resource-types/aws-ssmquicksetup-configurationmanager.d.ts +1 -1
  188. package/lib/types/cfn-resource-types/aws-ssmquicksetup-configurationmanager.js +1 -1
  189. package/lib/types/cfn-resource-types/aws-transfer-server.d.ts +70 -36
  190. package/lib/types/cfn-resource-types/aws-transfer-server.js +1 -1
  191. package/lib/types/cfn-resource-types/aws-wisdom-aiprompt.d.ts +34 -0
  192. package/lib/types/cfn-resource-types/aws-wisdom-aiprompt.js +3 -0
  193. package/lib/types/cfn-resource-types/aws-wisdom-knowledgebase.d.ts +1 -1
  194. package/lib/types/cfn-resource-types/aws-wisdom-knowledgebase.js +1 -1
  195. package/lib/types/cfn-resource-types/aws-workspacesweb-identityprovider.d.ts +9 -0
  196. package/lib/types/cfn-resource-types/aws-workspacesweb-identityprovider.js +1 -1
  197. package/lib/types/cfn-resource-types.d.ts +14 -0
  198. package/lib/types/cfn-resource-types.js +40 -26
  199. package/package.json +11 -7
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYGBBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwYGAgcmVzb3VyY2UgZGVmaW5lcyBhbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cCwgd2hpY2ggaXMgYSBjb2xsZWN0aW9uIG9mIEFtYXpvbiBFQzIgaW5zdGFuY2VzIHRoYXQgYXJlIHRyZWF0ZWQgYXMgYSBsb2dpY2FsIGdyb3VwaW5nIGZvciB0aGUgcHVycG9zZXMgb2YgYXV0b21hdGljIHNjYWxpbmcgYW5kIG1hbmFnZW1lbnQuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nLCBzZWUgdGhlIFtBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS93aGF0LWlzLWFtYXpvbi1lYzItYXV0by1zY2FsaW5nLmh0bWwpLiBcbiAqICAgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgY29uZmlndXJlcyBpbnN0YW5jZXMgbGF1bmNoZWQgYXMgcGFydCBvZiBhbiBBdXRvIFNjYWxpbmcgZ3JvdXAgdXNpbmcgZWl0aGVyIGEgW2xhdW5jaCB0ZW1wbGF0ZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1sYXVuY2h0ZW1wbGF0ZS5odG1sKSBvciBhIGxhdW5jaCBjb25maWd1cmF0aW9uLiBXZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3UgZG8gbm90IHVzZSBsYXVuY2ggY29uZmlndXJhdGlvbnMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0xhdW5jaCBjb25maWd1cmF0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvbGF1bmNoLWNvbmZpZ3VyYXRpb25zLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgRm9yIGhlbHAgbWlncmF0aW5nIGZyb20gbGF1bmNoIGNvbmZpZ3VyYXRpb25zIHRvIGxhdW5jaCB0ZW1wbGF0ZXMsIHNlZSBbTWlncmF0ZSBDbG91ZEZvcm1hdGlvbiBzdGFja3MgZnJvbSBsYXVuY2ggY29uZmlndXJhdGlvbnMgdG8gbGF1bmNoIHRlbXBsYXRlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvbWlncmF0ZS1sYXVuY2gtY29uZmlndXJhdGlvbnMtd2l0aC1jbG91ZGZvcm1hdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfQVVUT1NDQUxJTkdfQVVUT1NDQUxJTkdHUk9VUCB7XG4vKipcbiAqIE9uZSBvciBtb3JlIGxpZmVjeWNsZSBob29rcyB0byBhZGQgdG8gdGhlIEF1dG8gU2NhbGluZyBncm91cCBiZWZvcmUgaW5zdGFuY2VzIGFyZSBsYXVuY2hlZC5cbiAqL1xuTGlmZWN5Y2xlSG9va1NwZWNpZmljYXRpb25MaXN0PzogTGlmZWN5Y2xlSG9va1NwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBBIGxpc3Qgb2YgQ2xhc3NpYyBMb2FkIEJhbGFuY2VycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBBdXRvIFNjYWxpbmcgZ3JvdXAuIEZvciBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycywgTmV0d29yayBMb2FkIEJhbGFuY2VycywgYW5kIEdhdGV3YXkgTG9hZCBCYWxhbmNlcnMsIHNwZWNpZnkgdGhlIGBgVGFyZ2V0R3JvdXBBUk5zYGAgcHJvcGVydHkgaW5zdGVhZC5cbiAqL1xuTG9hZEJhbGFuY2VyTmFtZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbGF1bmNoIGNvbmZpZ3VyYXRpb24gdG8gdXNlIHRvIGxhdW5jaCBpbnN0YW5jZXMuXG4gKiAgUmVxdWlyZWQgb25seSBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSBgYExhdW5jaFRlbXBsYXRlYGAsIGBgTWl4ZWRJbnN0YW5jZXNQb2xpY3lgYCwgb3IgYGBJbnN0YW5jZUlkYGAuXG4gKi9cbkxhdW5jaENvbmZpZ3VyYXRpb25OYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgc2VydmljZS1saW5rZWQgcm9sZSB0aGF0IHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgdXNlcyB0byBjYWxsIG90aGVyIEFXUyBzZXJ2aWNlIG9uIHlvdXIgYmVoYWxmLiBCeSBkZWZhdWx0LCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB1c2VzIGEgc2VydmljZS1saW5rZWQgcm9sZSBuYW1lZCBgYEFXU1NlcnZpY2VSb2xlRm9yQXV0b1NjYWxpbmdgYCwgd2hpY2ggaXQgY3JlYXRlcyBpZiBpdCBkb2VzIG5vdCBleGlzdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2VydmljZS1saW5rZWQgcm9sZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2F1dG9zY2FsaW5nLXNlcnZpY2UtbGlua2VkLXJvbGUuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuU2VydmljZUxpbmtlZFJvbGVBUk4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lcyAoQVJOKSBvZiB0aGUgRWxhc3RpYyBMb2FkIEJhbGFuY2luZyB0YXJnZXQgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuIEluc3RhbmNlcyBhcmUgcmVnaXN0ZXJlZCBhcyB0YXJnZXRzIHdpdGggdGhlIHRhcmdldCBncm91cHMuIFRoZSB0YXJnZXQgZ3JvdXBzIHJlY2VpdmUgaW5jb21pbmcgdHJhZmZpYyBhbmQgcm91dGUgcmVxdWVzdHMgdG8gb25lIG9yIG1vcmUgcmVnaXN0ZXJlZCB0YXJnZXRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2UgRWxhc3RpYyBMb2FkIEJhbGFuY2luZyB0byBkaXN0cmlidXRlIHRyYWZmaWMgYWNyb3NzIHRoZSBpbnN0YW5jZXMgaW4geW91ciBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2F1dG9zY2FsaW5nLWxvYWQtYmFsYW5jZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuVGFyZ2V0R3JvdXBBUk5zPzogc3RyaW5nW11cbi8qKlxuICogKk9ubHkgbmVlZGVkIGlmIHlvdSB1c2Ugc2ltcGxlIHNjYWxpbmcgcG9saWNpZXMuKiBcbiAqICBUaGUgYW1vdW50IG9mIHRpbWUsIGluIHNlY29uZHMsIGJldHdlZW4gb25lIHNjYWxpbmcgYWN0aXZpdHkgZW5kaW5nIGFuZCBhbm90aGVyIG9uZSBzdGFydGluZyBkdWUgdG8gc2ltcGxlIHNjYWxpbmcgcG9saWNpZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NjYWxpbmcgY29vbGRvd25zIGZvciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy1zY2FsaW5nLWNvb2xkb3ducy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIERlZmF1bHQ6IGBgMzAwYGAgc2Vjb25kc1xuICovXG5Db29sZG93bj86IHN0cmluZ1xuLyoqXG4gKiBDb25maWd1cmVzIGFuIEF1dG8gU2NhbGluZyBncm91cCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgd2hlbiBzcGVjaWZpZWQgZXZlbnRzIHRha2UgcGxhY2UuXG4gKi9cbk5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25zPzogTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFRoZSBkZXNpcmVkIGNhcGFjaXR5IGlzIHRoZSBpbml0aWFsIGNhcGFjaXR5IG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgYXQgdGhlIHRpbWUgb2YgaXRzIGNyZWF0aW9uIGFuZCB0aGUgY2FwYWNpdHkgaXQgYXR0ZW1wdHMgdG8gbWFpbnRhaW4uIEl0IGNhbiBzY2FsZSBiZXlvbmQgdGhpcyBjYXBhY2l0eSBpZiB5b3UgY29uZmlndXJlIGF1dG9tYXRpYyBzY2FsaW5nLlxuICogIFRoZSBudW1iZXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgZ3JvdXAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBncm91cC4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgZGVzaXJlZCBjYXBhY2l0eSB3aGVuIGNyZWF0aW5nIHRoZSBzdGFjaywgdGhlIGRlZmF1bHQgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgZ3JvdXAuXG4gKiAgQ2xvdWRGb3JtYXRpb24gbWFya3MgdGhlIEF1dG8gU2NhbGluZyBncm91cCBhcyBzdWNjZXNzZnVsIChieSBzZXR0aW5nIGl0cyBzdGF0dXMgdG8gQ1JFQVRFX0NPTVBMRVRFKSB3aGVuIHRoZSBkZXNpcmVkIGNhcGFjaXR5IGlzIHJlYWNoZWQuIEhvd2V2ZXIsIGlmIGEgbWF4aW11bSBTcG90IHByaWNlIGlzIHNldCBpbiB0aGUgbGF1bmNoIHRlbXBsYXRlIG9yIGxhdW5jaCBjb25maWd1cmF0aW9uIHRoYXQgeW91IHNwZWNpZmllZCwgdGhlbiBkZXNpcmVkIGNhcGFjaXR5IGlzIG5vdCB1c2VkIGFzIGEgY3JpdGVyaWEgZm9yIHN1Y2Nlc3MuIFdoZXRoZXIgeW91ciByZXF1ZXN0IGlzIGZ1bGZpbGxlZCBkZXBlbmRzIG9uIFNwb3QgSW5zdGFuY2UgY2FwYWNpdHkgYW5kIHlvdXIgbWF4aW11bSBwcmljZS5cbiAqL1xuRGVzaXJlZENhcGFjaXR5Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgdGhhdCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3YWl0cyBiZWZvcmUgY2hlY2tpbmcgdGhlIGhlYWx0aCBzdGF0dXMgb2YgYW4gRUMyIGluc3RhbmNlIHRoYXQgaGFzIGNvbWUgaW50byBzZXJ2aWNlIGFuZCBtYXJraW5nIGl0IHVuaGVhbHRoeSBkdWUgdG8gYSBmYWlsZWQgaGVhbHRoIGNoZWNrLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3VyIGluc3RhbmNlcyBkbyBub3QgaW1tZWRpYXRlbHkgcGFzcyB0aGVpciBoZWFsdGggY2hlY2tzIGFmdGVyIHRoZXkgZW50ZXIgdGhlIGBgSW5TZXJ2aWNlYGAgc3RhdGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NldCB0aGUgaGVhbHRoIGNoZWNrIGdyYWNlIHBlcmlvZCBmb3IgYW4gQXV0byBTY2FsaW5nIGdyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9oZWFsdGgtY2hlY2stZ3JhY2UtcGVyaW9kLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgRGVmYXVsdDogYGAwYGAgc2Vjb25kc1xuICovXG5IZWFsdGhDaGVja0dyYWNlUGVyaW9kPzogbnVtYmVyXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgdW50aWwgYSBuZXcgaW5zdGFuY2UgaXMgY29uc2lkZXJlZCB0byBoYXZlIGZpbmlzaGVkIGluaXRpYWxpemluZyBhbmQgcmVzb3VyY2UgY29uc3VtcHRpb24gdG8gYmVjb21lIHN0YWJsZSBhZnRlciBpdCBlbnRlcnMgdGhlIGBgSW5TZXJ2aWNlYGAgc3RhdGUuIFxuICogIER1cmluZyBhbiBpbnN0YW5jZSByZWZyZXNoLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3YWl0cyBmb3IgdGhlIHdhcm0tdXAgcGVyaW9kIGFmdGVyIGl0IHJlcGxhY2VzIGFuIGluc3RhbmNlIGJlZm9yZSBpdCBtb3ZlcyBvbiB0byByZXBsYWNpbmcgdGhlIG5leHQgaW5zdGFuY2UuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGFsc28gd2FpdHMgZm9yIHRoZSB3YXJtLXVwIHBlcmlvZCBiZWZvcmUgYWdncmVnYXRpbmcgdGhlIG1ldHJpY3MgZm9yIG5ldyBpbnN0YW5jZXMgd2l0aCBleGlzdGluZyBpbnN0YW5jZXMgaW4gdGhlIEFtYXpvbiBDbG91ZFdhdGNoIG1ldHJpY3MgdGhhdCBhcmUgdXNlZCBmb3Igc2NhbGluZywgcmVzdWx0aW5nIGluIG1vcmUgcmVsaWFibGUgdXNhZ2UgZGF0YS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2V0IHRoZSBkZWZhdWx0IGluc3RhbmNlIHdhcm11cCBmb3IgYW4gQXV0byBTY2FsaW5nIGdyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWRlZmF1bHQtaW5zdGFuY2Utd2FybXVwLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgIFRvIG1hbmFnZSB2YXJpb3VzIHdhcm0tdXAgc2V0dGluZ3MgYXQgdGhlIGdyb3VwIGxldmVsLCB3ZSByZWNvbW1lbmQgdGhhdCB5b3Ugc2V0IHRoZSBkZWZhdWx0IGluc3RhbmNlIHdhcm11cCwgKmV2ZW4gaWYgaXQgaXMgc2V0IHRvIDAgc2Vjb25kcyouIFRvIHJlbW92ZSBhIHZhbHVlIHRoYXQgeW91IHByZXZpb3VzbHkgc2V0LCBpbmNsdWRlIHRoZSBwcm9wZXJ0eSBidXQgc3BlY2lmeSBgYC0xYGAgZm9yIHRoZSB2YWx1ZS4gSG93ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIGtlZXBpbmcgdGhlIGRlZmF1bHQgaW5zdGFuY2Ugd2FybXVwIGVuYWJsZWQgYnkgc3BlY2lmeWluZyBhIHZhbHVlIG9mIGBgMGBgIG9yIG90aGVyIG5vbWluYWwgdmFsdWUuXG4gKiAgIERlZmF1bHQ6IE5vbmVcbiAqL1xuRGVmYXVsdEluc3RhbmNlV2FybXVwPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIG5ld2x5IGxhdW5jaGVkIGluc3RhbmNlcyBhcmUgcHJvdGVjdGVkIGZyb20gdGVybWluYXRpb24gYnkgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2hlbiBzY2FsaW5nIGluLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBwcmV2ZW50aW5nIGluc3RhbmNlcyBmcm9tIHRlcm1pbmF0aW5nIG9uIHNjYWxlIGluLCBzZWUgW1VzZSBpbnN0YW5jZSBzY2FsZS1pbiBwcm90ZWN0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWluc3RhbmNlLXByb3RlY3Rpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuTmV3SW5zdGFuY2VzUHJvdGVjdGVkRnJvbVNjYWxlSW4/OiBib29sZWFuXG5MYXVuY2hUZW1wbGF0ZT86IExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvblxuTWl4ZWRJbnN0YW5jZXNQb2xpY3k/OiBNaXhlZEluc3RhbmNlc1BvbGljeVxuLyoqXG4gKiBBIGxpc3Qgb2Ygc3VibmV0IElEcyBmb3IgYSB2aXJ0dWFsIHByaXZhdGUgY2xvdWQgKFZQQykgd2hlcmUgaW5zdGFuY2VzIGluIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgY2FuIGJlIGNyZWF0ZWQuXG4gKiAgSWYgdGhpcyByZXNvdXJjZSBzcGVjaWZpZXMgcHVibGljIHN1Ym5ldHMgYW5kIGlzIGFsc28gaW4gYSBWUEMgdGhhdCBpcyBkZWZpbmVkIGluIHRoZSBzYW1lIHN0YWNrIHRlbXBsYXRlLCB5b3UgbXVzdCB1c2UgdGhlIFtEZXBlbmRzT24gYXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtYXR0cmlidXRlLWRlcGVuZHNvbi5odG1sKSB0byBkZWNsYXJlIGEgZGVwZW5kZW5jeSBvbiB0aGUgW1ZQQy1nYXRld2F5IGF0dGFjaG1lbnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItdnBjLWdhdGV3YXktYXR0YWNobWVudC5odG1sKS5cbiAqICAgV2hlbiB5b3UgdXBkYXRlIGBgVlBDWm9uZUlkZW50aWZpZXJgYCwgdGhpcyByZXRhaW5zIHRoZSBzYW1lIEF1dG8gU2NhbGluZyBncm91cCBhbmQgcmVwbGFjZXMgb2xkIGluc3RhbmNlcyB3aXRoIG5ldyBvbmVzLCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBzdWJuZXRzLiBZb3UgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBob3cgQ2xvdWRGb3JtYXRpb24gaGFuZGxlcyB0aGVzZSB1cGRhdGVzIGJ5IHVzaW5nIGFuIFtVcGRhdGVQb2xpY3kgYXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtYXR0cmlidXRlLXVwZGF0ZXBvbGljeS5odG1sKS5cbiAqICAgUmVxdWlyZWQgdG8gbGF1bmNoIGluc3RhbmNlcyBpbnRvIGEgbm9uZGVmYXVsdCBWUEMuIElmIHlvdSBzcGVjaWZ5IGBgVlBDWm9uZUlkZW50aWZpZXJgYCB3aXRoIGBgQXZhaWxhYmlsaXR5Wm9uZXNgYCwgdGhlIHN1Ym5ldHMgdGhhdCB5b3Ugc3BlY2lmeSBmb3IgdGhpcyBwcm9wZXJ0eSBtdXN0IHJlc2lkZSBpbiB0aG9zZSBBdmFpbGFiaWxpdHkgWm9uZXMuXG4gKi9cblZQQ1pvbmVJZGVudGlmaWVyPzogc3RyaW5nW11cbi8qKlxuICogT25lIG9yIG1vcmUgdGFncy4gWW91IGNhbiB0YWcgeW91ciBBdXRvIFNjYWxpbmcgZ3JvdXAgYW5kIHByb3BhZ2F0ZSB0aGUgdGFncyB0byB0aGUgQW1hem9uIEVDMiBpbnN0YW5jZXMgaXQgbGF1bmNoZXMuIFRhZ3MgYXJlIG5vdCBwcm9wYWdhdGVkIHRvIEFtYXpvbiBFQlMgdm9sdW1lcy4gVG8gYWRkIHRhZ3MgdG8gQW1hem9uIEVCUyB2b2x1bWVzLCBzcGVjaWZ5IHRoZSB0YWdzIGluIGEgbGF1bmNoIHRlbXBsYXRlIGJ1dCB1c2UgY2F1dGlvbi4gSWYgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBzcGVjaWZpZXMgYW4gaW5zdGFuY2UgdGFnIHdpdGggYSBrZXkgdGhhdCBpcyBhbHNvIHNwZWNpZmllZCBmb3IgdGhlIEF1dG8gU2NhbGluZyBncm91cCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBvZiB0aGF0IGluc3RhbmNlIHRhZyB3aXRoIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIEF1dG8gU2NhbGluZyBncm91cC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGFnIEF1dG8gU2NhbGluZyBncm91cHMgYW5kIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy10YWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cblRhZ3M/OiBUYWdQcm9wZXJ0eVtdXG4vKipcbiAqIFJlc2VydmVkLlxuICovXG5Db250ZXh0Pzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIENhcGFjaXR5IFJlYmFsYW5jaW5nIGlzIGVuYWJsZWQuIE90aGVyd2lzZSwgQ2FwYWNpdHkgUmViYWxhbmNpbmcgaXMgZGlzYWJsZWQuIFdoZW4geW91IHR1cm4gb24gQ2FwYWNpdHkgUmViYWxhbmNpbmcsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGF0dGVtcHRzIHRvIGxhdW5jaCBhIFNwb3QgSW5zdGFuY2Ugd2hlbmV2ZXIgQW1hem9uIEVDMiBub3RpZmllcyB0aGF0IGEgU3BvdCBJbnN0YW5jZSBpcyBhdCBhbiBlbGV2YXRlZCByaXNrIG9mIGludGVycnVwdGlvbi4gQWZ0ZXIgbGF1bmNoaW5nIGEgbmV3IGluc3RhbmNlLCBpdCB0aGVuIHRlcm1pbmF0ZXMgYW4gb2xkIGluc3RhbmNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2UgQ2FwYWNpdHkgUmViYWxhbmNpbmcgdG8gaGFuZGxlIEFtYXpvbiBFQzIgU3BvdCBJbnRlcnJ1cHRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWNhcGFjaXR5LXJlYmFsYW5jaW5nLmh0bWwpIGluIHRoZSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5DYXBhY2l0eVJlYmFsYW5jZT86IGJvb2xlYW5cbi8qKlxuICogVGhlIElEIG9mIHRoZSBpbnN0YW5jZSB1c2VkIHRvIGJhc2UgdGhlIGxhdW5jaCBjb25maWd1cmF0aW9uIG9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDcmVhdGUgYW4gQXV0byBTY2FsaW5nIGdyb3VwIHVzaW5nIGFuIEVDMiBpbnN0YW5jZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvY3JlYXRlLWFzZy1mcm9tLWluc3RhbmNlLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgSWYgeW91IHNwZWNpZnkgYGBMYXVuY2hUZW1wbGF0ZWBgLCBgYE1peGVkSW5zdGFuY2VzUG9saWN5YGAsIG9yIGBgTGF1bmNoQ29uZmlndXJhdGlvbk5hbWVgYCwgZG9uJ3Qgc3BlY2lmeSBgYEluc3RhbmNlSWRgYC5cbiAqL1xuSW5zdGFuY2VJZD86IHN0cmluZ1xuLyoqXG4gKiBBIGxpc3Qgb2YgQXZhaWxhYmlsaXR5IFpvbmVzIHdoZXJlIGluc3RhbmNlcyBpbiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGNhbiBiZSBjcmVhdGVkLiBVc2VkIGZvciBsYXVuY2hpbmcgaW50byB0aGUgZGVmYXVsdCBWUEMgc3VibmV0IGluIGVhY2ggQXZhaWxhYmlsaXR5IFpvbmUgd2hlbiBub3QgdXNpbmcgdGhlIGBgVlBDWm9uZUlkZW50aWZpZXJgYCBwcm9wZXJ0eSwgb3IgZm9yIGF0dGFjaGluZyBhIG5ldHdvcmsgaW50ZXJmYWNlIHdoZW4gYW4gZXhpc3RpbmcgbmV0d29yayBpbnRlcmZhY2UgSUQgaXMgc3BlY2lmaWVkIGluIGEgbGF1bmNoIHRlbXBsYXRlLlxuICovXG5BdmFpbGFiaWxpdHlab25lcz86IHN0cmluZ1tdXG5Ob3RpZmljYXRpb25Db25maWd1cmF0aW9uPzogTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbjFcbi8qKlxuICogRW5hYmxlcyB0aGUgbW9uaXRvcmluZyBvZiBncm91cCBtZXRyaWNzIG9mIGFuIEF1dG8gU2NhbGluZyBncm91cC4gQnkgZGVmYXVsdCwgdGhlc2UgbWV0cmljcyBhcmUgZGlzYWJsZWQuXG4gKi9cbk1ldHJpY3NDb2xsZWN0aW9uPzogTWV0cmljc0NvbGxlY3Rpb25bXVxuSW5zdGFuY2VNYWludGVuYW5jZVBvbGljeT86IEluc3RhbmNlTWFpbnRlbmFuY2VQb2xpY3lcbi8qKlxuICogVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZ3JvdXAuXG4gKiAgIFdpdGggYSBtaXhlZCBpbnN0YW5jZXMgcG9saWN5IHRoYXQgdXNlcyBpbnN0YW5jZSB3ZWlnaHRpbmcsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIG1heSBuZWVkIHRvIGdvIGFib3ZlIGBgTWF4U2l6ZWBgIHRvIG1lZXQgeW91ciBjYXBhY2l0eSByZXF1aXJlbWVudHMuIEluIHRoaXMgZXZlbnQsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdpbGwgbmV2ZXIgZ28gYWJvdmUgYGBNYXhTaXplYGAgYnkgbW9yZSB0aGFuIHlvdXIgbGFyZ2VzdCBpbnN0YW5jZSB3ZWlnaHQgKHdlaWdodHMgdGhhdCBkZWZpbmUgaG93IG1hbnkgdW5pdHMgZWFjaCBpbnN0YW5jZSBjb250cmlidXRlcyB0byB0aGUgZGVzaXJlZCBjYXBhY2l0eSBvZiB0aGUgZ3JvdXApLlxuICovXG5NYXhTaXplOiBzdHJpbmdcbi8qKlxuICogVGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgZ3JvdXAuXG4gKi9cbk1pblNpemU6IHN0cmluZ1xuLyoqXG4gKiBBIHBvbGljeSBvciBhIGxpc3Qgb2YgcG9saWNpZXMgdGhhdCBhcmUgdXNlZCB0byBzZWxlY3QgdGhlIGluc3RhbmNlIHRvIHRlcm1pbmF0ZS4gVGhlc2UgcG9saWNpZXMgYXJlIGV4ZWN1dGVkIGluIHRoZSBvcmRlciB0aGF0IHlvdSBsaXN0IHRoZW0uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyZSB0ZXJtaW5hdGlvbiBwb2xpY2llcyBmb3IgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctdGVybWluYXRpb24tcG9saWNpZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCB2YWx1ZXM6IGBgRGVmYXVsdGBgIHwgYGBBbGxvY2F0aW9uU3RyYXRlZ3lgYCB8IGBgQ2xvc2VzdFRvTmV4dEluc3RhbmNlSG91cmBgIHwgYGBOZXdlc3RJbnN0YW5jZWBgIHwgYGBPbGRlc3RJbnN0YW5jZWBgIHwgYGBPbGRlc3RMYXVuY2hDb25maWd1cmF0aW9uYGAgfCBgYE9sZGVzdExhdW5jaFRlbXBsYXRlYGAgfCBgYGFybjphd3M6bGFtYmRhOnJlZ2lvbjphY2NvdW50LWlkOmZ1bmN0aW9uOm15LWZ1bmN0aW9uOm15LWFsaWFzYGBcbiAqL1xuVGVybWluYXRpb25Qb2xpY2llcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuIFRoaXMgbmFtZSBtdXN0IGJlIHVuaXF1ZSBwZXIgUmVnaW9uIHBlciBhY2NvdW50LlxuICogIFRoZSBuYW1lIGNhbiBjb250YWluIGFueSBBU0NJSSBjaGFyYWN0ZXIgMzMgdG8gMTI2IGluY2x1ZGluZyBtb3N0IHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMsIGRpZ2l0cywgYW5kIHVwcGVyIGFuZCBsb3dlcmNhc2VkIGxldHRlcnMuXG4gKiAgIFlvdSBjYW5ub3QgdXNlIGEgY29sb24gKDopIGluIHRoZSBuYW1lLlxuICovXG5BdXRvU2NhbGluZ0dyb3VwTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdW5pdCBvZiBtZWFzdXJlbWVudCBmb3IgdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgZGVzaXJlZCBjYXBhY2l0eS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgc3VwcG9ydHMgYGBEZXNpcmVkQ2FwYWNpdHlUeXBlYGAgZm9yIGF0dHJpYnV0ZS1iYXNlZCBpbnN0YW5jZSB0eXBlIHNlbGVjdGlvbiBvbmx5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDcmVhdGUgYSBtaXhlZCBpbnN0YW5jZXMgZ3JvdXAgdXNpbmcgYXR0cmlidXRlLWJhc2VkIGluc3RhbmNlIHR5cGUgc2VsZWN0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9jcmVhdGUtbWl4ZWQtaW5zdGFuY2VzLWdyb3VwLWF0dHJpYnV0ZS1iYXNlZC1pbnN0YW5jZS10eXBlLXNlbGVjdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIEJ5IGRlZmF1bHQsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNwZWNpZmllcyBgYHVuaXRzYGAsIHdoaWNoIHRyYW5zbGF0ZXMgaW50byBudW1iZXIgb2YgaW5zdGFuY2VzLlxuICogIFZhbGlkIHZhbHVlczogYGB1bml0c2BgIHwgYGB2Y3B1YGAgfCBgYG1lbW9yeS1taWJgYFxuICovXG5EZXNpcmVkQ2FwYWNpdHlUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwbGFjZW1lbnQgZ3JvdXAgaW50byB3aGljaCB0byBsYXVuY2ggeW91ciBpbnN0YW5jZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1BsYWNlbWVudCBncm91cHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9wbGFjZW1lbnQtZ3JvdXBzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlIGZvciBMaW51eCBJbnN0YW5jZXMqLlxuICogICBBICpjbHVzdGVyKiBwbGFjZW1lbnQgZ3JvdXAgaXMgYSBsb2dpY2FsIGdyb3VwaW5nIG9mIGluc3RhbmNlcyB3aXRoaW4gYSBzaW5nbGUgQXZhaWxhYmlsaXR5IFpvbmUuIFlvdSBjYW5ub3Qgc3BlY2lmeSBtdWx0aXBsZSBBdmFpbGFiaWxpdHkgWm9uZXMgYW5kIGEgY2x1c3RlciBwbGFjZW1lbnQgZ3JvdXAuXG4gKi9cblBsYWNlbWVudEdyb3VwPzogc3RyaW5nXG4vKipcbiAqIEEgY29tbWEtc2VwYXJhdGVkIHZhbHVlIHN0cmluZyBvZiBvbmUgb3IgbW9yZSBoZWFsdGggY2hlY2sgdHlwZXMuXG4gKiAgVGhlIHZhbGlkIHZhbHVlcyBhcmUgYGBFQzJgYCwgYGBFTEJgYCwgYW5kIGBgVlBDX0xBVFRJQ0VgYC4gYGBFQzJgYCBpcyB0aGUgZGVmYXVsdCBoZWFsdGggY2hlY2sgYW5kIGNhbm5vdCBiZSBkaXNhYmxlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSGVhbHRoIGNoZWNrcyBmb3IgaW5zdGFuY2VzIGluIGFuIEF1dG8gU2NhbGluZyBncm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy1oZWFsdGgtY2hlY2tzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgT25seSBzcGVjaWZ5IGBgRUMyYGAgaWYgeW91IG11c3QgY2xlYXIgYSB2YWx1ZSB0aGF0IHdhcyBwcmV2aW91c2x5IHNldC5cbiAqL1xuSGVhbHRoQ2hlY2tUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IGFuIGluc3RhbmNlIGNhbiBiZSBpbiBzZXJ2aWNlLiBUaGUgZGVmYXVsdCBpcyBudWxsLiBJZiBzcGVjaWZpZWQsIHRoZSB2YWx1ZSBtdXN0IGJlIGVpdGhlciAwIG9yIGEgbnVtYmVyIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiA4Niw0MDAgc2Vjb25kcyAoMSBkYXkpLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtSZXBsYWNlIEF1dG8gU2NhbGluZyBpbnN0YW5jZXMgYmFzZWQgb24gbWF4aW11bSBpbnN0YW5jZSBsaWZldGltZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvYXNnLW1heC1pbnN0YW5jZS1saWZldGltZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5NYXhJbnN0YW5jZUxpZmV0aW1lPzogbnVtYmVyXG59XG4vKipcbiAqIGBgTGlmZWN5Y2xlSG9va1NwZWNpZmljYXRpb25gYCBzcGVjaWZpZXMgYSBsaWZlY3ljbGUgaG9vayBmb3IgdGhlIGBgTGlmZWN5Y2xlSG9va1NwZWNpZmljYXRpb25MaXN0YGAgcHJvcGVydHkgb2YgdGhlIFtBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sKSByZXNvdXJjZS4gQSBsaWZlY3ljbGUgaG9vayBzcGVjaWZpZXMgYWN0aW9ucyB0byBwZXJmb3JtIHdoZW4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgb3IgdGVybWluYXRlcyBpbnN0YW5jZXMuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGxpZmVjeWNsZSBob29rc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvbGlmZWN5Y2xlLWhvb2tzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouIFlvdSBjYW4gZmluZCBhIHNhbXBsZSB0ZW1wbGF0ZSBzbmlwcGV0IGluIHRoZSBbRXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hcy1saWZlY3ljbGVob29rLmh0bWwjYXdzLXJlc291cmNlLWFzLWxpZmVjeWNsZWhvb2stLWV4YW1wbGVzKSBzZWN0aW9uIG9mIHRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkxpZmVjeWNsZUhvb2tgYCByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVIb29rU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBsaWZlY3ljbGUgaG9vay5cbiAqL1xuTGlmZWN5Y2xlSG9va05hbWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbGlmZWN5Y2xlIHRyYW5zaXRpb24uIEZvciBBdXRvIFNjYWxpbmcgZ3JvdXBzLCB0aGVyZSBhcmUgdHdvIG1ham9yIGxpZmVjeWNsZSB0cmFuc2l0aW9ucy5cbiAqICAgKyAgVG8gY3JlYXRlIGEgbGlmZWN5Y2xlIGhvb2sgZm9yIHNjYWxlLW91dCBldmVudHMsIHNwZWNpZnkgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfTEFVTkNISU5HYGAuXG4gKiAgICsgIFRvIGNyZWF0ZSBhIGxpZmVjeWNsZSBob29rIGZvciBzY2FsZS1pbiBldmVudHMsIHNwZWNpZnkgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfVEVSTUlOQVRJTkdgYC5cbiAqL1xuTGlmZWN5Y2xlVHJhbnNpdGlvbjogc3RyaW5nXG4vKipcbiAqIFRoZSBtYXhpbXVtIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgY2FuIGVsYXBzZSBiZWZvcmUgdGhlIGxpZmVjeWNsZSBob29rIHRpbWVzIG91dC4gVGhlIHJhbmdlIGlzIGZyb20gYGAzMGBgIHRvIGBgNzIwMGBgIHNlY29uZHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgMzYwMGBgIHNlY29uZHMgKDEgaG91cikuXG4gKi9cbkhlYXJ0YmVhdFRpbWVvdXQ/OiBudW1iZXJcbi8qKlxuICogQWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0aGF0IHlvdSB3YW50IHRvIGluY2x1ZGUgYW55IHRpbWUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBub3RpZmljYXRpb24gdGFyZ2V0LlxuICovXG5Ob3RpZmljYXRpb25NZXRhZGF0YT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYWN0aW9uIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgdGFrZXMgd2hlbiB0aGUgbGlmZWN5Y2xlIGhvb2sgdGltZW91dCBlbGFwc2VzIG9yIGlmIGFuIHVuZXhwZWN0ZWQgZmFpbHVyZSBvY2N1cnMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgQUJBTkRPTmBgLlxuICogIFZhbGlkIHZhbHVlczogYGBDT05USU5VRWBgIHwgYGBBQkFORE9OYGBcbiAqL1xuRGVmYXVsdFJlc3VsdD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIG5vdGlmaWNhdGlvbiB0YXJnZXQgdGhhdCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzZW5kcyBub3RpZmljYXRpb25zIHRvIHdoZW4gYW4gaW5zdGFuY2UgaXMgaW4gYSB3YWl0IHN0YXRlIGZvciB0aGUgbGlmZWN5Y2xlIGhvb2suIFlvdSBjYW4gc3BlY2lmeSBhbiBBbWF6b24gU05TIHRvcGljIG9yIGFuIEFtYXpvbiBTUVMgcXVldWUuXG4gKi9cbk5vdGlmaWNhdGlvblRhcmdldEFSTj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBJQU0gcm9sZSB0aGF0IGFsbG93cyB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIHRvIHB1Ymxpc2ggdG8gdGhlIHNwZWNpZmllZCBub3RpZmljYXRpb24gdGFyZ2V0LiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgY3JlYXRpbmcgdGhpcyByb2xlLCBzZWUgW1ByZXBhcmUgdG8gYWRkIGEgbGlmZWN5Y2xlIGhvb2sgdG8geW91ciBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL3ByZXBhcmUtZm9yLWxpZmVjeWNsZS1ub3RpZmljYXRpb25zLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgVmFsaWQgb25seSBpZiB0aGUgbm90aWZpY2F0aW9uIHRhcmdldCBpcyBhbiBBbWF6b24gU05TIHRvcGljIG9yIGFuIEFtYXpvbiBTUVMgcXVldWUuXG4gKi9cblJvbGVBUk4/OiBzdHJpbmdcbn1cbi8qKlxuICogQSBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgYW4gQW1hem9uIFNOUyBub3RpZmljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIGBgTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbnNgYCBwcm9wZXJ0eSBvZiB0aGUgW0FXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwpIHJlc291cmNlLlxuICogIEZvciBhbiBleGFtcGxlIHRlbXBsYXRlIHNuaXBwZXQsIHNlZSBbQ29uZmlndXJlIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHJlc291cmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvcXVpY2tyZWYtZWMyLWF1dG8tc2NhbGluZy5odG1sKS5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtHZXQgQW1hem9uIFNOUyBub3RpZmljYXRpb25zIHdoZW4geW91ciBBdXRvIFNjYWxpbmcgZ3JvdXAgc2NhbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9BU0dldHRpbmdOb3RpZmljYXRpb25zLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQW1hem9uIFNOUyB0b3BpYy5cbiAqL1xuVG9waWNBUk46IChzdHJpbmcgfCBzdHJpbmdbXSlcbi8qKlxuICogQSBsaXN0IG9mIGV2ZW50IHR5cGVzIHRoYXQgc2VuZCBhIG5vdGlmaWNhdGlvbi4gRXZlbnQgdHlwZXMgY2FuIGluY2x1ZGUgYW55IG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMuIFxuICogICAqQWxsb3dlZCB2YWx1ZXMqOlxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfTEFVTkNIYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9MQVVOQ0hfRVJST1JgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX1RFUk1JTkFURWBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfVEVSTUlOQVRFX0VSUk9SYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOlRFU1RfTk9USUZJQ0FUSU9OYGBcbiAqL1xuTm90aWZpY2F0aW9uVHlwZXM/OiBzdHJpbmdbXVxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiB1c2VkIHRvIHNwZWNpZnkgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBhbmQgdmVyc2lvbiB0byB1c2UgdG8gbGF1bmNoIGluc3RhbmNlcy4gWW91IGNhbiBhbHRlcm5hdGl2ZWx5IGFzc29jaWF0ZSBhIGxhdW5jaCB0ZW1wbGF0ZSB0byB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGJ5IHNwZWNpZnlpbmcgYSBgYE1peGVkSW5zdGFuY2VzUG9saWN5YGAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNyZWF0aW5nIGxhdW5jaCB0ZW1wbGF0ZXMsIHNlZSBbQ3JlYXRlIGEgbGF1bmNoIHRlbXBsYXRlIGZvciBhbiBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2NyZWF0ZS1sYXVuY2gtdGVtcGxhdGUuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3Ugb21pdCB0aGlzIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IGBgTWl4ZWRJbnN0YW5jZXNQb2xpY3lgYCwgYGBMYXVuY2hDb25maWd1cmF0aW9uTmFtZWBgLCBvciBgYEluc3RhbmNlSWRgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFlvdSBtdXN0IHNwZWNpZnkgdGhlIGBgTGF1bmNoVGVtcGxhdGVOYW1lYGAgb3IgdGhlIGBgTGF1bmNoVGVtcGxhdGVJRGBgLCBidXQgbm90IGJvdGguXG4gKi9cbkxhdW5jaFRlbXBsYXRlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBTcGVjaWZ5aW5nIGBgJExhdGVzdGBgIG9yIGBgJERlZmF1bHRgYCBmb3IgdGhlIHRlbXBsYXRlIHZlcnNpb24gbnVtYmVyIGlzIG5vdCBzdXBwb3J0ZWQuIEhvd2V2ZXIsIHlvdSBjYW4gc3BlY2lmeSBgYExhdGVzdFZlcnNpb25OdW1iZXJgYCBvciBgYERlZmF1bHRWZXJzaW9uTnVtYmVyYGAgdXNpbmcgdGhlIGBgRm46OkdldEF0dGBgIGludHJpbnNpYyBmdW5jdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRm46OkdldEF0dF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvaW50cmluc2ljLWZ1bmN0aW9uLXJlZmVyZW5jZS1nZXRhdHQuaHRtbCkuXG4gKiAgIEZvciBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBgYEZuOjpHZXRBdHRgYCBmdW5jdGlvbiwgc2VlIHRoZSBbRXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwjYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAtLWV4YW1wbGVzKSBzZWN0aW9uIG9mIHRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBgYCByZXNvdXJjZS5cbiAqL1xuVmVyc2lvbjogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFlvdSBtdXN0IHNwZWNpZnkgdGhlIGBgTGF1bmNoVGVtcGxhdGVJRGBgIG9yIHRoZSBgYExhdW5jaFRlbXBsYXRlTmFtZWBgLCBidXQgbm90IGJvdGguXG4gKi9cbkxhdW5jaFRlbXBsYXRlSWQ/OiBzdHJpbmdcbn1cbi8qKlxuICogQW4gZW1iZWRkZWQgb2JqZWN0IHRoYXQgc3BlY2lmaWVzIGEgbWl4ZWQgaW5zdGFuY2VzIHBvbGljeS5cbiAqICBUaGUgcG9saWN5IGluY2x1ZGVzIHByb3BlcnRpZXMgdGhhdCBub3Qgb25seSBkZWZpbmUgdGhlIGRpc3RyaWJ1dGlvbiBvZiBPbi1EZW1hbmQgSW5zdGFuY2VzIGFuZCBTcG90IEluc3RhbmNlcywgdGhlIG1heGltdW0gcHJpY2UgdG8gcGF5IGZvciBTcG90IEluc3RhbmNlcyAob3B0aW9uYWwpLCBhbmQgaG93IHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgYWxsb2NhdGVzIGluc3RhbmNlIHR5cGVzIHRvIGZ1bGZpbGwgT24tRGVtYW5kIGFuZCBTcG90IGNhcGFjaXRpZXMsIGJ1dCBhbHNvIHRoZSBwcm9wZXJ0aWVzIHRoYXQgc3BlY2lmeSB0aGUgaW5zdGFuY2UgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbuKAlHRoZSBsYXVuY2ggdGVtcGxhdGUgYW5kIGluc3RhbmNlIHR5cGVzLiBUaGUgcG9saWN5IGNhbiBhbHNvIGluY2x1ZGUgYSB3ZWlnaHQgZm9yIGVhY2ggaW5zdGFuY2UgdHlwZSBhbmQgZGlmZmVyZW50IGxhdW5jaCB0ZW1wbGF0ZXMgZm9yIGluZGl2aWR1YWwgaW5zdGFuY2UgdHlwZXMuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXV0byBTY2FsaW5nIGdyb3VwcyB3aXRoIG11bHRpcGxlIGluc3RhbmNlIHR5cGVzIGFuZCBwdXJjaGFzZSBvcHRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLW1peGVkLWluc3RhbmNlcy1ncm91cHMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaXhlZEluc3RhbmNlc1BvbGljeSB7XG5JbnN0YW5jZXNEaXN0cmlidXRpb24/OiBJbnN0YW5jZXNEaXN0cmlidXRpb25cbkxhdW5jaFRlbXBsYXRlOiBMYXVuY2hUZW1wbGF0ZVxufVxuLyoqXG4gKiBUaGUgaW5zdGFuY2VzIGRpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZXNEaXN0cmlidXRpb24ge1xuLyoqXG4gKiBUaGUgYWxsb2NhdGlvbiBzdHJhdGVneSB0byBhcHBseSB0byB5b3VyIE9uLURlbWFuZCBJbnN0YW5jZXMgd2hlbiB0aGV5IGFyZSBsYXVuY2hlZC4gUG9zc2libGUgaW5zdGFuY2UgdHlwZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBvdmVycmlkZXMgdGhhdCB5b3Ugc3BlY2lmeS5cbiAqICBUaGUgZm9sbG93aW5nIGxpc3RzIHRoZSB2YWxpZCB2YWx1ZXM6XG4gKiAgICsgbG93ZXN0LXByaWNlIFVzZXMgcHJpY2UgdG8gZGV0ZXJtaW5lIHdoaWNoIGluc3RhbmNlIHR5cGVzIGFyZSB0aGUgaGlnaGVzdCBwcmlvcml0eSwgbGF1bmNoaW5nIHRoZSBsb3dlc3QgcHJpY2VkIGluc3RhbmNlIHR5cGVzIHdpdGhpbiBhbiBBdmFpbGFiaWxpdHkgWm9uZSBmaXJzdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgQXV0byBTY2FsaW5nIGdyb3VwcyB0aGF0IHNwZWNpZnkgSW5zdGFuY2VSZXF1aXJlbWVudHMuICsgcHJpb3JpdGl6ZWQgWW91IHNldCB0aGUgb3JkZXIgb2YgaW5zdGFuY2UgdHlwZXMgZm9yIHRoZSBsYXVuY2ggdGVtcGxhdGUgb3ZlcnJpZGVzIGZyb20gaGlnaGVzdCB0byBsb3dlc3QgcHJpb3JpdHkgKGZyb20gZmlyc3QgdG8gbGFzdCBpbiB0aGUgbGlzdCkuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGxhdW5jaGVzIHlvdXIgaGlnaGVzdCBwcmlvcml0eSBpbnN0YW5jZSB0eXBlcyBmaXJzdC4gSWYgYWxsIHlvdXIgT24tRGVtYW5kIGNhcGFjaXR5IGNhbm5vdCBiZSBmdWxmaWxsZWQgdXNpbmcgeW91ciBoaWdoZXN0IHByaW9yaXR5IGluc3RhbmNlIHR5cGUsIHRoZW4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgdGhlIHJlbWFpbmluZyBjYXBhY2l0eSB1c2luZyB0aGUgc2Vjb25kIHByaW9yaXR5IGluc3RhbmNlIHR5cGUsIGFuZCBzbyBvbi4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgQXV0byBTY2FsaW5nIGdyb3VwcyB0aGF0IGRvbid0IHNwZWNpZnkgSW5zdGFuY2VSZXF1aXJlbWVudHMgYW5kIGNhbm5vdCBiZSB1c2VkIGZvciBncm91cHMgdGhhdCBkby5cbiAqL1xuT25EZW1hbmRBbGxvY2F0aW9uU3RyYXRlZ3k/OiBzdHJpbmdcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAncyBjYXBhY2l0eSB0aGF0IG11c3QgYmUgZnVsZmlsbGVkIGJ5IE9uLURlbWFuZCBJbnN0YW5jZXMuIFRoaXMgYmFzZSBwb3J0aW9uIGlzIGxhdW5jaGVkIGZpcnN0IGFzIHlvdXIgZ3JvdXAgc2NhbGVzLlxuICogIFRoaXMgbnVtYmVyIGhhcyB0aGUgc2FtZSB1bml0IG9mIG1lYXN1cmVtZW50IGFzIHRoZSBncm91cCdzIGRlc2lyZWQgY2FwYWNpdHkuIElmIHlvdSBjaGFuZ2UgdGhlIGRlZmF1bHQgdW5pdCBvZiBtZWFzdXJlbWVudCAobnVtYmVyIG9mIGluc3RhbmNlcykgYnkgc3BlY2lmeWluZyB3ZWlnaHRlZCBjYXBhY2l0eSB2YWx1ZXMgaW4geW91ciBsYXVuY2ggdGVtcGxhdGUgb3ZlcnJpZGVzIGxpc3QsIG9yIGJ5IGNoYW5naW5nIHRoZSBkZWZhdWx0IGRlc2lyZWQgY2FwYWNpdHkgdHlwZSBzZXR0aW5nIG9mIHRoZSBncm91cCwgeW91IG11c3Qgc3BlY2lmeSB0aGlzIG51bWJlciB1c2luZyB0aGUgc2FtZSB1bml0IG9mIG1lYXN1cmVtZW50LlxuICogIERlZmF1bHQ6IDBcbiAqICAgQW4gdXBkYXRlIHRvIHRoaXMgc2V0dGluZyBtZWFucyBhIGdyYWR1YWwgcmVwbGFjZW1lbnQgb2YgaW5zdGFuY2VzIHRvIGFkanVzdCB0aGUgY3VycmVudCBPbi1EZW1hbmQgSW5zdGFuY2UgbGV2ZWxzLiBXaGVuIHJlcGxhY2luZyBpbnN0YW5jZXMsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGxhdW5jaGVzIG5ldyBpbnN0YW5jZXMgYmVmb3JlIHRlcm1pbmF0aW5nIHRoZSBwcmV2aW91cyBvbmVzLlxuICovXG5PbkRlbWFuZEJhc2VDYXBhY2l0eT86IG51bWJlclxuLyoqXG4gKiBDb250cm9scyB0aGUgcGVyY2VudGFnZXMgb2YgT24tRGVtYW5kIEluc3RhbmNlcyBhbmQgU3BvdCBJbnN0YW5jZXMgZm9yIHlvdXIgYWRkaXRpb25hbCBjYXBhY2l0eSBiZXlvbmQgYGBPbkRlbWFuZEJhc2VDYXBhY2l0eWBgLiBFeHByZXNzZWQgYXMgYSBudW1iZXIgKGZvciBleGFtcGxlLCAyMCBzcGVjaWZpZXMgMjAlIE9uLURlbWFuZCBJbnN0YW5jZXMsIDgwJSBTcG90IEluc3RhbmNlcykuIElmIHNldCB0byAxMDAsIG9ubHkgT24tRGVtYW5kIEluc3RhbmNlcyBhcmUgdXNlZC5cbiAqICBEZWZhdWx0OiAxMDBcbiAqICAgQW4gdXBkYXRlIHRvIHRoaXMgc2V0dGluZyBtZWFucyBhIGdyYWR1YWwgcmVwbGFjZW1lbnQgb2YgaW5zdGFuY2VzIHRvIGFkanVzdCB0aGUgY3VycmVudCBPbi1EZW1hbmQgYW5kIFNwb3QgSW5zdGFuY2UgbGV2ZWxzIGZvciB5b3VyIGFkZGl0aW9uYWwgY2FwYWNpdHkgaGlnaGVyIHRoYW4gdGhlIGJhc2UgY2FwYWNpdHkuIFdoZW4gcmVwbGFjaW5nIGluc3RhbmNlcywgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgbmV3IGluc3RhbmNlcyBiZWZvcmUgdGVybWluYXRpbmcgdGhlIHByZXZpb3VzIG9uZXMuXG4gKi9cbk9uRGVtYW5kUGVyY2VudGFnZUFib3ZlQmFzZUNhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgU3BvdCBJbnN0YW5jZSBwb29scyBhY3Jvc3Mgd2hpY2ggdG8gYWxsb2NhdGUgeW91ciBTcG90IEluc3RhbmNlcy4gVGhlIFNwb3QgcG9vbHMgYXJlIGRldGVybWluZWQgZnJvbSB0aGUgZGlmZmVyZW50IGluc3RhbmNlIHR5cGVzIGluIHRoZSBvdmVycmlkZXMuIFZhbGlkIG9ubHkgd2hlbiB0aGUgYGBTcG90QWxsb2NhdGlvblN0cmF0ZWd5YGAgaXMgYGBsb3dlc3QtcHJpY2VgYC4gVmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YgMeKAkzIwLlxuICogIERlZmF1bHQ6IDJcbiAqL1xuU3BvdEluc3RhbmNlUG9vbHM/OiBudW1iZXJcbi8qKlxuICogVGhlIGFsbG9jYXRpb24gc3RyYXRlZ3kgdG8gYXBwbHkgdG8geW91ciBTcG90IEluc3RhbmNlcyB3aGVuIHRoZXkgYXJlIGxhdW5jaGVkLiBQb3NzaWJsZSBpbnN0YW5jZSB0eXBlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbGF1bmNoIHRlbXBsYXRlIG92ZXJyaWRlcyB0aGF0IHlvdSBzcGVjaWZ5LlxuICogIFRoZSBmb2xsb3dpbmcgbGlzdHMgdGhlIHZhbGlkIHZhbHVlczpcbiAqICAgKyBjYXBhY2l0eS1vcHRpbWl6ZWQgUmVxdWVzdHMgU3BvdCBJbnN0YW5jZXMgdXNpbmcgcG9vbHMgdGhhdCBhcmUgb3B0aW1hbGx5IGNob3NlbiBiYXNlZCBvbiB0aGUgYXZhaWxhYmxlIFNwb3QgY2FwYWNpdHkuIFRoaXMgc3RyYXRlZ3kgaGFzIHRoZSBsb3dlc3QgcmlzayBvZiBpbnRlcnJ1cHRpb24uIFRvIGdpdmUgY2VydGFpbiBpbnN0YW5jZSB0eXBlcyBhIGhpZ2hlciBjaGFuY2Ugb2YgbGF1bmNoaW5nIGZpcnN0LCB1c2UgY2FwYWNpdHktb3B0aW1pemVkLXByaW9yaXRpemVkLiArIGNhcGFjaXR5LW9wdGltaXplZC1wcmlvcml0aXplZCBZb3Ugc2V0IHRoZSBvcmRlciBvZiBpbnN0YW5jZSB0eXBlcyBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBvdmVycmlkZXMgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBwcmlvcml0eSAoZnJvbSBmaXJzdCB0byBsYXN0IGluIHRoZSBsaXN0KS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgaG9ub3JzIHRoZSBpbnN0YW5jZSB0eXBlIHByaW9yaXRpZXMgb24gYSBiZXN0IGVmZm9ydCBiYXNpcyBidXQgb3B0aW1pemVzIGZvciBjYXBhY2l0eSBmaXJzdC4gTm90ZSB0aGF0IGlmIHRoZSBPbi1EZW1hbmQgYWxsb2NhdGlvbiBzdHJhdGVneSBpcyBzZXQgdG8gcHJpb3JpdGl6ZWQsIHRoZSBzYW1lIHByaW9yaXR5IGlzIGFwcGxpZWQgd2hlbiBmdWxmaWxsaW5nIE9uLURlbWFuZCBjYXBhY2l0eS4gVGhpcyBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgQXV0byBTY2FsaW5nIGdyb3VwcyB0aGF0IHNwZWNpZnkgSW5zdGFuY2VSZXF1aXJlbWVudHMuICsgbG93ZXN0LXByaWNlIFJlcXVlc3RzIFNwb3QgSW5zdGFuY2VzIHVzaW5nIHRoZSBsb3dlc3QgcHJpY2VkIHBvb2xzIHdpdGhpbiBhbiBBdmFpbGFiaWxpdHkgWm9uZSwgYWNyb3NzIHRoZSBudW1iZXIgb2YgU3BvdCBwb29scyB0aGF0IHlvdSBzcGVjaWZ5IGZvciB0aGUgU3BvdEluc3RhbmNlUG9vbHMgcHJvcGVydHkuIFRvIGVuc3VyZSB0aGF0IHlvdXIgZGVzaXJlZCBjYXBhY2l0eSBpcyBtZXQsIHlvdSBtaWdodCByZWNlaXZlIFNwb3QgSW5zdGFuY2VzIGZyb20gc2V2ZXJhbCBwb29scy4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSwgYnV0IGl0IG1pZ2h0IGxlYWQgdG8gaGlnaCBpbnRlcnJ1cHRpb24gcmF0ZXMgYmVjYXVzZSB0aGlzIHN0cmF0ZWd5IG9ubHkgY29uc2lkZXJzIGluc3RhbmNlIHByaWNlIGFuZCBub3QgYXZhaWxhYmxlIGNhcGFjaXR5LiArIHByaWNlLWNhcGFjaXR5LW9wdGltaXplZCAocmVjb21tZW5kZWQpIFRoZSBwcmljZSBhbmQgY2FwYWNpdHkgb3B0aW1pemVkIGFsbG9jYXRpb24gc3RyYXRlZ3kgbG9va3MgYXQgYm90aCBwcmljZSBhbmQgY2FwYWNpdHkgdG8gc2VsZWN0IHRoZSBTcG90IEluc3RhbmNlIHBvb2xzIHRoYXQgYXJlIHRoZSBsZWFzdCBsaWtlbHkgdG8gYmUgaW50ZXJydXB0ZWQgYW5kIGhhdmUgdGhlIGxvd2VzdCBwb3NzaWJsZSBwcmljZS5cbiAqL1xuU3BvdEFsbG9jYXRpb25TdHJhdGVneT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSBwcmljZSBwZXIgdW5pdCBob3VyIHRoYXQgeW91IGFyZSB3aWxsaW5nIHRvIHBheSBmb3IgYSBTcG90IEluc3RhbmNlLiBJZiB5b3VyIG1heGltdW0gcHJpY2UgaXMgbG93ZXIgdGhhbiB0aGUgU3BvdCBwcmljZSBmb3IgdGhlIGluc3RhbmNlIHR5cGVzIHRoYXQgeW91IHNlbGVjdGVkLCB5b3VyIFNwb3QgSW5zdGFuY2VzIGFyZSBub3QgbGF1bmNoZWQuIFdlIGRvIG5vdCByZWNvbW1lbmQgc3BlY2lmeWluZyBhIG1heGltdW0gcHJpY2UgYmVjYXVzZSBpdCBjYW4gbGVhZCB0byBpbmNyZWFzZWQgaW50ZXJydXB0aW9ucy4gV2hlbiBTcG90IEluc3RhbmNlcyBsYXVuY2gsIHlvdSBwYXkgdGhlIGN1cnJlbnQgU3BvdCBwcmljZS4gVG8gcmVtb3ZlIGEgbWF4aW11bSBwcmljZSB0aGF0IHlvdSBwcmV2aW91c2x5IHNldCwgaW5jbHVkZSB0aGUgcHJvcGVydHkgYnV0IHNwZWNpZnkgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBmb3IgdGhlIHZhbHVlLlxuICogICBJZiB5b3Ugc3BlY2lmeSBhIG1heGltdW0gcHJpY2UsIHlvdXIgaW5zdGFuY2VzIHdpbGwgYmUgaW50ZXJydXB0ZWQgbW9yZSBmcmVxdWVudGx5IHRoYW4gaWYgeW91IGRvIG5vdCBzcGVjaWZ5IG9uZS5cbiAqICAgVmFsaWQgUmFuZ2U6IE1pbmltdW0gdmFsdWUgb2YgMC4wMDFcbiAqL1xuU3BvdE1heFByaWNlPzogc3RyaW5nXG59XG4vKipcbiAqIE9uZSBvciBtb3JlIGxhdW5jaCB0ZW1wbGF0ZXMgYW5kIHRoZSBpbnN0YW5jZSB0eXBlcyAob3ZlcnJpZGVzKSB0aGF0IGFyZSB1c2VkIHRvIGxhdW5jaCBFQzIgaW5zdGFuY2VzIHRvIGZ1bGZpbGwgT24tRGVtYW5kIGFuZCBTcG90IGNhcGFjaXRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGUge1xuTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uOiBMYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb24xXG4vKipcbiAqIEFueSBwcm9wZXJ0aWVzIHRoYXQgeW91IHNwZWNpZnkgb3ZlcnJpZGUgdGhlIHNhbWUgcHJvcGVydGllcyBpbiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICovXG5PdmVycmlkZXM/OiBMYXVuY2hUZW1wbGF0ZU92ZXJyaWRlc1tdXG59XG4vKipcbiAqIFRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uMSB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZU5hbWVgYCBvciB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFNwZWNpZnlpbmcgYGAkTGF0ZXN0YGAgb3IgYGAkRGVmYXVsdGBgIGZvciB0aGUgdGVtcGxhdGUgdmVyc2lvbiBudW1iZXIgaXMgbm90IHN1cHBvcnRlZC4gSG93ZXZlciwgeW91IGNhbiBzcGVjaWZ5IGBgTGF0ZXN0VmVyc2lvbk51bWJlcmBgIG9yIGBgRGVmYXVsdFZlcnNpb25OdW1iZXJgYCB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgaW50cmluc2ljIGZ1bmN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtGbjo6R2V0QXR0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9pbnRyaW5zaWMtZnVuY3Rpb24tcmVmZXJlbmNlLWdldGF0dC5odG1sKS5cbiAqICAgRm9yIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIGBgRm46OkdldEF0dGBgIGZ1bmN0aW9uLCBzZWUgdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCNhd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC0tZXhhbXBsZXMpIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cGBgIHJlc291cmNlLlxuICovXG5WZXJzaW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIElEIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAgb3IgdGhlIGBgTGF1bmNoVGVtcGxhdGVOYW1lYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVJZD86IHN0cmluZ1xufVxuLyoqXG4gKiBVc2UgdGhpcyBzdHJ1Y3R1cmUgdG8gbGV0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGRvIHRoZSBmb2xsb3dpbmcgd2hlbiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGhhcyBhIG1peGVkIGluc3RhbmNlcyBwb2xpY3k6XG4gKiAgICsgIE92ZXJyaWRlIHRoZSBpbnN0YW5jZSB0eXBlIHRoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgICsgIFVzZSBtdWx0aXBsZSBpbnN0YW5jZSB0eXBlcy5cbiAqICAgXG4gKiAgU3BlY2lmeSB0aGUgaW5zdGFuY2UgdHlwZXMgdGhhdCB5b3Ugd2FudCwgb3IgZGVmaW5lIHlvdXIgaW5zdGFuY2UgcmVxdWlyZW1lbnRzIGluc3RlYWQgYW5kIGxldCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBwcm92aXNpb24gdGhlIGF2YWlsYWJsZSBpbnN0YW5jZSB0eXBlcyB0aGF0IG1lZXQgeW91ciByZXF1aXJlbWVudHMuIFRoaXMgY2FuIHByb3ZpZGUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2l0aCBhIGxhcmdlciBzZWxlY3Rpb24gb2YgaW5zdGFuY2UgdHlwZXMgdG8gY2hvb3NlIGZyb20gd2hlbiBmdWxmaWxsaW5nIFNwb3QgYW5kIE9uLURlbWFuZCBjYXBhY2l0aWVzLiBZb3UgY2FuIHZpZXcgd2hpY2ggaW5zdGFuY2UgdHlwZXMgYXJlIG1hdGNoZWQgYmVmb3JlIHlvdSBhcHBseSB0aGUgaW5zdGFuY2UgcmVxdWlyZW1lbnRzIHRvIHlvdXIgQXV0byBTY2FsaW5nIGdyb3VwLlxuICogIEFmdGVyIHlvdSBkZWZpbmUgeW91ciBpbnN0YW5jZSByZXF1aXJlbWVudHMsIHlvdSBkb24ndCBoYXZlIHRvIGtlZXAgdXBkYXRpbmcgdGhlc2Ugc2V0dGluZ3MgdG8gZ2V0IG5ldyBFQzIgaW5zdGFuY2UgdHlwZXMgYXV0b21hdGljYWxseS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgdXNlcyB0aGUgaW5zdGFuY2UgcmVxdWlyZW1lbnRzIG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBuZXcgRUMyIGluc3RhbmNlIHR5cGUgY2FuIGJlIHVzZWQuXG4gKiAgIGBgTGF1bmNoVGVtcGxhdGVPdmVycmlkZXNgYCBpcyBhIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cCBMYXVuY2hUZW1wbGF0ZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC1sYXVuY2h0ZW1wbGF0ZS5odG1sKSBwcm9wZXJ0eSB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdW5jaFRlbXBsYXRlT3ZlcnJpZGVzIHtcbkxhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvbj86IExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvbjJcbi8qKlxuICogSWYgeW91IHByb3ZpZGUgYSBsaXN0IG9mIGluc3RhbmNlIHR5cGVzIHRvIHVzZSwgeW91IGNhbiBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY2FwYWNpdHkgdW5pdHMgcHJvdmlkZWQgYnkgZWFjaCBpbnN0YW5jZSB0eXBlIGluIHRlcm1zIG9mIHZpcnR1YWwgQ1BVcywgbWVtb3J5LCBzdG9yYWdlLCB0aHJvdWdocHV0LCBvciBvdGhlciByZWxhdGl2ZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpYy4gV2hlbiBhIFNwb3Qgb3IgT24tRGVtYW5kIEluc3RhbmNlIGlzIGxhdW5jaGVkLCB0aGUgY2FwYWNpdHkgdW5pdHMgY291bnQgdG93YXJkIHRoZSBkZXNpcmVkIGNhcGFjaXR5LiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBsYXVuY2hlcyBpbnN0YW5jZXMgdW50aWwgdGhlIGRlc2lyZWQgY2FwYWNpdHkgaXMgdG90YWxseSBmdWxmaWxsZWQsIGV2ZW4gaWYgdGhpcyByZXN1bHRzIGluIGFuIG92ZXJhZ2UuIEZvciBleGFtcGxlLCBpZiB0aGVyZSBhcmUgdHdvIHVuaXRzIHJlbWFpbmluZyB0byBmdWxmaWxsIGNhcGFjaXR5LCBhbmQgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgY2FuIG9ubHkgbGF1bmNoIGFuIGluc3RhbmNlIHdpdGggYSBgYFdlaWdodGVkQ2FwYWNpdHlgYCBvZiBmaXZlIHVuaXRzLCB0aGUgaW5zdGFuY2UgaXMgbGF1bmNoZWQsIGFuZCB0aGUgZGVzaXJlZCBjYXBhY2l0eSBpcyBleGNlZWRlZCBieSB0aHJlZSB1bml0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uZmlndXJlIGluc3RhbmNlIHdlaWdodGluZyBmb3IgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctbWl4ZWQtaW5zdGFuY2VzLWdyb3Vwcy1pbnN0YW5jZS13ZWlnaHRpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi4gVmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YgMS05OTkuIFxuICogIElmIHlvdSBzcGVjaWZ5IGEgdmFsdWUgZm9yIGBgV2VpZ2h0ZWRDYXBhY2l0eWBgIGZvciBvbmUgaW5zdGFuY2UgdHlwZSwgeW91IG11c3Qgc3BlY2lmeSBhIHZhbHVlIGZvciBgYFdlaWdodGVkQ2FwYWNpdHlgYCBmb3IgYWxsIG9mIHRoZW0uXG4gKiAgIEV2ZXJ5IEF1dG8gU2NhbGluZyBncm91cCBoYXMgdGhyZWUgc2l6ZSBwYXJhbWV0ZXJzIChgYERlc2lyZWRDYXBhY2l0eWBgLCBgYE1heFNpemVgYCwgYW5kIGBgTWluU2l6ZWBgKS4gVXN1YWxseSwgeW91IHNldCB0aGVzZSBzaXplcyBiYXNlZCBvbiBhIHNwZWNpZmljIG51bWJlciBvZiBpbnN0YW5jZXMuIEhvd2V2ZXIsIGlmIHlvdSBjb25maWd1cmUgYSBtaXhlZCBpbnN0YW5jZXMgcG9saWN5IHRoYXQgZGVmaW5lcyB3ZWlnaHRzIGZvciB0aGUgaW5zdGFuY2UgdHlwZXMsIHlvdSBtdXN0IHNwZWNpZnkgdGhlc2Ugc2l6ZXMgd2l0aCB0aGUgc2FtZSB1bml0cyB0aGF0IHlvdSB1c2UgZm9yIHdlaWdodGluZyBpbnN0YW5jZXMuXG4gKi9cbldlaWdodGVkQ2FwYWNpdHk/OiBzdHJpbmdcbkluc3RhbmNlUmVxdWlyZW1lbnRzPzogSW5zdGFuY2VSZXF1aXJlbWVudHNcbi8qKlxuICogVGhlIGluc3RhbmNlIHR5cGUsIHN1Y2ggYXMgYGBtMy54bGFyZ2VgYC4gWW91IG11c3Qgc3BlY2lmeSBhbiBpbnN0YW5jZSB0eXBlIHRoYXQgaXMgc3VwcG9ydGVkIGluIHlvdXIgcmVxdWVzdGVkIFJlZ2lvbiBhbmQgQXZhaWxhYmlsaXR5IFpvbmVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtJbnN0YW5jZSB0eXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2luc3RhbmNlLXR5cGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlIGZvciBMaW51eCBJbnN0YW5jZXMqLlxuICogIFlvdSBjYW4gc3BlY2lmeSB1cCB0byA0MCBpbnN0YW5jZSB0eXBlcyBwZXIgQXV0byBTY2FsaW5nIGdyb3VwLlxuICovXG5JbnN0YW5jZVR5cGU/OiBzdHJpbmdcbn1cbi8qKlxuICogUHJvdmlkZXMgYSBsYXVuY2ggdGVtcGxhdGUgZm9yIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UgdHlwZSBvciBzZXQgb2YgaW5zdGFuY2UgcmVxdWlyZW1lbnRzLiBGb3IgZXhhbXBsZSwgc29tZSBpbnN0YW5jZSB0eXBlcyBtaWdodCByZXF1aXJlIGEgbGF1bmNoIHRlbXBsYXRlIHdpdGggYSBkaWZmZXJlbnQgQU1JLiBJZiBub3QgcHJvdmlkZWQsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHVzZXMgdGhlIGxhdW5jaCB0ZW1wbGF0ZSB0aGF0J3Mgc3BlY2lmaWVkIGluIHRoZSBgYExhdW5jaFRlbXBsYXRlYGAgZGVmaW5pdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3BlY2lmeWluZyBhIGRpZmZlcmVudCBsYXVuY2ggdGVtcGxhdGUgZm9yIGFuIGluc3RhbmNlIHR5cGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctbWl4ZWQtaW5zdGFuY2VzLWdyb3Vwcy1sYXVuY2gtdGVtcGxhdGUtb3ZlcnJpZGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouIFxuICogIFlvdSBjYW4gc3BlY2lmeSB1cCB0byAyMCBsYXVuY2ggdGVtcGxhdGVzIHBlciBBdXRvIFNjYWxpbmcgZ3JvdXAuIFRoZSBsYXVuY2ggdGVtcGxhdGVzIHNwZWNpZmllZCBpbiB0aGUgb3ZlcnJpZGVzIGFuZCBpbiB0aGUgYGBMYXVuY2hUZW1wbGF0ZWBgIGRlZmluaXRpb24gY291bnQgdG93YXJkcyB0aGlzIGxpbWl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvbjIge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFlvdSBtdXN0IHNwZWNpZnkgdGhlIGBgTGF1bmNoVGVtcGxhdGVOYW1lYGAgb3IgdGhlIGBgTGF1bmNoVGVtcGxhdGVJRGBgLCBidXQgbm90IGJvdGguXG4gKi9cbkxhdW5jaFRlbXBsYXRlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBTcGVjaWZ5aW5nIGBgJExhdGVzdGBgIG9yIGBgJERlZmF1bHRgYCBmb3IgdGhlIHRlbXBsYXRlIHZlcnNpb24gbnVtYmVyIGlzIG5vdCBzdXBwb3J0ZWQuIEhvd2V2ZXIsIHlvdSBjYW4gc3BlY2lmeSBgYExhdGVzdFZlcnNpb25OdW1iZXJgYCBvciBgYERlZmF1bHRWZXJzaW9uTnVtYmVyYGAgdXNpbmcgdGhlIGBgRm46OkdldEF0dGBgIGludHJpbnNpYyBmdW5jdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRm46OkdldEF0dF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvaW50cmluc2ljLWZ1bmN0aW9uLXJlZmVyZW5jZS1nZXRhdHQuaHRtbCkuXG4gKiAgIEZvciBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBgYEZuOjpHZXRBdHRgYCBmdW5jdGlvbiwgc2VlIHRoZSBbRXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwjYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAtLWV4YW1wbGVzKSBzZWN0aW9uIG9mIHRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBgYCByZXNvdXJjZS5cbiAqL1xuVmVyc2lvbjogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFlvdSBtdXN0IHNwZWNpZnkgdGhlIGBgTGF1bmNoVGVtcGxhdGVJRGBgIG9yIHRoZSBgYExhdW5jaFRlbXBsYXRlTmFtZWBgLCBidXQgbm90IGJvdGguXG4gKi9cbkxhdW5jaFRlbXBsYXRlSWQ/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGluc3RhbmNlIHJlcXVpcmVtZW50cy4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgdXNlcyB5b3VyIHNwZWNpZmllZCByZXF1aXJlbWVudHMgdG8gaWRlbnRpZnkgaW5zdGFuY2UgdHlwZXMuIFRoZW4sIGl0IHVzZXMgeW91ciBPbi1EZW1hbmQgYW5kIFNwb3QgYWxsb2NhdGlvbiBzdHJhdGVnaWVzIHRvIGxhdW5jaCBpbnN0YW5jZXMgZnJvbSB0aGVzZSBpbnN0YW5jZSB0eXBlcy5cbiAqICBZb3UgY2FuIHNwZWNpZnkgdXAgdG8gZm91ciBzZXBhcmF0ZSBzZXRzIG9mIGluc3RhbmNlIHJlcXVpcmVtZW50cyBwZXIgQXV0byBTY2FsaW5nIGdyb3VwLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJvdmlzaW9uaW5nIGluc3RhbmNlcyBmcm9tIGRpZmZlcmVudCBBbWF6b24gTWFjaGluZSBJbWFnZXMgKEFNSXMpIGluIHRoZSBzYW1lIEF1dG8gU2NhbGluZyBncm91cC4gVG8gZG8gdGhpcywgY3JlYXRlIHRoZSBBTUlzIGFuZCBjcmVhdGUgYSBuZXcgbGF1bmNoIHRlbXBsYXRlIGZvciBlYWNoIEFNSS4gVGhlbiwgY3JlYXRlIGEgY29tcGF0aWJsZSBzZXQgb2YgaW5zdGFuY2UgcmVxdWlyZW1lbnRzIGZvciBlYWNoIGxhdW5jaCB0ZW1wbGF0ZS4gXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgSW5zdGFuY2VSZXF1aXJlbWVudHNgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBJbnN0YW5jZVR5cGVgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVJlcXVpcmVtZW50cyB7XG4vKipcbiAqIEluZGljYXRlcyB0aGUgdHlwZSBvZiBsb2NhbCBzdG9yYWdlIHRoYXQgaXMgcmVxdWlyZWQuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIGhhcmQgZGlzayBkcml2ZSAoSEREKSBzdG9yYWdlLCBzcGVjaWZ5IGBgaGRkYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIHNvbGlkIHN0YXRlIGRyaXZlIChTU0QpIHN0b3JhZ2UsIHNwZWNpZnkgYGBzc2RgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IGxvY2FsIHN0b3JhZ2UgdHlwZVxuICovXG5Mb2NhbFN0b3JhZ2VUeXBlcz86IHN0cmluZ1tdXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGN1cnJlbnQgb3IgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBhcmUgaW5jbHVkZWQuXG4gKiAgICsgIEZvciBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBjdXJyZW50YGAuIFRoZSBjdXJyZW50IGdlbmVyYXRpb24gaW5jbHVkZXMgRUMyIGluc3RhbmNlIHR5cGVzIGN1cnJlbnRseSByZWNvbW1lbmRlZCBmb3IgdXNlLiBUaGlzIHR5cGljYWxseSBpbmNsdWRlcyB0aGUgbGF0ZXN0IHR3byB0byB0aHJlZSBnZW5lcmF0aW9ucyBpbiBlYWNoIGluc3RhbmNlIGZhbWlseS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSW5zdGFuY2UgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9pbnN0YW5jZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSBmb3IgTGludXggSW5zdGFuY2VzKi5cbiAqICAgKyAgRm9yIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBwcmV2aW91c2BgLlxuICogICBcbiAqICBEZWZhdWx0OiBBbnkgY3VycmVudCBvciBwcmV2aW91cyBnZW5lcmF0aW9uXG4gKi9cbkluc3RhbmNlR2VuZXJhdGlvbnM/OiBzdHJpbmdbXVxuTmV0d29ya0ludGVyZmFjZUNvdW50PzogTmV0d29ya0ludGVyZmFjZUNvdW50UmVxdWVzdFxuLyoqXG4gKiBMaXN0cyB0aGUgYWNjZWxlcmF0b3IgdHlwZXMgdGhhdCBtdXN0IGJlIG9uIGFuIGluc3RhbmNlIHR5cGUuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEdQVSBhY2NlbGVyYXRvcnMsIHNwZWNpZnkgYGBncHVgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggRlBHQSBhY2NlbGVyYXRvcnMsIHNwZWNpZnkgYGBmcGdhYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIGluZmVyZW5jZSBhY2NlbGVyYXRvcnMsIHNwZWNpZnkgYGBpbmZlcmVuY2VgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IGFjY2VsZXJhdG9yIHR5cGVcbiAqL1xuQWNjZWxlcmF0b3JUeXBlcz86IHN0cmluZ1tdXG5NZW1vcnlHaUJQZXJWQ3B1PzogTWVtb3J5R2lCUGVyVkNwdVJlcXVlc3Rcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgbXVzdCBoYXZlIGFjY2VsZXJhdG9ycyBieSBzcGVjaWZpYyBtYW51ZmFjdHVyZXJzLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgZGV2aWNlcywgc3BlY2lmeSBgYG52aWRpYWBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBTUQgZGV2aWNlcywgc3BlY2lmeSBgYGFtZGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgZGV2aWNlcywgc3BlY2lmeSBgYGFtYXpvbi13ZWItc2VydmljZXNgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggWGlsaW54IGRldmljZXMsIHNwZWNpZnkgYGB4aWxpbnhgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IG1hbnVmYWN0dXJlclxuICovXG5BY2NlbGVyYXRvck1hbnVmYWN0dXJlcnM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gZXhjbHVkZS4gWW91IGNhbiB1c2Ugc3RyaW5ncyB3aXRoIG9uZSBvciBtb3JlIHdpbGQgY2FyZHMsIHJlcHJlc2VudGVkIGJ5IGFuIGFzdGVyaXNrIChgYCpgYCksIHRvIGV4Y2x1ZGUgYW4gaW5zdGFuY2UgZmFtaWx5LCB0eXBlLCBzaXplLCBvciBnZW5lcmF0aW9uLiBUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlczogYGBtNS44eGxhcmdlYGAsIGBgYzUqLipgYCwgYGBtNWEuKmBgLCBgYHIqYGAsIGBgKjMqYGAuIFxuICogIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmeSBgYGM1KmBgLCB5b3UgYXJlIGV4Y2x1ZGluZyB0aGUgZW50aXJlIEM1IGluc3RhbmNlIGZhbWlseSwgd2hpY2ggaW5jbHVkZXMgYWxsIEM1YSBhbmQgQzVuIGluc3RhbmNlIHR5cGVzLiBJZiB5b3Ugc3BlY2lmeSBgYG01YS4qYGAsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdpbGwgZXhjbHVkZSBhbGwgdGhlIE01YSBpbnN0YW5jZSB0eXBlcywgYnV0IG5vdCB0aGUgTTVuIGluc3RhbmNlIHR5cGVzLlxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEV4Y2x1ZGVkSW5zdGFuY2VUeXBlc2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEFsbG93ZWRJbnN0YW5jZVR5cGVzYGAuXG4gKiAgIERlZmF1bHQ6IE5vIGV4Y2x1ZGVkIGluc3RhbmNlIHR5cGVzXG4gKi9cbkV4Y2x1ZGVkSW5zdGFuY2VUeXBlcz86IHN0cmluZ1tdXG5WQ3B1Q291bnQ6IFZDcHVDb3VudFJlcXVlc3Rcbi8qKlxuICogVGhlIGluc3RhbmNlIHR5cGVzIHRvIGFwcGx5IHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMgYWdhaW5zdC4gQWxsIG90aGVyIGluc3RhbmNlIHR5cGVzIGFyZSBpZ25vcmVkLCBldmVuIGlmIHRoZXkgbWF0Y2ggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy5cbiAqICBZb3UgY2FuIHVzZSBzdHJpbmdzIHdpdGggb25lIG9yIG1vcmUgd2lsZCBjYXJkcywgcmVwcmVzZW50ZWQgYnkgYW4gYXN0ZXJpc2sgKGBgKmBgKSwgdG8gYWxsb3cgYW4gaW5zdGFuY2UgdHlwZSwgc2l6ZSwgb3IgZ2VuZXJhdGlvbi4gVGhlIGZvbGxvd2luZyBhcmUgZXhhbXBsZXM6IGBgbTUuOHhsYXJnZWBgLCBgYGM1Ki4qYGAsIGBgbTVhLipgYCwgYGByKmBgLCBgYCozKmBgLlxuICogIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmeSBgYGM1KmBgLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aWxsIGFsbG93IHRoZSBlbnRpcmUgQzUgaW5zdGFuY2UgZmFtaWx5LCB3aGljaCBpbmNsdWRlcyBhbGwgQzVhIGFuZCBDNW4gaW5zdGFuY2UgdHlwZXMuIElmIHlvdSBzcGVjaWZ5IGBgbTVhLipgYCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2lsbCBhbGxvdyBhbGwgdGhlIE01YSBpbnN0YW5jZSB0eXBlcywgYnV0IG5vdCB0aGUgTTVuIGluc3RhbmNlIHR5cGVzLlxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEFsbG93ZWRJbnN0YW5jZVR5cGVzYGAsIHlvdSBjYW4ndCBzcGVjaWZ5IGBgRXhjbHVkZWRJbnN0YW5jZVR5cGVzYGAuXG4gKiAgIERlZmF1bHQ6IEFsbCBpbnN0YW5jZSB0eXBlc1xuICovXG5BbGxvd2VkSW5zdGFuY2VUeXBlcz86IHN0cmluZ1tdXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGluc3RhbmNlIHR5cGVzIHdpdGggaW5zdGFuY2Ugc3RvcmUgdm9sdW1lcyBhcmUgaW5jbHVkZWQsIGV4Y2x1ZGVkLCBvciByZXF1aXJlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiBpbnN0YW5jZSBzdG9yZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL0luc3RhbmNlU3RvcmFnZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSBmb3IgTGludXggSW5zdGFuY2VzKi5cbiAqICBEZWZhdWx0OiBgYGluY2x1ZGVkYGBcbiAqL1xuTG9jYWxTdG9yYWdlPzogc3RyaW5nXG4vKipcbiAqIExpc3RzIHdoaWNoIHNwZWNpZmljIENQVSBtYW51ZmFjdHVyZXJzIHRvIGluY2x1ZGUuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEludGVsIENQVXMsIHNwZWNpZnkgYGBpbnRlbGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBTUQgQ1BVcywgc3BlY2lmeSBgYGFtZGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgQ1BVcywgc3BlY2lmeSBgYGFtYXpvbi13ZWItc2VydmljZXNgYC5cbiAqICAgXG4gKiAgIERvbid0IGNvbmZ1c2UgdGhlIENQVSBoYXJkd2FyZSBtYW51ZmFjdHVyZXIgd2l0aCB0aGUgQ1BVIGhhcmR3YXJlIGFyY2hpdGVjdHVyZS4gSW5zdGFuY2VzIHdpbGwgYmUgbGF1bmNoZWQgd2l0aCBhIGNvbXBhdGlibGUgQ1BVIGFyY2hpdGVjdHVyZSBiYXNlZCBvbiB0aGUgQW1hem9uIE1hY2hpbmUgSW1hZ2UgKEFNSSkgdGhhdCB5b3Ugc3BlY2lmeSBpbiB5b3VyIGxhdW5jaCB0ZW1wbGF0ZS4gXG4gKiAgIERlZmF1bHQ6IEFueSBtYW51ZmFjdHVyZXJcbiAqL1xuQ3B1TWFudWZhY3R1cmVycz86IHN0cmluZ1tdXG5BY2NlbGVyYXRvckNvdW50PzogQWNjZWxlcmF0b3JDb3VudFJlcXVlc3Rcbk5ldHdvcmtCYW5kd2lkdGhHYnBzPzogTmV0d29ya0JhbmR3aWR0aEdicHNSZXF1ZXN0XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGJhcmUgbWV0YWwgaW5zdGFuY2UgdHlwZXMgYXJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuXG4gKiAgRGVmYXVsdDogYGBleGNsdWRlZGBgXG4gKi9cbkJhcmVNZXRhbD86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBpbnN0YW5jZSB0eXBlcyBtdXN0IHByb3ZpZGUgT24tRGVtYW5kIEluc3RhbmNlIGhpYmVybmF0aW9uIHN1cHBvcnQuXG4gKiAgRGVmYXVsdDogYGBmYWxzZWBgXG4gKi9cblJlcXVpcmVIaWJlcm5hdGVTdXBwb3J0PzogYm9vbGVhblxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgYXMgYSBwZXJjZW50YWdlIG9mIGFuIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlLiBUaGUgaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UgaXMgdGhlIHByaWNlIG9mIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgd2l0aCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBJZiBubyBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIG1hdGNoZXMgeW91ciBhdHRyaWJ1dGVzLCB0aGVuIHRoZSBpZGVudGlmaWVkIHByaWNlIGlzIGZyb20gZWl0aGVyIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBvciwgZmFpbGluZyB0aGF0LCB0aGUgbG93ZXN0IHByaWNlZCBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLiBXaGVuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNlbGVjdHMgaW5zdGFuY2UgdHlwZXMgd2l0aCB5b3VyIGF0dHJpYnV0ZXMsIHdlIHdpbGwgZXhjbHVkZSBpbnN0YW5jZSB0eXBlcyB3aG9zZSBwcmljZSBleGNlZWRzIHlvdXIgc3BlY2lmaWVkIHRocmVzaG9sZC5cbiAqICBUaGUgcGFyYW1ldGVyIGFjY2VwdHMgYW4gaW50ZWdlciwgd2hpY2ggQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgSWYgeW91IHNldCBgYERlc2lyZWRDYXBhY2l0eVR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGJhc2VkIG9uIHRoZSBwZXItdkNQVSBvciBwZXItbWVtb3J5IHByaWNlIGluc3RlYWQgb2YgdGhlIHBlciBpbnN0YW5jZSBwcmljZS4gXG4gKiAgIE9ubHkgb25lIG9mIGBgU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZWBgIG9yIGBgTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZWBgIGNhbiBiZSBzcGVjaWZpZWQuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGVpdGhlciwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2lsbCBhdXRvbWF0aWNhbGx5IGFwcGx5IG9wdGltYWwgcHJpY2UgcHJvdGVjdGlvbiB0byBjb25zaXN0ZW50bHkgc2VsZWN0IGZyb20gYSB3aWRlIHJhbmdlIG9mIGluc3RhbmNlIHR5cGVzLiBUbyBpbmRpY2F0ZSBubyBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIG1lYW5pbmcgeW91IHdhbnQgdG8gY29uc2lkZXIgYWxsIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLCBpbmNsdWRlIG9uZSBvZiB0aGVzZSBwYXJhbWV0ZXJzIGFuZCBzcGVjaWZ5IGEgaGlnaCB2YWx1ZSwgc3VjaCBhcyBgYDk5OTk5OWBgLlxuICovXG5NYXhTcG90UHJpY2VBc1BlcmNlbnRhZ2VPZk9wdGltYWxPbkRlbWFuZFByaWNlPzogbnVtYmVyXG5CYXNlbGluZUVic0JhbmR3aWR0aE1icHM/OiBCYXNlbGluZUVic0JhbmR3aWR0aE1icHNSZXF1ZXN0XG4vKipcbiAqIFtQcmljZSBwcm90ZWN0aW9uXSBUaGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBhcyBhIHBlcmNlbnRhZ2UgaGlnaGVyIHRoYW4gYW4gaWRlbnRpZmllZCBTcG90IHByaWNlLiBUaGUgaWRlbnRpZmllZCBTcG90IHByaWNlIGlzIHRoZSBwcmljZSBvZiB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIHdpdGggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy4gSWYgbm8gY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSBtYXRjaGVzIHlvdXIgYXR0cmlidXRlcywgdGhlbiB0aGUgaWRlbnRpZmllZCBwcmljZSBpcyBmcm9tIGVpdGhlciB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgb3IsIGZhaWxpbmcgdGhhdCwgdGhlIGxvd2VzdCBwcmljZWQgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcy4gV2hlbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCB3ZSB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGludGVycHJldHMgYXMgYSBwZXJjZW50YWdlLiBcbiAqICBJZiB5b3Ugc2V0IGBgRGVzaXJlZENhcGFjaXR5VHlwZWBgIHRvIGBgdmNwdWBgIG9yIGBgbWVtb3J5LW1pYmBgLCB0aGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgaXMgYmFzZWQgb24gdGhlIHBlci12Q1BVIG9yIHBlci1tZW1vcnkgcHJpY2UgaW5zdGVhZCBvZiB0aGUgcGVyIGluc3RhbmNlIHByaWNlLiBcbiAqICAgT25seSBvbmUgb2YgYGBTcG90TWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlYGAgb3IgYGBNYXhTcG90UHJpY2VBc1BlcmNlbnRhZ2VPZk9wdGltYWxPbkRlbWFuZFByaWNlYGAgY2FuIGJlIHNwZWNpZmllZC4gSWYgeW91IGRvbid0IHNwZWNpZnkgZWl0aGVyLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwbHkgb3B0aW1hbCBwcmljZSBwcm90ZWN0aW9uIHRvIGNvbnNpc3RlbnRseSBzZWxlY3QgZnJvbSBhIHdpZGUgcmFuZ2Ugb2YgaW5zdGFuY2UgdHlwZXMuIFRvIGluZGljYXRlIG5vIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgbWVhbmluZyB5b3Ugd2FudCB0byBjb25zaWRlciBhbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMsIGluY2x1ZGUgb25lIG9mIHRoZXNlIHBhcmFtZXRlcnMgYW5kIHNwZWNpZnkgYSBoaWdoIHZhbHVlLCBzdWNoIGFzIGBgOTk5OTk5YGAuXG4gKi9cblNwb3RNYXhQcmljZVBlcmNlbnRhZ2VPdmVyTG93ZXN0UHJpY2U/OiBudW1iZXJcbi8qKlxuICogTGlzdHMgdGhlIGFjY2VsZXJhdG9ycyB0aGF0IG11c3QgYmUgb24gYW4gaW5zdGFuY2UgdHlwZS5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIEExMDAgR1BVcywgc3BlY2lmeSBgYGExMDBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIFYxMDAgR1BVcywgc3BlY2lmeSBgYHYxMDBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIEs4MCBHUFVzLCBzcGVjaWZ5IGBgazgwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBUNCBHUFVzLCBzcGVjaWZ5IGBgdDRgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIE02MCBHUFVzLCBzcGVjaWZ5IGBgbTYwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBSYWRlb24gUHJvIFY1MjAgR1BVcywgc3BlY2lmeSBgYHJhZGVvbi1wcm8tdjUyMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBYaWxpbnggVlU5UCBGUEdBcywgc3BlY2lmeSBgYHZ1OXBgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IGFjY2VsZXJhdG9yXG4gKi9cbkFjY2VsZXJhdG9yTmFtZXM/OiBzdHJpbmdbXVxuQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQj86IEFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUJSZXF1ZXN0XG4vKipcbiAqIFtQcmljZSBwcm90ZWN0aW9uXSBUaGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIE9uLURlbWFuZCBJbnN0YW5jZXMsIGFzIGEgcGVyY2VudGFnZSBoaWdoZXIgdGhhbiBhbiBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZS4gVGhlIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlIGlzIHRoZSBwcmljZSBvZiB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIHdpdGggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy4gSWYgbm8gY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSBtYXRjaGVzIHlvdXIgYXR0cmlidXRlcywgdGhlbiB0aGUgaWRlbnRpZmllZCBwcmljZSBpcyBmcm9tIGVpdGhlciB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgb3IsIGZhaWxpbmcgdGhhdCwgdGhlIGxvd2VzdCBwcmljZWQgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcy4gV2hlbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCB3ZSB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuIFxuICogIFRoZSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBpbnRlZ2VyLCB3aGljaCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBpbnRlcnByZXRzIGFzIGEgcGVyY2VudGFnZS5cbiAqICBUbyB0dXJuIG9mZiBwcmljZSBwcm90ZWN0aW9uLCBzcGVjaWZ5IGEgaGlnaCB2YWx1ZSwgc3VjaCBhcyBgYDk5OTk5OWBgLiBcbiAqICBJZiB5b3Ugc2V0IGBgRGVzaXJlZENhcGFjaXR5VHlwZWBgIHRvIGBgdmNwdWBgIG9yIGBgbWVtb3J5LW1pYmBgLCB0aGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgaXMgYXBwbGllZCBiYXNlZCBvbiB0aGUgcGVyLXZDUFUgb3IgcGVyLW1lbW9yeSBwcmljZSBpbnN0ZWFkIG9mIHRoZSBwZXIgaW5zdGFuY2UgcHJpY2UuIFxuICogIERlZmF1bHQ6IGBgMjBgYFxuICovXG5PbkRlbWFuZE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBidXJzdGFibGUgcGVyZm9ybWFuY2UgaW5zdGFuY2UgdHlwZXMgYXJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0J1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9idXJzdGFibGUtcGVyZm9ybWFuY2UtaW5zdGFuY2VzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlIGZvciBMaW51eCBJbnN0YW5jZXMqLlxuICogIERlZmF1bHQ6IGBgZXhjbHVkZWRgYFxuICovXG5CdXJzdGFibGVQZXJmb3JtYW5jZT86IHN0cmluZ1xuTWVtb3J5TWlCOiBNZW1vcnlNaUJSZXF1ZXN0XG5Ub3RhbExvY2FsU3RvcmFnZUdCPzogVG90YWxMb2NhbFN0b3JhZ2VHQlJlcXVlc3Rcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gbnVtYmVyIG9mIG5ldHdvcmsgaW50ZXJmYWNlcyBmb3IgYW4gaW5zdGFuY2UgdHlwZS5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya0ludGVyZmFjZUNvdW50UmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBuZXR3b3JrIGludGVyZmFjZXMuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSBwZXIgdkNQVSBmb3IgYW4gaW5zdGFuY2UgdHlwZSwgaW4gR2lCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlHaUJQZXJWQ3B1UmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtZW1vcnkgbWluaW11bSBpbiBHaUIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWVtb3J5IG1heGltdW0gaW4gR2lCLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gbnVtYmVyIG9mIHZDUFVzIGZvciBhbiBpbnN0YW5jZSB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZDcHVDb3VudFJlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgdkNQVXMuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdkNQVXMuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzIChHUFVzLCBGUEdBcywgb3IgQVdTIEluZmVyZW50aWEgY2hpcHMpIGZvciBhbiBpbnN0YW5jZSB0eXBlLlxuICogIFRvIGV4Y2x1ZGUgYWNjZWxlcmF0b3ItZW5hYmxlZCBpbnN0YW5jZSB0eXBlcywgc2V0IGBgTWF4YGAgdG8gYGAwYGAuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdG9yQ291bnRSZXF1ZXN0IHtcbi8qKlxuICogVGhlIG1pbmltdW0gdmFsdWUuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSB2YWx1ZS5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gZ2lnYWJpdHMgcGVyIHNlY29uZCAoR2JwcykuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtCYW5kd2lkdGhHYnBzUmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gZ2lnYWJpdHMgcGVyIHNlY29uZCAoR2JwcykuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgbmV0d29yayBiYW5kd2lkdGgsIGluIGdpZ2FiaXRzIHBlciBzZWNvbmQgKEdicHMpLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYmFzZWxpbmUgYmFuZHdpZHRoIHBlcmZvcm1hbmNlIGZvciBhbiBpbnN0YW5jZSB0eXBlLCBpbiBNYnBzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gRUJT4oCTb3B0aW1pemVkIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2Vicy1vcHRpbWl6ZWQuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUgZm9yIExpbnV4IEluc3RhbmNlcyouXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VsaW5lRWJzQmFuZHdpZHRoTWJwc1JlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWluaW11bSB2YWx1ZSBpbiBNYnBzLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gdmFsdWUgaW4gTWJwcy5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHRvdGFsIG1lbW9yeSBzaXplIGZvciB0aGUgYWNjZWxlcmF0b3JzIG9uIGFuIGluc3RhbmNlIHR5cGUsIGluIE1pQi5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQlJlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWVtb3J5IG1pbmltdW0gaW4gTWlCLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1lbW9yeSBtYXhpbXVtIGluIE1pQi5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGluc3RhbmNlIG1lbW9yeSBzaXplIGZvciBhbiBpbnN0YW5jZSB0eXBlLCBpbiBNaUIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5TWlCUmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtZW1vcnkgbWluaW11bSBpbiBNaUIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWVtb3J5IG1heGltdW0gaW4gTWlCLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gdG90YWwgbG9jYWwgc3RvcmFnZSBzaXplIGZvciBhbiBpbnN0YW5jZSB0eXBlLCBpbiBHQi5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG90YWxMb2NhbFN0b3JhZ2VHQlJlcXVlc3Qge1xuLyoqXG4gKiBUaGUgc3RvcmFnZSBtaW5pbXVtIGluIEdCLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIHN0b3JhZ2UgbWF4aW11bSBpbiBHQi5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIEEgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIGEgdGFnIGZvciB0aGUgYGBUYWdzYGAgcHJvcGVydHkgb2YgW0FXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwpIHJlc291cmNlLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1RhZyBBdXRvIFNjYWxpbmcgZ3JvdXBzIGFuZCBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2F1dG9zY2FsaW5nLXRhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi4gWW91IGNhbiBmaW5kIGEgc2FtcGxlIHRlbXBsYXRlIHNuaXBwZXQgaW4gdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCNhd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC0tZXhhbXBsZXMpIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cGBgIHJlc291cmNlLlxuICogIENsb3VkRm9ybWF0aW9uIGFkZHMgdGhlIGZvbGxvd2luZyB0YWdzIHRvIGFsbCBBdXRvIFNjYWxpbmcgZ3JvdXBzIGFuZCBhc3NvY2lhdGVkIGluc3RhbmNlczogXG4gKiAgICsgIGF3czpjbG91ZGZvcm1hdGlvbjpzdGFjay1uYW1lXG4gKiAgICsgIGF3czpjbG91ZGZvcm1hdGlvbjpzdGFjay1pZFxuICogICArICBhd3M6Y2xvdWRmb3JtYXRpb246bG9naWNhbC1pZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ1Byb3BlcnR5IHtcbi8qKlxuICogVGhlIHRhZyB2YWx1ZS5cbiAqL1xuVmFsdWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFnIGtleS5cbiAqL1xuS2V5OiBzdHJpbmdcbi8qKlxuICogU2V0IHRvIGBgdHJ1ZWBgIGlmIHlvdSB3YW50IENsb3VkRm9ybWF0aW9uIHRvIGNvcHkgdGhlIHRhZyB0byBFQzIgaW5zdGFuY2VzIHRoYXQgYXJlIGxhdW5jaGVkIGFzIHBhcnQgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cC4gU2V0IHRvIGBgZmFsc2VgYCBpZiB5b3Ugd2FudCB0aGUgdGFnIGF0dGFjaGVkIG9ubHkgdG8gdGhlIEF1dG8gU2NhbGluZyBncm91cCBhbmQgbm90IGNvcGllZCB0byBhbnkgaW5zdGFuY2VzIGxhdW5jaGVkIGFzIHBhcnQgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cC5cbiAqL1xuUHJvcGFnYXRlQXRMYXVuY2g6IGJvb2xlYW5cbn1cbi8qKlxuICogQSBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgYW4gQW1hem9uIFNOUyBub3RpZmljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIGBgTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbnNgYCBwcm9wZXJ0eSBvZiB0aGUgW0FXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwpIHJlc291cmNlLlxuICogIEZvciBhbiBleGFtcGxlIHRlbXBsYXRlIHNuaXBwZXQsIHNlZSBbQ29uZmlndXJlIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHJlc291cmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvcXVpY2tyZWYtZWMyLWF1dG8tc2NhbGluZy5odG1sKS5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtHZXQgQW1hem9uIFNOUyBub3RpZmljYXRpb25zIHdoZW4geW91ciBBdXRvIFNjYWxpbmcgZ3JvdXAgc2NhbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9BU0dldHRpbmdOb3RpZmljYXRpb25zLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbjEge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEFtYXpvbiBTTlMgdG9waWMuXG4gKi9cblRvcGljQVJOOiAoc3RyaW5nIHwgc3RyaW5nW10pXG4vKipcbiAqIEEgbGlzdCBvZiBldmVudCB0eXBlcyB0aGF0IHNlbmQgYSBub3RpZmljYXRpb24uIEV2ZW50IHR5cGVzIGNhbiBpbmNsdWRlIGFueSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzLiBcbiAqICAgKkFsbG93ZWQgdmFsdWVzKjpcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX0xBVU5DSGBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfTEFVTkNIX0VSUk9SYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9URVJNSU5BVEVgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX1RFUk1JTkFURV9FUlJPUmBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpURVNUX05PVElGSUNBVElPTmBgXG4gKi9cbk5vdGlmaWNhdGlvblR5cGVzPzogc3RyaW5nW11cbn1cbi8qKlxuICogYGBNZXRyaWNzQ29sbGVjdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgdGhlIFtBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sKSByZXNvdXJjZSB0aGF0IGRlc2NyaWJlcyB0aGUgZ3JvdXAgbWV0cmljcyB0aGF0IGFuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGdyb3VwIHNlbmRzIHRvIEFtYXpvbiBDbG91ZFdhdGNoLiBUaGVzZSBtZXRyaWNzIGRlc2NyaWJlIHRoZSBncm91cCByYXRoZXIgdGhhbiBhbnkgb2YgaXRzIGluc3RhbmNlcy4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbTW9uaXRvciBDbG91ZFdhdGNoIG1ldHJpY3MgZm9yIHlvdXIgQXV0byBTY2FsaW5nIGdyb3VwcyBhbmQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9hcy1pbnN0YW5jZS1tb25pdG9yaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouIFlvdSBjYW4gZmluZCBhIHNhbXBsZSB0ZW1wbGF0ZSBzbmlwcGV0IGluIHRoZSBbRXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwjYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAtLWV4YW1wbGVzKSBzZWN0aW9uIG9mIHRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBgYCByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNzQ29sbGVjdGlvbiB7XG4vKipcbiAqIElkZW50aWZpZXMgdGhlIG1ldHJpY3MgdG8gZW5hYmxlLlxuICogIFlvdSBjYW4gc3BlY2lmeSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIG1ldHJpY3M6XG4gKiAgICsgICBgYEdyb3VwTWluU2l6ZWBgIFxuICogICArICAgYGBHcm91cE1heFNpemVgYCBcbiAqICAgKyAgIGBgR3JvdXBEZXNpcmVkQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgR3JvdXBJblNlcnZpY2VJbnN0YW5jZXNgYCBcbiAqICAgKyAgIGBgR3JvdXBQZW5kaW5nSW5zdGFuY2VzYGAgXG4gKiAgICsgICBgYEdyb3VwU3RhbmRieUluc3RhbmNlc2BgIFxuICogICArICAgYGBHcm91cFRlcm1pbmF0aW5nSW5zdGFuY2VzYGAgXG4gKiAgICsgICBgYEdyb3VwVG90YWxJbnN0YW5jZXNgYCBcbiAqICAgKyAgIGBgR3JvdXBJblNlcnZpY2VDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cFBlbmRpbmdDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cFN0YW5kYnlDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cFRlcm1pbmF0aW5nQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgR3JvdXBUb3RhbENhcGFjaXR5YGAgXG4gKiAgICsgICBgYFdhcm1Qb29sRGVzaXJlZENhcGFjaXR5YGAgXG4gKiAgICsgICBgYFdhcm1Qb29sV2FybWVkQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgV2FybVBvb2xQZW5kaW5nQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgV2FybVBvb2xUZXJtaW5hdGluZ0NhcGFjaXR5YGAgXG4gKiAgICsgICBgYFdhcm1Qb29sVG90YWxDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cEFuZFdhcm1Qb29sRGVzaXJlZENhcGFjaXR5YGAgXG4gKiAgICsgICBgYEdyb3VwQW5kV2FybVBvb2xUb3RhbENhcGFjaXR5YGAgXG4gKiAgIFxuICogIElmIHlvdSBzcGVjaWZ5IGBgR3JhbnVsYXJpdHlgYCBhbmQgZG9uJ3Qgc3BlY2lmeSBhbnkgbWV0cmljcywgYWxsIG1ldHJpY3MgYXJlIGVuYWJsZWQuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIENsb3VkV2F0Y2ggbWV0cmljcyBmb3IgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctbWV0cmljcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5NZXRyaWNzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIGZyZXF1ZW5jeSBhdCB3aGljaCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzZW5kcyBhZ2dyZWdhdGVkIGRhdGEgdG8gQ2xvdWRXYXRjaC4gVGhlIG9ubHkgdmFsaWQgdmFsdWUgaXMgYGAxTWludXRlYGAuXG4gKi9cbkdyYW51bGFyaXR5OiBzdHJpbmdcbn1cbi8qKlxuICogQW4gaW5zdGFuY2UgbWFpbnRlbmFuY2UgcG9saWN5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTZXQgaW5zdGFuY2UgbWFpbnRlbmFuY2UgcG9saWN5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWluc3RhbmNlLW1haW50ZW5hbmNlLXBvbGljeS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlTWFpbnRlbmFuY2VQb2xpY3kge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHVwcGVyIHRocmVzaG9sZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGRlc2lyZWQgY2FwYWNpdHkgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cC4gSXQgcmVwcmVzZW50cyB0aGUgbWF4aW11bSBwZXJjZW50YWdlIG9mIHRoZSBncm91cCB0aGF0IGNhbiBiZSBpbiBzZXJ2aWNlIGFuZCBoZWFsdGh5LCBvciBwZW5kaW5nLCB0byBzdXBwb3J0IHlvdXIgd29ya2xvYWQgd2hlbiByZXBsYWNpbmcgaW5zdGFuY2VzLiBWYWx1ZSByYW5nZSBpcyAxMDAgdG8gMjAwLiBUbyBjbGVhciBhIHByZXZpb3VzbHkgc2V0IHZhbHVlLCBzcGVjaWZ5IGEgdmFsdWUgb2YgYGAtMWBgLlxuICogIEJvdGggYGBNaW5IZWFsdGh5UGVyY2VudGFnZWBgIGFuZCBgYE1heEhlYWx0aHlQZXJjZW50YWdlYGAgbXVzdCBiZSBzcGVjaWZpZWQsIGFuZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAxMDAuIEEgbGFyZ2UgcmFuZ2UgaW5jcmVhc2VzIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIHRoYXQgY2FuIGJlIHJlcGxhY2VkIGF0IHRoZSBzYW1lIHRpbWUuXG4gKi9cbk1heEhlYWx0aHlQZXJjZW50YWdlPzogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbG93ZXIgdGhyZXNob2xkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgZGVzaXJlZCBjYXBhY2l0eSBvZiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLiBJdCByZXByZXNlbnRzIHRoZSBtaW5pbXVtIHBlcmNlbnRhZ2Ugb2YgdGhlIGdyb3VwIHRvIGtlZXAgaW4gc2VydmljZSwgaGVhbHRoeSwgYW5kIHJlYWR5IHRvIHVzZSB0byBzdXBwb3J0IHlvdXIgd29ya2xvYWQgd2hlbiByZXBsYWNpbmcgaW5zdGFuY2VzLiBWYWx1ZSByYW5nZSBpcyAwIHRvIDEwMC4gVG8gY2xlYXIgYSBwcmV2aW91c2x5IHNldCB2YWx1ZSwgc3BlY2lmeSBhIHZhbHVlIG9mIGBgLTFgYC5cbiAqL1xuTWluSGVhbHRoeVBlcmNlbnRhZ2U/OiBudW1iZXJcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYGBBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwYGAgcmVzb3VyY2UgZGVmaW5lcyBhbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cCwgd2hpY2ggaXMgYSBjb2xsZWN0aW9uIG9mIEFtYXpvbiBFQzIgaW5zdGFuY2VzIHRoYXQgYXJlIHRyZWF0ZWQgYXMgYSBsb2dpY2FsIGdyb3VwaW5nIGZvciB0aGUgcHVycG9zZXMgb2YgYXV0b21hdGljIHNjYWxpbmcgYW5kIG1hbmFnZW1lbnQuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nLCBzZWUgdGhlIFtBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS93aGF0LWlzLWFtYXpvbi1lYzItYXV0by1zY2FsaW5nLmh0bWwpLiBcbiAqICAgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgY29uZmlndXJlcyBpbnN0YW5jZXMgbGF1bmNoZWQgYXMgcGFydCBvZiBhbiBBdXRvIFNjYWxpbmcgZ3JvdXAgdXNpbmcgZWl0aGVyIGEgW2xhdW5jaCB0ZW1wbGF0ZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1sYXVuY2h0ZW1wbGF0ZS5odG1sKSBvciBhIGxhdW5jaCBjb25maWd1cmF0aW9uLiBXZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3UgZG8gbm90IHVzZSBsYXVuY2ggY29uZmlndXJhdGlvbnMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0xhdW5jaCBjb25maWd1cmF0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvbGF1bmNoLWNvbmZpZ3VyYXRpb25zLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgRm9yIGhlbHAgbWlncmF0aW5nIGZyb20gbGF1bmNoIGNvbmZpZ3VyYXRpb25zIHRvIGxhdW5jaCB0ZW1wbGF0ZXMsIHNlZSBbTWlncmF0ZSBDbG91ZEZvcm1hdGlvbiBzdGFja3MgZnJvbSBsYXVuY2ggY29uZmlndXJhdGlvbnMgdG8gbGF1bmNoIHRlbXBsYXRlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvbWlncmF0ZS1sYXVuY2gtY29uZmlndXJhdGlvbnMtd2l0aC1jbG91ZGZvcm1hdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfQVVUT1NDQUxJTkdfQVVUT1NDQUxJTkdHUk9VUCB7XG4vKipcbiAqIE9uZSBvciBtb3JlIGxpZmVjeWNsZSBob29rcyB0byBhZGQgdG8gdGhlIEF1dG8gU2NhbGluZyBncm91cCBiZWZvcmUgaW5zdGFuY2VzIGFyZSBsYXVuY2hlZC5cbiAqL1xuTGlmZWN5Y2xlSG9va1NwZWNpZmljYXRpb25MaXN0PzogTGlmZWN5Y2xlSG9va1NwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBBIGxpc3Qgb2YgQ2xhc3NpYyBMb2FkIEJhbGFuY2VycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBBdXRvIFNjYWxpbmcgZ3JvdXAuIEZvciBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycywgTmV0d29yayBMb2FkIEJhbGFuY2VycywgYW5kIEdhdGV3YXkgTG9hZCBCYWxhbmNlcnMsIHNwZWNpZnkgdGhlIGBgVGFyZ2V0R3JvdXBBUk5zYGAgcHJvcGVydHkgaW5zdGVhZC5cbiAqL1xuTG9hZEJhbGFuY2VyTmFtZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbGF1bmNoIGNvbmZpZ3VyYXRpb24gdG8gdXNlIHRvIGxhdW5jaCBpbnN0YW5jZXMuXG4gKiAgUmVxdWlyZWQgb25seSBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSBgYExhdW5jaFRlbXBsYXRlYGAsIGBgTWl4ZWRJbnN0YW5jZXNQb2xpY3lgYCwgb3IgYGBJbnN0YW5jZUlkYGAuXG4gKi9cbkxhdW5jaENvbmZpZ3VyYXRpb25OYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgc2VydmljZS1saW5rZWQgcm9sZSB0aGF0IHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgdXNlcyB0byBjYWxsIG90aGVyIEFXUyBzZXJ2aWNlIG9uIHlvdXIgYmVoYWxmLiBCeSBkZWZhdWx0LCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB1c2VzIGEgc2VydmljZS1saW5rZWQgcm9sZSBuYW1lZCBgYEFXU1NlcnZpY2VSb2xlRm9yQXV0b1NjYWxpbmdgYCwgd2hpY2ggaXQgY3JlYXRlcyBpZiBpdCBkb2VzIG5vdCBleGlzdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2VydmljZS1saW5rZWQgcm9sZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2F1dG9zY2FsaW5nLXNlcnZpY2UtbGlua2VkLXJvbGUuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuU2VydmljZUxpbmtlZFJvbGVBUk4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lcyAoQVJOKSBvZiB0aGUgRWxhc3RpYyBMb2FkIEJhbGFuY2luZyB0YXJnZXQgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuIEluc3RhbmNlcyBhcmUgcmVnaXN0ZXJlZCBhcyB0YXJnZXRzIHdpdGggdGhlIHRhcmdldCBncm91cHMuIFRoZSB0YXJnZXQgZ3JvdXBzIHJlY2VpdmUgaW5jb21pbmcgdHJhZmZpYyBhbmQgcm91dGUgcmVxdWVzdHMgdG8gb25lIG9yIG1vcmUgcmVnaXN0ZXJlZCB0YXJnZXRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2UgRWxhc3RpYyBMb2FkIEJhbGFuY2luZyB0byBkaXN0cmlidXRlIHRyYWZmaWMgYWNyb3NzIHRoZSBpbnN0YW5jZXMgaW4geW91ciBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2F1dG9zY2FsaW5nLWxvYWQtYmFsYW5jZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuVGFyZ2V0R3JvdXBBUk5zPzogc3RyaW5nW11cbi8qKlxuICogKk9ubHkgbmVlZGVkIGlmIHlvdSB1c2Ugc2ltcGxlIHNjYWxpbmcgcG9saWNpZXMuKiBcbiAqICBUaGUgYW1vdW50IG9mIHRpbWUsIGluIHNlY29uZHMsIGJldHdlZW4gb25lIHNjYWxpbmcgYWN0aXZpdHkgZW5kaW5nIGFuZCBhbm90aGVyIG9uZSBzdGFydGluZyBkdWUgdG8gc2ltcGxlIHNjYWxpbmcgcG9saWNpZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NjYWxpbmcgY29vbGRvd25zIGZvciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy1zY2FsaW5nLWNvb2xkb3ducy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIERlZmF1bHQ6IGBgMzAwYGAgc2Vjb25kc1xuICovXG5Db29sZG93bj86IHN0cmluZ1xuLyoqXG4gKiBDb25maWd1cmVzIGFuIEF1dG8gU2NhbGluZyBncm91cCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgd2hlbiBzcGVjaWZpZWQgZXZlbnRzIHRha2UgcGxhY2UuXG4gKi9cbk5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25zPzogTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFRoZSBkZXNpcmVkIGNhcGFjaXR5IGlzIHRoZSBpbml0aWFsIGNhcGFjaXR5IG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgYXQgdGhlIHRpbWUgb2YgaXRzIGNyZWF0aW9uIGFuZCB0aGUgY2FwYWNpdHkgaXQgYXR0ZW1wdHMgdG8gbWFpbnRhaW4uIEl0IGNhbiBzY2FsZSBiZXlvbmQgdGhpcyBjYXBhY2l0eSBpZiB5b3UgY29uZmlndXJlIGF1dG9tYXRpYyBzY2FsaW5nLlxuICogIFRoZSBudW1iZXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgZ3JvdXAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBncm91cC4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgZGVzaXJlZCBjYXBhY2l0eSB3aGVuIGNyZWF0aW5nIHRoZSBzdGFjaywgdGhlIGRlZmF1bHQgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgZ3JvdXAuXG4gKiAgQ2xvdWRGb3JtYXRpb24gbWFya3MgdGhlIEF1dG8gU2NhbGluZyBncm91cCBhcyBzdWNjZXNzZnVsIChieSBzZXR0aW5nIGl0cyBzdGF0dXMgdG8gQ1JFQVRFX0NPTVBMRVRFKSB3aGVuIHRoZSBkZXNpcmVkIGNhcGFjaXR5IGlzIHJlYWNoZWQuIEhvd2V2ZXIsIGlmIGEgbWF4aW11bSBTcG90IHByaWNlIGlzIHNldCBpbiB0aGUgbGF1bmNoIHRlbXBsYXRlIG9yIGxhdW5jaCBjb25maWd1cmF0aW9uIHRoYXQgeW91IHNwZWNpZmllZCwgdGhlbiBkZXNpcmVkIGNhcGFjaXR5IGlzIG5vdCB1c2VkIGFzIGEgY3JpdGVyaWEgZm9yIHN1Y2Nlc3MuIFdoZXRoZXIgeW91ciByZXF1ZXN0IGlzIGZ1bGZpbGxlZCBkZXBlbmRzIG9uIFNwb3QgSW5zdGFuY2UgY2FwYWNpdHkgYW5kIHlvdXIgbWF4aW11bSBwcmljZS5cbiAqL1xuRGVzaXJlZENhcGFjaXR5Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgdGhhdCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3YWl0cyBiZWZvcmUgY2hlY2tpbmcgdGhlIGhlYWx0aCBzdGF0dXMgb2YgYW4gRUMyIGluc3RhbmNlIHRoYXQgaGFzIGNvbWUgaW50byBzZXJ2aWNlIGFuZCBtYXJraW5nIGl0IHVuaGVhbHRoeSBkdWUgdG8gYSBmYWlsZWQgaGVhbHRoIGNoZWNrLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3VyIGluc3RhbmNlcyBkbyBub3QgaW1tZWRpYXRlbHkgcGFzcyB0aGVpciBoZWFsdGggY2hlY2tzIGFmdGVyIHRoZXkgZW50ZXIgdGhlIGBgSW5TZXJ2aWNlYGAgc3RhdGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NldCB0aGUgaGVhbHRoIGNoZWNrIGdyYWNlIHBlcmlvZCBmb3IgYW4gQXV0byBTY2FsaW5nIGdyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9oZWFsdGgtY2hlY2stZ3JhY2UtcGVyaW9kLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgRGVmYXVsdDogYGAwYGAgc2Vjb25kc1xuICovXG5IZWFsdGhDaGVja0dyYWNlUGVyaW9kPzogbnVtYmVyXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgdW50aWwgYSBuZXcgaW5zdGFuY2UgaXMgY29uc2lkZXJlZCB0byBoYXZlIGZpbmlzaGVkIGluaXRpYWxpemluZyBhbmQgcmVzb3VyY2UgY29uc3VtcHRpb24gdG8gYmVjb21lIHN0YWJsZSBhZnRlciBpdCBlbnRlcnMgdGhlIGBgSW5TZXJ2aWNlYGAgc3RhdGUuIFxuICogIER1cmluZyBhbiBpbnN0YW5jZSByZWZyZXNoLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3YWl0cyBmb3IgdGhlIHdhcm0tdXAgcGVyaW9kIGFmdGVyIGl0IHJlcGxhY2VzIGFuIGluc3RhbmNlIGJlZm9yZSBpdCBtb3ZlcyBvbiB0byByZXBsYWNpbmcgdGhlIG5leHQgaW5zdGFuY2UuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGFsc28gd2FpdHMgZm9yIHRoZSB3YXJtLXVwIHBlcmlvZCBiZWZvcmUgYWdncmVnYXRpbmcgdGhlIG1ldHJpY3MgZm9yIG5ldyBpbnN0YW5jZXMgd2l0aCBleGlzdGluZyBpbnN0YW5jZXMgaW4gdGhlIEFtYXpvbiBDbG91ZFdhdGNoIG1ldHJpY3MgdGhhdCBhcmUgdXNlZCBmb3Igc2NhbGluZywgcmVzdWx0aW5nIGluIG1vcmUgcmVsaWFibGUgdXNhZ2UgZGF0YS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2V0IHRoZSBkZWZhdWx0IGluc3RhbmNlIHdhcm11cCBmb3IgYW4gQXV0byBTY2FsaW5nIGdyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWRlZmF1bHQtaW5zdGFuY2Utd2FybXVwLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgIFRvIG1hbmFnZSB2YXJpb3VzIHdhcm0tdXAgc2V0dGluZ3MgYXQgdGhlIGdyb3VwIGxldmVsLCB3ZSByZWNvbW1lbmQgdGhhdCB5b3Ugc2V0IHRoZSBkZWZhdWx0IGluc3RhbmNlIHdhcm11cCwgKmV2ZW4gaWYgaXQgaXMgc2V0IHRvIDAgc2Vjb25kcyouIFRvIHJlbW92ZSBhIHZhbHVlIHRoYXQgeW91IHByZXZpb3VzbHkgc2V0LCBpbmNsdWRlIHRoZSBwcm9wZXJ0eSBidXQgc3BlY2lmeSBgYC0xYGAgZm9yIHRoZSB2YWx1ZS4gSG93ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIGtlZXBpbmcgdGhlIGRlZmF1bHQgaW5zdGFuY2Ugd2FybXVwIGVuYWJsZWQgYnkgc3BlY2lmeWluZyBhIHZhbHVlIG9mIGBgMGBgIG9yIG90aGVyIG5vbWluYWwgdmFsdWUuXG4gKiAgIERlZmF1bHQ6IE5vbmVcbiAqL1xuRGVmYXVsdEluc3RhbmNlV2FybXVwPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIG5ld2x5IGxhdW5jaGVkIGluc3RhbmNlcyBhcmUgcHJvdGVjdGVkIGZyb20gdGVybWluYXRpb24gYnkgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2hlbiBzY2FsaW5nIGluLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBwcmV2ZW50aW5nIGluc3RhbmNlcyBmcm9tIHRlcm1pbmF0aW5nIG9uIHNjYWxlIGluLCBzZWUgW1VzZSBpbnN0YW5jZSBzY2FsZS1pbiBwcm90ZWN0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWluc3RhbmNlLXByb3RlY3Rpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuTmV3SW5zdGFuY2VzUHJvdGVjdGVkRnJvbVNjYWxlSW4/OiBib29sZWFuXG5MYXVuY2hUZW1wbGF0ZT86IExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvblxuTWl4ZWRJbnN0YW5jZXNQb2xpY3k/OiBNaXhlZEluc3RhbmNlc1BvbGljeVxuLyoqXG4gKiBBIGxpc3Qgb2Ygc3VibmV0IElEcyBmb3IgYSB2aXJ0dWFsIHByaXZhdGUgY2xvdWQgKFZQQykgd2hlcmUgaW5zdGFuY2VzIGluIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgY2FuIGJlIGNyZWF0ZWQuXG4gKiAgSWYgdGhpcyByZXNvdXJjZSBzcGVjaWZpZXMgcHVibGljIHN1Ym5ldHMgYW5kIGlzIGFsc28gaW4gYSBWUEMgdGhhdCBpcyBkZWZpbmVkIGluIHRoZSBzYW1lIHN0YWNrIHRlbXBsYXRlLCB5b3UgbXVzdCB1c2UgdGhlIFtEZXBlbmRzT24gYXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtYXR0cmlidXRlLWRlcGVuZHNvbi5odG1sKSB0byBkZWNsYXJlIGEgZGVwZW5kZW5jeSBvbiB0aGUgW1ZQQy1nYXRld2F5IGF0dGFjaG1lbnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItdnBjLWdhdGV3YXktYXR0YWNobWVudC5odG1sKS5cbiAqICAgV2hlbiB5b3UgdXBkYXRlIGBgVlBDWm9uZUlkZW50aWZpZXJgYCwgdGhpcyByZXRhaW5zIHRoZSBzYW1lIEF1dG8gU2NhbGluZyBncm91cCBhbmQgcmVwbGFjZXMgb2xkIGluc3RhbmNlcyB3aXRoIG5ldyBvbmVzLCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBzdWJuZXRzLiBZb3UgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBob3cgQ2xvdWRGb3JtYXRpb24gaGFuZGxlcyB0aGVzZSB1cGRhdGVzIGJ5IHVzaW5nIGFuIFtVcGRhdGVQb2xpY3kgYXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtYXR0cmlidXRlLXVwZGF0ZXBvbGljeS5odG1sKS5cbiAqICAgUmVxdWlyZWQgdG8gbGF1bmNoIGluc3RhbmNlcyBpbnRvIGEgbm9uZGVmYXVsdCBWUEMuIElmIHlvdSBzcGVjaWZ5IGBgVlBDWm9uZUlkZW50aWZpZXJgYCB3aXRoIGBgQXZhaWxhYmlsaXR5Wm9uZXNgYCwgdGhlIHN1Ym5ldHMgdGhhdCB5b3Ugc3BlY2lmeSBmb3IgdGhpcyBwcm9wZXJ0eSBtdXN0IHJlc2lkZSBpbiB0aG9zZSBBdmFpbGFiaWxpdHkgWm9uZXMuXG4gKi9cblZQQ1pvbmVJZGVudGlmaWVyPzogc3RyaW5nW11cbi8qKlxuICogT25lIG9yIG1vcmUgdGFncy4gWW91IGNhbiB0YWcgeW91ciBBdXRvIFNjYWxpbmcgZ3JvdXAgYW5kIHByb3BhZ2F0ZSB0aGUgdGFncyB0byB0aGUgQW1hem9uIEVDMiBpbnN0YW5jZXMgaXQgbGF1bmNoZXMuIFRhZ3MgYXJlIG5vdCBwcm9wYWdhdGVkIHRvIEFtYXpvbiBFQlMgdm9sdW1lcy4gVG8gYWRkIHRhZ3MgdG8gQW1hem9uIEVCUyB2b2x1bWVzLCBzcGVjaWZ5IHRoZSB0YWdzIGluIGEgbGF1bmNoIHRlbXBsYXRlIGJ1dCB1c2UgY2F1dGlvbi4gSWYgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBzcGVjaWZpZXMgYW4gaW5zdGFuY2UgdGFnIHdpdGggYSBrZXkgdGhhdCBpcyBhbHNvIHNwZWNpZmllZCBmb3IgdGhlIEF1dG8gU2NhbGluZyBncm91cCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBvZiB0aGF0IGluc3RhbmNlIHRhZyB3aXRoIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIEF1dG8gU2NhbGluZyBncm91cC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGFnIEF1dG8gU2NhbGluZyBncm91cHMgYW5kIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy10YWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cblRhZ3M/OiBUYWdQcm9wZXJ0eVtdXG4vKipcbiAqIFJlc2VydmVkLlxuICovXG5Db250ZXh0Pzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIENhcGFjaXR5IFJlYmFsYW5jaW5nIGlzIGVuYWJsZWQuIE90aGVyd2lzZSwgQ2FwYWNpdHkgUmViYWxhbmNpbmcgaXMgZGlzYWJsZWQuIFdoZW4geW91IHR1cm4gb24gQ2FwYWNpdHkgUmViYWxhbmNpbmcsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGF0dGVtcHRzIHRvIGxhdW5jaCBhIFNwb3QgSW5zdGFuY2Ugd2hlbmV2ZXIgQW1hem9uIEVDMiBub3RpZmllcyB0aGF0IGEgU3BvdCBJbnN0YW5jZSBpcyBhdCBhbiBlbGV2YXRlZCByaXNrIG9mIGludGVycnVwdGlvbi4gQWZ0ZXIgbGF1bmNoaW5nIGEgbmV3IGluc3RhbmNlLCBpdCB0aGVuIHRlcm1pbmF0ZXMgYW4gb2xkIGluc3RhbmNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2UgQ2FwYWNpdHkgUmViYWxhbmNpbmcgdG8gaGFuZGxlIEFtYXpvbiBFQzIgU3BvdCBJbnRlcnJ1cHRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWNhcGFjaXR5LXJlYmFsYW5jaW5nLmh0bWwpIGluIHRoZSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5DYXBhY2l0eVJlYmFsYW5jZT86IGJvb2xlYW5cbi8qKlxuICogVGhlIElEIG9mIHRoZSBpbnN0YW5jZSB1c2VkIHRvIGJhc2UgdGhlIGxhdW5jaCBjb25maWd1cmF0aW9uIG9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDcmVhdGUgYW4gQXV0byBTY2FsaW5nIGdyb3VwIHVzaW5nIGFuIEVDMiBpbnN0YW5jZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvY3JlYXRlLWFzZy1mcm9tLWluc3RhbmNlLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgSWYgeW91IHNwZWNpZnkgYGBMYXVuY2hUZW1wbGF0ZWBgLCBgYE1peGVkSW5zdGFuY2VzUG9saWN5YGAsIG9yIGBgTGF1bmNoQ29uZmlndXJhdGlvbk5hbWVgYCwgZG9uJ3Qgc3BlY2lmeSBgYEluc3RhbmNlSWRgYC5cbiAqL1xuSW5zdGFuY2VJZD86IHN0cmluZ1xuLyoqXG4gKiBBIGxpc3Qgb2YgQXZhaWxhYmlsaXR5IFpvbmVzIHdoZXJlIGluc3RhbmNlcyBpbiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGNhbiBiZSBjcmVhdGVkLiBVc2VkIGZvciBsYXVuY2hpbmcgaW50byB0aGUgZGVmYXVsdCBWUEMgc3VibmV0IGluIGVhY2ggQXZhaWxhYmlsaXR5IFpvbmUgd2hlbiBub3QgdXNpbmcgdGhlIGBgVlBDWm9uZUlkZW50aWZpZXJgYCBwcm9wZXJ0eSwgb3IgZm9yIGF0dGFjaGluZyBhIG5ldHdvcmsgaW50ZXJmYWNlIHdoZW4gYW4gZXhpc3RpbmcgbmV0d29yayBpbnRlcmZhY2UgSUQgaXMgc3BlY2lmaWVkIGluIGEgbGF1bmNoIHRlbXBsYXRlLlxuICovXG5BdmFpbGFiaWxpdHlab25lcz86IHN0cmluZ1tdXG5Ob3RpZmljYXRpb25Db25maWd1cmF0aW9uPzogTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbjFcbi8qKlxuICogRW5hYmxlcyB0aGUgbW9uaXRvcmluZyBvZiBncm91cCBtZXRyaWNzIG9mIGFuIEF1dG8gU2NhbGluZyBncm91cC4gQnkgZGVmYXVsdCwgdGhlc2UgbWV0cmljcyBhcmUgZGlzYWJsZWQuXG4gKi9cbk1ldHJpY3NDb2xsZWN0aW9uPzogTWV0cmljc0NvbGxlY3Rpb25bXVxuSW5zdGFuY2VNYWludGVuYW5jZVBvbGljeT86IEluc3RhbmNlTWFpbnRlbmFuY2VQb2xpY3lcbi8qKlxuICogVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZ3JvdXAuXG4gKiAgIFdpdGggYSBtaXhlZCBpbnN0YW5jZXMgcG9saWN5IHRoYXQgdXNlcyBpbnN0YW5jZSB3ZWlnaHRpbmcsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIG1heSBuZWVkIHRvIGdvIGFib3ZlIGBgTWF4U2l6ZWBgIHRvIG1lZXQgeW91ciBjYXBhY2l0eSByZXF1aXJlbWVudHMuIEluIHRoaXMgZXZlbnQsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdpbGwgbmV2ZXIgZ28gYWJvdmUgYGBNYXhTaXplYGAgYnkgbW9yZSB0aGFuIHlvdXIgbGFyZ2VzdCBpbnN0YW5jZSB3ZWlnaHQgKHdlaWdodHMgdGhhdCBkZWZpbmUgaG93IG1hbnkgdW5pdHMgZWFjaCBpbnN0YW5jZSBjb250cmlidXRlcyB0byB0aGUgZGVzaXJlZCBjYXBhY2l0eSBvZiB0aGUgZ3JvdXApLlxuICovXG5NYXhTaXplOiBzdHJpbmdcbi8qKlxuICogVGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgZ3JvdXAuXG4gKi9cbk1pblNpemU6IHN0cmluZ1xuLyoqXG4gKiBBIHBvbGljeSBvciBhIGxpc3Qgb2YgcG9saWNpZXMgdGhhdCBhcmUgdXNlZCB0byBzZWxlY3QgdGhlIGluc3RhbmNlIHRvIHRlcm1pbmF0ZS4gVGhlc2UgcG9saWNpZXMgYXJlIGV4ZWN1dGVkIGluIHRoZSBvcmRlciB0aGF0IHlvdSBsaXN0IHRoZW0uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyZSB0ZXJtaW5hdGlvbiBwb2xpY2llcyBmb3IgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctdGVybWluYXRpb24tcG9saWNpZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCB2YWx1ZXM6IGBgRGVmYXVsdGBgIHwgYGBBbGxvY2F0aW9uU3RyYXRlZ3lgYCB8IGBgQ2xvc2VzdFRvTmV4dEluc3RhbmNlSG91cmBgIHwgYGBOZXdlc3RJbnN0YW5jZWBgIHwgYGBPbGRlc3RJbnN0YW5jZWBgIHwgYGBPbGRlc3RMYXVuY2hDb25maWd1cmF0aW9uYGAgfCBgYE9sZGVzdExhdW5jaFRlbXBsYXRlYGAgfCBgYGFybjphd3M6bGFtYmRhOnJlZ2lvbjphY2NvdW50LWlkOmZ1bmN0aW9uOm15LWZ1bmN0aW9uOm15LWFsaWFzYGBcbiAqL1xuVGVybWluYXRpb25Qb2xpY2llcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuIFRoaXMgbmFtZSBtdXN0IGJlIHVuaXF1ZSBwZXIgUmVnaW9uIHBlciBhY2NvdW50LlxuICogIFRoZSBuYW1lIGNhbiBjb250YWluIGFueSBBU0NJSSBjaGFyYWN0ZXIgMzMgdG8gMTI2IGluY2x1ZGluZyBtb3N0IHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMsIGRpZ2l0cywgYW5kIHVwcGVyIGFuZCBsb3dlcmNhc2VkIGxldHRlcnMuXG4gKiAgIFlvdSBjYW5ub3QgdXNlIGEgY29sb24gKDopIGluIHRoZSBuYW1lLlxuICovXG5BdXRvU2NhbGluZ0dyb3VwTmFtZT86IHN0cmluZ1xuVHJhZmZpY1NvdXJjZXM/OiBUcmFmZmljU291cmNlSWRlbnRpZmllcltdXG4vKipcbiAqIFRoZSB1bml0IG9mIG1lYXN1cmVtZW50IGZvciB0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciBkZXNpcmVkIGNhcGFjaXR5LiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzdXBwb3J0cyBgYERlc2lyZWRDYXBhY2l0eVR5cGVgYCBmb3IgYXR0cmlidXRlLWJhc2VkIGluc3RhbmNlIHR5cGUgc2VsZWN0aW9uIG9ubHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NyZWF0ZSBhIG1peGVkIGluc3RhbmNlcyBncm91cCB1c2luZyBhdHRyaWJ1dGUtYmFzZWQgaW5zdGFuY2UgdHlwZSBzZWxlY3Rpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2NyZWF0ZS1taXhlZC1pbnN0YW5jZXMtZ3JvdXAtYXR0cmlidXRlLWJhc2VkLWluc3RhbmNlLXR5cGUtc2VsZWN0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgQnkgZGVmYXVsdCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgc3BlY2lmaWVzIGBgdW5pdHNgYCwgd2hpY2ggdHJhbnNsYXRlcyBpbnRvIG51bWJlciBvZiBpbnN0YW5jZXMuXG4gKiAgVmFsaWQgdmFsdWVzOiBgYHVuaXRzYGAgfCBgYHZjcHVgYCB8IGBgbWVtb3J5LW1pYmBgXG4gKi9cbkRlc2lyZWRDYXBhY2l0eVR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHBsYWNlbWVudCBncm91cCBpbnRvIHdoaWNoIHRvIGxhdW5jaCB5b3VyIGluc3RhbmNlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUGxhY2VtZW50IGdyb3Vwc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL3BsYWNlbWVudC1ncm91cHMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUgZm9yIExpbnV4IEluc3RhbmNlcyouXG4gKiAgIEEgKmNsdXN0ZXIqIHBsYWNlbWVudCBncm91cCBpcyBhIGxvZ2ljYWwgZ3JvdXBpbmcgb2YgaW5zdGFuY2VzIHdpdGhpbiBhIHNpbmdsZSBBdmFpbGFiaWxpdHkgWm9uZS4gWW91IGNhbm5vdCBzcGVjaWZ5IG11bHRpcGxlIEF2YWlsYWJpbGl0eSBab25lcyBhbmQgYSBjbHVzdGVyIHBsYWNlbWVudCBncm91cC5cbiAqL1xuUGxhY2VtZW50R3JvdXA/OiBzdHJpbmdcbi8qKlxuICogQSBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgc3RyaW5nIG9mIG9uZSBvciBtb3JlIGhlYWx0aCBjaGVjayB0eXBlcy5cbiAqICBUaGUgdmFsaWQgdmFsdWVzIGFyZSBgYEVDMmBgLCBgYEVCU2BgLCBgYEVMQmBgLCBhbmQgYGBWUENfTEFUVElDRWBgLiBgYEVDMmBgIGlzIHRoZSBkZWZhdWx0IGhlYWx0aCBjaGVjayBhbmQgY2Fubm90IGJlIGRpc2FibGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtIZWFsdGggY2hlY2tzIGZvciBpbnN0YW5jZXMgaW4gYW4gQXV0byBTY2FsaW5nIGdyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWhlYWx0aC1jaGVja3MuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBPbmx5IHNwZWNpZnkgYGBFQzJgYCBpZiB5b3UgbXVzdCBjbGVhciBhIHZhbHVlIHRoYXQgd2FzIHByZXZpb3VzbHkgc2V0LlxuICovXG5IZWFsdGhDaGVja1R5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgYW4gaW5zdGFuY2UgY2FuIGJlIGluIHNlcnZpY2UuIFRoZSBkZWZhdWx0IGlzIG51bGwuIElmIHNwZWNpZmllZCwgdGhlIHZhbHVlIG11c3QgYmUgZWl0aGVyIDAgb3IgYSBudW1iZXIgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDg2LDQwMCBzZWNvbmRzICgxIGRheSkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1JlcGxhY2UgQXV0byBTY2FsaW5nIGluc3RhbmNlcyBiYXNlZCBvbiBtYXhpbXVtIGluc3RhbmNlIGxpZmV0aW1lXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9hc2ctbWF4LWluc3RhbmNlLWxpZmV0aW1lLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbk1heEluc3RhbmNlTGlmZXRpbWU/OiBudW1iZXJcbn1cbi8qKlxuICogYGBMaWZlY3ljbGVIb29rU3BlY2lmaWNhdGlvbmBgIHNwZWNpZmllcyBhIGxpZmVjeWNsZSBob29rIGZvciB0aGUgYGBMaWZlY3ljbGVIb29rU3BlY2lmaWNhdGlvbkxpc3RgYCBwcm9wZXJ0eSBvZiB0aGUgW0FXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwpIHJlc291cmNlLiBBIGxpZmVjeWNsZSBob29rIHNwZWNpZmllcyBhY3Rpb25zIHRvIHBlcmZvcm0gd2hlbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBsYXVuY2hlcyBvciB0ZXJtaW5hdGVzIGluc3RhbmNlcy4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGlmZWN5Y2xlIGhvb2tzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9saWZlY3ljbGUtaG9va3MuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi4gWW91IGNhbiBmaW5kIGEgc2FtcGxlIHRlbXBsYXRlIHNuaXBwZXQgaW4gdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWFzLWxpZmVjeWNsZWhvb2suaHRtbCNhd3MtcmVzb3VyY2UtYXMtbGlmZWN5Y2xlaG9vay0tZXhhbXBsZXMpIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBdXRvU2NhbGluZzo6TGlmZWN5Y2xlSG9va2BgIHJlc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZUhvb2tTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGxpZmVjeWNsZSBob29rLlxuICovXG5MaWZlY3ljbGVIb29rTmFtZTogc3RyaW5nXG4vKipcbiAqIFRoZSBsaWZlY3ljbGUgdHJhbnNpdGlvbi4gRm9yIEF1dG8gU2NhbGluZyBncm91cHMsIHRoZXJlIGFyZSB0d28gbWFqb3IgbGlmZWN5Y2xlIHRyYW5zaXRpb25zLlxuICogICArICBUbyBjcmVhdGUgYSBsaWZlY3ljbGUgaG9vayBmb3Igc2NhbGUtb3V0IGV2ZW50cywgc3BlY2lmeSBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9MQVVOQ0hJTkdgYC5cbiAqICAgKyAgVG8gY3JlYXRlIGEgbGlmZWN5Y2xlIGhvb2sgZm9yIHNjYWxlLWluIGV2ZW50cywgc3BlY2lmeSBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9URVJNSU5BVElOR2BgLlxuICovXG5MaWZlY3ljbGVUcmFuc2l0aW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIG1heGltdW0gdGltZSwgaW4gc2Vjb25kcywgdGhhdCBjYW4gZWxhcHNlIGJlZm9yZSB0aGUgbGlmZWN5Y2xlIGhvb2sgdGltZXMgb3V0LiBUaGUgcmFuZ2UgaXMgZnJvbSBgYDMwYGAgdG8gYGA3MjAwYGAgc2Vjb25kcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAzNjAwYGAgc2Vjb25kcyAoMSBob3VyKS5cbiAqL1xuSGVhcnRiZWF0VGltZW91dD86IG51bWJlclxuLyoqXG4gKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBhbnkgdGltZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIG5vdGlmaWNhdGlvbiB0YXJnZXQuXG4gKi9cbk5vdGlmaWNhdGlvbk1ldGFkYXRhPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhY3Rpb24gdGhlIEF1dG8gU2NhbGluZyBncm91cCB0YWtlcyB3aGVuIHRoZSBsaWZlY3ljbGUgaG9vayB0aW1lb3V0IGVsYXBzZXMgb3IgaWYgYW4gdW5leHBlY3RlZCBmYWlsdXJlIG9jY3Vycy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGBBQkFORE9OYGAuXG4gKiAgVmFsaWQgdmFsdWVzOiBgYENPTlRJTlVFYGAgfCBgYEFCQU5ET05gYFxuICovXG5EZWZhdWx0UmVzdWx0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgbm90aWZpY2F0aW9uIHRhcmdldCB0aGF0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNlbmRzIG5vdGlmaWNhdGlvbnMgdG8gd2hlbiBhbiBpbnN0YW5jZSBpcyBpbiBhIHdhaXQgc3RhdGUgZm9yIHRoZSBsaWZlY3ljbGUgaG9vay4gWW91IGNhbiBzcGVjaWZ5IGFuIEFtYXpvbiBTTlMgdG9waWMgb3IgYW4gQW1hem9uIFNRUyBxdWV1ZS5cbiAqL1xuTm90aWZpY2F0aW9uVGFyZ2V0QVJOPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBUk4gb2YgdGhlIElBTSByb2xlIHRoYXQgYWxsb3dzIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgdG8gcHVibGlzaCB0byB0aGUgc3BlY2lmaWVkIG5vdGlmaWNhdGlvbiB0YXJnZXQuIEZvciBpbmZvcm1hdGlvbiBhYm91dCBjcmVhdGluZyB0aGlzIHJvbGUsIHNlZSBbUHJlcGFyZSB0byBhZGQgYSBsaWZlY3ljbGUgaG9vayB0byB5b3VyIEF1dG8gU2NhbGluZyBncm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvcHJlcGFyZS1mb3ItbGlmZWN5Y2xlLW5vdGlmaWNhdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBvbmx5IGlmIHRoZSBub3RpZmljYXRpb24gdGFyZ2V0IGlzIGFuIEFtYXpvbiBTTlMgdG9waWMgb3IgYW4gQW1hem9uIFNRUyBxdWV1ZS5cbiAqL1xuUm9sZUFSTj86IHN0cmluZ1xufVxuLyoqXG4gKiBBIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyBhbiBBbWF6b24gU05TIG5vdGlmaWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgYGBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uc2BgIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCkgcmVzb3VyY2UuXG4gKiAgRm9yIGFuIGV4YW1wbGUgdGVtcGxhdGUgc25pcHBldCwgc2VlIFtDb25maWd1cmUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgcmVzb3VyY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9xdWlja3JlZi1lYzItYXV0by1zY2FsaW5nLmh0bWwpLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dldCBBbWF6b24gU05TIG5vdGlmaWNhdGlvbnMgd2hlbiB5b3VyIEF1dG8gU2NhbGluZyBncm91cCBzY2FsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL0FTR2V0dGluZ05vdGlmaWNhdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBbWF6b24gU05TIHRvcGljLlxuICovXG5Ub3BpY0FSTjogKHN0cmluZyB8IHN0cmluZ1tdKVxuLyoqXG4gKiBBIGxpc3Qgb2YgZXZlbnQgdHlwZXMgdGhhdCBzZW5kIGEgbm90aWZpY2F0aW9uLiBFdmVudCB0eXBlcyBjYW4gaW5jbHVkZSBhbnkgb2YgdGhlIGZvbGxvd2luZyB0eXBlcy4gXG4gKiAgICpBbGxvd2VkIHZhbHVlcyo6XG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9MQVVOQ0hgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX0xBVU5DSF9FUlJPUmBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfVEVSTUlOQVRFYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9URVJNSU5BVEVfRVJST1JgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6VEVTVF9OT1RJRklDQVRJT05gYFxuICovXG5Ob3RpZmljYXRpb25UeXBlcz86IHN0cmluZ1tdXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF1bmNoIHRlbXBsYXRlIGFuZCB2ZXJzaW9uIHRvIHVzZSB0byBsYXVuY2ggaW5zdGFuY2VzLiBZb3UgY2FuIGFsdGVybmF0aXZlbHkgYXNzb2NpYXRlIGEgbGF1bmNoIHRlbXBsYXRlIHRvIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgYnkgc3BlY2lmeWluZyBhIGBgTWl4ZWRJbnN0YW5jZXNQb2xpY3lgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY3JlYXRpbmcgbGF1bmNoIHRlbXBsYXRlcywgc2VlIFtDcmVhdGUgYSBsYXVuY2ggdGVtcGxhdGUgZm9yIGFuIEF1dG8gU2NhbGluZyBncm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvY3JlYXRlLWxhdW5jaC10ZW1wbGF0ZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIElmIHlvdSBvbWl0IHRoaXMgcHJvcGVydHksIHlvdSBtdXN0IHNwZWNpZnkgYGBNaXhlZEluc3RhbmNlc1BvbGljeWBgLCBgYExhdW5jaENvbmZpZ3VyYXRpb25OYW1lYGAsIG9yIGBgSW5zdGFuY2VJZGBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZU5hbWVgYCBvciB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFNwZWNpZnlpbmcgYGAkTGF0ZXN0YGAgb3IgYGAkRGVmYXVsdGBgIGZvciB0aGUgdGVtcGxhdGUgdmVyc2lvbiBudW1iZXIgaXMgbm90IHN1cHBvcnRlZC4gSG93ZXZlciwgeW91IGNhbiBzcGVjaWZ5IGBgTGF0ZXN0VmVyc2lvbk51bWJlcmBgIG9yIGBgRGVmYXVsdFZlcnNpb25OdW1iZXJgYCB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgaW50cmluc2ljIGZ1bmN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtGbjo6R2V0QXR0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9pbnRyaW5zaWMtZnVuY3Rpb24tcmVmZXJlbmNlLWdldGF0dC5odG1sKS5cbiAqICAgRm9yIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIGBgRm46OkdldEF0dGBgIGZ1bmN0aW9uLCBzZWUgdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCNhd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC0tZXhhbXBsZXMpIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cGBgIHJlc291cmNlLlxuICovXG5WZXJzaW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIElEIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAgb3IgdGhlIGBgTGF1bmNoVGVtcGxhdGVOYW1lYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVJZD86IHN0cmluZ1xufVxuLyoqXG4gKiBBbiBlbWJlZGRlZCBvYmplY3QgdGhhdCBzcGVjaWZpZXMgYSBtaXhlZCBpbnN0YW5jZXMgcG9saWN5LlxuICogIFRoZSBwb2xpY3kgaW5jbHVkZXMgcHJvcGVydGllcyB0aGF0IG5vdCBvbmx5IGRlZmluZSB0aGUgZGlzdHJpYnV0aW9uIG9mIE9uLURlbWFuZCBJbnN0YW5jZXMgYW5kIFNwb3QgSW5zdGFuY2VzLCB0aGUgbWF4aW11bSBwcmljZSB0byBwYXkgZm9yIFNwb3QgSW5zdGFuY2VzIChvcHRpb25hbCksIGFuZCBob3cgdGhlIEF1dG8gU2NhbGluZyBncm91cCBhbGxvY2F0ZXMgaW5zdGFuY2UgdHlwZXMgdG8gZnVsZmlsbCBPbi1EZW1hbmQgYW5kIFNwb3QgY2FwYWNpdGllcywgYnV0IGFsc28gdGhlIHByb3BlcnRpZXMgdGhhdCBzcGVjaWZ5IHRoZSBpbnN0YW5jZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9u4oCUdGhlIGxhdW5jaCB0ZW1wbGF0ZSBhbmQgaW5zdGFuY2UgdHlwZXMuIFRoZSBwb2xpY3kgY2FuIGFsc28gaW5jbHVkZSBhIHdlaWdodCBmb3IgZWFjaCBpbnN0YW5jZSB0eXBlIGFuZCBkaWZmZXJlbnQgbGF1bmNoIHRlbXBsYXRlcyBmb3IgaW5kaXZpZHVhbCBpbnN0YW5jZSB0eXBlcy5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBdXRvIFNjYWxpbmcgZ3JvdXBzIHdpdGggbXVsdGlwbGUgaW5zdGFuY2UgdHlwZXMgYW5kIHB1cmNoYXNlIG9wdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctbWl4ZWQtaW5zdGFuY2VzLWdyb3Vwcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1peGVkSW5zdGFuY2VzUG9saWN5IHtcbkluc3RhbmNlc0Rpc3RyaWJ1dGlvbj86IEluc3RhbmNlc0Rpc3RyaWJ1dGlvblxuTGF1bmNoVGVtcGxhdGU6IExhdW5jaFRlbXBsYXRlXG59XG4vKipcbiAqIFRoZSBpbnN0YW5jZXMgZGlzdHJpYnV0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlc0Rpc3RyaWJ1dGlvbiB7XG4vKipcbiAqIFRoZSBhbGxvY2F0aW9uIHN0cmF0ZWd5IHRvIGFwcGx5IHRvIHlvdXIgT24tRGVtYW5kIEluc3RhbmNlcyB3aGVuIHRoZXkgYXJlIGxhdW5jaGVkLiBQb3NzaWJsZSBpbnN0YW5jZSB0eXBlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbGF1bmNoIHRlbXBsYXRlIG92ZXJyaWRlcyB0aGF0IHlvdSBzcGVjaWZ5LlxuICogIFRoZSBmb2xsb3dpbmcgbGlzdHMgdGhlIHZhbGlkIHZhbHVlczpcbiAqICAgKyBsb3dlc3QtcHJpY2UgVXNlcyBwcmljZSB0byBkZXRlcm1pbmUgd2hpY2ggaW5zdGFuY2UgdHlwZXMgYXJlIHRoZSBoaWdoZXN0IHByaW9yaXR5LCBsYXVuY2hpbmcgdGhlIGxvd2VzdCBwcmljZWQgaW5zdGFuY2UgdHlwZXMgd2l0aGluIGFuIEF2YWlsYWJpbGl0eSBab25lIGZpcnN0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBBdXRvIFNjYWxpbmcgZ3JvdXBzIHRoYXQgc3BlY2lmeSBJbnN0YW5jZVJlcXVpcmVtZW50cy4gKyBwcmlvcml0aXplZCBZb3Ugc2V0IHRoZSBvcmRlciBvZiBpbnN0YW5jZSB0eXBlcyBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBvdmVycmlkZXMgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBwcmlvcml0eSAoZnJvbSBmaXJzdCB0byBsYXN0IGluIHRoZSBsaXN0KS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgeW91ciBoaWdoZXN0IHByaW9yaXR5IGluc3RhbmNlIHR5cGVzIGZpcnN0LiBJZiBhbGwgeW91ciBPbi1EZW1hbmQgY2FwYWNpdHkgY2Fubm90IGJlIGZ1bGZpbGxlZCB1c2luZyB5b3VyIGhpZ2hlc3QgcHJpb3JpdHkgaW5zdGFuY2UgdHlwZSwgdGhlbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBsYXVuY2hlcyB0aGUgcmVtYWluaW5nIGNhcGFjaXR5IHVzaW5nIHRoZSBzZWNvbmQgcHJpb3JpdHkgaW5zdGFuY2UgdHlwZSwgYW5kIHNvIG9uLiBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBBdXRvIFNjYWxpbmcgZ3JvdXBzIHRoYXQgZG9uJ3Qgc3BlY2lmeSBJbnN0YW5jZVJlcXVpcmVtZW50cyBhbmQgY2Fubm90IGJlIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRvLlxuICovXG5PbkRlbWFuZEFsbG9jYXRpb25TdHJhdGVneT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWluaW11bSBhbW91bnQgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cCdzIGNhcGFjaXR5IHRoYXQgbXVzdCBiZSBmdWxmaWxsZWQgYnkgT24tRGVtYW5kIEluc3RhbmNlcy4gVGhpcyBiYXNlIHBvcnRpb24gaXMgbGF1bmNoZWQgZmlyc3QgYXMgeW91ciBncm91cCBzY2FsZXMuXG4gKiAgVGhpcyBudW1iZXIgaGFzIHRoZSBzYW1lIHVuaXQgb2YgbWVhc3VyZW1lbnQgYXMgdGhlIGdyb3VwJ3MgZGVzaXJlZCBjYXBhY2l0eS4gSWYgeW91IGNoYW5nZSB0aGUgZGVmYXVsdCB1bml0IG9mIG1lYXN1cmVtZW50IChudW1iZXIgb2YgaW5zdGFuY2VzKSBieSBzcGVjaWZ5aW5nIHdlaWdodGVkIGNhcGFjaXR5IHZhbHVlcyBpbiB5b3VyIGxhdW5jaCB0ZW1wbGF0ZSBvdmVycmlkZXMgbGlzdCwgb3IgYnkgY2hhbmdpbmcgdGhlIGRlZmF1bHQgZGVzaXJlZCBjYXBhY2l0eSB0eXBlIHNldHRpbmcgb2YgdGhlIGdyb3VwLCB5b3UgbXVzdCBzcGVjaWZ5IHRoaXMgbnVtYmVyIHVzaW5nIHRoZSBzYW1lIHVuaXQgb2YgbWVhc3VyZW1lbnQuXG4gKiAgRGVmYXVsdDogMFxuICogICBBbiB1cGRhdGUgdG8gdGhpcyBzZXR0aW5nIG1lYW5zIGEgZ3JhZHVhbCByZXBsYWNlbWVudCBvZiBpbnN0YW5jZXMgdG8gYWRqdXN0IHRoZSBjdXJyZW50IE9uLURlbWFuZCBJbnN0YW5jZSBsZXZlbHMuIFdoZW4gcmVwbGFjaW5nIGluc3RhbmNlcywgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgbmV3IGluc3RhbmNlcyBiZWZvcmUgdGVybWluYXRpbmcgdGhlIHByZXZpb3VzIG9uZXMuXG4gKi9cbk9uRGVtYW5kQmFzZUNhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIENvbnRyb2xzIHRoZSBwZXJjZW50YWdlcyBvZiBPbi1EZW1hbmQgSW5zdGFuY2VzIGFuZCBTcG90IEluc3RhbmNlcyBmb3IgeW91ciBhZGRpdGlvbmFsIGNhcGFjaXR5IGJleW9uZCBgYE9uRGVtYW5kQmFzZUNhcGFjaXR5YGAuIEV4cHJlc3NlZCBhcyBhIG51bWJlciAoZm9yIGV4YW1wbGUsIDIwIHNwZWNpZmllcyAyMCUgT24tRGVtYW5kIEluc3RhbmNlcywgODAlIFNwb3QgSW5zdGFuY2VzKS4gSWYgc2V0IHRvIDEwMCwgb25seSBPbi1EZW1hbmQgSW5zdGFuY2VzIGFyZSB1c2VkLlxuICogIERlZmF1bHQ6IDEwMFxuICogICBBbiB1cGRhdGUgdG8gdGhpcyBzZXR0aW5nIG1lYW5zIGEgZ3JhZHVhbCByZXBsYWNlbWVudCBvZiBpbnN0YW5jZXMgdG8gYWRqdXN0IHRoZSBjdXJyZW50IE9uLURlbWFuZCBhbmQgU3BvdCBJbnN0YW5jZSBsZXZlbHMgZm9yIHlvdXIgYWRkaXRpb25hbCBjYXBhY2l0eSBoaWdoZXIgdGhhbiB0aGUgYmFzZSBjYXBhY2l0eS4gV2hlbiByZXBsYWNpbmcgaW5zdGFuY2VzLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBsYXVuY2hlcyBuZXcgaW5zdGFuY2VzIGJlZm9yZSB0ZXJtaW5hdGluZyB0aGUgcHJldmlvdXMgb25lcy5cbiAqL1xuT25EZW1hbmRQZXJjZW50YWdlQWJvdmVCYXNlQ2FwYWNpdHk/OiBudW1iZXJcbi8qKlxuICogVGhlIG51bWJlciBvZiBTcG90IEluc3RhbmNlIHBvb2xzIGFjcm9zcyB3aGljaCB0byBhbGxvY2F0ZSB5b3VyIFNwb3QgSW5zdGFuY2VzLiBUaGUgU3BvdCBwb29scyBhcmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBkaWZmZXJlbnQgaW5zdGFuY2UgdHlwZXMgaW4gdGhlIG92ZXJyaWRlcy4gVmFsaWQgb25seSB3aGVuIHRoZSBgYFNwb3RBbGxvY2F0aW9uU3RyYXRlZ3lgYCBpcyBgYGxvd2VzdC1wcmljZWBgLiBWYWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBvZiAx4oCTMjAuXG4gKiAgRGVmYXVsdDogMlxuICovXG5TcG90SW5zdGFuY2VQb29scz86IG51bWJlclxuLyoqXG4gKiBUaGUgYWxsb2NhdGlvbiBzdHJhdGVneSB0byBhcHBseSB0byB5b3VyIFNwb3QgSW5zdGFuY2VzIHdoZW4gdGhleSBhcmUgbGF1bmNoZWQuIFBvc3NpYmxlIGluc3RhbmNlIHR5cGVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBsYXVuY2ggdGVtcGxhdGUgb3ZlcnJpZGVzIHRoYXQgeW91IHNwZWNpZnkuXG4gKiAgVGhlIGZvbGxvd2luZyBsaXN0cyB0aGUgdmFsaWQgdmFsdWVzOlxuICogICArIGNhcGFjaXR5LW9wdGltaXplZCBSZXF1ZXN0cyBTcG90IEluc3RhbmNlcyB1c2luZyBwb29scyB0aGF0IGFyZSBvcHRpbWFsbHkgY2hvc2VuIGJhc2VkIG9uIHRoZSBhdmFpbGFibGUgU3BvdCBjYXBhY2l0eS4gVGhpcyBzdHJhdGVneSBoYXMgdGhlIGxvd2VzdCByaXNrIG9mIGludGVycnVwdGlvbi4gVG8gZ2l2ZSBjZXJ0YWluIGluc3RhbmNlIHR5cGVzIGEgaGlnaGVyIGNoYW5jZSBvZiBsYXVuY2hpbmcgZmlyc3QsIHVzZSBjYXBhY2l0eS1vcHRpbWl6ZWQtcHJpb3JpdGl6ZWQuICsgY2FwYWNpdHktb3B0aW1pemVkLXByaW9yaXRpemVkIFlvdSBzZXQgdGhlIG9yZGVyIG9mIGluc3RhbmNlIHR5cGVzIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIG92ZXJyaWRlcyBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0IHByaW9yaXR5IChmcm9tIGZpcnN0IHRvIGxhc3QgaW4gdGhlIGxpc3QpLiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBob25vcnMgdGhlIGluc3RhbmNlIHR5cGUgcHJpb3JpdGllcyBvbiBhIGJlc3QgZWZmb3J0IGJhc2lzIGJ1dCBvcHRpbWl6ZXMgZm9yIGNhcGFjaXR5IGZpcnN0LiBOb3RlIHRoYXQgaWYgdGhlIE9uLURlbWFuZCBhbGxvY2F0aW9uIHN0cmF0ZWd5IGlzIHNldCB0byBwcmlvcml0aXplZCwgdGhlIHNhbWUgcHJpb3JpdHkgaXMgYXBwbGllZCB3aGVuIGZ1bGZpbGxpbmcgT24tRGVtYW5kIGNhcGFjaXR5LiBUaGlzIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBBdXRvIFNjYWxpbmcgZ3JvdXBzIHRoYXQgc3BlY2lmeSBJbnN0YW5jZVJlcXVpcmVtZW50cy4gKyBsb3dlc3QtcHJpY2UgUmVxdWVzdHMgU3BvdCBJbnN0YW5jZXMgdXNpbmcgdGhlIGxvd2VzdCBwcmljZWQgcG9vbHMgd2l0aGluIGFuIEF2YWlsYWJpbGl0eSBab25lLCBhY3Jvc3MgdGhlIG51bWJlciBvZiBTcG90IHBvb2xzIHRoYXQgeW91IHNwZWNpZnkgZm9yIHRoZSBTcG90SW5zdGFuY2VQb29scyBwcm9wZXJ0eS4gVG8gZW5zdXJlIHRoYXQgeW91ciBkZXNpcmVkIGNhcGFjaXR5IGlzIG1ldCwgeW91IG1pZ2h0IHJlY2VpdmUgU3BvdCBJbnN0YW5jZXMgZnJvbSBzZXZlcmFsIHBvb2xzLiBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlLCBidXQgaXQgbWlnaHQgbGVhZCB0byBoaWdoIGludGVycnVwdGlvbiByYXRlcyBiZWNhdXNlIHRoaXMgc3RyYXRlZ3kgb25seSBjb25zaWRlcnMgaW5zdGFuY2UgcHJpY2UgYW5kIG5vdCBhdmFpbGFibGUgY2FwYWNpdHkuICsgcHJpY2UtY2FwYWNpdHktb3B0aW1pemVkIChyZWNvbW1lbmRlZCkgVGhlIHByaWNlIGFuZCBjYXBhY2l0eSBvcHRpbWl6ZWQgYWxsb2NhdGlvbiBzdHJhdGVneSBsb29rcyBhdCBib3RoIHByaWNlIGFuZCBjYXBhY2l0eSB0byBzZWxlY3QgdGhlIFNwb3QgSW5zdGFuY2UgcG9vbHMgdGhhdCBhcmUgdGhlIGxlYXN0IGxpa2VseSB0byBiZSBpbnRlcnJ1cHRlZCBhbmQgaGF2ZSB0aGUgbG93ZXN0IHBvc3NpYmxlIHByaWNlLlxuICovXG5TcG90QWxsb2NhdGlvblN0cmF0ZWd5Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBtYXhpbXVtIHByaWNlIHBlciB1bml0IGhvdXIgdGhhdCB5b3UgYXJlIHdpbGxpbmcgdG8gcGF5IGZvciBhIFNwb3QgSW5zdGFuY2UuIElmIHlvdXIgbWF4aW11bSBwcmljZSBpcyBsb3dlciB0aGFuIHRoZSBTcG90IHByaWNlIGZvciB0aGUgaW5zdGFuY2UgdHlwZXMgdGhhdCB5b3Ugc2VsZWN0ZWQsIHlvdXIgU3BvdCBJbnN0YW5jZXMgYXJlIG5vdCBsYXVuY2hlZC4gV2UgZG8gbm90IHJlY29tbWVuZCBzcGVjaWZ5aW5nIGEgbWF4aW11bSBwcmljZSBiZWNhdXNlIGl0IGNhbiBsZWFkIHRvIGluY3JlYXNlZCBpbnRlcnJ1cHRpb25zLiBXaGVuIFNwb3QgSW5zdGFuY2VzIGxhdW5jaCwgeW91IHBheSB0aGUgY3VycmVudCBTcG90IHByaWNlLiBUbyByZW1vdmUgYSBtYXhpbXVtIHByaWNlIHRoYXQgeW91IHByZXZpb3VzbHkgc2V0LCBpbmNsdWRlIHRoZSBwcm9wZXJ0eSBidXQgc3BlY2lmeSBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGZvciB0aGUgdmFsdWUuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGEgbWF4aW11bSBwcmljZSwgeW91ciBpbnN0YW5jZXMgd2lsbCBiZSBpbnRlcnJ1cHRlZCBtb3JlIGZyZXF1ZW50bHkgdGhhbiBpZiB5b3UgZG8gbm90IHNwZWNpZnkgb25lLlxuICogICBWYWxpZCBSYW5nZTogTWluaW11bSB2YWx1ZSBvZiAwLjAwMVxuICovXG5TcG90TWF4UHJpY2U/OiBzdHJpbmdcbn1cbi8qKlxuICogT25lIG9yIG1vcmUgbGF1bmNoIHRlbXBsYXRlcyBhbmQgdGhlIGluc3RhbmNlIHR5cGVzIChvdmVycmlkZXMpIHRoYXQgYXJlIHVzZWQgdG8gbGF1bmNoIEVDMiBpbnN0YW5jZXMgdG8gZnVsZmlsbCBPbi1EZW1hbmQgYW5kIFNwb3QgY2FwYWNpdGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZSB7XG5MYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb246IExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvbjFcbi8qKlxuICogQW55IHByb3BlcnRpZXMgdGhhdCB5b3Ugc3BlY2lmeSBvdmVycmlkZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIGluIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cbk92ZXJyaWRlcz86IExhdW5jaFRlbXBsYXRlT3ZlcnJpZGVzW11cbn1cbi8qKlxuICogVGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb24xIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBgYExhdW5jaFRlbXBsYXRlTmFtZWBgIG9yIHRoZSBgYExhdW5jaFRlbXBsYXRlSURgYCwgYnV0IG5vdCBib3RoLlxuICovXG5MYXVuY2hUZW1wbGF0ZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgU3BlY2lmeWluZyBgYCRMYXRlc3RgYCBvciBgYCREZWZhdWx0YGAgZm9yIHRoZSB0ZW1wbGF0ZSB2ZXJzaW9uIG51bWJlciBpcyBub3Qgc3VwcG9ydGVkLiBIb3dldmVyLCB5b3UgY2FuIHNwZWNpZnkgYGBMYXRlc3RWZXJzaW9uTnVtYmVyYGAgb3IgYGBEZWZhdWx0VmVyc2lvbk51bWJlcmBgIHVzaW5nIHRoZSBgYEZuOjpHZXRBdHRgYCBpbnRyaW5zaWMgZnVuY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0ZuOjpHZXRBdHRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2ludHJpbnNpYy1mdW5jdGlvbi1yZWZlcmVuY2UtZ2V0YXR0Lmh0bWwpLlxuICogICBGb3IgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgZnVuY3Rpb24sIHNlZSB0aGUgW0V4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sI2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLS1leGFtcGxlcykgc2VjdGlvbiBvZiB0aGUgYGBBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwYGAgcmVzb3VyY2UuXG4gKi9cblZlcnNpb246IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBgYExhdW5jaFRlbXBsYXRlSURgYCBvciB0aGUgYGBMYXVuY2hUZW1wbGF0ZU5hbWVgYCwgYnV0IG5vdCBib3RoLlxuICovXG5MYXVuY2hUZW1wbGF0ZUlkPzogc3RyaW5nXG59XG4vKipcbiAqIFVzZSB0aGlzIHN0cnVjdHVyZSB0byBsZXQgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgZG8gdGhlIGZvbGxvd2luZyB3aGVuIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgaGFzIGEgbWl4ZWQgaW5zdGFuY2VzIHBvbGljeTpcbiAqICAgKyAgT3ZlcnJpZGUgdGhlIGluc3RhbmNlIHR5cGUgdGhhdCBpcyBzcGVjaWZpZWQgaW4gdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICAgKyAgVXNlIG11bHRpcGxlIGluc3RhbmNlIHR5cGVzLlxuICogICBcbiAqICBTcGVjaWZ5IHRoZSBpbnN0YW5jZSB0eXBlcyB0aGF0IHlvdSB3YW50LCBvciBkZWZpbmUgeW91ciBpbnN0YW5jZSByZXF1aXJlbWVudHMgaW5zdGVhZCBhbmQgbGV0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHByb3Zpc2lvbiB0aGUgYXZhaWxhYmxlIGluc3RhbmNlIHR5cGVzIHRoYXQgbWVldCB5b3VyIHJlcXVpcmVtZW50cy4gVGhpcyBjYW4gcHJvdmlkZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aXRoIGEgbGFyZ2VyIHNlbGVjdGlvbiBvZiBpbnN0YW5jZSB0eXBlcyB0byBjaG9vc2UgZnJvbSB3aGVuIGZ1bGZpbGxpbmcgU3BvdCBhbmQgT24tRGVtYW5kIGNhcGFjaXRpZXMuIFlvdSBjYW4gdmlldyB3aGljaCBpbnN0YW5jZSB0eXBlcyBhcmUgbWF0Y2hlZCBiZWZvcmUgeW91IGFwcGx5IHRoZSBpbnN0YW5jZSByZXF1aXJlbWVudHMgdG8geW91ciBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKiAgQWZ0ZXIgeW91IGRlZmluZSB5b3VyIGluc3RhbmNlIHJlcXVpcmVtZW50cywgeW91IGRvbid0IGhhdmUgdG8ga2VlcCB1cGRhdGluZyB0aGVzZSBzZXR0aW5ncyB0byBnZXQgbmV3IEVDMiBpbnN0YW5jZSB0eXBlcyBhdXRvbWF0aWNhbGx5LiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB1c2VzIHRoZSBpbnN0YW5jZSByZXF1aXJlbWVudHMgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cCB0byBkZXRlcm1pbmUgd2hldGhlciBhIG5ldyBFQzIgaW5zdGFuY2UgdHlwZSBjYW4gYmUgdXNlZC5cbiAqICAgYGBMYXVuY2hUZW1wbGF0ZU92ZXJyaWRlc2BgIGlzIGEgcHJvcGVydHkgb2YgdGhlIFtBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwIExhdW5jaFRlbXBsYXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLWxhdW5jaHRlbXBsYXRlLmh0bWwpIHByb3BlcnR5IHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVPdmVycmlkZXMge1xuTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uPzogTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uMlxuLyoqXG4gKiBJZiB5b3UgcHJvdmlkZSBhIGxpc3Qgb2YgaW5zdGFuY2UgdHlwZXMgdG8gdXNlLCB5b3UgY2FuIHNwZWNpZnkgdGhlIG51bWJlciBvZiBjYXBhY2l0eSB1bml0cyBwcm92aWRlZCBieSBlYWNoIGluc3RhbmNlIHR5cGUgaW4gdGVybXMgb2YgdmlydHVhbCBDUFVzLCBtZW1vcnksIHN0b3JhZ2UsIHRocm91Z2hwdXQsIG9yIG90aGVyIHJlbGF0aXZlIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljLiBXaGVuIGEgU3BvdCBvciBPbi1EZW1hbmQgSW5zdGFuY2UgaXMgbGF1bmNoZWQsIHRoZSBjYXBhY2l0eSB1bml0cyBjb3VudCB0b3dhcmQgdGhlIGRlc2lyZWQgY2FwYWNpdHkuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGxhdW5jaGVzIGluc3RhbmNlcyB1bnRpbCB0aGUgZGVzaXJlZCBjYXBhY2l0eSBpcyB0b3RhbGx5IGZ1bGZpbGxlZCwgZXZlbiBpZiB0aGlzIHJlc3VsdHMgaW4gYW4gb3ZlcmFnZS4gRm9yIGV4YW1wbGUsIGlmIHRoZXJlIGFyZSB0d28gdW5pdHMgcmVtYWluaW5nIHRvIGZ1bGZpbGwgY2FwYWNpdHksIGFuZCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBjYW4gb25seSBsYXVuY2ggYW4gaW5zdGFuY2Ugd2l0aCBhIGBgV2VpZ2h0ZWRDYXBhY2l0eWBgIG9mIGZpdmUgdW5pdHMsIHRoZSBpbnN0YW5jZSBpcyBsYXVuY2hlZCwgYW5kIHRoZSBkZXNpcmVkIGNhcGFjaXR5IGlzIGV4Y2VlZGVkIGJ5IHRocmVlIHVuaXRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmUgaW5zdGFuY2Ugd2VpZ2h0aW5nIGZvciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy1taXhlZC1pbnN0YW5jZXMtZ3JvdXBzLWluc3RhbmNlLXdlaWdodGluZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLiBWYWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBvZiAxLTk5OS4gXG4gKiAgSWYgeW91IHNwZWNpZnkgYSB2YWx1ZSBmb3IgYGBXZWlnaHRlZENhcGFjaXR5YGAgZm9yIG9uZSBpbnN0YW5jZSB0eXBlLCB5b3UgbXVzdCBzcGVjaWZ5IGEgdmFsdWUgZm9yIGBgV2VpZ2h0ZWRDYXBhY2l0eWBgIGZvciBhbGwgb2YgdGhlbS5cbiAqICAgRXZlcnkgQXV0byBTY2FsaW5nIGdyb3VwIGhhcyB0aHJlZSBzaXplIHBhcmFtZXRlcnMgKGBgRGVzaXJlZENhcGFjaXR5YGAsIGBgTWF4U2l6ZWBgLCBhbmQgYGBNaW5TaXplYGApLiBVc3VhbGx5LCB5b3Ugc2V0IHRoZXNlIHNpemVzIGJhc2VkIG9uIGEgc3BlY2lmaWMgbnVtYmVyIG9mIGluc3RhbmNlcy4gSG93ZXZlciwgaWYgeW91IGNvbmZpZ3VyZSBhIG1peGVkIGluc3RhbmNlcyBwb2xpY3kgdGhhdCBkZWZpbmVzIHdlaWdodHMgZm9yIHRoZSBpbnN0YW5jZSB0eXBlcywgeW91IG11c3Qgc3BlY2lmeSB0aGVzZSBzaXplcyB3aXRoIHRoZSBzYW1lIHVuaXRzIHRoYXQgeW91IHVzZSBmb3Igd2VpZ2h0aW5nIGluc3RhbmNlcy5cbiAqL1xuV2VpZ2h0ZWRDYXBhY2l0eT86IHN0cmluZ1xuSW5zdGFuY2VSZXF1aXJlbWVudHM/OiBJbnN0YW5jZVJlcXVpcmVtZW50c1xuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZSwgc3VjaCBhcyBgYG0zLnhsYXJnZWBgLiBZb3UgbXVzdCBzcGVjaWZ5IGFuIGluc3RhbmNlIHR5cGUgdGhhdCBpcyBzdXBwb3J0ZWQgaW4geW91ciByZXF1ZXN0ZWQgUmVnaW9uIGFuZCBBdmFpbGFiaWxpdHkgWm9uZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0luc3RhbmNlIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaW5zdGFuY2UtdHlwZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUgZm9yIExpbnV4IEluc3RhbmNlcyouXG4gKiAgWW91IGNhbiBzcGVjaWZ5IHVwIHRvIDQwIGluc3RhbmNlIHR5cGVzIHBlciBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKi9cbkluc3RhbmNlVHlwZT86IHN0cmluZ1xufVxuLyoqXG4gKiBQcm92aWRlcyBhIGxhdW5jaCB0ZW1wbGF0ZSBmb3IgdGhlIHNwZWNpZmllZCBpbnN0YW5jZSB0eXBlIG9yIHNldCBvZiBpbnN0YW5jZSByZXF1aXJlbWVudHMuIEZvciBleGFtcGxlLCBzb21lIGluc3RhbmNlIHR5cGVzIG1pZ2h0IHJlcXVpcmUgYSBsYXVuY2ggdGVtcGxhdGUgd2l0aCBhIGRpZmZlcmVudCBBTUkuIElmIG5vdCBwcm92aWRlZCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgdXNlcyB0aGUgbGF1bmNoIHRlbXBsYXRlIHRoYXQncyBzcGVjaWZpZWQgaW4gdGhlIGBgTGF1bmNoVGVtcGxhdGVgYCBkZWZpbml0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTcGVjaWZ5aW5nIGEgZGlmZmVyZW50IGxhdW5jaCB0ZW1wbGF0ZSBmb3IgYW4gaW5zdGFuY2UgdHlwZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy1taXhlZC1pbnN0YW5jZXMtZ3JvdXBzLWxhdW5jaC10ZW1wbGF0ZS1vdmVycmlkZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi4gXG4gKiAgWW91IGNhbiBzcGVjaWZ5IHVwIHRvIDIwIGxhdW5jaCB0ZW1wbGF0ZXMgcGVyIEF1dG8gU2NhbGluZyBncm91cC4gVGhlIGxhdW5jaCB0ZW1wbGF0ZXMgc3BlY2lmaWVkIGluIHRoZSBvdmVycmlkZXMgYW5kIGluIHRoZSBgYExhdW5jaFRlbXBsYXRlYGAgZGVmaW5pdGlvbiBjb3VudCB0b3dhcmRzIHRoaXMgbGltaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uMiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZU5hbWVgYCBvciB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFNwZWNpZnlpbmcgYGAkTGF0ZXN0YGAgb3IgYGAkRGVmYXVsdGBgIGZvciB0aGUgdGVtcGxhdGUgdmVyc2lvbiBudW1iZXIgaXMgbm90IHN1cHBvcnRlZC4gSG93ZXZlciwgeW91IGNhbiBzcGVjaWZ5IGBgTGF0ZXN0VmVyc2lvbk51bWJlcmBgIG9yIGBgRGVmYXVsdFZlcnNpb25OdW1iZXJgYCB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgaW50cmluc2ljIGZ1bmN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtGbjo6R2V0QXR0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9pbnRyaW5zaWMtZnVuY3Rpb24tcmVmZXJlbmNlLWdldGF0dC5odG1sKS5cbiAqICAgRm9yIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIGBgRm46OkdldEF0dGBgIGZ1bmN0aW9uLCBzZWUgdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCNhd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC0tZXhhbXBsZXMpIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cGBgIHJlc291cmNlLlxuICovXG5WZXJzaW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIElEIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAgb3IgdGhlIGBgTGF1bmNoVGVtcGxhdGVOYW1lYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVJZD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgcmVxdWlyZW1lbnRzLiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB1c2VzIHlvdXIgc3BlY2lmaWVkIHJlcXVpcmVtZW50cyB0byBpZGVudGlmeSBpbnN0YW5jZSB0eXBlcy4gVGhlbiwgaXQgdXNlcyB5b3VyIE9uLURlbWFuZCBhbmQgU3BvdCBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgdG8gbGF1bmNoIGluc3RhbmNlcyBmcm9tIHRoZXNlIGluc3RhbmNlIHR5cGVzLlxuICogIFlvdSBjYW4gc3BlY2lmeSB1cCB0byBmb3VyIHNlcGFyYXRlIHNldHMgb2YgaW5zdGFuY2UgcmVxdWlyZW1lbnRzIHBlciBBdXRvIFNjYWxpbmcgZ3JvdXAuIFRoaXMgaXMgdXNlZnVsIGZvciBwcm92aXNpb25pbmcgaW5zdGFuY2VzIGZyb20gZGlmZmVyZW50IEFtYXpvbiBNYWNoaW5lIEltYWdlcyAoQU1JcykgaW4gdGhlIHNhbWUgQXV0byBTY2FsaW5nIGdyb3VwLiBUbyBkbyB0aGlzLCBjcmVhdGUgdGhlIEFNSXMgYW5kIGNyZWF0ZSBhIG5ldyBsYXVuY2ggdGVtcGxhdGUgZm9yIGVhY2ggQU1JLiBUaGVuLCBjcmVhdGUgYSBjb21wYXRpYmxlIHNldCBvZiBpbnN0YW5jZSByZXF1aXJlbWVudHMgZm9yIGVhY2ggbGF1bmNoIHRlbXBsYXRlLiBcbiAqICAgSWYgeW91IHNwZWNpZnkgYGBJbnN0YW5jZVJlcXVpcmVtZW50c2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEluc3RhbmNlVHlwZWBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlUmVxdWlyZW1lbnRzIHtcbi8qKlxuICogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIGxvY2FsIHN0b3JhZ2UgdGhhdCBpcyByZXF1aXJlZC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggaGFyZCBkaXNrIGRyaXZlIChIREQpIHN0b3JhZ2UsIHNwZWNpZnkgYGBoZGRgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggc29saWQgc3RhdGUgZHJpdmUgKFNTRCkgc3RvcmFnZSwgc3BlY2lmeSBgYHNzZGBgLlxuICogICBcbiAqICBEZWZhdWx0OiBBbnkgbG9jYWwgc3RvcmFnZSB0eXBlXG4gKi9cbkxvY2FsU3RvcmFnZVR5cGVzPzogc3RyaW5nW11cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgY3VycmVudCBvciBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIGFyZSBpbmNsdWRlZC5cbiAqICAgKyAgRm9yIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGN1cnJlbnRgYC4gVGhlIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbmNsdWRlcyBFQzIgaW5zdGFuY2UgdHlwZXMgY3VycmVudGx5IHJlY29tbWVuZGVkIGZvciB1c2UuIFRoaXMgdHlwaWNhbGx5IGluY2x1ZGVzIHRoZSBsYXRlc3QgdHdvIHRvIHRocmVlIGdlbmVyYXRpb25zIGluIGVhY2ggaW5zdGFuY2UgZmFtaWx5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtJbnN0YW5jZSB0eXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2luc3RhbmNlLXR5cGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlIGZvciBMaW51eCBJbnN0YW5jZXMqLlxuICogICArICBGb3IgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYHByZXZpb3VzYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBjdXJyZW50IG9yIHByZXZpb3VzIGdlbmVyYXRpb25cbiAqL1xuSW5zdGFuY2VHZW5lcmF0aW9ucz86IHN0cmluZ1tdXG5OZXR3b3JrSW50ZXJmYWNlQ291bnQ/OiBOZXR3b3JrSW50ZXJmYWNlQ291bnRSZXF1ZXN0XG4vKipcbiAqIExpc3RzIHRoZSBhY2NlbGVyYXRvciB0eXBlcyB0aGF0IG11c3QgYmUgb24gYW4gaW5zdGFuY2UgdHlwZS5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggR1BVIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGdwdWBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBGUEdBIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGZwZ2FgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggaW5mZXJlbmNlIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGluZmVyZW5jZWBgLlxuICogICBcbiAqICBEZWZhdWx0OiBBbnkgYWNjZWxlcmF0b3IgdHlwZVxuICovXG5BY2NlbGVyYXRvclR5cGVzPzogc3RyaW5nW11cbk1lbW9yeUdpQlBlclZDcHU/OiBNZW1vcnlHaUJQZXJWQ3B1UmVxdWVzdFxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBpbnN0YW5jZSB0eXBlcyBtdXN0IGhhdmUgYWNjZWxlcmF0b3JzIGJ5IHNwZWNpZmljIG1hbnVmYWN0dXJlcnMuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBkZXZpY2VzLCBzcGVjaWZ5IGBgbnZpZGlhYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBkZXZpY2VzLCBzcGVjaWZ5IGBgYW1kYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFXUyBkZXZpY2VzLCBzcGVjaWZ5IGBgYW1hem9uLXdlYi1zZXJ2aWNlc2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBYaWxpbnggZGV2aWNlcywgc3BlY2lmeSBgYHhpbGlueGBgLlxuICogICBcbiAqICBEZWZhdWx0OiBBbnkgbWFudWZhY3R1cmVyXG4gKi9cbkFjY2VsZXJhdG9yTWFudWZhY3R1cmVycz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBleGNsdWRlLiBZb3UgY2FuIHVzZSBzdHJpbmdzIHdpdGggb25lIG9yIG1vcmUgd2lsZCBjYXJkcywgcmVwcmVzZW50ZWQgYnkgYW4gYXN0ZXJpc2sgKGBgKmBgKSwgdG8gZXhjbHVkZSBhbiBpbnN0YW5jZSBmYW1pbHksIHR5cGUsIHNpemUsIG9yIGdlbmVyYXRpb24uIFRoZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzOiBgYG01Ljh4bGFyZ2VgYCwgYGBjNSouKmBgLCBgYG01YS4qYGAsIGBgcipgYCwgYGAqMypgYC4gXG4gKiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGBgYzUqYGAsIHlvdSBhcmUgZXhjbHVkaW5nIHRoZSBlbnRpcmUgQzUgaW5zdGFuY2UgZmFtaWx5LCB3aGljaCBpbmNsdWRlcyBhbGwgQzVhIGFuZCBDNW4gaW5zdGFuY2UgdHlwZXMuIElmIHlvdSBzcGVjaWZ5IGBgbTVhLipgYCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2lsbCBleGNsdWRlIGFsbCB0aGUgTTVhIGluc3RhbmNlIHR5cGVzLCBidXQgbm90IHRoZSBNNW4gaW5zdGFuY2UgdHlwZXMuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgRXhjbHVkZWRJbnN0YW5jZVR5cGVzYGAsIHlvdSBjYW4ndCBzcGVjaWZ5IGBgQWxsb3dlZEluc3RhbmNlVHlwZXNgYC5cbiAqICAgRGVmYXVsdDogTm8gZXhjbHVkZWQgaW5zdGFuY2UgdHlwZXNcbiAqL1xuRXhjbHVkZWRJbnN0YW5jZVR5cGVzPzogc3RyaW5nW11cblZDcHVDb3VudDogVkNwdUNvdW50UmVxdWVzdFxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gYXBwbHkgeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcyBhZ2FpbnN0LiBBbGwgb3RoZXIgaW5zdGFuY2UgdHlwZXMgYXJlIGlnbm9yZWQsIGV2ZW4gaWYgdGhleSBtYXRjaCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLlxuICogIFlvdSBjYW4gdXNlIHN0cmluZ3Mgd2l0aCBvbmUgb3IgbW9yZSB3aWxkIGNhcmRzLCByZXByZXNlbnRlZCBieSBhbiBhc3RlcmlzayAoYGAqYGApLCB0byBhbGxvdyBhbiBpbnN0YW5jZSB0eXBlLCBzaXplLCBvciBnZW5lcmF0aW9uLiBUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlczogYGBtNS44eGxhcmdlYGAsIGBgYzUqLipgYCwgYGBtNWEuKmBgLCBgYHIqYGAsIGBgKjMqYGAuXG4gKiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGBgYzUqYGAsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdpbGwgYWxsb3cgdGhlIGVudGlyZSBDNSBpbnN0YW5jZSBmYW1pbHksIHdoaWNoIGluY2x1ZGVzIGFsbCBDNWEgYW5kIEM1biBpbnN0YW5jZSB0eXBlcy4gSWYgeW91IHNwZWNpZnkgYGBtNWEuKmBgLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aWxsIGFsbG93IGFsbCB0aGUgTTVhIGluc3RhbmNlIHR5cGVzLCBidXQgbm90IHRoZSBNNW4gaW5zdGFuY2UgdHlwZXMuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgQWxsb3dlZEluc3RhbmNlVHlwZXNgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBFeGNsdWRlZEluc3RhbmNlVHlwZXNgYC5cbiAqICAgRGVmYXVsdDogQWxsIGluc3RhbmNlIHR5cGVzXG4gKi9cbkFsbG93ZWRJbnN0YW5jZVR5cGVzPzogc3RyaW5nW11cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgd2l0aCBpbnN0YW5jZSBzdG9yZSB2b2x1bWVzIGFyZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gRUMyIGluc3RhbmNlIHN0b3JlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvSW5zdGFuY2VTdG9yYWdlLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlIGZvciBMaW51eCBJbnN0YW5jZXMqLlxuICogIERlZmF1bHQ6IGBgaW5jbHVkZWRgYFxuICovXG5Mb2NhbFN0b3JhZ2U/OiBzdHJpbmdcbi8qKlxuICogTGlzdHMgd2hpY2ggc3BlY2lmaWMgQ1BVIG1hbnVmYWN0dXJlcnMgdG8gaW5jbHVkZS5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggSW50ZWwgQ1BVcywgc3BlY2lmeSBgYGludGVsYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBDUFVzLCBzcGVjaWZ5IGBgYW1kYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFXUyBDUFVzLCBzcGVjaWZ5IGBgYW1hem9uLXdlYi1zZXJ2aWNlc2BgLlxuICogICBcbiAqICAgRG9uJ3QgY29uZnVzZSB0aGUgQ1BVIGhhcmR3YXJlIG1hbnVmYWN0dXJlciB3aXRoIHRoZSBDUFUgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlLiBJbnN0YW5jZXMgd2lsbCBiZSBsYXVuY2hlZCB3aXRoIGEgY29tcGF0aWJsZSBDUFUgYXJjaGl0ZWN0dXJlIGJhc2VkIG9uIHRoZSBBbWF6b24gTWFjaGluZSBJbWFnZSAoQU1JKSB0aGF0IHlvdSBzcGVjaWZ5IGluIHlvdXIgbGF1bmNoIHRlbXBsYXRlLiBcbiAqICAgRGVmYXVsdDogQW55IG1hbnVmYWN0dXJlclxuICovXG5DcHVNYW51ZmFjdHVyZXJzPzogc3RyaW5nW11cbkFjY2VsZXJhdG9yQ291bnQ/OiBBY2NlbGVyYXRvckNvdW50UmVxdWVzdFxuTmV0d29ya0JhbmR3aWR0aEdicHM/OiBOZXR3b3JrQmFuZHdpZHRoR2Jwc1JlcXVlc3Rcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgYmFyZSBtZXRhbCBpbnN0YW5jZSB0eXBlcyBhcmUgaW5jbHVkZWQsIGV4Y2x1ZGVkLCBvciByZXF1aXJlZC5cbiAqICBEZWZhdWx0OiBgYGV4Y2x1ZGVkYGBcbiAqL1xuQmFyZU1ldGFsPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGluc3RhbmNlIHR5cGVzIG11c3QgcHJvdmlkZSBPbi1EZW1hbmQgSW5zdGFuY2UgaGliZXJuYXRpb24gc3VwcG9ydC5cbiAqICBEZWZhdWx0OiBgYGZhbHNlYGBcbiAqL1xuUmVxdWlyZUhpYmVybmF0ZVN1cHBvcnQ/OiBib29sZWFuXG4vKipcbiAqIFtQcmljZSBwcm90ZWN0aW9uXSBUaGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBhcyBhIHBlcmNlbnRhZ2Ugb2YgYW4gaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UuIFRoZSBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZSBpcyB0aGUgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIElmIG5vIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgbWF0Y2hlcyB5b3VyIGF0dHJpYnV0ZXMsIHRoZW4gdGhlIGlkZW50aWZpZWQgcHJpY2UgaXMgZnJvbSBlaXRoZXIgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIG9yLCBmYWlsaW5nIHRoYXQsIHRoZSBsb3dlc3QgcHJpY2VkIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgc2VsZWN0cyBpbnN0YW5jZSB0eXBlcyB3aXRoIHlvdXIgYXR0cmlidXRlcywgd2Ugd2lsbCBleGNsdWRlIGluc3RhbmNlIHR5cGVzIHdob3NlIHByaWNlIGV4Y2VlZHMgeW91ciBzcGVjaWZpZWQgdGhyZXNob2xkLlxuICogIFRoZSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBpbnRlZ2VyLCB3aGljaCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBpbnRlcnByZXRzIGFzIGEgcGVyY2VudGFnZS5cbiAqICBJZiB5b3Ugc2V0IGBgRGVzaXJlZENhcGFjaXR5VHlwZWBgIHRvIGBgdmNwdWBgIG9yIGBgbWVtb3J5LW1pYmBgLCB0aGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgaXMgYmFzZWQgb24gdGhlIHBlci12Q1BVIG9yIHBlci1tZW1vcnkgcHJpY2UgaW5zdGVhZCBvZiB0aGUgcGVyIGluc3RhbmNlIHByaWNlLiBcbiAqICAgT25seSBvbmUgb2YgYGBTcG90TWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlYGAgb3IgYGBNYXhTcG90UHJpY2VBc1BlcmNlbnRhZ2VPZk9wdGltYWxPbkRlbWFuZFByaWNlYGAgY2FuIGJlIHNwZWNpZmllZC4gSWYgeW91IGRvbid0IHNwZWNpZnkgZWl0aGVyLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwbHkgb3B0aW1hbCBwcmljZSBwcm90ZWN0aW9uIHRvIGNvbnNpc3RlbnRseSBzZWxlY3QgZnJvbSBhIHdpZGUgcmFuZ2Ugb2YgaW5zdGFuY2UgdHlwZXMuIFRvIGluZGljYXRlIG5vIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgbWVhbmluZyB5b3Ugd2FudCB0byBjb25zaWRlciBhbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMsIGluY2x1ZGUgb25lIG9mIHRoZXNlIHBhcmFtZXRlcnMgYW5kIHNwZWNpZnkgYSBoaWdoIHZhbHVlLCBzdWNoIGFzIGBgOTk5OTk5YGAuXG4gKi9cbk1heFNwb3RQcmljZUFzUGVyY2VudGFnZU9mT3B0aW1hbE9uRGVtYW5kUHJpY2U/OiBudW1iZXJcbkJhc2VsaW5lRWJzQmFuZHdpZHRoTWJwcz86IEJhc2VsaW5lRWJzQmFuZHdpZHRoTWJwc1JlcXVlc3Rcbi8qKlxuICogW1ByaWNlIHByb3RlY3Rpb25dIFRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIGFzIGEgcGVyY2VudGFnZSBoaWdoZXIgdGhhbiBhbiBpZGVudGlmaWVkIFNwb3QgcHJpY2UuIFRoZSBpZGVudGlmaWVkIFNwb3QgcHJpY2UgaXMgdGhlIHByaWNlIG9mIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgd2l0aCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBJZiBubyBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIG1hdGNoZXMgeW91ciBhdHRyaWJ1dGVzLCB0aGVuIHRoZSBpZGVudGlmaWVkIHByaWNlIGlzIGZyb20gZWl0aGVyIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBvciwgZmFpbGluZyB0aGF0LCB0aGUgbG93ZXN0IHByaWNlZCBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLiBXaGVuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNlbGVjdHMgaW5zdGFuY2UgdHlwZXMgd2l0aCB5b3VyIGF0dHJpYnV0ZXMsIHdlIHdpbGwgZXhjbHVkZSBpbnN0YW5jZSB0eXBlcyB3aG9zZSBwcmljZSBleGNlZWRzIHlvdXIgc3BlY2lmaWVkIHRocmVzaG9sZC5cbiAqICBUaGUgcGFyYW1ldGVyIGFjY2VwdHMgYW4gaW50ZWdlciwgd2hpY2ggQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuIFxuICogIElmIHlvdSBzZXQgYGBEZXNpcmVkQ2FwYWNpdHlUeXBlYGAgdG8gYGB2Y3B1YGAgb3IgYGBtZW1vcnktbWliYGAsIHRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBpcyBiYXNlZCBvbiB0aGUgcGVyLXZDUFUgb3IgcGVyLW1lbW9yeSBwcmljZSBpbnN0ZWFkIG9mIHRoZSBwZXIgaW5zdGFuY2UgcHJpY2UuIFxuICogICBPbmx5IG9uZSBvZiBgYFNwb3RNYXhQcmljZVBlcmNlbnRhZ2VPdmVyTG93ZXN0UHJpY2VgYCBvciBgYE1heFNwb3RQcmljZUFzUGVyY2VudGFnZU9mT3B0aW1hbE9uRGVtYW5kUHJpY2VgYCBjYW4gYmUgc3BlY2lmaWVkLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBlaXRoZXIsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBvcHRpbWFsIHByaWNlIHByb3RlY3Rpb24gdG8gY29uc2lzdGVudGx5IHNlbGVjdCBmcm9tIGEgd2lkZSByYW5nZSBvZiBpbnN0YW5jZSB0eXBlcy4gVG8gaW5kaWNhdGUgbm8gcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBtZWFuaW5nIHlvdSB3YW50IHRvIGNvbnNpZGVyIGFsbCBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcywgaW5jbHVkZSBvbmUgb2YgdGhlc2UgcGFyYW1ldGVycyBhbmQgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqL1xuU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuLyoqXG4gKiBMaXN0cyB0aGUgYWNjZWxlcmF0b3JzIHRoYXQgbXVzdCBiZSBvbiBhbiBpbnN0YW5jZSB0eXBlLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgQTEwMCBHUFVzLCBzcGVjaWZ5IGBgYTEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgVjEwMCBHUFVzLCBzcGVjaWZ5IGBgdjEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgSzgwIEdQVXMsIHNwZWNpZnkgYGBrODBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIFQ0IEdQVXMsIHNwZWNpZnkgYGB0NGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgTTYwIEdQVXMsIHNwZWNpZnkgYGBtNjBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQU1EIFJhZGVvbiBQcm8gVjUyMCBHUFVzLCBzcGVjaWZ5IGBgcmFkZW9uLXByby12NTIwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIFhpbGlueCBWVTlQIEZQR0FzLCBzcGVjaWZ5IGBgdnU5cGBgLlxuICogICBcbiAqICBEZWZhdWx0OiBBbnkgYWNjZWxlcmF0b3JcbiAqL1xuQWNjZWxlcmF0b3JOYW1lcz86IHN0cmluZ1tdXG5BY2NlbGVyYXRvclRvdGFsTWVtb3J5TWlCPzogQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQlJlcXVlc3Rcbi8qKlxuICogW1ByaWNlIHByb3RlY3Rpb25dIFRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgT24tRGVtYW5kIEluc3RhbmNlcywgYXMgYSBwZXJjZW50YWdlIGhpZ2hlciB0aGFuIGFuIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlLiBUaGUgaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UgaXMgdGhlIHByaWNlIG9mIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgd2l0aCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBJZiBubyBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIG1hdGNoZXMgeW91ciBhdHRyaWJ1dGVzLCB0aGVuIHRoZSBpZGVudGlmaWVkIHByaWNlIGlzIGZyb20gZWl0aGVyIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBvciwgZmFpbGluZyB0aGF0LCB0aGUgbG93ZXN0IHByaWNlZCBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLiBXaGVuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNlbGVjdHMgaW5zdGFuY2UgdHlwZXMgd2l0aCB5b3VyIGF0dHJpYnV0ZXMsIHdlIHdpbGwgZXhjbHVkZSBpbnN0YW5jZSB0eXBlcyB3aG9zZSBwcmljZSBleGNlZWRzIHlvdXIgc3BlY2lmaWVkIHRocmVzaG9sZC4gXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGludGVycHJldHMgYXMgYSBwZXJjZW50YWdlLlxuICogIFRvIHR1cm4gb2ZmIHByaWNlIHByb3RlY3Rpb24sIHNwZWNpZnkgYSBoaWdoIHZhbHVlLCBzdWNoIGFzIGBgOTk5OTk5YGAuIFxuICogIElmIHlvdSBzZXQgYGBEZXNpcmVkQ2FwYWNpdHlUeXBlYGAgdG8gYGB2Y3B1YGAgb3IgYGBtZW1vcnktbWliYGAsIHRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBpcyBhcHBsaWVkIGJhc2VkIG9uIHRoZSBwZXItdkNQVSBvciBwZXItbWVtb3J5IHByaWNlIGluc3RlYWQgb2YgdGhlIHBlciBpbnN0YW5jZSBwcmljZS4gXG4gKiAgRGVmYXVsdDogYGAyMGBgXG4gKi9cbk9uRGVtYW5kTWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGJ1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZSB0eXBlcyBhcmUgaW5jbHVkZWQsIGV4Y2x1ZGVkLCBvciByZXF1aXJlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQnVyc3RhYmxlIHBlcmZvcm1hbmNlIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2J1cnN0YWJsZS1wZXJmb3JtYW5jZS1pbnN0YW5jZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUgZm9yIExpbnV4IEluc3RhbmNlcyouXG4gKiAgRGVmYXVsdDogYGBleGNsdWRlZGBgXG4gKi9cbkJ1cnN0YWJsZVBlcmZvcm1hbmNlPzogc3RyaW5nXG5NZW1vcnlNaUI6IE1lbW9yeU1pQlJlcXVlc3RcblRvdGFsTG9jYWxTdG9yYWdlR0I/OiBUb3RhbExvY2FsU3RvcmFnZUdCUmVxdWVzdFxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzIGZvciBhbiBpbnN0YW5jZSB0eXBlLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrSW50ZXJmYWNlQ291bnRSZXF1ZXN0IHtcbi8qKlxuICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIG5ldHdvcmsgaW50ZXJmYWNlcy5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuZXR3b3JrIGludGVyZmFjZXMuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IHBlciB2Q1BVIGZvciBhbiBpbnN0YW5jZSB0eXBlLCBpbiBHaUIuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeUdpQlBlclZDcHVSZXF1ZXN0IHtcbi8qKlxuICogVGhlIG1lbW9yeSBtaW5pbXVtIGluIEdpQi5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtZW1vcnkgbWF4aW11bSBpbiBHaUIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgdkNQVXMgZm9yIGFuIGluc3RhbmNlIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVkNwdUNvdW50UmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2Q1BVcy5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2Q1BVcy5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiBhY2NlbGVyYXRvcnMgKEdQVXMsIEZQR0FzLCBvciBBV1MgSW5mZXJlbnRpYSBjaGlwcykgZm9yIGFuIGluc3RhbmNlIHR5cGUuXG4gKiAgVG8gZXhjbHVkZSBhY2NlbGVyYXRvci1lbmFibGVkIGluc3RhbmNlIHR5cGVzLCBzZXQgYGBNYXhgYCB0byBgYDBgYC5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JDb3VudFJlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWluaW11bSB2YWx1ZS5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIHZhbHVlLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG5ldHdvcmsgYmFuZHdpZHRoLCBpbiBnaWdhYml0cyBwZXIgc2Vjb25kIChHYnBzKS5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya0JhbmR3aWR0aEdicHNSZXF1ZXN0IHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIG5ldHdvcmsgYmFuZHdpZHRoLCBpbiBnaWdhYml0cyBwZXIgc2Vjb25kIChHYnBzKS5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gZ2lnYWJpdHMgcGVyIHNlY29uZCAoR2JwcykuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBiYXNlbGluZSBiYW5kd2lkdGggcGVyZm9ybWFuY2UgZm9yIGFuIGluc3RhbmNlIHR5cGUsIGluIE1icHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQlPigJNvcHRpbWl6ZWQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWJzLW9wdGltaXplZC5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSBmb3IgTGludXggSW5zdGFuY2VzKi5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzUmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIHZhbHVlIGluIE1icHMuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSB2YWx1ZSBpbiBNYnBzLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gdG90YWwgbWVtb3J5IHNpemUgZm9yIHRoZSBhY2NlbGVyYXRvcnMgb24gYW4gaW5zdGFuY2UgdHlwZSwgaW4gTWlCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2NlbGVyYXRvclRvdGFsTWVtb3J5TWlCUmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtZW1vcnkgbWluaW11bSBpbiBNaUIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWVtb3J5IG1heGltdW0gaW4gTWlCLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gaW5zdGFuY2UgbWVtb3J5IHNpemUgZm9yIGFuIGluc3RhbmNlIHR5cGUsIGluIE1pQi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlNaUJSZXF1ZXN0IHtcbi8qKlxuICogVGhlIG1lbW9yeSBtaW5pbXVtIGluIE1pQi5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtZW1vcnkgbWF4aW11bSBpbiBNaUIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSB0b3RhbCBsb2NhbCBzdG9yYWdlIHNpemUgZm9yIGFuIGluc3RhbmNlIHR5cGUsIGluIEdCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb3RhbExvY2FsU3RvcmFnZUdCUmVxdWVzdCB7XG4vKipcbiAqIFRoZSBzdG9yYWdlIG1pbmltdW0gaW4gR0IuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgc3RvcmFnZSBtYXhpbXVtIGluIEdCLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogQSBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgYSB0YWcgZm9yIHRoZSBgYFRhZ3NgYCBwcm9wZXJ0eSBvZiBbQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCkgcmVzb3VyY2UuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGFnIEF1dG8gU2NhbGluZyBncm91cHMgYW5kIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvYXV0b3NjYWxpbmctdGFnZ2luZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLiBZb3UgY2FuIGZpbmQgYSBzYW1wbGUgdGVtcGxhdGUgc25pcHBldCBpbiB0aGUgW0V4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sI2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLS1leGFtcGxlcykgc2VjdGlvbiBvZiB0aGUgYGBBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwYGAgcmVzb3VyY2UuXG4gKiAgQ2xvdWRGb3JtYXRpb24gYWRkcyB0aGUgZm9sbG93aW5nIHRhZ3MgdG8gYWxsIEF1dG8gU2NhbGluZyBncm91cHMgYW5kIGFzc29jaWF0ZWQgaW5zdGFuY2VzOiBcbiAqICAgKyAgYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrLW5hbWVcbiAqICAgKyAgYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrLWlkXG4gKiAgICsgIGF3czpjbG91ZGZvcm1hdGlvbjpsb2dpY2FsLWlkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnUHJvcGVydHkge1xuLyoqXG4gKiBUaGUgdGFnIHZhbHVlLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSB0YWcga2V5LlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBTZXQgdG8gYGB0cnVlYGAgaWYgeW91IHdhbnQgQ2xvdWRGb3JtYXRpb24gdG8gY29weSB0aGUgdGFnIHRvIEVDMiBpbnN0YW5jZXMgdGhhdCBhcmUgbGF1bmNoZWQgYXMgcGFydCBvZiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLiBTZXQgdG8gYGBmYWxzZWBgIGlmIHlvdSB3YW50IHRoZSB0YWcgYXR0YWNoZWQgb25seSB0byB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGFuZCBub3QgY29waWVkIHRvIGFueSBpbnN0YW5jZXMgbGF1bmNoZWQgYXMgcGFydCBvZiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLlxuICovXG5Qcm9wYWdhdGVBdExhdW5jaDogYm9vbGVhblxufVxuLyoqXG4gKiBBIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyBhbiBBbWF6b24gU05TIG5vdGlmaWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgYGBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uc2BgIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCkgcmVzb3VyY2UuXG4gKiAgRm9yIGFuIGV4YW1wbGUgdGVtcGxhdGUgc25pcHBldCwgc2VlIFtDb25maWd1cmUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgcmVzb3VyY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9xdWlja3JlZi1lYzItYXV0by1zY2FsaW5nLmh0bWwpLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dldCBBbWF6b24gU05TIG5vdGlmaWNhdGlvbnMgd2hlbiB5b3VyIEF1dG8gU2NhbGluZyBncm91cCBzY2FsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL0FTR2V0dGluZ05vdGlmaWNhdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uMSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQW1hem9uIFNOUyB0b3BpYy5cbiAqL1xuVG9waWNBUk46IChzdHJpbmcgfCBzdHJpbmdbXSlcbi8qKlxuICogQSBsaXN0IG9mIGV2ZW50IHR5cGVzIHRoYXQgc2VuZCBhIG5vdGlmaWNhdGlvbi4gRXZlbnQgdHlwZXMgY2FuIGluY2x1ZGUgYW55IG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMuIFxuICogICAqQWxsb3dlZCB2YWx1ZXMqOlxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfTEFVTkNIYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9MQVVOQ0hfRVJST1JgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX1RFUk1JTkFURWBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfVEVSTUlOQVRFX0VSUk9SYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOlRFU1RfTk9USUZJQ0FUSU9OYGBcbiAqL1xuTm90aWZpY2F0aW9uVHlwZXM/OiBzdHJpbmdbXVxufVxuLyoqXG4gKiBgYE1ldHJpY3NDb2xsZWN0aW9uYGAgaXMgYSBwcm9wZXJ0eSBvZiB0aGUgW0FXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwpIHJlc291cmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBncm91cCBtZXRyaWNzIHRoYXQgYW4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgZ3JvdXAgc2VuZHMgdG8gQW1hem9uIENsb3VkV2F0Y2guIFRoZXNlIG1ldHJpY3MgZGVzY3JpYmUgdGhlIGdyb3VwIHJhdGhlciB0aGFuIGFueSBvZiBpdHMgaW5zdGFuY2VzLiBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtNb25pdG9yIENsb3VkV2F0Y2ggbWV0cmljcyBmb3IgeW91ciBBdXRvIFNjYWxpbmcgZ3JvdXBzIGFuZCBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2FzLWluc3RhbmNlLW1vbml0b3JpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi4gWW91IGNhbiBmaW5kIGEgc2FtcGxlIHRlbXBsYXRlIHNuaXBwZXQgaW4gdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCNhd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC0tZXhhbXBsZXMpIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cGBgIHJlc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY3NDb2xsZWN0aW9uIHtcbi8qKlxuICogSWRlbnRpZmllcyB0aGUgbWV0cmljcyB0byBlbmFibGUuXG4gKiAgWW91IGNhbiBzcGVjaWZ5IG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgbWV0cmljczpcbiAqICAgKyAgIGBgR3JvdXBNaW5TaXplYGAgXG4gKiAgICsgICBgYEdyb3VwTWF4U2l6ZWBgIFxuICogICArICAgYGBHcm91cERlc2lyZWRDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cEluU2VydmljZUluc3RhbmNlc2BgIFxuICogICArICAgYGBHcm91cFBlbmRpbmdJbnN0YW5jZXNgYCBcbiAqICAgKyAgIGBgR3JvdXBTdGFuZGJ5SW5zdGFuY2VzYGAgXG4gKiAgICsgICBgYEdyb3VwVGVybWluYXRpbmdJbnN0YW5jZXNgYCBcbiAqICAgKyAgIGBgR3JvdXBUb3RhbEluc3RhbmNlc2BgIFxuICogICArICAgYGBHcm91cEluU2VydmljZUNhcGFjaXR5YGAgXG4gKiAgICsgICBgYEdyb3VwUGVuZGluZ0NhcGFjaXR5YGAgXG4gKiAgICsgICBgYEdyb3VwU3RhbmRieUNhcGFjaXR5YGAgXG4gKiAgICsgICBgYEdyb3VwVGVybWluYXRpbmdDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cFRvdGFsQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgV2FybVBvb2xEZXNpcmVkQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgV2FybVBvb2xXYXJtZWRDYXBhY2l0eWBgIFxuICogICArICAgYGBXYXJtUG9vbFBlbmRpbmdDYXBhY2l0eWBgIFxuICogICArICAgYGBXYXJtUG9vbFRlcm1pbmF0aW5nQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgV2FybVBvb2xUb3RhbENhcGFjaXR5YGAgXG4gKiAgICsgICBgYEdyb3VwQW5kV2FybVBvb2xEZXNpcmVkQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgR3JvdXBBbmRXYXJtUG9vbFRvdGFsQ2FwYWNpdHlgYCBcbiAqICAgXG4gKiAgSWYgeW91IHNwZWNpZnkgYGBHcmFudWxhcml0eWBgIGFuZCBkb24ndCBzcGVjaWZ5IGFueSBtZXRyaWNzLCBhbGwgbWV0cmljcyBhcmUgZW5hYmxlZC5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gQ2xvdWRXYXRjaCBtZXRyaWNzIGZvciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy1tZXRyaWNzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbk1ldHJpY3M/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgZnJlcXVlbmN5IGF0IHdoaWNoIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNlbmRzIGFnZ3JlZ2F0ZWQgZGF0YSB0byBDbG91ZFdhdGNoLiBUaGUgb25seSB2YWxpZCB2YWx1ZSBpcyBgYDFNaW51dGVgYC5cbiAqL1xuR3JhbnVsYXJpdHk6IHN0cmluZ1xufVxuLyoqXG4gKiBBbiBpbnN0YW5jZSBtYWludGVuYW5jZSBwb2xpY3kuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NldCBpbnN0YW5jZSBtYWludGVuYW5jZSBwb2xpY3ldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctaW5zdGFuY2UtbWFpbnRlbmFuY2UtcG9saWN5Lmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VNYWludGVuYW5jZVBvbGljeSB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgdXBwZXIgdGhyZXNob2xkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgZGVzaXJlZCBjYXBhY2l0eSBvZiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLiBJdCByZXByZXNlbnRzIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2Ugb2YgdGhlIGdyb3VwIHRoYXQgY2FuIGJlIGluIHNlcnZpY2UgYW5kIGhlYWx0aHksIG9yIHBlbmRpbmcsIHRvIHN1cHBvcnQgeW91ciB3b3JrbG9hZCB3aGVuIHJlcGxhY2luZyBpbnN0YW5jZXMuIFZhbHVlIHJhbmdlIGlzIDEwMCB0byAyMDAuIFRvIGNsZWFyIGEgcHJldmlvdXNseSBzZXQgdmFsdWUsIHNwZWNpZnkgYSB2YWx1ZSBvZiBgYC0xYGAuXG4gKiAgQm90aCBgYE1pbkhlYWx0aHlQZXJjZW50YWdlYGAgYW5kIGBgTWF4SGVhbHRoeVBlcmNlbnRhZ2VgYCBtdXN0IGJlIHNwZWNpZmllZCwgYW5kIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDEwMC4gQSBsYXJnZSByYW5nZSBpbmNyZWFzZXMgdGhlIG51bWJlciBvZiBpbnN0YW5jZXMgdGhhdCBjYW4gYmUgcmVwbGFjZWQgYXQgdGhlIHNhbWUgdGltZS5cbiAqL1xuTWF4SGVhbHRoeVBlcmNlbnRhZ2U/OiBudW1iZXJcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBsb3dlciB0aHJlc2hvbGQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBkZXNpcmVkIGNhcGFjaXR5IG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuIEl0IHJlcHJlc2VudHMgdGhlIG1pbmltdW0gcGVyY2VudGFnZSBvZiB0aGUgZ3JvdXAgdG8ga2VlcCBpbiBzZXJ2aWNlLCBoZWFsdGh5LCBhbmQgcmVhZHkgdG8gdXNlIHRvIHN1cHBvcnQgeW91ciB3b3JrbG9hZCB3aGVuIHJlcGxhY2luZyBpbnN0YW5jZXMuIFZhbHVlIHJhbmdlIGlzIDAgdG8gMTAwLiBUbyBjbGVhciBhIHByZXZpb3VzbHkgc2V0IHZhbHVlLCBzcGVjaWZ5IGEgdmFsdWUgb2YgYGAtMWBgLlxuICovXG5NaW5IZWFsdGh5UGVyY2VudGFnZT86IG51bWJlclxufVxuZXhwb3J0IGludGVyZmFjZSBUcmFmZmljU291cmNlSWRlbnRpZmllciB7XG5UeXBlOiBzdHJpbmdcbklkZW50aWZpZXI6IHN0cmluZ1xufVxuIl19
@@ -1,4 +1,5 @@
1
1
  export type CapabilityConfiguration = Edi;
2
+ export type CapabilityDirection = ("INBOUND" | "OUTBOUND");
2
3
  export type EdiType = X12Details;
3
4
  export type X12TransactionSet = ("X12_110" | "X12_180" | "X12_204" | "X12_210" | "X12_211" | "X12_214" | "X12_215" | "X12_259" | "X12_260" | "X12_266" | "X12_269" | "X12_270" | "X12_271" | "X12_274" | "X12_275" | "X12_276" | "X12_277" | "X12_278" | "X12_310" | "X12_315" | "X12_322" | "X12_404" | "X12_410" | "X12_417" | "X12_421" | "X12_426" | "X12_810" | "X12_820" | "X12_824" | "X12_830" | "X12_832" | "X12_834" | "X12_835" | "X12_837" | "X12_844" | "X12_846" | "X12_849" | "X12_850" | "X12_852" | "X12_855" | "X12_856" | "X12_860" | "X12_861" | "X12_864" | "X12_865" | "X12_869" | "X12_870" | "X12_940" | "X12_945" | "X12_990" | "X12_997" | "X12_999" | "X12_270_X279" | "X12_271_X279" | "X12_275_X210" | "X12_275_X211" | "X12_276_X212" | "X12_277_X212" | "X12_277_X214" | "X12_277_X364" | "X12_278_X217" | "X12_820_X218" | "X12_820_X306" | "X12_824_X186" | "X12_834_X220" | "X12_834_X307" | "X12_834_X318" | "X12_835_X221" | "X12_837_X222" | "X12_837_X223" | "X12_837_X224" | "X12_837_X291" | "X12_837_X292" | "X12_837_X298" | "X12_999_X231");
4
5
  export type X12Version = ("VERSION_4010" | "VERSION_4030" | "VERSION_5010" | "VERSION_5010_HIPAA");
@@ -29,6 +30,7 @@ export interface Edi {
29
30
  Edi: EdiConfiguration;
30
31
  }
31
32
  export interface EdiConfiguration {
33
+ CapabilityDirection?: CapabilityDirection;
32
34
  Type: EdiType;
33
35
  InputLocation: S3Location;
34
36
  OutputLocation: S3Location;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWIyYmktY2FwYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1iMmJpLWNhcGFiaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENhcGFiaWxpdHlDb25maWd1cmF0aW9uID0gRWRpXG5leHBvcnQgdHlwZSBFZGlUeXBlID0gWDEyRGV0YWlsc1xuZXhwb3J0IHR5cGUgWDEyVHJhbnNhY3Rpb25TZXQgPSAoXCJYMTJfMTEwXCIgfCBcIlgxMl8xODBcIiB8IFwiWDEyXzIwNFwiIHwgXCJYMTJfMjEwXCIgfCBcIlgxMl8yMTFcIiB8IFwiWDEyXzIxNFwiIHwgXCJYMTJfMjE1XCIgfCBcIlgxMl8yNTlcIiB8IFwiWDEyXzI2MFwiIHwgXCJYMTJfMjY2XCIgfCBcIlgxMl8yNjlcIiB8IFwiWDEyXzI3MFwiIHwgXCJYMTJfMjcxXCIgfCBcIlgxMl8yNzRcIiB8IFwiWDEyXzI3NVwiIHwgXCJYMTJfMjc2XCIgfCBcIlgxMl8yNzdcIiB8IFwiWDEyXzI3OFwiIHwgXCJYMTJfMzEwXCIgfCBcIlgxMl8zMTVcIiB8IFwiWDEyXzMyMlwiIHwgXCJYMTJfNDA0XCIgfCBcIlgxMl80MTBcIiB8IFwiWDEyXzQxN1wiIHwgXCJYMTJfNDIxXCIgfCBcIlgxMl80MjZcIiB8IFwiWDEyXzgxMFwiIHwgXCJYMTJfODIwXCIgfCBcIlgxMl84MjRcIiB8IFwiWDEyXzgzMFwiIHwgXCJYMTJfODMyXCIgfCBcIlgxMl84MzRcIiB8IFwiWDEyXzgzNVwiIHwgXCJYMTJfODM3XCIgfCBcIlgxMl84NDRcIiB8IFwiWDEyXzg0NlwiIHwgXCJYMTJfODQ5XCIgfCBcIlgxMl84NTBcIiB8IFwiWDEyXzg1MlwiIHwgXCJYMTJfODU1XCIgfCBcIlgxMl84NTZcIiB8IFwiWDEyXzg2MFwiIHwgXCJYMTJfODYxXCIgfCBcIlgxMl84NjRcIiB8IFwiWDEyXzg2NVwiIHwgXCJYMTJfODY5XCIgfCBcIlgxMl84NzBcIiB8IFwiWDEyXzk0MFwiIHwgXCJYMTJfOTQ1XCIgfCBcIlgxMl85OTBcIiB8IFwiWDEyXzk5N1wiIHwgXCJYMTJfOTk5XCIgfCBcIlgxMl8yNzBfWDI3OVwiIHwgXCJYMTJfMjcxX1gyNzlcIiB8IFwiWDEyXzI3NV9YMjEwXCIgfCBcIlgxMl8yNzVfWDIxMVwiIHwgXCJYMTJfMjc2X1gyMTJcIiB8IFwiWDEyXzI3N19YMjEyXCIgfCBcIlgxMl8yNzdfWDIxNFwiIHwgXCJYMTJfMjc3X1gzNjRcIiB8IFwiWDEyXzI3OF9YMjE3XCIgfCBcIlgxMl84MjBfWDIxOFwiIHwgXCJYMTJfODIwX1gzMDZcIiB8IFwiWDEyXzgyNF9YMTg2XCIgfCBcIlgxMl84MzRfWDIyMFwiIHwgXCJYMTJfODM0X1gzMDdcIiB8IFwiWDEyXzgzNF9YMzE4XCIgfCBcIlgxMl84MzVfWDIyMVwiIHwgXCJYMTJfODM3X1gyMjJcIiB8IFwiWDEyXzgzN19YMjIzXCIgfCBcIlgxMl84MzdfWDIyNFwiIHwgXCJYMTJfODM3X1gyOTFcIiB8IFwiWDEyXzgzN19YMjkyXCIgfCBcIlgxMl84MzdfWDI5OFwiIHwgXCJYMTJfOTk5X1gyMzFcIilcbmV4cG9ydCB0eXBlIFgxMlZlcnNpb24gPSAoXCJWRVJTSU9OXzQwMTBcIiB8IFwiVkVSU0lPTl80MDMwXCIgfCBcIlZFUlNJT05fNTAxMFwiIHwgXCJWRVJTSU9OXzUwMTBfSElQQUFcIilcbmV4cG9ydCB0eXBlIENhcGFiaWxpdHlUeXBlID0gXCJlZGlcIlxuXG4vKipcbiAqIERlZmluaXRpb24gb2YgQVdTOjpCMkJJOjpDYXBhYmlsaXR5IFJlc291cmNlIFR5cGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0IyQklfQ0FQQUJJTElUWSB7XG5DYXBhYmlsaXR5QXJuPzogc3RyaW5nXG5DYXBhYmlsaXR5SWQ/OiBzdHJpbmdcbkNvbmZpZ3VyYXRpb246IENhcGFiaWxpdHlDb25maWd1cmF0aW9uXG5DcmVhdGVkQXQ/OiBzdHJpbmdcbi8qKlxuICogQG1pbkl0ZW1zIDBcbiAqIEBtYXhJdGVtcyA1XG4gKi9cbkluc3RydWN0aW9uc0RvY3VtZW50cz86IFMzTG9jYXRpb25bXVxuTW9kaWZpZWRBdD86IHN0cmluZ1xuTmFtZTogc3RyaW5nXG4vKipcbiAqIEBtaW5JdGVtcyAwXG4gKiBAbWF4SXRlbXMgMjAwXG4gKi9cblRhZ3M/OiBUYWdbXVxuVHlwZTogQ2FwYWJpbGl0eVR5cGVcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRWRpIHtcbkVkaTogRWRpQ29uZmlndXJhdGlvblxufVxuZXhwb3J0IGludGVyZmFjZSBFZGlDb25maWd1cmF0aW9uIHtcblR5cGU6IEVkaVR5cGVcbklucHV0TG9jYXRpb246IFMzTG9jYXRpb25cbk91dHB1dExvY2F0aW9uOiBTM0xvY2F0aW9uXG5UcmFuc2Zvcm1lcklkOiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgWDEyRGV0YWlscyB7XG5YMTJEZXRhaWxzOiBYMTJEZXRhaWxzMVxufVxuZXhwb3J0IGludGVyZmFjZSBYMTJEZXRhaWxzMSB7XG5UcmFuc2FjdGlvblNldD86IFgxMlRyYW5zYWN0aW9uU2V0XG5WZXJzaW9uPzogWDEyVmVyc2lvblxufVxuZXhwb3J0IGludGVyZmFjZSBTM0xvY2F0aW9uIHtcbkJ1Y2tldE5hbWU/OiBzdHJpbmdcbktleT86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuS2V5OiBzdHJpbmdcblZhbHVlOiBzdHJpbmdcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWIyYmktY2FwYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1iMmJpLWNhcGFiaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENhcGFiaWxpdHlDb25maWd1cmF0aW9uID0gRWRpXG5leHBvcnQgdHlwZSBDYXBhYmlsaXR5RGlyZWN0aW9uID0gKFwiSU5CT1VORFwiIHwgXCJPVVRCT1VORFwiKVxuZXhwb3J0IHR5cGUgRWRpVHlwZSA9IFgxMkRldGFpbHNcbmV4cG9ydCB0eXBlIFgxMlRyYW5zYWN0aW9uU2V0ID0gKFwiWDEyXzExMFwiIHwgXCJYMTJfMTgwXCIgfCBcIlgxMl8yMDRcIiB8IFwiWDEyXzIxMFwiIHwgXCJYMTJfMjExXCIgfCBcIlgxMl8yMTRcIiB8IFwiWDEyXzIxNVwiIHwgXCJYMTJfMjU5XCIgfCBcIlgxMl8yNjBcIiB8IFwiWDEyXzI2NlwiIHwgXCJYMTJfMjY5XCIgfCBcIlgxMl8yNzBcIiB8IFwiWDEyXzI3MVwiIHwgXCJYMTJfMjc0XCIgfCBcIlgxMl8yNzVcIiB8IFwiWDEyXzI3NlwiIHwgXCJYMTJfMjc3XCIgfCBcIlgxMl8yNzhcIiB8IFwiWDEyXzMxMFwiIHwgXCJYMTJfMzE1XCIgfCBcIlgxMl8zMjJcIiB8IFwiWDEyXzQwNFwiIHwgXCJYMTJfNDEwXCIgfCBcIlgxMl80MTdcIiB8IFwiWDEyXzQyMVwiIHwgXCJYMTJfNDI2XCIgfCBcIlgxMl84MTBcIiB8IFwiWDEyXzgyMFwiIHwgXCJYMTJfODI0XCIgfCBcIlgxMl84MzBcIiB8IFwiWDEyXzgzMlwiIHwgXCJYMTJfODM0XCIgfCBcIlgxMl84MzVcIiB8IFwiWDEyXzgzN1wiIHwgXCJYMTJfODQ0XCIgfCBcIlgxMl84NDZcIiB8IFwiWDEyXzg0OVwiIHwgXCJYMTJfODUwXCIgfCBcIlgxMl84NTJcIiB8IFwiWDEyXzg1NVwiIHwgXCJYMTJfODU2XCIgfCBcIlgxMl84NjBcIiB8IFwiWDEyXzg2MVwiIHwgXCJYMTJfODY0XCIgfCBcIlgxMl84NjVcIiB8IFwiWDEyXzg2OVwiIHwgXCJYMTJfODcwXCIgfCBcIlgxMl85NDBcIiB8IFwiWDEyXzk0NVwiIHwgXCJYMTJfOTkwXCIgfCBcIlgxMl85OTdcIiB8IFwiWDEyXzk5OVwiIHwgXCJYMTJfMjcwX1gyNzlcIiB8IFwiWDEyXzI3MV9YMjc5XCIgfCBcIlgxMl8yNzVfWDIxMFwiIHwgXCJYMTJfMjc1X1gyMTFcIiB8IFwiWDEyXzI3Nl9YMjEyXCIgfCBcIlgxMl8yNzdfWDIxMlwiIHwgXCJYMTJfMjc3X1gyMTRcIiB8IFwiWDEyXzI3N19YMzY0XCIgfCBcIlgxMl8yNzhfWDIxN1wiIHwgXCJYMTJfODIwX1gyMThcIiB8IFwiWDEyXzgyMF9YMzA2XCIgfCBcIlgxMl84MjRfWDE4NlwiIHwgXCJYMTJfODM0X1gyMjBcIiB8IFwiWDEyXzgzNF9YMzA3XCIgfCBcIlgxMl84MzRfWDMxOFwiIHwgXCJYMTJfODM1X1gyMjFcIiB8IFwiWDEyXzgzN19YMjIyXCIgfCBcIlgxMl84MzdfWDIyM1wiIHwgXCJYMTJfODM3X1gyMjRcIiB8IFwiWDEyXzgzN19YMjkxXCIgfCBcIlgxMl84MzdfWDI5MlwiIHwgXCJYMTJfODM3X1gyOThcIiB8IFwiWDEyXzk5OV9YMjMxXCIpXG5leHBvcnQgdHlwZSBYMTJWZXJzaW9uID0gKFwiVkVSU0lPTl80MDEwXCIgfCBcIlZFUlNJT05fNDAzMFwiIHwgXCJWRVJTSU9OXzUwMTBcIiB8IFwiVkVSU0lPTl81MDEwX0hJUEFBXCIpXG5leHBvcnQgdHlwZSBDYXBhYmlsaXR5VHlwZSA9IFwiZWRpXCJcblxuLyoqXG4gKiBEZWZpbml0aW9uIG9mIEFXUzo6QjJCSTo6Q2FwYWJpbGl0eSBSZXNvdXJjZSBUeXBlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19CMkJJX0NBUEFCSUxJVFkge1xuQ2FwYWJpbGl0eUFybj86IHN0cmluZ1xuQ2FwYWJpbGl0eUlkPzogc3RyaW5nXG5Db25maWd1cmF0aW9uOiBDYXBhYmlsaXR5Q29uZmlndXJhdGlvblxuQ3JlYXRlZEF0Pzogc3RyaW5nXG4vKipcbiAqIEBtaW5JdGVtcyAwXG4gKiBAbWF4SXRlbXMgNVxuICovXG5JbnN0cnVjdGlvbnNEb2N1bWVudHM/OiBTM0xvY2F0aW9uW11cbk1vZGlmaWVkQXQ/OiBzdHJpbmdcbk5hbWU6IHN0cmluZ1xuLyoqXG4gKiBAbWluSXRlbXMgMFxuICogQG1heEl0ZW1zIDIwMFxuICovXG5UYWdzPzogVGFnW11cblR5cGU6IENhcGFiaWxpdHlUeXBlXG59XG5leHBvcnQgaW50ZXJmYWNlIEVkaSB7XG5FZGk6IEVkaUNvbmZpZ3VyYXRpb25cbn1cbmV4cG9ydCBpbnRlcmZhY2UgRWRpQ29uZmlndXJhdGlvbiB7XG5DYXBhYmlsaXR5RGlyZWN0aW9uPzogQ2FwYWJpbGl0eURpcmVjdGlvblxuVHlwZTogRWRpVHlwZVxuSW5wdXRMb2NhdGlvbjogUzNMb2NhdGlvblxuT3V0cHV0TG9jYXRpb246IFMzTG9jYXRpb25cblRyYW5zZm9ybWVySWQ6IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBYMTJEZXRhaWxzIHtcblgxMkRldGFpbHM6IFgxMkRldGFpbHMxXG59XG5leHBvcnQgaW50ZXJmYWNlIFgxMkRldGFpbHMxIHtcblRyYW5zYWN0aW9uU2V0PzogWDEyVHJhbnNhY3Rpb25TZXRcblZlcnNpb24/OiBYMTJWZXJzaW9uXG59XG5leHBvcnQgaW50ZXJmYWNlIFMzTG9jYXRpb24ge1xuQnVja2V0TmFtZT86IHN0cmluZ1xuS2V5Pzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG5LZXk6IHN0cmluZ1xuVmFsdWU6IHN0cmluZ1xufVxuIl19
@@ -1,8 +1,10 @@
1
+ export type OutboundEdiOptions = X12;
1
2
  /**
2
3
  * Definition of AWS::B2BI::Partnership Resource Type
3
4
  */
4
5
  export interface _AWS_B2BI_PARTNERSHIP {
5
- Capabilities?: string[];
6
+ Capabilities: string[];
7
+ CapabilityOptions?: CapabilityOptions;
6
8
  CreatedAt?: string;
7
9
  Email: string;
8
10
  ModifiedAt?: string;
@@ -18,6 +20,40 @@ export interface _AWS_B2BI_PARTNERSHIP {
18
20
  Tags?: Tag[];
19
21
  TradingPartnerId?: string;
20
22
  }
23
+ export interface CapabilityOptions {
24
+ OutboundEdi?: OutboundEdiOptions;
25
+ }
26
+ export interface X12 {
27
+ X12: X12Envelope;
28
+ }
29
+ export interface X12Envelope {
30
+ Common?: X12OutboundEdiHeaders;
31
+ }
32
+ export interface X12OutboundEdiHeaders {
33
+ InterchangeControlHeaders?: X12InterchangeControlHeaders;
34
+ FunctionalGroupHeaders?: X12FunctionalGroupHeaders;
35
+ Delimiters?: X12Delimiters;
36
+ ValidateEdi?: boolean;
37
+ }
38
+ export interface X12InterchangeControlHeaders {
39
+ SenderIdQualifier?: string;
40
+ SenderId?: string;
41
+ ReceiverIdQualifier?: string;
42
+ ReceiverId?: string;
43
+ RepetitionSeparator?: string;
44
+ AcknowledgmentRequestedCode?: string;
45
+ UsageIndicatorCode?: string;
46
+ }
47
+ export interface X12FunctionalGroupHeaders {
48
+ ApplicationSenderCode?: string;
49
+ ApplicationReceiverCode?: string;
50
+ ResponsibleAgencyCode?: string;
51
+ }
52
+ export interface X12Delimiters {
53
+ ComponentSeparator?: string;
54
+ DataElementSeparator?: string;
55
+ SegmentTerminator?: string;
56
+ }
21
57
  export interface Tag {
22
58
  Key: string;
23
59
  Value: string;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWIyYmktcGFydG5lcnNoaXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtYjJiaS1wYXJ0bmVyc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWZpbml0aW9uIG9mIEFXUzo6QjJCSTo6UGFydG5lcnNoaXAgUmVzb3VyY2UgVHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfQjJCSV9QQVJUTkVSU0hJUCB7XG5DYXBhYmlsaXRpZXM/OiBzdHJpbmdbXVxuQ3JlYXRlZEF0Pzogc3RyaW5nXG5FbWFpbDogc3RyaW5nXG5Nb2RpZmllZEF0Pzogc3RyaW5nXG5OYW1lOiBzdHJpbmdcblBhcnRuZXJzaGlwQXJuPzogc3RyaW5nXG5QYXJ0bmVyc2hpcElkPzogc3RyaW5nXG5QaG9uZT86IHN0cmluZ1xuUHJvZmlsZUlkOiBzdHJpbmdcbi8qKlxuICogQG1pbkl0ZW1zIDBcbiAqIEBtYXhJdGVtcyAyMDBcbiAqL1xuVGFncz86IFRhZ1tdXG5UcmFkaW5nUGFydG5lcklkPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG5LZXk6IHN0cmluZ1xuVmFsdWU6IHN0cmluZ1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWIyYmktcGFydG5lcnNoaXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtYjJiaS1wYXJ0bmVyc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgT3V0Ym91bmRFZGlPcHRpb25zID0gWDEyXG5cbi8qKlxuICogRGVmaW5pdGlvbiBvZiBBV1M6OkIyQkk6OlBhcnRuZXJzaGlwIFJlc291cmNlIFR5cGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0IyQklfUEFSVE5FUlNISVAge1xuQ2FwYWJpbGl0aWVzOiBzdHJpbmdbXVxuQ2FwYWJpbGl0eU9wdGlvbnM/OiBDYXBhYmlsaXR5T3B0aW9uc1xuQ3JlYXRlZEF0Pzogc3RyaW5nXG5FbWFpbDogc3RyaW5nXG5Nb2RpZmllZEF0Pzogc3RyaW5nXG5OYW1lOiBzdHJpbmdcblBhcnRuZXJzaGlwQXJuPzogc3RyaW5nXG5QYXJ0bmVyc2hpcElkPzogc3RyaW5nXG5QaG9uZT86IHN0cmluZ1xuUHJvZmlsZUlkOiBzdHJpbmdcbi8qKlxuICogQG1pbkl0ZW1zIDBcbiAqIEBtYXhJdGVtcyAyMDBcbiAqL1xuVGFncz86IFRhZ1tdXG5UcmFkaW5nUGFydG5lcklkPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIENhcGFiaWxpdHlPcHRpb25zIHtcbk91dGJvdW5kRWRpPzogT3V0Ym91bmRFZGlPcHRpb25zXG59XG5leHBvcnQgaW50ZXJmYWNlIFgxMiB7XG5YMTI6IFgxMkVudmVsb3BlXG59XG5leHBvcnQgaW50ZXJmYWNlIFgxMkVudmVsb3BlIHtcbkNvbW1vbj86IFgxMk91dGJvdW5kRWRpSGVhZGVyc1xufVxuZXhwb3J0IGludGVyZmFjZSBYMTJPdXRib3VuZEVkaUhlYWRlcnMge1xuSW50ZXJjaGFuZ2VDb250cm9sSGVhZGVycz86IFgxMkludGVyY2hhbmdlQ29udHJvbEhlYWRlcnNcbkZ1bmN0aW9uYWxHcm91cEhlYWRlcnM/OiBYMTJGdW5jdGlvbmFsR3JvdXBIZWFkZXJzXG5EZWxpbWl0ZXJzPzogWDEyRGVsaW1pdGVyc1xuVmFsaWRhdGVFZGk/OiBib29sZWFuXG59XG5leHBvcnQgaW50ZXJmYWNlIFgxMkludGVyY2hhbmdlQ29udHJvbEhlYWRlcnMge1xuU2VuZGVySWRRdWFsaWZpZXI/OiBzdHJpbmdcblNlbmRlcklkPzogc3RyaW5nXG5SZWNlaXZlcklkUXVhbGlmaWVyPzogc3RyaW5nXG5SZWNlaXZlcklkPzogc3RyaW5nXG5SZXBldGl0aW9uU2VwYXJhdG9yPzogc3RyaW5nXG5BY2tub3dsZWRnbWVudFJlcXVlc3RlZENvZGU/OiBzdHJpbmdcblVzYWdlSW5kaWNhdG9yQ29kZT86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBYMTJGdW5jdGlvbmFsR3JvdXBIZWFkZXJzIHtcbkFwcGxpY2F0aW9uU2VuZGVyQ29kZT86IHN0cmluZ1xuQXBwbGljYXRpb25SZWNlaXZlckNvZGU/OiBzdHJpbmdcblJlc3BvbnNpYmxlQWdlbmN5Q29kZT86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBYMTJEZWxpbWl0ZXJzIHtcbkNvbXBvbmVudFNlcGFyYXRvcj86IHN0cmluZ1xuRGF0YUVsZW1lbnRTZXBhcmF0b3I/OiBzdHJpbmdcblNlZ21lbnRUZXJtaW5hdG9yPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG5LZXk6IHN0cmluZ1xuVmFsdWU6IHN0cmluZ1xufVxuIl19
@@ -1,19 +1,33 @@
1
1
  export type EdiType = X12Details;
2
2
  export type X12TransactionSet = ("X12_110" | "X12_180" | "X12_204" | "X12_210" | "X12_211" | "X12_214" | "X12_215" | "X12_259" | "X12_260" | "X12_266" | "X12_269" | "X12_270" | "X12_271" | "X12_274" | "X12_275" | "X12_276" | "X12_277" | "X12_278" | "X12_310" | "X12_315" | "X12_322" | "X12_404" | "X12_410" | "X12_417" | "X12_421" | "X12_426" | "X12_810" | "X12_820" | "X12_824" | "X12_830" | "X12_832" | "X12_834" | "X12_835" | "X12_837" | "X12_844" | "X12_846" | "X12_849" | "X12_850" | "X12_852" | "X12_855" | "X12_856" | "X12_860" | "X12_861" | "X12_864" | "X12_865" | "X12_869" | "X12_870" | "X12_940" | "X12_945" | "X12_990" | "X12_997" | "X12_999" | "X12_270_X279" | "X12_271_X279" | "X12_275_X210" | "X12_275_X211" | "X12_276_X212" | "X12_277_X212" | "X12_277_X214" | "X12_277_X364" | "X12_278_X217" | "X12_820_X218" | "X12_820_X306" | "X12_824_X186" | "X12_834_X220" | "X12_834_X307" | "X12_834_X318" | "X12_835_X221" | "X12_837_X222" | "X12_837_X223" | "X12_837_X224" | "X12_837_X291" | "X12_837_X292" | "X12_837_X298" | "X12_999_X231");
3
3
  export type X12Version = ("VERSION_4010" | "VERSION_4030" | "VERSION_5010" | "VERSION_5010_HIPAA");
4
- export type FileFormat = ("XML" | "JSON");
4
+ export type FileFormat = ("XML" | "JSON" | "NOT_USED");
5
+ export type FromFormat = "X12";
6
+ export type FormatOptions = X12;
7
+ export type MappingTemplateLanguage = ("XSLT" | "JSONATA");
8
+ export type ToFormat = "X12";
5
9
  export type TransformerStatus = ("active" | "inactive");
6
10
  /**
7
11
  * Definition of AWS::B2BI::Transformer Resource Type
8
12
  */
9
13
  export interface _AWS_B2BI_TRANSFORMER {
10
14
  CreatedAt?: string;
11
- EdiType: EdiType;
12
- FileFormat: FileFormat;
13
- MappingTemplate: string;
15
+ EdiType?: EdiType;
16
+ FileFormat?: FileFormat;
17
+ InputConversion?: InputConversion;
18
+ Mapping?: Mapping;
19
+ /**
20
+ * This shape is deprecated: This is a legacy trait. Please use input-conversion or output-conversion.
21
+ */
22
+ MappingTemplate?: string;
14
23
  ModifiedAt?: string;
15
24
  Name: string;
25
+ OutputConversion?: OutputConversion;
26
+ /**
27
+ * This shape is deprecated: This is a legacy trait. Please use input-conversion or output-conversion.
28
+ */
16
29
  SampleDocument?: string;
30
+ SampleDocuments?: SampleDocuments;
17
31
  Status: TransformerStatus;
18
32
  /**
19
33
  * @minItems 0
@@ -30,6 +44,29 @@ export interface X12Details1 {
30
44
  TransactionSet?: X12TransactionSet;
31
45
  Version?: X12Version;
32
46
  }
47
+ export interface InputConversion {
48
+ FromFormat: FromFormat;
49
+ FormatOptions?: FormatOptions;
50
+ }
51
+ export interface X12 {
52
+ X12: X12Details1;
53
+ }
54
+ export interface Mapping {
55
+ TemplateLanguage: MappingTemplateLanguage;
56
+ Template?: string;
57
+ }
58
+ export interface OutputConversion {
59
+ ToFormat: ToFormat;
60
+ FormatOptions?: FormatOptions;
61
+ }
62
+ export interface SampleDocuments {
63
+ BucketName: string;
64
+ Keys: SampleDocumentKeys[];
65
+ }
66
+ export interface SampleDocumentKeys {
67
+ Input?: string;
68
+ Output?: string;
69
+ }
33
70
  export interface Tag {
34
71
  Key: string;
35
72
  Value: string;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWIyYmktdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtYjJiaS10cmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRWRpVHlwZSA9IFgxMkRldGFpbHNcbmV4cG9ydCB0eXBlIFgxMlRyYW5zYWN0aW9uU2V0ID0gKFwiWDEyXzExMFwiIHwgXCJYMTJfMTgwXCIgfCBcIlgxMl8yMDRcIiB8IFwiWDEyXzIxMFwiIHwgXCJYMTJfMjExXCIgfCBcIlgxMl8yMTRcIiB8IFwiWDEyXzIxNVwiIHwgXCJYMTJfMjU5XCIgfCBcIlgxMl8yNjBcIiB8IFwiWDEyXzI2NlwiIHwgXCJYMTJfMjY5XCIgfCBcIlgxMl8yNzBcIiB8IFwiWDEyXzI3MVwiIHwgXCJYMTJfMjc0XCIgfCBcIlgxMl8yNzVcIiB8IFwiWDEyXzI3NlwiIHwgXCJYMTJfMjc3XCIgfCBcIlgxMl8yNzhcIiB8IFwiWDEyXzMxMFwiIHwgXCJYMTJfMzE1XCIgfCBcIlgxMl8zMjJcIiB8IFwiWDEyXzQwNFwiIHwgXCJYMTJfNDEwXCIgfCBcIlgxMl80MTdcIiB8IFwiWDEyXzQyMVwiIHwgXCJYMTJfNDI2XCIgfCBcIlgxMl84MTBcIiB8IFwiWDEyXzgyMFwiIHwgXCJYMTJfODI0XCIgfCBcIlgxMl84MzBcIiB8IFwiWDEyXzgzMlwiIHwgXCJYMTJfODM0XCIgfCBcIlgxMl84MzVcIiB8IFwiWDEyXzgzN1wiIHwgXCJYMTJfODQ0XCIgfCBcIlgxMl84NDZcIiB8IFwiWDEyXzg0OVwiIHwgXCJYMTJfODUwXCIgfCBcIlgxMl84NTJcIiB8IFwiWDEyXzg1NVwiIHwgXCJYMTJfODU2XCIgfCBcIlgxMl84NjBcIiB8IFwiWDEyXzg2MVwiIHwgXCJYMTJfODY0XCIgfCBcIlgxMl84NjVcIiB8IFwiWDEyXzg2OVwiIHwgXCJYMTJfODcwXCIgfCBcIlgxMl85NDBcIiB8IFwiWDEyXzk0NVwiIHwgXCJYMTJfOTkwXCIgfCBcIlgxMl85OTdcIiB8IFwiWDEyXzk5OVwiIHwgXCJYMTJfMjcwX1gyNzlcIiB8IFwiWDEyXzI3MV9YMjc5XCIgfCBcIlgxMl8yNzVfWDIxMFwiIHwgXCJYMTJfMjc1X1gyMTFcIiB8IFwiWDEyXzI3Nl9YMjEyXCIgfCBcIlgxMl8yNzdfWDIxMlwiIHwgXCJYMTJfMjc3X1gyMTRcIiB8IFwiWDEyXzI3N19YMzY0XCIgfCBcIlgxMl8yNzhfWDIxN1wiIHwgXCJYMTJfODIwX1gyMThcIiB8IFwiWDEyXzgyMF9YMzA2XCIgfCBcIlgxMl84MjRfWDE4NlwiIHwgXCJYMTJfODM0X1gyMjBcIiB8IFwiWDEyXzgzNF9YMzA3XCIgfCBcIlgxMl84MzRfWDMxOFwiIHwgXCJYMTJfODM1X1gyMjFcIiB8IFwiWDEyXzgzN19YMjIyXCIgfCBcIlgxMl84MzdfWDIyM1wiIHwgXCJYMTJfODM3X1gyMjRcIiB8IFwiWDEyXzgzN19YMjkxXCIgfCBcIlgxMl84MzdfWDI5MlwiIHwgXCJYMTJfODM3X1gyOThcIiB8IFwiWDEyXzk5OV9YMjMxXCIpXG5leHBvcnQgdHlwZSBYMTJWZXJzaW9uID0gKFwiVkVSU0lPTl80MDEwXCIgfCBcIlZFUlNJT05fNDAzMFwiIHwgXCJWRVJTSU9OXzUwMTBcIiB8IFwiVkVSU0lPTl81MDEwX0hJUEFBXCIpXG5leHBvcnQgdHlwZSBGaWxlRm9ybWF0ID0gKFwiWE1MXCIgfCBcIkpTT05cIilcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybWVyU3RhdHVzID0gKFwiYWN0aXZlXCIgfCBcImluYWN0aXZlXCIpXG5cbi8qKlxuICogRGVmaW5pdGlvbiBvZiBBV1M6OkIyQkk6OlRyYW5zZm9ybWVyIFJlc291cmNlIFR5cGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0IyQklfVFJBTlNGT1JNRVIge1xuQ3JlYXRlZEF0Pzogc3RyaW5nXG5FZGlUeXBlOiBFZGlUeXBlXG5GaWxlRm9ybWF0OiBGaWxlRm9ybWF0XG5NYXBwaW5nVGVtcGxhdGU6IHN0cmluZ1xuTW9kaWZpZWRBdD86IHN0cmluZ1xuTmFtZTogc3RyaW5nXG5TYW1wbGVEb2N1bWVudD86IHN0cmluZ1xuU3RhdHVzOiBUcmFuc2Zvcm1lclN0YXR1c1xuLyoqXG4gKiBAbWluSXRlbXMgMFxuICogQG1heEl0ZW1zIDIwMFxuICovXG5UYWdzPzogVGFnW11cblRyYW5zZm9ybWVyQXJuPzogc3RyaW5nXG5UcmFuc2Zvcm1lcklkPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFgxMkRldGFpbHMge1xuWDEyRGV0YWlsczogWDEyRGV0YWlsczFcbn1cbmV4cG9ydCBpbnRlcmZhY2UgWDEyRGV0YWlsczEge1xuVHJhbnNhY3Rpb25TZXQ/OiBYMTJUcmFuc2FjdGlvblNldFxuVmVyc2lvbj86IFgxMlZlcnNpb25cbn1cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbktleTogc3RyaW5nXG5WYWx1ZTogc3RyaW5nXG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWIyYmktdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtYjJiaS10cmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRWRpVHlwZSA9IFgxMkRldGFpbHNcbmV4cG9ydCB0eXBlIFgxMlRyYW5zYWN0aW9uU2V0ID0gKFwiWDEyXzExMFwiIHwgXCJYMTJfMTgwXCIgfCBcIlgxMl8yMDRcIiB8IFwiWDEyXzIxMFwiIHwgXCJYMTJfMjExXCIgfCBcIlgxMl8yMTRcIiB8IFwiWDEyXzIxNVwiIHwgXCJYMTJfMjU5XCIgfCBcIlgxMl8yNjBcIiB8IFwiWDEyXzI2NlwiIHwgXCJYMTJfMjY5XCIgfCBcIlgxMl8yNzBcIiB8IFwiWDEyXzI3MVwiIHwgXCJYMTJfMjc0XCIgfCBcIlgxMl8yNzVcIiB8IFwiWDEyXzI3NlwiIHwgXCJYMTJfMjc3XCIgfCBcIlgxMl8yNzhcIiB8IFwiWDEyXzMxMFwiIHwgXCJYMTJfMzE1XCIgfCBcIlgxMl8zMjJcIiB8IFwiWDEyXzQwNFwiIHwgXCJYMTJfNDEwXCIgfCBcIlgxMl80MTdcIiB8IFwiWDEyXzQyMVwiIHwgXCJYMTJfNDI2XCIgfCBcIlgxMl84MTBcIiB8IFwiWDEyXzgyMFwiIHwgXCJYMTJfODI0XCIgfCBcIlgxMl84MzBcIiB8IFwiWDEyXzgzMlwiIHwgXCJYMTJfODM0XCIgfCBcIlgxMl84MzVcIiB8IFwiWDEyXzgzN1wiIHwgXCJYMTJfODQ0XCIgfCBcIlgxMl84NDZcIiB8IFwiWDEyXzg0OVwiIHwgXCJYMTJfODUwXCIgfCBcIlgxMl84NTJcIiB8IFwiWDEyXzg1NVwiIHwgXCJYMTJfODU2XCIgfCBcIlgxMl84NjBcIiB8IFwiWDEyXzg2MVwiIHwgXCJYMTJfODY0XCIgfCBcIlgxMl84NjVcIiB8IFwiWDEyXzg2OVwiIHwgXCJYMTJfODcwXCIgfCBcIlgxMl85NDBcIiB8IFwiWDEyXzk0NVwiIHwgXCJYMTJfOTkwXCIgfCBcIlgxMl85OTdcIiB8IFwiWDEyXzk5OVwiIHwgXCJYMTJfMjcwX1gyNzlcIiB8IFwiWDEyXzI3MV9YMjc5XCIgfCBcIlgxMl8yNzVfWDIxMFwiIHwgXCJYMTJfMjc1X1gyMTFcIiB8IFwiWDEyXzI3Nl9YMjEyXCIgfCBcIlgxMl8yNzdfWDIxMlwiIHwgXCJYMTJfMjc3X1gyMTRcIiB8IFwiWDEyXzI3N19YMzY0XCIgfCBcIlgxMl8yNzhfWDIxN1wiIHwgXCJYMTJfODIwX1gyMThcIiB8IFwiWDEyXzgyMF9YMzA2XCIgfCBcIlgxMl84MjRfWDE4NlwiIHwgXCJYMTJfODM0X1gyMjBcIiB8IFwiWDEyXzgzNF9YMzA3XCIgfCBcIlgxMl84MzRfWDMxOFwiIHwgXCJYMTJfODM1X1gyMjFcIiB8IFwiWDEyXzgzN19YMjIyXCIgfCBcIlgxMl84MzdfWDIyM1wiIHwgXCJYMTJfODM3X1gyMjRcIiB8IFwiWDEyXzgzN19YMjkxXCIgfCBcIlgxMl84MzdfWDI5MlwiIHwgXCJYMTJfODM3X1gyOThcIiB8IFwiWDEyXzk5OV9YMjMxXCIpXG5leHBvcnQgdHlwZSBYMTJWZXJzaW9uID0gKFwiVkVSU0lPTl80MDEwXCIgfCBcIlZFUlNJT05fNDAzMFwiIHwgXCJWRVJTSU9OXzUwMTBcIiB8IFwiVkVSU0lPTl81MDEwX0hJUEFBXCIpXG5leHBvcnQgdHlwZSBGaWxlRm9ybWF0ID0gKFwiWE1MXCIgfCBcIkpTT05cIiB8IFwiTk9UX1VTRURcIilcbmV4cG9ydCB0eXBlIEZyb21Gb3JtYXQgPSBcIlgxMlwiXG5leHBvcnQgdHlwZSBGb3JtYXRPcHRpb25zID0gWDEyXG5leHBvcnQgdHlwZSBNYXBwaW5nVGVtcGxhdGVMYW5ndWFnZSA9IChcIlhTTFRcIiB8IFwiSlNPTkFUQVwiKVxuZXhwb3J0IHR5cGUgVG9Gb3JtYXQgPSBcIlgxMlwiXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1lclN0YXR1cyA9IChcImFjdGl2ZVwiIHwgXCJpbmFjdGl2ZVwiKVxuXG4vKipcbiAqIERlZmluaXRpb24gb2YgQVdTOjpCMkJJOjpUcmFuc2Zvcm1lciBSZXNvdXJjZSBUeXBlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19CMkJJX1RSQU5TRk9STUVSIHtcbkNyZWF0ZWRBdD86IHN0cmluZ1xuRWRpVHlwZT86IEVkaVR5cGVcbkZpbGVGb3JtYXQ/OiBGaWxlRm9ybWF0XG5JbnB1dENvbnZlcnNpb24/OiBJbnB1dENvbnZlcnNpb25cbk1hcHBpbmc/OiBNYXBwaW5nXG4vKipcbiAqIFRoaXMgc2hhcGUgaXMgZGVwcmVjYXRlZDogVGhpcyBpcyBhIGxlZ2FjeSB0cmFpdC4gUGxlYXNlIHVzZSBpbnB1dC1jb252ZXJzaW9uIG9yIG91dHB1dC1jb252ZXJzaW9uLlxuICovXG5NYXBwaW5nVGVtcGxhdGU/OiBzdHJpbmdcbk1vZGlmaWVkQXQ/OiBzdHJpbmdcbk5hbWU6IHN0cmluZ1xuT3V0cHV0Q29udmVyc2lvbj86IE91dHB1dENvbnZlcnNpb25cbi8qKlxuICogVGhpcyBzaGFwZSBpcyBkZXByZWNhdGVkOiBUaGlzIGlzIGEgbGVnYWN5IHRyYWl0LiBQbGVhc2UgdXNlIGlucHV0LWNvbnZlcnNpb24gb3Igb3V0cHV0LWNvbnZlcnNpb24uXG4gKi9cblNhbXBsZURvY3VtZW50Pzogc3RyaW5nXG5TYW1wbGVEb2N1bWVudHM/OiBTYW1wbGVEb2N1bWVudHNcblN0YXR1czogVHJhbnNmb3JtZXJTdGF0dXNcbi8qKlxuICogQG1pbkl0ZW1zIDBcbiAqIEBtYXhJdGVtcyAyMDBcbiAqL1xuVGFncz86IFRhZ1tdXG5UcmFuc2Zvcm1lckFybj86IHN0cmluZ1xuVHJhbnNmb3JtZXJJZD86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBYMTJEZXRhaWxzIHtcblgxMkRldGFpbHM6IFgxMkRldGFpbHMxXG59XG5leHBvcnQgaW50ZXJmYWNlIFgxMkRldGFpbHMxIHtcblRyYW5zYWN0aW9uU2V0PzogWDEyVHJhbnNhY3Rpb25TZXRcblZlcnNpb24/OiBYMTJWZXJzaW9uXG59XG5leHBvcnQgaW50ZXJmYWNlIElucHV0Q29udmVyc2lvbiB7XG5Gcm9tRm9ybWF0OiBGcm9tRm9ybWF0XG5Gb3JtYXRPcHRpb25zPzogRm9ybWF0T3B0aW9uc1xufVxuZXhwb3J0IGludGVyZmFjZSBYMTIge1xuWDEyOiBYMTJEZXRhaWxzMVxufVxuZXhwb3J0IGludGVyZmFjZSBNYXBwaW5nIHtcblRlbXBsYXRlTGFuZ3VhZ2U6IE1hcHBpbmdUZW1wbGF0ZUxhbmd1YWdlXG5UZW1wbGF0ZT86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRDb252ZXJzaW9uIHtcblRvRm9ybWF0OiBUb0Zvcm1hdFxuRm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnNcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlRG9jdW1lbnRzIHtcbkJ1Y2tldE5hbWU6IHN0cmluZ1xuS2V5czogU2FtcGxlRG9jdW1lbnRLZXlzW11cbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlRG9jdW1lbnRLZXlzIHtcbklucHV0Pzogc3RyaW5nXG5PdXRwdXQ/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbktleTogc3RyaW5nXG5WYWx1ZTogc3RyaW5nXG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ export type BackupVaultNamePattern = string;
2
+ /**
3
+ * Resource Type definition for AWS::Backup::LogicallyAirGappedBackupVault
4
+ */
5
+ export interface _AWS_BACKUP_LOGICALLYAIRGAPPEDBACKUPVAULT {
6
+ AccessPolicy?: ({
7
+ [k: string]: unknown;
8
+ } | string);
9
+ BackupVaultName: BackupVaultNamePattern;
10
+ MinRetentionDays: number;
11
+ MaxRetentionDays: number;
12
+ BackupVaultTags?: {
13
+ /**
14
+ * This interface was referenced by `undefined`'s JSON-Schema definition
15
+ * via the `patternProperty` "^.{1,128}$".
16
+ */
17
+ [k: string]: string;
18
+ };
19
+ Notifications?: NotificationObjectType;
20
+ EncryptionKeyArn?: string;
21
+ BackupVaultArn?: string;
22
+ VaultState?: string;
23
+ VaultType?: string;
24
+ }
25
+ export interface NotificationObjectType {
26
+ BackupVaultEvents: string[];
27
+ SNSTopicArn: string;
28
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWJhY2t1cC1sb2dpY2FsbHlhaXJnYXBwZWRiYWNrdXB2YXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1iYWNrdXAtbG9naWNhbGx5YWlyZ2FwcGVkYmFja3VwdmF1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEJhY2t1cFZhdWx0TmFtZVBhdHRlcm4gPSBzdHJpbmdcblxuLyoqXG4gKiBSZXNvdXJjZSBUeXBlIGRlZmluaXRpb24gZm9yIEFXUzo6QmFja3VwOjpMb2dpY2FsbHlBaXJHYXBwZWRCYWNrdXBWYXVsdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfQkFDS1VQX0xPR0lDQUxMWUFJUkdBUFBFREJBQ0tVUFZBVUxUIHtcbkFjY2Vzc1BvbGljeT86ICh7XG5bazogc3RyaW5nXTogdW5rbm93blxufSB8IHN0cmluZylcbkJhY2t1cFZhdWx0TmFtZTogQmFja3VwVmF1bHROYW1lUGF0dGVyblxuTWluUmV0ZW50aW9uRGF5czogbnVtYmVyXG5NYXhSZXRlbnRpb25EYXlzOiBudW1iZXJcbkJhY2t1cFZhdWx0VGFncz86IHtcbi8qKlxuICogVGhpcyBpbnRlcmZhY2Ugd2FzIHJlZmVyZW5jZWQgYnkgYHVuZGVmaW5lZGAncyBKU09OLVNjaGVtYSBkZWZpbml0aW9uXG4gKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiXi57MSwxMjh9JFwiLlxuICovXG5bazogc3RyaW5nXTogc3RyaW5nXG59XG5Ob3RpZmljYXRpb25zPzogTm90aWZpY2F0aW9uT2JqZWN0VHlwZVxuRW5jcnlwdGlvbktleUFybj86IHN0cmluZ1xuQmFja3VwVmF1bHRBcm4/OiBzdHJpbmdcblZhdWx0U3RhdGU/OiBzdHJpbmdcblZhdWx0VHlwZT86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25PYmplY3RUeXBlIHtcbkJhY2t1cFZhdWx0RXZlbnRzOiBzdHJpbmdbXVxuU05TVG9waWNBcm46IHN0cmluZ1xufVxuIl19
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Action Group Signature for a BuiltIn Action
3
3
  */
4
- export type ActionGroupSignature = "AMAZON.UserInput";
4
+ export type ActionGroupSignature = ("AMAZON.UserInput" | "AMAZON.CodeInterpreter");
5
5
  /**
6
6
  * Type of Executors for an Action Group
7
7
  */