@horietakehiro/aws-cdk-utul 0.35.5 → 0.35.6
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-amplify-app.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-amplify-app.js +1 -1
- package/lib/types/cfn-resource-types/aws-cleanrooms-collaboration.d.ts +3 -3
- package/lib/types/cfn-resource-types/aws-cleanrooms-collaboration.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 +10 -0
- package/lib/types/cfn-resource-types/aws-ec2-launchtemplate.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-subnet.d.ts +7 -1
- package/lib/types/cfn-resource-types/aws-ec2-subnet.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-trafficmirrorfilter.d.ts +18 -2
- package/lib/types/cfn-resource-types/aws-ec2-trafficmirrorfilter.js +1 -1
- package/lib/types/cfn-resource-types/aws-inspectorv2-filter.d.ts +22 -1
- package/lib/types/cfn-resource-types/aws-inspectorv2-filter.js +1 -1
- package/lib/types/cfn-resource-types/aws-mediatailor-playbackconfiguration.d.ts +38 -0
- package/lib/types/cfn-resource-types/aws-mediatailor-playbackconfiguration.js +1 -1
- package/lib/types/cfn-resource-types/aws-mpa-approvalteam.d.ts +54 -0
- package/lib/types/cfn-resource-types/aws-mpa-approvalteam.js +3 -0
- package/lib/types/cfn-resource-types/aws-mpa-identitysource.d.ts +33 -0
- package/lib/types/cfn-resource-types/aws-mpa-identitysource.js +3 -0
- package/lib/types/cfn-resource-types/aws-organizations-policy.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-organizations-policy.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-custompermissions.d.ts +18 -18
- package/lib/types/cfn-resource-types/aws-quicksight-custompermissions.js +1 -1
- package/lib/types/cfn-resource-types/aws-securityhub-aggregatorv2.d.ts +38 -0
- package/lib/types/cfn-resource-types/aws-securityhub-aggregatorv2.js +3 -0
- package/lib/types/cfn-resource-types/aws-securityhub-automationrulev2.d.ts +282 -0
- package/lib/types/cfn-resource-types/aws-securityhub-automationrulev2.js +3 -0
- package/lib/types/cfn-resource-types/aws-securityhub-hubv2.d.ts +24 -0
- package/lib/types/cfn-resource-types/aws-securityhub-hubv2.js +3 -0
- package/lib/types/cfn-resource-types/aws-synthetics-canary.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-synthetics-canary.js +1 -1
- package/lib/types/cfn-resource-types.d.ts +10 -0
- package/lib/types/cfn-resource-types.js +22 -12
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjMi1sYXVuY2h0ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1lYzItbGF1bmNodGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGluc3RhbmNlIGZhbWlseSB0byB1c2UgYXMgdGhlIGJhc2VsaW5lIHJlZmVyZW5jZSBmb3IgQ1BVIHBlcmZvcm1hbmNlLiBBbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBDUFUgcGVyZm9ybWFuY2Ugb2YgdGhlIHJlZmVyZW5jZWQgaW5zdGFuY2UgZmFtaWx5LCByZWdhcmRsZXNzIG9mIENQVSBtYW51ZmFjdHVyZXIgb3IgYXJjaGl0ZWN0dXJlIGRpZmZlcmVuY2VzLlxuICovXG5leHBvcnQgdHlwZSBSZWZlcmVuY2VzID0gUmVmZXJlbmNlW11cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgbGF1bmNoIHRlbXBsYXRlLlxuICogIFRoZSBtaW5pbXVtIHJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHNwZWNpZnlpbmcgYSBsYXVuY2ggdGVtcGxhdGUgYXJlIGFzIGZvbGxvd3M6XG4gKiAgICsgIFlvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIHByb3BlcnR5IGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIGRhdGEuXG4gKiAgICsgIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEgbmFtZSBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZS4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgbmFtZSwgQ0ZOIGNyZWF0ZXMgYSBuYW1lIGZvciB5b3UuXG4gKiAgIFxuICogIEEgbGF1bmNoIHRlbXBsYXRlIGNhbiBjb250YWluIHNvbWUgb3IgYWxsIG9mIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRvIGxhdW5jaCBhbiBpbnN0YW5jZS4gV2hlbiB5b3UgbGF1bmNoIGFuIGluc3RhbmNlIHVzaW5nIGEgbGF1bmNoIHRlbXBsYXRlLCBpbnN0YW5jZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBzcGVjaWZpZWQgaW4gdGhlIGxhdW5jaCB0ZW1wbGF0ZSB1c2UgZGVmYXVsdCB2YWx1ZXMsIGV4Y2VwdCB0aGUgYGBJbWFnZUlkYGAgcHJvcGVydHksIHdoaWNoIGhhcyBubyBkZWZhdWx0IHZhbHVlLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYW4gQU1JIElEIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIGBgSW1hZ2VJZGBgIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IGFuIEFNSSBJRCBmb3IgdGhlIGluc3RhbmNlIGBgSW1hZ2VJZGBgIHByb3BlcnR5LlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0xhdW5jaCBhbiBpbnN0YW5jZSBmcm9tIGEgbGF1bmNoIHRlbXBsYXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWxhdW5jaC10ZW1wbGF0ZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfRUMyX0xBVU5DSFRFTVBMQVRFIHtcbi8qKlxuICogQSBuYW1lIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICovXG5MYXVuY2hUZW1wbGF0ZU5hbWU/OiBzdHJpbmdcbkxhdW5jaFRlbXBsYXRlRGF0YTogTGF1bmNoVGVtcGxhdGVEYXRhXG4vKipcbiAqIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cblZlcnNpb25EZXNjcmlwdGlvbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgbGF1bmNoIHRlbXBsYXRlIG9uIGNyZWF0aW9uLiBUbyB0YWcgdGhlIGxhdW5jaCB0ZW1wbGF0ZSwgdGhlIHJlc291cmNlIHR5cGUgbXVzdCBiZSBgYGxhdW5jaC10ZW1wbGF0ZWBgLlxuICogIFRvIHNwZWNpZnkgdGhlIHRhZ3MgZm9yIHJlc291cmNlcyB0aGF0IGFyZSBjcmVhdGVkIGR1cmluZyBpbnN0YW5jZSBsYXVuY2gsIHVzZSBbVGFnU3BlY2lmaWNhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCNjZm4tZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS10YWdzcGVjaWZpY2F0aW9ucykuXG4gKi9cblRhZ1NwZWNpZmljYXRpb25zPzogTGF1bmNoVGVtcGxhdGVUYWdTcGVjaWZpY2F0aW9uW11cbkxhdGVzdFZlcnNpb25OdW1iZXI/OiBzdHJpbmdcbkxhdW5jaFRlbXBsYXRlSWQ/OiBzdHJpbmdcbkRlZmF1bHRWZXJzaW9uTnVtYmVyPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZURhdGEge1xuLyoqXG4gKiBUaGUgbmFtZXMgb2YgdGhlIHNlY3VyaXR5IGdyb3Vwcy4gRm9yIGEgbm9uZGVmYXVsdCBWUEMsIHlvdSBtdXN0IHVzZSBzZWN1cml0eSBncm91cCBJRHMgaW5zdGVhZC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBhIG5ldHdvcmsgaW50ZXJmYWNlLCB5b3UgbXVzdCBzcGVjaWZ5IGFueSBzZWN1cml0eSBncm91cHMgYXMgcGFydCBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaW5zdGVhZCBvZiB1c2luZyB0aGlzIHBhcmFtZXRlci5cbiAqL1xuU2VjdXJpdHlHcm91cHM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgdGFncyB0byBhcHBseSB0byByZXNvdXJjZXMgdGhhdCBhcmUgY3JlYXRlZCBkdXJpbmcgaW5zdGFuY2UgbGF1bmNoLlxuICogIFRvIHRhZyB0aGUgbGF1bmNoIHRlbXBsYXRlIGl0c2VsZiwgdXNlIFtUYWdTcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1sYXVuY2h0ZW1wbGF0ZS5odG1sI2Nmbi1lYzItbGF1bmNodGVtcGxhdGUtdGFnc3BlY2lmaWNhdGlvbnMpLlxuICovXG5UYWdTcGVjaWZpY2F0aW9ucz86IFRhZ1NwZWNpZmljYXRpb25bXVxuTmV0d29ya1BlcmZvcm1hbmNlT3B0aW9ucz86IE5ldHdvcmtQZXJmb3JtYW5jZU9wdGlvbnNcbi8qKlxuICogVGhlIHVzZXIgZGF0YSB0byBtYWtlIGF2YWlsYWJsZSB0byB0aGUgaW5zdGFuY2UuIFlvdSBtdXN0IHByb3ZpZGUgYmFzZTY0LWVuY29kZWQgdGV4dC4gVXNlciBkYXRhIGlzIGxpbWl0ZWQgdG8gMTYgS0IuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1J1biBjb21tYW5kcyB3aGVuIHlvdSBsYXVuY2ggYW4gRUMyIGluc3RhbmNlIHdpdGggdXNlciBkYXRhIGlucHV0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvdXNlci1kYXRhLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3UgYXJlIGNyZWF0aW5nIHRoZSBsYXVuY2ggdGVtcGxhdGUgZm9yIHVzZSB3aXRoIEJBVENILCB0aGUgdXNlciBkYXRhIG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIFtNSU1FIG11bHRpLXBhcnQgYXJjaGl2ZSBmb3JtYXRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9odHRwczovL2Nsb3VkaW5pdC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvdG9waWNzL2Zvcm1hdC5odG1sI21pbWUtbXVsdGktcGFydC1hcmNoaXZlKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiB1c2VyIGRhdGEgaW4gbGF1bmNoIHRlbXBsYXRlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JhdGNoL2xhdGVzdC91c2VyZ3VpZGUvbGF1bmNoLXRlbXBsYXRlcy5odG1sI2x0LXVzZXItZGF0YSkgaW4gdGhlICpVc2VyIEd1aWRlKi5cbiAqL1xuVXNlckRhdGE/OiBzdHJpbmdcbi8qKlxuICogVGhlIGJsb2NrIGRldmljZSBtYXBwaW5nLlxuICovXG5CbG9ja0RldmljZU1hcHBpbmdzPzogQmxvY2tEZXZpY2VNYXBwaW5nW11cbk1haW50ZW5hbmNlT3B0aW9ucz86IE1haW50ZW5hbmNlT3B0aW9uc1xuSWFtSW5zdGFuY2VQcm9maWxlPzogSWFtSW5zdGFuY2VQcm9maWxlXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUga2VybmVsLlxuICogIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgUFYtR1JVQiBpbnN0ZWFkIG9mIGtlcm5lbHMgYW5kIFJBTSBkaXNrcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNlciBQcm92aWRlZCBLZXJuZWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvVXNlclByb3ZpZGVka2VybmVscy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbktlcm5lbElkPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnN0YW5jZSBpcyBvcHRpbWl6ZWQgZm9yIEFtYXpvbiBFQlMgSS9PLiBUaGlzIG9wdGltaXphdGlvbiBwcm92aWRlcyBkZWRpY2F0ZWQgdGhyb3VnaHB1dCB0byBBbWF6b24gRUJTIGFuZCBhbiBvcHRpbWl6ZWQgY29uZmlndXJhdGlvbiBzdGFjayB0byBwcm92aWRlIG9wdGltYWwgQW1hem9uIEVCUyBJL08gcGVyZm9ybWFuY2UuIFRoaXMgb3B0aW1pemF0aW9uIGlzbid0IGF2YWlsYWJsZSB3aXRoIGFsbCBpbnN0YW5jZSB0eXBlcy4gQWRkaXRpb25hbCB1c2FnZSBjaGFyZ2VzIGFwcGx5IHdoZW4gdXNpbmcgYW4gRUJTLW9wdGltaXplZCBpbnN0YW5jZS5cbiAqL1xuRWJzT3B0aW1pemVkPzogYm9vbGVhblxuLyoqXG4gKiBEZXByZWNhdGVkLlxuICogICBBbWF6b24gRWxhc3RpYyBHcmFwaGljcyByZWFjaGVkIGVuZCBvZiBsaWZlIG9uIEphbnVhcnkgOCwgMjAyNC5cbiAqL1xuRWxhc3RpY0dwdVNwZWNpZmljYXRpb25zPzogRWxhc3RpY0dwdVNwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBBbWF6b24gRWxhc3RpYyBJbmZlcmVuY2UgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS5cbiAqICAgQW4gZWxhc3RpYyBpbmZlcmVuY2UgYWNjZWxlcmF0b3IgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGluc3RhbmNlLiBFbGFzdGljIGluZmVyZW5jZSBhY2NlbGVyYXRvcnMgYXJlIGEgcmVzb3VyY2UgeW91IGNhbiBhdHRhY2ggdG8geW91ciBBbWF6b24gRUMyIGluc3RhbmNlcyB0byBhY2NlbGVyYXRlIHlvdXIgRGVlcCBMZWFybmluZyAoREwpIGluZmVyZW5jZSB3b3JrbG9hZHMuXG4gKiAgWW91IGNhbm5vdCBzcGVjaWZ5IGFjY2VsZXJhdG9ycyBmcm9tIGRpZmZlcmVudCBnZW5lcmF0aW9ucyBpbiB0aGUgc2FtZSByZXF1ZXN0LlxuICovXG5FbGFzdGljSW5mZXJlbmNlQWNjZWxlcmF0b3JzPzogTGF1bmNoVGVtcGxhdGVFbGFzdGljSW5mZXJlbmNlQWNjZWxlcmF0b3JbXVxuUGxhY2VtZW50PzogUGxhY2VtZW50XG4vKipcbiAqIFRoZSBuZXR3b3JrIGludGVyZmFjZXMgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuTmV0d29ya0ludGVyZmFjZXM/OiBOZXR3b3JrSW50ZXJmYWNlW11cbkVuY2xhdmVPcHRpb25zPzogRW5jbGF2ZU9wdGlvbnNcbi8qKlxuICogVGhlIElEIG9mIHRoZSBBTUkuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gc3BlY2lmeSBhIFN5c3RlbXMgTWFuYWdlciBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgcmVzb2x2ZSB0byBhbiBBTUkgSUQgb24gbGF1bmNoLlxuICogIFZhbGlkIGZvcm1hdHM6XG4gKiAgICsgICBgYGFtaS0wYWMzOTRkNmEzZXhhbXBsZWBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZWBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZTp2ZXJzaW9uLW51bWJlcmBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZTpsYWJlbGBgIFxuICogICBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2UgYSBTeXN0ZW1zIE1hbmFnZXIgcGFyYW1ldGVyIHRvIGZpbmQgYW4gQU1JXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZmluZGluZy1hbi1hbWkuaHRtbCN1c2luZy1zeXN0ZW1zLW1hbmFnZXItcGFyYW1ldGVyLXRvLWZpbmQtQU1JKSBpbiB0aGUgKkFtYXpvbiBFbGFzdGljIENvbXB1dGUgQ2xvdWQgVXNlciBHdWlkZSouXG4gKi9cbkltYWdlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIGluc3RhbmNlIHR5cGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9pbnN0YW5jZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgSWYgeW91IHNwZWNpZnkgYGBJbnN0YW5jZVR5cGVgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBJbnN0YW5jZVJlcXVpcmVtZW50c2BgLlxuICovXG5JbnN0YW5jZVR5cGU/OiBzdHJpbmdcbk1vbml0b3Jpbmc/OiBNb25pdG9yaW5nXG5IaWJlcm5hdGlvbk9wdGlvbnM/OiBIaWJlcm5hdGlvbk9wdGlvbnNcbk1ldGFkYXRhT3B0aW9ucz86IE1ldGFkYXRhT3B0aW9uc1xuLyoqXG4gKiBUaGUgbGljZW5zZSBjb25maWd1cmF0aW9ucy5cbiAqL1xuTGljZW5zZVNwZWNpZmljYXRpb25zPzogTGljZW5zZVNwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBpbnN0YW5jZSBzdG9wcyBvciB0ZXJtaW5hdGVzIHdoZW4geW91IGluaXRpYXRlIHNodXRkb3duIGZyb20gdGhlIGluc3RhbmNlICh1c2luZyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBjb21tYW5kIGZvciBzeXN0ZW0gc2h1dGRvd24pLlxuICogIERlZmF1bHQ6IGBgc3RvcGBgXG4gKi9cbkluc3RhbmNlSW5pdGlhdGVkU2h1dGRvd25CZWhhdmlvcj86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgdGhlIGluc3RhbmNlIGZvciBzdG9wIHByb3RlY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0VuYWJsZSBzdG9wIHByb3RlY3Rpb24gZm9yIHlvdXIgRUMyIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1zdG9wLXByb3RlY3Rpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5EaXNhYmxlQXBpU3RvcD86IGJvb2xlYW5cbkNwdU9wdGlvbnM/OiBDcHVPcHRpb25zXG5Qcml2YXRlRG5zTmFtZU9wdGlvbnM/OiBQcml2YXRlRG5zTmFtZU9wdGlvbnNcbi8qKlxuICogVGhlIElEcyBvZiB0aGUgc2VjdXJpdHkgZ3JvdXBzLiBZb3UgY2FuIHNwZWNpZnkgdGhlIElEcyBvZiBleGlzdGluZyBzZWN1cml0eSBncm91cHMgYW5kIHJlZmVyZW5jZXMgdG8gcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhlIHN0YWNrIHRlbXBsYXRlLlxuICogIElmIHlvdSBzcGVjaWZ5IGEgbmV0d29yayBpbnRlcmZhY2UsIHlvdSBtdXN0IHNwZWNpZnkgYW55IHNlY3VyaXR5IGdyb3VwcyBhcyBwYXJ0IG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpbnN0ZWFkLlxuICovXG5TZWN1cml0eUdyb3VwSWRzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGtleSBwYWlyLiBZb3UgY2FuIGNyZWF0ZSBhIGtleSBwYWlyIHVzaW5nIFtDcmVhdGVLZXlQYWlyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUtleVBhaXIuaHRtbCkgb3IgW0ltcG9ydEtleVBhaXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfSW1wb3J0S2V5UGFpci5odG1sKS5cbiAqICAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEga2V5IHBhaXIsIHlvdSBjYW4ndCBjb25uZWN0IHRvIHRoZSBpbnN0YW5jZSB1bmxlc3MgeW91IGNob29zZSBhbiBBTUkgdGhhdCBpcyBjb25maWd1cmVkIHRvIGFsbG93IHVzZXJzIGFub3RoZXIgd2F5IHRvIGxvZyBpbi5cbiAqL1xuS2V5TmFtZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0ZXJtaW5hdGlvbiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBpbnN0YW5jZS4gVGhlIGRlZmF1bHQgaXMgYGBmYWxzZWBgLCB3aGljaCBtZWFucyB0aGF0IHlvdSBjYW4gdGVybWluYXRlIHRoZSBpbnN0YW5jZSB1c2luZyB0aGUgQW1hem9uIEVDMiBjb25zb2xlLCBjb21tYW5kIGxpbmUgdG9vbHMsIG9yIEFQSS4gWW91IGNhbiBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiB3aGVuIHlvdSBsYXVuY2ggYW4gaW5zdGFuY2UsIHdoaWxlIHRoZSBpbnN0YW5jZSBpcyBydW5uaW5nLCBvciB3aGlsZSB0aGUgaW5zdGFuY2UgaXMgc3RvcHBlZC5cbiAqL1xuRGlzYWJsZUFwaVRlcm1pbmF0aW9uPzogYm9vbGVhblxuSW5zdGFuY2VNYXJrZXRPcHRpb25zPzogSW5zdGFuY2VNYXJrZXRPcHRpb25zXG5JbnN0YW5jZVJlcXVpcmVtZW50cz86IEluc3RhbmNlUmVxdWlyZW1lbnRzXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgUkFNIGRpc2suXG4gKiAgIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgUFYtR1JVQiBpbnN0ZWFkIG9mIGtlcm5lbHMgYW5kIFJBTSBkaXNrcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNlciBwcm92aWRlZCBrZXJuZWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvVXNlclByb3ZpZGVka2VybmVscy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cblJhbURpc2tJZD86IHN0cmluZ1xuQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb24/OiBDYXBhY2l0eVJlc2VydmF0aW9uU3BlY2lmaWNhdGlvblxuQ3JlZGl0U3BlY2lmaWNhdGlvbj86IENyZWRpdFNwZWNpZmljYXRpb25cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSB0YWdzIHRvIGFwcGx5IHRvIHJlc291cmNlcyB0aGF0IGFyZSBjcmVhdGVkIGR1cmluZyBpbnN0YW5jZSBsYXVuY2guXG4gKiAgYGBUYWdTcGVjaWZpY2F0aW9uYGAgaXMgYSBwcm9wZXJ0eSB0eXBlIG9mIFtUYWdTcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS5odG1sI2Nmbi1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLXRhZ3NwZWNpZmljYXRpb25zKS4gW1RhZ1NwZWNpZmljYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLmh0bWwjY2ZuLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEtdGFnc3BlY2lmaWNhdGlvbnMpIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSB0eXBlIG9mIHJlc291cmNlIHRvIHRhZy4gWW91IGNhbiBzcGVjaWZ5IHRhZ3MgZm9yIHRoZSBmb2xsb3dpbmcgcmVzb3VyY2UgdHlwZXMgb25seTogYGBpbnN0YW5jZWBgIHwgYGB2b2x1bWVgYCB8IGBgbmV0d29yay1pbnRlcmZhY2VgYCB8IGBgc3BvdC1pbnN0YW5jZXMtcmVxdWVzdGBgLiBJZiB0aGUgaW5zdGFuY2UgZG9lcyBub3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgdHlwZSB0aGF0IHlvdSBzcGVjaWZ5LCB0aGUgaW5zdGFuY2UgbGF1bmNoIGZhaWxzLiBGb3IgZXhhbXBsZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBpbmNsdWRlIGEgdm9sdW1lLlxuICogIFRvIHRhZyBhIHJlc291cmNlIGFmdGVyIGl0IGhhcyBiZWVuIGNyZWF0ZWQsIHNlZSBbQ3JlYXRlVGFnc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVUYWdzLmh0bWwpLlxuICovXG5SZXNvdXJjZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIHJlc291cmNlLlxuICovXG5UYWdzPzogVGFnW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgdGFnLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtSZXNvdXJjZSB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1yZXNvdXJjZS10YWdzLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgdGhlIG5ldHdvcmsgcGVyZm9ybWFuY2Ugb3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFQzIgaW5zdGFuY2UgYmFuZHdpZHRoIHdlaWdodGluZyBjb25maWd1cmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvY29uZmlndXJlLWJhbmR3aWR0aC13ZWlnaHRpbmcuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1BlcmZvcm1hbmNlT3B0aW9ucyB7XG4vKipcbiAqIFNwZWNpZnkgdGhlIGJhbmR3aWR0aCB3ZWlnaHRpbmcgb3B0aW9uIHRvIGJvb3N0IHRoZSBhc3NvY2lhdGVkIHR5cGUgb2YgYmFzZWxpbmUgYmFuZHdpZHRoLCBhcyBmb2xsb3dzOlxuICogICArIGRlZmF1bHQgVGhpcyBvcHRpb24gdXNlcyB0aGUgc3RhbmRhcmQgYmFuZHdpZHRoIGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIgaW5zdGFuY2UgdHlwZS4gKyB2cGMtMSBUaGlzIG9wdGlvbiBib29zdHMgeW91ciBuZXR3b3JraW5nIGJhc2VsaW5lIGJhbmR3aWR0aCBhbmQgcmVkdWNlcyB5b3VyIEVCUyBiYXNlbGluZSBiYW5kd2lkdGguICsgZWJzLTEgVGhpcyBvcHRpb24gYm9vc3RzIHlvdXIgRUJTIGJhc2VsaW5lIGJhbmR3aWR0aCBhbmQgcmVkdWNlcyB5b3VyIG5ldHdvcmtpbmcgYmFzZWxpbmUgYmFuZHdpZHRoLlxuICovXG5CYW5kd2lkdGhXZWlnaHRpbmc/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgYmxvY2sgZGV2aWNlIG1hcHBpbmcgZm9yIGEgbGF1bmNoIHRlbXBsYXRlLiBZb3UgbXVzdCBzcGVjaWZ5IGBgRGV2aWNlTmFtZWBgIHBsdXMgZXhhY3RseSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiBgYEVic2BgLCBgYE5vRGV2aWNlYGAsIG9yIGBgVmlydHVhbE5hbWVgYC5cbiAqICBgYEJsb2NrRGV2aWNlTWFwcGluZ2BgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tEZXZpY2VNYXBwaW5nIHtcbkVicz86IEVic1xuLyoqXG4gKiBUbyBvbWl0IHRoZSBkZXZpY2UgZnJvbSB0aGUgYmxvY2sgZGV2aWNlIG1hcHBpbmcsIHNwZWNpZnkgYW4gZW1wdHkgc3RyaW5nLlxuICovXG5Ob0RldmljZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmlydHVhbCBkZXZpY2UgbmFtZSAoZXBoZW1lcmFsTikuIEluc3RhbmNlIHN0b3JlIHZvbHVtZXMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIGZyb20gMC4gQW4gaW5zdGFuY2UgdHlwZSB3aXRoIDIgYXZhaWxhYmxlIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgY2FuIHNwZWNpZnkgbWFwcGluZ3MgZm9yIGVwaGVtZXJhbDAgYW5kIGVwaGVtZXJhbDEuIFRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgZGVwZW5kcyBvbiB0aGUgaW5zdGFuY2UgdHlwZS4gQWZ0ZXIgeW91IGNvbm5lY3QgdG8gdGhlIGluc3RhbmNlLCB5b3UgbXVzdCBtb3VudCB0aGUgdm9sdW1lLlxuICovXG5WaXJ0dWFsTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZGV2aWNlIG5hbWUgKGZvciBleGFtcGxlLCAvZGV2L3NkaCBvciB4dmRoKS5cbiAqL1xuRGV2aWNlTmFtZT86IHN0cmluZ1xufVxuLyoqXG4gKiBQYXJhbWV0ZXJzIHVzZWQgdG8gYXV0b21hdGljYWxseSBzZXQgdXAgRUJTIHZvbHVtZXMgd2hlbiB0aGUgaW5zdGFuY2UgaXMgbGF1bmNoZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWJzIHtcbi8qKlxuICogVGhlIElEIG9mIHRoZSBzbmFwc2hvdC5cbiAqL1xuU25hcHNob3RJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdm9sdW1lIHR5cGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQlMgdm9sdW1lIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWJzL2xhdGVzdC91c2VyZ3VpZGUvZWJzLXZvbHVtZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQlMgVXNlciBHdWlkZSouXG4gKi9cblZvbHVtZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogSWRlbnRpZmllciAoa2V5IElELCBrZXkgYWxpYXMsIGtleSBBUk4sIG9yIGFsaWFzIEFSTikgb2YgdGhlIGN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSB0byB1c2UgZm9yIEVCUyBlbmNyeXB0aW9uLlxuICovXG5LbXNLZXlJZD86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgRUJTIHZvbHVtZSBpcyBlbmNyeXB0ZWQuIEVuY3J5cHRlZCB2b2x1bWVzIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIGluc3RhbmNlcyB0aGF0IHN1cHBvcnQgQW1hem9uIEVCUyBlbmNyeXB0aW9uLiBJZiB5b3UgYXJlIGNyZWF0aW5nIGEgdm9sdW1lIGZyb20gYSBzbmFwc2hvdCwgeW91IGNhbid0IHNwZWNpZnkgYW4gZW5jcnlwdGlvbiB2YWx1ZS5cbiAqL1xuRW5jcnlwdGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgdGhyb3VnaHB1dCB0byBwcm92aXNpb24gZm9yIGEgYGBncDNgYCB2b2x1bWUsIHdpdGggYSBtYXhpbXVtIG9mIDEsMDAwIE1pQi9zLlxuICogIFZhbGlkIFJhbmdlOiBNaW5pbXVtIHZhbHVlIG9mIDEyNS4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwLlxuICovXG5UaHJvdWdocHV0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgSS9PIG9wZXJhdGlvbnMgcGVyIHNlY29uZCAoSU9QUykuIEZvciBgYGdwM2BgLCBgYGlvMWBgLCBhbmQgYGBpbzJgYCB2b2x1bWVzLCB0aGlzIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBJT1BTIHRoYXQgYXJlIHByb3Zpc2lvbmVkIGZvciB0aGUgdm9sdW1lLiBGb3IgYGBncDJgYCB2b2x1bWVzLCB0aGlzIHJlcHJlc2VudHMgdGhlIGJhc2VsaW5lIHBlcmZvcm1hbmNlIG9mIHRoZSB2b2x1bWUgYW5kIHRoZSByYXRlIGF0IHdoaWNoIHRoZSB2b2x1bWUgYWNjdW11bGF0ZXMgSS9PIGNyZWRpdHMgZm9yIGJ1cnN0aW5nLlxuICogIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBzdXBwb3J0ZWQgdmFsdWVzIGZvciBlYWNoIHZvbHVtZSB0eXBlOlxuICogICArICBgYGdwM2BgOiAzLDAwMCAtIDE2LDAwMCBJT1BTXG4gKiAgICsgIGBgaW8xYGA6IDEwMCAtIDY0LDAwMCBJT1BTXG4gKiAgICsgIGBgaW8yYGA6IDEwMCAtIDI1NiwwMDAgSU9QU1xuICogICBcbiAqICBGb3IgYGBpbzJgYCB2b2x1bWVzLCB5b3UgY2FuIGFjaGlldmUgdXAgdG8gMjU2LDAwMCBJT1BTIG9uIFtpbnN0YW5jZXMgYnVpbHQgb24gdGhlIE5pdHJvIFN5c3RlbV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VjMi9sYXRlc3QvaW5zdGFuY2V0eXBlcy9lYzItbml0cm8taW5zdGFuY2VzLmh0bWwpLiBPbiBvdGhlciBpbnN0YW5jZXMsIHlvdSBjYW4gYWNoaWV2ZSBwZXJmb3JtYW5jZSB1cCB0byAzMiwwMDAgSU9QUy5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQgZm9yIGBgaW8xYGAsIGBgaW8yYGAsIGFuZCBgYGdwM2BgIHZvbHVtZXMgb25seS5cbiAqL1xuSW9wcz86IG51bWJlclxuVm9sdW1lSW5pdGlhbGl6YXRpb25SYXRlPzogbnVtYmVyXG4vKipcbiAqIFRoZSBzaXplIG9mIHRoZSB2b2x1bWUsIGluIEdpQnMuIFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGEgc25hcHNob3QgSUQgb3IgYSB2b2x1bWUgc2l6ZS4gVGhlIGZvbGxvd2luZyBhcmUgdGhlIHN1cHBvcnRlZCB2b2x1bWVzIHNpemVzIGZvciBlYWNoIHZvbHVtZSB0eXBlOlxuICogICArICBgYGdwMmBgIGFuZCBgYGdwM2BgOiAxIC0gMTYsMzg0IEdpQlxuICogICArICBgYGlvMWBgOiA0IC0gMTYsMzg0IEdpQlxuICogICArICBgYGlvMmBgOiA0IC0gNjUsNTM2IEdpQlxuICogICArICBgYHN0MWBgIGFuZCBgYHNjMWBgOiAxMjUgLSAxNiwzODQgR2lCXG4gKiAgICsgIGBgc3RhbmRhcmRgYDogMSAtIDEwMjQgR2lCXG4gKi9cblZvbHVtZVNpemU/OiBudW1iZXJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIEVCUyB2b2x1bWUgaXMgZGVsZXRlZCBvbiBpbnN0YW5jZSB0ZXJtaW5hdGlvbi5cbiAqL1xuRGVsZXRlT25UZXJtaW5hdGlvbj86IGJvb2xlYW5cbn1cbi8qKlxuICogVGhlIG1haW50ZW5hbmNlIG9wdGlvbnMgb2YgeW91ciBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYWludGVuYW5jZU9wdGlvbnMge1xuLyoqXG4gKiBEaXNhYmxlcyB0aGUgYXV0b21hdGljIHJlY292ZXJ5IGJlaGF2aW9yIG9mIHlvdXIgaW5zdGFuY2Ugb3Igc2V0cyBpdCB0byBkZWZhdWx0LlxuICovXG5BdXRvUmVjb3Zlcnk/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIG5hbWUgb3IgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgYW4gSUFNIGluc3RhbmNlIHByb2ZpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWFtSW5zdGFuY2VQcm9maWxlIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBpbnN0YW5jZSBwcm9maWxlLlxuICovXG5Bcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGluc3RhbmNlIHByb2ZpbGUuXG4gKi9cbk5hbWU/OiBzdHJpbmdcbn1cbi8qKlxuICogQW1hem9uIEVsYXN0aWMgR3JhcGhpY3MgcmVhY2hlZCBlbmQgb2YgbGlmZSBvbiBKYW51YXJ5IDgsIDIwMjQuXG4gKiAgIFNwZWNpZmllcyBhIHNwZWNpZmljYXRpb24gZm9yIGFuIEVsYXN0aWMgR1BVIGZvciBhbiBBbWF6b24gRUMyIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBgYEVsYXN0aWNHcHVTcGVjaWZpY2F0aW9uYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIExhdW5jaFRlbXBsYXRlRGF0YV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGFzdGljR3B1U3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSB0eXBlIG9mIEVsYXN0aWMgR3JhcGhpY3MgYWNjZWxlcmF0b3IuXG4gKi9cblR5cGU/OiBzdHJpbmdcbn1cbi8qKlxuICogQW1hem9uIEVsYXN0aWMgSW5mZXJlbmNlIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuXG4gKiAgIFNwZWNpZmllcyBhbiBlbGFzdGljIGluZmVyZW5jZSBhY2NlbGVyYXRvci5cbiAqICBgYExhdW5jaFRlbXBsYXRlRWxhc3RpY0luZmVyZW5jZUFjY2VsZXJhdG9yYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIExhdW5jaFRlbXBsYXRlRGF0YV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZUVsYXN0aWNJbmZlcmVuY2VBY2NlbGVyYXRvciB7XG4vKipcbiAqIFRoZSB0eXBlIG9mIGVsYXN0aWMgaW5mZXJlbmNlIGFjY2VsZXJhdG9yLiBUaGUgcG9zc2libGUgdmFsdWVzIGFyZSBlaWExLm1lZGl1bSwgZWlhMS5sYXJnZSwgYW5kIGVpYTEueGxhcmdlLlxuICovXG5UeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgZWxhc3RpYyBpbmZlcmVuY2UgYWNjZWxlcmF0b3JzIHRvIGF0dGFjaCB0byB0aGUgaW5zdGFuY2UuIFxuICogIERlZmF1bHQ6IDFcbiAqL1xuQ291bnQ/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIHBsYWNlbWVudCBmb3IgdGhlIGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlbWVudCB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwbGFjZW1lbnQgZ3JvdXAgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuR3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSB0ZW5hbmN5IG9mIHRoZSBpbnN0YW5jZS4gQW4gaW5zdGFuY2Ugd2l0aCBhIHRlbmFuY3kgb2YgZGVkaWNhdGVkIHJ1bnMgb24gc2luZ2xlLXRlbmFudCBoYXJkd2FyZS5cbiAqL1xuVGVuYW5jeT86IHN0cmluZ1xuLyoqXG4gKiBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS5cbiAqL1xuU3ByZWFkRG9tYWluPzogc3RyaW5nXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgdGhlIHBhcnRpdGlvbiB0aGUgaW5zdGFuY2Ugc2hvdWxkIGxhdW5jaCBpbi4gVmFsaWQgb25seSBpZiB0aGUgcGxhY2VtZW50IGdyb3VwIHN0cmF0ZWd5IGlzIHNldCB0byBgYHBhcnRpdGlvbmBgLlxuICovXG5QYXJ0aXRpb25OdW1iZXI/OiBudW1iZXJcbi8qKlxuICogVGhlIEF2YWlsYWJpbGl0eSBab25lIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkF2YWlsYWJpbGl0eVpvbmU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFmZmluaXR5IHNldHRpbmcgZm9yIGFuIGluc3RhbmNlIG9uIGEgRGVkaWNhdGVkIEhvc3QuXG4gKi9cbkFmZmluaXR5Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgRGVkaWNhdGVkIEhvc3QgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuSG9zdElkPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBUk4gb2YgdGhlIGhvc3QgcmVzb3VyY2UgZ3JvdXAgaW4gd2hpY2ggdG8gbGF1bmNoIHRoZSBpbnN0YW5jZXMuIElmIHlvdSBzcGVjaWZ5IGEgaG9zdCByZXNvdXJjZSBncm91cCBBUk4sIG9taXQgdGhlICpUZW5hbmN5KiBwYXJhbWV0ZXIgb3Igc2V0IGl0IHRvIGBgaG9zdGBgLlxuICovXG5Ib3N0UmVzb3VyY2VHcm91cEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgR3JvdXAgSWQgb2YgYSBwbGFjZW1lbnQgZ3JvdXAuIFlvdSBtdXN0IHNwZWNpZnkgdGhlIFBsYWNlbWVudCBHcm91cCAqR3JvdXAgSWQqIHRvIGxhdW5jaCBhbiBpbnN0YW5jZSBpbiBhIHNoYXJlZCBwbGFjZW1lbnQgZ3JvdXAuXG4gKi9cbkdyb3VwSWQ/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBwYXJhbWV0ZXJzIGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlLlxuICogIGBgTmV0d29ya0ludGVyZmFjZWBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya0ludGVyZmFjZSB7XG4vKipcbiAqIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuRGVzY3JpcHRpb24/OiBzdHJpbmdcbi8qKlxuICogVGhlIHByaW1hcnkgcHJpdmF0ZSBJUHY0IGFkZHJlc3Mgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5Qcml2YXRlSXBBZGRyZXNzPzogc3RyaW5nXG4vKipcbiAqIE9uZSBvciBtb3JlIHByaXZhdGUgSVB2NCBhZGRyZXNzZXMuXG4gKi9cblByaXZhdGVJcEFkZHJlc3Nlcz86IFByaXZhdGVJcEFkZFtdXG4vKipcbiAqIFRoZSBudW1iZXIgb2Ygc2Vjb25kYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzZXMgdG8gYXNzaWduIHRvIGEgbmV0d29yayBpbnRlcmZhY2UuXG4gKi9cblNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NDb3VudD86IG51bWJlclxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIElQdjYgcHJlZml4ZXMgdG8gYmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0byB0aGUgbmV0d29yayBpbnRlcmZhY2UuIFlvdSBjYW5ub3QgdXNlIHRoaXMgb3B0aW9uIGlmIHlvdSB1c2UgdGhlIGBgSXB2NlByZWZpeGBgIG9wdGlvbi5cbiAqL1xuSXB2NlByZWZpeENvdW50PzogbnVtYmVyXG4vKipcbiAqIE9uZSBvciBtb3JlIElQdjQgcHJlZml4ZXMgdG8gYmUgYXNzaWduZWQgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBZb3UgY2Fubm90IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UgdXNlIHRoZSBgYElwdjRQcmVmaXhDb3VudGBgIG9wdGlvbi5cbiAqL1xuSXB2NFByZWZpeGVzPzogSXB2NFByZWZpeFNwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBUaGUgZGV2aWNlIGluZGV4IGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2UgYXR0YWNobWVudC4gVGhlIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2UgaGFzIGEgZGV2aWNlIGluZGV4IG9mIDAuIElmIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBvZiB0eXBlIGBgaW50ZXJmYWNlYGAsIHlvdSBtdXN0IHNwZWNpZnkgYSBkZXZpY2UgaW5kZXguXG4gKiAgSWYgeW91IGNyZWF0ZSBhIGxhdW5jaCB0ZW1wbGF0ZSB0aGF0IGluY2x1ZGVzIHNlY29uZGFyeSBuZXR3b3JrIGludGVyZmFjZXMgYnV0IG5vIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2UsIGFuZCB5b3Ugc3BlY2lmeSBpdCB1c2luZyB0aGUgYGBMYXVuY2hUZW1wbGF0ZWBgIHByb3BlcnR5IG9mIGBgQVdTOjpFQzI6Okluc3RhbmNlYGAsIHRoZW4geW91IG11c3QgaW5jbHVkZSBhIHByaW1hcnkgbmV0d29yayBpbnRlcmZhY2UgdXNpbmcgdGhlIGBgTmV0d29ya0ludGVyZmFjZXNgYCBwcm9wZXJ0eSBvZiBgYEFXUzo6RUMyOjpJbnN0YW5jZWBgLlxuICovXG5EZXZpY2VJbmRleD86IG51bWJlclxuLyoqXG4gKiBUaGUgcHJpbWFyeSBJUHY2IGFkZHJlc3Mgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBXaGVuIHlvdSBlbmFibGUgYW4gSVB2NiBHVUEgYWRkcmVzcyB0byBiZSBhIHByaW1hcnkgSVB2NiwgdGhlIGZpcnN0IElQdjYgR1VBIHdpbGwgYmUgbWFkZSB0aGUgcHJpbWFyeSBJUHY2IGFkZHJlc3MgdW50aWwgdGhlIGluc3RhbmNlIGlzIHRlcm1pbmF0ZWQgb3IgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGRldGFjaGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBwcmltYXJ5IElQdjYgYWRkcmVzc2VzLCBzZWUgW1J1bkluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SdW5JbnN0YW5jZXMuaHRtbCkuXG4gKi9cblByaW1hcnlJcHY2PzogYm9vbGVhblxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIElQdjQgcHJlZml4ZXMgdG8gYmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0byB0aGUgbmV0d29yayBpbnRlcmZhY2UuIFlvdSBjYW5ub3QgdXNlIHRoaXMgb3B0aW9uIGlmIHlvdSB1c2UgdGhlIGBgSXB2NFByZWZpeGBgIG9wdGlvbi5cbiAqL1xuSXB2NFByZWZpeENvdW50PzogbnVtYmVyXG4vKipcbiAqIE9uZSBvciBtb3JlIElQdjYgcHJlZml4ZXMgdG8gYmUgYXNzaWduZWQgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBZb3UgY2Fubm90IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UgdXNlIHRoZSBgYElwdjZQcmVmaXhDb3VudGBgIG9wdGlvbi5cbiAqL1xuSXB2NlByZWZpeGVzPzogSXB2NlByZWZpeFNwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIHN1Ym5ldCBmb3IgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5TdWJuZXRJZD86IHN0cmluZ1xuLyoqXG4gKiBPbmUgb3IgbW9yZSBzcGVjaWZpYyBJUHY2IGFkZHJlc3NlcyBmcm9tIHRoZSBJUHY2IENJRFIgYmxvY2sgcmFuZ2Ugb2YgeW91ciBzdWJuZXQuIFlvdSBjYW4ndCB1c2UgdGhpcyBvcHRpb24gaWYgeW91J3JlIHNwZWNpZnlpbmcgYSBudW1iZXIgb2YgSVB2NiBhZGRyZXNzZXMuXG4gKi9cbklwdjZBZGRyZXNzZXM/OiBJcHY2QWRkW11cbi8qKlxuICogQXNzb2NpYXRlcyBhIHB1YmxpYyBJUHY0IGFkZHJlc3Mgd2l0aCBldGgwIGZvciBhIG5ldyBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBBV1MgY2hhcmdlcyBmb3IgYWxsIHB1YmxpYyBJUHY0IGFkZHJlc3NlcywgaW5jbHVkaW5nIHB1YmxpYyBJUHY0IGFkZHJlc3NlcyBhc3NvY2lhdGVkIHdpdGggcnVubmluZyBpbnN0YW5jZXMgYW5kIEVsYXN0aWMgSVAgYWRkcmVzc2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSAqUHVibGljIElQdjQgQWRkcmVzcyogdGFiIG9uIHRoZSBbQW1hem9uIFZQQyBwcmljaW5nIHBhZ2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvcHJpY2luZy8pLlxuICovXG5Bc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3M/OiBib29sZWFuXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UuXG4gKi9cbk5ldHdvcmtJbnRlcmZhY2VJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgaW5kZXggb2YgdGhlIG5ldHdvcmsgY2FyZC4gU29tZSBpbnN0YW5jZSB0eXBlcyBzdXBwb3J0IG11bHRpcGxlIG5ldHdvcmsgY2FyZHMuIFRoZSBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIG11c3QgYmUgYXNzaWduZWQgdG8gbmV0d29yayBjYXJkIGluZGV4IDAuIFRoZSBkZWZhdWx0IGlzIG5ldHdvcmsgY2FyZCBpbmRleCAwLlxuICovXG5OZXR3b3JrQ2FyZEluZGV4PzogbnVtYmVyXG4vKipcbiAqIFRoZSB0eXBlIG9mIG5ldHdvcmsgaW50ZXJmYWNlLiBUbyBjcmVhdGUgYW4gRWxhc3RpYyBGYWJyaWMgQWRhcHRlciAoRUZBKSwgc3BlY2lmeSBgYGVmYWBgIG9yIGBgZWZhYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0VsYXN0aWMgRmFicmljIEFkYXB0ZXIgZm9yIEFJL01MIGFuZCBIUEMgd29ya2xvYWRzIG9uIEFtYXpvbiBFQzJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9lZmEuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogIElmIHlvdSBhcmUgbm90IGNyZWF0aW5nIGFuIEVGQSwgc3BlY2lmeSBgYGludGVyZmFjZWBgIG9yIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKiAgSWYgeW91IHNwZWNpZnkgYGBlZmEtb25seWBgLCBkbyBub3QgYXNzaWduIGFueSBJUCBhZGRyZXNzZXMgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBFRkEtb25seSBuZXR3b3JrIGludGVyZmFjZXMgZG8gbm90IHN1cHBvcnQgSVAgYWRkcmVzc2VzLlxuICogIFZhbGlkIHZhbHVlczogYGBpbnRlcmZhY2VgYCB8IGBgZWZhYGAgfCBgYGVmYS1vbmx5YGBcbiAqL1xuSW50ZXJmYWNlVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBBc3NvY2lhdGVzIGEgQ2FycmllciBJUCBhZGRyZXNzIHdpdGggZXRoMCBmb3IgYSBuZXcgbmV0d29yayBpbnRlcmZhY2UuXG4gKiAgVXNlIHRoaXMgb3B0aW9uIHdoZW4geW91IGxhdW5jaCBhbiBpbnN0YW5jZSBpbiBhIFdhdmVsZW5ndGggWm9uZSBhbmQgd2FudCB0byBhc3NvY2lhdGUgYSBDYXJyaWVyIElQIGFkZHJlc3Mgd2l0aCB0aGUgbmV0d29yayBpbnRlcmZhY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENhcnJpZXIgSVAgYWRkcmVzc2VzLCBzZWUgW0NhcnJpZXIgSVAgYWRkcmVzc2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vd2F2ZWxlbmd0aC9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvaG93LXdhdmVsZW5ndGhzLXdvcmsuaHRtbCNwcm92aWRlci1vd25lZC1pcCkgaW4gdGhlICpEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5Bc3NvY2lhdGVDYXJyaWVySXBBZGRyZXNzPzogYm9vbGVhblxuRW5hU3JkU3BlY2lmaWNhdGlvbj86IEVuYVNyZFNwZWNpZmljYXRpb25cbi8qKlxuICogVGhlIG51bWJlciBvZiBJUHY2IGFkZHJlc3NlcyB0byBhc3NpZ24gdG8gYSBuZXR3b3JrIGludGVyZmFjZS4gQW1hem9uIEVDMiBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgdGhlIElQdjYgYWRkcmVzc2VzIGZyb20gdGhlIHN1Ym5ldCByYW5nZS4gWW91IGNhbid0IHVzZSB0aGlzIG9wdGlvbiBpZiBzcGVjaWZ5aW5nIHNwZWNpZmljIElQdjYgYWRkcmVzc2VzLlxuICovXG5JcHY2QWRkcmVzc0NvdW50PzogbnVtYmVyXG4vKipcbiAqIFRoZSBJRHMgb2Ygb25lIG9yIG1vcmUgc2VjdXJpdHkgZ3JvdXBzLlxuICovXG5Hcm91cHM/OiBzdHJpbmdbXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgZGVsZXRlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyB0ZXJtaW5hdGVkLlxuICovXG5EZWxldGVPblRlcm1pbmF0aW9uPzogYm9vbGVhblxuQ29ubmVjdGlvblRyYWNraW5nU3BlY2lmaWNhdGlvbj86IENvbm5lY3Rpb25UcmFja2luZ1NwZWNpZmljYXRpb25cbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgc2Vjb25kYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzIGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlLlxuICogIGBgUHJpdmF0ZUlwQWRkYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIE5ldHdvcmtJbnRlcmZhY2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1uZXR3b3JraW50ZXJmYWNlLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaXZhdGVJcEFkZCB7XG4vKipcbiAqIFRoZSBwcml2YXRlIElQdjQgYWRkcmVzcy5cbiAqL1xuUHJpdmF0ZUlwQWRkcmVzcz86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcHJpdmF0ZSBJUHY0IGFkZHJlc3MgaXMgdGhlIHByaW1hcnkgcHJpdmF0ZSBJUHY0IGFkZHJlc3MuIE9ubHkgb25lIElQdjQgYWRkcmVzcyBjYW4gYmUgZGVzaWduYXRlZCBhcyBwcmltYXJ5LlxuICovXG5QcmltYXJ5PzogYm9vbGVhblxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYW4gSVB2NCBwcmVmaXggZm9yIGEgbmV0d29yayBpbnRlcmZhY2UuXG4gKiAgYGBJcHY0UHJlZml4U3BlY2lmaWNhdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBOZXR3b3JrSW50ZXJmYWNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbmV0d29ya2ludGVyZmFjZS5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJcHY0UHJlZml4U3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBJUHY0IHByZWZpeC4gRm9yIGluZm9ybWF0aW9uLCBzZWUgW0Fzc2lnbmluZyBwcmVmaXhlcyB0byBuZXR3b3JrIGludGVyZmFjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9lYzItcHJlZml4LWVuaS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbklwdjRQcmVmaXg/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIElQdjYgcHJlZml4IGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlLlxuICogIGBgSXB2NlByZWZpeFNwZWNpZmljYXRpb25gYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgTmV0d29ya0ludGVyZmFjZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLW5ldHdvcmtpbnRlcmZhY2UuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXB2NlByZWZpeFNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgSVB2NiBwcmVmaXguXG4gKi9cbklwdjZQcmVmaXg/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIElQdjYgYWRkcmVzcyBpbiBhbiBBbWF6b24gRUMyIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBgYElwdjZBZGRgYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgTmV0d29ya0ludGVyZmFjZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLW5ldHdvcmtpbnRlcmZhY2UuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXB2NkFkZCB7XG4vKipcbiAqIE9uZSBvciBtb3JlIHNwZWNpZmljIElQdjYgYWRkcmVzc2VzIGZyb20gdGhlIElQdjYgQ0lEUiBibG9jayByYW5nZSBvZiB5b3VyIHN1Ym5ldC4gWW91IGNhbid0IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UncmUgc3BlY2lmeWluZyBhIG51bWJlciBvZiBJUHY2IGFkZHJlc3Nlcy5cbiAqL1xuSXB2NkFkZHJlc3M/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIEVOQSBFeHByZXNzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmFTcmRTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgRU5BIEV4cHJlc3MgaXMgZW5hYmxlZCBmb3IgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5FbmFTcmRFbmFibGVkPzogYm9vbGVhblxuRW5hU3JkVWRwU3BlY2lmaWNhdGlvbj86IEVuYVNyZFVkcFNwZWNpZmljYXRpb25cbn1cbi8qKlxuICogQ29uZmlndXJlcyBFTkEgRXhwcmVzcyBmb3IgVURQIG5ldHdvcmsgdHJhZmZpYy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmFTcmRVZHBTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgVURQIHRyYWZmaWMgdG8gYW5kIGZyb20gdGhlIGluc3RhbmNlIHVzZXMgRU5BIEV4cHJlc3MuIFRvIHNwZWNpZnkgdGhpcyBzZXR0aW5nLCB5b3UgbXVzdCBmaXJzdCBlbmFibGUgRU5BIEV4cHJlc3MuXG4gKi9cbkVuYVNyZFVkcEVuYWJsZWQ/OiBib29sZWFuXG59XG4vKipcbiAqIEEgY29ubmVjdGlvbiB0cmFja2luZyBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvblRyYWNraW5nU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRpbWVvdXQgKGluIHNlY29uZHMpIGZvciBpZGxlIFVEUCBmbG93cyB0aGF0IGhhdmUgc2VlbiB0cmFmZmljIG9ubHkgaW4gYSBzaW5nbGUgZGlyZWN0aW9uIG9yIGEgc2luZ2xlIHJlcXVlc3QtcmVzcG9uc2UgdHJhbnNhY3Rpb24uIE1pbjogMzAgc2Vjb25kcy4gTWF4OiA2MCBzZWNvbmRzLiBEZWZhdWx0OiAzMCBzZWNvbmRzLlxuICovXG5VZHBUaW1lb3V0PzogbnVtYmVyXG4vKipcbiAqIFRpbWVvdXQgKGluIHNlY29uZHMpIGZvciBpZGxlIFRDUCBjb25uZWN0aW9ucyBpbiBhbiBlc3RhYmxpc2hlZCBzdGF0ZS4gTWluOiA2MCBzZWNvbmRzLiBNYXg6IDQzMjAwMCBzZWNvbmRzICg1IGRheXMpLiBEZWZhdWx0OiA0MzIwMDAgc2Vjb25kcy4gUmVjb21tZW5kZWQ6IExlc3MgdGhhbiA0MzIwMDAgc2Vjb25kcy5cbiAqL1xuVGNwRXN0YWJsaXNoZWRUaW1lb3V0PzogbnVtYmVyXG4vKipcbiAqIFRpbWVvdXQgKGluIHNlY29uZHMpIGZvciBpZGxlIFVEUCBmbG93cyBjbGFzc2lmaWVkIGFzIHN0cmVhbXMgd2hpY2ggaGF2ZSBzZWVuIG1vcmUgdGhhbiBvbmUgcmVxdWVzdC1yZXNwb25zZSB0cmFuc2FjdGlvbi4gTWluOiA2MCBzZWNvbmRzLiBNYXg6IDE4MCBzZWNvbmRzICgzIG1pbnV0ZXMpLiBEZWZhdWx0OiAxODAgc2Vjb25kcy5cbiAqL1xuVWRwU3RyZWFtVGltZW91dD86IG51bWJlclxufVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5zdGFuY2UgaXMgZW5hYmxlZCBmb3IgQVdTIE5pdHJvIEVuY2xhdmVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtXaGF0IGlzIE5pdHJvIEVuY2xhdmVzP10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VuY2xhdmVzL2xhdGVzdC91c2VyL25pdHJvLWVuY2xhdmUuaHRtbCkgaW4gdGhlICpOaXRybyBFbmNsYXZlcyBVc2VyIEd1aWRlKi5cbiAqICBZb3UgY2FuJ3QgZW5hYmxlIEFXUyBOaXRybyBFbmNsYXZlcyBhbmQgaGliZXJuYXRpb24gb24gdGhlIHNhbWUgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5jbGF2ZU9wdGlvbnMge1xuLyoqXG4gKiBJZiB0aGlzIHBhcmFtZXRlciBpcyBzZXQgdG8gYGB0cnVlYGAsIHRoZSBpbnN0YW5jZSBpcyBlbmFibGVkIGZvciBBV1MgTml0cm8gRW5jbGF2ZXM7IG90aGVyd2lzZSwgaXQgaXMgbm90IGVuYWJsZWQgZm9yIEFXUyBOaXRybyBFbmNsYXZlcy5cbiAqL1xuRW5hYmxlZD86IGJvb2xlYW5cbn1cbi8qKlxuICogVGhlIG1vbml0b3JpbmcgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nIHtcbi8qKlxuICogU3BlY2lmeSBgYHRydWVgYCB0byBlbmFibGUgZGV0YWlsZWQgbW9uaXRvcmluZy4gT3RoZXJ3aXNlLCBiYXNpYyBtb25pdG9yaW5nIGlzIGVuYWJsZWQuXG4gKi9cbkVuYWJsZWQ/OiBib29sZWFuXG59XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGFuIGluc3RhbmNlIGlzIGVuYWJsZWQgZm9yIGhpYmVybmF0aW9uLiBUaGlzIHBhcmFtZXRlciBpcyB2YWxpZCBvbmx5IGlmIHRoZSBpbnN0YW5jZSBtZWV0cyB0aGUgW2hpYmVybmF0aW9uIHByZXJlcXVpc2l0ZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9oaWJlcm5hdGluZy1wcmVyZXF1aXNpdGVzLmh0bWwpLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtIaWJlcm5hdGUgeW91ciBBbWF6b24gRUMyIGluc3RhbmNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvSGliZXJuYXRlLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIaWJlcm5hdGlvbk9wdGlvbnMge1xuLyoqXG4gKiBJZiB5b3Ugc2V0IHRoaXMgcGFyYW1ldGVyIHRvIGBgdHJ1ZWBgLCB0aGUgaW5zdGFuY2UgaXMgZW5hYmxlZCBmb3IgaGliZXJuYXRpb24uXG4gKiAgRGVmYXVsdDogYGBmYWxzZWBgXG4gKi9cbkNvbmZpZ3VyZWQ/OiBib29sZWFuXG59XG4vKipcbiAqIFRoZSBtZXRhZGF0YSBvcHRpb25zIGZvciB0aGUgaW5zdGFuY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyZSB0aGUgSW5zdGFuY2UgTWV0YWRhdGEgU2VydmljZSBvcHRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvY29uZmlndXJpbmctaW5zdGFuY2UtbWV0YWRhdGEtb3B0aW9ucy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFPcHRpb25zIHtcbi8qKlxuICogVGhlIGRlc2lyZWQgSFRUUCBQVVQgcmVzcG9uc2UgaG9wIGxpbWl0IGZvciBpbnN0YW5jZSBtZXRhZGF0YSByZXF1ZXN0cy4gVGhlIGxhcmdlciB0aGUgbnVtYmVyLCB0aGUgZnVydGhlciBpbnN0YW5jZSBtZXRhZGF0YSByZXF1ZXN0cyBjYW4gdHJhdmVsLlxuICogIERlZmF1bHQ6IGBgMWBgXG4gKiAgUG9zc2libGUgdmFsdWVzOiBJbnRlZ2VycyBmcm9tIDEgdG8gNjRcbiAqL1xuSHR0cFB1dFJlc3BvbnNlSG9wTGltaXQ/OiBudW1iZXJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgSU1EU3YyIGlzIHJlcXVpcmVkLlxuICogICArICBgYG9wdGlvbmFsYGAgLSBJTURTdjIgaXMgb3B0aW9uYWwuIFlvdSBjYW4gY2hvb3NlIHdoZXRoZXIgdG8gc2VuZCBhIHNlc3Npb24gdG9rZW4gaW4geW91ciBpbnN0YW5jZSBtZXRhZGF0YSByZXRyaWV2YWwgcmVxdWVzdHMuIElmIHlvdSByZXRyaWV2ZSBJQU0gcm9sZSBjcmVkZW50aWFscyB3aXRob3V0IGEgc2Vzc2lvbiB0b2tlbiwgeW91IHJlY2VpdmUgdGhlIElNRFN2MSByb2xlIGNyZWRlbnRpYWxzLiBJZiB5b3UgcmV0cmlldmUgSUFNIHJvbGUgY3JlZGVudGlhbHMgdXNpbmcgYSB2YWxpZCBzZXNzaW9uIHRva2VuLCB5b3UgcmVjZWl2ZSB0aGUgSU1EU3YyIHJvbGUgY3JlZGVudGlhbHMuXG4gKiAgICsgIGBgcmVxdWlyZWRgYCAtIElNRFN2MiBpcyByZXF1aXJlZC4gWW91IG11c3Qgc2VuZCBhIHNlc3Npb24gdG9rZW4gaW4geW91ciBpbnN0YW5jZSBtZXRhZGF0YSByZXRyaWV2YWwgcmVxdWVzdHMuIFdpdGggdGhpcyBvcHRpb24sIHJldHJpZXZpbmcgdGhlIElBTSByb2xlIGNyZWRlbnRpYWxzIGFsd2F5cyByZXR1cm5zIElNRFN2MiBjcmVkZW50aWFsczsgSU1EU3YxIGNyZWRlbnRpYWxzIGFyZSBub3QgYXZhaWxhYmxlLlxuICogICBcbiAqICBEZWZhdWx0OiBJZiB0aGUgdmFsdWUgb2YgYGBJbWRzU3VwcG9ydGBgIGZvciB0aGUgQW1hem9uIE1hY2hpbmUgSW1hZ2UgKEFNSSkgZm9yIHlvdXIgaW5zdGFuY2UgaXMgYGB2Mi4wYGAsIHRoZSBkZWZhdWx0IGlzIGBgcmVxdWlyZWRgYC5cbiAqL1xuSHR0cFRva2Vucz86IHN0cmluZ1xuLyoqXG4gKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBJUHY2IGVuZHBvaW50IGZvciB0aGUgaW5zdGFuY2UgbWV0YWRhdGEgc2VydmljZS5cbiAqICBEZWZhdWx0OiBgYGRpc2FibGVkYGBcbiAqL1xuSHR0cFByb3RvY29sSXB2Nj86IHN0cmluZ1xuLyoqXG4gKiBTZXQgdG8gYGBlbmFibGVkYGAgdG8gYWxsb3cgYWNjZXNzIHRvIGluc3RhbmNlIHRhZ3MgZnJvbSB0aGUgaW5zdGFuY2UgbWV0YWRhdGEuIFNldCB0byBgYGRpc2FibGVkYGAgdG8gdHVybiBvZmYgYWNjZXNzIHRvIGluc3RhbmNlIHRhZ3MgZnJvbSB0aGUgaW5zdGFuY2UgbWV0YWRhdGEuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1ZpZXcgdGFncyBmb3IgeW91ciBFQzIgaW5zdGFuY2VzIHVzaW5nIGluc3RhbmNlIG1ldGFkYXRhXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvd29yay13aXRoLXRhZ3MtaW4tSU1EUy5odG1sKS5cbiAqICBEZWZhdWx0OiBgYGRpc2FibGVkYGBcbiAqL1xuSW5zdGFuY2VNZXRhZGF0YVRhZ3M/OiBzdHJpbmdcbi8qKlxuICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgSFRUUCBtZXRhZGF0YSBlbmRwb2ludCBvbiB5b3VyIGluc3RhbmNlcy4gSWYgdGhlIHBhcmFtZXRlciBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBgYGVuYWJsZWRgYC5cbiAqICAgSWYgeW91IHNwZWNpZnkgYSB2YWx1ZSBvZiBgYGRpc2FibGVkYGAsIHlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIGFjY2VzcyB5b3VyIGluc3RhbmNlIG1ldGFkYXRhLlxuICovXG5IdHRwRW5kcG9pbnQ/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgbGljZW5zZSBjb25maWd1cmF0aW9uIGZvciBhbiBpbnN0YW5jZS5cbiAqICBgYExpY2Vuc2VTcGVjaWZpY2F0aW9uYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIExhdW5jaFRlbXBsYXRlRGF0YV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWNlbnNlU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgbGljZW5zZSBjb25maWd1cmF0aW9uLlxuICovXG5MaWNlbnNlQ29uZmlndXJhdGlvbkFybj86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgQ1BVIG9wdGlvbnMgZm9yIHRoZSBpbnN0YW5jZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ1BVIG9wdGlvbnMgZm9yIEFtYXpvbiBFQzIgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaW5zdGFuY2Utb3B0aW1pemUtY3B1Lmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcHVPcHRpb25zIHtcbi8qKlxuICogVGhlIG51bWJlciBvZiB0aHJlYWRzIHBlciBDUFUgY29yZS4gVG8gZGlzYWJsZSBtdWx0aXRocmVhZGluZyBmb3IgdGhlIGluc3RhbmNlLCBzcGVjaWZ5IGEgdmFsdWUgb2YgYGAxYGAuIE90aGVyd2lzZSwgc3BlY2lmeSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBgYDJgYC5cbiAqL1xuVGhyZWFkc1BlckNvcmU/OiBudW1iZXJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBpbnN0YW5jZSBmb3IgQU1EIFNFVi1TTlAuIEFNRCBTRVYtU05QIGlzIHN1cHBvcnRlZCB3aXRoIE02YSwgUjZhLCBhbmQgQzZhIGluc3RhbmNlIHR5cGVzIG9ubHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FNRCBTRVYtU05QIGZvciBBbWF6b24gRUMyIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL3Nldi1zbnAuaHRtbCkuXG4gKi9cbkFtZFNldlNucD86IChcImVuYWJsZWRcIiB8IFwiZGlzYWJsZWRcIilcbi8qKlxuICogVGhlIG51bWJlciBvZiBDUFUgY29yZXMgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuQ29yZUNvdW50PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBob3N0bmFtZSB0eXBlIGZvciBFQzIgaW5zdGFuY2VzIGxhdW5jaGVkIGludG8gdGhpcyBzdWJuZXQgYW5kIGhvdyBETlMgQSBhbmQgQUFBQSByZWNvcmQgcXVlcmllcyBzaG91bGQgYmUgaGFuZGxlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiBpbnN0YW5jZSBob3N0bmFtZSB0eXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1pbnN0YW5jZS1uYW1pbmcuaHRtbCkgaW4gdGhlICpVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlRG5zTmFtZU9wdGlvbnMge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXNwb25kIHRvIEROUyBxdWVyaWVzIGZvciBpbnN0YW5jZSBob3N0bmFtZXMgd2l0aCBETlMgQSByZWNvcmRzLlxuICovXG5FbmFibGVSZXNvdXJjZU5hbWVEbnNBUmVjb3JkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBob3N0bmFtZSBmb3IgRUMyIGluc3RhbmNlcy4gRm9yIElQdjQgb25seSBzdWJuZXRzLCBhbiBpbnN0YW5jZSBETlMgbmFtZSBtdXN0IGJlIGJhc2VkIG9uIHRoZSBpbnN0YW5jZSBJUHY0IGFkZHJlc3MuIEZvciBJUHY2IG9ubHkgc3VibmV0cywgYW4gaW5zdGFuY2UgRE5TIG5hbWUgbXVzdCBiZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgSUQuIEZvciBkdWFsLXN0YWNrIHN1Ym5ldHMsIHlvdSBjYW4gc3BlY2lmeSB3aGV0aGVyIEROUyBuYW1lcyB1c2UgdGhlIGluc3RhbmNlIElQdjQgYWRkcmVzcyBvciB0aGUgaW5zdGFuY2UgSUQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgaG9zdG5hbWUgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9lYzItaW5zdGFuY2UtbmFtaW5nLmh0bWwpIGluIHRoZSAqVXNlciBHdWlkZSouXG4gKi9cbkhvc3RuYW1lVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXNwb25kIHRvIEROUyBxdWVyaWVzIGZvciBpbnN0YW5jZSBob3N0bmFtZXMgd2l0aCBETlMgQUFBQSByZWNvcmRzLlxuICovXG5FbmFibGVSZXNvdXJjZU5hbWVEbnNBQUFBUmVjb3JkPzogYm9vbGVhblxufVxuLyoqXG4gKiBUaGUgbWFya2V0IChwdXJjaGFzaW5nKSBvcHRpb24gZm9yIHRoZSBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VNYXJrZXRPcHRpb25zIHtcblNwb3RPcHRpb25zPzogU3BvdE9wdGlvbnNcbi8qKlxuICogVGhlIG1hcmtldCB0eXBlLlxuICovXG5NYXJrZXRUeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBvcHRpb25zIGZvciBTcG90IEluc3RhbmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcG90T3B0aW9ucyB7XG4vKipcbiAqIFRoZSBTcG90IEluc3RhbmNlIHJlcXVlc3QgdHlwZS5cbiAqICBJZiB5b3UgYXJlIHVzaW5nIFNwb3QgSW5zdGFuY2VzIHdpdGggYW4gQXV0byBTY2FsaW5nIGdyb3VwLCB1c2UgYGBvbmUtdGltZWBgIHJlcXVlc3RzLCBhcyB0aGUgQVNsb25nIHNlcnZpY2UgaGFuZGxlcyByZXF1ZXN0aW5nIG5ldyBTcG90IEluc3RhbmNlcyB3aGVuZXZlciB0aGUgZ3JvdXAgaXMgYmVsb3cgaXRzIGRlc2lyZWQgY2FwYWNpdHkuXG4gKi9cblNwb3RJbnN0YW5jZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGJlaGF2aW9yIHdoZW4gYSBTcG90IEluc3RhbmNlIGlzIGludGVycnVwdGVkLiBUaGUgZGVmYXVsdCBpcyBgYHRlcm1pbmF0ZWBgLlxuICovXG5JbnN0YW5jZUludGVycnVwdGlvbkJlaGF2aW9yPzogc3RyaW5nXG4vKipcbiAqIFRoZSBtYXhpbXVtIGhvdXJseSBwcmljZSB5b3UncmUgd2lsbGluZyB0byBwYXkgZm9yIGEgU3BvdCBJbnN0YW5jZS4gV2UgZG8gbm90IHJlY29tbWVuZCB1c2luZyB0aGlzIHBhcmFtZXRlciBiZWNhdXNlIGl0IGNhbiBsZWFkIHRvIGluY3JlYXNlZCBpbnRlcnJ1cHRpb25zLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgdGhpcyBwYXJhbWV0ZXIsIHlvdSB3aWxsIHBheSB0aGUgY3VycmVudCBTcG90IHByaWNlLiBJZiB5b3UgZG8gc3BlY2lmeSB0aGlzIHBhcmFtZXRlciwgaXQgbXVzdCBiZSBtb3JlIHRoYW4gVVNEICQwLjAwMS4gU3BlY2lmeWluZyBhIHZhbHVlIGJlbG93IFVTRCAkMC4wMDEgd2lsbCByZXN1bHQgaW4gYW4gYGBJbnZhbGlkUGFyYW1ldGVyVmFsdWVgYCBlcnJvciBtZXNzYWdlIHdoZW4gdGhlIGxhdW5jaCB0ZW1wbGF0ZSBpcyB1c2VkIHRvIGxhdW5jaCBhbiBpbnN0YW5jZS5cbiAqICAgSWYgeW91IHNwZWNpZnkgYSBtYXhpbXVtIHByaWNlLCB5b3VyIFNwb3QgSW5zdGFuY2VzIHdpbGwgYmUgaW50ZXJydXB0ZWQgbW9yZSBmcmVxdWVudGx5IHRoYW4gaWYgeW91IGRvIG5vdCBzcGVjaWZ5IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXhQcmljZT86IHN0cmluZ1xuLyoqXG4gKiBEZXByZWNhdGVkLlxuICovXG5CbG9ja0R1cmF0aW9uTWludXRlcz86IG51bWJlclxuLyoqXG4gKiBUaGUgZW5kIGRhdGUgb2YgdGhlIHJlcXVlc3QsIGluIFVUQyBmb3JtYXQgKCpZWVlZLU1NLUREKlQqSEg6TU06U1MqWikuIFN1cHBvcnRlZCBvbmx5IGZvciBwZXJzaXN0ZW50IHJlcXVlc3RzLlxuICogICArICBGb3IgYSBwZXJzaXN0ZW50IHJlcXVlc3QsIHRoZSByZXF1ZXN0IHJlbWFpbnMgYWN0aXZlIHVudGlsIHRoZSBgYFZhbGlkVW50aWxgYCBkYXRlIGFuZCB0aW1lIGlzIHJlYWNoZWQuIE90aGVyd2lzZSwgdGhlIHJlcXVlc3QgcmVtYWlucyBhY3RpdmUgdW50aWwgeW91IGNhbmNlbCBpdC5cbiAqICAgKyAgRm9yIGEgb25lLXRpbWUgcmVxdWVzdCwgYGBWYWxpZFVudGlsYGAgaXMgbm90IHN1cHBvcnRlZC4gVGhlIHJlcXVlc3QgcmVtYWlucyBhY3RpdmUgdW50aWwgYWxsIGluc3RhbmNlcyBsYXVuY2ggb3IgeW91IGNhbmNlbCB0aGUgcmVxdWVzdC5cbiAqICAgXG4gKiAgRGVmYXVsdDogNyBkYXlzIGZyb20gdGhlIGN1cnJlbnQgZGF0ZVxuICovXG5WYWxpZFVudGlsPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgaW5zdGFuY2UgdHlwZXMuIFdoZW4geW91IHNwZWNpZnkgaW5zdGFuY2UgYXR0cmlidXRlcywgQW1hem9uIEVDMiB3aWxsIGlkZW50aWZ5IGluc3RhbmNlIHR5cGVzIHdpdGggdGhlc2UgYXR0cmlidXRlcy5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IGBgVkNwdUNvdW50YGAgYW5kIGBgTWVtb3J5TWlCYGAuIEFsbCBvdGhlciBhdHRyaWJ1dGVzIGFyZSBvcHRpb25hbC4gQW55IHVuc3BlY2lmaWVkIG9wdGlvbmFsIGF0dHJpYnV0ZSBpcyBzZXQgdG8gaXRzIGRlZmF1bHQuXG4gKiAgV2hlbiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBhdHRyaWJ1dGVzLCB5b3UgZ2V0IGluc3RhbmNlIHR5cGVzIHRoYXQgc2F0aXNmeSBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFuIGF0dHJpYnV0ZSwgeW91IGdldCBpbnN0YW5jZSB0eXBlcyB0aGF0IHNhdGlzZnkgYW55IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWVzLlxuICogIFRvIGxpbWl0IHRoZSBsaXN0IG9mIGluc3RhbmNlIHR5cGVzIGZyb20gd2hpY2ggQW1hem9uIEVDMiBjYW4gaWRlbnRpZnkgbWF0Y2hpbmcgaW5zdGFuY2UgdHlwZXMsIHlvdSBjYW4gdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMsIGJ1dCBub3QgYm90aCBpbiB0aGUgc2FtZSByZXF1ZXN0OlxuICogICArICBgYEFsbG93ZWRJbnN0YW5jZVR5cGVzYGAgLSBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gaW5jbHVkZSBpbiB0aGUgbGlzdC4gQWxsIG90aGVyIGluc3RhbmNlIHR5cGVzIGFyZSBpZ25vcmVkLCBldmVuIGlmIHRoZXkgbWF0Y2ggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy5cbiAqICAgKyAgYGBFeGNsdWRlZEluc3RhbmNlVHlwZXNgYCAtIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBleGNsdWRlIGZyb20gdGhlIGxpc3QsIGV2ZW4gaWYgdGhleSBtYXRjaCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLlxuICogICBcbiAqICAgSWYgeW91IHNwZWNpZnkgYGBJbnN0YW5jZVJlcXVpcmVtZW50c2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEluc3RhbmNlVHlwZWBgLlxuICogIEF0dHJpYnV0ZS1iYXNlZCBpbnN0YW5jZSB0eXBlIHNlbGVjdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHVzaW5nIEF1dG8gU2NhbGluZyBncm91cHMsIEVDMiBGbGVldCwgYW5kIFNwb3QgRmxlZXQgdG8gbGF1bmNoIGluc3RhbmNlcy4gSWYgeW91IHBsYW4gdG8gdXNlIHRoZSBsYXVuY2ggdGVtcGxhdGUgaW4gdGhlIFtsYXVuY2ggaW5zdGFuY2Ugd2l6YXJkXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWxhdW5jaC1pbnN0YW5jZS13aXphcmQuaHRtbCksIG9yIHdpdGggdGhlIFtSdW5JbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUnVuSW5zdGFuY2VzLmh0bWwpIEFQSSBvciBbQVdTOjpFQzI6Okluc3RhbmNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItaW5zdGFuY2UuaHRtbClBV1MgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UsIHlvdSBjYW4ndCBzcGVjaWZ5IGBgSW5zdGFuY2VSZXF1aXJlbWVudHNgYC5cbiAqICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3BlY2lmeSBhdHRyaWJ1dGVzIGZvciBpbnN0YW5jZSB0eXBlIHNlbGVjdGlvbiBmb3IgRUMyIEZsZWV0IG9yIFNwb3QgRmxlZXRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9lYzItZmxlZXQtYXR0cmlidXRlLWJhc2VkLWluc3RhbmNlLXR5cGUtc2VsZWN0aW9uLmh0bWwpIGFuZCBbU3BvdCBwbGFjZW1lbnQgc2NvcmVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9zcG90LXBsYWNlbWVudC1zY29yZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VSZXF1aXJlbWVudHMge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBjdXJyZW50IG9yIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgYXJlIGluY2x1ZGVkLiBUaGUgY3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIGFyZSByZWNvbW1lbmRlZCBmb3IgdXNlLiBDdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgYXJlIHR5cGljYWxseSB0aGUgbGF0ZXN0IHR3byB0byB0aHJlZSBnZW5lcmF0aW9ucyBpbiBlYWNoIGluc3RhbmNlIGZhbWlseS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSW5zdGFuY2UgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9pbnN0YW5jZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgRm9yIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGN1cnJlbnRgYC5cbiAqICBGb3IgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYHByZXZpb3VzYGAuXG4gKiAgRGVmYXVsdDogQ3VycmVudCBhbmQgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlc1xuICovXG5JbnN0YW5jZUdlbmVyYXRpb25zPzogc3RyaW5nW11cbk1lbW9yeUdpQlBlclZDcHU/OiBNZW1vcnlHaUJQZXJWQ3B1XG4vKipcbiAqIFRoZSBhY2NlbGVyYXRvciB0eXBlcyB0aGF0IG11c3QgYmUgb24gdGhlIGluc3RhbmNlIHR5cGUuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEZQR0EgYWNjZWxlcmF0b3JzLCBzcGVjaWZ5IGBgZnBnYWBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBHUFUgYWNjZWxlcmF0b3JzLCBzcGVjaWZ5IGBgZ3B1YGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEluZmVyZW5jZSBhY2NlbGVyYXRvcnMsIHNwZWNpZnkgYGBpbmZlcmVuY2VgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IGFjY2VsZXJhdG9yIHR5cGVcbiAqL1xuQWNjZWxlcmF0b3JUeXBlcz86IHN0cmluZ1tdXG5WQ3B1Q291bnQ/OiBWQ3B1Q291bnRcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgbXVzdCBoYXZlIGFjY2VsZXJhdG9ycyBieSBzcGVjaWZpYyBtYW51ZmFjdHVyZXJzLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgZGV2aWNlcywgc3BlY2lmeSBgYGFtYXpvbi13ZWItc2VydmljZXNgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQU1EIGRldmljZXMsIHNwZWNpZnkgYGBhbWRgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggSGFiYW5hIGRldmljZXMsIHNwZWNpZnkgYGBoYWJhbmFgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIGRldmljZXMsIHNwZWNpZnkgYGBudmlkaWFgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggWGlsaW54IGRldmljZXMsIHNwZWNpZnkgYGB4aWxpbnhgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IG1hbnVmYWN0dXJlclxuICovXG5BY2NlbGVyYXRvck1hbnVmYWN0dXJlcnM/OiBzdHJpbmdbXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBpbnN0YW5jZSB0eXBlcyB3aXRoIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgYXJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBbQW1hem9uIEVDMiBpbnN0YW5jZSBzdG9yZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL0luc3RhbmNlU3RvcmFnZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgICsgIFRvIGluY2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2l0aCBpbnN0YW5jZSBzdG9yZSB2b2x1bWVzLCBzcGVjaWZ5IGBgaW5jbHVkZWRgYC5cbiAqICAgKyAgVG8gcmVxdWlyZSBvbmx5IGluc3RhbmNlIHR5cGVzIHdpdGggaW5zdGFuY2Ugc3RvcmUgdm9sdW1lcywgc3BlY2lmeSBgYHJlcXVpcmVkYGAuXG4gKiAgICsgIFRvIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2l0aCBpbnN0YW5jZSBzdG9yZSB2b2x1bWVzLCBzcGVjaWZ5IGBgZXhjbHVkZWRgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogYGBpbmNsdWRlZGBgXG4gKi9cbkxvY2FsU3RvcmFnZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQ1BVIG1hbnVmYWN0dXJlcnMgdG8gaW5jbHVkZS5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggSW50ZWwgQ1BVcywgc3BlY2lmeSBgYGludGVsYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBDUFVzLCBzcGVjaWZ5IGBgYW1kYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFXUyBDUFVzLCBzcGVjaWZ5IGBgYW1hem9uLXdlYi1zZXJ2aWNlc2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBcHBsZSBDUFVzLCBzcGVjaWZ5IGBgYXBwbGVgYC5cbiAqICAgXG4gKiAgIERvbid0IGNvbmZ1c2UgdGhlIENQVSBtYW51ZmFjdHVyZXIgd2l0aCB0aGUgQ1BVIGFyY2hpdGVjdHVyZS4gSW5zdGFuY2VzIHdpbGwgYmUgbGF1bmNoZWQgd2l0aCBhIGNvbXBhdGlibGUgQ1BVIGFyY2hpdGVjdHVyZSBiYXNlZCBvbiB0aGUgQW1hem9uIE1hY2hpbmUgSW1hZ2UgKEFNSSkgdGhhdCB5b3Ugc3BlY2lmeSBpbiB5b3VyIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICAgRGVmYXVsdDogQW55IG1hbnVmYWN0dXJlclxuICovXG5DcHVNYW51ZmFjdHVyZXJzPzogc3RyaW5nW11cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgYmFyZSBtZXRhbCBpbnN0YW5jZSB0eXBlcyBtdXN0IGJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuXG4gKiAgICsgIFRvIGluY2x1ZGUgYmFyZSBtZXRhbCBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGluY2x1ZGVkYGAuXG4gKiAgICsgIFRvIHJlcXVpcmUgb25seSBiYXJlIG1ldGFsIGluc3RhbmNlIHR5cGVzLCBzcGVjaWZ5IGBgcmVxdWlyZWRgYC5cbiAqICAgKyAgVG8gZXhjbHVkZSBiYXJlIG1ldGFsIGluc3RhbmNlIHR5cGVzLCBzcGVjaWZ5IGBgZXhjbHVkZWRgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogYGBleGNsdWRlZGBgXG4gKi9cbkJhcmVNZXRhbD86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBpbnN0YW5jZSB0eXBlcyBtdXN0IHN1cHBvcnQgaGliZXJuYXRpb24gZm9yIE9uLURlbWFuZCBJbnN0YW5jZXMuXG4gKiAgVGhpcyBwYXJhbWV0ZXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgW0dldFNwb3RQbGFjZW1lbnRTY29yZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0U3BvdFBsYWNlbWVudFNjb3Jlcy5odG1sKS5cbiAqICBEZWZhdWx0OiBgYGZhbHNlYGBcbiAqL1xuUmVxdWlyZUhpYmVybmF0ZVN1cHBvcnQ/OiBib29sZWFuXG4vKipcbiAqIFtQcmljZSBwcm90ZWN0aW9uXSBUaGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBhcyBhIHBlcmNlbnRhZ2Ugb2YgYW4gaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UuIFRoZSBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZSBpcyB0aGUgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIElmIG5vIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgbWF0Y2hlcyB5b3VyIGF0dHJpYnV0ZXMsIHRoZW4gdGhlIGlkZW50aWZpZWQgcHJpY2UgaXMgZnJvbSB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIGFuZCBmYWlsaW5nIHRoYXQsIGZyb20gdGhlIGxvd2VzdCBwcmljZWQgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcy4gV2hlbiBBbWF6b24gRUMyIHNlbGVjdHMgaW5zdGFuY2UgdHlwZXMgd2l0aCB5b3VyIGF0dHJpYnV0ZXMsIGl0IHdpbGwgZXhjbHVkZSBpbnN0YW5jZSB0eXBlcyB3aG9zZSBwcmljZSBleGNlZWRzIHlvdXIgc3BlY2lmaWVkIHRocmVzaG9sZC5cbiAqICBUaGUgcGFyYW1ldGVyIGFjY2VwdHMgYW4gaW50ZWdlciwgd2hpY2ggQW1hem9uIEVDMiBpbnRlcnByZXRzIGFzIGEgcGVyY2VudGFnZS5cbiAqICBJZiB5b3Ugc2V0IGBgVGFyZ2V0Q2FwYWNpdHlVbml0VHlwZWBgIHRvIGBgdmNwdWBgIG9yIGBgbWVtb3J5LW1pYmBgLCB0aGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgaXMgYmFzZWQgb24gdGhlIHBlciB2Q1BVIG9yIHBlciBtZW1vcnkgcHJpY2UgaW5zdGVhZCBvZiB0aGUgcGVyIGluc3RhbmNlIHByaWNlLlxuICogICBPbmx5IG9uZSBvZiBgYFNwb3RNYXhQcmljZVBlcmNlbnRhZ2VPdmVyTG93ZXN0UHJpY2VgYCBvciBgYE1heFNwb3RQcmljZUFzUGVyY2VudGFnZU9mT3B0aW1hbE9uRGVtYW5kUHJpY2VgYCBjYW4gYmUgc3BlY2lmaWVkLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBlaXRoZXIsIEFtYXpvbiBFQzIgd2lsbCBhdXRvbWF0aWNhbGx5IGFwcGx5IG9wdGltYWwgcHJpY2UgcHJvdGVjdGlvbiB0byBjb25zaXN0ZW50bHkgc2VsZWN0IGZyb20gYSB3aWRlIHJhbmdlIG9mIGluc3RhbmNlIHR5cGVzLiBUbyBpbmRpY2F0ZSBubyBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIG1lYW5pbmcgeW91IHdhbnQgdG8gY29uc2lkZXIgYWxsIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLCBpbmNsdWRlIG9uZSBvZiB0aGVzZSBwYXJhbWV0ZXJzIGFuZCBzcGVjaWZ5IGEgaGlnaCB2YWx1ZSwgc3VjaCBhcyBgYDk5OTk5OWBgLlxuICovXG5NYXhTcG90UHJpY2VBc1BlcmNlbnRhZ2VPZk9wdGltYWxPbkRlbWFuZFByaWNlPzogbnVtYmVyXG4vKipcbiAqIFtQcmljZSBwcm90ZWN0aW9uXSBUaGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIE9uLURlbWFuZCBJbnN0YW5jZXMsIGFzIGEgcGVyY2VudGFnZSBoaWdoZXIgdGhhbiBhbiBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZS4gVGhlIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlIGlzIHRoZSBwcmljZSBvZiB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIHdpdGggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy4gV2hlbiBBbWF6b24gRUMyIHNlbGVjdHMgaW5zdGFuY2UgdHlwZXMgd2l0aCB5b3VyIGF0dHJpYnV0ZXMsIGl0IHdpbGwgZXhjbHVkZSBpbnN0YW5jZSB0eXBlcyB3aG9zZSBwcmljZSBleGNlZWRzIHlvdXIgc3BlY2lmaWVkIHRocmVzaG9sZC5cbiAqICBUaGUgcGFyYW1ldGVyIGFjY2VwdHMgYW4gaW50ZWdlciwgd2hpY2ggQW1hem9uIEVDMiBpbnRlcnByZXRzIGFzIGEgcGVyY2VudGFnZS5cbiAqICBUbyB0dXJuIG9mZiBwcmljZSBwcm90ZWN0aW9uLCBzcGVjaWZ5IGEgaGlnaCB2YWx1ZSwgc3VjaCBhcyBgYDk5OTk5OWBgLlxuICogIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFtHZXRTcG90UGxhY2VtZW50U2NvcmVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFNwb3RQbGFjZW1lbnRTY29yZXMuaHRtbCkgYW5kIFtHZXRJbnN0YW5jZVR5cGVzRnJvbUluc3RhbmNlUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldEluc3RhbmNlVHlwZXNGcm9tSW5zdGFuY2VSZXF1aXJlbWVudHMuaHRtbCkuXG4gKiAgIElmIHlvdSBzZXQgYGBUYXJnZXRDYXBhY2l0eVVuaXRUeXBlYGAgdG8gYGB2Y3B1YGAgb3IgYGBtZW1vcnktbWliYGAsIHRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBpcyBhcHBsaWVkIGJhc2VkIG9uIHRoZSBwZXItdkNQVSBvciBwZXItbWVtb3J5IHByaWNlIGluc3RlYWQgb2YgdGhlIHBlci1pbnN0YW5jZSBwcmljZS5cbiAqICAgRGVmYXVsdDogYGAyMGBgXG4gKi9cbk9uRGVtYW5kTWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlPzogbnVtYmVyXG5NZW1vcnlNaUI/OiBNZW1vcnlNaUJcbi8qKlxuICogVGhlIHR5cGUgb2YgbG9jYWwgc3RvcmFnZSB0aGF0IGlzIHJlcXVpcmVkLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBoYXJkIGRpc2sgZHJpdmUgKEhERCkgc3RvcmFnZSwgc3BlY2lmeSBgYGhkZGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBzb2xpZCBzdGF0ZSBkcml2ZSAoU1NEKSBzdG9yYWdlLCBzcGVjaWZ5IGBgc3NkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgaGRkYGAgYW5kIGBgc3NkYGBcbiAqL1xuTG9jYWxTdG9yYWdlVHlwZXM/OiBzdHJpbmdbXVxuTmV0d29ya0ludGVyZmFjZUNvdW50PzogTmV0d29ya0ludGVyZmFjZUNvdW50XG4vKipcbiAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBleGNsdWRlLlxuICogIFlvdSBjYW4gdXNlIHN0cmluZ3Mgd2l0aCBvbmUgb3IgbW9yZSB3aWxkIGNhcmRzLCByZXByZXNlbnRlZCBieSBhbiBhc3RlcmlzayAoYGAqYGApLCB0byBleGNsdWRlIGFuIGluc3RhbmNlIHR5cGUsIHNpemUsIG9yIGdlbmVyYXRpb24uIFRoZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzOiBgYG01Ljh4bGFyZ2VgYCwgYGBjNSouKmBgLCBgYG01YS4qYGAsIGBgcipgYCwgYGAqMypgYC5cbiAqICBGb3IgZXhhbXBsZSwgaWYgeW91IHNwZWNpZnkgYGBjNSpgYCxBbWF6b24gRUMyIHdpbGwgZXhjbHVkZSB0aGUgZW50aXJlIEM1IGluc3RhbmNlIGZhbWlseSwgd2hpY2ggaW5jbHVkZXMgYWxsIEM1YSBhbmQgQzVuIGluc3RhbmNlIHR5cGVzLiBJZiB5b3Ugc3BlY2lmeSBgYG01YS4qYGAsIEFtYXpvbiBFQzIgd2lsbCBleGNsdWRlIGFsbCB0aGUgTTVhIGluc3RhbmNlIHR5cGVzLCBidXQgbm90IHRoZSBNNW4gaW5zdGFuY2UgdHlwZXMuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgRXhjbHVkZWRJbnN0YW5jZVR5cGVzYGAsIHlvdSBjYW4ndCBzcGVjaWZ5IGBgQWxsb3dlZEluc3RhbmNlVHlwZXNgYC5cbiAqICAgRGVmYXVsdDogTm8gZXhjbHVkZWQgaW5zdGFuY2UgdHlwZXNcbiAqL1xuRXhjbHVkZWRJbnN0YW5jZVR5cGVzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIGluc3RhbmNlIHR5cGVzIHRvIGFwcGx5IHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMgYWdhaW5zdC4gQWxsIG90aGVyIGluc3RhbmNlIHR5cGVzIGFyZSBpZ25vcmVkLCBldmVuIGlmIHRoZXkgbWF0Y2ggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy5cbiAqICBZb3UgY2FuIHVzZSBzdHJpbmdzIHdpdGggb25lIG9yIG1vcmUgd2lsZCBjYXJkcywgcmVwcmVzZW50ZWQgYnkgYW4gYXN0ZXJpc2sgKGBgKmBgKSwgdG8gYWxsb3cgYW4gaW5zdGFuY2UgdHlwZSwgc2l6ZSwgb3IgZ2VuZXJhdGlvbi4gVGhlIGZvbGxvd2luZyBhcmUgZXhhbXBsZXM6IGBgbTUuOHhsYXJnZWBgLCBgYGM1Ki4qYGAsIGBgbTVhLipgYCwgYGByKmBgLCBgYCozKmBgLlxuICogIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmeSBgYGM1KmBgLEFtYXpvbiBFQzIgd2lsbCBhbGxvdyB0aGUgZW50aXJlIEM1IGluc3RhbmNlIGZhbWlseSwgd2hpY2ggaW5jbHVkZXMgYWxsIEM1YSBhbmQgQzVuIGluc3RhbmNlIHR5cGVzLiBJZiB5b3Ugc3BlY2lmeSBgYG01YS4qYGAsIEFtYXpvbiBFQzIgd2lsbCBhbGxvdyBhbGwgdGhlIE01YSBpbnN0YW5jZSB0eXBlcywgYnV0IG5vdCB0aGUgTTVuIGluc3RhbmNlIHR5cGVzLlxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEFsbG93ZWRJbnN0YW5jZVR5cGVzYGAsIHlvdSBjYW4ndCBzcGVjaWZ5IGBgRXhjbHVkZWRJbnN0YW5jZVR5cGVzYGAuXG4gKiAgIERlZmF1bHQ6IEFsbCBpbnN0YW5jZSB0eXBlc1xuICovXG5BbGxvd2VkSW5zdGFuY2VUeXBlcz86IHN0cmluZ1tdXG5BY2NlbGVyYXRvckNvdW50PzogQWNjZWxlcmF0b3JDb3VudFxuTmV0d29ya0JhbmR3aWR0aEdicHM/OiBOZXR3b3JrQmFuZHdpZHRoR2Jwc1xuQmFzZWxpbmVQZXJmb3JtYW5jZUZhY3RvcnM/OiBCYXNlbGluZVBlcmZvcm1hbmNlRmFjdG9yc1xuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgYXMgYSBwZXJjZW50YWdlIGhpZ2hlciB0aGFuIGFuIGlkZW50aWZpZWQgU3BvdCBwcmljZS4gVGhlIGlkZW50aWZpZWQgU3BvdCBwcmljZSBpcyB0aGUgU3BvdCBwcmljZSBvZiB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIHdpdGggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy4gSWYgbm8gY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSBtYXRjaGVzIHlvdXIgYXR0cmlidXRlcywgdGhlbiB0aGUgaWRlbnRpZmllZCBTcG90IHByaWNlIGlzIGZyb20gdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzLCBhbmQgZmFpbGluZyB0aGF0LCBmcm9tIHRoZSBsb3dlc3QgcHJpY2VkIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCBpdCB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgU3BvdCBwcmljZSBleGNlZWRzIHlvdXIgc3BlY2lmaWVkIHRocmVzaG9sZC5cbiAqICBUaGUgcGFyYW1ldGVyIGFjY2VwdHMgYW4gaW50ZWdlciwgd2hpY2ggQW1hem9uIEVDMiBpbnRlcnByZXRzIGFzIGEgcGVyY2VudGFnZS5cbiAqICBJZiB5b3Ugc2V0IGBgVGFyZ2V0Q2FwYWNpdHlVbml0VHlwZWBgIHRvIGBgdmNwdWBgIG9yIGBgbWVtb3J5LW1pYmBgLCB0aGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgaXMgYXBwbGllZCBiYXNlZCBvbiB0aGUgcGVyLXZDUFUgb3IgcGVyLW1lbW9yeSBwcmljZSBpbnN0ZWFkIG9mIHRoZSBwZXItaW5zdGFuY2UgcHJpY2UuXG4gKiAgVGhpcyBwYXJhbWV0ZXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgW0dldFNwb3RQbGFjZW1lbnRTY29yZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0U3BvdFBsYWNlbWVudFNjb3Jlcy5odG1sKSBhbmQgW0dldEluc3RhbmNlVHlwZXNGcm9tSW5zdGFuY2VSZXF1aXJlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0SW5zdGFuY2VUeXBlc0Zyb21JbnN0YW5jZVJlcXVpcmVtZW50cy5odG1sKS5cbiAqICAgT25seSBvbmUgb2YgYGBTcG90TWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlYGAgb3IgYGBNYXhTcG90UHJpY2VBc1BlcmNlbnRhZ2VPZk9wdGltYWxPbkRlbWFuZFByaWNlYGAgY2FuIGJlIHNwZWNpZmllZC4gSWYgeW91IGRvbid0IHNwZWNpZnkgZWl0aGVyLCBBbWF6b24gRUMyIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBvcHRpbWFsIHByaWNlIHByb3RlY3Rpb24gdG8gY29uc2lzdGVudGx5IHNlbGVjdCBmcm9tIGEgd2lkZSByYW5nZSBvZiBpbnN0YW5jZSB0eXBlcy4gVG8gaW5kaWNhdGUgbm8gcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBtZWFuaW5nIHlvdSB3YW50IHRvIGNvbnNpZGVyIGFsbCBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcywgaW5jbHVkZSBvbmUgb2YgdGhlc2UgcGFyYW1ldGVycyBhbmQgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqICAgRGVmYXVsdDogYGAxMDBgYFxuICovXG5TcG90TWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlPzogbnVtYmVyXG5CYXNlbGluZUVic0JhbmR3aWR0aE1icHM/OiBCYXNlbGluZUVic0JhbmR3aWR0aE1icHNcbi8qKlxuICogVGhlIGFjY2VsZXJhdG9ycyB0aGF0IG11c3QgYmUgb24gdGhlIGluc3RhbmNlIHR5cGUuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBBMTBHIEdQVXMsIHNwZWNpZnkgYGBhMTBnYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBBMTAwIEdQVXMsIHNwZWNpZnkgYGBhMTAwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBIMTAwIEdQVXMsIHNwZWNpZnkgYGBoMTAwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFXUyBJbmZlcmVudGlhIGNoaXBzLCBzcGVjaWZ5IGBgaW5mZXJlbnRpYWBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgR1JJRCBLNTIwIEdQVXMsIHNwZWNpZnkgYGBrNTIwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBLODAgR1BVcywgc3BlY2lmeSBgYGs4MGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgTTYwIEdQVXMsIHNwZWNpZnkgYGBtNjBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQU1EIFJhZGVvbiBQcm8gVjUyMCBHUFVzLCBzcGVjaWZ5IGBgcmFkZW9uLXByby12NTIwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBUNCBHUFVzLCBzcGVjaWZ5IGBgdDRgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIFQ0RyBHUFVzLCBzcGVjaWZ5IGBgdDRnYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIFhpbGlueCBWVTlQIEZQR0FzLCBzcGVjaWZ5IGBgdnU5cGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgVjEwMCBHUFVzLCBzcGVjaWZ5IGBgdjEwMGBgLlxuICogICBcbiAqICBEZWZhdWx0OiBBbnkgYWNjZWxlcmF0b3JcbiAqL1xuQWNjZWxlcmF0b3JOYW1lcz86IHN0cmluZ1tdXG5BY2NlbGVyYXRvclRvdGFsTWVtb3J5TWlCPzogQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQlxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBidXJzdGFibGUgcGVyZm9ybWFuY2UgVCBpbnN0YW5jZSB0eXBlcyBhcmUgaW5jbHVkZWQsIGV4Y2x1ZGVkLCBvciByZXF1aXJlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQnVyc3RhYmxlIHBlcmZvcm1hbmNlIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2J1cnN0YWJsZS1wZXJmb3JtYW5jZS1pbnN0YW5jZXMuaHRtbCkuXG4gKiAgICsgIFRvIGluY2x1ZGUgYnVyc3RhYmxlIHBlcmZvcm1hbmNlIGluc3RhbmNlIHR5cGVzLCBzcGVjaWZ5IGBgaW5jbHVkZWRgYC5cbiAqICAgKyAgVG8gcmVxdWlyZSBvbmx5IGJ1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYHJlcXVpcmVkYGAuXG4gKiAgICsgIFRvIGV4Y2x1ZGUgYnVyc3RhYmxlIHBlcmZvcm1hbmNlIGluc3RhbmNlIHR5cGVzLCBzcGVjaWZ5IGBgZXhjbHVkZWRgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogYGBleGNsdWRlZGBgXG4gKi9cbkJ1cnN0YWJsZVBlcmZvcm1hbmNlPzogc3RyaW5nXG5Ub3RhbExvY2FsU3RvcmFnZUdCPzogVG90YWxMb2NhbFN0b3JhZ2VHQlxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IHBlciB2Q1BVLCBpbiBHaUIuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeUdpQlBlclZDcHUge1xuLyoqXG4gKiBUaGUgbWluaW11bSBhbW91bnQgb2YgbWVtb3J5IHBlciB2Q1BVLCBpbiBHaUIuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBtZW1vcnkgcGVyIHZDUFUsIGluIEdpQi4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gbnVtYmVyIG9mIHZDUFVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZDcHVDb3VudCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2Q1BVcy4gVG8gc3BlY2lmeSBubyBtaW5pbXVtIGxpbWl0LCBzcGVjaWZ5IGBgMGBgLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHZDUFVzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5LCBpbiBNaUIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5TWlCIHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIG1lbW9yeSwgaW4gTWlCLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIHNwZWNpZnkgYGAwYGAuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5LCBpbiBNaUIuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiBuZXR3b3JrIGludGVyZmFjZXMuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2VDb3VudCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBuZXR3b3JrIGludGVyZmFjZXMuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuZXR3b3JrIGludGVyZmFjZXMuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiBhY2NlbGVyYXRvcnMgKEdQVXMsIEZQR0FzLCBvciBBV1MgSW5mZXJlbnRpYSBjaGlwcykgb24gYW4gaW5zdGFuY2UuXG4gKiAgVG8gZXhjbHVkZSBhY2NlbGVyYXRvci1lbmFibGVkIGluc3RhbmNlIHR5cGVzLCBzZXQgYGBNYXhgYCB0byBgYDBgYC5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JDb3VudCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBhY2NlbGVyYXRvcnMuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhY2NlbGVyYXRvcnMuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci4gVG8gZXhjbHVkZSBhY2NlbGVyYXRvci1lbmFibGVkIGluc3RhbmNlIHR5cGVzLCBzZXQgYGBNYXhgYCB0byBgYDBgYC5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gZ2lnYWJpdHMgcGVyIHNlY29uZCAoR2JwcykuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtCYW5kd2lkdGhHYnBzIHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIG5ldHdvcmsgYmFuZHdpZHRoLCBpbiBHYnBzLiBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3Qgc3BlY2lmaWVkLCB0aGVyZSBpcyBubyBtaW5pbXVtIGxpbWl0LlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gYW1vdW50IG9mIG5ldHdvcmsgYmFuZHdpZHRoLCBpbiBHYnBzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgYmFzZWxpbmUgcGVyZm9ybWFuY2UgdG8gY29uc2lkZXIsIHVzaW5nIGFuIGluc3RhbmNlIGZhbWlseSBhcyBhIGJhc2VsaW5lIHJlZmVyZW5jZS4gVGhlIGluc3RhbmNlIGZhbWlseSBlc3RhYmxpc2hlcyB0aGUgbG93ZXN0IGFjY2VwdGFibGUgbGV2ZWwgb2YgcGVyZm9ybWFuY2UuIEFtYXpvbiBFQzIgdXNlcyB0aGlzIGJhc2VsaW5lIHRvIGd1aWRlIGluc3RhbmNlIHR5cGUgc2VsZWN0aW9uLCBidXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIHNlbGVjdGVkIGluc3RhbmNlIHR5cGVzIHdpbGwgYWx3YXlzIGV4Y2VlZCB0aGUgYmFzZWxpbmUgZm9yIGV2ZXJ5IGFwcGxpY2F0aW9uLiBDdXJyZW50bHksIHRoaXMgcGFyYW1ldGVyIG9ubHkgc3VwcG9ydHMgQ1BVIHBlcmZvcm1hbmNlIGFzIGEgYmFzZWxpbmUgcGVyZm9ybWFuY2UgZmFjdG9yLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQZXJmb3JtYW5jZSBwcm90ZWN0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWZsZWV0LWF0dHJpYnV0ZS1iYXNlZC1pbnN0YW5jZS10eXBlLXNlbGVjdGlvbi5odG1sI2VjMmZsZWV0LWFiaXMtcGVyZm9ybWFuY2UtcHJvdGVjdGlvbikgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VsaW5lUGVyZm9ybWFuY2VGYWN0b3JzIHtcbkNwdT86IENwdVxufVxuLyoqXG4gKiBUaGUgQ1BVIHBlcmZvcm1hbmNlIHRvIGNvbnNpZGVyLCB1c2luZyBhbiBpbnN0YW5jZSBmYW1pbHkgYXMgdGhlIGJhc2VsaW5lIHJlZmVyZW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcHUge1xuUmVmZXJlbmNlcz86IFJlZmVyZW5jZXNcbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIGluc3RhbmNlIGZhbWlseSB0byB1c2UgYXMgdGhlIGJhc2VsaW5lIHJlZmVyZW5jZSBmb3IgQ1BVIHBlcmZvcm1hbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZSB7XG4vKipcbiAqIFRoZSBpbnN0YW5jZSBmYW1pbHkgdG8gdXNlIGFzIGEgYmFzZWxpbmUgcmVmZXJlbmNlLlxuICogICBFbnN1cmUgdGhhdCB5b3Ugc3BlY2lmeSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhlIGluc3RhbmNlIGZhbWlseS4gVGhlIGluc3RhbmNlIGZhbWlseSBpcyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgcGVyaW9kIChgYC5gYCkgaW4gdGhlIGluc3RhbmNlIHR5cGUgbmFtZS4gRm9yIGV4YW1wbGUsIGluIHRoZSBpbnN0YW5jZSB0eXBlIGBgYzZpLmxhcmdlYGAsIHRoZSBpbnN0YW5jZSBmYW1pbHkgaXMgYGBjNmlgYCwgbm90IGBgYzZgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiBpbnN0YW5jZSB0eXBlIG5hbWluZyBjb252ZW50aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VjMi9sYXRlc3QvaW5zdGFuY2V0eXBlcy9pbnN0YW5jZS10eXBlLW5hbWVzLmh0bWwpIGluICpBbWF6b24gRUMyIEluc3RhbmNlIFR5cGVzKi5cbiAqICAgVGhlIGZvbGxvd2luZyBpbnN0YW5jZSBmYW1pbGllcyBhcmUgKm5vdCBzdXBwb3J0ZWQqIGZvciBwZXJmb3JtYW5jZSBwcm90ZWN0aW9uOlxuICogICArICAgYGBjMWBgIFxuICogICArICBgYGczYGAgfCBgYGczc2BgXG4gKiAgICsgICBgYGhwYzdnYGAgXG4gKiAgICsgIGBgbTFgYCB8IGBgbTJgYFxuICogICArICBgYG1hYzFgYCB8IGBgbWFjMmBgIHwgYGBtYWMyLW0xdWx0cmFgYCB8IGBgbWFjMi1tMmBgIHwgYGBtYWMyLW0ycHJvYGBcbiAqICAgKyAgYGBwM2RuYGAgfCBgYHA0ZGBgIHwgYGBwNWBgXG4gKiAgICsgICBgYHQxYGAgXG4gKiAgICsgIGBgdS0xMnRiMWBgIHwgYGB1LTE4dGIxYGAgfCBgYHUtMjR0YjFgYCB8IGBgdS0zdGIxYGAgfCBgYHUtNnRiMWBgIHwgYGB1LTl0YjFgYCB8IGBgdTdpLTEydGJgYCB8IGBgdTdpbi0xNnRiYGAgfCBgYHU3aW4tMjR0YmBgIHwgYGB1N2luLTMydGJgYFxuICogICBcbiAqICBJZiB5b3UgZW5hYmxlIHBlcmZvcm1hbmNlIHByb3RlY3Rpb24gYnkgc3BlY2lmeWluZyBhIHN1cHBvcnRlZCBpbnN0YW5jZSBmYW1pbHksIHRoZSByZXR1cm5lZCBpbnN0YW5jZSB0eXBlcyB3aWxsIGV4Y2x1ZGUgdGhlIGFib3ZlIHVuc3VwcG9ydGVkIGluc3RhbmNlIGZhbWlsaWVzLlxuICovXG5JbnN0YW5jZUZhbWlseT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBiYXNlbGluZSBiYW5kd2lkdGggdG8gQW1hem9uIEVCUywgaW4gTWJwcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVCU+KAk29wdGltaXplZCBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9lYnMtb3B0aW1pemVkLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzIHtcbi8qKlxuICogVGhlIG1pbmltdW0gYmFzZWxpbmUgYmFuZHdpZHRoLCBpbiBNYnBzLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBiYXNlbGluZSBiYW5kd2lkdGgsIGluIE1icHMuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFtb3VudCBvZiB0b3RhbCBhY2NlbGVyYXRvciBtZW1vcnksIGluIE1pQi5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQiB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBhY2NlbGVyYXRvciBtZW1vcnksIGluIE1pQi4gVG8gc3BlY2lmeSBubyBtaW5pbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gYW1vdW50IG9mIGFjY2VsZXJhdG9yIG1lbW9yeSwgaW4gTWlCLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgdG90YWwgbG9jYWwgc3RvcmFnZSwgaW4gR0IuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvdGFsTG9jYWxTdG9yYWdlR0Ige1xuLyoqXG4gKiBUaGUgbWluaW11bSBhbW91bnQgb2YgdG90YWwgbG9jYWwgc3RvcmFnZSwgaW4gR0IuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0b3RhbCBsb2NhbCBzdG9yYWdlLCBpbiBHQi4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIENhcGFjaXR5IFJlc2VydmF0aW9uIHRhcmdldGluZyBvcHRpb24uIElmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGlzIHBhcmFtZXRlciwgdGhlIGluc3RhbmNlJ3MgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gcHJlZmVyZW5jZSBkZWZhdWx0cyB0byBgYG9wZW5gYCwgd2hpY2ggZW5hYmxlcyBpdCB0byBydW4gaW4gYW55IG9wZW4gQ2FwYWNpdHkgUmVzZXJ2YXRpb24gdGhhdCBoYXMgbWF0Y2hpbmcgYXR0cmlidXRlcyAoaW5zdGFuY2UgdHlwZSwgcGxhdGZvcm0sIEF2YWlsYWJpbGl0eSBab25lKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXBhY2l0eVJlc2VydmF0aW9uU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB0aGUgaW5zdGFuY2UncyBDYXBhY2l0eSBSZXNlcnZhdGlvbiBwcmVmZXJlbmNlcy4gUG9zc2libGUgcHJlZmVyZW5jZXMgaW5jbHVkZTpcbiAqICAgKyAgYGBjYXBhY2l0eS1yZXNlcnZhdGlvbnMtb25seWBgIC0gVGhlIGluc3RhbmNlIHdpbGwgb25seSBydW4gaW4gYSBDYXBhY2l0eSBSZXNlcnZhdGlvbiBvciBDYXBhY2l0eSBSZXNlcnZhdGlvbiBncm91cC4gSWYgY2FwYWNpdHkgaXNuJ3QgYXZhaWxhYmxlLCB0aGUgaW5zdGFuY2Ugd2lsbCBmYWlsIHRvIGxhdW5jaC5cbiAqICAgKyAgYGBvcGVuYGAgLSBUaGUgaW5zdGFuY2UgY2FuIHJ1biBpbiBhbnkgYGBvcGVuYGAgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gdGhhdCBoYXMgbWF0Y2hpbmcgYXR0cmlidXRlcyAoaW5zdGFuY2UgdHlwZSwgcGxhdGZvcm0sIEF2YWlsYWJpbGl0eSBab25lLCB0ZW5hbmN5KS5cbiAqICAgKyAgYGBub25lYGAgLSBUaGUgaW5zdGFuY2UgYXZvaWRzIHJ1bm5pbmcgaW4gYSBDYXBhY2l0eSBSZXNlcnZhdGlvbiBldmVuIGlmIG9uZSBpcyBhdmFpbGFibGUuIFRoZSBpbnN0YW5jZSBydW5zIGluIE9uLURlbWFuZCBjYXBhY2l0eS5cbiAqL1xuQ2FwYWNpdHlSZXNlcnZhdGlvblByZWZlcmVuY2U/OiBzdHJpbmdcbkNhcGFjaXR5UmVzZXJ2YXRpb25UYXJnZXQ/OiBDYXBhY2l0eVJlc2VydmF0aW9uVGFyZ2V0XG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSB0YXJnZXQgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gb3IgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwYWNpdHlSZXNlcnZhdGlvblRhcmdldCB7XG4vKipcbiAqIFRoZSBBUk4gb2YgdGhlIENhcGFjaXR5IFJlc2VydmF0aW9uIHJlc291cmNlIGdyb3VwIGluIHdoaWNoIHRvIHJ1biB0aGUgaW5zdGFuY2UuXG4gKi9cbkNhcGFjaXR5UmVzZXJ2YXRpb25SZXNvdXJjZUdyb3VwQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gaW4gd2hpY2ggdG8gcnVuIHRoZSBpbnN0YW5jZS5cbiAqL1xuQ2FwYWNpdHlSZXNlcnZhdGlvbklkPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBjcmVkaXQgb3B0aW9uIGZvciBDUFUgdXNhZ2Ugb2YgdGhlIGluc3RhbmNlLiBWYWxpZCBvbmx5IGZvciBUIGluc3RhbmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVkaXRTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIGNyZWRpdCBvcHRpb24gZm9yIENQVSB1c2FnZSBvZiBhIFQgaW5zdGFuY2UuXG4gKiAgVmFsaWQgdmFsdWVzOiBgYHN0YW5kYXJkYGAgfCBgYHVubGltaXRlZGBgXG4gKi9cbkNwdUNyZWRpdHM/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSB0YWdzIHRvIGFwcGx5IHRvIHRoZSBsYXVuY2ggdGVtcGxhdGUgZHVyaW5nIGNyZWF0aW9uLlxuICogIFRvIHNwZWNpZnkgdGhlIHRhZ3MgZm9yIHRoZSByZXNvdXJjZXMgdGhhdCBhcmUgY3JlYXRlZCBkdXJpbmcgaW5zdGFuY2UgbGF1bmNoLCB1c2UgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBUYWdTcGVjaWZpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtdGFnc3BlY2lmaWNhdGlvbi5odG1sKS5cbiAqICBgYExhdW5jaFRlbXBsYXRlVGFnU3BlY2lmaWNhdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1sYXVuY2h0ZW1wbGF0ZS5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZVRhZ1NwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgdHlwZSBvZiByZXNvdXJjZS4gVG8gdGFnIGEgbGF1bmNoIHRlbXBsYXRlLCBgYFJlc291cmNlVHlwZWBgIG11c3QgYmUgYGBsYXVuY2gtdGVtcGxhdGVgYC5cbiAqL1xuUmVzb3VyY2VUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSB0YWdzIGZvciB0aGUgcmVzb3VyY2UuXG4gKi9cblRhZ3M/OiBUYWdbXVxufVxuIl19
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjMi1sYXVuY2h0ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1lYzItbGF1bmNodGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGluc3RhbmNlIGZhbWlseSB0byB1c2UgYXMgdGhlIGJhc2VsaW5lIHJlZmVyZW5jZSBmb3IgQ1BVIHBlcmZvcm1hbmNlLiBBbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBDUFUgcGVyZm9ybWFuY2Ugb2YgdGhlIHJlZmVyZW5jZWQgaW5zdGFuY2UgZmFtaWx5LCByZWdhcmRsZXNzIG9mIENQVSBtYW51ZmFjdHVyZXIgb3IgYXJjaGl0ZWN0dXJlIGRpZmZlcmVuY2VzLlxuICovXG5leHBvcnQgdHlwZSBSZWZlcmVuY2VzID0gUmVmZXJlbmNlW11cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgbGF1bmNoIHRlbXBsYXRlLlxuICogIFRoZSBtaW5pbXVtIHJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHNwZWNpZnlpbmcgYSBsYXVuY2ggdGVtcGxhdGUgYXJlIGFzIGZvbGxvd3M6XG4gKiAgICsgIFlvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIHByb3BlcnR5IGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIGRhdGEuXG4gKiAgICsgIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEgbmFtZSBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZS4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgbmFtZSwgQ0ZOIGNyZWF0ZXMgYSBuYW1lIGZvciB5b3UuXG4gKiAgIFxuICogIEEgbGF1bmNoIHRlbXBsYXRlIGNhbiBjb250YWluIHNvbWUgb3IgYWxsIG9mIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRvIGxhdW5jaCBhbiBpbnN0YW5jZS4gV2hlbiB5b3UgbGF1bmNoIGFuIGluc3RhbmNlIHVzaW5nIGEgbGF1bmNoIHRlbXBsYXRlLCBpbnN0YW5jZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBzcGVjaWZpZWQgaW4gdGhlIGxhdW5jaCB0ZW1wbGF0ZSB1c2UgZGVmYXVsdCB2YWx1ZXMsIGV4Y2VwdCB0aGUgYGBJbWFnZUlkYGAgcHJvcGVydHksIHdoaWNoIGhhcyBubyBkZWZhdWx0IHZhbHVlLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYW4gQU1JIElEIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIGBgSW1hZ2VJZGBgIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IGFuIEFNSSBJRCBmb3IgdGhlIGluc3RhbmNlIGBgSW1hZ2VJZGBgIHByb3BlcnR5LlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0xhdW5jaCBhbiBpbnN0YW5jZSBmcm9tIGEgbGF1bmNoIHRlbXBsYXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWxhdW5jaC10ZW1wbGF0ZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfRUMyX0xBVU5DSFRFTVBMQVRFIHtcbi8qKlxuICogQSBuYW1lIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICovXG5MYXVuY2hUZW1wbGF0ZU5hbWU/OiBzdHJpbmdcbkxhdW5jaFRlbXBsYXRlRGF0YTogTGF1bmNoVGVtcGxhdGVEYXRhXG4vKipcbiAqIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cblZlcnNpb25EZXNjcmlwdGlvbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgbGF1bmNoIHRlbXBsYXRlIG9uIGNyZWF0aW9uLiBUbyB0YWcgdGhlIGxhdW5jaCB0ZW1wbGF0ZSwgdGhlIHJlc291cmNlIHR5cGUgbXVzdCBiZSBgYGxhdW5jaC10ZW1wbGF0ZWBgLlxuICogIFRvIHNwZWNpZnkgdGhlIHRhZ3MgZm9yIHJlc291cmNlcyB0aGF0IGFyZSBjcmVhdGVkIGR1cmluZyBpbnN0YW5jZSBsYXVuY2gsIHVzZSBbVGFnU3BlY2lmaWNhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCNjZm4tZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS10YWdzcGVjaWZpY2F0aW9ucykuXG4gKi9cblRhZ1NwZWNpZmljYXRpb25zPzogTGF1bmNoVGVtcGxhdGVUYWdTcGVjaWZpY2F0aW9uW11cbkxhdGVzdFZlcnNpb25OdW1iZXI/OiBzdHJpbmdcbkxhdW5jaFRlbXBsYXRlSWQ/OiBzdHJpbmdcbkRlZmF1bHRWZXJzaW9uTnVtYmVyPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZURhdGEge1xuLyoqXG4gKiBUaGUgbmFtZXMgb2YgdGhlIHNlY3VyaXR5IGdyb3Vwcy4gRm9yIGEgbm9uZGVmYXVsdCBWUEMsIHlvdSBtdXN0IHVzZSBzZWN1cml0eSBncm91cCBJRHMgaW5zdGVhZC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBhIG5ldHdvcmsgaW50ZXJmYWNlLCB5b3UgbXVzdCBzcGVjaWZ5IGFueSBzZWN1cml0eSBncm91cHMgYXMgcGFydCBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaW5zdGVhZCBvZiB1c2luZyB0aGlzIHBhcmFtZXRlci5cbiAqL1xuU2VjdXJpdHlHcm91cHM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgdGFncyB0byBhcHBseSB0byByZXNvdXJjZXMgdGhhdCBhcmUgY3JlYXRlZCBkdXJpbmcgaW5zdGFuY2UgbGF1bmNoLlxuICogIFRvIHRhZyB0aGUgbGF1bmNoIHRlbXBsYXRlIGl0c2VsZiwgdXNlIFtUYWdTcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1sYXVuY2h0ZW1wbGF0ZS5odG1sI2Nmbi1lYzItbGF1bmNodGVtcGxhdGUtdGFnc3BlY2lmaWNhdGlvbnMpLlxuICovXG5UYWdTcGVjaWZpY2F0aW9ucz86IFRhZ1NwZWNpZmljYXRpb25bXVxuTmV0d29ya1BlcmZvcm1hbmNlT3B0aW9ucz86IE5ldHdvcmtQZXJmb3JtYW5jZU9wdGlvbnNcbi8qKlxuICogVGhlIHVzZXIgZGF0YSB0byBtYWtlIGF2YWlsYWJsZSB0byB0aGUgaW5zdGFuY2UuIFlvdSBtdXN0IHByb3ZpZGUgYmFzZTY0LWVuY29kZWQgdGV4dC4gVXNlciBkYXRhIGlzIGxpbWl0ZWQgdG8gMTYgS0IuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1J1biBjb21tYW5kcyB3aGVuIHlvdSBsYXVuY2ggYW4gRUMyIGluc3RhbmNlIHdpdGggdXNlciBkYXRhIGlucHV0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvdXNlci1kYXRhLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3UgYXJlIGNyZWF0aW5nIHRoZSBsYXVuY2ggdGVtcGxhdGUgZm9yIHVzZSB3aXRoIEJBVENILCB0aGUgdXNlciBkYXRhIG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIFtNSU1FIG11bHRpLXBhcnQgYXJjaGl2ZSBmb3JtYXRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9odHRwczovL2Nsb3VkaW5pdC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvdG9waWNzL2Zvcm1hdC5odG1sI21pbWUtbXVsdGktcGFydC1hcmNoaXZlKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiB1c2VyIGRhdGEgaW4gbGF1bmNoIHRlbXBsYXRlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JhdGNoL2xhdGVzdC91c2VyZ3VpZGUvbGF1bmNoLXRlbXBsYXRlcy5odG1sI2x0LXVzZXItZGF0YSkgaW4gdGhlICpVc2VyIEd1aWRlKi5cbiAqL1xuVXNlckRhdGE/OiBzdHJpbmdcbi8qKlxuICogVGhlIGJsb2NrIGRldmljZSBtYXBwaW5nLlxuICovXG5CbG9ja0RldmljZU1hcHBpbmdzPzogQmxvY2tEZXZpY2VNYXBwaW5nW11cbk1haW50ZW5hbmNlT3B0aW9ucz86IE1haW50ZW5hbmNlT3B0aW9uc1xuSWFtSW5zdGFuY2VQcm9maWxlPzogSWFtSW5zdGFuY2VQcm9maWxlXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUga2VybmVsLlxuICogIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgUFYtR1JVQiBpbnN0ZWFkIG9mIGtlcm5lbHMgYW5kIFJBTSBkaXNrcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNlciBQcm92aWRlZCBLZXJuZWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvVXNlclByb3ZpZGVka2VybmVscy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbktlcm5lbElkPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnN0YW5jZSBpcyBvcHRpbWl6ZWQgZm9yIEFtYXpvbiBFQlMgSS9PLiBUaGlzIG9wdGltaXphdGlvbiBwcm92aWRlcyBkZWRpY2F0ZWQgdGhyb3VnaHB1dCB0byBBbWF6b24gRUJTIGFuZCBhbiBvcHRpbWl6ZWQgY29uZmlndXJhdGlvbiBzdGFjayB0byBwcm92aWRlIG9wdGltYWwgQW1hem9uIEVCUyBJL08gcGVyZm9ybWFuY2UuIFRoaXMgb3B0aW1pemF0aW9uIGlzbid0IGF2YWlsYWJsZSB3aXRoIGFsbCBpbnN0YW5jZSB0eXBlcy4gQWRkaXRpb25hbCB1c2FnZSBjaGFyZ2VzIGFwcGx5IHdoZW4gdXNpbmcgYW4gRUJTLW9wdGltaXplZCBpbnN0YW5jZS5cbiAqL1xuRWJzT3B0aW1pemVkPzogYm9vbGVhblxuLyoqXG4gKiBEZXByZWNhdGVkLlxuICogICBBbWF6b24gRWxhc3RpYyBHcmFwaGljcyByZWFjaGVkIGVuZCBvZiBsaWZlIG9uIEphbnVhcnkgOCwgMjAyNC5cbiAqL1xuRWxhc3RpY0dwdVNwZWNpZmljYXRpb25zPzogRWxhc3RpY0dwdVNwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBBbWF6b24gRWxhc3RpYyBJbmZlcmVuY2UgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS5cbiAqICAgQW4gZWxhc3RpYyBpbmZlcmVuY2UgYWNjZWxlcmF0b3IgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGluc3RhbmNlLiBFbGFzdGljIGluZmVyZW5jZSBhY2NlbGVyYXRvcnMgYXJlIGEgcmVzb3VyY2UgeW91IGNhbiBhdHRhY2ggdG8geW91ciBBbWF6b24gRUMyIGluc3RhbmNlcyB0byBhY2NlbGVyYXRlIHlvdXIgRGVlcCBMZWFybmluZyAoREwpIGluZmVyZW5jZSB3b3JrbG9hZHMuXG4gKiAgWW91IGNhbm5vdCBzcGVjaWZ5IGFjY2VsZXJhdG9ycyBmcm9tIGRpZmZlcmVudCBnZW5lcmF0aW9ucyBpbiB0aGUgc2FtZSByZXF1ZXN0LlxuICovXG5FbGFzdGljSW5mZXJlbmNlQWNjZWxlcmF0b3JzPzogTGF1bmNoVGVtcGxhdGVFbGFzdGljSW5mZXJlbmNlQWNjZWxlcmF0b3JbXVxuUGxhY2VtZW50PzogUGxhY2VtZW50XG4vKipcbiAqIFRoZSBuZXR3b3JrIGludGVyZmFjZXMgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuTmV0d29ya0ludGVyZmFjZXM/OiBOZXR3b3JrSW50ZXJmYWNlW11cbkVuY2xhdmVPcHRpb25zPzogRW5jbGF2ZU9wdGlvbnNcbi8qKlxuICogVGhlIElEIG9mIHRoZSBBTUkuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gc3BlY2lmeSBhIFN5c3RlbXMgTWFuYWdlciBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgcmVzb2x2ZSB0byBhbiBBTUkgSUQgb24gbGF1bmNoLlxuICogIFZhbGlkIGZvcm1hdHM6XG4gKiAgICsgICBgYGFtaS0wYWMzOTRkNmEzZXhhbXBsZWBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZWBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZTp2ZXJzaW9uLW51bWJlcmBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZTpsYWJlbGBgIFxuICogICBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2UgYSBTeXN0ZW1zIE1hbmFnZXIgcGFyYW1ldGVyIHRvIGZpbmQgYW4gQU1JXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZmluZGluZy1hbi1hbWkuaHRtbCN1c2luZy1zeXN0ZW1zLW1hbmFnZXItcGFyYW1ldGVyLXRvLWZpbmQtQU1JKSBpbiB0aGUgKkFtYXpvbiBFbGFzdGljIENvbXB1dGUgQ2xvdWQgVXNlciBHdWlkZSouXG4gKi9cbkltYWdlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIGluc3RhbmNlIHR5cGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9pbnN0YW5jZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgSWYgeW91IHNwZWNpZnkgYGBJbnN0YW5jZVR5cGVgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBJbnN0YW5jZVJlcXVpcmVtZW50c2BgLlxuICovXG5JbnN0YW5jZVR5cGU/OiBzdHJpbmdcbk1vbml0b3Jpbmc/OiBNb25pdG9yaW5nXG5IaWJlcm5hdGlvbk9wdGlvbnM/OiBIaWJlcm5hdGlvbk9wdGlvbnNcbk1ldGFkYXRhT3B0aW9ucz86IE1ldGFkYXRhT3B0aW9uc1xuLyoqXG4gKiBUaGUgbGljZW5zZSBjb25maWd1cmF0aW9ucy5cbiAqL1xuTGljZW5zZVNwZWNpZmljYXRpb25zPzogTGljZW5zZVNwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBpbnN0YW5jZSBzdG9wcyBvciB0ZXJtaW5hdGVzIHdoZW4geW91IGluaXRpYXRlIHNodXRkb3duIGZyb20gdGhlIGluc3RhbmNlICh1c2luZyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBjb21tYW5kIGZvciBzeXN0ZW0gc2h1dGRvd24pLlxuICogIERlZmF1bHQ6IGBgc3RvcGBgXG4gKi9cbkluc3RhbmNlSW5pdGlhdGVkU2h1dGRvd25CZWhhdmlvcj86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgdGhlIGluc3RhbmNlIGZvciBzdG9wIHByb3RlY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0VuYWJsZSBzdG9wIHByb3RlY3Rpb24gZm9yIHlvdXIgRUMyIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1zdG9wLXByb3RlY3Rpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5EaXNhYmxlQXBpU3RvcD86IGJvb2xlYW5cbkNwdU9wdGlvbnM/OiBDcHVPcHRpb25zXG5Qcml2YXRlRG5zTmFtZU9wdGlvbnM/OiBQcml2YXRlRG5zTmFtZU9wdGlvbnNcbi8qKlxuICogVGhlIElEcyBvZiB0aGUgc2VjdXJpdHkgZ3JvdXBzLiBZb3UgY2FuIHNwZWNpZnkgdGhlIElEcyBvZiBleGlzdGluZyBzZWN1cml0eSBncm91cHMgYW5kIHJlZmVyZW5jZXMgdG8gcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhlIHN0YWNrIHRlbXBsYXRlLlxuICogIElmIHlvdSBzcGVjaWZ5IGEgbmV0d29yayBpbnRlcmZhY2UsIHlvdSBtdXN0IHNwZWNpZnkgYW55IHNlY3VyaXR5IGdyb3VwcyBhcyBwYXJ0IG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpbnN0ZWFkLlxuICovXG5TZWN1cml0eUdyb3VwSWRzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGtleSBwYWlyLiBZb3UgY2FuIGNyZWF0ZSBhIGtleSBwYWlyIHVzaW5nIFtDcmVhdGVLZXlQYWlyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUtleVBhaXIuaHRtbCkgb3IgW0ltcG9ydEtleVBhaXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfSW1wb3J0S2V5UGFpci5odG1sKS5cbiAqICAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEga2V5IHBhaXIsIHlvdSBjYW4ndCBjb25uZWN0IHRvIHRoZSBpbnN0YW5jZSB1bmxlc3MgeW91IGNob29zZSBhbiBBTUkgdGhhdCBpcyBjb25maWd1cmVkIHRvIGFsbG93IHVzZXJzIGFub3RoZXIgd2F5IHRvIGxvZyBpbi5cbiAqL1xuS2V5TmFtZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0ZXJtaW5hdGlvbiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBpbnN0YW5jZS4gVGhlIGRlZmF1bHQgaXMgYGBmYWxzZWBgLCB3aGljaCBtZWFucyB0aGF0IHlvdSBjYW4gdGVybWluYXRlIHRoZSBpbnN0YW5jZSB1c2luZyB0aGUgQW1hem9uIEVDMiBjb25zb2xlLCBjb21tYW5kIGxpbmUgdG9vbHMsIG9yIEFQSS4gWW91IGNhbiBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiB3aGVuIHlvdSBsYXVuY2ggYW4gaW5zdGFuY2UsIHdoaWxlIHRoZSBpbnN0YW5jZSBpcyBydW5uaW5nLCBvciB3aGlsZSB0aGUgaW5zdGFuY2UgaXMgc3RvcHBlZC5cbiAqL1xuRGlzYWJsZUFwaVRlcm1pbmF0aW9uPzogYm9vbGVhblxuSW5zdGFuY2VNYXJrZXRPcHRpb25zPzogSW5zdGFuY2VNYXJrZXRPcHRpb25zXG5JbnN0YW5jZVJlcXVpcmVtZW50cz86IEluc3RhbmNlUmVxdWlyZW1lbnRzXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgUkFNIGRpc2suXG4gKiAgIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgUFYtR1JVQiBpbnN0ZWFkIG9mIGtlcm5lbHMgYW5kIFJBTSBkaXNrcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNlciBwcm92aWRlZCBrZXJuZWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvVXNlclByb3ZpZGVka2VybmVscy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cblJhbURpc2tJZD86IHN0cmluZ1xuQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb24/OiBDYXBhY2l0eVJlc2VydmF0aW9uU3BlY2lmaWNhdGlvblxuQ3JlZGl0U3BlY2lmaWNhdGlvbj86IENyZWRpdFNwZWNpZmljYXRpb25cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSB0YWdzIHRvIGFwcGx5IHRvIHJlc291cmNlcyB0aGF0IGFyZSBjcmVhdGVkIGR1cmluZyBpbnN0YW5jZSBsYXVuY2guXG4gKiAgYGBUYWdTcGVjaWZpY2F0aW9uYGAgaXMgYSBwcm9wZXJ0eSB0eXBlIG9mIFtUYWdTcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS5odG1sI2Nmbi1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLXRhZ3NwZWNpZmljYXRpb25zKS4gW1RhZ1NwZWNpZmljYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLmh0bWwjY2ZuLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEtdGFnc3BlY2lmaWNhdGlvbnMpIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSB0eXBlIG9mIHJlc291cmNlIHRvIHRhZy4gWW91IGNhbiBzcGVjaWZ5IHRhZ3MgZm9yIHRoZSBmb2xsb3dpbmcgcmVzb3VyY2UgdHlwZXMgb25seTogYGBpbnN0YW5jZWBgIHwgYGB2b2x1bWVgYCB8IGBgbmV0d29yay1pbnRlcmZhY2VgYCB8IGBgc3BvdC1pbnN0YW5jZXMtcmVxdWVzdGBgLiBJZiB0aGUgaW5zdGFuY2UgZG9lcyBub3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgdHlwZSB0aGF0IHlvdSBzcGVjaWZ5LCB0aGUgaW5zdGFuY2UgbGF1bmNoIGZhaWxzLiBGb3IgZXhhbXBsZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBpbmNsdWRlIGEgdm9sdW1lLlxuICogIFRvIHRhZyBhIHJlc291cmNlIGFmdGVyIGl0IGhhcyBiZWVuIGNyZWF0ZWQsIHNlZSBbQ3JlYXRlVGFnc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVUYWdzLmh0bWwpLlxuICovXG5SZXNvdXJjZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIHJlc291cmNlLlxuICovXG5UYWdzPzogVGFnW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgdGFnLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtSZXNvdXJjZSB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1yZXNvdXJjZS10YWdzLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgdGhlIG5ldHdvcmsgcGVyZm9ybWFuY2Ugb3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFQzIgaW5zdGFuY2UgYmFuZHdpZHRoIHdlaWdodGluZyBjb25maWd1cmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvY29uZmlndXJlLWJhbmR3aWR0aC13ZWlnaHRpbmcuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1BlcmZvcm1hbmNlT3B0aW9ucyB7XG4vKipcbiAqIFNwZWNpZnkgdGhlIGJhbmR3aWR0aCB3ZWlnaHRpbmcgb3B0aW9uIHRvIGJvb3N0IHRoZSBhc3NvY2lhdGVkIHR5cGUgb2YgYmFzZWxpbmUgYmFuZHdpZHRoLCBhcyBmb2xsb3dzOlxuICogICArIGRlZmF1bHQgVGhpcyBvcHRpb24gdXNlcyB0aGUgc3RhbmRhcmQgYmFuZHdpZHRoIGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIgaW5zdGFuY2UgdHlwZS4gKyB2cGMtMSBUaGlzIG9wdGlvbiBib29zdHMgeW91ciBuZXR3b3JraW5nIGJhc2VsaW5lIGJhbmR3aWR0aCBhbmQgcmVkdWNlcyB5b3VyIEVCUyBiYXNlbGluZSBiYW5kd2lkdGguICsgZWJzLTEgVGhpcyBvcHRpb24gYm9vc3RzIHlvdXIgRUJTIGJhc2VsaW5lIGJhbmR3aWR0aCBhbmQgcmVkdWNlcyB5b3VyIG5ldHdvcmtpbmcgYmFzZWxpbmUgYmFuZHdpZHRoLlxuICovXG5CYW5kd2lkdGhXZWlnaHRpbmc/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgYmxvY2sgZGV2aWNlIG1hcHBpbmcgZm9yIGEgbGF1bmNoIHRlbXBsYXRlLiBZb3UgbXVzdCBzcGVjaWZ5IGBgRGV2aWNlTmFtZWBgIHBsdXMgZXhhY3RseSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiBgYEVic2BgLCBgYE5vRGV2aWNlYGAsIG9yIGBgVmlydHVhbE5hbWVgYC5cbiAqICBgYEJsb2NrRGV2aWNlTWFwcGluZ2BgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tEZXZpY2VNYXBwaW5nIHtcbkVicz86IEVic1xuLyoqXG4gKiBUbyBvbWl0IHRoZSBkZXZpY2UgZnJvbSB0aGUgYmxvY2sgZGV2aWNlIG1hcHBpbmcsIHNwZWNpZnkgYW4gZW1wdHkgc3RyaW5nLlxuICovXG5Ob0RldmljZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmlydHVhbCBkZXZpY2UgbmFtZSAoZXBoZW1lcmFsTikuIEluc3RhbmNlIHN0b3JlIHZvbHVtZXMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIGZyb20gMC4gQW4gaW5zdGFuY2UgdHlwZSB3aXRoIDIgYXZhaWxhYmxlIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgY2FuIHNwZWNpZnkgbWFwcGluZ3MgZm9yIGVwaGVtZXJhbDAgYW5kIGVwaGVtZXJhbDEuIFRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgZGVwZW5kcyBvbiB0aGUgaW5zdGFuY2UgdHlwZS4gQWZ0ZXIgeW91IGNvbm5lY3QgdG8gdGhlIGluc3RhbmNlLCB5b3UgbXVzdCBtb3VudCB0aGUgdm9sdW1lLlxuICovXG5WaXJ0dWFsTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZGV2aWNlIG5hbWUgKGZvciBleGFtcGxlLCAvZGV2L3NkaCBvciB4dmRoKS5cbiAqL1xuRGV2aWNlTmFtZT86IHN0cmluZ1xufVxuLyoqXG4gKiBQYXJhbWV0ZXJzIHVzZWQgdG8gYXV0b21hdGljYWxseSBzZXQgdXAgRUJTIHZvbHVtZXMgd2hlbiB0aGUgaW5zdGFuY2UgaXMgbGF1bmNoZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWJzIHtcbi8qKlxuICogVGhlIElEIG9mIHRoZSBzbmFwc2hvdC5cbiAqL1xuU25hcHNob3RJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdm9sdW1lIHR5cGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQlMgdm9sdW1lIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWJzL2xhdGVzdC91c2VyZ3VpZGUvZWJzLXZvbHVtZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQlMgVXNlciBHdWlkZSouXG4gKi9cblZvbHVtZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogSWRlbnRpZmllciAoa2V5IElELCBrZXkgYWxpYXMsIGtleSBBUk4sIG9yIGFsaWFzIEFSTikgb2YgdGhlIGN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSB0byB1c2UgZm9yIEVCUyBlbmNyeXB0aW9uLlxuICovXG5LbXNLZXlJZD86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgRUJTIHZvbHVtZSBpcyBlbmNyeXB0ZWQuIEVuY3J5cHRlZCB2b2x1bWVzIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIGluc3RhbmNlcyB0aGF0IHN1cHBvcnQgQW1hem9uIEVCUyBlbmNyeXB0aW9uLiBJZiB5b3UgYXJlIGNyZWF0aW5nIGEgdm9sdW1lIGZyb20gYSBzbmFwc2hvdCwgeW91IGNhbid0IHNwZWNpZnkgYW4gZW5jcnlwdGlvbiB2YWx1ZS5cbiAqL1xuRW5jcnlwdGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgdGhyb3VnaHB1dCB0byBwcm92aXNpb24gZm9yIGEgYGBncDNgYCB2b2x1bWUsIHdpdGggYSBtYXhpbXVtIG9mIDEsMDAwIE1pQi9zLlxuICogIFZhbGlkIFJhbmdlOiBNaW5pbXVtIHZhbHVlIG9mIDEyNS4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwLlxuICovXG5UaHJvdWdocHV0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgSS9PIG9wZXJhdGlvbnMgcGVyIHNlY29uZCAoSU9QUykuIEZvciBgYGdwM2BgLCBgYGlvMWBgLCBhbmQgYGBpbzJgYCB2b2x1bWVzLCB0aGlzIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBJT1BTIHRoYXQgYXJlIHByb3Zpc2lvbmVkIGZvciB0aGUgdm9sdW1lLiBGb3IgYGBncDJgYCB2b2x1bWVzLCB0aGlzIHJlcHJlc2VudHMgdGhlIGJhc2VsaW5lIHBlcmZvcm1hbmNlIG9mIHRoZSB2b2x1bWUgYW5kIHRoZSByYXRlIGF0IHdoaWNoIHRoZSB2b2x1bWUgYWNjdW11bGF0ZXMgSS9PIGNyZWRpdHMgZm9yIGJ1cnN0aW5nLlxuICogIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBzdXBwb3J0ZWQgdmFsdWVzIGZvciBlYWNoIHZvbHVtZSB0eXBlOlxuICogICArICBgYGdwM2BgOiAzLDAwMCAtIDE2LDAwMCBJT1BTXG4gKiAgICsgIGBgaW8xYGA6IDEwMCAtIDY0LDAwMCBJT1BTXG4gKiAgICsgIGBgaW8yYGA6IDEwMCAtIDI1NiwwMDAgSU9QU1xuICogICBcbiAqICBGb3IgYGBpbzJgYCB2b2x1bWVzLCB5b3UgY2FuIGFjaGlldmUgdXAgdG8gMjU2LDAwMCBJT1BTIG9uIFtpbnN0YW5jZXMgYnVpbHQgb24gdGhlIE5pdHJvIFN5c3RlbV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VjMi9sYXRlc3QvaW5zdGFuY2V0eXBlcy9lYzItbml0cm8taW5zdGFuY2VzLmh0bWwpLiBPbiBvdGhlciBpbnN0YW5jZXMsIHlvdSBjYW4gYWNoaWV2ZSBwZXJmb3JtYW5jZSB1cCB0byAzMiwwMDAgSU9QUy5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQgZm9yIGBgaW8xYGAsIGBgaW8yYGAsIGFuZCBgYGdwM2BgIHZvbHVtZXMgb25seS5cbiAqL1xuSW9wcz86IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIEFtYXpvbiBFQlMgUHJvdmlzaW9uZWQgUmF0ZSBmb3IgVm9sdW1lIEluaXRpYWxpemF0aW9uICh2b2x1bWUgaW5pdGlhbGl6YXRpb24gcmF0ZSksIGluIE1pQi9zLCBhdCB3aGljaCB0byBkb3dubG9hZCB0aGUgc25hcHNob3QgYmxvY2tzIGZyb20gQW1hem9uIFMzIHRvIHRoZSB2b2x1bWUuIFRoaXMgaXMgYWxzbyBrbm93biBhcyAqdm9sdW1lIGluaXRpYWxpemF0aW9uKi4gU3BlY2lmeWluZyBhIHZvbHVtZSBpbml0aWFsaXphdGlvbiByYXRlIGVuc3VyZXMgdGhhdCB0aGUgdm9sdW1lIGlzIGluaXRpYWxpemVkIGF0IGEgcHJlZGljdGFibGUgYW5kIGNvbnNpc3RlbnQgcmF0ZSBhZnRlciBjcmVhdGlvbi5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQgb25seSBmb3Igdm9sdW1lcyBjcmVhdGVkIGZyb20gc25hcHNob3RzLiBPbWl0IHRoaXMgcGFyYW1ldGVyIGlmOlxuICogICArICBZb3Ugd2FudCB0byBjcmVhdGUgdGhlIHZvbHVtZSB1c2luZyBmYXN0IHNuYXBzaG90IHJlc3RvcmUuIFlvdSBtdXN0IHNwZWNpZnkgYSBzbmFwc2hvdCB0aGF0IGlzIGVuYWJsZWQgZm9yIGZhc3Qgc25hcHNob3QgcmVzdG9yZS4gSW4gdGhpcyBjYXNlLCB0aGUgdm9sdW1lIGlzIGZ1bGx5IGluaXRpYWxpemVkIGF0IGNyZWF0aW9uLlxuICogICBJZiB5b3Ugc3BlY2lmeSBhIHNuYXBzaG90IHRoYXQgaXMgZW5hYmxlZCBmb3IgZmFzdCBzbmFwc2hvdCByZXN0b3JlIGFuZCBhIHZvbHVtZSBpbml0aWFsaXphdGlvbiByYXRlLCB0aGUgdm9sdW1lIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXQgdGhlIHNwZWNpZmllZCByYXRlIGluc3RlYWQgb2YgZmFzdCBzbmFwc2hvdCByZXN0b3JlLlxuICogICAgKyAgWW91IHdhbnQgdG8gY3JlYXRlIGEgdm9sdW1lIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYXQgdGhlIGRlZmF1bHQgcmF0ZS5cbiAqICAgXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSW5pdGlhbGl6ZSBBbWF6b24gRUJTIHZvbHVtZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYnMvbGF0ZXN0L3VzZXJndWlkZS9pbml0YWxpemUtdm9sdW1lLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCByYW5nZTogMTAwIC0gMzAwIE1pQi9zXG4gKi9cblZvbHVtZUluaXRpYWxpemF0aW9uUmF0ZT86IG51bWJlclxuLyoqXG4gKiBUaGUgc2l6ZSBvZiB0aGUgdm9sdW1lLCBpbiBHaUJzLiBZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciBhIHNuYXBzaG90IElEIG9yIGEgdm9sdW1lIHNpemUuIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBzdXBwb3J0ZWQgdm9sdW1lcyBzaXplcyBmb3IgZWFjaCB2b2x1bWUgdHlwZTpcbiAqICAgKyAgYGBncDJgYCBhbmQgYGBncDNgYDogMSAtIDE2LDM4NCBHaUJcbiAqICAgKyAgYGBpbzFgYDogNCAtIDE2LDM4NCBHaUJcbiAqICAgKyAgYGBpbzJgYDogNCAtIDY1LDUzNiBHaUJcbiAqICAgKyAgYGBzdDFgYCBhbmQgYGBzYzFgYDogMTI1IC0gMTYsMzg0IEdpQlxuICogICArICBgYHN0YW5kYXJkYGA6IDEgLSAxMDI0IEdpQlxuICovXG5Wb2x1bWVTaXplPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBFQlMgdm9sdW1lIGlzIGRlbGV0ZWQgb24gaW5zdGFuY2UgdGVybWluYXRpb24uXG4gKi9cbkRlbGV0ZU9uVGVybWluYXRpb24/OiBib29sZWFuXG59XG4vKipcbiAqIFRoZSBtYWludGVuYW5jZSBvcHRpb25zIG9mIHlvdXIgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFpbnRlbmFuY2VPcHRpb25zIHtcbi8qKlxuICogRGlzYWJsZXMgdGhlIGF1dG9tYXRpYyByZWNvdmVyeSBiZWhhdmlvciBvZiB5b3VyIGluc3RhbmNlIG9yIHNldHMgaXQgdG8gZGVmYXVsdC5cbiAqL1xuQXV0b1JlY292ZXJ5Pzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBuYW1lIG9yIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIGFuIElBTSBpbnN0YW5jZSBwcm9maWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElhbUluc3RhbmNlUHJvZmlsZSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgaW5zdGFuY2UgcHJvZmlsZS5cbiAqL1xuQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBpbnN0YW5jZSBwcm9maWxlLlxuICovXG5OYW1lPzogc3RyaW5nXG59XG4vKipcbiAqIEFtYXpvbiBFbGFzdGljIEdyYXBoaWNzIHJlYWNoZWQgZW5kIG9mIGxpZmUgb24gSmFudWFyeSA4LCAyMDI0LlxuICogICBTcGVjaWZpZXMgYSBzcGVjaWZpY2F0aW9uIGZvciBhbiBFbGFzdGljIEdQVSBmb3IgYW4gQW1hem9uIEVDMiBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgYGBFbGFzdGljR3B1U3BlY2lmaWNhdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxhc3RpY0dwdVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgdHlwZSBvZiBFbGFzdGljIEdyYXBoaWNzIGFjY2VsZXJhdG9yLlxuICovXG5UeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIEFtYXpvbiBFbGFzdGljIEluZmVyZW5jZSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLlxuICogICBTcGVjaWZpZXMgYW4gZWxhc3RpYyBpbmZlcmVuY2UgYWNjZWxlcmF0b3IuXG4gKiAgYGBMYXVuY2hUZW1wbGF0ZUVsYXN0aWNJbmZlcmVuY2VBY2NlbGVyYXRvcmBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVFbGFzdGljSW5mZXJlbmNlQWNjZWxlcmF0b3Ige1xuLyoqXG4gKiBUaGUgdHlwZSBvZiBlbGFzdGljIGluZmVyZW5jZSBhY2NlbGVyYXRvci4gVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgZWlhMS5tZWRpdW0sIGVpYTEubGFyZ2UsIGFuZCBlaWExLnhsYXJnZS5cbiAqL1xuVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGVsYXN0aWMgaW5mZXJlbmNlIGFjY2VsZXJhdG9ycyB0byBhdHRhY2ggdG8gdGhlIGluc3RhbmNlLiBcbiAqICBEZWZhdWx0OiAxXG4gKi9cbkNvdW50PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBwbGFjZW1lbnQgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZW1lbnQge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcGxhY2VtZW50IGdyb3VwIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkdyb3VwTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGVuYW5jeSBvZiB0aGUgaW5zdGFuY2UuIEFuIGluc3RhbmNlIHdpdGggYSB0ZW5hbmN5IG9mIGRlZGljYXRlZCBydW5zIG9uIHNpbmdsZS10ZW5hbnQgaGFyZHdhcmUuXG4gKi9cblRlbmFuY3k/OiBzdHJpbmdcbi8qKlxuICogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuXG4gKi9cblNwcmVhZERvbWFpbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHRoZSBwYXJ0aXRpb24gdGhlIGluc3RhbmNlIHNob3VsZCBsYXVuY2ggaW4uIFZhbGlkIG9ubHkgaWYgdGhlIHBsYWNlbWVudCBncm91cCBzdHJhdGVneSBpcyBzZXQgdG8gYGBwYXJ0aXRpb25gYC5cbiAqL1xuUGFydGl0aW9uTnVtYmVyPzogbnVtYmVyXG4vKipcbiAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSBmb3IgdGhlIGluc3RhbmNlLlxuICovXG5BdmFpbGFiaWxpdHlab25lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhZmZpbml0eSBzZXR0aW5nIGZvciBhbiBpbnN0YW5jZSBvbiBhIERlZGljYXRlZCBIb3N0LlxuICovXG5BZmZpbml0eT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIERlZGljYXRlZCBIb3N0IGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkhvc3RJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBob3N0IHJlc291cmNlIGdyb3VwIGluIHdoaWNoIHRvIGxhdW5jaCB0aGUgaW5zdGFuY2VzLiBJZiB5b3Ugc3BlY2lmeSBhIGhvc3QgcmVzb3VyY2UgZ3JvdXAgQVJOLCBvbWl0IHRoZSAqVGVuYW5jeSogcGFyYW1ldGVyIG9yIHNldCBpdCB0byBgYGhvc3RgYC5cbiAqL1xuSG9zdFJlc291cmNlR3JvdXBBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEdyb3VwIElkIG9mIGEgcGxhY2VtZW50IGdyb3VwLiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBQbGFjZW1lbnQgR3JvdXAgKkdyb3VwIElkKiB0byBsYXVuY2ggYW4gaW5zdGFuY2UgaW4gYSBzaGFyZWQgcGxhY2VtZW50IGdyb3VwLlxuICovXG5Hcm91cElkPzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgcGFyYW1ldGVycyBmb3IgYSBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBgYE5ldHdvcmtJbnRlcmZhY2VgYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgTGF1bmNoVGVtcGxhdGVEYXRhXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2Uge1xuLyoqXG4gKiBBIGRlc2NyaXB0aW9uIGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2UuXG4gKi9cbkRlc2NyaXB0aW9uPzogc3RyaW5nXG4vKipcbiAqIFRoZSBwcmltYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzIG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuUHJpdmF0ZUlwQWRkcmVzcz86IHN0cmluZ1xuLyoqXG4gKiBPbmUgb3IgbW9yZSBwcml2YXRlIElQdjQgYWRkcmVzc2VzLlxuICovXG5Qcml2YXRlSXBBZGRyZXNzZXM/OiBQcml2YXRlSXBBZGRbXVxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzc2VzIHRvIGFzc2lnbiB0byBhIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5TZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnQ/OiBudW1iZXJcbi8qKlxuICogVGhlIG51bWJlciBvZiBJUHY2IHByZWZpeGVzIHRvIGJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBZb3UgY2Fubm90IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UgdXNlIHRoZSBgYElwdjZQcmVmaXhgYCBvcHRpb24uXG4gKi9cbklwdjZQcmVmaXhDb3VudD86IG51bWJlclxuLyoqXG4gKiBPbmUgb3IgbW9yZSBJUHY0IHByZWZpeGVzIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gWW91IGNhbm5vdCB1c2UgdGhpcyBvcHRpb24gaWYgeW91IHVzZSB0aGUgYGBJcHY0UHJlZml4Q291bnRgYCBvcHRpb24uXG4gKi9cbklwdjRQcmVmaXhlcz86IElwdjRQcmVmaXhTcGVjaWZpY2F0aW9uW11cbi8qKlxuICogVGhlIGRldmljZSBpbmRleCBmb3IgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGF0dGFjaG1lbnQuIFRoZSBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIGhhcyBhIGRldmljZSBpbmRleCBvZiAwLiBJZiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgb2YgdHlwZSBgYGludGVyZmFjZWBgLCB5b3UgbXVzdCBzcGVjaWZ5IGEgZGV2aWNlIGluZGV4LlxuICogIElmIHlvdSBjcmVhdGUgYSBsYXVuY2ggdGVtcGxhdGUgdGhhdCBpbmNsdWRlcyBzZWNvbmRhcnkgbmV0d29yayBpbnRlcmZhY2VzIGJ1dCBubyBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlLCBhbmQgeW91IHNwZWNpZnkgaXQgdXNpbmcgdGhlIGBgTGF1bmNoVGVtcGxhdGVgYCBwcm9wZXJ0eSBvZiBgYEFXUzo6RUMyOjpJbnN0YW5jZWBgLCB0aGVuIHlvdSBtdXN0IGluY2x1ZGUgYSBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIHVzaW5nIHRoZSBgYE5ldHdvcmtJbnRlcmZhY2VzYGAgcHJvcGVydHkgb2YgYGBBV1M6OkVDMjo6SW5zdGFuY2VgYC5cbiAqL1xuRGV2aWNlSW5kZXg/OiBudW1iZXJcbi8qKlxuICogVGhlIHByaW1hcnkgSVB2NiBhZGRyZXNzIG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gV2hlbiB5b3UgZW5hYmxlIGFuIElQdjYgR1VBIGFkZHJlc3MgdG8gYmUgYSBwcmltYXJ5IElQdjYsIHRoZSBmaXJzdCBJUHY2IEdVQSB3aWxsIGJlIG1hZGUgdGhlIHByaW1hcnkgSVB2NiBhZGRyZXNzIHVudGlsIHRoZSBpbnN0YW5jZSBpcyB0ZXJtaW5hdGVkIG9yIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBkZXRhY2hlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcHJpbWFyeSBJUHY2IGFkZHJlc3Nlcywgc2VlIFtSdW5JbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUnVuSW5zdGFuY2VzLmh0bWwpLlxuICovXG5QcmltYXJ5SXB2Nj86IGJvb2xlYW5cbi8qKlxuICogVGhlIG51bWJlciBvZiBJUHY0IHByZWZpeGVzIHRvIGJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBZb3UgY2Fubm90IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UgdXNlIHRoZSBgYElwdjRQcmVmaXhgYCBvcHRpb24uXG4gKi9cbklwdjRQcmVmaXhDb3VudD86IG51bWJlclxuLyoqXG4gKiBPbmUgb3IgbW9yZSBJUHY2IHByZWZpeGVzIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gWW91IGNhbm5vdCB1c2UgdGhpcyBvcHRpb24gaWYgeW91IHVzZSB0aGUgYGBJcHY2UHJlZml4Q291bnRgYCBvcHRpb24uXG4gKi9cbklwdjZQcmVmaXhlcz86IElwdjZQcmVmaXhTcGVjaWZpY2F0aW9uW11cbi8qKlxuICogVGhlIElEIG9mIHRoZSBzdWJuZXQgZm9yIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuU3VibmV0SWQ/OiBzdHJpbmdcbi8qKlxuICogT25lIG9yIG1vcmUgc3BlY2lmaWMgSVB2NiBhZGRyZXNzZXMgZnJvbSB0aGUgSVB2NiBDSURSIGJsb2NrIHJhbmdlIG9mIHlvdXIgc3VibmV0LiBZb3UgY2FuJ3QgdXNlIHRoaXMgb3B0aW9uIGlmIHlvdSdyZSBzcGVjaWZ5aW5nIGEgbnVtYmVyIG9mIElQdjYgYWRkcmVzc2VzLlxuICovXG5JcHY2QWRkcmVzc2VzPzogSXB2NkFkZFtdXG4vKipcbiAqIEFzc29jaWF0ZXMgYSBwdWJsaWMgSVB2NCBhZGRyZXNzIHdpdGggZXRoMCBmb3IgYSBuZXcgbmV0d29yayBpbnRlcmZhY2UuXG4gKiAgQVdTIGNoYXJnZXMgZm9yIGFsbCBwdWJsaWMgSVB2NCBhZGRyZXNzZXMsIGluY2x1ZGluZyBwdWJsaWMgSVB2NCBhZGRyZXNzZXMgYXNzb2NpYXRlZCB3aXRoIHJ1bm5pbmcgaW5zdGFuY2VzIGFuZCBFbGFzdGljIElQIGFkZHJlc3Nlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgKlB1YmxpYyBJUHY0IEFkZHJlc3MqIHRhYiBvbiB0aGUgW0FtYXpvbiBWUEMgcHJpY2luZyBwYWdlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL3ByaWNpbmcvKS5cbiAqL1xuQXNzb2NpYXRlUHVibGljSXBBZGRyZXNzPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5OZXR3b3JrSW50ZXJmYWNlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIGluZGV4IG9mIHRoZSBuZXR3b3JrIGNhcmQuIFNvbWUgaW5zdGFuY2UgdHlwZXMgc3VwcG9ydCBtdWx0aXBsZSBuZXR3b3JrIGNhcmRzLiBUaGUgcHJpbWFyeSBuZXR3b3JrIGludGVyZmFjZSBtdXN0IGJlIGFzc2lnbmVkIHRvIG5ldHdvcmsgY2FyZCBpbmRleCAwLiBUaGUgZGVmYXVsdCBpcyBuZXR3b3JrIGNhcmQgaW5kZXggMC5cbiAqL1xuTmV0d29ya0NhcmRJbmRleD86IG51bWJlclxuLyoqXG4gKiBUaGUgdHlwZSBvZiBuZXR3b3JrIGludGVyZmFjZS4gVG8gY3JlYXRlIGFuIEVsYXN0aWMgRmFicmljIEFkYXB0ZXIgKEVGQSksIHNwZWNpZnkgYGBlZmFgYCBvciBgYGVmYWBgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFbGFzdGljIEZhYnJpYyBBZGFwdGVyIGZvciBBSS9NTCBhbmQgSFBDIHdvcmtsb2FkcyBvbiBBbWF6b24gRUMyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWZhLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3UgYXJlIG5vdCBjcmVhdGluZyBhbiBFRkEsIHNwZWNpZnkgYGBpbnRlcmZhY2VgYCBvciBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICogIElmIHlvdSBzcGVjaWZ5IGBgZWZhLW9ubHlgYCwgZG8gbm90IGFzc2lnbiBhbnkgSVAgYWRkcmVzc2VzIHRvIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gRUZBLW9ubHkgbmV0d29yayBpbnRlcmZhY2VzIGRvIG5vdCBzdXBwb3J0IElQIGFkZHJlc3Nlcy5cbiAqICBWYWxpZCB2YWx1ZXM6IGBgaW50ZXJmYWNlYGAgfCBgYGVmYWBgIHwgYGBlZmEtb25seWBgXG4gKi9cbkludGVyZmFjZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogQXNzb2NpYXRlcyBhIENhcnJpZXIgSVAgYWRkcmVzcyB3aXRoIGV0aDAgZm9yIGEgbmV3IG5ldHdvcmsgaW50ZXJmYWNlLlxuICogIFVzZSB0aGlzIG9wdGlvbiB3aGVuIHlvdSBsYXVuY2ggYW4gaW5zdGFuY2UgaW4gYSBXYXZlbGVuZ3RoIFpvbmUgYW5kIHdhbnQgdG8gYXNzb2NpYXRlIGEgQ2FycmllciBJUCBhZGRyZXNzIHdpdGggdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBDYXJyaWVyIElQIGFkZHJlc3Nlcywgc2VlIFtDYXJyaWVyIElQIGFkZHJlc3Nlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3dhdmVsZW5ndGgvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2hvdy13YXZlbGVuZ3Rocy13b3JrLmh0bWwjcHJvdmlkZXItb3duZWQtaXApIGluIHRoZSAqRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuQXNzb2NpYXRlQ2FycmllcklwQWRkcmVzcz86IGJvb2xlYW5cbkVuYVNyZFNwZWNpZmljYXRpb24/OiBFbmFTcmRTcGVjaWZpY2F0aW9uXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgSVB2NiBhZGRyZXNzZXMgdG8gYXNzaWduIHRvIGEgbmV0d29yayBpbnRlcmZhY2UuIEFtYXpvbiBFQzIgYXV0b21hdGljYWxseSBzZWxlY3RzIHRoZSBJUHY2IGFkZHJlc3NlcyBmcm9tIHRoZSBzdWJuZXQgcmFuZ2UuIFlvdSBjYW4ndCB1c2UgdGhpcyBvcHRpb24gaWYgc3BlY2lmeWluZyBzcGVjaWZpYyBJUHY2IGFkZHJlc3Nlcy5cbiAqL1xuSXB2NkFkZHJlc3NDb3VudD86IG51bWJlclxuLyoqXG4gKiBUaGUgSURzIG9mIG9uZSBvciBtb3JlIHNlY3VyaXR5IGdyb3Vwcy5cbiAqL1xuR3JvdXBzPzogc3RyaW5nW11cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGRlbGV0ZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgdGVybWluYXRlZC5cbiAqL1xuRGVsZXRlT25UZXJtaW5hdGlvbj86IGJvb2xlYW5cbkNvbm5lY3Rpb25UcmFja2luZ1NwZWNpZmljYXRpb24/OiBDb25uZWN0aW9uVHJhY2tpbmdTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIHNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzcyBmb3IgYSBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBgYFByaXZhdGVJcEFkZGBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBOZXR3b3JrSW50ZXJmYWNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbmV0d29ya2ludGVyZmFjZS5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlSXBBZGQge1xuLyoqXG4gKiBUaGUgcHJpdmF0ZSBJUHY0IGFkZHJlc3MuXG4gKi9cblByaXZhdGVJcEFkZHJlc3M/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByaXZhdGUgSVB2NCBhZGRyZXNzIGlzIHRoZSBwcmltYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzLiBPbmx5IG9uZSBJUHY0IGFkZHJlc3MgY2FuIGJlIGRlc2lnbmF0ZWQgYXMgcHJpbWFyeS5cbiAqL1xuUHJpbWFyeT86IGJvb2xlYW5cbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIElQdjQgcHJlZml4IGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlLlxuICogIGBgSXB2NFByZWZpeFNwZWNpZmljYXRpb25gYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgTmV0d29ya0ludGVyZmFjZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLW5ldHdvcmtpbnRlcmZhY2UuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXB2NFByZWZpeFNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgSVB2NCBwcmVmaXguIEZvciBpbmZvcm1hdGlvbiwgc2VlIFtBc3NpZ25pbmcgcHJlZml4ZXMgdG8gbmV0d29yayBpbnRlcmZhY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLXByZWZpeC1lbmkuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5JcHY0UHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBJUHY2IHByZWZpeCBmb3IgYSBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBgYElwdjZQcmVmaXhTcGVjaWZpY2F0aW9uYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIE5ldHdvcmtJbnRlcmZhY2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1uZXR3b3JraW50ZXJmYWNlLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElwdjZQcmVmaXhTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIElQdjYgcHJlZml4LlxuICovXG5JcHY2UHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBJUHY2IGFkZHJlc3MgaW4gYW4gQW1hem9uIEVDMiBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgYGBJcHY2QWRkYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIE5ldHdvcmtJbnRlcmZhY2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1uZXR3b3JraW50ZXJmYWNlLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElwdjZBZGQge1xuLyoqXG4gKiBPbmUgb3IgbW9yZSBzcGVjaWZpYyBJUHY2IGFkZHJlc3NlcyBmcm9tIHRoZSBJUHY2IENJRFIgYmxvY2sgcmFuZ2Ugb2YgeW91ciBzdWJuZXQuIFlvdSBjYW4ndCB1c2UgdGhpcyBvcHRpb24gaWYgeW91J3JlIHNwZWNpZnlpbmcgYSBudW1iZXIgb2YgSVB2NiBhZGRyZXNzZXMuXG4gKi9cbklwdjZBZGRyZXNzPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBFTkEgRXhwcmVzcyBjb25maWd1cmF0aW9uIGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5hU3JkU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIEVOQSBFeHByZXNzIGlzIGVuYWJsZWQgZm9yIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuRW5hU3JkRW5hYmxlZD86IGJvb2xlYW5cbkVuYVNyZFVkcFNwZWNpZmljYXRpb24/OiBFbmFTcmRVZHBTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIENvbmZpZ3VyZXMgRU5BIEV4cHJlc3MgZm9yIFVEUCBuZXR3b3JrIHRyYWZmaWMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5hU3JkVWRwU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIFVEUCB0cmFmZmljIHRvIGFuZCBmcm9tIHRoZSBpbnN0YW5jZSB1c2VzIEVOQSBFeHByZXNzLiBUbyBzcGVjaWZ5IHRoaXMgc2V0dGluZywgeW91IG11c3QgZmlyc3QgZW5hYmxlIEVOQSBFeHByZXNzLlxuICovXG5FbmFTcmRVZHBFbmFibGVkPzogYm9vbGVhblxufVxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25UcmFja2luZ1NwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3IgaWRsZSBVRFAgZmxvd3MgdGhhdCBoYXZlIHNlZW4gdHJhZmZpYyBvbmx5IGluIGEgc2luZ2xlIGRpcmVjdGlvbiBvciBhIHNpbmdsZSByZXF1ZXN0LXJlc3BvbnNlIHRyYW5zYWN0aW9uLiBNaW46IDMwIHNlY29uZHMuIE1heDogNjAgc2Vjb25kcy4gRGVmYXVsdDogMzAgc2Vjb25kcy5cbiAqL1xuVWRwVGltZW91dD86IG51bWJlclxuLyoqXG4gKiBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3IgaWRsZSBUQ1AgY29ubmVjdGlvbnMgaW4gYW4gZXN0YWJsaXNoZWQgc3RhdGUuIE1pbjogNjAgc2Vjb25kcy4gTWF4OiA0MzIwMDAgc2Vjb25kcyAoNSBkYXlzKS4gRGVmYXVsdDogNDMyMDAwIHNlY29uZHMuIFJlY29tbWVuZGVkOiBMZXNzIHRoYW4gNDMyMDAwIHNlY29uZHMuXG4gKi9cblRjcEVzdGFibGlzaGVkVGltZW91dD86IG51bWJlclxuLyoqXG4gKiBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3IgaWRsZSBVRFAgZmxvd3MgY2xhc3NpZmllZCBhcyBzdHJlYW1zIHdoaWNoIGhhdmUgc2VlbiBtb3JlIHRoYW4gb25lIHJlcXVlc3QtcmVzcG9uc2UgdHJhbnNhY3Rpb24uIE1pbjogNjAgc2Vjb25kcy4gTWF4OiAxODAgc2Vjb25kcyAoMyBtaW51dGVzKS4gRGVmYXVsdDogMTgwIHNlY29uZHMuXG4gKi9cblVkcFN0cmVhbVRpbWVvdXQ/OiBudW1iZXJcbn1cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluc3RhbmNlIGlzIGVuYWJsZWQgZm9yIEFXUyBOaXRybyBFbmNsYXZlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbV2hhdCBpcyBOaXRybyBFbmNsYXZlcz9dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbmNsYXZlcy9sYXRlc3QvdXNlci9uaXRyby1lbmNsYXZlLmh0bWwpIGluIHRoZSAqTml0cm8gRW5jbGF2ZXMgVXNlciBHdWlkZSouXG4gKiAgWW91IGNhbid0IGVuYWJsZSBBV1MgTml0cm8gRW5jbGF2ZXMgYW5kIGhpYmVybmF0aW9uIG9uIHRoZSBzYW1lIGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuY2xhdmVPcHRpb25zIHtcbi8qKlxuICogSWYgdGhpcyBwYXJhbWV0ZXIgaXMgc2V0IHRvIGBgdHJ1ZWBgLCB0aGUgaW5zdGFuY2UgaXMgZW5hYmxlZCBmb3IgQVdTIE5pdHJvIEVuY2xhdmVzOyBvdGhlcndpc2UsIGl0IGlzIG5vdCBlbmFibGVkIGZvciBBV1MgTml0cm8gRW5jbGF2ZXMuXG4gKi9cbkVuYWJsZWQ/OiBib29sZWFuXG59XG4vKipcbiAqIFRoZSBtb25pdG9yaW5nIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvcmluZyB7XG4vKipcbiAqIFNwZWNpZnkgYGB0cnVlYGAgdG8gZW5hYmxlIGRldGFpbGVkIG1vbml0b3JpbmcuIE90aGVyd2lzZSwgYmFzaWMgbW9uaXRvcmluZyBpcyBlbmFibGVkLlxuICovXG5FbmFibGVkPzogYm9vbGVhblxufVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBpbnN0YW5jZSBpcyBlbmFibGVkIGZvciBoaWJlcm5hdGlvbi4gVGhpcyBwYXJhbWV0ZXIgaXMgdmFsaWQgb25seSBpZiB0aGUgaW5zdGFuY2UgbWVldHMgdGhlIFtoaWJlcm5hdGlvbiBwcmVyZXF1aXNpdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaGliZXJuYXRpbmctcHJlcmVxdWlzaXRlcy5odG1sKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSGliZXJuYXRlIHlvdXIgQW1hem9uIEVDMiBpbnN0YW5jZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL0hpYmVybmF0ZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGliZXJuYXRpb25PcHRpb25zIHtcbi8qKlxuICogSWYgeW91IHNldCB0aGlzIHBhcmFtZXRlciB0byBgYHRydWVgYCwgdGhlIGluc3RhbmNlIGlzIGVuYWJsZWQgZm9yIGhpYmVybmF0aW9uLlxuICogIERlZmF1bHQ6IGBgZmFsc2VgYFxuICovXG5Db25maWd1cmVkPzogYm9vbGVhblxufVxuLyoqXG4gKiBUaGUgbWV0YWRhdGEgb3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmUgdGhlIEluc3RhbmNlIE1ldGFkYXRhIFNlcnZpY2Ugb3B0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2NvbmZpZ3VyaW5nLWluc3RhbmNlLW1ldGFkYXRhLW9wdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhT3B0aW9ucyB7XG4vKipcbiAqIFRoZSBkZXNpcmVkIEhUVFAgUFVUIHJlc3BvbnNlIGhvcCBsaW1pdCBmb3IgaW5zdGFuY2UgbWV0YWRhdGEgcmVxdWVzdHMuIFRoZSBsYXJnZXIgdGhlIG51bWJlciwgdGhlIGZ1cnRoZXIgaW5zdGFuY2UgbWV0YWRhdGEgcmVxdWVzdHMgY2FuIHRyYXZlbC5cbiAqICBEZWZhdWx0OiBgYDFgYFxuICogIFBvc3NpYmxlIHZhbHVlczogSW50ZWdlcnMgZnJvbSAxIHRvIDY0XG4gKi9cbkh0dHBQdXRSZXNwb25zZUhvcExpbWl0PzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIElNRFN2MiBpcyByZXF1aXJlZC5cbiAqICAgKyAgYGBvcHRpb25hbGBgIC0gSU1EU3YyIGlzIG9wdGlvbmFsLiBZb3UgY2FuIGNob29zZSB3aGV0aGVyIHRvIHNlbmQgYSBzZXNzaW9uIHRva2VuIGluIHlvdXIgaW5zdGFuY2UgbWV0YWRhdGEgcmV0cmlldmFsIHJlcXVlc3RzLiBJZiB5b3UgcmV0cmlldmUgSUFNIHJvbGUgY3JlZGVudGlhbHMgd2l0aG91dCBhIHNlc3Npb24gdG9rZW4sIHlvdSByZWNlaXZlIHRoZSBJTURTdjEgcm9sZSBjcmVkZW50aWFscy4gSWYgeW91IHJldHJpZXZlIElBTSByb2xlIGNyZWRlbnRpYWxzIHVzaW5nIGEgdmFsaWQgc2Vzc2lvbiB0b2tlbiwgeW91IHJlY2VpdmUgdGhlIElNRFN2MiByb2xlIGNyZWRlbnRpYWxzLlxuICogICArICBgYHJlcXVpcmVkYGAgLSBJTURTdjIgaXMgcmVxdWlyZWQuIFlvdSBtdXN0IHNlbmQgYSBzZXNzaW9uIHRva2VuIGluIHlvdXIgaW5zdGFuY2UgbWV0YWRhdGEgcmV0cmlldmFsIHJlcXVlc3RzLiBXaXRoIHRoaXMgb3B0aW9uLCByZXRyaWV2aW5nIHRoZSBJQU0gcm9sZSBjcmVkZW50aWFscyBhbHdheXMgcmV0dXJucyBJTURTdjIgY3JlZGVudGlhbHM7IElNRFN2MSBjcmVkZW50aWFscyBhcmUgbm90IGF2YWlsYWJsZS5cbiAqICAgXG4gKiAgRGVmYXVsdDogSWYgdGhlIHZhbHVlIG9mIGBgSW1kc1N1cHBvcnRgYCBmb3IgdGhlIEFtYXpvbiBNYWNoaW5lIEltYWdlIChBTUkpIGZvciB5b3VyIGluc3RhbmNlIGlzIGBgdjIuMGBgLCB0aGUgZGVmYXVsdCBpcyBgYHJlcXVpcmVkYGAuXG4gKi9cbkh0dHBUb2tlbnM/OiBzdHJpbmdcbi8qKlxuICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgSVB2NiBlbmRwb2ludCBmb3IgdGhlIGluc3RhbmNlIG1ldGFkYXRhIHNlcnZpY2UuXG4gKiAgRGVmYXVsdDogYGBkaXNhYmxlZGBgXG4gKi9cbkh0dHBQcm90b2NvbElwdjY/OiBzdHJpbmdcbi8qKlxuICogU2V0IHRvIGBgZW5hYmxlZGBgIHRvIGFsbG93IGFjY2VzcyB0byBpbnN0YW5jZSB0YWdzIGZyb20gdGhlIGluc3RhbmNlIG1ldGFkYXRhLiBTZXQgdG8gYGBkaXNhYmxlZGBgIHRvIHR1cm4gb2ZmIGFjY2VzcyB0byBpbnN0YW5jZSB0YWdzIGZyb20gdGhlIGluc3RhbmNlIG1ldGFkYXRhLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtWaWV3IHRhZ3MgZm9yIHlvdXIgRUMyIGluc3RhbmNlcyB1c2luZyBpbnN0YW5jZSBtZXRhZGF0YV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL3dvcmstd2l0aC10YWdzLWluLUlNRFMuaHRtbCkuXG4gKiAgRGVmYXVsdDogYGBkaXNhYmxlZGBgXG4gKi9cbkluc3RhbmNlTWV0YWRhdGFUYWdzPzogc3RyaW5nXG4vKipcbiAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEhUVFAgbWV0YWRhdGEgZW5kcG9pbnQgb24geW91ciBpbnN0YW5jZXMuIElmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgc3RhdGUgaXMgYGBlbmFibGVkYGAuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGEgdmFsdWUgb2YgYGBkaXNhYmxlZGBgLCB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgeW91ciBpbnN0YW5jZSBtZXRhZGF0YS5cbiAqL1xuSHR0cEVuZHBvaW50Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIGxpY2Vuc2UgY29uZmlndXJhdGlvbiBmb3IgYW4gaW5zdGFuY2UuXG4gKiAgYGBMaWNlbnNlU3BlY2lmaWNhdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGljZW5zZVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGxpY2Vuc2UgY29uZmlndXJhdGlvbi5cbiAqL1xuTGljZW5zZUNvbmZpZ3VyYXRpb25Bcm4/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIENQVSBvcHRpb25zIGZvciB0aGUgaW5zdGFuY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NQVSBvcHRpb25zIGZvciBBbWF6b24gRUMyIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2luc3RhbmNlLW9wdGltaXplLWNwdS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3B1T3B0aW9ucyB7XG4vKipcbiAqIFRoZSBudW1iZXIgb2YgdGhyZWFkcyBwZXIgQ1BVIGNvcmUuIFRvIGRpc2FibGUgbXVsdGl0aHJlYWRpbmcgZm9yIHRoZSBpbnN0YW5jZSwgc3BlY2lmeSBhIHZhbHVlIG9mIGBgMWBgLiBPdGhlcndpc2UsIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYGAyYGAuXG4gKi9cblRocmVhZHNQZXJDb3JlPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGVuYWJsZSB0aGUgaW5zdGFuY2UgZm9yIEFNRCBTRVYtU05QLiBBTUQgU0VWLVNOUCBpcyBzdXBwb3J0ZWQgd2l0aCBNNmEsIFI2YSwgYW5kIEM2YSBpbnN0YW5jZSB0eXBlcyBvbmx5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBTUQgU0VWLVNOUCBmb3IgQW1hem9uIEVDMiBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9zZXYtc25wLmh0bWwpLlxuICovXG5BbWRTZXZTbnA/OiAoXCJlbmFibGVkXCIgfCBcImRpc2FibGVkXCIpXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgQ1BVIGNvcmVzIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkNvcmVDb3VudD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgaG9zdG5hbWUgdHlwZSBmb3IgRUMyIGluc3RhbmNlcyBsYXVuY2hlZCBpbnRvIHRoaXMgc3VibmV0IGFuZCBob3cgRE5TIEEgYW5kIEFBQUEgcmVjb3JkIHF1ZXJpZXMgc2hvdWxkIGJlIGhhbmRsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgaG9zdG5hbWUgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9lYzItaW5zdGFuY2UtbmFtaW5nLmh0bWwpIGluIHRoZSAqVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmF0ZURuc05hbWVPcHRpb25zIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmVzcG9uZCB0byBETlMgcXVlcmllcyBmb3IgaW5zdGFuY2UgaG9zdG5hbWVzIHdpdGggRE5TIEEgcmVjb3Jkcy5cbiAqL1xuRW5hYmxlUmVzb3VyY2VOYW1lRG5zQVJlY29yZD86IGJvb2xlYW5cbi8qKlxuICogVGhlIHR5cGUgb2YgaG9zdG5hbWUgZm9yIEVDMiBpbnN0YW5jZXMuIEZvciBJUHY0IG9ubHkgc3VibmV0cywgYW4gaW5zdGFuY2UgRE5TIG5hbWUgbXVzdCBiZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgSVB2NCBhZGRyZXNzLiBGb3IgSVB2NiBvbmx5IHN1Ym5ldHMsIGFuIGluc3RhbmNlIEROUyBuYW1lIG11c3QgYmUgYmFzZWQgb24gdGhlIGluc3RhbmNlIElELiBGb3IgZHVhbC1zdGFjayBzdWJuZXRzLCB5b3UgY2FuIHNwZWNpZnkgd2hldGhlciBETlMgbmFtZXMgdXNlIHRoZSBpbnN0YW5jZSBJUHY0IGFkZHJlc3Mgb3IgdGhlIGluc3RhbmNlIElELiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gRUMyIGluc3RhbmNlIGhvc3RuYW1lIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWluc3RhbmNlLW5hbWluZy5odG1sKSBpbiB0aGUgKlVzZXIgR3VpZGUqLlxuICovXG5Ib3N0bmFtZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmVzcG9uZCB0byBETlMgcXVlcmllcyBmb3IgaW5zdGFuY2UgaG9zdG5hbWVzIHdpdGggRE5TIEFBQUEgcmVjb3Jkcy5cbiAqL1xuRW5hYmxlUmVzb3VyY2VOYW1lRG5zQUFBQVJlY29yZD86IGJvb2xlYW5cbn1cbi8qKlxuICogVGhlIG1hcmtldCAocHVyY2hhc2luZykgb3B0aW9uIGZvciB0aGUgaW5zdGFuY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlTWFya2V0T3B0aW9ucyB7XG5TcG90T3B0aW9ucz86IFNwb3RPcHRpb25zXG4vKipcbiAqIFRoZSBtYXJrZXQgdHlwZS5cbiAqL1xuTWFya2V0VHlwZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3IgU3BvdCBJbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BvdE9wdGlvbnMge1xuLyoqXG4gKiBUaGUgU3BvdCBJbnN0YW5jZSByZXF1ZXN0IHR5cGUuXG4gKiAgSWYgeW91IGFyZSB1c2luZyBTcG90IEluc3RhbmNlcyB3aXRoIGFuIEF1dG8gU2NhbGluZyBncm91cCwgdXNlIGBgb25lLXRpbWVgYCByZXF1ZXN0cywgYXMgdGhlIEFTbG9uZyBzZXJ2aWNlIGhhbmRsZXMgcmVxdWVzdGluZyBuZXcgU3BvdCBJbnN0YW5jZXMgd2hlbmV2ZXIgdGhlIGdyb3VwIGlzIGJlbG93IGl0cyBkZXNpcmVkIGNhcGFjaXR5LlxuICovXG5TcG90SW5zdGFuY2VUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBiZWhhdmlvciB3aGVuIGEgU3BvdCBJbnN0YW5jZSBpcyBpbnRlcnJ1cHRlZC4gVGhlIGRlZmF1bHQgaXMgYGB0ZXJtaW5hdGVgYC5cbiAqL1xuSW5zdGFuY2VJbnRlcnJ1cHRpb25CZWhhdmlvcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSBob3VybHkgcHJpY2UgeW91J3JlIHdpbGxpbmcgdG8gcGF5IGZvciBhIFNwb3QgSW5zdGFuY2UuIFdlIGRvIG5vdCByZWNvbW1lbmQgdXNpbmcgdGhpcyBwYXJhbWV0ZXIgYmVjYXVzZSBpdCBjYW4gbGVhZCB0byBpbmNyZWFzZWQgaW50ZXJydXB0aW9ucy4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IHRoaXMgcGFyYW1ldGVyLCB5b3Ugd2lsbCBwYXkgdGhlIGN1cnJlbnQgU3BvdCBwcmljZS4gSWYgeW91IGRvIHNwZWNpZnkgdGhpcyBwYXJhbWV0ZXIsIGl0IG11c3QgYmUgbW9yZSB0aGFuIFVTRCAkMC4wMDEuIFNwZWNpZnlpbmcgYSB2YWx1ZSBiZWxvdyBVU0QgJDAuMDAxIHdpbGwgcmVzdWx0IGluIGFuIGBgSW52YWxpZFBhcmFtZXRlclZhbHVlYGAgZXJyb3IgbWVzc2FnZSB3aGVuIHRoZSBsYXVuY2ggdGVtcGxhdGUgaXMgdXNlZCB0byBsYXVuY2ggYW4gaW5zdGFuY2UuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGEgbWF4aW11bSBwcmljZSwgeW91ciBTcG90IEluc3RhbmNlcyB3aWxsIGJlIGludGVycnVwdGVkIG1vcmUgZnJlcXVlbnRseSB0aGFuIGlmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4UHJpY2U/OiBzdHJpbmdcbi8qKlxuICogRGVwcmVjYXRlZC5cbiAqL1xuQmxvY2tEdXJhdGlvbk1pbnV0ZXM/OiBudW1iZXJcbi8qKlxuICogVGhlIGVuZCBkYXRlIG9mIHRoZSByZXF1ZXN0LCBpbiBVVEMgZm9ybWF0ICgqWVlZWS1NTS1ERCpUKkhIOk1NOlNTKlopLiBTdXBwb3J0ZWQgb25seSBmb3IgcGVyc2lzdGVudCByZXF1ZXN0cy5cbiAqICAgKyAgRm9yIGEgcGVyc2lzdGVudCByZXF1ZXN0LCB0aGUgcmVxdWVzdCByZW1haW5zIGFjdGl2ZSB1bnRpbCB0aGUgYGBWYWxpZFVudGlsYGAgZGF0ZSBhbmQgdGltZSBpcyByZWFjaGVkLiBPdGhlcndpc2UsIHRoZSByZXF1ZXN0IHJlbWFpbnMgYWN0aXZlIHVudGlsIHlvdSBjYW5jZWwgaXQuXG4gKiAgICsgIEZvciBhIG9uZS10aW1lIHJlcXVlc3QsIGBgVmFsaWRVbnRpbGBgIGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSByZXF1ZXN0IHJlbWFpbnMgYWN0aXZlIHVudGlsIGFsbCBpbnN0YW5jZXMgbGF1bmNoIG9yIHlvdSBjYW5jZWwgdGhlIHJlcXVlc3QuXG4gKiAgIFxuICogIERlZmF1bHQ6IDcgZGF5cyBmcm9tIHRoZSBjdXJyZW50IGRhdGVcbiAqL1xuVmFsaWRVbnRpbD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGluc3RhbmNlIHR5cGVzLiBXaGVuIHlvdSBzcGVjaWZ5IGluc3RhbmNlIGF0dHJpYnV0ZXMsIEFtYXpvbiBFQzIgd2lsbCBpZGVudGlmeSBpbnN0YW5jZSB0eXBlcyB3aXRoIHRoZXNlIGF0dHJpYnV0ZXMuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSBgYFZDcHVDb3VudGBgIGFuZCBgYE1lbW9yeU1pQmBgLiBBbGwgb3RoZXIgYXR0cmlidXRlcyBhcmUgb3B0aW9uYWwuIEFueSB1bnNwZWNpZmllZCBvcHRpb25hbCBhdHRyaWJ1dGUgaXMgc2V0IHRvIGl0cyBkZWZhdWx0LlxuICogIFdoZW4geW91IHNwZWNpZnkgbXVsdGlwbGUgYXR0cmlidXRlcywgeW91IGdldCBpbnN0YW5jZSB0eXBlcyB0aGF0IHNhdGlzZnkgYWxsIG9mIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlcy4gSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgdmFsdWVzIGZvciBhbiBhdHRyaWJ1dGUsIHlvdSBnZXQgaW5zdGFuY2UgdHlwZXMgdGhhdCBzYXRpc2Z5IGFueSBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbiAqICBUbyBsaW1pdCB0aGUgbGlzdCBvZiBpbnN0YW5jZSB0eXBlcyBmcm9tIHdoaWNoIEFtYXpvbiBFQzIgY2FuIGlkZW50aWZ5IG1hdGNoaW5nIGluc3RhbmNlIHR5cGVzLCB5b3UgY2FuIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzLCBidXQgbm90IGJvdGggaW4gdGhlIHNhbWUgcmVxdWVzdDpcbiAqICAgKyAgYGBBbGxvd2VkSW5zdGFuY2VUeXBlc2BgIC0gVGhlIGluc3RhbmNlIHR5cGVzIHRvIGluY2x1ZGUgaW4gdGhlIGxpc3QuIEFsbCBvdGhlciBpbnN0YW5jZSB0eXBlcyBhcmUgaWdub3JlZCwgZXZlbiBpZiB0aGV5IG1hdGNoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuXG4gKiAgICsgIGBgRXhjbHVkZWRJbnN0YW5jZVR5cGVzYGAgLSBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBsaXN0LCBldmVuIGlmIHRoZXkgbWF0Y2ggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy5cbiAqICAgXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgSW5zdGFuY2VSZXF1aXJlbWVudHNgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBJbnN0YW5jZVR5cGVgYC5cbiAqICBBdHRyaWJ1dGUtYmFzZWQgaW5zdGFuY2UgdHlwZSBzZWxlY3Rpb24gaXMgb25seSBzdXBwb3J0ZWQgd2hlbiB1c2luZyBBdXRvIFNjYWxpbmcgZ3JvdXBzLCBFQzIgRmxlZXQsIGFuZCBTcG90IEZsZWV0IHRvIGxhdW5jaCBpbnN0YW5jZXMuIElmIHlvdSBwbGFuIHRvIHVzZSB0aGUgbGF1bmNoIHRlbXBsYXRlIGluIHRoZSBbbGF1bmNoIGluc3RhbmNlIHdpemFyZF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1sYXVuY2gtaW5zdGFuY2Utd2l6YXJkLmh0bWwpLCBvciB3aXRoIHRoZSBbUnVuSW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1J1bkluc3RhbmNlcy5odG1sKSBBUEkgb3IgW0FXUzo6RUMyOjpJbnN0YW5jZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWluc3RhbmNlLmh0bWwpQVdTIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEluc3RhbmNlUmVxdWlyZW1lbnRzYGAuXG4gKiAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnkgYXR0cmlidXRlcyBmb3IgaW5zdGFuY2UgdHlwZSBzZWxlY3Rpb24gZm9yIEVDMiBGbGVldCBvciBTcG90IEZsZWV0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWZsZWV0LWF0dHJpYnV0ZS1iYXNlZC1pbnN0YW5jZS10eXBlLXNlbGVjdGlvbi5odG1sKSBhbmQgW1Nwb3QgcGxhY2VtZW50IHNjb3JlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvc3BvdC1wbGFjZW1lbnQtc2NvcmUuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlUmVxdWlyZW1lbnRzIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgY3VycmVudCBvciBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIGFyZSBpbmNsdWRlZC4gVGhlIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBhcmUgcmVjb21tZW5kZWQgZm9yIHVzZS4gQ3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIGFyZSB0eXBpY2FsbHkgdGhlIGxhdGVzdCB0d28gdG8gdGhyZWUgZ2VuZXJhdGlvbnMgaW4gZWFjaCBpbnN0YW5jZSBmYW1pbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0luc3RhbmNlIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaW5zdGFuY2UtdHlwZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogIEZvciBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBjdXJyZW50YGAuXG4gKiAgRm9yIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBwcmV2aW91c2BgLlxuICogIERlZmF1bHQ6IEN1cnJlbnQgYW5kIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXNcbiAqL1xuSW5zdGFuY2VHZW5lcmF0aW9ucz86IHN0cmluZ1tdXG5NZW1vcnlHaUJQZXJWQ3B1PzogTWVtb3J5R2lCUGVyVkNwdVxuLyoqXG4gKiBUaGUgYWNjZWxlcmF0b3IgdHlwZXMgdGhhdCBtdXN0IGJlIG9uIHRoZSBpbnN0YW5jZSB0eXBlLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBGUEdBIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGZwZ2FgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggR1BVIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGdwdWBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBJbmZlcmVuY2UgYWNjZWxlcmF0b3JzLCBzcGVjaWZ5IGBgaW5mZXJlbmNlYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBhY2NlbGVyYXRvciB0eXBlXG4gKi9cbkFjY2VsZXJhdG9yVHlwZXM/OiBzdHJpbmdbXVxuVkNwdUNvdW50PzogVkNwdUNvdW50XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGluc3RhbmNlIHR5cGVzIG11c3QgaGF2ZSBhY2NlbGVyYXRvcnMgYnkgc3BlY2lmaWMgbWFudWZhY3R1cmVycy5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQVdTIGRldmljZXMsIHNwZWNpZnkgYGBhbWF6b24td2ViLXNlcnZpY2VzYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBkZXZpY2VzLCBzcGVjaWZ5IGBgYW1kYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEhhYmFuYSBkZXZpY2VzLCBzcGVjaWZ5IGBgaGFiYW5hYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBkZXZpY2VzLCBzcGVjaWZ5IGBgbnZpZGlhYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIFhpbGlueCBkZXZpY2VzLCBzcGVjaWZ5IGBgeGlsaW54YGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBtYW51ZmFjdHVyZXJcbiAqL1xuQWNjZWxlcmF0b3JNYW51ZmFjdHVyZXJzPzogc3RyaW5nW11cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgd2l0aCBpbnN0YW5jZSBzdG9yZSB2b2x1bWVzIGFyZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgW0FtYXpvbiBFQzIgaW5zdGFuY2Ugc3RvcmVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9JbnN0YW5jZVN0b3JhZ2UuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogICArICBUbyBpbmNsdWRlIGluc3RhbmNlIHR5cGVzIHdpdGggaW5zdGFuY2Ugc3RvcmUgdm9sdW1lcywgc3BlY2lmeSBgYGluY2x1ZGVkYGAuXG4gKiAgICsgIFRvIHJlcXVpcmUgb25seSBpbnN0YW5jZSB0eXBlcyB3aXRoIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMsIHNwZWNpZnkgYGByZXF1aXJlZGBgLlxuICogICArICBUbyBleGNsdWRlIGluc3RhbmNlIHR5cGVzIHdpdGggaW5zdGFuY2Ugc3RvcmUgdm9sdW1lcywgc3BlY2lmeSBgYGV4Y2x1ZGVkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgaW5jbHVkZWRgYFxuICovXG5Mb2NhbFN0b3JhZ2U/OiBzdHJpbmdcbi8qKlxuICogVGhlIENQVSBtYW51ZmFjdHVyZXJzIHRvIGluY2x1ZGUuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEludGVsIENQVXMsIHNwZWNpZnkgYGBpbnRlbGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBTUQgQ1BVcywgc3BlY2lmeSBgYGFtZGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgQ1BVcywgc3BlY2lmeSBgYGFtYXpvbi13ZWItc2VydmljZXNgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQXBwbGUgQ1BVcywgc3BlY2lmeSBgYGFwcGxlYGAuXG4gKiAgIFxuICogICBEb24ndCBjb25mdXNlIHRoZSBDUFUgbWFudWZhY3R1cmVyIHdpdGggdGhlIENQVSBhcmNoaXRlY3R1cmUuIEluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggYSBjb21wYXRpYmxlIENQVSBhcmNoaXRlY3R1cmUgYmFzZWQgb24gdGhlIEFtYXpvbiBNYWNoaW5lIEltYWdlIChBTUkpIHRoYXQgeW91IHNwZWNpZnkgaW4geW91ciBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgIERlZmF1bHQ6IEFueSBtYW51ZmFjdHVyZXJcbiAqL1xuQ3B1TWFudWZhY3R1cmVycz86IHN0cmluZ1tdXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGJhcmUgbWV0YWwgaW5zdGFuY2UgdHlwZXMgbXVzdCBiZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLlxuICogICArICBUbyBpbmNsdWRlIGJhcmUgbWV0YWwgaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBpbmNsdWRlZGBgLlxuICogICArICBUbyByZXF1aXJlIG9ubHkgYmFyZSBtZXRhbCBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYHJlcXVpcmVkYGAuXG4gKiAgICsgIFRvIGV4Y2x1ZGUgYmFyZSBtZXRhbCBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGV4Y2x1ZGVkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgZXhjbHVkZWRgYFxuICovXG5CYXJlTWV0YWw/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgbXVzdCBzdXBwb3J0IGhpYmVybmF0aW9uIGZvciBPbi1EZW1hbmQgSW5zdGFuY2VzLlxuICogIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFtHZXRTcG90UGxhY2VtZW50U2NvcmVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFNwb3RQbGFjZW1lbnRTY29yZXMuaHRtbCkuXG4gKiAgRGVmYXVsdDogYGBmYWxzZWBgXG4gKi9cblJlcXVpcmVIaWJlcm5hdGVTdXBwb3J0PzogYm9vbGVhblxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgYXMgYSBwZXJjZW50YWdlIG9mIGFuIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlLiBUaGUgaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UgaXMgdGhlIHByaWNlIG9mIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgd2l0aCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBJZiBubyBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIG1hdGNoZXMgeW91ciBhdHRyaWJ1dGVzLCB0aGVuIHRoZSBpZGVudGlmaWVkIHByaWNlIGlzIGZyb20gdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzLCBhbmQgZmFpbGluZyB0aGF0LCBmcm9tIHRoZSBsb3dlc3QgcHJpY2VkIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCBpdCB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgSWYgeW91IHNldCBgYFRhcmdldENhcGFjaXR5VW5pdFR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGJhc2VkIG9uIHRoZSBwZXIgdkNQVSBvciBwZXIgbWVtb3J5IHByaWNlIGluc3RlYWQgb2YgdGhlIHBlciBpbnN0YW5jZSBwcmljZS5cbiAqICAgT25seSBvbmUgb2YgYGBTcG90TWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlYGAgb3IgYGBNYXhTcG90UHJpY2VBc1BlcmNlbnRhZ2VPZk9wdGltYWxPbkRlbWFuZFByaWNlYGAgY2FuIGJlIHNwZWNpZmllZC4gSWYgeW91IGRvbid0IHNwZWNpZnkgZWl0aGVyLCBBbWF6b24gRUMyIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBvcHRpbWFsIHByaWNlIHByb3RlY3Rpb24gdG8gY29uc2lzdGVudGx5IHNlbGVjdCBmcm9tIGEgd2lkZSByYW5nZSBvZiBpbnN0YW5jZSB0eXBlcy4gVG8gaW5kaWNhdGUgbm8gcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBtZWFuaW5nIHlvdSB3YW50IHRvIGNvbnNpZGVyIGFsbCBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcywgaW5jbHVkZSBvbmUgb2YgdGhlc2UgcGFyYW1ldGVycyBhbmQgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqL1xuTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZT86IG51bWJlclxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBPbi1EZW1hbmQgSW5zdGFuY2VzLCBhcyBhIHBlcmNlbnRhZ2UgaGlnaGVyIHRoYW4gYW4gaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UuIFRoZSBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZSBpcyB0aGUgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCBpdCB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgVG8gdHVybiBvZmYgcHJpY2UgcHJvdGVjdGlvbiwgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBub3Qgc3VwcG9ydGVkIGZvciBbR2V0U3BvdFBsYWNlbWVudFNjb3Jlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRTcG90UGxhY2VtZW50U2NvcmVzLmh0bWwpIGFuZCBbR2V0SW5zdGFuY2VUeXBlc0Zyb21JbnN0YW5jZVJlcXVpcmVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRJbnN0YW5jZVR5cGVzRnJvbUluc3RhbmNlUmVxdWlyZW1lbnRzLmh0bWwpLlxuICogICBJZiB5b3Ugc2V0IGBgVGFyZ2V0Q2FwYWNpdHlVbml0VHlwZWBgIHRvIGBgdmNwdWBgIG9yIGBgbWVtb3J5LW1pYmBgLCB0aGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgaXMgYXBwbGllZCBiYXNlZCBvbiB0aGUgcGVyLXZDUFUgb3IgcGVyLW1lbW9yeSBwcmljZSBpbnN0ZWFkIG9mIHRoZSBwZXItaW5zdGFuY2UgcHJpY2UuXG4gKiAgIERlZmF1bHQ6IGBgMjBgYFxuICovXG5PbkRlbWFuZE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuTWVtb3J5TWlCPzogTWVtb3J5TWlCXG4vKipcbiAqIFRoZSB0eXBlIG9mIGxvY2FsIHN0b3JhZ2UgdGhhdCBpcyByZXF1aXJlZC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggaGFyZCBkaXNrIGRyaXZlIChIREQpIHN0b3JhZ2UsIHNwZWNpZnkgYGBoZGRgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggc29saWQgc3RhdGUgZHJpdmUgKFNTRCkgc3RvcmFnZSwgc3BlY2lmeSBgYHNzZGBgLlxuICogICBcbiAqICBEZWZhdWx0OiBgYGhkZGBgIGFuZCBgYHNzZGBgXG4gKi9cbkxvY2FsU3RvcmFnZVR5cGVzPzogc3RyaW5nW11cbk5ldHdvcmtJbnRlcmZhY2VDb3VudD86IE5ldHdvcmtJbnRlcmZhY2VDb3VudFxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gZXhjbHVkZS5cbiAqICBZb3UgY2FuIHVzZSBzdHJpbmdzIHdpdGggb25lIG9yIG1vcmUgd2lsZCBjYXJkcywgcmVwcmVzZW50ZWQgYnkgYW4gYXN0ZXJpc2sgKGBgKmBgKSwgdG8gZXhjbHVkZSBhbiBpbnN0YW5jZSB0eXBlLCBzaXplLCBvciBnZW5lcmF0aW9uLiBUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlczogYGBtNS44eGxhcmdlYGAsIGBgYzUqLipgYCwgYGBtNWEuKmBgLCBgYHIqYGAsIGBgKjMqYGAuXG4gKiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGBgYzUqYGAsQW1hem9uIEVDMiB3aWxsIGV4Y2x1ZGUgdGhlIGVudGlyZSBDNSBpbnN0YW5jZSBmYW1pbHksIHdoaWNoIGluY2x1ZGVzIGFsbCBDNWEgYW5kIEM1biBpbnN0YW5jZSB0eXBlcy4gSWYgeW91IHNwZWNpZnkgYGBtNWEuKmBgLCBBbWF6b24gRUMyIHdpbGwgZXhjbHVkZSBhbGwgdGhlIE01YSBpbnN0YW5jZSB0eXBlcywgYnV0IG5vdCB0aGUgTTVuIGluc3RhbmNlIHR5cGVzLlxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEV4Y2x1ZGVkSW5zdGFuY2VUeXBlc2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEFsbG93ZWRJbnN0YW5jZVR5cGVzYGAuXG4gKiAgIERlZmF1bHQ6IE5vIGV4Y2x1ZGVkIGluc3RhbmNlIHR5cGVzXG4gKi9cbkV4Y2x1ZGVkSW5zdGFuY2VUeXBlcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBhcHBseSB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFnYWluc3QuIEFsbCBvdGhlciBpbnN0YW5jZSB0eXBlcyBhcmUgaWdub3JlZCwgZXZlbiBpZiB0aGV5IG1hdGNoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuXG4gKiAgWW91IGNhbiB1c2Ugc3RyaW5ncyB3aXRoIG9uZSBvciBtb3JlIHdpbGQgY2FyZHMsIHJlcHJlc2VudGVkIGJ5IGFuIGFzdGVyaXNrIChgYCpgYCksIHRvIGFsbG93IGFuIGluc3RhbmNlIHR5cGUsIHNpemUsIG9yIGdlbmVyYXRpb24uIFRoZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzOiBgYG01Ljh4bGFyZ2VgYCwgYGBjNSouKmBgLCBgYG01YS4qYGAsIGBgcipgYCwgYGAqMypgYC5cbiAqICBGb3IgZXhhbXBsZSwgaWYgeW91IHNwZWNpZnkgYGBjNSpgYCxBbWF6b24gRUMyIHdpbGwgYWxsb3cgdGhlIGVudGlyZSBDNSBpbnN0YW5jZSBmYW1pbHksIHdoaWNoIGluY2x1ZGVzIGFsbCBDNWEgYW5kIEM1biBpbnN0YW5jZSB0eXBlcy4gSWYgeW91IHNwZWNpZnkgYGBtNWEuKmBgLCBBbWF6b24gRUMyIHdpbGwgYWxsb3cgYWxsIHRoZSBNNWEgaW5zdGFuY2UgdHlwZXMsIGJ1dCBub3QgdGhlIE01biBpbnN0YW5jZSB0eXBlcy5cbiAqICAgSWYgeW91IHNwZWNpZnkgYGBBbGxvd2VkSW5zdGFuY2VUeXBlc2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEV4Y2x1ZGVkSW5zdGFuY2VUeXBlc2BgLlxuICogICBEZWZhdWx0OiBBbGwgaW5zdGFuY2UgdHlwZXNcbiAqL1xuQWxsb3dlZEluc3RhbmNlVHlwZXM/OiBzdHJpbmdbXVxuQWNjZWxlcmF0b3JDb3VudD86IEFjY2VsZXJhdG9yQ291bnRcbk5ldHdvcmtCYW5kd2lkdGhHYnBzPzogTmV0d29ya0JhbmR3aWR0aEdicHNcbkJhc2VsaW5lUGVyZm9ybWFuY2VGYWN0b3JzPzogQmFzZWxpbmVQZXJmb3JtYW5jZUZhY3RvcnNcbi8qKlxuICogW1ByaWNlIHByb3RlY3Rpb25dIFRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIGFzIGEgcGVyY2VudGFnZSBoaWdoZXIgdGhhbiBhbiBpZGVudGlmaWVkIFNwb3QgcHJpY2UuIFRoZSBpZGVudGlmaWVkIFNwb3QgcHJpY2UgaXMgdGhlIFNwb3QgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIElmIG5vIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgbWF0Y2hlcyB5b3VyIGF0dHJpYnV0ZXMsIHRoZW4gdGhlIGlkZW50aWZpZWQgU3BvdCBwcmljZSBpcyBmcm9tIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcywgYW5kIGZhaWxpbmcgdGhhdCwgZnJvbSB0aGUgbG93ZXN0IHByaWNlZCBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLiBXaGVuIEFtYXpvbiBFQzIgc2VsZWN0cyBpbnN0YW5jZSB0eXBlcyB3aXRoIHlvdXIgYXR0cmlidXRlcywgaXQgd2lsbCBleGNsdWRlIGluc3RhbmNlIHR5cGVzIHdob3NlIFNwb3QgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgSWYgeW91IHNldCBgYFRhcmdldENhcGFjaXR5VW5pdFR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGFwcGxpZWQgYmFzZWQgb24gdGhlIHBlci12Q1BVIG9yIHBlci1tZW1vcnkgcHJpY2UgaW5zdGVhZCBvZiB0aGUgcGVyLWluc3RhbmNlIHByaWNlLlxuICogIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFtHZXRTcG90UGxhY2VtZW50U2NvcmVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFNwb3RQbGFjZW1lbnRTY29yZXMuaHRtbCkgYW5kIFtHZXRJbnN0YW5jZVR5cGVzRnJvbUluc3RhbmNlUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldEluc3RhbmNlVHlwZXNGcm9tSW5zdGFuY2VSZXF1aXJlbWVudHMuaHRtbCkuXG4gKiAgIE9ubHkgb25lIG9mIGBgU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZWBgIG9yIGBgTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZWBgIGNhbiBiZSBzcGVjaWZpZWQuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGVpdGhlciwgQW1hem9uIEVDMiB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwbHkgb3B0aW1hbCBwcmljZSBwcm90ZWN0aW9uIHRvIGNvbnNpc3RlbnRseSBzZWxlY3QgZnJvbSBhIHdpZGUgcmFuZ2Ugb2YgaW5zdGFuY2UgdHlwZXMuIFRvIGluZGljYXRlIG5vIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgbWVhbmluZyB5b3Ugd2FudCB0byBjb25zaWRlciBhbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMsIGluY2x1ZGUgb25lIG9mIHRoZXNlIHBhcmFtZXRlcnMgYW5kIHNwZWNpZnkgYSBoaWdoIHZhbHVlLCBzdWNoIGFzIGBgOTk5OTk5YGAuXG4gKiAgIERlZmF1bHQ6IGBgMTAwYGBcbiAqL1xuU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzPzogQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzXG4vKipcbiAqIFRoZSBhY2NlbGVyYXRvcnMgdGhhdCBtdXN0IGJlIG9uIHRoZSBpbnN0YW5jZSB0eXBlLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgQTEwRyBHUFVzLCBzcGVjaWZ5IGBgYTEwZ2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgQTEwMCBHUFVzLCBzcGVjaWZ5IGBgYTEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgSDEwMCBHUFVzLCBzcGVjaWZ5IGBgaDEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgSW5mZXJlbnRpYSBjaGlwcywgc3BlY2lmeSBgYGluZmVyZW50aWFgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIEdSSUQgSzUyMCBHUFVzLCBzcGVjaWZ5IGBgazUyMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgSzgwIEdQVXMsIHNwZWNpZnkgYGBrODBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIE02MCBHUFVzLCBzcGVjaWZ5IGBgbTYwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBSYWRlb24gUHJvIFY1MjAgR1BVcywgc3BlY2lmeSBgYHJhZGVvbi1wcm8tdjUyMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgVDQgR1BVcywgc3BlY2lmeSBgYHQ0YGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBUNEcgR1BVcywgc3BlY2lmeSBgYHQ0Z2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBYaWxpbnggVlU5UCBGUEdBcywgc3BlY2lmeSBgYHZ1OXBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIFYxMDAgR1BVcywgc3BlY2lmeSBgYHYxMDBgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IGFjY2VsZXJhdG9yXG4gKi9cbkFjY2VsZXJhdG9yTmFtZXM/OiBzdHJpbmdbXVxuQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQj86IEFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgYnVyc3RhYmxlIHBlcmZvcm1hbmNlIFQgaW5zdGFuY2UgdHlwZXMgYXJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0J1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9idXJzdGFibGUtcGVyZm9ybWFuY2UtaW5zdGFuY2VzLmh0bWwpLlxuICogICArICBUbyBpbmNsdWRlIGJ1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGluY2x1ZGVkYGAuXG4gKiAgICsgIFRvIHJlcXVpcmUgb25seSBidXJzdGFibGUgcGVyZm9ybWFuY2UgaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGByZXF1aXJlZGBgLlxuICogICArICBUbyBleGNsdWRlIGJ1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGV4Y2x1ZGVkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgZXhjbHVkZWRgYFxuICovXG5CdXJzdGFibGVQZXJmb3JtYW5jZT86IHN0cmluZ1xuVG90YWxMb2NhbFN0b3JhZ2VHQj86IFRvdGFsTG9jYWxTdG9yYWdlR0Jcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSBwZXIgdkNQVSwgaW4gR2lCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlHaUJQZXJWQ3B1IHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIG1lbW9yeSBwZXIgdkNQVSwgaW4gR2lCLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IHBlciB2Q1BVLCBpbiBHaUIuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiB2Q1BVcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWQ3B1Q291bnQge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgdkNQVXMuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgc3BlY2lmeSBgYDBgYC5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2Q1BVcy4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSwgaW4gTWlCLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeU1pQiB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBtZW1vcnksIGluIE1pQi4gVG8gc3BlY2lmeSBubyBtaW5pbXVtIGxpbWl0LCBzcGVjaWZ5IGBgMGBgLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSwgaW4gTWlCLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrSW50ZXJmYWNlQ291bnQge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzIChHUFVzLCBGUEdBcywgb3IgQVdTIEluZmVyZW50aWEgY2hpcHMpIG9uIGFuIGluc3RhbmNlLlxuICogIFRvIGV4Y2x1ZGUgYWNjZWxlcmF0b3ItZW5hYmxlZCBpbnN0YW5jZSB0eXBlcywgc2V0IGBgTWF4YGAgdG8gYGAwYGAuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdG9yQ291bnQge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuIFRvIGV4Y2x1ZGUgYWNjZWxlcmF0b3ItZW5hYmxlZCBpbnN0YW5jZSB0eXBlcywgc2V0IGBgTWF4YGAgdG8gYGAwYGAuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgbmV0d29yayBiYW5kd2lkdGgsIGluIGdpZ2FiaXRzIHBlciBzZWNvbmQgKEdicHMpLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrQmFuZHdpZHRoR2JwcyB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gR2Jwcy4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlcmUgaXMgbm8gbWluaW11bSBsaW1pdC5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gR2Jwcy4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIGJhc2VsaW5lIHBlcmZvcm1hbmNlIHRvIGNvbnNpZGVyLCB1c2luZyBhbiBpbnN0YW5jZSBmYW1pbHkgYXMgYSBiYXNlbGluZSByZWZlcmVuY2UuIFRoZSBpbnN0YW5jZSBmYW1pbHkgZXN0YWJsaXNoZXMgdGhlIGxvd2VzdCBhY2NlcHRhYmxlIGxldmVsIG9mIHBlcmZvcm1hbmNlLiBBbWF6b24gRUMyIHVzZXMgdGhpcyBiYXNlbGluZSB0byBndWlkZSBpbnN0YW5jZSB0eXBlIHNlbGVjdGlvbiwgYnV0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBzZWxlY3RlZCBpbnN0YW5jZSB0eXBlcyB3aWxsIGFsd2F5cyBleGNlZWQgdGhlIGJhc2VsaW5lIGZvciBldmVyeSBhcHBsaWNhdGlvbi4gQ3VycmVudGx5LCB0aGlzIHBhcmFtZXRlciBvbmx5IHN1cHBvcnRzIENQVSBwZXJmb3JtYW5jZSBhcyBhIGJhc2VsaW5lIHBlcmZvcm1hbmNlIGZhY3Rvci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUGVyZm9ybWFuY2UgcHJvdGVjdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1mbGVldC1hdHRyaWJ1dGUtYmFzZWQtaW5zdGFuY2UtdHlwZS1zZWxlY3Rpb24uaHRtbCNlYzJmbGVldC1hYmlzLXBlcmZvcm1hbmNlLXByb3RlY3Rpb24pIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlbGluZVBlcmZvcm1hbmNlRmFjdG9ycyB7XG5DcHU/OiBDcHVcbn1cbi8qKlxuICogVGhlIENQVSBwZXJmb3JtYW5jZSB0byBjb25zaWRlciwgdXNpbmcgYW4gaW5zdGFuY2UgZmFtaWx5IGFzIHRoZSBiYXNlbGluZSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3B1IHtcblJlZmVyZW5jZXM/OiBSZWZlcmVuY2VzXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBpbnN0YW5jZSBmYW1pbHkgdG8gdXNlIGFzIHRoZSBiYXNlbGluZSByZWZlcmVuY2UgZm9yIENQVSBwZXJmb3JtYW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2Uge1xuLyoqXG4gKiBUaGUgaW5zdGFuY2UgZmFtaWx5IHRvIHVzZSBhcyBhIGJhc2VsaW5lIHJlZmVyZW5jZS5cbiAqICAgRW5zdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIHRoZSBpbnN0YW5jZSBmYW1pbHkuIFRoZSBpbnN0YW5jZSBmYW1pbHkgaXMgZXZlcnl0aGluZyBiZWZvcmUgdGhlIHBlcmlvZCAoYGAuYGApIGluIHRoZSBpbnN0YW5jZSB0eXBlIG5hbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgaW5zdGFuY2UgdHlwZSBgYGM2aS5sYXJnZWBgLCB0aGUgaW5zdGFuY2UgZmFtaWx5IGlzIGBgYzZpYGAsIG5vdCBgYGM2YGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZSBuYW1pbmcgY29udmVudGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYzIvbGF0ZXN0L2luc3RhbmNldHlwZXMvaW5zdGFuY2UtdHlwZS1uYW1lcy5odG1sKSBpbiAqQW1hem9uIEVDMiBJbnN0YW5jZSBUeXBlcyouXG4gKiAgIFRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgZmFtaWxpZXMgYXJlICpub3Qgc3VwcG9ydGVkKiBmb3IgcGVyZm9ybWFuY2UgcHJvdGVjdGlvbjpcbiAqICAgKyAgIGBgYzFgYCBcbiAqICAgKyAgYGBnM2BgIHwgYGBnM3NgYFxuICogICArICAgYGBocGM3Z2BgIFxuICogICArICBgYG0xYGAgfCBgYG0yYGBcbiAqICAgKyAgYGBtYWMxYGAgfCBgYG1hYzJgYCB8IGBgbWFjMi1tMXVsdHJhYGAgfCBgYG1hYzItbTJgYCB8IGBgbWFjMi1tMnByb2BgXG4gKiAgICsgIGBgcDNkbmBgIHwgYGBwNGRgYCB8IGBgcDVgYFxuICogICArICAgYGB0MWBgIFxuICogICArICBgYHUtMTJ0YjFgYCB8IGBgdS0xOHRiMWBgIHwgYGB1LTI0dGIxYGAgfCBgYHUtM3RiMWBgIHwgYGB1LTZ0YjFgYCB8IGBgdS05dGIxYGAgfCBgYHU3aS0xMnRiYGAgfCBgYHU3aW4tMTZ0YmBgIHwgYGB1N2luLTI0dGJgYCB8IGBgdTdpbi0zMnRiYGBcbiAqICAgXG4gKiAgSWYgeW91IGVuYWJsZSBwZXJmb3JtYW5jZSBwcm90ZWN0aW9uIGJ5IHNwZWNpZnlpbmcgYSBzdXBwb3J0ZWQgaW5zdGFuY2UgZmFtaWx5LCB0aGUgcmV0dXJuZWQgaW5zdGFuY2UgdHlwZXMgd2lsbCBleGNsdWRlIHRoZSBhYm92ZSB1bnN1cHBvcnRlZCBpbnN0YW5jZSBmYW1pbGllcy5cbiAqL1xuSW5zdGFuY2VGYW1pbHk/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYmFzZWxpbmUgYmFuZHdpZHRoIHRvIEFtYXpvbiBFQlMsIGluIE1icHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQlPigJNvcHRpbWl6ZWQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWJzLW9wdGltaXplZC5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VsaW5lRWJzQmFuZHdpZHRoTWJwcyB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGJhc2VsaW5lIGJhbmR3aWR0aCwgaW4gTWJwcy4gVG8gc3BlY2lmeSBubyBtaW5pbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gYmFzZWxpbmUgYmFuZHdpZHRoLCBpbiBNYnBzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgdG90YWwgYWNjZWxlcmF0b3IgbWVtb3J5LCBpbiBNaUIuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUIge1xuLyoqXG4gKiBUaGUgbWluaW11bSBhbW91bnQgb2YgYWNjZWxlcmF0b3IgbWVtb3J5LCBpbiBNaUIuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBhY2NlbGVyYXRvciBtZW1vcnksIGluIE1pQi4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIHRvdGFsIGxvY2FsIHN0b3JhZ2UsIGluIEdCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb3RhbExvY2FsU3RvcmFnZUdCIHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIHRvdGFsIGxvY2FsIHN0b3JhZ2UsIGluIEdCLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdG90YWwgbG9jYWwgc3RvcmFnZSwgaW4gR0IuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBDYXBhY2l0eSBSZXNlcnZhdGlvbiB0YXJnZXRpbmcgb3B0aW9uLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgdGhpcyBwYXJhbWV0ZXIsIHRoZSBpbnN0YW5jZSdzIENhcGFjaXR5IFJlc2VydmF0aW9uIHByZWZlcmVuY2UgZGVmYXVsdHMgdG8gYGBvcGVuYGAsIHdoaWNoIGVuYWJsZXMgaXQgdG8gcnVuIGluIGFueSBvcGVuIENhcGFjaXR5IFJlc2VydmF0aW9uIHRoYXQgaGFzIG1hdGNoaW5nIGF0dHJpYnV0ZXMgKGluc3RhbmNlIHR5cGUsIHBsYXRmb3JtLCBBdmFpbGFiaWxpdHkgWm9uZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIGluc3RhbmNlJ3MgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gcHJlZmVyZW5jZXMuIFBvc3NpYmxlIHByZWZlcmVuY2VzIGluY2x1ZGU6XG4gKiAgICsgIGBgY2FwYWNpdHktcmVzZXJ2YXRpb25zLW9ubHlgYCAtIFRoZSBpbnN0YW5jZSB3aWxsIG9ubHkgcnVuIGluIGEgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gb3IgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gZ3JvdXAuIElmIGNhcGFjaXR5IGlzbid0IGF2YWlsYWJsZSwgdGhlIGluc3RhbmNlIHdpbGwgZmFpbCB0byBsYXVuY2guXG4gKiAgICsgIGBgb3BlbmBgIC0gVGhlIGluc3RhbmNlIGNhbiBydW4gaW4gYW55IGBgb3BlbmBgIENhcGFjaXR5IFJlc2VydmF0aW9uIHRoYXQgaGFzIG1hdGNoaW5nIGF0dHJpYnV0ZXMgKGluc3RhbmNlIHR5cGUsIHBsYXRmb3JtLCBBdmFpbGFiaWxpdHkgWm9uZSwgdGVuYW5jeSkuXG4gKiAgICsgIGBgbm9uZWBgIC0gVGhlIGluc3RhbmNlIGF2b2lkcyBydW5uaW5nIGluIGEgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gZXZlbiBpZiBvbmUgaXMgYXZhaWxhYmxlLiBUaGUgaW5zdGFuY2UgcnVucyBpbiBPbi1EZW1hbmQgY2FwYWNpdHkuXG4gKi9cbkNhcGFjaXR5UmVzZXJ2YXRpb25QcmVmZXJlbmNlPzogc3RyaW5nXG5DYXBhY2l0eVJlc2VydmF0aW9uVGFyZ2V0PzogQ2FwYWNpdHlSZXNlcnZhdGlvblRhcmdldFxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFyZ2V0IENhcGFjaXR5IFJlc2VydmF0aW9uIG9yIENhcGFjaXR5IFJlc2VydmF0aW9uIGdyb3VwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhcGFjaXR5UmVzZXJ2YXRpb25UYXJnZXQge1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBDYXBhY2l0eSBSZXNlcnZhdGlvbiByZXNvdXJjZSBncm91cCBpbiB3aGljaCB0byBydW4gdGhlIGluc3RhbmNlLlxuICovXG5DYXBhY2l0eVJlc2VydmF0aW9uUmVzb3VyY2VHcm91cEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIENhcGFjaXR5IFJlc2VydmF0aW9uIGluIHdoaWNoIHRvIHJ1biB0aGUgaW5zdGFuY2UuXG4gKi9cbkNhcGFjaXR5UmVzZXJ2YXRpb25JZD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgY3JlZGl0IG9wdGlvbiBmb3IgQ1BVIHVzYWdlIG9mIHRoZSBpbnN0YW5jZS4gVmFsaWQgb25seSBmb3IgVCBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGl0U3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBjcmVkaXQgb3B0aW9uIGZvciBDUFUgdXNhZ2Ugb2YgYSBUIGluc3RhbmNlLlxuICogIFZhbGlkIHZhbHVlczogYGBzdGFuZGFyZGBgIHwgYGB1bmxpbWl0ZWRgYFxuICovXG5DcHVDcmVkaXRzPzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgdGFncyB0byBhcHBseSB0byB0aGUgbGF1bmNoIHRlbXBsYXRlIGR1cmluZyBjcmVhdGlvbi5cbiAqICBUbyBzcGVjaWZ5IHRoZSB0YWdzIGZvciB0aGUgcmVzb3VyY2VzIHRoYXQgYXJlIGNyZWF0ZWQgZHVyaW5nIGluc3RhbmNlIGxhdW5jaCwgdXNlIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgVGFnU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLXRhZ3NwZWNpZmljYXRpb24uaHRtbCkuXG4gKiAgYGBMYXVuY2hUZW1wbGF0ZVRhZ1NwZWNpZmljYXRpb25gYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItbGF1bmNodGVtcGxhdGUuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVUYWdTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIHR5cGUgb2YgcmVzb3VyY2UuIFRvIHRhZyBhIGxhdW5jaCB0ZW1wbGF0ZSwgYGBSZXNvdXJjZVR5cGVgYCBtdXN0IGJlIGBgbGF1bmNoLXRlbXBsYXRlYGAuXG4gKi9cblJlc291cmNlVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFncyBmb3IgdGhlIHJlc291cmNlLlxuICovXG5UYWdzPzogVGFnW11cbn1cbiJdfQ==
|
|
@@ -16,7 +16,7 @@ export interface _AWS_EC2_SUBNET {
|
|
|
16
16
|
VpcId: string;
|
|
17
17
|
/**
|
|
18
18
|
* Indicates whether instances launched in this subnet receive a public IPv4 address. The default value is ``false``.
|
|
19
|
-
*
|
|
19
|
+
* AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/).
|
|
20
20
|
*/
|
|
21
21
|
MapPublicIpOnLaunch?: boolean;
|
|
22
22
|
/**
|
|
@@ -90,6 +90,12 @@ export interface _AWS_EC2_SUBNET {
|
|
|
90
90
|
* An IPv6 netmask length for the subnet.
|
|
91
91
|
*/
|
|
92
92
|
Ipv6NetmaskLength?: number;
|
|
93
|
+
BlockPublicAccessStates?: {
|
|
94
|
+
/**
|
|
95
|
+
* The mode of VPC BPA. Options here are off, block-bidirectional, block-ingress
|
|
96
|
+
*/
|
|
97
|
+
InternetGatewayBlockMode?: string;
|
|
98
|
+
};
|
|
93
99
|
}
|
|
94
100
|
/**
|
|
95
101
|
* Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjMi1zdWJuZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtZWMyLXN1Ym5ldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTcGVjaWZpZXMgYSBzdWJuZXQgZm9yIHRoZSBzcGVjaWZpZWQgVlBDLlxuICogIEZvciBhbiBJUHY0IG9ubHkgc3VibmV0LCBzcGVjaWZ5IGFuIElQdjQgQ0lEUiBibG9jay4gSWYgdGhlIFZQQyBoYXMgYW4gSVB2NiBDSURSIGJsb2NrLCB5b3UgY2FuIGNyZWF0ZSBhbiBJUHY2IG9ubHkgc3VibmV0IG9yIGEgZHVhbCBzdGFjayBzdWJuZXQgaW5zdGVhZC4gRm9yIGFuIElQdjYgb25seSBzdWJuZXQsIHNwZWNpZnkgYW4gSVB2NiBDSURSIGJsb2NrLiBGb3IgYSBkdWFsIHN0YWNrIHN1Ym5ldCwgc3BlY2lmeSBib3RoIGFuIElQdjQgQ0lEUiBibG9jayBhbmQgYW4gSVB2NiBDSURSIGJsb2NrLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1N1Ym5ldHMgZm9yIHlvdXIgVlBDXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvY29uZmlndXJlLXN1Ym5ldHMuaHRtbCkgaW4gdGhlICpBbWF6b24gVlBDIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfRUMyX1NVQk5FVCB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGEgbmV0d29yayBpbnRlcmZhY2UgY3JlYXRlZCBpbiB0aGlzIHN1Ym5ldCByZWNlaXZlcyBhbiBJUHY2IGFkZHJlc3MuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgZmFsc2VgYC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBgYEFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbmBgLCB5b3UgbXVzdCBhbHNvIHNwZWNpZnkgYW4gSVB2NiBDSURSIGJsb2NrLlxuICovXG5Bc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjMi1zdWJuZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtZWMyLXN1Ym5ldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTcGVjaWZpZXMgYSBzdWJuZXQgZm9yIHRoZSBzcGVjaWZpZWQgVlBDLlxuICogIEZvciBhbiBJUHY0IG9ubHkgc3VibmV0LCBzcGVjaWZ5IGFuIElQdjQgQ0lEUiBibG9jay4gSWYgdGhlIFZQQyBoYXMgYW4gSVB2NiBDSURSIGJsb2NrLCB5b3UgY2FuIGNyZWF0ZSBhbiBJUHY2IG9ubHkgc3VibmV0IG9yIGEgZHVhbCBzdGFjayBzdWJuZXQgaW5zdGVhZC4gRm9yIGFuIElQdjYgb25seSBzdWJuZXQsIHNwZWNpZnkgYW4gSVB2NiBDSURSIGJsb2NrLiBGb3IgYSBkdWFsIHN0YWNrIHN1Ym5ldCwgc3BlY2lmeSBib3RoIGFuIElQdjQgQ0lEUiBibG9jayBhbmQgYW4gSVB2NiBDSURSIGJsb2NrLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1N1Ym5ldHMgZm9yIHlvdXIgVlBDXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvY29uZmlndXJlLXN1Ym5ldHMuaHRtbCkgaW4gdGhlICpBbWF6b24gVlBDIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfRUMyX1NVQk5FVCB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGEgbmV0d29yayBpbnRlcmZhY2UgY3JlYXRlZCBpbiB0aGlzIHN1Ym5ldCByZWNlaXZlcyBhbiBJUHY2IGFkZHJlc3MuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgZmFsc2VgYC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBgYEFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbmBgLCB5b3UgbXVzdCBhbHNvIHNwZWNpZnkgYW4gSVB2NiBDSURSIGJsb2NrLlxuICovXG5Bc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24/OiBib29sZWFuXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgVlBDIHRoZSBzdWJuZXQgaXMgaW4uXG4gKiAgSWYgeW91IHVwZGF0ZSB0aGlzIHByb3BlcnR5LCB5b3UgbXVzdCBhbHNvIHVwZGF0ZSB0aGUgYGBDaWRyQmxvY2tgYCBwcm9wZXJ0eS5cbiAqL1xuVnBjSWQ6IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBpbnN0YW5jZXMgbGF1bmNoZWQgaW4gdGhpcyBzdWJuZXQgcmVjZWl2ZSBhIHB1YmxpYyBJUHY0IGFkZHJlc3MuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgZmFsc2VgYC5cbiAqICBBV1MgY2hhcmdlcyBmb3IgYWxsIHB1YmxpYyBJUHY0IGFkZHJlc3NlcywgaW5jbHVkaW5nIHB1YmxpYyBJUHY0IGFkZHJlc3NlcyBhc3NvY2lhdGVkIHdpdGggcnVubmluZyBpbnN0YW5jZXMgYW5kIEVsYXN0aWMgSVAgYWRkcmVzc2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSAqUHVibGljIElQdjQgQWRkcmVzcyogdGFiIG9uIHRoZSBbVlBDIHByaWNpbmcgcGFnZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9wcmljaW5nLykuXG4gKi9cbk1hcFB1YmxpY0lwT25MYXVuY2g/OiBib29sZWFuXG4vKipcbiAqIEluZGljYXRlcyB0aGUgZGV2aWNlIHBvc2l0aW9uIGZvciBsb2NhbCBuZXR3b3JrIGludGVyZmFjZXMgaW4gdGhpcyBzdWJuZXQuIEZvciBleGFtcGxlLCBgYDFgYCBpbmRpY2F0ZXMgbG9jYWwgbmV0d29yayBpbnRlcmZhY2VzIGluIHRoaXMgc3VibmV0IGFyZSB0aGUgc2Vjb25kYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIChldGgxKS5cbiAqL1xuRW5hYmxlTG5pQXREZXZpY2VJbmRleD86IG51bWJlclxuTmV0d29ya0FjbEFzc29jaWF0aW9uSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIEF2YWlsYWJpbGl0eSBab25lIG9mIHRoZSBzdWJuZXQuXG4gKiAgSWYgeW91IHVwZGF0ZSB0aGlzIHByb3BlcnR5LCB5b3UgbXVzdCBhbHNvIHVwZGF0ZSB0aGUgYGBDaWRyQmxvY2tgYCBwcm9wZXJ0eS5cbiAqL1xuQXZhaWxhYmlsaXR5Wm9uZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQVogSUQgb2YgdGhlIHN1Ym5ldC5cbiAqL1xuQXZhaWxhYmlsaXR5Wm9uZUlkPzogc3RyaW5nXG4vKipcbiAqIFRoZSBJUHY0IENJRFIgYmxvY2sgYXNzaWduZWQgdG8gdGhlIHN1Ym5ldC5cbiAqICBJZiB5b3UgdXBkYXRlIHRoaXMgcHJvcGVydHksIHdlIGNyZWF0ZSBhIG5ldyBzdWJuZXQsIGFuZCB0aGVuIGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICovXG5DaWRyQmxvY2s/OiBzdHJpbmdcblN1Ym5ldElkPzogc3RyaW5nXG5JcHY2Q2lkckJsb2Nrcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBJUHY2IENJRFIgYmxvY2suXG4gKiAgSWYgeW91IHNwZWNpZnkgYGBBc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb25gYCwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IGFuIElQdjYgQ0lEUiBibG9jay5cbiAqL1xuSXB2NkNpZHJCbG9jaz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIE91dHBvc3QuXG4gKi9cbk91dHBvc3RBcm4/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBpcyBhbiBJUHY2IG9ubHkgc3VibmV0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTdWJuZXQgYmFzaWNzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvVlBDX1N1Ym5ldHMuaHRtbCNzdWJuZXQtYmFzaWNzKSBpbiB0aGUgKlVzZXIgR3VpZGUqLlxuICovXG5JcHY2TmF0aXZlPzogYm9vbGVhblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBETlMgcXVlcmllcyBtYWRlIHRvIHRoZSBBbWF6b24tcHJvdmlkZWQgRE5TIFJlc29sdmVyIGluIHRoaXMgc3VibmV0IHNob3VsZCByZXR1cm4gc3ludGhldGljIElQdjYgYWRkcmVzc2VzIGZvciBJUHY0LW9ubHkgZGVzdGluYXRpb25zLlxuICogICBZb3UgbXVzdCBmaXJzdCBjb25maWd1cmUgYSBOQVQgZ2F0ZXdheSBpbiBhIHB1YmxpYyBzdWJuZXQgKHNlcGFyYXRlIGZyb20gdGhlIHN1Ym5ldCBjb250YWluaW5nIHRoZSBJUHY2LW9ubHkgd29ya2xvYWRzKS4gRm9yIGV4YW1wbGUsIHRoZSBzdWJuZXQgY29udGFpbmluZyB0aGUgTkFUIGdhdGV3YXkgc2hvdWxkIGhhdmUgYSBgYDAuMC4wLjAvMGBgIHJvdXRlIHBvaW50aW5nIHRvIHRoZSBpbnRlcm5ldCBnYXRld2F5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmUgRE5TNjQgYW5kIE5BVDY0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvbmF0LWdhdGV3YXktbmF0NjQtZG5zNjQuaHRtbCNuYXQtZ2F0ZXdheS1uYXQ2NC1kbnM2NC13YWxrdGhyb3VnaCkgaW4gdGhlICpVc2VyIEd1aWRlKi5cbiAqL1xuRW5hYmxlRG5zNjQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBob3N0bmFtZSB0eXBlIGZvciBFQzIgaW5zdGFuY2VzIGxhdW5jaGVkIGludG8gdGhpcyBzdWJuZXQgYW5kIGhvdyBETlMgQSBhbmQgQUFBQSByZWNvcmQgcXVlcmllcyB0byB0aGUgaW5zdGFuY2VzIHNob3VsZCBiZSBoYW5kbGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gRUMyIGluc3RhbmNlIGhvc3RuYW1lIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWluc3RhbmNlLW5hbWluZy5odG1sKSBpbiB0aGUgKlVzZXIgR3VpZGUqLlxuICogIEF2YWlsYWJsZSBvcHRpb25zOlxuICogICArICBFbmFibGVSZXNvdXJjZU5hbWVEbnNBQUFBUmVjb3JkICh0cnVlIHwgZmFsc2UpXG4gKiAgICsgIEVuYWJsZVJlc291cmNlTmFtZURuc0FSZWNvcmQgKHRydWUgfCBmYWxzZSlcbiAqICAgKyAgSG9zdG5hbWVUeXBlIChpcC1uYW1lIHwgcmVzb3VyY2UtbmFtZSlcbiAqL1xuUHJpdmF0ZURuc05hbWVPcHRpb25zT25MYXVuY2g/OiB7XG5Ib3N0bmFtZVR5cGU/OiBzdHJpbmdcbkVuYWJsZVJlc291cmNlTmFtZURuc0FSZWNvcmQ/OiBib29sZWFuXG5FbmFibGVSZXNvdXJjZU5hbWVEbnNBQUFBUmVjb3JkPzogYm9vbGVhblxufVxuLyoqXG4gKiBBbnkgdGFncyBhc3NpZ25lZCB0byB0aGUgc3VibmV0LlxuICovXG5UYWdzPzogVGFnW11cbi8qKlxuICogQW4gSVB2NCBJUEFNIHBvb2wgSUQgZm9yIHRoZSBzdWJuZXQuXG4gKi9cbklwdjRJcGFtUG9vbElkPzogc3RyaW5nXG4vKipcbiAqIEFuIElQdjQgbmV0bWFzayBsZW5ndGggZm9yIHRoZSBzdWJuZXQuXG4gKi9cbklwdjROZXRtYXNrTGVuZ3RoPzogbnVtYmVyXG4vKipcbiAqIEFuIElQdjYgSVBBTSBwb29sIElEIGZvciB0aGUgc3VibmV0LlxuICovXG5JcHY2SXBhbVBvb2xJZD86IHN0cmluZ1xuLyoqXG4gKiBBbiBJUHY2IG5ldG1hc2sgbGVuZ3RoIGZvciB0aGUgc3VibmV0LlxuICovXG5JcHY2TmV0bWFza0xlbmd0aD86IG51bWJlclxuQmxvY2tQdWJsaWNBY2Nlc3NTdGF0ZXM/OiB7XG4vKipcbiAqIFRoZSBtb2RlIG9mIFZQQyBCUEEuIE9wdGlvbnMgaGVyZSBhcmUgb2ZmLCBibG9jay1iaWRpcmVjdGlvbmFsLCBibG9jay1pbmdyZXNzIFxuICovXG5JbnRlcm5ldEdhdGV3YXlCbG9ja01vZGU/OiBzdHJpbmdcbn1cbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgdGFnLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtSZXNvdXJjZSB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1yZXNvdXJjZS10YWdzLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG59XG4iXX0=
|
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The network service traffic that is associated with the traffic mirror filter.
|
|
3
|
+
*/
|
|
4
|
+
export type TrafficMirrorNetworkService = "amazon-dns";
|
|
5
|
+
/**
|
|
6
|
+
* Resource schema for AWS::EC2::TrafficMirrorFilter
|
|
3
7
|
*/
|
|
4
8
|
export interface _AWS_EC2_TRAFFICMIRRORFILTER {
|
|
9
|
+
/**
|
|
10
|
+
* The ID of a traffic mirror filter.
|
|
11
|
+
*/
|
|
5
12
|
Id?: string;
|
|
13
|
+
/**
|
|
14
|
+
* The network service that is associated with the traffic mirror filter.
|
|
15
|
+
*/
|
|
16
|
+
NetworkServices?: TrafficMirrorNetworkService[];
|
|
17
|
+
/**
|
|
18
|
+
* The description of a traffic mirror filter.
|
|
19
|
+
*/
|
|
6
20
|
Description?: string;
|
|
7
|
-
|
|
21
|
+
/**
|
|
22
|
+
* The tags for a traffic mirror filter.
|
|
23
|
+
*/
|
|
8
24
|
Tags?: Tag[];
|
|
9
25
|
}
|
|
10
26
|
export interface Tag {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjMi10cmFmZmljbWlycm9yZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWVjMi10cmFmZmljbWlycm9yZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBuZXR3b3JrIHNlcnZpY2UgdHJhZmZpYyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHJhZmZpYyBtaXJyb3IgZmlsdGVyLlxuICovXG5leHBvcnQgdHlwZSBUcmFmZmljTWlycm9yTmV0d29ya1NlcnZpY2UgPSBcImFtYXpvbi1kbnNcIlxuXG4vKipcbiAqIFJlc291cmNlIHNjaGVtYSBmb3IgQVdTOjpFQzI6OlRyYWZmaWNNaXJyb3JGaWx0ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0VDMl9UUkFGRklDTUlSUk9SRklMVEVSIHtcbi8qKlxuICogVGhlIElEIG9mIGEgdHJhZmZpYyBtaXJyb3IgZmlsdGVyLlxuICovXG5JZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmV0d29yayBzZXJ2aWNlIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0cmFmZmljIG1pcnJvciBmaWx0ZXIuXG4gKi9cbk5ldHdvcmtTZXJ2aWNlcz86IFRyYWZmaWNNaXJyb3JOZXR3b3JrU2VydmljZVtdXG4vKipcbiAqIFRoZSBkZXNjcmlwdGlvbiBvZiBhIHRyYWZmaWMgbWlycm9yIGZpbHRlci5cbiAqL1xuRGVzY3JpcHRpb24/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZ3MgZm9yIGEgdHJhZmZpYyBtaXJyb3IgZmlsdGVyLlxuICovXG5UYWdzPzogVGFnW11cbn1cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbktleTogc3RyaW5nXG5WYWx1ZTogc3RyaW5nXG59XG4iXX0=
|
|
@@ -56,12 +56,16 @@ export interface _AWS_INSPECTORV2_FILTER {
|
|
|
56
56
|
* Findings filter ARN.
|
|
57
57
|
*/
|
|
58
58
|
Arn?: string;
|
|
59
|
+
Tags?: FilterTagMap;
|
|
59
60
|
}
|
|
60
61
|
/**
|
|
61
62
|
* Findings filter criteria.
|
|
62
63
|
*/
|
|
63
64
|
export interface FilterCriteria {
|
|
64
65
|
AwsAccountId?: StringFilterList;
|
|
66
|
+
CodeVulnerabilityDetectorName?: StringFilterList;
|
|
67
|
+
CodeVulnerabilityDetectorTags?: StringFilterList;
|
|
68
|
+
CodeVulnerabilityFilePath?: StringFilterList;
|
|
65
69
|
ComponentId?: StringFilterList;
|
|
66
70
|
ComponentType?: StringFilterList;
|
|
67
71
|
Ec2InstanceImageId?: StringFilterList;
|
|
@@ -69,15 +73,23 @@ export interface FilterCriteria {
|
|
|
69
73
|
Ec2InstanceVpcId?: StringFilterList;
|
|
70
74
|
EcrImageArchitecture?: StringFilterList;
|
|
71
75
|
EcrImageHash?: StringFilterList;
|
|
72
|
-
EcrImageTags?: StringFilterList;
|
|
73
76
|
EcrImagePushedAt?: DateFilterList;
|
|
74
77
|
EcrImageRegistry?: StringFilterList;
|
|
75
78
|
EcrImageRepositoryName?: StringFilterList;
|
|
79
|
+
EcrImageTags?: StringFilterList;
|
|
80
|
+
EpssScore?: NumberFilterList;
|
|
81
|
+
ExploitAvailable?: StringFilterList;
|
|
76
82
|
FindingArn?: StringFilterList;
|
|
77
83
|
FindingStatus?: StringFilterList;
|
|
78
84
|
FindingType?: StringFilterList;
|
|
79
85
|
FirstObservedAt?: DateFilterList;
|
|
86
|
+
FixAvailable?: StringFilterList;
|
|
80
87
|
InspectorScore?: NumberFilterList;
|
|
88
|
+
LambdaFunctionExecutionRoleArn?: StringFilterList;
|
|
89
|
+
LambdaFunctionLastModifiedAt?: DateFilterList;
|
|
90
|
+
LambdaFunctionLayers?: StringFilterList;
|
|
91
|
+
LambdaFunctionName?: StringFilterList;
|
|
92
|
+
LambdaFunctionRuntime?: StringFilterList;
|
|
81
93
|
LastObservedAt?: DateFilterList;
|
|
82
94
|
NetworkProtocol?: StringFilterList;
|
|
83
95
|
PortRange?: PortRangeFilterList;
|
|
@@ -117,8 +129,17 @@ export interface MapFilter {
|
|
|
117
129
|
export interface PackageFilter {
|
|
118
130
|
Architecture?: StringFilter;
|
|
119
131
|
Epoch?: NumberFilter;
|
|
132
|
+
FilePath?: StringFilter;
|
|
120
133
|
Name?: StringFilter;
|
|
121
134
|
Release?: StringFilter;
|
|
135
|
+
SourceLambdaLayerArn?: StringFilter;
|
|
122
136
|
SourceLayerHash?: StringFilter;
|
|
123
137
|
Version?: StringFilter;
|
|
124
138
|
}
|
|
139
|
+
export interface FilterTagMap {
|
|
140
|
+
/**
|
|
141
|
+
* This interface was referenced by `FilterTagMap`'s JSON-Schema definition
|
|
142
|
+
* via the `patternProperty` "^.{2,127}$".
|
|
143
|
+
*/
|
|
144
|
+
[k: string]: string;
|
|
145
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWluc3BlY3RvcnYyLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1pbnNwZWN0b3J2Mi1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFN0cmluZ0NvbXBhcmlzb24gPSAoXCJFUVVBTFNcIiB8IFwiUFJFRklYXCIgfCBcIk5PVF9FUVVBTFNcIilcbmV4cG9ydCB0eXBlIFN0cmluZ0lucHV0ID0gc3RyaW5nXG4vKipcbiAqIEBtaW5JdGVtcyAxXG4gKiBAbWF4SXRlbXMgMTBcbiAqL1xuZXhwb3J0IHR5cGUgU3RyaW5nRmlsdGVyTGlzdCA9IFN0cmluZ0ZpbHRlcltdXG5leHBvcnQgdHlwZSBUaW1lc3RhbXAgPSBudW1iZXJcbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMFxuICovXG5leHBvcnQgdHlwZSBEYXRlRmlsdGVyTGlzdCA9IERhdGVGaWx0ZXJbXVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDEwXG4gKi9cbmV4cG9ydCB0eXBlIE51bWJlckZpbHRlckxpc3QgPSBOdW1iZXJGaWx0ZXJbXVxuZXhwb3J0IHR5cGUgUG9ydCA9IG51bWJlclxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDEwXG4gKi9cbmV4cG9ydCB0eXBlIFBvcnRSYW5nZUZpbHRlckxpc3QgPSBQb3J0UmFuZ2VGaWx0ZXJbXVxuZXhwb3J0IHR5cGUgTWFwQ29tcGFyaXNvbiA9IFwiRVFVQUxTXCJcbmV4cG9ydCB0eXBlIE1hcEtleSA9IHN0cmluZ1xuZXhwb3J0IHR5cGUgTWFwVmFsdWUgPSBzdHJpbmdcbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMFxuICovXG5leHBvcnQgdHlwZSBNYXBGaWx0ZXJMaXN0ID0gTWFwRmlsdGVyW11cbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMFxuICovXG5leHBvcnQgdHlwZSBQYWNrYWdlRmlsdGVyTGlzdCA9IFBhY2thZ2VGaWx0ZXJbXVxuXG4vKipcbiAqIEluc3BlY3RvciBGaWx0ZXIgcmVzb3VyY2Ugc2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19JTlNQRUNUT1JWMl9GSUxURVIge1xuLyoqXG4gKiBGaW5kaW5ncyBmaWx0ZXIgbmFtZS5cbiAqL1xuTmFtZTogc3RyaW5nXG4vKipcbiAqIEZpbmRpbmdzIGZpbHRlciBkZXNjcmlwdGlvbi5cbiAqL1xuRGVzY3JpcHRpb24/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWluc3BlY3RvcnYyLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1pbnNwZWN0b3J2Mi1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFN0cmluZ0NvbXBhcmlzb24gPSAoXCJFUVVBTFNcIiB8IFwiUFJFRklYXCIgfCBcIk5PVF9FUVVBTFNcIilcbmV4cG9ydCB0eXBlIFN0cmluZ0lucHV0ID0gc3RyaW5nXG4vKipcbiAqIEBtaW5JdGVtcyAxXG4gKiBAbWF4SXRlbXMgMTBcbiAqL1xuZXhwb3J0IHR5cGUgU3RyaW5nRmlsdGVyTGlzdCA9IFN0cmluZ0ZpbHRlcltdXG5leHBvcnQgdHlwZSBUaW1lc3RhbXAgPSBudW1iZXJcbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMFxuICovXG5leHBvcnQgdHlwZSBEYXRlRmlsdGVyTGlzdCA9IERhdGVGaWx0ZXJbXVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDEwXG4gKi9cbmV4cG9ydCB0eXBlIE51bWJlckZpbHRlckxpc3QgPSBOdW1iZXJGaWx0ZXJbXVxuZXhwb3J0IHR5cGUgUG9ydCA9IG51bWJlclxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDEwXG4gKi9cbmV4cG9ydCB0eXBlIFBvcnRSYW5nZUZpbHRlckxpc3QgPSBQb3J0UmFuZ2VGaWx0ZXJbXVxuZXhwb3J0IHR5cGUgTWFwQ29tcGFyaXNvbiA9IFwiRVFVQUxTXCJcbmV4cG9ydCB0eXBlIE1hcEtleSA9IHN0cmluZ1xuZXhwb3J0IHR5cGUgTWFwVmFsdWUgPSBzdHJpbmdcbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMFxuICovXG5leHBvcnQgdHlwZSBNYXBGaWx0ZXJMaXN0ID0gTWFwRmlsdGVyW11cbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMFxuICovXG5leHBvcnQgdHlwZSBQYWNrYWdlRmlsdGVyTGlzdCA9IFBhY2thZ2VGaWx0ZXJbXVxuXG4vKipcbiAqIEluc3BlY3RvciBGaWx0ZXIgcmVzb3VyY2Ugc2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19JTlNQRUNUT1JWMl9GSUxURVIge1xuLyoqXG4gKiBGaW5kaW5ncyBmaWx0ZXIgbmFtZS5cbiAqL1xuTmFtZTogc3RyaW5nXG4vKipcbiAqIEZpbmRpbmdzIGZpbHRlciBkZXNjcmlwdGlvbi5cbiAqL1xuRGVzY3JpcHRpb24/OiBzdHJpbmdcbkZpbHRlckNyaXRlcmlhOiBGaWx0ZXJDcml0ZXJpYVxuLyoqXG4gKiBGaW5kaW5ncyBmaWx0ZXIgYWN0aW9uLlxuICovXG5GaWx0ZXJBY3Rpb246IChcIk5PTkVcIiB8IFwiU1VQUFJFU1NcIilcbi8qKlxuICogRmluZGluZ3MgZmlsdGVyIEFSTi5cbiAqL1xuQXJuPzogc3RyaW5nXG5UYWdzPzogRmlsdGVyVGFnTWFwXG59XG4vKipcbiAqIEZpbmRpbmdzIGZpbHRlciBjcml0ZXJpYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDcml0ZXJpYSB7XG5Bd3NBY2NvdW50SWQ/OiBTdHJpbmdGaWx0ZXJMaXN0XG5Db2RlVnVsbmVyYWJpbGl0eURldGVjdG9yTmFtZT86IFN0cmluZ0ZpbHRlckxpc3RcbkNvZGVWdWxuZXJhYmlsaXR5RGV0ZWN0b3JUYWdzPzogU3RyaW5nRmlsdGVyTGlzdFxuQ29kZVZ1bG5lcmFiaWxpdHlGaWxlUGF0aD86IFN0cmluZ0ZpbHRlckxpc3RcbkNvbXBvbmVudElkPzogU3RyaW5nRmlsdGVyTGlzdFxuQ29tcG9uZW50VHlwZT86IFN0cmluZ0ZpbHRlckxpc3RcbkVjMkluc3RhbmNlSW1hZ2VJZD86IFN0cmluZ0ZpbHRlckxpc3RcbkVjMkluc3RhbmNlU3VibmV0SWQ/OiBTdHJpbmdGaWx0ZXJMaXN0XG5FYzJJbnN0YW5jZVZwY0lkPzogU3RyaW5nRmlsdGVyTGlzdFxuRWNySW1hZ2VBcmNoaXRlY3R1cmU/OiBTdHJpbmdGaWx0ZXJMaXN0XG5FY3JJbWFnZUhhc2g/OiBTdHJpbmdGaWx0ZXJMaXN0XG5FY3JJbWFnZVB1c2hlZEF0PzogRGF0ZUZpbHRlckxpc3RcbkVjckltYWdlUmVnaXN0cnk/OiBTdHJpbmdGaWx0ZXJMaXN0XG5FY3JJbWFnZVJlcG9zaXRvcnlOYW1lPzogU3RyaW5nRmlsdGVyTGlzdFxuRWNySW1hZ2VUYWdzPzogU3RyaW5nRmlsdGVyTGlzdFxuRXBzc1Njb3JlPzogTnVtYmVyRmlsdGVyTGlzdFxuRXhwbG9pdEF2YWlsYWJsZT86IFN0cmluZ0ZpbHRlckxpc3RcbkZpbmRpbmdBcm4/OiBTdHJpbmdGaWx0ZXJMaXN0XG5GaW5kaW5nU3RhdHVzPzogU3RyaW5nRmlsdGVyTGlzdFxuRmluZGluZ1R5cGU/OiBTdHJpbmdGaWx0ZXJMaXN0XG5GaXJzdE9ic2VydmVkQXQ/OiBEYXRlRmlsdGVyTGlzdFxuRml4QXZhaWxhYmxlPzogU3RyaW5nRmlsdGVyTGlzdFxuSW5zcGVjdG9yU2NvcmU/OiBOdW1iZXJGaWx0ZXJMaXN0XG5MYW1iZGFGdW5jdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBTdHJpbmdGaWx0ZXJMaXN0XG5MYW1iZGFGdW5jdGlvbkxhc3RNb2RpZmllZEF0PzogRGF0ZUZpbHRlckxpc3RcbkxhbWJkYUZ1bmN0aW9uTGF5ZXJzPzogU3RyaW5nRmlsdGVyTGlzdFxuTGFtYmRhRnVuY3Rpb25OYW1lPzogU3RyaW5nRmlsdGVyTGlzdFxuTGFtYmRhRnVuY3Rpb25SdW50aW1lPzogU3RyaW5nRmlsdGVyTGlzdFxuTGFzdE9ic2VydmVkQXQ/OiBEYXRlRmlsdGVyTGlzdFxuTmV0d29ya1Byb3RvY29sPzogU3RyaW5nRmlsdGVyTGlzdFxuUG9ydFJhbmdlPzogUG9ydFJhbmdlRmlsdGVyTGlzdFxuUmVsYXRlZFZ1bG5lcmFiaWxpdGllcz86IFN0cmluZ0ZpbHRlckxpc3RcblJlc291cmNlSWQ/OiBTdHJpbmdGaWx0ZXJMaXN0XG5SZXNvdXJjZVRhZ3M/OiBNYXBGaWx0ZXJMaXN0XG5SZXNvdXJjZVR5cGU/OiBTdHJpbmdGaWx0ZXJMaXN0XG5TZXZlcml0eT86IFN0cmluZ0ZpbHRlckxpc3RcblRpdGxlPzogU3RyaW5nRmlsdGVyTGlzdFxuVXBkYXRlZEF0PzogRGF0ZUZpbHRlckxpc3RcblZlbmRvclNldmVyaXR5PzogU3RyaW5nRmlsdGVyTGlzdFxuVnVsbmVyYWJpbGl0eUlkPzogU3RyaW5nRmlsdGVyTGlzdFxuVnVsbmVyYWJpbGl0eVNvdXJjZT86IFN0cmluZ0ZpbHRlckxpc3RcblZ1bG5lcmFibGVQYWNrYWdlcz86IFBhY2thZ2VGaWx0ZXJMaXN0XG59XG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ0ZpbHRlciB7XG5Db21wYXJpc29uOiBTdHJpbmdDb21wYXJpc29uXG5WYWx1ZTogU3RyaW5nSW5wdXRcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUZpbHRlciB7XG5FbmRJbmNsdXNpdmU/OiBUaW1lc3RhbXBcblN0YXJ0SW5jbHVzaXZlPzogVGltZXN0YW1wXG59XG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckZpbHRlciB7XG5Mb3dlckluY2x1c2l2ZT86IG51bWJlclxuVXBwZXJJbmNsdXNpdmU/OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUG9ydFJhbmdlRmlsdGVyIHtcbkJlZ2luSW5jbHVzaXZlPzogUG9ydFxuRW5kSW5jbHVzaXZlPzogUG9ydFxufVxuZXhwb3J0IGludGVyZmFjZSBNYXBGaWx0ZXIge1xuQ29tcGFyaXNvbjogTWFwQ29tcGFyaXNvblxuS2V5PzogTWFwS2V5XG5WYWx1ZT86IE1hcFZhbHVlXG59XG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VGaWx0ZXIge1xuQXJjaGl0ZWN0dXJlPzogU3RyaW5nRmlsdGVyXG5FcG9jaD86IE51bWJlckZpbHRlclxuRmlsZVBhdGg/OiBTdHJpbmdGaWx0ZXJcbk5hbWU/OiBTdHJpbmdGaWx0ZXJcblJlbGVhc2U/OiBTdHJpbmdGaWx0ZXJcblNvdXJjZUxhbWJkYUxheWVyQXJuPzogU3RyaW5nRmlsdGVyXG5Tb3VyY2VMYXllckhhc2g/OiBTdHJpbmdGaWx0ZXJcblZlcnNpb24/OiBTdHJpbmdGaWx0ZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyVGFnTWFwIHtcbi8qKlxuICogVGhpcyBpbnRlcmZhY2Ugd2FzIHJlZmVyZW5jZWQgYnkgYEZpbHRlclRhZ01hcGAncyBKU09OLVNjaGVtYSBkZWZpbml0aW9uXG4gKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiXi57MiwxMjd9JFwiLlxuICovXG5bazogc3RyaW5nXTogc3RyaW5nXG59XG4iXX0=
|
|
@@ -39,6 +39,7 @@ export interface _AWS_MEDIATAILOR_PLAYBACKCONFIGURATION {
|
|
|
39
39
|
*/
|
|
40
40
|
SessionInitializationEndpointPrefix?: string;
|
|
41
41
|
HlsConfiguration?: HlsConfiguration;
|
|
42
|
+
LogConfiguration?: LogConfiguration;
|
|
42
43
|
/**
|
|
43
44
|
* The Amazon Resource Name (ARN) for the playback configuration.
|
|
44
45
|
*/
|
|
@@ -167,6 +168,43 @@ export interface HlsConfiguration {
|
|
|
167
168
|
*/
|
|
168
169
|
ManifestEndpointPrefix?: string;
|
|
169
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* The configuration that defines where AWS Elemental MediaTailor sends logs for the playback configuration.
|
|
173
|
+
*/
|
|
174
|
+
export interface LogConfiguration {
|
|
175
|
+
AdsInteractionLog?: AdsInteractionLog;
|
|
176
|
+
/**
|
|
177
|
+
* The method used for collecting logs from AWS Elemental MediaTailor. To configure MediaTailor to send logs directly to Amazon CloudWatch Logs, choose LEGACY_CLOUDWATCH. To configure MediaTailor to send logs to CloudWatch, which then vends the logs to your destination of choice, choose VENDED_LOGS. Supported destinations are CloudWatch Logs log group, Amazon S3 bucket, and Amazon Data Firehose stream. To use vended logs, you must configure the delivery destination in Amazon CloudWatch
|
|
178
|
+
*/
|
|
179
|
+
EnabledLoggingStrategies?: string[];
|
|
180
|
+
ManifestServiceInteractionLog?: ManifestServiceInteractionLog;
|
|
181
|
+
/**
|
|
182
|
+
* The percentage of session logs that MediaTailor sends to your CloudWatch Logs account. For example, if your playback configuration has 1000 sessions and percentEnabled is set to 60, MediaTailor sends logs for 600 of the sessions to CloudWatch Logs. MediaTailor decides at random which of the playback configuration sessions to send logs for. If you want to view logs for a specific session, you can use the debug log mode.
|
|
183
|
+
*/
|
|
184
|
+
PercentEnabled: number;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* The event types that MediaTailor emits in logs for interactions with the ADS.
|
|
188
|
+
*/
|
|
189
|
+
export interface AdsInteractionLog {
|
|
190
|
+
/**
|
|
191
|
+
* Indicates that MediaTailor won't emit the selected events in the logs for playback sessions that are initialized with this configuration.
|
|
192
|
+
*/
|
|
193
|
+
ExcludeEventTypes?: string[];
|
|
194
|
+
/**
|
|
195
|
+
* Indicates that MediaTailor emits RAW_ADS_RESPONSE logs for playback sessions that are initialized with this configuration.
|
|
196
|
+
*/
|
|
197
|
+
PublishOptInEventTypes?: string[];
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* The event types that MediaTailor emits in logs for interactions with the origin server.
|
|
201
|
+
*/
|
|
202
|
+
export interface ManifestServiceInteractionLog {
|
|
203
|
+
/**
|
|
204
|
+
* Indicates that MediaTailor won't emit the selected events in the logs for playback sessions that are initialized with this configuration.
|
|
205
|
+
*/
|
|
206
|
+
ExcludeEventTypes?: string[];
|
|
207
|
+
}
|
|
170
208
|
export interface Tag {
|
|
171
209
|
Key: string;
|
|
172
210
|
Value: string;
|