@horietakehiro/aws-cdk-utul 0.33.21 → 0.33.23
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.
- package/lib/types/cfn-resource-types/aws-applicationsignals-discovery.d.ts +10 -0
- package/lib/types/cfn-resource-types/aws-applicationsignals-discovery.js +3 -0
- package/lib/types/cfn-resource-types/aws-athena-datacatalog.d.ts +14 -2
- package/lib/types/cfn-resource-types/aws-athena-datacatalog.js +1 -1
- package/lib/types/cfn-resource-types/aws-batch-jobdefinition.d.ts +247 -246
- package/lib/types/cfn-resource-types/aws-batch-jobdefinition.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-agent.d.ts +7 -0
- package/lib/types/cfn-resource-types/aws-bedrock-agent.js +1 -1
- package/lib/types/cfn-resource-types/aws-chatbot-microsoftteamschannelconfiguration.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-chatbot-microsoftteamschannelconfiguration.js +1 -1
- package/lib/types/cfn-resource-types/aws-dynamodb-globaltable.d.ts +99 -99
- package/lib/types/cfn-resource-types/aws-dynamodb-globaltable.js +1 -1
- package/lib/types/cfn-resource-types/aws-dynamodb-table.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-dynamodb-table.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-launchtemplate.d.ts +21 -14
- package/lib/types/cfn-resource-types/aws-ec2-launchtemplate.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpointservice.d.ts +5 -0
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpointservice.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecr-pullthroughcacherule.d.ts +12 -4
- package/lib/types/cfn-resource-types/aws-ecr-pullthroughcacherule.js +1 -1
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.d.ts +4 -1
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.js +1 -1
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-loadbalancer.d.ts +2 -1
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-loadbalancer.js +1 -1
- package/lib/types/cfn-resource-types/aws-iot-softwarepackageversion.d.ts +40 -0
- package/lib/types/cfn-resource-types/aws-iot-softwarepackageversion.js +1 -1
- package/lib/types/cfn-resource-types/aws-rum-appmonitor.d.ts +16 -0
- package/lib/types/cfn-resource-types/aws-rum-appmonitor.js +1 -1
- package/lib/types/cfn-resource-types/aws-sagemaker-inferencecomponent.d.ts +41 -0
- package/lib/types/cfn-resource-types/aws-sagemaker-inferencecomponent.js +1 -1
- package/lib/types/cfn-resource-types/aws-xray-transactionsearchconfig.d.ts +15 -0
- package/lib/types/cfn-resource-types/aws-xray-transactionsearchconfig.js +3 -0
- package/lib/types/cfn-resource-types.d.ts +4 -0
- package/lib/types/cfn-resource-types.js +32 -28
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWR5bmFtb2RiLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWR5bmFtb2RiLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcHJlc2VudHMgdGhlIHdhcm0gdGhyb3VnaHB1dCAoaW4gcmVhZCB1bml0cyBwZXIgc2Vjb25kIGFuZCB3cml0ZSB1bml0cyBwZXIgc2Vjb25kKSBmb3IgY3JlYXRpbmcgYSB0YWJsZS5cbiAqL1xuZXhwb3J0IHR5cGUgV2FybVRocm91Z2hwdXQgPSAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiB7XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiByZWFkIG9wZXJhdGlvbnMgeW91ciBiYXNlIHRhYmxlIGNhbiBpbnN0YW50YW5lb3VzbHkgc3VwcG9ydC5cbiAqL1xuUmVhZFVuaXRzUGVyU2Vjb25kPzogbnVtYmVyXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3cml0ZSBvcGVyYXRpb25zIHlvdXIgYmFzZSB0YWJsZSBjYW4gaW5zdGFudGFuZW91c2x5IHN1cHBvcnQuXG4gKi9cbldyaXRlVW5pdHNQZXJTZWNvbmQ/OiBudW1iZXJcbn0pXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHdhcm0gdGhyb3VnaHB1dCB2YWx1ZSAoaW4gcmVhZCB1bml0cyBwZXIgc2Vjb25kIGFuZCB3cml0ZSB1bml0cyBwZXIgc2Vjb25kKSBmb3IgdGhlIHNwZWNpZmllZCBzZWNvbmRhcnkgaW5kZXguIElmIHlvdSB1c2UgdGhpcyBwYXJhbWV0ZXIsIHlvdSBtdXN0IHNwZWNpZnkgYGBSZWFkVW5pdHNQZXJTZWNvbmRgYCwgYGBXcml0ZVVuaXRzUGVyU2Vjb25kYGAsIG9yIGJvdGguXG4gKi9cbmV4cG9ydCB0eXBlIFdhcm1UaHJvdWdocHV0MSA9ICh7XG5bazogc3RyaW5nXTogdW5rbm93blxufSAmIHtcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHJlYWQgb3BlcmF0aW9ucyB5b3VyIGJhc2UgdGFibGUgY2FuIGluc3RhbnRhbmVvdXNseSBzdXBwb3J0LlxuICovXG5SZWFkVW5pdHNQZXJTZWNvbmQ/OiBudW1iZXJcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgeW91ciBiYXNlIHRhYmxlIGNhbiBpbnN0YW50YW5lb3VzbHkgc3VwcG9ydC5cbiAqL1xuV3JpdGVVbml0c1BlclNlY29uZD86IG51bWJlclxufSlcblxuLyoqXG4gKiBUaGUgYGBBV1M6OkR5bmFtb0RCOjpUYWJsZWBgIHJlc291cmNlIGNyZWF0ZXMgYSBEREIgdGFibGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NyZWF0ZVRhYmxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlVGFibGUuaHRtbCkgaW4gdGhlICpBUEkgUmVmZXJlbmNlKi5cbiAqICBZb3Ugc2hvdWxkIGJlIGF3YXJlIG9mIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3JzIHdoZW4gd29ya2luZyB3aXRoIEREQiB0YWJsZXM6XG4gKiAgICsgICBDRk5sb25nIHR5cGljYWxseSBjcmVhdGVzIEREQiB0YWJsZXMgaW4gcGFyYWxsZWwuIEhvd2V2ZXIsIGlmIHlvdXIgdGVtcGxhdGUgaW5jbHVkZXMgbXVsdGlwbGUgRERCIHRhYmxlcyB3aXRoIGluZGV4ZXMsIHlvdSBtdXN0IGRlY2xhcmUgZGVwZW5kZW5jaWVzIHNvIHRoYXQgdGhlIHRhYmxlcyBhcmUgY3JlYXRlZCBzZXF1ZW50aWFsbHkuIEREQmxvbmcgbGltaXRzIHRoZSBudW1iZXIgb2YgdGFibGVzIHdpdGggc2Vjb25kYXJ5IGluZGV4ZXMgdGhhdCBhcmUgaW4gdGhlIGNyZWF0aW5nIHN0YXRlLiBJZiB5b3UgY3JlYXRlIG11bHRpcGxlIHRhYmxlcyB3aXRoIGluZGV4ZXMgYXQgdGhlIHNhbWUgdGltZSwgRERCIHJldHVybnMgYW4gZXJyb3IgYW5kIHRoZSBzdGFjayBvcGVyYXRpb24gZmFpbHMuIEZvciBhbiBleGFtcGxlLCBzZWUgW0R5bmFtb0RCIFRhYmxlIHdpdGggYSBEZXBlbmRzT24gQXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZHluYW1vZGItdGFibGUuaHRtbCNhd3MtcmVzb3VyY2UtZHluYW1vZGItdGFibGUtLWV4YW1wbGVzLS1EeW5hbW9EQl9UYWJsZV93aXRoX2FfRGVwZW5kc09uX0F0dHJpYnV0ZSkuXG4gKiAgIFxuICogICAgT3VyIGd1aWRhbmNlIGlzIHRvIHVzZSB0aGUgbGF0ZXN0IHNjaGVtYSBkb2N1bWVudGVkIGZvciB5b3VyIENGTmxvbmcgdGVtcGxhdGVzLiBUaGlzIHNjaGVtYSBzdXBwb3J0cyB0aGUgcHJvdmlzaW9uaW5nIG9mIGFsbCB0YWJsZSBzZXR0aW5ncyBiZWxvdy4gV2hlbiB1c2luZyB0aGlzIHNjaGVtYSBpbiB5b3VyIENGTmxvbmcgdGVtcGxhdGVzLCBwbGVhc2UgZW5zdXJlIHRoYXQgeW91ciBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgcG9saWNpZXMgYXJlIHVwZGF0ZWQgd2l0aCBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucyB0byBhbGxvdyBmb3IgdGhlIGF1dGhvcml6YXRpb24gb2YgdGhlc2Ugc2V0dGluZyBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfRFlOQU1PREJfVEFCTEUge1xuT25EZW1hbmRUaHJvdWdocHV0PzogT25EZW1hbmRUaHJvdWdocHV0XG5TU0VTcGVjaWZpY2F0aW9uPzogU1NFU3BlY2lmaWNhdGlvblxuS2luZXNpc1N0cmVhbVNwZWNpZmljYXRpb24/OiBLaW5lc2lzU3RyZWFtU3BlY2lmaWNhdGlvblxuU3RyZWFtU3BlY2lmaWNhdGlvbj86IFN0cmVhbVNwZWNpZmljYXRpb25cbkNvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uPzogQ29udHJpYnV0b3JJbnNpZ2h0c1NwZWNpZmljYXRpb25cbkltcG9ydFNvdXJjZVNwZWNpZmljYXRpb24/OiBJbXBvcnRTb3VyY2VTcGVjaWZpY2F0aW9uXG5Qb2ludEluVGltZVJlY292ZXJ5U3BlY2lmaWNhdGlvbj86IFBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uXG5Qcm92aXNpb25lZFRocm91Z2hwdXQ/OiBQcm92aXNpb25lZFRocm91Z2hwdXRcbldhcm1UaHJvdWdocHV0PzogV2FybVRocm91Z2hwdXRcbi8qKlxuICogQSBuYW1lIGZvciB0aGUgdGFibGUuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgbmFtZSwgQ0ZObG9uZyBnZW5lcmF0ZXMgYSB1bmlxdWUgcGh5c2ljYWwgSUQgYW5kIHVzZXMgdGhhdCBJRCBmb3IgdGhlIHRhYmxlIG5hbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW05hbWUgVHlwZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtbmFtZS5odG1sKS5cbiAqICAgSWYgeW91IHNwZWNpZnkgYSBuYW1lLCB5b3UgY2Fubm90IHBlcmZvcm0gdXBkYXRlcyB0aGF0IHJlcXVpcmUgcmVwbGFjZW1lbnQgb2YgdGhpcyByZXNvdXJjZS4gWW91IGNhbiBwZXJmb3JtIHVwZGF0ZXMgdGhhdCByZXF1aXJlIG5vIG9yIHNvbWUgaW50ZXJydXB0aW9uLiBJZiB5b3UgbXVzdCByZXBsYWNlIHRoZSByZXNvdXJjZSwgc3BlY2lmeSBhIG5ldyBuYW1lLlxuICovXG5UYWJsZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogQSBsaXN0IG9mIGF0dHJpYnV0ZXMgdGhhdCBkZXNjcmliZSB0aGUga2V5IHNjaGVtYSBmb3IgdGhlIHRhYmxlIGFuZCBpbmRleGVzLlxuICogIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgRERCIHRhYmxlLlxuICogIFVwZGF0ZSByZXF1aXJlczogW1NvbWUgaW50ZXJydXB0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvdXNpbmctY2ZuLXVwZGF0aW5nLXN0YWNrcy11cGRhdGUtYmVoYXZpb3JzLmh0bWwjdXBkYXRlLXNvbWUtaW50ZXJydXB0KS4gUmVwbGFjZW1lbnQgaWYgeW91IGVkaXQgYW4gZXhpc3RpbmcgQXR0cmlidXRlRGVmaW5pdGlvbi5cbiAqL1xuQXR0cmlidXRlRGVmaW5pdGlvbnM/OiBBdHRyaWJ1dGVEZWZpbml0aW9uW11cbi8qKlxuICogU3BlY2lmeSBob3cgeW91IGFyZSBjaGFyZ2VkIGZvciByZWFkIGFuZCB3cml0ZSB0aHJvdWdocHV0IGFuZCBob3cgeW91IG1hbmFnZSBjYXBhY2l0eS5cbiAqICBWYWxpZCB2YWx1ZXMgaW5jbHVkZTpcbiAqICAgKyAgIGBgUFJPVklTSU9ORURgYCAtIFdlIHJlY29tbWVuZCB1c2luZyBgYFBST1ZJU0lPTkVEYGAgZm9yIHByZWRpY3RhYmxlIHdvcmtsb2Fkcy4gYGBQUk9WSVNJT05FRGBgIHNldHMgdGhlIGJpbGxpbmcgbW9kZSB0byBbUHJvdmlzaW9uZWQgTW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Ib3dJdFdvcmtzLlJlYWRXcml0ZUNhcGFjaXR5TW9kZS5odG1sI0hvd0l0V29ya3MuUHJvdmlzaW9uZWRUaHJvdWdocHV0Lk1hbnVhbCkuXG4gKiAgICsgICBgYFBBWV9QRVJfUkVRVUVTVGBgIC0gV2UgcmVjb21tZW5kIHVzaW5nIGBgUEFZX1BFUl9SRVFVRVNUYGAgZm9yIHVucHJlZGljdGFibGUgd29ya2xvYWRzLiBgYFBBWV9QRVJfUkVRVUVTVGBgIHNldHMgdGhlIGJpbGxpbmcgbW9kZSB0byBbT24tRGVtYW5kIE1vZGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvSG93SXRXb3Jrcy5SZWFkV3JpdGVDYXBhY2l0eU1vZGUuaHRtbCNIb3dJdFdvcmtzLk9uRGVtYW5kKS5cbiAqICAgXG4gKiAgSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgaXMgYGBQUk9WSVNJT05FRGBgLlxuICovXG5CaWxsaW5nTW9kZT86IHN0cmluZ1xuLyoqXG4gKiBHbG9iYWwgc2Vjb25kYXJ5IGluZGV4ZXMgdG8gYmUgY3JlYXRlZCBvbiB0aGUgdGFibGUuIFlvdSBjYW4gY3JlYXRlIHVwIHRvIDIwIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXhlcy5cbiAqICAgSWYgeW91IHVwZGF0ZSBhIHRhYmxlIHRvIGluY2x1ZGUgYSBuZXcgZ2xvYmFsIHNlY29uZGFyeSBpbmRleCwgQ0ZObG9uZyBpbml0aWF0ZXMgdGhlIGluZGV4IGNyZWF0aW9uIGFuZCB0aGVuIHByb2NlZWRzIHdpdGggdGhlIHN0YWNrIHVwZGF0ZS4gQ0ZObG9uZyBkb2Vzbid0IHdhaXQgZm9yIHRoZSBpbmRleCB0byBjb21wbGV0ZSBjcmVhdGlvbiBiZWNhdXNlIHRoZSBiYWNrZmlsbGluZyBwaGFzZSBjYW4gdGFrZSBhIGxvbmcgdGltZSwgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSB0YWJsZS4gWW91IGNhbid0IHVzZSB0aGUgaW5kZXggb3IgdXBkYXRlIHRoZSB0YWJsZSB1bnRpbCB0aGUgaW5kZXgncyBzdGF0dXMgaXMgYGBBQ1RJVkVgYC4gWW91IGNhbiB0cmFjayBpdHMgc3RhdHVzIGJ5IHVzaW5nIHRoZSBEeW5hbW9EQiBbRGVzY3JpYmVUYWJsZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2NsaS9sYXRlc3QvcmVmZXJlbmNlL2R5bmFtb2RiL2Rlc2NyaWJlLXRhYmxlLmh0bWwpIGNvbW1hbmQuXG4gKiAgSWYgeW91IGFkZCBvciBkZWxldGUgYW4gaW5kZXggZHVyaW5nIGFuIHVwZGF0ZSwgd2UgcmVjb21tZW5kIHRoYXQgeW91IGRvbid0IHVwZGF0ZSBhbnkgb3RoZXIgcmVzb3VyY2VzLiBJZiB5b3VyIHN0YWNrIGZhaWxzIHRvIHVwZGF0ZSBhbmQgaXMgcm9sbGVkIGJhY2sgd2hpbGUgYWRkaW5nIGEgbmV3IGluZGV4LCB5b3UgbXVzdCBtYW51YWxseSBkZWxldGUgdGhlIGluZGV4LiBcbiAqICBVcGRhdGVzIGFyZSBub3Qgc3VwcG9ydGVkLiBUaGUgZm9sbG93aW5nIGFyZSBleGNlcHRpb25zOlxuICogICArICBJZiB5b3UgdXBkYXRlIGVpdGhlciB0aGUgY29udHJpYnV0b3IgaW5zaWdodHMgc3BlY2lmaWNhdGlvbiBvciB0aGUgcHJvdmlzaW9uZWQgdGhyb3VnaHB1dCB2YWx1ZXMgb2YgZ2xvYmFsIHNlY29uZGFyeSBpbmRleGVzLCB5b3UgY2FuIHVwZGF0ZSB0aGUgdGFibGUgd2l0aG91dCBpbnRlcnJ1cHRpb24uXG4gKiAgICsgIFlvdSBjYW4gZGVsZXRlIG9yIGFkZCBvbmUgZ2xvYmFsIHNlY29uZGFyeSBpbmRleCB3aXRob3V0IGludGVycnVwdGlvbi4gSWYgeW91IGRvIGJvdGggaW4gdGhlIHNhbWUgdXBkYXRlIChmb3IgZXhhbXBsZSwgYnkgY2hhbmdpbmcgdGhlIGluZGV4J3MgbG9naWNhbCBJRCksIHRoZSB1cGRhdGUgZmFpbHMuXG4gKi9cbkdsb2JhbFNlY29uZGFyeUluZGV4ZXM/OiBHbG9iYWxTZWNvbmRhcnlJbmRleFtdXG5SZXNvdXJjZVBvbGljeT86IFJlc291cmNlUG9saWN5MVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBtYWtlIHVwIHRoZSBwcmltYXJ5IGtleSBmb3IgdGhlIHRhYmxlLiBUaGUgYXR0cmlidXRlcyBpbiB0aGUgYGBLZXlTY2hlbWFgYCBwcm9wZXJ0eSBtdXN0IGFsc28gYmUgZGVmaW5lZCBpbiB0aGUgYGBBdHRyaWJ1dGVEZWZpbml0aW9uc2BgIHByb3BlcnR5LlxuICovXG5LZXlTY2hlbWE6IChLZXlTY2hlbWFbXSB8IHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59KVxuLyoqXG4gKiBMb2NhbCBzZWNvbmRhcnkgaW5kZXhlcyB0byBiZSBjcmVhdGVkIG9uIHRoZSB0YWJsZS4gWW91IGNhbiBjcmVhdGUgdXAgdG8gNSBsb2NhbCBzZWNvbmRhcnkgaW5kZXhlcy4gRWFjaCBpbmRleCBpcyBzY29wZWQgdG8gYSBnaXZlbiBoYXNoIGtleSB2YWx1ZS4gVGhlIHNpemUgb2YgZWFjaCBoYXNoIGtleSBjYW4gYmUgdXAgdG8gMTAgZ2lnYWJ5dGVzLlxuICovXG5Mb2NhbFNlY29uZGFyeUluZGV4ZXM/OiBMb2NhbFNlY29uZGFyeUluZGV4W11cbkFybj86IHN0cmluZ1xuU3RyZWFtQXJuPzogc3RyaW5nXG4vKipcbiAqIERldGVybWluZXMgaWYgYSB0YWJsZSBpcyBwcm90ZWN0ZWQgZnJvbSBkZWxldGlvbi4gV2hlbiBlbmFibGVkLCB0aGUgdGFibGUgY2Fubm90IGJlIGRlbGV0ZWQgYnkgYW55IHVzZXIgb3IgcHJvY2Vzcy4gVGhpcyBzZXR0aW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIGRlbGV0aW9uIHByb3RlY3Rpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvV29ya2luZ1dpdGhUYWJsZXMuQmFzaWNzLmh0bWwjV29ya2luZ1dpdGhUYWJsZXMuQmFzaWNzLkRlbGV0aW9uUHJvdGVjdGlvbikgaW4gdGhlICpEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5EZWxldGlvblByb3RlY3Rpb25FbmFibGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgdGFibGUgY2xhc3Mgb2YgdGhlIG5ldyB0YWJsZS4gVmFsaWQgdmFsdWVzIGFyZSBgYFNUQU5EQVJEYGAgYW5kIGBgU1RBTkRBUkRfSU5GUkVRVUVOVF9BQ0NFU1NgYC5cbiAqL1xuVGFibGVDbGFzcz86IHN0cmluZ1xuLyoqXG4gKiBBbiBhcnJheSBvZiBrZXktdmFsdWUgcGFpcnMgdG8gYXBwbHkgdG8gdGhpcyByZXNvdXJjZS5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtUYWddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXJlc291cmNlLXRhZ3MuaHRtbCkuXG4gKi9cblRhZ3M/OiBUYWdbXVxuVGltZVRvTGl2ZVNwZWNpZmljYXRpb24/OiBUaW1lVG9MaXZlU3BlY2lmaWNhdGlvblxufVxuLyoqXG4gKiBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByZWFkIGFuZCB3cml0ZSB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCBvbi1kZW1hbmQgdGFibGUuIElmIHlvdSB1c2UgdGhpcyBwcm9wZXJ0eSwgeW91IG11c3Qgc3BlY2lmeSBgYE1heFJlYWRSZXF1ZXN0VW5pdHNgYCwgYGBNYXhXcml0ZVJlcXVlc3RVbml0c2BgLCBvciBib3RoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9uRGVtYW5kVGhyb3VnaHB1dCB7XG4vKipcbiAqIE1heGltdW0gbnVtYmVyIG9mIHJlYWQgcmVxdWVzdCB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqICBUbyBzcGVjaWZ5IGEgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhSZWFkUmVxdWVzdFVuaXRzYGAgYXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEuIFRvIHJlbW92ZSB0aGUgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIHRoYXQgaXMgY3VycmVudGx5IHNldCBvbiB5b3VyIHRhYmxlLCBzZXQgdGhlIHZhbHVlIG9mIGBgTWF4UmVhZFJlcXVlc3RVbml0c2BgIHRvIC0xLlxuICovXG5NYXhSZWFkUmVxdWVzdFVuaXRzPzogbnVtYmVyXG4vKipcbiAqIE1heGltdW0gbnVtYmVyIG9mIHdyaXRlIHJlcXVlc3QgdW5pdHMgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUuXG4gKiAgVG8gc3BlY2lmeSBhIG1heGltdW0gYGBPbkRlbWFuZFRocm91Z2hwdXRgYCBvbiB5b3VyIHRhYmxlLCBzZXQgdGhlIHZhbHVlIG9mIGBgTWF4V3JpdGVSZXF1ZXN0VW5pdHNgYCBhcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4gVG8gcmVtb3ZlIHRoZSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgdGhhdCBpcyBjdXJyZW50bHkgc2V0IG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhXcml0ZVJlcXVlc3RVbml0c2BgIHRvIC0xLlxuICovXG5NYXhXcml0ZVJlcXVlc3RVbml0cz86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHNldHRpbmdzIHRvIGVuYWJsZSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTRVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGlzIGRvbmUgdXNpbmcgYW4gQVdTIG1hbmFnZWQga2V5IG9yIGFuIEFXUyBvd25lZCBrZXkuIElmIGVuYWJsZWQgKHRydWUpLCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHR5cGUgaXMgc2V0IHRvIGBgS01TYGAgYW5kIGFuIEFXUyBtYW5hZ2VkIGtleSBpcyB1c2VkIChLTVMgY2hhcmdlcyBhcHBseSkuIElmIGRpc2FibGVkIChmYWxzZSkgb3Igbm90IHNwZWNpZmllZCwgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiBpcyBzZXQgdG8gQVdTIG93bmVkIGtleS5cbiAqL1xuU1NFRW5hYmxlZDogYm9vbGVhblxuLyoqXG4gKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHR5cGUuIFRoZSBvbmx5IHN1cHBvcnRlZCB2YWx1ZSBpczpcbiAqICAgKyAgIGBgS01TYGAgLSBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHRoYXQgdXNlcyBLTVNsb25nLiBUaGUga2V5IGlzIHN0b3JlZCBpbiB5b3VyIGFjY291bnQgYW5kIGlzIG1hbmFnZWQgYnkgS01TIChLTVMgY2hhcmdlcyBhcHBseSkuXG4gKi9cblNTRVR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEtNUyBrZXkgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIEtNUyBlbmNyeXB0aW9uLiBUbyBzcGVjaWZ5IGEga2V5LCB1c2UgaXRzIGtleSBJRCwgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTiksIGFsaWFzIG5hbWUsIG9yIGFsaWFzIEFSTi4gTm90ZSB0aGF0IHlvdSBzaG91bGQgb25seSBwcm92aWRlIHRoaXMgcGFyYW1ldGVyIGlmIHRoZSBrZXkgaXMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgRHluYW1vREIga2V5IGBgYWxpYXMvYXdzL2R5bmFtb2RiYGAuXG4gKi9cbktNU01hc3RlcktleUlkPzogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVxufVxuLyoqXG4gKiBUaGUgS2luZXNpcyBEYXRhIFN0cmVhbXMgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLaW5lc2lzU3RyZWFtU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBwcmVjaXNpb24gZm9yIHRoZSB0aW1lIGFuZCBkYXRlIHRoYXQgdGhlIHN0cmVhbSB3YXMgY3JlYXRlZC5cbiAqL1xuQXBwcm94aW1hdGVDcmVhdGlvbkRhdGVUaW1lUHJlY2lzaW9uPzogKFwiTUlDUk9TRUNPTkRcIiB8IFwiTUlMTElTRUNPTkRcIilcbi8qKlxuICogVGhlIEFSTiBmb3IgYSBzcGVjaWZpYyBLaW5lc2lzIGRhdGEgc3RyZWFtLlxuICogIExlbmd0aCBDb25zdHJhaW50czogTWluaW11bSBsZW5ndGggb2YgMzcuIE1heGltdW0gbGVuZ3RoIG9mIDEwMjQuXG4gKi9cblN0cmVhbUFybjogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgdGhlIEREQiB0YWJsZSBzdHJlYW0sIHdoaWNoIGNhcHR1cmUgY2hhbmdlcyB0byBpdGVtcyBzdG9yZWQgaW4gdGhlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBXaGVuIGFuIGl0ZW0gaW4gdGhlIHRhYmxlIGlzIG1vZGlmaWVkLCBgYFN0cmVhbVZpZXdUeXBlYGAgZGV0ZXJtaW5lcyB3aGF0IGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbSBmb3IgdGhpcyB0YWJsZS4gVmFsaWQgdmFsdWVzIGZvciBgYFN0cmVhbVZpZXdUeXBlYGAgYXJlOlxuICogICArICAgYGBLRVlTX09OTFlgYCAtIE9ubHkgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIHRoZSBtb2RpZmllZCBpdGVtIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKiAgICsgICBgYE5FV19JTUFHRWBgIC0gVGhlIGVudGlyZSBpdGVtLCBhcyBpdCBhcHBlYXJzIGFmdGVyIGl0IHdhcyBtb2RpZmllZCwgaXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtLlxuICogICArICAgYGBPTERfSU1BR0VgYCAtIFRoZSBlbnRpcmUgaXRlbSwgYXMgaXQgYXBwZWFyZWQgYmVmb3JlIGl0IHdhcyBtb2RpZmllZCwgaXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtLlxuICogICArICAgYGBORVdfQU5EX09MRF9JTUFHRVNgYCAtIEJvdGggdGhlIG5ldyBhbmQgdGhlIG9sZCBpdGVtIGltYWdlcyBvZiB0aGUgaXRlbSBhcmUgd3JpdHRlbiB0byB0aGUgc3RyZWFtLlxuICovXG5TdHJlYW1WaWV3VHlwZTogc3RyaW5nXG5SZXNvdXJjZVBvbGljeT86IFJlc291cmNlUG9saWN5XG59XG4vKipcbiAqIENyZWF0ZXMgb3IgdXBkYXRlcyBhIHJlc291cmNlLWJhc2VkIHBvbGljeSBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIHRoZSBwZXJtaXNzaW9ucyBmb3IgRERCIHJlc291cmNlcywgc3VjaCBhcyBhIHRhYmxlJ3Mgc3RyZWFtcy4gUmVzb3VyY2UtYmFzZWQgcG9saWNpZXMgbGV0IHlvdSBkZWZpbmUgYWNjZXNzIHBlcm1pc3Npb25zIGJ5IHNwZWNpZnlpbmcgd2hvIGhhcyBhY2Nlc3MgdG8gZWFjaCByZXNvdXJjZSwgYW5kIHRoZSBhY3Rpb25zIHRoZXkgYXJlIGFsbG93ZWQgdG8gcGVyZm9ybSBvbiBlYWNoIHJlc291cmNlLlxuICogIEluIGEgQ0ZOc2hvcnQgdGVtcGxhdGUsIHlvdSBjYW4gcHJvdmlkZSB0aGUgcG9saWN5IGluIEpTT04gb3IgWUFNTCBmb3JtYXQgYmVjYXVzZSBDRk5zaG9ydCBjb252ZXJ0cyBZQU1MIHRvIEpTT04gYmVmb3JlIHN1Ym1pdHRpbmcgaXQgdG8gRERCLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZXNvdXJjZS1iYXNlZCBwb2xpY2llcywgc2VlIFtVc2luZyByZXNvdXJjZS1iYXNlZCBwb2xpY2llcyBmb3JdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvYWNjZXNzLWNvbnRyb2wtcmVzb3VyY2UtYmFzZWQuaHRtbCkgYW5kIFtSZXNvdXJjZS1iYXNlZCBwb2xpY3kgZXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmJhYy1leGFtcGxlcy5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVBvbGljeSB7XG4vKipcbiAqIEEgcmVzb3VyY2UtYmFzZWQgcG9saWN5IGRvY3VtZW50IHRoYXQgY29udGFpbnMgcGVybWlzc2lvbnMgdG8gYWRkIHRvIHRoZSBzcGVjaWZpZWQgRERCIHRhYmxlLCBpbmRleCwgb3IgYm90aC4gSW4gYSBDRk5zaG9ydCB0ZW1wbGF0ZSwgeW91IGNhbiBwcm92aWRlIHRoZSBwb2xpY3kgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCBiZWNhdXNlIENGTnNob3J0IGNvbnZlcnRzIFlBTUwgdG8gSlNPTiBiZWZvcmUgc3VibWl0dGluZyBpdCB0byBEREIuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlc291cmNlLWJhc2VkIHBvbGljaWVzLCBzZWUgW1VzaW5nIHJlc291cmNlLWJhc2VkIHBvbGljaWVzIGZvcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hY2Nlc3MtY29udHJvbC1yZXNvdXJjZS1iYXNlZC5odG1sKSBhbmQgW1Jlc291cmNlLWJhc2VkIHBvbGljeSBleGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9yYmFjLWV4YW1wbGVzLmh0bWwpLlxuICovXG5Qb2xpY3lEb2N1bWVudDoge1xuW2s6IHN0cmluZ106IHVua25vd25cbn1cbn1cbi8qKlxuICogVGhlIHNldHRpbmdzIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgQ2xvdWRXYXRjaCBDb250cmlidXRvciBJbnNpZ2h0cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250cmlidXRvckluc2lnaHRzU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIENsb3VkV2F0Y2ggQ29udHJpYnV0b3IgSW5zaWdodHMgYXJlIHRvIGJlIGVuYWJsZWQgKHRydWUpIG9yIGRpc2FibGVkIChmYWxzZSkuXG4gKi9cbkVuYWJsZWQ6IGJvb2xlYW5cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBwcm9wZXJ0aWVzIG9mIGRhdGEgYmVpbmcgaW1wb3J0ZWQgZnJvbSB0aGUgUzMgYnVja2V0IHNvdXJjZSB0byB0aGVcIiB0YWJsZS5cbiAqICAgSWYgeW91IHNwZWNpZnkgdGhlIGBgSW1wb3J0U291cmNlU3BlY2lmaWNhdGlvbmBgIHByb3BlcnR5LCBhbmQgYWxzbyBzcGVjaWZ5IGVpdGhlciB0aGUgYGBTdHJlYW1TcGVjaWZpY2F0aW9uYGAsIHRoZSBgYFRhYmxlQ2xhc3NgYCBwcm9wZXJ0eSwgdGhlIGBgRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZGBgIHByb3BlcnR5LCBvciB0aGUgYGBXYXJtVGhyb3VnaHB1dGBgIHByb3BlcnR5LCB0aGUgSUFNIGVudGl0eSBjcmVhdGluZy91cGRhdGluZyBzdGFjayBtdXN0IGhhdmUgYGBVcGRhdGVUYWJsZWBgIHBlcm1pc3Npb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0U291cmNlU3BlY2lmaWNhdGlvbiB7XG5TM0J1Y2tldFNvdXJjZTogUzNCdWNrZXRTb3VyY2Vcbi8qKlxuICogVGhlIGZvcm1hdCBvZiB0aGUgc291cmNlIGRhdGEuIFZhbGlkIHZhbHVlcyBmb3IgYGBJbXBvcnRGb3JtYXRgYCBhcmUgYGBDU1ZgYCwgYGBEWU5BTU9EQl9KU09OYGAgb3IgYGBJT05gYC5cbiAqL1xuSW5wdXRGb3JtYXQ6IHN0cmluZ1xuSW5wdXRGb3JtYXRPcHRpb25zPzogSW5wdXRGb3JtYXRPcHRpb25zXG4vKipcbiAqIFR5cGUgb2YgY29tcHJlc3Npb24gdG8gYmUgdXNlZCBvbiB0aGUgaW5wdXQgY29taW5nIGZyb20gdGhlIGltcG9ydGVkIHRhYmxlLlxuICovXG5JbnB1dENvbXByZXNzaW9uVHlwZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgUzMgYnVja2V0IHRoYXQgcHJvdmlkZXMgdGhlIHNvdXJjZSBmb3IgdGhlIGltcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0J1Y2tldFNvdXJjZSB7XG4vKipcbiAqIFRoZSBTMyBidWNrZXQgdGhhdCBpcyBiZWluZyBpbXBvcnRlZCBmcm9tLlxuICovXG5TM0J1Y2tldDogc3RyaW5nXG4vKipcbiAqIFRoZSBrZXkgcHJlZml4IHNoYXJlZCBieSBhbGwgUzMgT2JqZWN0cyB0aGF0IGFyZSBiZWluZyBpbXBvcnRlZC5cbiAqL1xuUzNLZXlQcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFjY291bnQgbnVtYmVyIG9mIHRoZSBTMyBidWNrZXQgdGhhdCBpcyBiZWluZyBpbXBvcnRlZCBmcm9tLiBJZiB0aGUgYnVja2V0IGlzIG93bmVkIGJ5IHRoZSByZXF1ZXN0ZXIgdGhpcyBpcyBvcHRpb25hbC5cbiAqL1xuUzNCdWNrZXRPd25lcj86IHN0cmluZ1xufVxuLyoqXG4gKiBBZGRpdGlvbmFsIHByb3BlcnRpZXMgdGhhdCBzcGVjaWZ5IGhvdyB0aGUgaW5wdXQgaXMgZm9ybWF0dGVkLFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0Rm9ybWF0T3B0aW9ucyB7XG5Dc3Y/OiBDc3Zcbn1cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIGltcG9ydGVkIHNvdXJjZSBmaWxlcyBpbiBDU1YgZm9ybWF0LiBUaGUgdmFsdWVzIGFyZSBEZWxpbWl0ZXIgYW5kIEhlYWRlckxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3N2IHtcbi8qKlxuICogVGhlIGRlbGltaXRlciB1c2VkIGZvciBzZXBhcmF0aW5nIGl0ZW1zIGluIHRoZSBDU1YgZmlsZSBiZWluZyBpbXBvcnRlZC5cbiAqL1xuRGVsaW1pdGVyPzogc3RyaW5nXG4vKipcbiAqIExpc3Qgb2YgdGhlIGhlYWRlcnMgdXNlZCB0byBzcGVjaWZ5IGEgY29tbW9uIGhlYWRlciBmb3IgYWxsIHNvdXJjZSBDU1YgZmlsZXMgYmVpbmcgaW1wb3J0ZWQuIElmIHRoaXMgZmllbGQgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGxpbmUgb2YgZWFjaCBDU1YgZmlsZSBpcyB0cmVhdGVkIGFzIGRhdGEgaW5zdGVhZCBvZiB0aGUgaGVhZGVyLiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHRoZSBmaXJzdCBsaW5lIG9mIGVhY2ggQ1NWIGZpbGUgaXMgdHJlYXRlZCBhcyB0aGUgaGVhZGVyLlxuICovXG5IZWFkZXJMaXN0Pzogc3RyaW5nW11cbn1cbi8qKlxuICogVGhlIHNldHRpbmdzIHVzZWQgdG8gZW5hYmxlIHBvaW50IGluIHRpbWUgcmVjb3ZlcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnRJblRpbWVSZWNvdmVyeVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBwb2ludCBpbiB0aW1lIHJlY292ZXJ5IGlzIGVuYWJsZWQgKHRydWUpIG9yIGRpc2FibGVkIChmYWxzZSkgb24gdGhlIHRhYmxlLlxuICovXG5Qb2ludEluVGltZVJlY292ZXJ5RW5hYmxlZD86IGJvb2xlYW5cbi8qKlxuICogVGhlIG51bWJlciBvZiBwcmVjZWRpbmcgZGF5cyBmb3Igd2hpY2ggY29udGludW91cyBiYWNrdXBzIGFyZSB0YWtlbiBhbmQgbWFpbnRhaW5lZC4gWW91ciB0YWJsZSBkYXRhIGlzIG9ubHkgcmVjb3ZlcmFibGUgdG8gYW55IHBvaW50LWluLXRpbWUgZnJvbSB3aXRoaW4gdGhlIGNvbmZpZ3VyZWQgcmVjb3ZlcnkgcGVyaW9kLiBUaGlzIHBhcmFtZXRlciBpcyBvcHRpb25hbC4gSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIHRoZSB2YWx1ZSB3aWxsIGRlZmF1bHQgdG8gMzUuXG4gKi9cblJlY292ZXJ5UGVyaW9kSW5EYXlzPzogbnVtYmVyXG59XG4vKipcbiAqIFRocm91Z2hwdXQgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUsIHdoaWNoIGNvbnNpc3RzIG9mIHZhbHVlcyBmb3IgYGBSZWFkQ2FwYWNpdHlVbml0c2BgIGFuZCBgYFdyaXRlQ2FwYWNpdHlVbml0c2BgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGVudHMgb2YgYSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHN0cnVjdHVyZSwgc2VlIFtBbWF6b24gRHluYW1vREIgVGFibGUgUHJvdmlzaW9uZWRUaHJvdWdocHV0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUHJvdmlzaW9uZWRUaHJvdWdocHV0Lmh0bWwpLiBcbiAqICBJZiB5b3Ugc2V0IGBgQmlsbGluZ01vZGVgYCBhcyBgYFBST1ZJU0lPTkVEYGAsIHlvdSBtdXN0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gSWYgeW91IHNldCBgYEJpbGxpbmdNb2RlYGAgYXMgYGBQQVlfUEVSX1JFUVVFU1RgYCwgeW91IGNhbm5vdCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlzaW9uZWRUaHJvdWdocHV0IHtcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHdyaXRlcyBjb25zdW1lZCBwZXIgc2Vjb25kIGJlZm9yZSBEeW5hbW9EQiByZXR1cm5zIGEgYGBUaHJvdHRsaW5nRXhjZXB0aW9uYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnlpbmcgUmVhZCBhbmQgV3JpdGUgUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1Byb3Zpc2lvbmVkVGhyb3VnaHB1dC5odG1sKSBpbiB0aGUgKkFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUqLlxuICogIElmIHJlYWQvd3JpdGUgY2FwYWNpdHkgbW9kZSBpcyBgYFBBWV9QRVJfUkVRVUVTVGBgIHRoZSB2YWx1ZSBpcyBzZXQgdG8gMC5cbiAqL1xuV3JpdGVDYXBhY2l0eVVuaXRzOiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0cm9uZ2x5IGNvbnNpc3RlbnQgcmVhZHMgY29uc3VtZWQgcGVyIHNlY29uZCBiZWZvcmUgRHluYW1vREIgcmV0dXJucyBhIGBgVGhyb3R0bGluZ0V4Y2VwdGlvbmBgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTcGVjaWZ5aW5nIFJlYWQgYW5kIFdyaXRlIFJlcXVpcmVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Qcm92aXNpb25lZFRocm91Z2hwdXQuaHRtbCkgaW4gdGhlICpBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqICBJZiByZWFkL3dyaXRlIGNhcGFjaXR5IG1vZGUgaXMgYGBQQVlfUEVSX1JFUVVFU1RgYCB0aGUgdmFsdWUgaXMgc2V0IHRvIDAuXG4gKi9cblJlYWRDYXBhY2l0eVVuaXRzOiBudW1iZXJcbn1cbi8qKlxuICogUmVwcmVzZW50cyBhbiBhdHRyaWJ1dGUgZm9yIGRlc2NyaWJpbmcgdGhlIHNjaGVtYSBmb3IgdGhlIHRhYmxlIGFuZCBpbmRleGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZURlZmluaXRpb24ge1xuLyoqXG4gKiBUaGUgZGF0YSB0eXBlIGZvciB0aGUgYXR0cmlidXRlLCB3aGVyZTpcbiAqICAgKyAgIGBgU2BgIC0gdGhlIGF0dHJpYnV0ZSBpcyBvZiB0eXBlIFN0cmluZ1xuICogICArICAgYGBOYGAgLSB0aGUgYXR0cmlidXRlIGlzIG9mIHR5cGUgTnVtYmVyXG4gKiAgICsgICBgYEJgYCAtIHRoZSBhdHRyaWJ1dGUgaXMgb2YgdHlwZSBCaW5hcnlcbiAqL1xuQXR0cmlidXRlVHlwZTogc3RyaW5nXG4vKipcbiAqIEEgbmFtZSBmb3IgdGhlIGF0dHJpYnV0ZS5cbiAqL1xuQXR0cmlidXRlTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHByb3BlcnRpZXMgb2YgYSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbFNlY29uZGFyeUluZGV4IHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIGFtb25nIGFsbCBvdGhlciBpbmRleGVzIG9uIHRoaXMgdGFibGUuXG4gKi9cbkluZGV4TmFtZTogc3RyaW5nXG5PbkRlbWFuZFRocm91Z2hwdXQ/OiBPbkRlbWFuZFRocm91Z2hwdXQxXG5Db250cmlidXRvckluc2lnaHRzU3BlY2lmaWNhdGlvbj86IENvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uMVxuUHJvamVjdGlvbjogUHJvamVjdGlvblxuUHJvdmlzaW9uZWRUaHJvdWdocHV0PzogUHJvdmlzaW9uZWRUaHJvdWdocHV0MVxuLyoqXG4gKiBUaGUgY29tcGxldGUga2V5IHNjaGVtYSBmb3IgYSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LCB3aGljaCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBwYWlycyBvZiBhdHRyaWJ1dGUgbmFtZXMgYW5kIGtleSB0eXBlczpcbiAqICAgKyAgIGBgSEFTSGBgIC0gcGFydGl0aW9uIGtleVxuICogICArICAgYGBSQU5HRWBgIC0gc29ydCBrZXlcbiAqICAgXG4gKiAgIFRoZSBwYXJ0aXRpb24ga2V5IG9mIGFuIGl0ZW0gaXMgYWxzbyBrbm93biBhcyBpdHMgKmhhc2ggYXR0cmlidXRlKi4gVGhlIHRlcm0gXCJoYXNoIGF0dHJpYnV0ZVwiIGRlcml2ZXMgZnJvbSBEeW5hbW9EQidzIHVzYWdlIG9mIGFuIGludGVybmFsIGhhc2ggZnVuY3Rpb24gdG8gZXZlbmx5IGRpc3RyaWJ1dGUgZGF0YSBpdGVtcyBhY3Jvc3MgcGFydGl0aW9ucywgYmFzZWQgb24gdGhlaXIgcGFydGl0aW9uIGtleSB2YWx1ZXMuXG4gKiAgVGhlIHNvcnQga2V5IG9mIGFuIGl0ZW0gaXMgYWxzbyBrbm93biBhcyBpdHMgKnJhbmdlIGF0dHJpYnV0ZSouIFRoZSB0ZXJtIFwicmFuZ2UgYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIHRoZSB3YXkgRHluYW1vREIgc3RvcmVzIGl0ZW1zIHdpdGggdGhlIHNhbWUgcGFydGl0aW9uIGtleSBwaHlzaWNhbGx5IGNsb3NlIHRvZ2V0aGVyLCBpbiBzb3J0ZWQgb3JkZXIgYnkgdGhlIHNvcnQga2V5IHZhbHVlLlxuICovXG5LZXlTY2hlbWE6IEtleVNjaGVtYVtdXG5XYXJtVGhyb3VnaHB1dD86IFdhcm1UaHJvdWdocHV0MVxufVxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVhZCBhbmQgd3JpdGUgdW5pdHMgZm9yIHRoZSBzcGVjaWZpZWQgZ2xvYmFsIHNlY29uZGFyeSBpbmRleC4gSWYgeW91IHVzZSB0aGlzIHBhcmFtZXRlciwgeW91IG11c3Qgc3BlY2lmeSBgYE1heFJlYWRSZXF1ZXN0VW5pdHNgYCwgYGBNYXhXcml0ZVJlcXVlc3RVbml0c2BgLCBvciBib3RoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9uRGVtYW5kVGhyb3VnaHB1dDEge1xuLyoqXG4gKiBNYXhpbXVtIG51bWJlciBvZiByZWFkIHJlcXVlc3QgdW5pdHMgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUuXG4gKiAgVG8gc3BlY2lmeSBhIG1heGltdW0gYGBPbkRlbWFuZFRocm91Z2hwdXRgYCBvbiB5b3VyIHRhYmxlLCBzZXQgdGhlIHZhbHVlIG9mIGBgTWF4UmVhZFJlcXVlc3RVbml0c2BgIGFzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxLiBUbyByZW1vdmUgdGhlIG1heGltdW0gYGBPbkRlbWFuZFRocm91Z2hwdXRgYCB0aGF0IGlzIGN1cnJlbnRseSBzZXQgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFJlYWRSZXF1ZXN0VW5pdHNgYCB0byAtMS5cbiAqL1xuTWF4UmVhZFJlcXVlc3RVbml0cz86IG51bWJlclxuLyoqXG4gKiBNYXhpbXVtIG51bWJlciBvZiB3cml0ZSByZXF1ZXN0IHVuaXRzIGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICogIFRvIHNwZWNpZnkgYSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAgYXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEuIFRvIHJlbW92ZSB0aGUgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIHRoYXQgaXMgY3VycmVudGx5IHNldCBvbiB5b3VyIHRhYmxlLCBzZXQgdGhlIHZhbHVlIG9mIGBgTWF4V3JpdGVSZXF1ZXN0VW5pdHNgYCB0byAtMS5cbiAqL1xuTWF4V3JpdGVSZXF1ZXN0VW5pdHM/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIHNldHRpbmdzIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgQ2xvdWRXYXRjaCBDb250cmlidXRvciBJbnNpZ2h0cyBmb3IgdGhlIHNwZWNpZmllZCBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uMSB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIENsb3VkV2F0Y2ggQ29udHJpYnV0b3IgSW5zaWdodHMgYXJlIHRvIGJlIGVuYWJsZWQgKHRydWUpIG9yIGRpc2FibGVkIChmYWxzZSkuXG4gKi9cbkVuYWJsZWQ6IGJvb2xlYW5cbn1cbi8qKlxuICogUmVwcmVzZW50cyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSB0YWJsZSBpbnRvIHRoZSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LiBUaGVzZSBhcmUgaW4gYWRkaXRpb24gdG8gdGhlIHByaW1hcnkga2V5IGF0dHJpYnV0ZXMgYW5kIGluZGV4IGtleSBhdHRyaWJ1dGVzLCB3aGljaCBhcmUgYXV0b21hdGljYWxseSBwcm9qZWN0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdGlvbiB7XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG5vbi1rZXkgYXR0cmlidXRlIG5hbWVzIHdoaWNoIHdpbGwgYmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LlxuICogIEZvciBsb2NhbCBzZWNvbmRhcnkgaW5kZXhlcywgdGhlIHRvdGFsIGNvdW50IG9mIGBgTm9uS2V5QXR0cmlidXRlc2BgIHN1bW1lZCBhY3Jvc3MgYWxsIG9mIHRoZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXhlcywgbXVzdCBub3QgZXhjZWVkIDEwMC4gSWYgeW91IHByb2plY3QgdGhlIHNhbWUgYXR0cmlidXRlIGludG8gdHdvIGRpZmZlcmVudCBpbmRleGVzLCB0aGlzIGNvdW50cyBhcyB0d28gZGlzdGluY3QgYXR0cmlidXRlcyB3aGVuIGRldGVybWluaW5nIHRoZSB0b3RhbC5cbiAqL1xuTm9uS2V5QXR0cmlidXRlcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0IGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXg6XG4gKiAgICsgICBgYEtFWVNfT05MWWBgIC0gT25seSB0aGUgaW5kZXggYW5kIHByaW1hcnkga2V5cyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LlxuICogICArICAgYGBJTkNMVURFYGAgLSBJbiBhZGRpdGlvbiB0byB0aGUgYXR0cmlidXRlcyBkZXNjcmliZWQgaW4gYGBLRVlTX09OTFlgYCwgdGhlIHNlY29uZGFyeSBpbmRleCB3aWxsIGluY2x1ZGUgb3RoZXIgbm9uLWtleSBhdHRyaWJ1dGVzIHRoYXQgeW91IHNwZWNpZnkuXG4gKiAgICsgICBgYEFMTGBgIC0gQWxsIG9mIHRoZSB0YWJsZSBhdHRyaWJ1dGVzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguXG4gKiAgIFxuICogIFdoZW4gdXNpbmcgdGhlIER5bmFtb0RCIGNvbnNvbGUsIGBgQUxMYGAgaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC5cbiAqL1xuUHJvamVjdGlvblR5cGU/OiBzdHJpbmdcbn1cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcHJvdmlzaW9uZWQgdGhyb3VnaHB1dCBzZXR0aW5ncyBmb3IgdGhlIHNwZWNpZmllZCBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICogIEZvciBjdXJyZW50IG1pbmltdW0gYW5kIG1heGltdW0gcHJvdmlzaW9uZWQgdGhyb3VnaHB1dCB2YWx1ZXMsIHNlZSBbU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3Rhc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlICpBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm92aXNpb25lZFRocm91Z2hwdXQxIHtcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHdyaXRlcyBjb25zdW1lZCBwZXIgc2Vjb25kIGJlZm9yZSBEeW5hbW9EQiByZXR1cm5zIGEgYGBUaHJvdHRsaW5nRXhjZXB0aW9uYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnlpbmcgUmVhZCBhbmQgV3JpdGUgUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1Byb3Zpc2lvbmVkVGhyb3VnaHB1dC5odG1sKSBpbiB0aGUgKkFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUqLlxuICogIElmIHJlYWQvd3JpdGUgY2FwYWNpdHkgbW9kZSBpcyBgYFBBWV9QRVJfUkVRVUVTVGBgIHRoZSB2YWx1ZSBpcyBzZXQgdG8gMC5cbiAqL1xuV3JpdGVDYXBhY2l0eVVuaXRzOiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0cm9uZ2x5IGNvbnNpc3RlbnQgcmVhZHMgY29uc3VtZWQgcGVyIHNlY29uZCBiZWZvcmUgRHluYW1vREIgcmV0dXJucyBhIGBgVGhyb3R0bGluZ0V4Y2VwdGlvbmBgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTcGVjaWZ5aW5nIFJlYWQgYW5kIFdyaXRlIFJlcXVpcmVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Qcm92aXNpb25lZFRocm91Z2hwdXQuaHRtbCkgaW4gdGhlICpBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqICBJZiByZWFkL3dyaXRlIGNhcGFjaXR5IG1vZGUgaXMgYGBQQVlfUEVSX1JFUVVFU1RgYCB0aGUgdmFsdWUgaXMgc2V0IHRvIDAuXG4gKi9cblJlYWRDYXBhY2l0eVVuaXRzOiBudW1iZXJcbn1cbi8qKlxuICogUmVwcmVzZW50cyAqYSBzaW5nbGUgZWxlbWVudCogb2YgYSBrZXkgc2NoZW1hLiBBIGtleSBzY2hlbWEgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgbWFrZSB1cCB0aGUgcHJpbWFyeSBrZXkgb2YgYSB0YWJsZSwgb3IgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIGFuIGluZGV4LlxuICogIEEgYGBLZXlTY2hlbWFFbGVtZW50YGAgcmVwcmVzZW50cyBleGFjdGx5IG9uZSBhdHRyaWJ1dGUgb2YgdGhlIHByaW1hcnkga2V5LiBGb3IgZXhhbXBsZSwgYSBzaW1wbGUgcHJpbWFyeSBrZXkgd291bGQgYmUgcmVwcmVzZW50ZWQgYnkgb25lIGBgS2V5U2NoZW1hRWxlbWVudGBgIChmb3IgdGhlIHBhcnRpdGlvbiBrZXkpLiBBIGNvbXBvc2l0ZSBwcmltYXJ5IGtleSB3b3VsZCByZXF1aXJlIG9uZSBgYEtleVNjaGVtYUVsZW1lbnRgYCBmb3IgdGhlIHBhcnRpdGlvbiBrZXksIGFuZCBhbm90aGVyIGBgS2V5U2NoZW1hRWxlbWVudGBgIGZvciB0aGUgc29ydCBrZXkuXG4gKiAgQSBgYEtleVNjaGVtYUVsZW1lbnRgYCBtdXN0IGJlIGEgc2NhbGFyLCB0b3AtbGV2ZWwgYXR0cmlidXRlIChub3QgYSBuZXN0ZWQgYXR0cmlidXRlKS4gVGhlIGRhdGEgdHlwZSBtdXN0IGJlIG9uZSBvZiBTdHJpbmcsIE51bWJlciwgb3IgQmluYXJ5LiBUaGUgYXR0cmlidXRlIGNhbm5vdCBiZSBuZXN0ZWQgd2l0aGluIGEgTGlzdCBvciBhIE1hcC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlTY2hlbWEge1xuLyoqXG4gKiBUaGUgcm9sZSB0aGF0IHRoaXMga2V5IGF0dHJpYnV0ZSB3aWxsIGFzc3VtZTpcbiAqICAgKyAgIGBgSEFTSGBgIC0gcGFydGl0aW9uIGtleVxuICogICArICAgYGBSQU5HRWBgIC0gc29ydCBrZXlcbiAqICAgXG4gKiAgIFRoZSBwYXJ0aXRpb24ga2V5IG9mIGFuIGl0ZW0gaXMgYWxzbyBrbm93biBhcyBpdHMgKmhhc2ggYXR0cmlidXRlKi4gVGhlIHRlcm0gXCJoYXNoIGF0dHJpYnV0ZVwiIGRlcml2ZXMgZnJvbSBEeW5hbW9EQidzIHVzYWdlIG9mIGFuIGludGVybmFsIGhhc2ggZnVuY3Rpb24gdG8gZXZlbmx5IGRpc3RyaWJ1dGUgZGF0YSBpdGVtcyBhY3Jvc3MgcGFydGl0aW9ucywgYmFzZWQgb24gdGhlaXIgcGFydGl0aW9uIGtleSB2YWx1ZXMuXG4gKiAgVGhlIHNvcnQga2V5IG9mIGFuIGl0ZW0gaXMgYWxzbyBrbm93biBhcyBpdHMgKnJhbmdlIGF0dHJpYnV0ZSouIFRoZSB0ZXJtIFwicmFuZ2UgYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIHRoZSB3YXkgRHluYW1vREIgc3RvcmVzIGl0ZW1zIHdpdGggdGhlIHNhbWUgcGFydGl0aW9uIGtleSBwaHlzaWNhbGx5IGNsb3NlIHRvZ2V0aGVyLCBpbiBzb3J0ZWQgb3JkZXIgYnkgdGhlIHNvcnQga2V5IHZhbHVlLlxuICovXG5LZXlUeXBlOiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgYSBrZXkgYXR0cmlidXRlLlxuICovXG5BdHRyaWJ1dGVOYW1lOiBzdHJpbmdcbn1cbi8qKlxuICogQSByZXNvdXJjZS1iYXNlZCBwb2xpY3kgZG9jdW1lbnQgdGhhdCBjb250YWlucyBwZXJtaXNzaW9ucyB0byBhZGQgdG8gdGhlIHNwZWNpZmllZCB0YWJsZS4gSW4gYSBDRk5zaG9ydCB0ZW1wbGF0ZSwgeW91IGNhbiBwcm92aWRlIHRoZSBwb2xpY3kgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCBiZWNhdXNlIENGTnNob3J0IGNvbnZlcnRzIFlBTUwgdG8gSlNPTiBiZWZvcmUgc3VibWl0dGluZyBpdCB0byBEREIuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlc291cmNlLWJhc2VkIHBvbGljaWVzLCBzZWUgW1VzaW5nIHJlc291cmNlLWJhc2VkIHBvbGljaWVzIGZvcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hY2Nlc3MtY29udHJvbC1yZXNvdXJjZS1iYXNlZC5odG1sKSBhbmQgW1Jlc291cmNlLWJhc2VkIHBvbGljeSBleGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9yYmFjLWV4YW1wbGVzLmh0bWwpLlxuICogIFdoZW4geW91IGF0dGFjaCBhIHJlc291cmNlLWJhc2VkIHBvbGljeSB3aGlsZSBjcmVhdGluZyBhIHRhYmxlLCB0aGUgcG9saWN5IGNyZWF0aW9uIGlzICpzdHJvbmdseSBjb25zaXN0ZW50Ki4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb25zaWRlcmF0aW9ucyB0aGF0IHlvdSBzaG91bGQga2VlcCBpbiBtaW5kIHdoaWxlIGF0dGFjaGluZyBhIHJlc291cmNlLWJhc2VkIHBvbGljeSwgc2VlIFtSZXNvdXJjZS1iYXNlZCBwb2xpY3kgY29uc2lkZXJhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmJhYy1jb25zaWRlcmF0aW9ucy5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVBvbGljeTEge1xuLyoqXG4gKiBBIHJlc291cmNlLWJhc2VkIHBvbGljeSBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIHBlcm1pc3Npb25zIHRvIGFkZCB0byB0aGUgc3BlY2lmaWVkIEREQiB0YWJsZSwgaW5kZXgsIG9yIGJvdGguIEluIGEgQ0ZOc2hvcnQgdGVtcGxhdGUsIHlvdSBjYW4gcHJvdmlkZSB0aGUgcG9saWN5IGluIEpTT04gb3IgWUFNTCBmb3JtYXQgYmVjYXVzZSBDRk5zaG9ydCBjb252ZXJ0cyBZQU1MIHRvIEpTT04gYmVmb3JlIHN1Ym1pdHRpbmcgaXQgdG8gRERCLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZXNvdXJjZS1iYXNlZCBwb2xpY2llcywgc2VlIFtVc2luZyByZXNvdXJjZS1iYXNlZCBwb2xpY2llcyBmb3JdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvYWNjZXNzLWNvbnRyb2wtcmVzb3VyY2UtYmFzZWQuaHRtbCkgYW5kIFtSZXNvdXJjZS1iYXNlZCBwb2xpY3kgZXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmJhYy1leGFtcGxlcy5odG1sKS5cbiAqL1xuUG9saWN5RG9jdW1lbnQ6IHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59XG59XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHByb3BlcnRpZXMgb2YgYSBsb2NhbCBzZWNvbmRhcnkgaW5kZXguIEEgbG9jYWwgc2Vjb25kYXJ5IGluZGV4IGNhbiBvbmx5IGJlIGNyZWF0ZWQgd2hlbiBpdHMgcGFyZW50IHRhYmxlIGlzIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxTZWNvbmRhcnlJbmRleCB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXguIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIGFtb25nIGFsbCBvdGhlciBpbmRleGVzIG9uIHRoaXMgdGFibGUuXG4gKi9cbkluZGV4TmFtZTogc3RyaW5nXG5Qcm9qZWN0aW9uOiBQcm9qZWN0aW9uMVxuLyoqXG4gKiBUaGUgY29tcGxldGUga2V5IHNjaGVtYSBmb3IgdGhlIGxvY2FsIHNlY29uZGFyeSBpbmRleCwgY29uc2lzdGluZyBvZiBvbmUgb3IgbW9yZSBwYWlycyBvZiBhdHRyaWJ1dGUgbmFtZXMgYW5kIGtleSB0eXBlczpcbiAqICAgKyAgIGBgSEFTSGBgIC0gcGFydGl0aW9uIGtleVxuICogICArICAgYGBSQU5HRWBgIC0gc29ydCBrZXlcbiAqICAgXG4gKiAgIFRoZSBwYXJ0aXRpb24ga2V5IG9mIGFuIGl0ZW0gaXMgYWxzbyBrbm93biBhcyBpdHMgKmhhc2ggYXR0cmlidXRlKi4gVGhlIHRlcm0gXCJoYXNoIGF0dHJpYnV0ZVwiIGRlcml2ZXMgZnJvbSBEeW5hbW9EQidzIHVzYWdlIG9mIGFuIGludGVybmFsIGhhc2ggZnVuY3Rpb24gdG8gZXZlbmx5IGRpc3RyaWJ1dGUgZGF0YSBpdGVtcyBhY3Jvc3MgcGFydGl0aW9ucywgYmFzZWQgb24gdGhlaXIgcGFydGl0aW9uIGtleSB2YWx1ZXMuXG4gKiAgVGhlIHNvcnQga2V5IG9mIGFuIGl0ZW0gaXMgYWxzbyBrbm93biBhcyBpdHMgKnJhbmdlIGF0dHJpYnV0ZSouIFRoZSB0ZXJtIFwicmFuZ2UgYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIHRoZSB3YXkgRHluYW1vREIgc3RvcmVzIGl0ZW1zIHdpdGggdGhlIHNhbWUgcGFydGl0aW9uIGtleSBwaHlzaWNhbGx5IGNsb3NlIHRvZ2V0aGVyLCBpbiBzb3J0ZWQgb3JkZXIgYnkgdGhlIHNvcnQga2V5IHZhbHVlLlxuICovXG5LZXlTY2hlbWE6IEtleVNjaGVtYVtdXG59XG4vKipcbiAqIFJlcHJlc2VudHMgYXR0cmlidXRlcyB0aGF0IGFyZSBjb3BpZWQgKHByb2plY3RlZCkgZnJvbSB0aGUgdGFibGUgaW50byB0aGUgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LiBUaGVzZSBhcmUgaW4gYWRkaXRpb24gdG8gdGhlIHByaW1hcnkga2V5IGF0dHJpYnV0ZXMgYW5kIGluZGV4IGtleSBhdHRyaWJ1dGVzLCB3aGljaCBhcmUgYXV0b21hdGljYWxseSBwcm9qZWN0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdGlvbjEge1xuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBub24ta2V5IGF0dHJpYnV0ZSBuYW1lcyB3aGljaCB3aWxsIGJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC5cbiAqICBGb3IgbG9jYWwgc2Vjb25kYXJ5IGluZGV4ZXMsIHRoZSB0b3RhbCBjb3VudCBvZiBgYE5vbktleUF0dHJpYnV0ZXNgYCBzdW1tZWQgYWNyb3NzIGFsbCBvZiB0aGUgbG9jYWwgc2Vjb25kYXJ5IGluZGV4ZXMsIG11c3Qgbm90IGV4Y2VlZCAxMDAuIElmIHlvdSBwcm9qZWN0IHRoZSBzYW1lIGF0dHJpYnV0ZSBpbnRvIHR3byBkaWZmZXJlbnQgaW5kZXhlcywgdGhpcyBjb3VudHMgYXMgdHdvIGRpc3RpbmN0IGF0dHJpYnV0ZXMgd2hlbiBkZXRlcm1pbmluZyB0aGUgdG90YWwuXG4gKi9cbk5vbktleUF0dHJpYnV0ZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgc2V0IG9mIGF0dHJpYnV0ZXMgdGhhdCBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4OlxuICogICArICAgYGBLRVlTX09OTFlgYCAtIE9ubHkgdGhlIGluZGV4IGFuZCBwcmltYXJ5IGtleXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC5cbiAqICAgKyAgIGBgSU5DTFVERWBgIC0gSW4gYWRkaXRpb24gdG8gdGhlIGF0dHJpYnV0ZXMgZGVzY3JpYmVkIGluIGBgS0VZU19PTkxZYGAsIHRoZSBzZWNvbmRhcnkgaW5kZXggd2lsbCBpbmNsdWRlIG90aGVyIG5vbi1rZXkgYXR0cmlidXRlcyB0aGF0IHlvdSBzcGVjaWZ5LlxuICogICArICAgYGBBTExgYCAtIEFsbCBvZiB0aGUgdGFibGUgYXR0cmlidXRlcyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LlxuICogICBcbiAqICBXaGVuIHVzaW5nIHRoZSBEeW5hbW9EQiBjb25zb2xlLCBgYEFMTGBgIGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQuXG4gKi9cblByb2plY3Rpb25UeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIERlc2NyaWJlcyBhIHRhZy4gQSB0YWcgaXMgYSBrZXktdmFsdWUgcGFpci4gWW91IGNhbiBhZGQgdXAgdG8gNTAgdGFncyB0byBhIHNpbmdsZSBEeW5hbW9EQiB0YWJsZS4gXG4gKiAgIEFXUy1hc3NpZ25lZCB0YWcgbmFtZXMgYW5kIHZhbHVlcyBhcmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0aGUgYGBhd3M6YGAgcHJlZml4LCB3aGljaCB0aGUgdXNlciBjYW5ub3QgYXNzaWduLiBBV1MtYXNzaWduZWQgdGFnIG5hbWVzIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSB0YWcgbGltaXQgb2YgNTAuIFVzZXItYXNzaWduZWQgdGFnIG5hbWVzIGhhdmUgdGhlIHByZWZpeCBgYHVzZXI6YGAgaW4gdGhlIENvc3QgQWxsb2NhdGlvbiBSZXBvcnQuIFlvdSBjYW5ub3QgYmFja2RhdGUgdGhlIGFwcGxpY2F0aW9uIG9mIGEgdGFnLlxuICogIEZvciBhbiBvdmVydmlldyBvbiB0YWdnaW5nIER5bmFtb0RCIHJlc291cmNlcywgc2VlIFtUYWdnaW5nIGZvciBEeW5hbW9EQl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9UYWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSB0YWcuIFRhZyB2YWx1ZXMgYXJlIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4gYmUgbnVsbC5cbiAqL1xuVmFsdWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUga2V5IG9mIHRoZSB0YWcuIFRhZyBrZXlzIGFyZSBjYXNlIHNlbnNpdGl2ZS4gRWFjaCBEeW5hbW9EQiB0YWJsZSBjYW4gb25seSBoYXZlIHVwIHRvIG9uZSB0YWcgd2l0aCB0aGUgc2FtZSBrZXkuIElmIHlvdSB0cnkgdG8gYWRkIGFuIGV4aXN0aW5nIHRhZyAoc2FtZSBrZXkpLCB0aGUgZXhpc3RpbmcgdGFnIHZhbHVlIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgbmV3IHZhbHVlLlxuICovXG5LZXk6IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFRpbWUgdG8gTGl2ZSAoVFRMKSBzZXR0aW5ncyBmb3IgdGhlIHRhYmxlLlxuICogICBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpbWl0cyBpbiBEeW5hbW9EQiwgc2VlIFtMaW1pdHMgaW4gQW1hem9uIER5bmFtb0RCXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0xpbWl0cy5odG1sKSBpbiB0aGUgQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaW1lVG9MaXZlU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIFRUTCBpcyB0byBiZSBlbmFibGVkICh0cnVlKSBvciBkaXNhYmxlZCAoZmFsc2UpIG9uIHRoZSB0YWJsZS5cbiAqL1xuRW5hYmxlZDogYm9vbGVhblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgVFRMIGF0dHJpYnV0ZSB1c2VkIHRvIHN0b3JlIHRoZSBleHBpcmF0aW9uIHRpbWUgZm9yIGl0ZW1zIGluIHRoZSB0YWJsZS5cbiAqICAgICsgIFRoZSBgYEF0dHJpYnV0ZU5hbWVgYCBwcm9wZXJ0eSBpcyByZXF1aXJlZCB3aGVuIGVuYWJsaW5nIHRoZSBUVEwsIG9yIHdoZW4gVFRMIGlzIGFscmVhZHkgZW5hYmxlZC5cbiAqICAgKyAgVG8gdXBkYXRlIHRoaXMgcHJvcGVydHksIHlvdSBtdXN0IGZpcnN0IGRpc2FibGUgVFRMIGFuZCB0aGVuIGVuYWJsZSBUVEwgd2l0aCB0aGUgbmV3IGF0dHJpYnV0ZSBuYW1lLlxuICovXG5BdHRyaWJ1dGVOYW1lPzogc3RyaW5nXG59XG4iXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWR5bmFtb2RiLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWR5bmFtb2RiLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcHJlc2VudHMgdGhlIHdhcm0gdGhyb3VnaHB1dCAoaW4gcmVhZCB1bml0cyBwZXIgc2Vjb25kIGFuZCB3cml0ZSB1bml0cyBwZXIgc2Vjb25kKSBmb3IgY3JlYXRpbmcgYSB0YWJsZS5cbiAqL1xuZXhwb3J0IHR5cGUgV2FybVRocm91Z2hwdXQgPSAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiB7XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiByZWFkIG9wZXJhdGlvbnMgeW91ciBiYXNlIHRhYmxlIGNhbiBpbnN0YW50YW5lb3VzbHkgc3VwcG9ydC5cbiAqL1xuUmVhZFVuaXRzUGVyU2Vjb25kPzogbnVtYmVyXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3cml0ZSBvcGVyYXRpb25zIHlvdXIgYmFzZSB0YWJsZSBjYW4gaW5zdGFudGFuZW91c2x5IHN1cHBvcnQuXG4gKi9cbldyaXRlVW5pdHNQZXJTZWNvbmQ/OiBudW1iZXJcbn0pXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHdhcm0gdGhyb3VnaHB1dCB2YWx1ZSAoaW4gcmVhZCB1bml0cyBwZXIgc2Vjb25kIGFuZCB3cml0ZSB1bml0cyBwZXIgc2Vjb25kKSBmb3IgdGhlIHNwZWNpZmllZCBzZWNvbmRhcnkgaW5kZXguIElmIHlvdSB1c2UgdGhpcyBwYXJhbWV0ZXIsIHlvdSBtdXN0IHNwZWNpZnkgYGBSZWFkVW5pdHNQZXJTZWNvbmRgYCwgYGBXcml0ZVVuaXRzUGVyU2Vjb25kYGAsIG9yIGJvdGguXG4gKi9cbmV4cG9ydCB0eXBlIFdhcm1UaHJvdWdocHV0MSA9ICh7XG5bazogc3RyaW5nXTogdW5rbm93blxufSAmIHtcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHJlYWQgb3BlcmF0aW9ucyB5b3VyIGJhc2UgdGFibGUgY2FuIGluc3RhbnRhbmVvdXNseSBzdXBwb3J0LlxuICovXG5SZWFkVW5pdHNQZXJTZWNvbmQ/OiBudW1iZXJcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgeW91ciBiYXNlIHRhYmxlIGNhbiBpbnN0YW50YW5lb3VzbHkgc3VwcG9ydC5cbiAqL1xuV3JpdGVVbml0c1BlclNlY29uZD86IG51bWJlclxufSlcblxuLyoqXG4gKiBUaGUgYGBBV1M6OkR5bmFtb0RCOjpUYWJsZWBgIHJlc291cmNlIGNyZWF0ZXMgYSBEREIgdGFibGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NyZWF0ZVRhYmxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlVGFibGUuaHRtbCkgaW4gdGhlICpBUEkgUmVmZXJlbmNlKi5cbiAqICBZb3Ugc2hvdWxkIGJlIGF3YXJlIG9mIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3JzIHdoZW4gd29ya2luZyB3aXRoIEREQiB0YWJsZXM6XG4gKiAgICsgICBDRk5sb25nIHR5cGljYWxseSBjcmVhdGVzIEREQiB0YWJsZXMgaW4gcGFyYWxsZWwuIEhvd2V2ZXIsIGlmIHlvdXIgdGVtcGxhdGUgaW5jbHVkZXMgbXVsdGlwbGUgRERCIHRhYmxlcyB3aXRoIGluZGV4ZXMsIHlvdSBtdXN0IGRlY2xhcmUgZGVwZW5kZW5jaWVzIHNvIHRoYXQgdGhlIHRhYmxlcyBhcmUgY3JlYXRlZCBzZXF1ZW50aWFsbHkuIEREQmxvbmcgbGltaXRzIHRoZSBudW1iZXIgb2YgdGFibGVzIHdpdGggc2Vjb25kYXJ5IGluZGV4ZXMgdGhhdCBhcmUgaW4gdGhlIGNyZWF0aW5nIHN0YXRlLiBJZiB5b3UgY3JlYXRlIG11bHRpcGxlIHRhYmxlcyB3aXRoIGluZGV4ZXMgYXQgdGhlIHNhbWUgdGltZSwgRERCIHJldHVybnMgYW4gZXJyb3IgYW5kIHRoZSBzdGFjayBvcGVyYXRpb24gZmFpbHMuIEZvciBhbiBleGFtcGxlLCBzZWUgW0R5bmFtb0RCIFRhYmxlIHdpdGggYSBEZXBlbmRzT24gQXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZHluYW1vZGItdGFibGUuaHRtbCNhd3MtcmVzb3VyY2UtZHluYW1vZGItdGFibGUtLWV4YW1wbGVzLS1EeW5hbW9EQl9UYWJsZV93aXRoX2FfRGVwZW5kc09uX0F0dHJpYnV0ZSkuXG4gKiAgIFxuICogICAgT3VyIGd1aWRhbmNlIGlzIHRvIHVzZSB0aGUgbGF0ZXN0IHNjaGVtYSBkb2N1bWVudGVkIGZvciB5b3VyIENGTmxvbmcgdGVtcGxhdGVzLiBUaGlzIHNjaGVtYSBzdXBwb3J0cyB0aGUgcHJvdmlzaW9uaW5nIG9mIGFsbCB0YWJsZSBzZXR0aW5ncyBiZWxvdy4gV2hlbiB1c2luZyB0aGlzIHNjaGVtYSBpbiB5b3VyIENGTmxvbmcgdGVtcGxhdGVzLCBwbGVhc2UgZW5zdXJlIHRoYXQgeW91ciBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgcG9saWNpZXMgYXJlIHVwZGF0ZWQgd2l0aCBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucyB0byBhbGxvdyBmb3IgdGhlIGF1dGhvcml6YXRpb24gb2YgdGhlc2Ugc2V0dGluZyBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfRFlOQU1PREJfVEFCTEUge1xuT25EZW1hbmRUaHJvdWdocHV0PzogT25EZW1hbmRUaHJvdWdocHV0XG5TU0VTcGVjaWZpY2F0aW9uPzogU1NFU3BlY2lmaWNhdGlvblxuS2luZXNpc1N0cmVhbVNwZWNpZmljYXRpb24/OiBLaW5lc2lzU3RyZWFtU3BlY2lmaWNhdGlvblxuU3RyZWFtU3BlY2lmaWNhdGlvbj86IFN0cmVhbVNwZWNpZmljYXRpb25cbkNvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uPzogQ29udHJpYnV0b3JJbnNpZ2h0c1NwZWNpZmljYXRpb25cbkltcG9ydFNvdXJjZVNwZWNpZmljYXRpb24/OiBJbXBvcnRTb3VyY2VTcGVjaWZpY2F0aW9uXG5Qb2ludEluVGltZVJlY292ZXJ5U3BlY2lmaWNhdGlvbj86IFBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uXG5Qcm92aXNpb25lZFRocm91Z2hwdXQ/OiBQcm92aXNpb25lZFRocm91Z2hwdXRcbldhcm1UaHJvdWdocHV0PzogV2FybVRocm91Z2hwdXRcbi8qKlxuICogQSBuYW1lIGZvciB0aGUgdGFibGUuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgbmFtZSwgQ0ZObG9uZyBnZW5lcmF0ZXMgYSB1bmlxdWUgcGh5c2ljYWwgSUQgYW5kIHVzZXMgdGhhdCBJRCBmb3IgdGhlIHRhYmxlIG5hbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW05hbWUgVHlwZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtbmFtZS5odG1sKS5cbiAqICAgSWYgeW91IHNwZWNpZnkgYSBuYW1lLCB5b3UgY2Fubm90IHBlcmZvcm0gdXBkYXRlcyB0aGF0IHJlcXVpcmUgcmVwbGFjZW1lbnQgb2YgdGhpcyByZXNvdXJjZS4gWW91IGNhbiBwZXJmb3JtIHVwZGF0ZXMgdGhhdCByZXF1aXJlIG5vIG9yIHNvbWUgaW50ZXJydXB0aW9uLiBJZiB5b3UgbXVzdCByZXBsYWNlIHRoZSByZXNvdXJjZSwgc3BlY2lmeSBhIG5ldyBuYW1lLlxuICovXG5UYWJsZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogQSBsaXN0IG9mIGF0dHJpYnV0ZXMgdGhhdCBkZXNjcmliZSB0aGUga2V5IHNjaGVtYSBmb3IgdGhlIHRhYmxlIGFuZCBpbmRleGVzLlxuICogIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgRERCIHRhYmxlLlxuICogIFVwZGF0ZSByZXF1aXJlczogW1NvbWUgaW50ZXJydXB0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvdXNpbmctY2ZuLXVwZGF0aW5nLXN0YWNrcy11cGRhdGUtYmVoYXZpb3JzLmh0bWwjdXBkYXRlLXNvbWUtaW50ZXJydXB0KS4gUmVwbGFjZW1lbnQgaWYgeW91IGVkaXQgYW4gZXhpc3RpbmcgQXR0cmlidXRlRGVmaW5pdGlvbi5cbiAqL1xuQXR0cmlidXRlRGVmaW5pdGlvbnM/OiBBdHRyaWJ1dGVEZWZpbml0aW9uW11cbi8qKlxuICogU3BlY2lmeSBob3cgeW91IGFyZSBjaGFyZ2VkIGZvciByZWFkIGFuZCB3cml0ZSB0aHJvdWdocHV0IGFuZCBob3cgeW91IG1hbmFnZSBjYXBhY2l0eS5cbiAqICBWYWxpZCB2YWx1ZXMgaW5jbHVkZTpcbiAqICAgKyAgIGBgUEFZX1BFUl9SRVFVRVNUYGAgLSBXZSByZWNvbW1lbmQgdXNpbmcgYGBQQVlfUEVSX1JFUVVFU1RgYCBmb3IgbW9zdCBEeW5hbW9EQiB3b3JrbG9hZHMuIGBgUEFZX1BFUl9SRVFVRVNUYGAgc2V0cyB0aGUgYmlsbGluZyBtb2RlIHRvIFtPbi1kZW1hbmQgY2FwYWNpdHkgbW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9vbi1kZW1hbmQtY2FwYWNpdHktbW9kZS5odG1sKS4gXG4gKiAgICsgICBgYFBST1ZJU0lPTkVEYGAgLSBXZSByZWNvbW1lbmQgdXNpbmcgYGBQUk9WSVNJT05FRGBgIGZvciBzdGVhZHkgd29ya2xvYWRzIHdpdGggcHJlZGljdGFibGUgZ3Jvd3RoIHdoZXJlIGNhcGFjaXR5IHJlcXVpcmVtZW50cyBjYW4gYmUgcmVsaWFibHkgZm9yZWNhc3RlZC4gYGBQUk9WSVNJT05FRGBgIHNldHMgdGhlIGJpbGxpbmcgbW9kZSB0byBbUHJvdmlzaW9uZWQgY2FwYWNpdHkgbW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9wcm92aXNpb25lZC1jYXBhY2l0eS1tb2RlLmh0bWwpLlxuICogICBcbiAqICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyBgYFBST1ZJU0lPTkVEYGAuXG4gKi9cbkJpbGxpbmdNb2RlPzogc3RyaW5nXG4vKipcbiAqIEdsb2JhbCBzZWNvbmRhcnkgaW5kZXhlcyB0byBiZSBjcmVhdGVkIG9uIHRoZSB0YWJsZS4gWW91IGNhbiBjcmVhdGUgdXAgdG8gMjAgZ2xvYmFsIHNlY29uZGFyeSBpbmRleGVzLlxuICogICBJZiB5b3UgdXBkYXRlIGEgdGFibGUgdG8gaW5jbHVkZSBhIG5ldyBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LCBDRk5sb25nIGluaXRpYXRlcyB0aGUgaW5kZXggY3JlYXRpb24gYW5kIHRoZW4gcHJvY2VlZHMgd2l0aCB0aGUgc3RhY2sgdXBkYXRlLiBDRk5sb25nIGRvZXNuJ3Qgd2FpdCBmb3IgdGhlIGluZGV4IHRvIGNvbXBsZXRlIGNyZWF0aW9uIGJlY2F1c2UgdGhlIGJhY2tmaWxsaW5nIHBoYXNlIGNhbiB0YWtlIGEgbG9uZyB0aW1lLCBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgdGhlIHRhYmxlLiBZb3UgY2FuJ3QgdXNlIHRoZSBpbmRleCBvciB1cGRhdGUgdGhlIHRhYmxlIHVudGlsIHRoZSBpbmRleCdzIHN0YXR1cyBpcyBgYEFDVElWRWBgLiBZb3UgY2FuIHRyYWNrIGl0cyBzdGF0dXMgYnkgdXNpbmcgdGhlIER5bmFtb0RCIFtEZXNjcmliZVRhYmxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC9yZWZlcmVuY2UvZHluYW1vZGIvZGVzY3JpYmUtdGFibGUuaHRtbCkgY29tbWFuZC5cbiAqICBJZiB5b3UgYWRkIG9yIGRlbGV0ZSBhbiBpbmRleCBkdXJpbmcgYW4gdXBkYXRlLCB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgZG9uJ3QgdXBkYXRlIGFueSBvdGhlciByZXNvdXJjZXMuIElmIHlvdXIgc3RhY2sgZmFpbHMgdG8gdXBkYXRlIGFuZCBpcyByb2xsZWQgYmFjayB3aGlsZSBhZGRpbmcgYSBuZXcgaW5kZXgsIHlvdSBtdXN0IG1hbnVhbGx5IGRlbGV0ZSB0aGUgaW5kZXguIFxuICogIFVwZGF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFRoZSBmb2xsb3dpbmcgYXJlIGV4Y2VwdGlvbnM6XG4gKiAgICsgIElmIHlvdSB1cGRhdGUgZWl0aGVyIHRoZSBjb250cmlidXRvciBpbnNpZ2h0cyBzcGVjaWZpY2F0aW9uIG9yIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHZhbHVlcyBvZiBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4ZXMsIHlvdSBjYW4gdXBkYXRlIHRoZSB0YWJsZSB3aXRob3V0IGludGVycnVwdGlvbi5cbiAqICAgKyAgWW91IGNhbiBkZWxldGUgb3IgYWRkIG9uZSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4IHdpdGhvdXQgaW50ZXJydXB0aW9uLiBJZiB5b3UgZG8gYm90aCBpbiB0aGUgc2FtZSB1cGRhdGUgKGZvciBleGFtcGxlLCBieSBjaGFuZ2luZyB0aGUgaW5kZXgncyBsb2dpY2FsIElEKSwgdGhlIHVwZGF0ZSBmYWlscy5cbiAqL1xuR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcz86IEdsb2JhbFNlY29uZGFyeUluZGV4W11cblJlc291cmNlUG9saWN5PzogUmVzb3VyY2VQb2xpY3kxXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0aGF0IG1ha2UgdXAgdGhlIHByaW1hcnkga2V5IGZvciB0aGUgdGFibGUuIFRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgYEtleVNjaGVtYWBgIHByb3BlcnR5IG11c3QgYWxzbyBiZSBkZWZpbmVkIGluIHRoZSBgYEF0dHJpYnV0ZURlZmluaXRpb25zYGAgcHJvcGVydHkuXG4gKi9cbktleVNjaGVtYTogKEtleVNjaGVtYVtdIHwge1xuW2s6IHN0cmluZ106IHVua25vd25cbn0pXG4vKipcbiAqIExvY2FsIHNlY29uZGFyeSBpbmRleGVzIHRvIGJlIGNyZWF0ZWQgb24gdGhlIHRhYmxlLiBZb3UgY2FuIGNyZWF0ZSB1cCB0byA1IGxvY2FsIHNlY29uZGFyeSBpbmRleGVzLiBFYWNoIGluZGV4IGlzIHNjb3BlZCB0byBhIGdpdmVuIGhhc2gga2V5IHZhbHVlLiBUaGUgc2l6ZSBvZiBlYWNoIGhhc2gga2V5IGNhbiBiZSB1cCB0byAxMCBnaWdhYnl0ZXMuXG4gKi9cbkxvY2FsU2Vjb25kYXJ5SW5kZXhlcz86IExvY2FsU2Vjb25kYXJ5SW5kZXhbXVxuQXJuPzogc3RyaW5nXG5TdHJlYW1Bcm4/OiBzdHJpbmdcbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIHRhYmxlIGlzIHByb3RlY3RlZCBmcm9tIGRlbGV0aW9uLiBXaGVuIGVuYWJsZWQsIHRoZSB0YWJsZSBjYW5ub3QgYmUgZGVsZXRlZCBieSBhbnkgdXNlciBvciBwcm9jZXNzLiBUaGlzIHNldHRpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNpbmcgZGVsZXRpb24gcHJvdGVjdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Xb3JraW5nV2l0aFRhYmxlcy5CYXNpY3MuaHRtbCNXb3JraW5nV2l0aFRhYmxlcy5CYXNpY3MuRGVsZXRpb25Qcm90ZWN0aW9uKSBpbiB0aGUgKkRldmVsb3BlciBHdWlkZSouXG4gKi9cbkRlbGV0aW9uUHJvdGVjdGlvbkVuYWJsZWQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSB0YWJsZSBjbGFzcyBvZiB0aGUgbmV3IHRhYmxlLiBWYWxpZCB2YWx1ZXMgYXJlIGBgU1RBTkRBUkRgYCBhbmQgYGBTVEFOREFSRF9JTkZSRVFVRU5UX0FDQ0VTU2BgLlxuICovXG5UYWJsZUNsYXNzPzogc3RyaW5nXG4vKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBhcHBseSB0byB0aGlzIHJlc291cmNlLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1RhZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtcmVzb3VyY2UtdGFncy5odG1sKS5cbiAqL1xuVGFncz86IFRhZ1tdXG5UaW1lVG9MaXZlU3BlY2lmaWNhdGlvbj86IFRpbWVUb0xpdmVTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlYWQgYW5kIHdyaXRlIHVuaXRzIGZvciB0aGUgc3BlY2lmaWVkIG9uLWRlbWFuZCB0YWJsZS4gSWYgeW91IHVzZSB0aGlzIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IGBgTWF4UmVhZFJlcXVlc3RVbml0c2BgLCBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAsIG9yIGJvdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT25EZW1hbmRUaHJvdWdocHV0IHtcbi8qKlxuICogTWF4aW11bSBudW1iZXIgb2YgcmVhZCByZXF1ZXN0IHVuaXRzIGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICogIFRvIHNwZWNpZnkgYSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFJlYWRSZXF1ZXN0VW5pdHNgYCBhcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4gVG8gcmVtb3ZlIHRoZSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgdGhhdCBpcyBjdXJyZW50bHkgc2V0IG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhSZWFkUmVxdWVzdFVuaXRzYGAgdG8gLTEuXG4gKi9cbk1heFJlYWRSZXF1ZXN0VW5pdHM/OiBudW1iZXJcbi8qKlxuICogTWF4aW11bSBudW1iZXIgb2Ygd3JpdGUgcmVxdWVzdCB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqICBUbyBzcGVjaWZ5IGEgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhXcml0ZVJlcXVlc3RVbml0c2BgIGFzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxLiBUbyByZW1vdmUgdGhlIG1heGltdW0gYGBPbkRlbWFuZFRocm91Z2hwdXRgYCB0aGF0IGlzIGN1cnJlbnRseSBzZXQgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAgdG8gLTEuXG4gKi9cbk1heFdyaXRlUmVxdWVzdFVuaXRzPzogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgc2V0dGluZ3MgdG8gZW5hYmxlIHNlcnZlci1zaWRlIGVuY3J5cHRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU1NFU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gaXMgZG9uZSB1c2luZyBhbiBBV1MgbWFuYWdlZCBrZXkgb3IgYW4gQVdTIG93bmVkIGtleS4gSWYgZW5hYmxlZCAodHJ1ZSksIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdHlwZSBpcyBzZXQgdG8gYGBLTVNgYCBhbmQgYW4gQVdTIG1hbmFnZWQga2V5IGlzIHVzZWQgKEtNUyBjaGFyZ2VzIGFwcGx5KS4gSWYgZGlzYWJsZWQgKGZhbHNlKSBvciBub3Qgc3BlY2lmaWVkLCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGlzIHNldCB0byBBV1Mgb3duZWQga2V5LlxuICovXG5TU0VFbmFibGVkOiBib29sZWFuXG4vKipcbiAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gdHlwZS4gVGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlIGlzOlxuICogICArICAgYGBLTVNgYCAtIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gdGhhdCB1c2VzIEtNU2xvbmcuIFRoZSBrZXkgaXMgc3RvcmVkIGluIHlvdXIgYWNjb3VudCBhbmQgaXMgbWFuYWdlZCBieSBLTVMgKEtNUyBjaGFyZ2VzIGFwcGx5KS5cbiAqL1xuU1NFVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgS01TIGtleSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgS01TIGVuY3J5cHRpb24uIFRvIHNwZWNpZnkgYSBrZXksIHVzZSBpdHMga2V5IElELCBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSwgYWxpYXMgbmFtZSwgb3IgYWxpYXMgQVJOLiBOb3RlIHRoYXQgeW91IHNob3VsZCBvbmx5IHByb3ZpZGUgdGhpcyBwYXJhbWV0ZXIgaWYgdGhlIGtleSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCBEeW5hbW9EQiBrZXkgYGBhbGlhcy9hd3MvZHluYW1vZGJgYC5cbiAqL1xuS01TTWFzdGVyS2V5SWQ/OiAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiBzdHJpbmcpXG59XG4vKipcbiAqIFRoZSBLaW5lc2lzIERhdGEgU3RyZWFtcyBjb25maWd1cmF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtpbmVzaXNTdHJlYW1TcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIHByZWNpc2lvbiBmb3IgdGhlIHRpbWUgYW5kIGRhdGUgdGhhdCB0aGUgc3RyZWFtIHdhcyBjcmVhdGVkLlxuICovXG5BcHByb3hpbWF0ZUNyZWF0aW9uRGF0ZVRpbWVQcmVjaXNpb24/OiAoXCJNSUNST1NFQ09ORFwiIHwgXCJNSUxMSVNFQ09ORFwiKVxuLyoqXG4gKiBUaGUgQVJOIGZvciBhIHNwZWNpZmljIEtpbmVzaXMgZGF0YSBzdHJlYW0uXG4gKiAgTGVuZ3RoIENvbnN0cmFpbnRzOiBNaW5pbXVtIGxlbmd0aCBvZiAzNy4gTWF4aW11bSBsZW5ndGggb2YgMTAyNC5cbiAqL1xuU3RyZWFtQXJuOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIHNldHRpbmdzIGZvciB0aGUgRERCIHRhYmxlIHN0cmVhbSwgd2hpY2ggY2FwdHVyZSBjaGFuZ2VzIHRvIGl0ZW1zIHN0b3JlZCBpbiB0aGUgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFdoZW4gYW4gaXRlbSBpbiB0aGUgdGFibGUgaXMgbW9kaWZpZWQsIGBgU3RyZWFtVmlld1R5cGVgYCBkZXRlcm1pbmVzIHdoYXQgaW5mb3JtYXRpb24gaXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtIGZvciB0aGlzIHRhYmxlLiBWYWxpZCB2YWx1ZXMgZm9yIGBgU3RyZWFtVmlld1R5cGVgYCBhcmU6XG4gKiAgICsgICBgYEtFWVNfT05MWWBgIC0gT25seSB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgdGhlIG1vZGlmaWVkIGl0ZW0gYXJlIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS5cbiAqICAgKyAgIGBgTkVXX0lNQUdFYGAgLSBUaGUgZW50aXJlIGl0ZW0sIGFzIGl0IGFwcGVhcnMgYWZ0ZXIgaXQgd2FzIG1vZGlmaWVkLCBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKiAgICsgICBgYE9MRF9JTUFHRWBgIC0gVGhlIGVudGlyZSBpdGVtLCBhcyBpdCBhcHBlYXJlZCBiZWZvcmUgaXQgd2FzIG1vZGlmaWVkLCBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKiAgICsgICBgYE5FV19BTkRfT0xEX0lNQUdFU2BgIC0gQm90aCB0aGUgbmV3IGFuZCB0aGUgb2xkIGl0ZW0gaW1hZ2VzIG9mIHRoZSBpdGVtIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKi9cblN0cmVhbVZpZXdUeXBlOiBzdHJpbmdcblJlc291cmNlUG9saWN5PzogUmVzb3VyY2VQb2xpY3lcbn1cbi8qKlxuICogQ3JlYXRlcyBvciB1cGRhdGVzIGEgcmVzb3VyY2UtYmFzZWQgcG9saWN5IGRvY3VtZW50IHRoYXQgY29udGFpbnMgdGhlIHBlcm1pc3Npb25zIGZvciBEREIgcmVzb3VyY2VzLCBzdWNoIGFzIGEgdGFibGUncyBzdHJlYW1zLiBSZXNvdXJjZS1iYXNlZCBwb2xpY2llcyBsZXQgeW91IGRlZmluZSBhY2Nlc3MgcGVybWlzc2lvbnMgYnkgc3BlY2lmeWluZyB3aG8gaGFzIGFjY2VzcyB0byBlYWNoIHJlc291cmNlLCBhbmQgdGhlIGFjdGlvbnMgdGhleSBhcmUgYWxsb3dlZCB0byBwZXJmb3JtIG9uIGVhY2ggcmVzb3VyY2UuXG4gKiAgSW4gYSBDRk5zaG9ydCB0ZW1wbGF0ZSwgeW91IGNhbiBwcm92aWRlIHRoZSBwb2xpY3kgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCBiZWNhdXNlIENGTnNob3J0IGNvbnZlcnRzIFlBTUwgdG8gSlNPTiBiZWZvcmUgc3VibWl0dGluZyBpdCB0byBEREIuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlc291cmNlLWJhc2VkIHBvbGljaWVzLCBzZWUgW1VzaW5nIHJlc291cmNlLWJhc2VkIHBvbGljaWVzIGZvcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hY2Nlc3MtY29udHJvbC1yZXNvdXJjZS1iYXNlZC5odG1sKSBhbmQgW1Jlc291cmNlLWJhc2VkIHBvbGljeSBleGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9yYmFjLWV4YW1wbGVzLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUG9saWN5IHtcbi8qKlxuICogQSByZXNvdXJjZS1iYXNlZCBwb2xpY3kgZG9jdW1lbnQgdGhhdCBjb250YWlucyBwZXJtaXNzaW9ucyB0byBhZGQgdG8gdGhlIHNwZWNpZmllZCBEREIgdGFibGUsIGluZGV4LCBvciBib3RoLiBJbiBhIENGTnNob3J0IHRlbXBsYXRlLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHBvbGljeSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0IGJlY2F1c2UgQ0ZOc2hvcnQgY29udmVydHMgWUFNTCB0byBKU09OIGJlZm9yZSBzdWJtaXR0aW5nIGl0IHRvIEREQi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMsIHNlZSBbVXNpbmcgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMgZm9yXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FjY2Vzcy1jb250cm9sLXJlc291cmNlLWJhc2VkLmh0bWwpIGFuZCBbUmVzb3VyY2UtYmFzZWQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3JiYWMtZXhhbXBsZXMuaHRtbCkuXG4gKi9cblBvbGljeURvY3VtZW50OiB7XG5bazogc3RyaW5nXTogdW5rbm93blxufVxufVxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgdXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSBDbG91ZFdhdGNoIENvbnRyaWJ1dG9yIEluc2lnaHRzIGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQ2xvdWRXYXRjaCBDb250cmlidXRvciBJbnNpZ2h0cyBhcmUgdG8gYmUgZW5hYmxlZCAodHJ1ZSkgb3IgZGlzYWJsZWQgKGZhbHNlKS5cbiAqL1xuRW5hYmxlZDogYm9vbGVhblxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHByb3BlcnRpZXMgb2YgZGF0YSBiZWluZyBpbXBvcnRlZCBmcm9tIHRoZSBTMyBidWNrZXQgc291cmNlIHRvIHRoZVwiIHRhYmxlLlxuICogICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBJbXBvcnRTb3VyY2VTcGVjaWZpY2F0aW9uYGAgcHJvcGVydHksIGFuZCBhbHNvIHNwZWNpZnkgZWl0aGVyIHRoZSBgYFN0cmVhbVNwZWNpZmljYXRpb25gYCwgdGhlIGBgVGFibGVDbGFzc2BgIHByb3BlcnR5LCB0aGUgYGBEZWxldGlvblByb3RlY3Rpb25FbmFibGVkYGAgcHJvcGVydHksIG9yIHRoZSBgYFdhcm1UaHJvdWdocHV0YGAgcHJvcGVydHksIHRoZSBJQU0gZW50aXR5IGNyZWF0aW5nL3VwZGF0aW5nIHN0YWNrIG11c3QgaGF2ZSBgYFVwZGF0ZVRhYmxlYGAgcGVybWlzc2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRTb3VyY2VTcGVjaWZpY2F0aW9uIHtcblMzQnVja2V0U291cmNlOiBTM0J1Y2tldFNvdXJjZVxuLyoqXG4gKiBUaGUgZm9ybWF0IG9mIHRoZSBzb3VyY2UgZGF0YS4gVmFsaWQgdmFsdWVzIGZvciBgYEltcG9ydEZvcm1hdGBgIGFyZSBgYENTVmBgLCBgYERZTkFNT0RCX0pTT05gYCBvciBgYElPTmBgLlxuICovXG5JbnB1dEZvcm1hdDogc3RyaW5nXG5JbnB1dEZvcm1hdE9wdGlvbnM/OiBJbnB1dEZvcm1hdE9wdGlvbnNcbi8qKlxuICogVHlwZSBvZiBjb21wcmVzc2lvbiB0byBiZSB1c2VkIG9uIHRoZSBpbnB1dCBjb21pbmcgZnJvbSB0aGUgaW1wb3J0ZWQgdGFibGUuXG4gKi9cbklucHV0Q29tcHJlc3Npb25UeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBTMyBidWNrZXQgdGhhdCBwcm92aWRlcyB0aGUgc291cmNlIGZvciB0aGUgaW1wb3J0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzQnVja2V0U291cmNlIHtcbi8qKlxuICogVGhlIFMzIGJ1Y2tldCB0aGF0IGlzIGJlaW5nIGltcG9ydGVkIGZyb20uXG4gKi9cblMzQnVja2V0OiBzdHJpbmdcbi8qKlxuICogVGhlIGtleSBwcmVmaXggc2hhcmVkIGJ5IGFsbCBTMyBPYmplY3RzIHRoYXQgYXJlIGJlaW5nIGltcG9ydGVkLlxuICovXG5TM0tleVByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYWNjb3VudCBudW1iZXIgb2YgdGhlIFMzIGJ1Y2tldCB0aGF0IGlzIGJlaW5nIGltcG9ydGVkIGZyb20uIElmIHRoZSBidWNrZXQgaXMgb3duZWQgYnkgdGhlIHJlcXVlc3RlciB0aGlzIGlzIG9wdGlvbmFsLlxuICovXG5TM0J1Y2tldE93bmVyPzogc3RyaW5nXG59XG4vKipcbiAqIEFkZGl0aW9uYWwgcHJvcGVydGllcyB0aGF0IHNwZWNpZnkgaG93IHRoZSBpbnB1dCBpcyBmb3JtYXR0ZWQsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRGb3JtYXRPcHRpb25zIHtcbkNzdj86IENzdlxufVxuLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3IgaW1wb3J0ZWQgc291cmNlIGZpbGVzIGluIENTViBmb3JtYXQuIFRoZSB2YWx1ZXMgYXJlIERlbGltaXRlciBhbmQgSGVhZGVyTGlzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDc3Yge1xuLyoqXG4gKiBUaGUgZGVsaW1pdGVyIHVzZWQgZm9yIHNlcGFyYXRpbmcgaXRlbXMgaW4gdGhlIENTViBmaWxlIGJlaW5nIGltcG9ydGVkLlxuICovXG5EZWxpbWl0ZXI/OiBzdHJpbmdcbi8qKlxuICogTGlzdCBvZiB0aGUgaGVhZGVycyB1c2VkIHRvIHNwZWNpZnkgYSBjb21tb24gaGVhZGVyIGZvciBhbGwgc291cmNlIENTViBmaWxlcyBiZWluZyBpbXBvcnRlZC4gSWYgdGhpcyBmaWVsZCBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgbGluZSBvZiBlYWNoIENTViBmaWxlIGlzIHRyZWF0ZWQgYXMgZGF0YSBpbnN0ZWFkIG9mIHRoZSBoZWFkZXIuIElmIHRoaXMgZmllbGQgaXMgbm90IHNwZWNpZmllZCB0aGUgdGhlIGZpcnN0IGxpbmUgb2YgZWFjaCBDU1YgZmlsZSBpcyB0cmVhdGVkIGFzIHRoZSBoZWFkZXIuXG4gKi9cbkhlYWRlckxpc3Q/OiBzdHJpbmdbXVxufVxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgdXNlZCB0byBlbmFibGUgcG9pbnQgaW4gdGltZSByZWNvdmVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb2ludEluVGltZVJlY292ZXJ5U3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHBvaW50IGluIHRpbWUgcmVjb3ZlcnkgaXMgZW5hYmxlZCAodHJ1ZSkgb3IgZGlzYWJsZWQgKGZhbHNlKSBvbiB0aGUgdGFibGUuXG4gKi9cblBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHByZWNlZGluZyBkYXlzIGZvciB3aGljaCBjb250aW51b3VzIGJhY2t1cHMgYXJlIHRha2VuIGFuZCBtYWludGFpbmVkLiBZb3VyIHRhYmxlIGRhdGEgaXMgb25seSByZWNvdmVyYWJsZSB0byBhbnkgcG9pbnQtaW4tdGltZSBmcm9tIHdpdGhpbiB0aGUgY29uZmlndXJlZCByZWNvdmVyeSBwZXJpb2QuIFRoaXMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgdGhlIHZhbHVlIHdpbGwgZGVmYXVsdCB0byAzNS5cbiAqL1xuUmVjb3ZlcnlQZXJpb2RJbkRheXM/OiBudW1iZXJcbn1cbi8qKlxuICogVGhyb3VnaHB1dCBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZSwgd2hpY2ggY29uc2lzdHMgb2YgdmFsdWVzIGZvciBgYFJlYWRDYXBhY2l0eVVuaXRzYGAgYW5kIGBgV3JpdGVDYXBhY2l0eVVuaXRzYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZW50cyBvZiBhIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgc3RydWN0dXJlLCBzZWUgW0FtYXpvbiBEeW5hbW9EQiBUYWJsZSBQcm92aXNpb25lZFRocm91Z2hwdXRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9Qcm92aXNpb25lZFRocm91Z2hwdXQuaHRtbCkuIFxuICogIElmIHlvdSBzZXQgYGBCaWxsaW5nTW9kZWBgIGFzIGBgUFJPVklTSU9ORURgYCwgeW91IG11c3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBJZiB5b3Ugc2V0IGBgQmlsbGluZ01vZGVgYCBhcyBgYFBBWV9QRVJfUkVRVUVTVGBgLCB5b3UgY2Fubm90IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm92aXNpb25lZFRocm91Z2hwdXQge1xuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygd3JpdGVzIGNvbnN1bWVkIHBlciBzZWNvbmQgYmVmb3JlIER5bmFtb0RCIHJldHVybnMgYSBgYFRocm90dGxpbmdFeGNlcHRpb25gYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3BlY2lmeWluZyBSZWFkIGFuZCBXcml0ZSBSZXF1aXJlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvUHJvdmlzaW9uZWRUaHJvdWdocHV0Lmh0bWwpIGluIHRoZSAqQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZSouXG4gKiAgSWYgcmVhZC93cml0ZSBjYXBhY2l0eSBtb2RlIGlzIGBgUEFZX1BFUl9SRVFVRVNUYGAgdGhlIHZhbHVlIGlzIHNldCB0byAwLlxuICovXG5Xcml0ZUNhcGFjaXR5VW5pdHM6IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3Ryb25nbHkgY29uc2lzdGVudCByZWFkcyBjb25zdW1lZCBwZXIgc2Vjb25kIGJlZm9yZSBEeW5hbW9EQiByZXR1cm5zIGEgYGBUaHJvdHRsaW5nRXhjZXB0aW9uYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnlpbmcgUmVhZCBhbmQgV3JpdGUgUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1Byb3Zpc2lvbmVkVGhyb3VnaHB1dC5odG1sKSBpbiB0aGUgKkFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUqLlxuICogIElmIHJlYWQvd3JpdGUgY2FwYWNpdHkgbW9kZSBpcyBgYFBBWV9QRVJfUkVRVUVTVGBgIHRoZSB2YWx1ZSBpcyBzZXQgdG8gMC5cbiAqL1xuUmVhZENhcGFjaXR5VW5pdHM6IG51bWJlclxufVxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGF0dHJpYnV0ZSBmb3IgZGVzY3JpYmluZyB0aGUgc2NoZW1hIGZvciB0aGUgdGFibGUgYW5kIGluZGV4ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlRGVmaW5pdGlvbiB7XG4vKipcbiAqIFRoZSBkYXRhIHR5cGUgZm9yIHRoZSBhdHRyaWJ1dGUsIHdoZXJlOlxuICogICArICAgYGBTYGAgLSB0aGUgYXR0cmlidXRlIGlzIG9mIHR5cGUgU3RyaW5nXG4gKiAgICsgICBgYE5gYCAtIHRoZSBhdHRyaWJ1dGUgaXMgb2YgdHlwZSBOdW1iZXJcbiAqICAgKyAgIGBgQmBgIC0gdGhlIGF0dHJpYnV0ZSBpcyBvZiB0eXBlIEJpbmFyeVxuICovXG5BdHRyaWJ1dGVUeXBlOiBzdHJpbmdcbi8qKlxuICogQSBuYW1lIGZvciB0aGUgYXR0cmlidXRlLlxuICovXG5BdHRyaWJ1dGVOYW1lOiBzdHJpbmdcbn1cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcHJvcGVydGllcyBvZiBhIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsU2Vjb25kYXJ5SW5kZXgge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZ2xvYmFsIHNlY29uZGFyeSBpbmRleC4gVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgYW1vbmcgYWxsIG90aGVyIGluZGV4ZXMgb24gdGhpcyB0YWJsZS5cbiAqL1xuSW5kZXhOYW1lOiBzdHJpbmdcbk9uRGVtYW5kVGhyb3VnaHB1dD86IE9uRGVtYW5kVGhyb3VnaHB1dDFcbkNvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uPzogQ29udHJpYnV0b3JJbnNpZ2h0c1NwZWNpZmljYXRpb24xXG5Qcm9qZWN0aW9uOiBQcm9qZWN0aW9uXG5Qcm92aXNpb25lZFRocm91Z2hwdXQ/OiBQcm92aXNpb25lZFRocm91Z2hwdXQxXG4vKipcbiAqIFRoZSBjb21wbGV0ZSBrZXkgc2NoZW1hIGZvciBhIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXgsIHdoaWNoIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIHBhaXJzIG9mIGF0dHJpYnV0ZSBuYW1lcyBhbmQga2V5IHR5cGVzOlxuICogICArICAgYGBIQVNIYGAgLSBwYXJ0aXRpb24ga2V5XG4gKiAgICsgICBgYFJBTkdFYGAgLSBzb3J0IGtleVxuICogICBcbiAqICAgVGhlIHBhcnRpdGlvbiBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqaGFzaCBhdHRyaWJ1dGUqLiBUaGUgdGVybSBcImhhc2ggYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIER5bmFtb0RCJ3MgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgaGFzaCBmdW5jdGlvbiB0byBldmVubHkgZGlzdHJpYnV0ZSBkYXRhIGl0ZW1zIGFjcm9zcyBwYXJ0aXRpb25zLCBiYXNlZCBvbiB0aGVpciBwYXJ0aXRpb24ga2V5IHZhbHVlcy5cbiAqICBUaGUgc29ydCBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqcmFuZ2UgYXR0cmlidXRlKi4gVGhlIHRlcm0gXCJyYW5nZSBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gdGhlIHdheSBEeW5hbW9EQiBzdG9yZXMgaXRlbXMgd2l0aCB0aGUgc2FtZSBwYXJ0aXRpb24ga2V5IHBoeXNpY2FsbHkgY2xvc2UgdG9nZXRoZXIsIGluIHNvcnRlZCBvcmRlciBieSB0aGUgc29ydCBrZXkgdmFsdWUuXG4gKi9cbktleVNjaGVtYTogS2V5U2NoZW1hW11cbldhcm1UaHJvdWdocHV0PzogV2FybVRocm91Z2hwdXQxXG59XG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWFkIGFuZCB3cml0ZSB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LiBJZiB5b3UgdXNlIHRoaXMgcGFyYW1ldGVyLCB5b3UgbXVzdCBzcGVjaWZ5IGBgTWF4UmVhZFJlcXVlc3RVbml0c2BgLCBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAsIG9yIGJvdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT25EZW1hbmRUaHJvdWdocHV0MSB7XG4vKipcbiAqIE1heGltdW0gbnVtYmVyIG9mIHJlYWQgcmVxdWVzdCB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqICBUbyBzcGVjaWZ5IGEgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhSZWFkUmVxdWVzdFVuaXRzYGAgYXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEuIFRvIHJlbW92ZSB0aGUgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIHRoYXQgaXMgY3VycmVudGx5IHNldCBvbiB5b3VyIHRhYmxlLCBzZXQgdGhlIHZhbHVlIG9mIGBgTWF4UmVhZFJlcXVlc3RVbml0c2BgIHRvIC0xLlxuICovXG5NYXhSZWFkUmVxdWVzdFVuaXRzPzogbnVtYmVyXG4vKipcbiAqIE1heGltdW0gbnVtYmVyIG9mIHdyaXRlIHJlcXVlc3QgdW5pdHMgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUuXG4gKiAgVG8gc3BlY2lmeSBhIG1heGltdW0gYGBPbkRlbWFuZFRocm91Z2hwdXRgYCBvbiB5b3VyIHRhYmxlLCBzZXQgdGhlIHZhbHVlIG9mIGBgTWF4V3JpdGVSZXF1ZXN0VW5pdHNgYCBhcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4gVG8gcmVtb3ZlIHRoZSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgdGhhdCBpcyBjdXJyZW50bHkgc2V0IG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhXcml0ZVJlcXVlc3RVbml0c2BgIHRvIC0xLlxuICovXG5NYXhXcml0ZVJlcXVlc3RVbml0cz86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgdXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSBDbG91ZFdhdGNoIENvbnRyaWJ1dG9yIEluc2lnaHRzIGZvciB0aGUgc3BlY2lmaWVkIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJpYnV0b3JJbnNpZ2h0c1NwZWNpZmljYXRpb24xIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQ2xvdWRXYXRjaCBDb250cmlidXRvciBJbnNpZ2h0cyBhcmUgdG8gYmUgZW5hYmxlZCAodHJ1ZSkgb3IgZGlzYWJsZWQgKGZhbHNlKS5cbiAqL1xuRW5hYmxlZDogYm9vbGVhblxufVxuLyoqXG4gKiBSZXByZXNlbnRzIGF0dHJpYnV0ZXMgdGhhdCBhcmUgY29waWVkIChwcm9qZWN0ZWQpIGZyb20gdGhlIHRhYmxlIGludG8gdGhlIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0aW9uIHtcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbm9uLWtleSBhdHRyaWJ1dGUgbmFtZXMgd2hpY2ggd2lsbCBiZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguXG4gKiAgRm9yIGxvY2FsIHNlY29uZGFyeSBpbmRleGVzLCB0aGUgdG90YWwgY291bnQgb2YgYGBOb25LZXlBdHRyaWJ1dGVzYGAgc3VtbWVkIGFjcm9zcyBhbGwgb2YgdGhlIGxvY2FsIHNlY29uZGFyeSBpbmRleGVzLCBtdXN0IG5vdCBleGNlZWQgMTAwLiBJZiB5b3UgcHJvamVjdCB0aGUgc2FtZSBhdHRyaWJ1dGUgaW50byB0d28gZGlmZmVyZW50IGluZGV4ZXMsIHRoaXMgY291bnRzIGFzIHR3byBkaXN0aW5jdCBhdHRyaWJ1dGVzIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHRvdGFsLlxuICovXG5Ob25LZXlBdHRyaWJ1dGVzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIHNldCBvZiBhdHRyaWJ1dGVzIHRoYXQgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleDpcbiAqICAgKyAgIGBgS0VZU19PTkxZYGAgLSBPbmx5IHRoZSBpbmRleCBhbmQgcHJpbWFyeSBrZXlzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguXG4gKiAgICsgICBgYElOQ0xVREVgYCAtIEluIGFkZGl0aW9uIHRvIHRoZSBhdHRyaWJ1dGVzIGRlc2NyaWJlZCBpbiBgYEtFWVNfT05MWWBgLCB0aGUgc2Vjb25kYXJ5IGluZGV4IHdpbGwgaW5jbHVkZSBvdGhlciBub24ta2V5IGF0dHJpYnV0ZXMgdGhhdCB5b3Ugc3BlY2lmeS5cbiAqICAgKyAgIGBgQUxMYGAgLSBBbGwgb2YgdGhlIHRhYmxlIGF0dHJpYnV0ZXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC5cbiAqICAgXG4gKiAgV2hlbiB1c2luZyB0aGUgRHluYW1vREIgY29uc29sZSwgYGBBTExgYCBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LlxuICovXG5Qcm9qZWN0aW9uVHlwZT86IHN0cmluZ1xufVxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHNldHRpbmdzIGZvciB0aGUgc3BlY2lmaWVkIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguXG4gKiAgRm9yIGN1cnJlbnQgbWluaW11bSBhbmQgbWF4aW11bSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHZhbHVlcywgc2VlIFtTZXJ2aWNlLCBBY2NvdW50LCBhbmQgVGFibGUgUXVvdGFzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0xpbWl0cy5odG1sKSBpbiB0aGUgKkFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3Zpc2lvbmVkVGhyb3VnaHB1dDEge1xuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygd3JpdGVzIGNvbnN1bWVkIHBlciBzZWNvbmQgYmVmb3JlIER5bmFtb0RCIHJldHVybnMgYSBgYFRocm90dGxpbmdFeGNlcHRpb25gYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3BlY2lmeWluZyBSZWFkIGFuZCBXcml0ZSBSZXF1aXJlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvUHJvdmlzaW9uZWRUaHJvdWdocHV0Lmh0bWwpIGluIHRoZSAqQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZSouXG4gKiAgSWYgcmVhZC93cml0ZSBjYXBhY2l0eSBtb2RlIGlzIGBgUEFZX1BFUl9SRVFVRVNUYGAgdGhlIHZhbHVlIGlzIHNldCB0byAwLlxuICovXG5Xcml0ZUNhcGFjaXR5VW5pdHM6IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3Ryb25nbHkgY29uc2lzdGVudCByZWFkcyBjb25zdW1lZCBwZXIgc2Vjb25kIGJlZm9yZSBEeW5hbW9EQiByZXR1cm5zIGEgYGBUaHJvdHRsaW5nRXhjZXB0aW9uYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnlpbmcgUmVhZCBhbmQgV3JpdGUgUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1Byb3Zpc2lvbmVkVGhyb3VnaHB1dC5odG1sKSBpbiB0aGUgKkFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUqLlxuICogIElmIHJlYWQvd3JpdGUgY2FwYWNpdHkgbW9kZSBpcyBgYFBBWV9QRVJfUkVRVUVTVGBgIHRoZSB2YWx1ZSBpcyBzZXQgdG8gMC5cbiAqL1xuUmVhZENhcGFjaXR5VW5pdHM6IG51bWJlclxufVxuLyoqXG4gKiBSZXByZXNlbnRzICphIHNpbmdsZSBlbGVtZW50KiBvZiBhIGtleSBzY2hlbWEuIEEga2V5IHNjaGVtYSBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBtYWtlIHVwIHRoZSBwcmltYXJ5IGtleSBvZiBhIHRhYmxlLCBvciB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgYW4gaW5kZXguXG4gKiAgQSBgYEtleVNjaGVtYUVsZW1lbnRgYCByZXByZXNlbnRzIGV4YWN0bHkgb25lIGF0dHJpYnV0ZSBvZiB0aGUgcHJpbWFyeSBrZXkuIEZvciBleGFtcGxlLCBhIHNpbXBsZSBwcmltYXJ5IGtleSB3b3VsZCBiZSByZXByZXNlbnRlZCBieSBvbmUgYGBLZXlTY2hlbWFFbGVtZW50YGAgKGZvciB0aGUgcGFydGl0aW9uIGtleSkuIEEgY29tcG9zaXRlIHByaW1hcnkga2V5IHdvdWxkIHJlcXVpcmUgb25lIGBgS2V5U2NoZW1hRWxlbWVudGBgIGZvciB0aGUgcGFydGl0aW9uIGtleSwgYW5kIGFub3RoZXIgYGBLZXlTY2hlbWFFbGVtZW50YGAgZm9yIHRoZSBzb3J0IGtleS5cbiAqICBBIGBgS2V5U2NoZW1hRWxlbWVudGBgIG11c3QgYmUgYSBzY2FsYXIsIHRvcC1sZXZlbCBhdHRyaWJ1dGUgKG5vdCBhIG5lc3RlZCBhdHRyaWJ1dGUpLiBUaGUgZGF0YSB0eXBlIG11c3QgYmUgb25lIG9mIFN0cmluZywgTnVtYmVyLCBvciBCaW5hcnkuIFRoZSBhdHRyaWJ1dGUgY2Fubm90IGJlIG5lc3RlZCB3aXRoaW4gYSBMaXN0IG9yIGEgTWFwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleVNjaGVtYSB7XG4vKipcbiAqIFRoZSByb2xlIHRoYXQgdGhpcyBrZXkgYXR0cmlidXRlIHdpbGwgYXNzdW1lOlxuICogICArICAgYGBIQVNIYGAgLSBwYXJ0aXRpb24ga2V5XG4gKiAgICsgICBgYFJBTkdFYGAgLSBzb3J0IGtleVxuICogICBcbiAqICAgVGhlIHBhcnRpdGlvbiBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqaGFzaCBhdHRyaWJ1dGUqLiBUaGUgdGVybSBcImhhc2ggYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIER5bmFtb0RCJ3MgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgaGFzaCBmdW5jdGlvbiB0byBldmVubHkgZGlzdHJpYnV0ZSBkYXRhIGl0ZW1zIGFjcm9zcyBwYXJ0aXRpb25zLCBiYXNlZCBvbiB0aGVpciBwYXJ0aXRpb24ga2V5IHZhbHVlcy5cbiAqICBUaGUgc29ydCBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqcmFuZ2UgYXR0cmlidXRlKi4gVGhlIHRlcm0gXCJyYW5nZSBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gdGhlIHdheSBEeW5hbW9EQiBzdG9yZXMgaXRlbXMgd2l0aCB0aGUgc2FtZSBwYXJ0aXRpb24ga2V5IHBoeXNpY2FsbHkgY2xvc2UgdG9nZXRoZXIsIGluIHNvcnRlZCBvcmRlciBieSB0aGUgc29ydCBrZXkgdmFsdWUuXG4gKi9cbktleVR5cGU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiBhIGtleSBhdHRyaWJ1dGUuXG4gKi9cbkF0dHJpYnV0ZU5hbWU6IHN0cmluZ1xufVxuLyoqXG4gKiBBIHJlc291cmNlLWJhc2VkIHBvbGljeSBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIHBlcm1pc3Npb25zIHRvIGFkZCB0byB0aGUgc3BlY2lmaWVkIHRhYmxlLiBJbiBhIENGTnNob3J0IHRlbXBsYXRlLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHBvbGljeSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0IGJlY2F1c2UgQ0ZOc2hvcnQgY29udmVydHMgWUFNTCB0byBKU09OIGJlZm9yZSBzdWJtaXR0aW5nIGl0IHRvIEREQi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMsIHNlZSBbVXNpbmcgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMgZm9yXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FjY2Vzcy1jb250cm9sLXJlc291cmNlLWJhc2VkLmh0bWwpIGFuZCBbUmVzb3VyY2UtYmFzZWQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3JiYWMtZXhhbXBsZXMuaHRtbCkuXG4gKiAgV2hlbiB5b3UgYXR0YWNoIGEgcmVzb3VyY2UtYmFzZWQgcG9saWN5IHdoaWxlIGNyZWF0aW5nIGEgdGFibGUsIHRoZSBwb2xpY3kgY3JlYXRpb24gaXMgKnN0cm9uZ2x5IGNvbnNpc3RlbnQqLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnNpZGVyYXRpb25zIHRoYXQgeW91IHNob3VsZCBrZWVwIGluIG1pbmQgd2hpbGUgYXR0YWNoaW5nIGEgcmVzb3VyY2UtYmFzZWQgcG9saWN5LCBzZWUgW1Jlc291cmNlLWJhc2VkIHBvbGljeSBjb25zaWRlcmF0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9yYmFjLWNvbnNpZGVyYXRpb25zLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUG9saWN5MSB7XG4vKipcbiAqIEEgcmVzb3VyY2UtYmFzZWQgcG9saWN5IGRvY3VtZW50IHRoYXQgY29udGFpbnMgcGVybWlzc2lvbnMgdG8gYWRkIHRvIHRoZSBzcGVjaWZpZWQgRERCIHRhYmxlLCBpbmRleCwgb3IgYm90aC4gSW4gYSBDRk5zaG9ydCB0ZW1wbGF0ZSwgeW91IGNhbiBwcm92aWRlIHRoZSBwb2xpY3kgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCBiZWNhdXNlIENGTnNob3J0IGNvbnZlcnRzIFlBTUwgdG8gSlNPTiBiZWZvcmUgc3VibWl0dGluZyBpdCB0byBEREIuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlc291cmNlLWJhc2VkIHBvbGljaWVzLCBzZWUgW1VzaW5nIHJlc291cmNlLWJhc2VkIHBvbGljaWVzIGZvcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hY2Nlc3MtY29udHJvbC1yZXNvdXJjZS1iYXNlZC5odG1sKSBhbmQgW1Jlc291cmNlLWJhc2VkIHBvbGljeSBleGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9yYmFjLWV4YW1wbGVzLmh0bWwpLlxuICovXG5Qb2xpY3lEb2N1bWVudDoge1xuW2s6IHN0cmluZ106IHVua25vd25cbn1cbn1cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcHJvcGVydGllcyBvZiBhIGxvY2FsIHNlY29uZGFyeSBpbmRleC4gQSBsb2NhbCBzZWNvbmRhcnkgaW5kZXggY2FuIG9ubHkgYmUgY3JlYXRlZCB3aGVuIGl0cyBwYXJlbnQgdGFibGUgaXMgY3JlYXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2NhbFNlY29uZGFyeUluZGV4IHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGxvY2FsIHNlY29uZGFyeSBpbmRleC4gVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgYW1vbmcgYWxsIG90aGVyIGluZGV4ZXMgb24gdGhpcyB0YWJsZS5cbiAqL1xuSW5kZXhOYW1lOiBzdHJpbmdcblByb2plY3Rpb246IFByb2plY3Rpb24xXG4vKipcbiAqIFRoZSBjb21wbGV0ZSBrZXkgc2NoZW1hIGZvciB0aGUgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LCBjb25zaXN0aW5nIG9mIG9uZSBvciBtb3JlIHBhaXJzIG9mIGF0dHJpYnV0ZSBuYW1lcyBhbmQga2V5IHR5cGVzOlxuICogICArICAgYGBIQVNIYGAgLSBwYXJ0aXRpb24ga2V5XG4gKiAgICsgICBgYFJBTkdFYGAgLSBzb3J0IGtleVxuICogICBcbiAqICAgVGhlIHBhcnRpdGlvbiBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqaGFzaCBhdHRyaWJ1dGUqLiBUaGUgdGVybSBcImhhc2ggYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIER5bmFtb0RCJ3MgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgaGFzaCBmdW5jdGlvbiB0byBldmVubHkgZGlzdHJpYnV0ZSBkYXRhIGl0ZW1zIGFjcm9zcyBwYXJ0aXRpb25zLCBiYXNlZCBvbiB0aGVpciBwYXJ0aXRpb24ga2V5IHZhbHVlcy5cbiAqICBUaGUgc29ydCBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqcmFuZ2UgYXR0cmlidXRlKi4gVGhlIHRlcm0gXCJyYW5nZSBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gdGhlIHdheSBEeW5hbW9EQiBzdG9yZXMgaXRlbXMgd2l0aCB0aGUgc2FtZSBwYXJ0aXRpb24ga2V5IHBoeXNpY2FsbHkgY2xvc2UgdG9nZXRoZXIsIGluIHNvcnRlZCBvcmRlciBieSB0aGUgc29ydCBrZXkgdmFsdWUuXG4gKi9cbktleVNjaGVtYTogS2V5U2NoZW1hW11cbn1cbi8qKlxuICogUmVwcmVzZW50cyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSB0YWJsZSBpbnRvIHRoZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0aW9uMSB7XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG5vbi1rZXkgYXR0cmlidXRlIG5hbWVzIHdoaWNoIHdpbGwgYmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LlxuICogIEZvciBsb2NhbCBzZWNvbmRhcnkgaW5kZXhlcywgdGhlIHRvdGFsIGNvdW50IG9mIGBgTm9uS2V5QXR0cmlidXRlc2BgIHN1bW1lZCBhY3Jvc3MgYWxsIG9mIHRoZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXhlcywgbXVzdCBub3QgZXhjZWVkIDEwMC4gSWYgeW91IHByb2plY3QgdGhlIHNhbWUgYXR0cmlidXRlIGludG8gdHdvIGRpZmZlcmVudCBpbmRleGVzLCB0aGlzIGNvdW50cyBhcyB0d28gZGlzdGluY3QgYXR0cmlidXRlcyB3aGVuIGRldGVybWluaW5nIHRoZSB0b3RhbC5cbiAqL1xuTm9uS2V5QXR0cmlidXRlcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0IGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXg6XG4gKiAgICsgICBgYEtFWVNfT05MWWBgIC0gT25seSB0aGUgaW5kZXggYW5kIHByaW1hcnkga2V5cyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LlxuICogICArICAgYGBJTkNMVURFYGAgLSBJbiBhZGRpdGlvbiB0byB0aGUgYXR0cmlidXRlcyBkZXNjcmliZWQgaW4gYGBLRVlTX09OTFlgYCwgdGhlIHNlY29uZGFyeSBpbmRleCB3aWxsIGluY2x1ZGUgb3RoZXIgbm9uLWtleSBhdHRyaWJ1dGVzIHRoYXQgeW91IHNwZWNpZnkuXG4gKiAgICsgICBgYEFMTGBgIC0gQWxsIG9mIHRoZSB0YWJsZSBhdHRyaWJ1dGVzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguXG4gKiAgIFxuICogIFdoZW4gdXNpbmcgdGhlIER5bmFtb0RCIGNvbnNvbGUsIGBgQUxMYGAgaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC5cbiAqL1xuUHJvamVjdGlvblR5cGU/OiBzdHJpbmdcbn1cbi8qKlxuICogRGVzY3JpYmVzIGEgdGFnLiBBIHRhZyBpcyBhIGtleS12YWx1ZSBwYWlyLiBZb3UgY2FuIGFkZCB1cCB0byA1MCB0YWdzIHRvIGEgc2luZ2xlIER5bmFtb0RCIHRhYmxlLiBcbiAqICAgQVdTLWFzc2lnbmVkIHRhZyBuYW1lcyBhbmQgdmFsdWVzIGFyZSBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkIHRoZSBgYGF3czpgYCBwcmVmaXgsIHdoaWNoIHRoZSB1c2VyIGNhbm5vdCBhc3NpZ24uIEFXUy1hc3NpZ25lZCB0YWcgbmFtZXMgZG8gbm90IGNvdW50IHRvd2FyZHMgdGhlIHRhZyBsaW1pdCBvZiA1MC4gVXNlci1hc3NpZ25lZCB0YWcgbmFtZXMgaGF2ZSB0aGUgcHJlZml4IGBgdXNlcjpgYCBpbiB0aGUgQ29zdCBBbGxvY2F0aW9uIFJlcG9ydC4gWW91IGNhbm5vdCBiYWNrZGF0ZSB0aGUgYXBwbGljYXRpb24gb2YgYSB0YWcuXG4gKiAgRm9yIGFuIG92ZXJ2aWV3IG9uIHRhZ2dpbmcgRHluYW1vREIgcmVzb3VyY2VzLCBzZWUgW1RhZ2dpbmcgZm9yIER5bmFtb0RCXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1RhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHRhZy4gVGFnIHZhbHVlcyBhcmUgY2FzZS1zZW5zaXRpdmUgYW5kIGNhbiBiZSBudWxsLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSBrZXkgb2YgdGhlIHRhZy4gVGFnIGtleXMgYXJlIGNhc2Ugc2Vuc2l0aXZlLiBFYWNoIER5bmFtb0RCIHRhYmxlIGNhbiBvbmx5IGhhdmUgdXAgdG8gb25lIHRhZyB3aXRoIHRoZSBzYW1lIGtleS4gSWYgeW91IHRyeSB0byBhZGQgYW4gZXhpc3RpbmcgdGFnIChzYW1lIGtleSksIHRoZSBleGlzdGluZyB0YWcgdmFsdWUgd2lsbCBiZSB1cGRhdGVkIHRvIHRoZSBuZXcgdmFsdWUuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgVGltZSB0byBMaXZlIChUVEwpIHNldHRpbmdzIGZvciB0aGUgdGFibGUuXG4gKiAgIEZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGltaXRzIGluIER5bmFtb0RCLCBzZWUgW0xpbWl0cyBpbiBBbWF6b24gRHluYW1vREJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvTGltaXRzLmh0bWwpIGluIHRoZSBBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVUb0xpdmVTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgVFRMIGlzIHRvIGJlIGVuYWJsZWQgKHRydWUpIG9yIGRpc2FibGVkIChmYWxzZSkgb24gdGhlIHRhYmxlLlxuICovXG5FbmFibGVkOiBib29sZWFuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBUVEwgYXR0cmlidXRlIHVzZWQgdG8gc3RvcmUgdGhlIGV4cGlyYXRpb24gdGltZSBmb3IgaXRlbXMgaW4gdGhlIHRhYmxlLlxuICogICAgKyAgVGhlIGBgQXR0cmlidXRlTmFtZWBgIHByb3BlcnR5IGlzIHJlcXVpcmVkIHdoZW4gZW5hYmxpbmcgdGhlIFRUTCwgb3Igd2hlbiBUVEwgaXMgYWxyZWFkeSBlbmFibGVkLlxuICogICArICBUbyB1cGRhdGUgdGhpcyBwcm9wZXJ0eSwgeW91IG11c3QgZmlyc3QgZGlzYWJsZSBUVEwgYW5kIHRoZW4gZW5hYmxlIFRUTCB3aXRoIHRoZSBuZXcgYXR0cmlidXRlIG5hbWUuXG4gKi9cbkF0dHJpYnV0ZU5hbWU/OiBzdHJpbmdcbn1cbiJdfQ==
|
|
@@ -44,12 +44,10 @@ export interface LaunchTemplateData {
|
|
|
44
44
|
* To tag the launch template itself, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).
|
|
45
45
|
*/
|
|
46
46
|
TagSpecifications?: TagSpecification[];
|
|
47
|
-
NetworkPerformanceOptions?:
|
|
48
|
-
[k: string]: unknown;
|
|
49
|
-
};
|
|
47
|
+
NetworkPerformanceOptions?: NetworkPerformanceOptions;
|
|
50
48
|
/**
|
|
51
|
-
* The user data to make available to the instance. You must provide base64-encoded text. User data is limited to 16 KB. For more information, see [Run commands
|
|
52
|
-
* If you are creating the launch template for use with BATCH, the user data must be provided in the [MIME multi-part archive format](https://docs.aws.amazon.com/https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive). For more information, see [Amazon EC2 user data in launch templates](https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html) in the *User Guide*.
|
|
49
|
+
* The user data to make available to the instance. You must provide base64-encoded text. User data is limited to 16 KB. For more information, see [Run commands when you launch an EC2 instance with user data input](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) in the *Amazon EC2 User Guide*.
|
|
50
|
+
* If you are creating the launch template for use with BATCH, the user data must be provided in the [MIME multi-part archive format](https://docs.aws.amazon.com/https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive). For more information, see [Amazon EC2 user data in launch templates](https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html#lt-user-data) in the *User Guide*.
|
|
53
51
|
*/
|
|
54
52
|
UserData?: string;
|
|
55
53
|
/**
|
|
@@ -114,7 +112,7 @@ export interface LaunchTemplateData {
|
|
|
114
112
|
*/
|
|
115
113
|
InstanceInitiatedShutdownBehavior?: string;
|
|
116
114
|
/**
|
|
117
|
-
* Indicates whether to enable the instance for stop protection. For more information, see [Enable stop protection for your
|
|
115
|
+
* Indicates whether to enable the instance for stop protection. For more information, see [Enable stop protection for your EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-stop-protection.html) in the *Amazon EC2 User Guide*.
|
|
118
116
|
*/
|
|
119
117
|
DisableApiStop?: boolean;
|
|
120
118
|
CpuOptions?: CpuOptions;
|
|
@@ -130,7 +128,7 @@ export interface LaunchTemplateData {
|
|
|
130
128
|
*/
|
|
131
129
|
KeyName?: string;
|
|
132
130
|
/**
|
|
133
|
-
*
|
|
131
|
+
* Indicates whether termination protection is enabled for the instance. The default is ``false``, which means that you can terminate the instance using the Amazon EC2 console, command line tools, or API. You can enable termination protection when you launch an instance, while the instance is running, or while the instance is stopped.
|
|
134
132
|
*/
|
|
135
133
|
DisableApiTermination?: boolean;
|
|
136
134
|
InstanceMarketOptions?: InstanceMarketOptions;
|
|
@@ -171,6 +169,15 @@ export interface Tag {
|
|
|
171
169
|
*/
|
|
172
170
|
Key: string;
|
|
173
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* The settings for the network performance options for the instance. For more information, see [EC2 instance bandwidth weighting configuration](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-bandwidth-weighting.html).
|
|
174
|
+
*/
|
|
175
|
+
export interface NetworkPerformanceOptions {
|
|
176
|
+
/**
|
|
177
|
+
* Specifies the performance options of your instance or sets it to default.
|
|
178
|
+
*/
|
|
179
|
+
BandwidthWeighting?: string;
|
|
180
|
+
}
|
|
174
181
|
/**
|
|
175
182
|
* Specifies a block device mapping for a launch template. You must specify ``DeviceName`` plus exactly one of the following properties: ``Ebs``, ``NoDevice``, or ``VirtualName``.
|
|
176
183
|
* ``BlockDeviceMapping`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).
|
|
@@ -222,7 +229,7 @@ export interface Ebs {
|
|
|
222
229
|
* + ``io1``: 100 - 64,000 IOPS
|
|
223
230
|
* + ``io2``: 100 - 256,000 IOPS
|
|
224
231
|
*
|
|
225
|
-
* For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/
|
|
232
|
+
* For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html). On other instances, you can achieve performance up to 32,000 IOPS.
|
|
226
233
|
* This parameter is supported for ``io1``, ``io2``, and ``gp3`` volumes only.
|
|
227
234
|
*/
|
|
228
235
|
Iops?: number;
|
|
@@ -397,7 +404,7 @@ export interface NetworkInterface {
|
|
|
397
404
|
*/
|
|
398
405
|
NetworkCardIndex?: number;
|
|
399
406
|
/**
|
|
400
|
-
* The type of network interface. To create an Elastic Fabric Adapter (EFA), specify ``efa`` or ``efa``. For more information, see [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) in the *Amazon EC2 User Guide*.
|
|
407
|
+
* The type of network interface. To create an Elastic Fabric Adapter (EFA), specify ``efa`` or ``efa``. For more information, see [Elastic Fabric Adapter for AI/ML and HPC workloads on Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) in the *Amazon EC2 User Guide*.
|
|
401
408
|
* If you are not creating an EFA, specify ``interface`` or omit this parameter.
|
|
402
409
|
* If you specify ``efa-only``, do not assign any IP addresses to the network interface. EFA-only network interfaces do not support IP addresses.
|
|
403
410
|
* Valid values: ``interface`` | ``efa`` | ``efa-only``
|
|
@@ -533,7 +540,7 @@ export interface HibernationOptions {
|
|
|
533
540
|
Configured?: boolean;
|
|
534
541
|
}
|
|
535
542
|
/**
|
|
536
|
-
* The metadata options for the instance. For more information, see [Instance
|
|
543
|
+
* The metadata options for the instance. For more information, see [Configure the Instance Metadata Service options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) in the *Amazon EC2 User Guide*.
|
|
537
544
|
*/
|
|
538
545
|
export interface MetadataOptions {
|
|
539
546
|
/**
|
|
@@ -556,7 +563,7 @@ export interface MetadataOptions {
|
|
|
556
563
|
*/
|
|
557
564
|
HttpProtocolIpv6?: string;
|
|
558
565
|
/**
|
|
559
|
-
* Set to ``enabled`` to allow access to instance tags from the instance metadata. Set to ``disabled`` to turn off access to instance tags from the instance metadata. For more information, see [
|
|
566
|
+
* Set to ``enabled`` to allow access to instance tags from the instance metadata. Set to ``disabled`` to turn off access to instance tags from the instance metadata. For more information, see [View tags for your EC2 instances using instance metadata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/work-with-tags-in-IMDS.html).
|
|
560
567
|
* Default: ``disabled``
|
|
561
568
|
*/
|
|
562
569
|
InstanceMetadataTags?: string;
|
|
@@ -577,7 +584,7 @@ export interface LicenseSpecification {
|
|
|
577
584
|
LicenseConfigurationArn?: string;
|
|
578
585
|
}
|
|
579
586
|
/**
|
|
580
|
-
* The CPU options for the instance. For more information, see [
|
|
587
|
+
* The CPU options for the instance. For more information, see [CPU options for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *Amazon EC2 User Guide*.
|
|
581
588
|
*/
|
|
582
589
|
export interface CpuOptions {
|
|
583
590
|
/**
|
|
@@ -585,7 +592,7 @@ export interface CpuOptions {
|
|
|
585
592
|
*/
|
|
586
593
|
ThreadsPerCore?: number;
|
|
587
594
|
/**
|
|
588
|
-
* Indicates whether to enable the instance for AMD SEV-SNP. AMD SEV-SNP is supported with M6a, R6a, and C6a instance types only. For more information, see [AMD SEV-SNP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html).
|
|
595
|
+
* Indicates whether to enable the instance for AMD SEV-SNP. AMD SEV-SNP is supported with M6a, R6a, and C6a instance types only. For more information, see [AMD SEV-SNP for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html).
|
|
589
596
|
*/
|
|
590
597
|
AmdSevSnp?: ("enabled" | "disabled");
|
|
591
598
|
/**
|
|
@@ -634,7 +641,7 @@ export interface SpotOptions {
|
|
|
634
641
|
*/
|
|
635
642
|
InstanceInterruptionBehavior?: string;
|
|
636
643
|
/**
|
|
637
|
-
* The maximum hourly price you're willing to pay for
|
|
644
|
+
* The maximum hourly price you're willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price. If you do specify this parameter, it must be more than USD $0.001. Specifying a value below USD $0.001 will result in an ``InvalidParameterValue`` error message when the launch template is used to launch an instance.
|
|
638
645
|
* If you specify a maximum price, your Spot Instances will be interrupted more frequently than if you do not specify this parameter.
|
|
639
646
|
*/
|
|
640
647
|
MaxPrice?: string;
|