@cubist-labs/cubesigner-sdk 0.3.19 → 0.3.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/spec/env/beta.json +2 -1
- package/dist/cjs/spec/env/gamma.json +2 -1
- package/dist/cjs/spec/env/prod.json +2 -1
- package/dist/cjs/src/api.d.ts +3 -1
- package/dist/cjs/src/api.js +5 -3
- package/dist/cjs/src/client.d.ts +11 -2
- package/dist/cjs/src/client.js +5 -3
- package/dist/cjs/src/env.d.ts +1 -0
- package/dist/cjs/src/env.js +1 -1
- package/dist/cjs/src/error.js +7 -2
- package/dist/cjs/src/index.d.ts +2 -0
- package/dist/cjs/src/index.js +3 -1
- package/dist/cjs/src/org.d.ts +13 -1
- package/dist/cjs/src/org.js +2 -2
- package/dist/cjs/src/org_event_processor.d.ts +57 -0
- package/dist/cjs/src/org_event_processor.js +137 -0
- package/dist/cjs/src/schema.d.ts +94 -26
- package/dist/cjs/src/schema.js +1 -1
- package/dist/cjs/src/schema_types.d.ts +3 -0
- package/dist/cjs/src/schema_types.js +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/spec/env/beta.json +2 -1
- package/dist/esm/spec/env/gamma.json +2 -1
- package/dist/esm/spec/env/prod.json +2 -1
- package/dist/esm/src/api.d.ts +3 -1
- package/dist/esm/src/api.js +5 -3
- package/dist/esm/src/client.d.ts +11 -2
- package/dist/esm/src/client.js +5 -3
- package/dist/esm/src/env.d.ts +1 -0
- package/dist/esm/src/env.js +1 -1
- package/dist/esm/src/error.js +7 -2
- package/dist/esm/src/index.d.ts +2 -0
- package/dist/esm/src/index.js +3 -1
- package/dist/esm/src/org.d.ts +13 -1
- package/dist/esm/src/org.js +2 -2
- package/dist/esm/src/org_event_processor.d.ts +57 -0
- package/dist/esm/src/org_event_processor.js +133 -0
- package/dist/esm/src/schema.d.ts +94 -26
- package/dist/esm/src/schema.js +1 -1
- package/dist/esm/src/schema_types.d.ts +3 -0
- package/dist/esm/src/schema_types.js +1 -1
- package/package.json +1 -1
- package/src/api.ts +10 -3
- package/src/client.ts +11 -3
- package/src/env.ts +1 -0
- package/src/error.ts +6 -1
- package/src/index.ts +2 -0
- package/src/org.ts +1 -1
- package/src/org_event_processor.ts +173 -0
- package/src/schema.ts +100 -23
- package/src/schema_types.ts +3 -0
package/dist/cjs/src/schema.js
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* Do not make direct changes to the file.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIGJ5IG9wZW5hcGktdHlwZXNjcmlwdC5cbiAqIERvIG5vdCBtYWtlIGRpcmVjdCBjaGFuZ2VzIHRvIHRoZSBmaWxlLlxuICovXG5cbi8qKiBPbmVPZiB0eXBlIGhlbHBlcnMgKi9cbnR5cGUgV2l0aG91dDxULCBVPiA9IHsgW1AgaW4gRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBVPl0/OiBuZXZlciB9O1xudHlwZSBYT1I8VCwgVT4gPSBUIHwgVSBleHRlbmRzIG9iamVjdCA/IChXaXRob3V0PFQsIFU+ICYgVSkgfCAoV2l0aG91dDxVLCBUPiAmIFQpIDogVCB8IFU7XG50eXBlIE9uZU9mPFQgZXh0ZW5kcyBhbnlbXT4gPSBUIGV4dGVuZHMgW2luZmVyIE9ubHldXG4gID8gT25seVxuICA6IFQgZXh0ZW5kcyBbaW5mZXIgQSwgaW5mZXIgQiwgLi4uaW5mZXIgUmVzdF1cbiAgICA/IE9uZU9mPFtYT1I8QSwgQj4sIC4uLlJlc3RdPlxuICAgIDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgcGF0aHMge1xuICBcIi92MC9hYm91dF9tZVwiOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYWJvdXRNZUxlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgT3JnXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBPcmdcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0T3JnXCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIE9yZ1xuICAgICAqXG4gICAgICogVXBkYXRlIG9yZ2FuaXphdGlvbiBhdHRyaWJ1dGVzIChlbmFibGVkIGZsYWcsIG5hbWUsIGFuZCBwb2xpY2llcykuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVPcmdcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdmEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgICAqXG4gICAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYnRjL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEJpdGNvaW4gVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIFNpZ25zIGEgQml0Y29pbiB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJidGNTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKlxuICAgICAqIERlcml2ZXMgYSBrZXkgb2YgYSBzcGVjaWZpZWQgdHlwZSB1c2luZyBhIHN1cHBsaWVkIGRlcml2YXRpb24gcGF0aCBhbmQgYW5cbiAgICAgKiBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImRlcml2ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V2bS9laXAxOTEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFSVAtMTkxIERhdGFcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtMTkxIERhdGFcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgbWVzc2FnZSB1c2luZyBFSVAtMTkxIHBlcnNvbmFsX3NpZ24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVpcDE5MVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9ldm0vZWlwNzEyL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAgICpcbiAgICAgKiBTaWducyB0eXBlZCBkYXRhIGFjY29yZGluZyB0byBFSVAtNzEyIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlaXA3MTJTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvcHJvdmVcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICAgKlxuICAgICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgYVxuICAgICAqIHZhbGlkIEN1YmVTaWduZXIgc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2VcbiAgICAgKiB0byBhbm90aGVyIHNlcnZpY2Ugd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQcm9vZkN1YmVTaWduZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS9wcm92ZS9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgICAqXG4gICAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIG1ldCB0aGVcbiAgICAgKiBhdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMgKGFsbG93ZWQgaXNzdWVycyAmIGF1ZGllbmNlcykgZm9yIEN1YmVTaWduZXJcbiAgICAgKiB3aXRob3V0IGxlYWtpbmcgdGhlaXIgY3JlZGVudGlhbHMuXG4gICAgICpcbiAgICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlIHRvIGFub3RoZXIgc2VydmljZVxuICAgICAqIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUHJvb2ZPaWRjXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvdmVyaWZ5XCI6IHtcbiAgICAvKipcbiAgICAgKiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAgICpcbiAgICAgKiBBbGxvd3MgYSB0aGlyZC1wYXJ0eSB0byB2YWxpZGF0ZSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIFdoZW4gYSB0aGlyZC1wYXJ0eSBpcyBwcm92aWRlZCBhbiBbSWRlbnRpdHlQcm9vZl0gb2JqZWN0LCB0aGV5IG11c3QgY2hlY2sgaXRzXG4gICAgICogdmVyYWNpdHkgYnkgY2FsbGluZyB0aGlzIGVuZHBvaW50XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInZlcmlmeVByb29mXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW1wb3J0X2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgICAqXG4gICAgICogR2VuZXJhdGUgYW4gZXBoZW1lcmFsIGtleSB0aGF0IGEgY2xpZW50IGNhbiB1c2UgZm9yIGtleS1pbXBvcnQgZW5jcnlwdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJjcmVhdGVLZXlJbXBvcnRLZXlcIl07XG4gICAgLyoqXG4gICAgICogSW1wb3J0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBTZWN1cmVseSBpbXBvcnRzIGFuIGV4aXN0aW5nIGtleSB1c2luZyBhIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGtleS1pbXBvcnQga2V5LlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImltcG9ydEtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2ludml0ZVwiOiB7XG4gICAgLyoqXG4gICAgICogSW52aXRlIFVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gSW52aXRlIFVzZXJcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgdXNlciBpbiBhbiBleGlzdGluZyBvcmcgYW5kIHNlbmRzIHRoYXQgdXNlciBhbiBpbnZpdGUgZW1haWwuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImludml0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleXNcbiAgICAgKlxuICAgICAqIEdldHMgdGhlIGxpc3Qgb2Ygb3duZWQga2V5cyBpbiBhIGdpdmVuIG9yZy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0S2V5c0luT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSBuZXcga2V5cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleVxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIGtleS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRLZXlJbk9yZ1wiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBLZXlcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSBrZXkgc3BlY2lmaWVkIGJ5IGl0cyBJRC5cbiAgICAgKiBPbmx5IHRoZSBrZXkgb3duZXIgYW5kIG9yZyBvd25lcnMgYXJlIGFsbG93ZWQgdG8gZGVsZXRlIGtleXMuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlS2V5XCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIEtleVxuICAgICAqXG4gICAgICogRW5hYmxlIG9yIGRpc2FibGUgYSBrZXkuICBUaGUgdXNlciBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUga2V5IG9yIG9yZ2FuaXphdGlvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfS9yb2xlc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXkgUm9sZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXkgUm9sZXNcbiAgICAgKlxuICAgICAqIEdldCBhbGwgcm9sZXMgdGhlIGtleSBpcyBpblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlSb2xlc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYVwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzIHRoYXQgYXJlIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlcixcbiAgICAgKiBpLmUuLCB0aG9zZSBpbiB3aGljaCB0aGUgY3VycmVudCB1c2VyIGlzIGxpc3RlZCBhcyBhbiBhcHByb3ZlclxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1mYUxpc3RcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZmEve21mYV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IGl0cyBpZC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJtZmFHZXRcIl07XG4gICAgLyoqXG4gICAgICogQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIEFwcHJvdmUgb3IgcmVqZWN0IHJlcXVlc3QgYWZ0ZXIgbG9nZ2luZyBpbiB3aXRoIEN1YmVTaWduZXIuXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnRseS1sb2dnZWQgdXNlciBhcyBhbiBhcHByb3ZlclxuICAgICAqIG9mIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBvZiB0aGUgW1N0YXR1czo6UmVxdWlyZWRBcHByb3ZlcnNdIGtpbmQuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2ZcbiAgICAgKiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcIm1mYVZvdGVDc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBGSURPLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJtZmFGaWRvSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAgICogdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZUZpZG9Db21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZS9SZWplY3QgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnQgdXNlciBhcyBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnlcbiAgICAgKiBwcm92aWRpbmcgVE9UUCBjb2RlLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXNcbiAgICAgKiBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZVRvdHBcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vYXV0aDIvdHdpdHRlclwiOiB7XG4gICAgLyoqXG4gICAgICogTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAgICogQGRlc2NyaXB0aW9uIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBhY3RzIGlkZW50aWNhbGx5IHRvIFR3aXR0ZXIncyBbYG9hdXRoMi90b2tlbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLnR3aXR0ZXIuY29tL2VuL2RvY3MvYXV0aGVudGljYXRpb24vYXBpLXJlZmVyZW5jZS90b2tlbikgZW5kcG9pbnQsXG4gICAgICogYnV0IGV4dGVuZHMgdGhlIG91dHB1dCB3aXRoIGFuIGBpZF90b2tlbmAuXG4gICAgICpcbiAgICAgKiBUaGlzIGBpZF90b2tlbmAgY2FuIHRoZW4gYmUgdXNlZCB3aXRoIGFueSBDdWJlU2lnbmVyIGVuZHBvaW50IHRoYXQgcmVxdWlyZXMgYW4gT0lEQyB0b2tlbi5cbiAgICAgKlxuICAgICAqID4gWyFJTVBPUlRBTlRdXG4gICAgICogPiBUaGlzIGVuZHBvaW50IHdpbGwgZmFpbCB1bmxlc3MgdGhlIG9yZyBpcyBjb25maWd1cmVkIHRvIGFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90d2l0dGVyYCBhbmQgY2xpZW50IElEIGJlaW5nIHVzZWQgZm9yIFR3aXR0ZXIuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm9hdXRoMlR3aXR0ZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBMb2dpbiB3aXRoIE9JRENcbiAgICAgKiBAZGVzY3JpcHRpb24gTG9naW4gd2l0aCBPSURDXG4gICAgICpcbiAgICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBzaWduZXIgc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIE1GQSBpcyByZXF1aXJlZCB3aGVuOlxuICAgICAqIC0gYW4gTUZBIHBvbGljeSBpcyBleHBsaWNpdGx5IGF0dGFjaGVkIHRvIHRoZSB1c2VyIGxvZ2dpbmcgaW5cbiAgICAgKiAoZS5nLiwgYW4gb3JnIG93bmVyIGNhbiBkbyB0aGF0IGF0IHVzZXIgY3JlYXRpb24gdGltZSB0byByZXF1aXJlIGNlcnRhaW4ga2luZCBvZiBNRkEpXG4gICAgICogLSB0aGUgdXNlciBoYXMgYXQgbGVhc3QgMSBNRkEgZmFjdG9yIGNvbmZpZ3VyZWRcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2lkY0F1dGhcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGVzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYWxsIHJvbGVzIGluIGFuIG9yZ2FuaXphdGlvbiB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaXMgYWxsb3dlZCB0byBhY2Nlc3MuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFJvbGVzXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLiBVbmxlc3MgdGhlIGxvZ2dlZC1pbiB1c2VyXG4gICAgICogaXMgdGhlIG93bmVyLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJvbGUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBSb2xlXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSByb2xlIGluIGFuIG9yZ2FuaXphdGlvblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFJvbGVcIl07XG4gICAgLyoqXG4gICAgICogRGVsZXRlIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFJvbGVcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZVJvbGVcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFJvbGVcbiAgICAgKlxuICAgICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYSByb2xlICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOmVuYWJsZWAgc2NvcGUpLlxuICAgICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTpwb2xpY3lgIHNjb3BlKS5cbiAgICAgKiBUaGUgdXNlciBtdXN0IGJlIGluIHRoZSByb2xlIG9yIGFuIG93bmVyIG9mIHRoZSBvcmdhbml6YXRpb24uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2FkZF9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBBZGQgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgS2V5c1xuICAgICAqXG4gICAgICogQWRkcyBhIGxpc3Qgb2YgZXhpc3Rpbmcga2V5cyB0byBhbiBleGlzdGluZyByb2xlLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImFkZEtleXNUb1JvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vYWRkX3VzZXIve3VzZXJfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBBZGQgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgVXNlclxuICAgICAqXG4gICAgICogQWRkcyBhbiBleGlzdGluZyB1c2VyIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGFkZCB1c2VycyB0byBhIHJvbGUuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiYWRkVXNlclRvUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFJvbGUgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgS2V5c1xuICAgICAqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwga2V5cyBpbiBhIHJvbGUuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFJvbGVLZXlzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2tleXMve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIEtleVxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGtleSBmcm9tIGEgcm9sZVxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZUtleUZyb21Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3Rva2Vuc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGEgc2luZ2xlIHBhZ2Ugb2YgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgICAqXG4gICAgICogKipEZXByZWNhdGVkKio6IFVzZSBgR0VUIC9vcmcve29yZ19pZH0vc2Vzc2lvbj9yb2xlPWBcbiAgICAgKlxuICAgICAqIFJldHVybnMgYWxsIGFjY2VzcyB0b2tlbnMgZm9yIGEgZ2l2ZW4gcm9sZS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlVG9rZW5zXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBUb2tlblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgVG9rZW5cbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYWNjZXNzIHRva2VuIGZvciBhIGdpdmVuIHJvbGUgKHRvIGJlIHVzZWQgYXMgXCJBUEkgS2V5XCIgZm9yIGFsbCBzaWduaW5nIGFjdGlvbnMpLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBjcmVhdGUgYSB0b2tlbiBmb3IgaXQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVJvbGVUb2tlblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgQWxsIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgQWxsIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICAgKlxuICAgICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYERFTEVURSAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gIGluc3RlYWRcbiAgICAgKlxuICAgICAqIFJldm9rZXMgYWxsIGFjY2VzcyB0b2tlbnMgYXNzb2NpYXRlZCB3aXRoIGEgcm9sZS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VBbGxSb2xlVG9rZW5zXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3Rva2Vucy97c2Vzc2lvbl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBUb2tlbiAoRGVwcmVjYXRlZClcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgVG9rZW4gKERlcHJlY2F0ZWQpXG4gICAgICpcbiAgICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uL3tzZXNzaW9uX2lkfWBcbiAgICAgKlxuICAgICAqIFJldm9rZXMgYW4gYWNjZXNzIHRva2VuIGFzc29jaWF0ZWQgd2l0aCBhIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlUm9sZVRva2VuXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFJvbGUgVXNlcnMuXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBVc2Vycy5cbiAgICAgKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHVzZXJzIHdobyBoYXZlIGFjY2VzcyB0byBhIHJvbGUuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFJvbGVVc2Vyc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS91c2Vycy97dXNlcl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBVc2VyXG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBVc2VyXG4gICAgICpcbiAgICAgKiBSZW1vdmVzIGFuIGV4aXN0aW5nIHVzZXIgZnJvbSBhbiBleGlzdGluZyByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIHVzZXJzIGZyb20gYSByb2xlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZVVzZXJGcm9tUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb25cIjoge1xuICAgIC8qKlxuICAgICAqIExpc3Qgc2Vzc2lvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBzZXNzaW9uc1xuICAgICAqXG4gICAgICogSWYgbm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQsIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCBzZXNzaW9uIGlzIHJldHVybmVkXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFNlc3Npb25zXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgdXNlciBzZXNzaW9uLCBzaWxlbnRseSB0cnVuY2F0aW5nIHJlcXVlc3RlZCBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lc1xuICAgICAqIHRvIGJlIGF0IG1vc3QgcmVxdWVzdG9yJ3Mgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZSwgcmVzcGVjdGl2ZWx5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVTZXNzaW9uXCJdO1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBleGlzdGluZyBzZXNzaW9uKHMpXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBleGlzdGluZyBzZXNzaW9uKHMpXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGV4aXN0aW5nIHNlc3Npb25zLCBwcmV2ZW50aW5nIHRoZW0gZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZC5cbiAgICAgKiBJZiBubyBxdWVyeSBwYXJhbXMgYXJlIHByb3ZpZGVkLCB0aGUgY3VycmVudCBzZXNzaW9uIGlzIHJldm9rZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlU2Vzc2lvbnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uL3NlbGZcIjoge1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyB0aGUgY3VycmVudCBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VDdXJyZW50U2Vzc2lvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb24ve3Nlc3Npb25faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFNlc3Npb25cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIGEgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgYSBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGFuIGV4aXN0aW5nIHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVNlc3Npb25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zb2xhbmEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAgICpcbiAgICAgKiBTaWducyBhIFNvbGFuYSBtZXNzYWdlIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNvbGFuYVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS90b2tlbi9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IHRoZSByb2xlIHRva2VuIGNhbiBhY2Nlc3MuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFRva2VuS2V5c1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWVcIjoge1xuICAgIC8qKlxuICAgICAqIFVzZXIgSW5mb1xuICAgICAqIEBkZXNjcmlwdGlvbiBVc2VyIEluZm9cbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImFib3V0TWVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2V4cG9ydFwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IG91dHN0YW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1widXNlckV4cG9ydExpc3RcIl07XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqXG4gICAgICogVGhpcyBzdGFydHMgYSBkZWxheSAod2hvc2UgbGVuZ3RoIGlzIGRldGVybWluZWQgYnkgT3JnLXdpZGUgc2V0dGluZ3MpXG4gICAgICogYmVmb3JlIGV4cG9ydCBjYW4gYmUgY29tcGxldGVkLCBhbmQgcmV0dXJucyBhIHRpY2tldCB0aGF0IGNhbiBiZSB1c2VkXG4gICAgICogdG8gY29tcGxldGUgdGhlIGV4cG9ydCBvbmNlIHRoZSB0aW1lciBoYXMgZXhwaXJlZC5cbiAgICAgKlxuICAgICAqIE9ubHkgb25lIHVzZXItZXhwb3J0IHJlcXVlc3QgY2FuIGJlIGFjdGl2ZSBmb3IgYSBnaXZlbiBrZXkuIElmIHRoZXJlXG4gICAgICogaXMgYWxyZWFkeSBhbiBhY3RpdmUgZXhwb3J0LCB0aGlzIGVuZHBvaW50IHdpbGwgcmV0dXJuIGFuIGVycm9yLiBUb1xuICAgICAqIGNyZWF0ZSBhIG5ldyByZXF1ZXN0LCBmaXJzdCBkZWxldGUgdGhlIGV4aXN0aW5nIG9uZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlckV4cG9ydEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0RGVsZXRlXCJdO1xuICAgIC8qKlxuICAgICAqIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGluaXRpYXRpbmcgYSB1c2VyLWV4cG9ydCByZXF1ZXN0IHZpYVxuICAgICAqIHRoZSBgdXNlcl9leHBvcnRfaW5pdGAgQVBJLCBhbmQgb25seSB3aXRoaW4gdGhlIHN1YnNlcXVlbnQgZXhwb3J0IHdpbmRvd1xuICAgICAqIChpLmUuLCBhZnRlciB0aGUgZXhwb3J0IGRlbGF5IGhhcyBwYXNzZWQgYW5kIGJlZm9yZSB0aGUgcmVxdWVzdCBoYXMgZXhwaXJlZCkuXG4gICAgICpcbiAgICAgKiBUbyBjaGVjayBvbiB0aGUgc3RhdHVzIG9mIGFuIGV4cG9ydCByZXF1ZXN0LCBzZWUgdGhlIGB1c2VyX2V4cG9ydF9saXN0YCBBUEkuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0Q29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleVxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVnaXN0ZXJGaWRvSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkby97Zmlkb19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgRklETyBrZXlcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSBGSURPIGtleSBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgdGhlIGtleSBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckRlbGV0ZUZpZG9cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgICAqXG4gICAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVzZXRUb3RwSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgVE9UUFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgVE9UUFxuICAgICAqXG4gICAgICogRGVsZXRlcyBUT1RQIGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiBUT1RQIGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJ1c2VyRGVsZXRlVG90cFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlclJlc2V0VG90cENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwL3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJWZXJpZnlUb3RwXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFVzZXJzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAgICogQGRlc2NyaXB0aW9uIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVPaWRjVXNlclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlT2lkY1VzZXJcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvbWUvZmlkb1wiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicmVnaXN0ZXJGaWRvSW5pdExlZ2FjeVwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBBY2NlcHRzIHRoZSByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCB0byB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wicmVnaXN0ZXJGaWRvQ29tcGxldGVMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvbWUvdG90cFwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICAgKlxuICAgICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicmVzZXRUb3RwSW5pdExlZ2FjeVwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJyZXNldFRvdHBDb21wbGV0ZUxlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9tZS90b3RwL3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IFRPVFBcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widmVyaWZ5VG90cExlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2Jsb2Ivc2lnbi97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBSYXcgQmxvYlxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFJhdyBCbG9iXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBhcmJpdHJhcnkgYmxvYiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqXG4gICAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAgICogYnl0ZSB2LCB3aGljaCBjYW4gaW4gZ2VuZXJhbCB0YWtlIGFueSBvZiB0aGUgdmFsdWVzIDAsIDEsIDIsIG9yIDMuXG4gICAgICpcbiAgICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICAgKlxuICAgICAqIC0gQkxTIHNpZ25hdHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGJsb2Itc2lnbiBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYmxvYlNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9jdWJlM3NpZ25lci9oZWFydGJlYXRcIjoge1xuICAgIC8qKlxuICAgICAqIFJlY29yZCBoZWFydGJlYXRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVjb3JkIGhlYXJ0YmVhdFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBpcyBjYWxsZWQgYnkgdGhlIGN1YmUzc2lnbmVyIHByb3h5IHRvIHJlY29yZCB2YXJpb3VzIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3ViZTNzaWduZXJIZWFydGJlYXRcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgxL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBFdGhlcmV1bSAoYW5kIG90aGVyIEVWTSkgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICogUmV0dXJucyBhbiBSTFAtZW5jb2RlZCB0cmFuc2FjdGlvbiB3aXRoIEVJUC0xNTUgc2lnbmF0dXJlLlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImV0aDFTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIGV0aDIgdmFsaWRhdG9yIHJlcXVlc3Qgd2l0aCBhIGdpdmVuIEJMUyBrZXkuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZXRoMlNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3N0YWtlXCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAgICpcbiAgICAgKiBTaWducyBhIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2l0aCBhIGB2YWxpZGF0b3Jfa2V5YC4gSWYgYHZhbGlkYXRvcl9rZXlgIGlzIHNldCB0byBhIHByZWdlbmVyYXRlZCBrZXksIHdlIHVzZSB0aGVcbiAgICAgKiBwcm92aWRlZCB2YWxpZGF0b3Iga2V5LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEgbmV3IEJMUyBrZXkuXG4gICAgICpcbiAgICAgKiBXaGVuIHVzaW5nIGEgcHJlZ2VuZXJhdGVkIGtleSwgdGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlXG4gICAgICogYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wic3Rha2VcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3Vuc3Rha2Uve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBIYW5kbGUgdW5zdGFraW5nIHJlcXVlc3QsIHByb2R1Y2luZyBhIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlXG4gICAgICogdGhhdCBjYW4gYmUgcG9zdGVkIGRpcmVjdGx5IHRvIHRoZSBCZWFjb24gY2hhaW4uXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widW5zdGFrZVwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L3Rva2VuL3JlZnJlc2hcIjoge1xuICAgIC8qKlxuICAgICAqIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wic2lnbmVyU2Vzc2lvblJlZnJlc2hcIl07XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIHdlYmhvb2tzID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIGNvbXBvbmVudHMge1xuICBzY2hlbWFzOiB7XG4gICAgQWNjZXB0ZWRSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEaWZmZXJlbnQgcmVzcG9uc2VzIHdlIHJldHVybiBmb3Igc3RhdHVzIGNvZGUgXCIyMDIgQWNjZXB0ZWRcIi5cbiAgICAgKlxuICAgICAqIEV2ZW4gdGhvdWdoIFwiMjAyIEFjY2VwdGVkXCIgaXMgYSBzdWNjZXNzZnVsIHJlc3BvbnNlLCB3ZSByZXByZXNlbnRcbiAgICAgKiBpdCBhcyBhIFJ1c3QgZXJyb3IgYmVjYXVzZSB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gaGF2ZSByb3V0ZSBoYW5kbGVyc1xuICAgICAqIHJldHVybiBgUmVzdWx0PFQsIFNpZ25lckVycm9yPmAgd2hlcmUgYFRgIGlzIHRoZSB0eXBlIG9mIHRoZVxuICAgICAqIHJlc3BvbnNlIGZvciB0aGUgc3RhdHVzIGNvZGUgXCIyMDAgT2tcIi5cbiAgICAgKi9cbiAgICBBY2NlcHRlZFZhbHVlOiB7XG4gICAgICBNZmFSZXF1aXJlZDoge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE1GQSByZXF1ZXN0IGlkICovXG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnYW5pemF0aW9uIGlkICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICBzZXNzaW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEFjY2VwdGVkVmFsdWVDb2RlOiBcIk1mYVJlcXVpcmVkXCI7XG4gICAgQWRkS2V5c1RvUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiBrZXlzIHRvIGFkZCB0byBhIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJLZXkjNjMwMjNhMjctMWU3MC00MzBhLWIyOTMtZmZiYzlkNmM0NDg0XCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAga2V5X2lkczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY2llcyB0byBhcHBseSBmb3IgZWFjaCBrZXlcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjogXCJDYW5vbmljYWxcIlxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjoge1xuICAgICAgICogICAgICAgICBcIlJlcXVpcmVkQXBwcm92ZXJzXCI6IHtcbiAgICAgICAqICAgICAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICAgICAgfVxuICAgICAgICogICAgICAgfSxcbiAgICAgICAqICAgICAgIFwicmVzdHJpY3RlZF9vcGVyYXRpb25zXCI6IFtcbiAgICAgICAqICAgICAgICAgXCJFdGgxU2lnblwiLFxuICAgICAgICogICAgICAgICBcIkJsb2JTaWduXCJcbiAgICAgICAqICAgICAgIF1cbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgIH07XG4gICAgQWRkVGhpcmRQYXJ0eVVzZXJSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBVc2VyIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgaWRlbnRpdHk6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT0lEQ0lkZW50aXR5XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgZnVsbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZSBXb25kZXJsYW5kXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgcm9sZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgIH07XG4gICAgQWRkVGhpcmRQYXJ0eVVzZXJSZXNwb25zZToge1xuICAgICAgLyoqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBBcHByb3ZhbEluZm86IHtcbiAgICAgIHRpbWVzdGFtcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdlYkF1dGhuIFJlbHlpbmcgUGFydGllcyBtYXkgdXNlIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UgdG8gc3BlY2lmeVxuICAgICAqIHRoZWlyIHByZWZlcmVuY2UgcmVnYXJkaW5nIGF0dGVzdGF0aW9uIGNvbnZleWFuY2UgZHVyaW5nIGNyZWRlbnRpYWxcbiAgICAgKiBnZW5lcmF0aW9uLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtYXR0ZXN0YXRpb25jb252ZXlhbmNlcHJlZmVyZW5jZVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTogXCJub25lXCIgfCBcImluZGlyZWN0XCIgfCBcImRpcmVjdFwiIHwgXCJlbnRlcnByaXNlXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIHJlcXVpcmVkIGZvciBib3RoIGBhdXRoZW50aWNhdGVgIGFuZCBgcmVmcmVzaGAuICovXG4gICAgQXV0aERhdGE6IHtcbiAgICAgIC8qKiBGb3JtYXQ6IGludDMyICovXG4gICAgICBlcG9jaF9udW06IG51bWJlcjtcbiAgICAgIGVwb2NoX3Rva2VuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkIzMlwiXTtcbiAgICAgIG90aGVyX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgYXNzZXJ0aW9uIHJlc3BvbnNlIHVzZWQgYnkgY2xpZW50cyB3aGVuIGF0dGVtcHRpbmcgdG8gbG9nIGluIHdpdGggYSBrbm93biBjcmVkZW50aWFsXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2F1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgdGhlIHN0YW5kYXJkIENUQVAyIGF1dGhlbnRpY2F0b3IgZGF0YS4gTXVzdCBiZSBhIHZhbGlkIFtgQXV0aGVudGljYXRvckRhdGFgXS5cbiAgICAgICAqIFRoaXMgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaG93IGtleSB3YXMgaW52b2tlZC5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcmFzc2VydGlvbnJlc3BvbnNlLWF1dGhlbnRpY2F0b3JkYXRhXG4gICAgICAgKi9cbiAgICAgIGF1dGhlbnRpY2F0b3JEYXRhOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250YWlucyBVVEY4IGVuY29kZWQgSlNPTiB3aGljaCBtdXN0IGJlIGEgdmFsaWQgW2BDbGllbnREYXRhYF1cbiAgICAgICAqIFRoaXMgZGF0YSBpcyBjb21iaW5lZCB3aXRoIGBhdXRoZW50aWNhdG9yX2RhdGFgIHRvIHByb2R1Y2UgdGhlIHNpZ25hdHVyZVxuICAgICAgICogbWVhbmluZyB0aGUgY2xpZW50IGF0dGVzdHMgdG8gdGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgZGF0YS5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnJlc3BvbnNlLWNsaWVudGRhdGFqc29uXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBjb25jYXRlbmF0ZWQgYGF1dGhlbnRpY2F0b3JEYXRhIHx8IGhhc2hgIHdoZXJlXG4gICAgICAgKiBgaGFzaGAgaXMgdGhlIFNIQTI1NiBoYXNoIG9mIHRoZSBgY2xpZW50RGF0YUpTT05gIGJ1ZmZlcjpcbiAgICAgICAqXG4gICAgICAgKiBGaWVsZCBEZWZpbml0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1zaWduYXR1cmVcbiAgICAgICAqIFN0ZXAgMTEgb2YgYGdldEFzc2VydGlvbmAgc3BlY2lmaWVzIHRoZSBjb25jYXRlbmF0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jc2N0bi1vcC1nZXQtYXNzZXJ0aW9uXG4gICAgICAgKiBSZXF1aXJlbWVudCBmb3IgU0hBLTI1NjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2NvbGxlY3RlZGNsaWVudGRhdGEtaGFzaC1vZi10aGUtc2VyaWFsaXplZC1jbGllbnQtZGF0YVxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93cyB0aGUgYXV0aGVudGljYXRvciB0byBvcHRpb25hbGx5IGRlY2xhcmUgdGhlIGNyZWRlbnRpYWwgaWRlbnRpZmllciB0aGV5IHVzZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS11c2VyaGFuZGxlXG4gICAgICAgKi9cbiAgICAgIHVzZXJIYW5kbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSBhdXRoZW50aWNhdG9ycycgYXR0YWNobWVudCBtb2RhbGl0aWVzLlxuICAgICAqIFJlbHlpbmcgUGFydGllcyB1c2UgdGhpcyB0byBleHByZXNzIGEgcHJlZmVycmVkIGF1dGhlbnRpY2F0b3IgYXR0YWNobWVudFxuICAgICAqIG1vZGFsaXR5IHdoZW4gY2FsbGluZyBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgdG8gY3JlYXRlIGEgY3JlZGVudGlhbC5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF1dGhlbnRpY2F0b3JhdHRhY2htZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0YWNobWVudDogXCJwbGF0Zm9ybVwiIHwgXCJjcm9zcy1wbGF0Zm9ybVwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGhlIGF1dGhlbnRpY2F0b3Inc1xuICAgICAqIHJlc3BvbnNlIHRvIGEgY2xpZW504oCZcyByZXF1ZXN0IGZvciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgcHVibGljIGtleVxuICAgICAqIGNyZWRlbnRpYWwuIEl0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgY3JlZGVudGlhbCB0aGF0IGNhbiBiZVxuICAgICAqIHVzZWQgdG8gaWRlbnRpZnkgaXQgZm9yIGxhdGVyIHVzZSwgYW5kIG1ldGFkYXRhIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlXG4gICAgICogV2ViQXV0aG4gUmVseWluZyBQYXJ0eSB0byBhc3Nlc3MgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgY3JlZGVudGlhbFxuICAgICAqIGR1cmluZyByZWdpc3RyYXRpb24uXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jaWZhY2UtYXV0aGVudGljYXRvcmF0dGVzdGF0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYW4gYXR0ZXN0YXRpb24gb2JqZWN0LCB3aGljaCBpcyBvcGFxdWUgdG8sIGFuZFxuICAgICAgICogY3J5cHRvZ3JhcGhpY2FsbHkgcHJvdGVjdGVkIGFnYWluc3QgdGFtcGVyaW5nIGJ5LCB0aGUgY2xpZW50LiBUaGVcbiAgICAgICAqIGF0dGVzdGF0aW9uIG9iamVjdCBjb250YWlucyBib3RoIGF1dGhlbnRpY2F0b3IgZGF0YSBhbmQgYW4gYXR0ZXN0YXRpb25cbiAgICAgICAqIHN0YXRlbWVudC4gVGhlIGZvcm1lciBjb250YWlucyB0aGUgQUFHVUlELCBhIHVuaXF1ZSBjcmVkZW50aWFsIElELCBhbmRcbiAgICAgICAqIHRoZSBjcmVkZW50aWFsIHB1YmxpYyBrZXkuIFRoZSBjb250ZW50cyBvZiB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGFyZVxuICAgICAgICogZGV0ZXJtaW5lZCBieSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGZvcm1hdCB1c2VkIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gSXQgYWxzbyBjb250YWlucyBhbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0aGF0IHRoZVxuICAgICAgICogUmVseWluZyBQYXJ0eSdzIHNlcnZlciByZXF1aXJlcyB0byB2YWxpZGF0ZSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50LFxuICAgICAgICogYXMgd2VsbCBhcyB0byBkZWNvZGUgYW5kIHZhbGlkYXRlIHRoZSBhdXRoZW50aWNhdG9yIGRhdGEgYWxvbmcgd2l0aCB0aGVcbiAgICAgICAqIEpTT04tY29tcGF0aWJsZSBzZXJpYWxpemF0aW9uIG9mIGNsaWVudCBkYXRhLiBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgICAgICAqIMKn4oCvNi41IEF0dGVzdGF0aW9uLCDCp+KArzYuNS40IEdlbmVyYXRpbmcgYW4gQXR0ZXN0YXRpb24gT2JqZWN0LCBhbmQgRmlndXJlXG4gICAgICAgKiA2LlxuICAgICAgICovXG4gICAgICBhdHRlc3RhdGlvbk9iamVjdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUsIGluaGVyaXRlZCBmcm9tIEF1dGhlbnRpY2F0b3JSZXNwb25zZSwgY29udGFpbnMgdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YSAoc2VlIMKn4oCvNi41IEF0dGVzdGF0aW9uKVxuICAgICAgICogcGFzc2VkIHRvIHRoZSBhdXRoZW50aWNhdG9yIGJ5IHRoZSBjbGllbnQgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhpc1xuICAgICAgICogY3JlZGVudGlhbC4gVGhlIGV4YWN0IEpTT04gc2VyaWFsaXphdGlvbiBNVVNUIGJlIHByZXNlcnZlZCwgYXMgdGhlIGhhc2hcbiAgICAgICAqIG9mIHRoZSBzZXJpYWxpemVkIGNsaWVudCBkYXRhIGhhcyBiZWVuIGNvbXB1dGVkIG92ZXIgaXQuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2ViQXV0aG4gUmVseWluZyBQYXJ0aWVzIG1heSB1c2UgdGhlIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVxuICAgICAqIGRpY3Rpb25hcnkgdG8gc3BlY2lmeSB0aGVpciByZXF1aXJlbWVudHMgcmVnYXJkaW5nIGF1dGhlbnRpY2F0b3JcbiAgICAgKiBhdHRyaWJ1dGVzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3RkZWYtYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhOiB7XG4gICAgICBhdXRoZW50aWNhdG9yQXR0YWNobWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckF0dGFjaG1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggV2ViQXV0aG4gTGV2ZWxcbiAgICAgICAqIDEgYW5kLCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCBpdHMgbmFtaW5nIHJldGFpbnMgdGhlIGRlcHJlY2F0ZWRcbiAgICAgICAqIOKAnHJlc2lkZW504oCdIHRlcm1pbm9sb2d5IGZvciBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIHNldCBpdCB0byB0cnVlIGlmLCBhbmQgb25seSBpZiwgcmVzaWRlbnRLZXkgaXMgc2V0IHRvIHJlcXVpcmVkLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhLXJlcXVpcmVyZXNpZGVudGtleVxuICAgICAgICovXG4gICAgICByZXF1aXJlUmVzaWRlbnRLZXk/OiBib29sZWFuO1xuICAgICAgcmVzaWRlbnRLZXk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc2lkZW50S2V5UmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgdXNlclZlcmlmaWNhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIG1heSBpbXBsZW1lbnQgdmFyaW91cyB0cmFuc3BvcnRzIGZvciBjb21tdW5pY2F0aW5nIHdpdGhcbiAgICAgKiBjbGllbnRzLiBUaGlzIGVudW1lcmF0aW9uIGRlZmluZXMgaGludHMgYXMgdG8gaG93IGNsaWVudHMgbWlnaHQgY29tbXVuaWNhdGVcbiAgICAgKiB3aXRoIGEgcGFydGljdWxhciBhdXRoZW50aWNhdG9yIGluIG9yZGVyIHRvIG9idGFpbiBhbiBhc3NlcnRpb24gZm9yIGFcbiAgICAgKiBzcGVjaWZpYyBjcmVkZW50aWFsLiBOb3RlIHRoYXQgdGhlc2UgaGludHMgcmVwcmVzZW50IHRoZSBXZWJBdXRobiBSZWx5aW5nXG4gICAgICogUGFydHkncyBiZXN0IGJlbGllZiBhcyB0byBob3cgYW4gYXV0aGVudGljYXRvciBtYXkgYmUgcmVhY2hlZC4gQSBSZWx5aW5nXG4gICAgICogUGFydHkgd2lsbCB0eXBpY2FsbHkgbGVhcm4gb2YgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIGZvciBhIHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsIHZpYSBnZXRUcmFuc3BvcnRzKCkuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9ydHJhbnNwb3J0XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OiBcInVzYlwiIHwgXCJuZmNcIiB8IFwiYmxlXCIgfCBcImludGVybmFsXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHNpZ24gYW4gQXZhbGFuY2hlIHRyYW5zYWN0aW9ucyAqL1xuICAgIEF2YVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbiB0byBzaWduLlxuICAgICAgICpcbiAgICAgICAqIEV4YW1wbGVzOlxuICAgICAgICogLSB7XCJQXCI6IHsgXCJBZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfcGVybWlzc2lvbmxlc3NfdmFsaWRhdG9yLnJzI0wxNCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkU3VibmV0VmFsaWRhdG9yXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2FkZF9zdWJuZXRfdmFsaWRhdG9yLnJzI0wyOSkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkVmFsaWRhdG9yXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2FkZF92YWxpZGF0b3IucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJDcmVhdGVDaGFpblwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9jcmVhdGVfY2hhaW4ucnMjTDgpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkNyZWF0ZVN1Ym5ldFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9jcmVhdGVfc3VibmV0LnJzI0w4KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJFeHBvcnRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvZXhwb3J0LnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiSW1wb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2ltcG9ydC5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlhcIjogeyBcIkJhc2VcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvYXZtL3R4cy9tb2QucnMjTDIxKSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJFeHBvcnRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvYXZtL3R4cy9leHBvcnQucnMjTDE2KSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJJbXBvcnRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvYXZtL3R4cy9pbXBvcnQucnMjTDE0KSB9fVxuICAgICAgICovXG4gICAgICB0eDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgQXZhU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gV3JhcHBlciBhcm91bmQgYSB6ZXJvaXppbmcgMzItYnl0ZSBmaXhlZC1zaXplIGFycmF5ICovXG4gICAgQjMyOiBzdHJpbmc7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQmFkR2F0ZXdheUVycm9yQ29kZTogXCJPQXV0aFByb3ZpZGVyRXJyb3JcIjtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBCYWRSZXF1ZXN0RXJyb3JDb2RlOlxuICAgICAgfCBcIkdlbmVyaWNCYWRSZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkQm9keVwiXG4gICAgICB8IFwiVG9rZW5SZXF1ZXN0RXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRNZmFSZWNlaXB0XCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5Q291bnRcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lOdW1BdXRoRmFjdG9yc1wiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeU51bUFsbG93ZWRBcHByb3ZlcnNcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lSZWR1bmRhbnRSdWxlXCJcbiAgICAgIHwgXCJJbnZhbGlkQ3JlYXRlS2V5Q291bnRcIlxuICAgICAgfCBcIk9yZ0ludml0ZUV4aXN0aW5nVXNlclwiXG4gICAgICB8IFwiT3JnTmFtZVRha2VuXCJcbiAgICAgIHwgXCJSb2xlTmFtZVRha2VuXCJcbiAgICAgIHwgXCJBZGRLZXlUb1JvbGVDb3VudFRvb0hpZ2hcIlxuICAgICAgfCBcIkludmFsaWRLZXlJZFwiXG4gICAgICB8IFwiSW52YWxpZEtleU1ldGFkYXRhTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWV0YWRhdGFcIlxuICAgICAgfCBcIkludmFsaWRLZXlNYXRlcmlhbElkXCJcbiAgICAgIHwgXCJLZXlOb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydERlcml2ZWRLZXlcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRQdWJsaWNLZXlJbnZhbGlkXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0SW5Qcm9ncmVzc1wiXG4gICAgICB8IFwiUm9sZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdE9yZ0lkTWlzc2luZ1wiXG4gICAgICB8IFwiSW52YWxpZE1mYVJlY2VpcHRJbnZhbGlkT3JnSWRcIlxuICAgICAgfCBcIk1mYVJlcXVlc3ROb3RGb3VuZFwiXG4gICAgICB8IFwiSW52YWxpZEtleVR5cGVcIlxuICAgICAgfCBcIkludmFsaWRLZXlNYXRlcmlhbFwiXG4gICAgICB8IFwiSW52YWxpZEhleFZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFzZTMyVmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRCYXNlNThWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEZvcmtWZXJzaW9uTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoQWRkcmVzc1wiXG4gICAgICB8IFwiSW52YWxpZFN0ZWxsYXJBZGRyZXNzXCJcbiAgICAgIHwgXCJJbnZhbGlkT3JnTmFtZU9ySWRcIlxuICAgICAgfCBcIkludmFsaWRTdGFrZURlcG9zaXRcIlxuICAgICAgfCBcIkludmFsaWRCbG9iU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRTb2xhbmFTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZEVpcDcxMlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRXZtU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRFdGgyU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWREZXJpdmVLZXlSZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkU3Rha2luZ0Ftb3VudFwiXG4gICAgICB8IFwiQ3VzdG9tU3Rha2luZ0Ftb3VudE5vdEFsbG93ZWRGb3JXcmFwcGVyQ29udHJhY3RcIlxuICAgICAgfCBcIkludmFsaWRVbnN0YWtlUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZENyZWF0ZVVzZXJSZXF1ZXN0XCJcbiAgICAgIHwgXCJVc2VyQWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiVXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJQb2xpY3lSdWxlS2V5TWlzbWF0Y2hcIlxuICAgICAgfCBcIkVtcHR5U2NvcGVzXCJcbiAgICAgIHwgXCJJbnZhbGlkU2NvcGVzRm9yUm9sZVNlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRMaWZldGltZVwiXG4gICAgICB8IFwiTm9TaW5nbGVLZXlGb3JVc2VyXCJcbiAgICAgIHwgXCJJbnZhbGlkT3JnUG9saWN5UnVsZVwiXG4gICAgICB8IFwiU291cmNlSXBBbGxvd2xpc3RFbXB0eVwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1BvbGljeVJlcGVhdGVkUnVsZVwiXG4gICAgICB8IFwiQXZhU2lnbkhhc2hFcnJvclwiXG4gICAgICB8IFwiQXZhU2lnbkVycm9yXCJcbiAgICAgIHwgXCJCdGNTZWd3aXRIYXNoRXJyb3JcIlxuICAgICAgfCBcIkJ0Y1NpZ25FcnJvclwiXG4gICAgICB8IFwiRWlwNzEyU2lnbkVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkTWVtYmVyUm9sZUluVXNlckFkZFwiXG4gICAgICB8IFwiVGhpcmRQYXJ0eVVzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJUaGlyZFBhcnR5VXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJEZWxldGVPaWRjVXNlckVycm9yXCJcbiAgICAgIHwgXCJTZXNzaW9uUm9sZU1pc21hdGNoXCJcbiAgICAgIHwgXCJJbnZhbGlkT2lkY1Rva2VuXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyVW5zdXBwb3J0ZWRcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyTm9BcHBsaWNhYmxlSndrXCJcbiAgICAgIHwgXCJGaWRvS2V5QWxyZWFkeVJlZ2lzdGVyZWRcIlxuICAgICAgfCBcIkZpZG9LZXlTaWduQ291bnRUb29Mb3dcIlxuICAgICAgfCBcIkZpZG9WZXJpZmljYXRpb25GYWlsZWRcIlxuICAgICAgfCBcIkZpZG9DaGFsbGVuZ2VNZmFNaXNtYXRjaFwiXG4gICAgICB8IFwiVW5zdXBwb3J0ZWRMZWdhY3lDb2duaXRvU2Vzc2lvblwiXG4gICAgICB8IFwiSW52YWxpZElkZW50aXR5UHJvb2ZcIlxuICAgICAgfCBcIlBhZ2luYXRpb25EYXRhRXhwaXJlZFwiXG4gICAgICB8IFwiRXhpc3RpbmdLZXlzVmlvbGF0ZUV4Y2x1c2l2ZUtleUFjY2Vzc1wiXG4gICAgICB8IFwiRXhwb3J0RGVsYXlUb29TaG9ydFwiXG4gICAgICB8IFwiRXhwb3J0V2luZG93VG9vTG9uZ1wiXG4gICAgICB8IFwiSW52YWxpZFRvdHBGYWlsdXJlTGltaXRcIlxuICAgICAgfCBcIkludmFsaWRFaXAxOTFTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiQ2Fubm90UmVzZW5kVXNlckludml0YXRpb25cIlxuICAgICAgfCBcIkludmFsaWROb3RpZmljYXRpb25FbmRwb2ludENvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkTm90aWZpY2F0aW9uVXJsUHJvdG9jb2xcIlxuICAgICAgfCBcIkVtcHR5T25lT2ZPcmdFdmVudEZpbHRlclwiO1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwibWVzc2FnZV9iYXNlNjRcIjogXCJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYb3hNak0wTlRZS1wiXG4gICAgICogfVxuICAgICAqL1xuICAgIEJsb2JTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJsb2IgdG8gc2lnbiwgZW5jb2RlZCBhcyBhIGJhc2U2NCBzdHJpbmcuXG4gICAgICAgKlxuICAgICAgICogTm90ZSB0aGF0IGNlcnRhaW4gc2lnbmluZyBrZXlzIGltcG9zZSBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cyBvbiB0aGUgY29udGVudHMgb2ZcbiAgICAgICAqIHRoZSBtZXNzYWdlLiBGb3IgZXhhbXBsZSwgU2VjcDI1NmsxIGtleXMgcmVxdWlyZSB0aGF0IHRoZSBtZXNzYWdlIGlzIDMyIGJ5dGVzIGxvbmcuXG4gICAgICAgKi9cbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBCbG9iU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEJ0Y1NpZ2hhc2hUeXBlOlxuICAgICAgfCBcIkFsbFwiXG4gICAgICB8IFwiTm9uZVwiXG4gICAgICB8IFwiU2luZ2xlXCJcbiAgICAgIHwgXCJBbGxQbHVzQW55b25lQ2FuUGF5XCJcbiAgICAgIHwgXCJOb25lUGx1c0FueW9uZUNhblBheVwiXG4gICAgICB8IFwiU2luZ2xlUGx1c0FueW9uZUNhblBheVwiO1xuICAgIEJ0Y1NpZ25SZXF1ZXN0OiB7XG4gICAgICBzaWdfa2luZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWduYXR1cmVLaW5kXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYml0Y29pbiB0cmFuc2FjdGlvbiB0byBzaWduICovXG4gICAgICB0eDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgQnRjU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlIGluIGNvbXBhY3QgZm9ybWF0LlxuICAgICAgICogQGV4YW1wbGUgMHg0NTRhZWYyN2MyMWRmN2RkOGY1MzdkYzg2OWY0Y2Q2NTI4NmNlMjM5YTUyZDM2NDcwZjRkODViZTg1YTg5MWIwMjc4OWU1ZmZkODU2MGIzMmE5ODExMGU1ZDAwOTY4MDJlNGMxNDE0NWNmNmM0NGYxMGE3NjhjODc3NTVlYWE0ODAwXG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgQnRjU2lnbmF0dXJlS2luZDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZWdyZWdhdGVkIFdpdG5lc3MgKi9cbiAgICAgIFNlZ3dpdDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uIGlucHV0IGluZGV4XG4gICAgICAgICAqIEBleGFtcGxlIDBcbiAgICAgICAgICovXG4gICAgICAgIGlucHV0X2luZGV4OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2NyaXB0XG4gICAgICAgICAqIEBleGFtcGxlIDB4NzZhOTE0NzkwOTE5NzIxODZjNDQ5ZWIxZGVkMjJiNzhlNDBkMDA5YmRmMDA4OTg4YWNcbiAgICAgICAgICovXG4gICAgICAgIHNjcmlwdF9jb2RlOiBzdHJpbmc7XG4gICAgICAgIHNpZ2hhc2hfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWdoYXNoVHlwZVwiXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEFtb3VudCBpbiBzYXRvc2hpc1xuICAgICAgICAgKiBAZXhhbXBsZSAxMDAwMDAwXG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIGhvdyB0byBkZXJpdmUgYSBXZWJBdXRobiBjaGFsbGVuZ2UgdmFsdWUuICovXG4gICAgQ2hhbGxlbmdlUGllY2VzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGJhc2U2NHVybCBlbmNvZGluZyBvZiBVVEY4IEpTT04uIFRoZSBkYXRhIGluIHRoYXQgSlNPTiBpcyBlbmRwb2ludCBzcGVjaWZpYywgYW5kIGRlc2NyaWJlcyB3aGF0IHRoaXMgRklETyBjaGFsbGVuZ2Ugd2lsbCBiZSB1c2VkIGZvci5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIGNhbiB1c2UgYHByZWltYWdlYCBhbG9uZyB3aXRoIGByYW5kb21fc2VlZGAgdG8gcmVjb25zdHJ1Y3QgdGhlIGNoYWxsZW5nZSBsaWtlIHNvOlxuICAgICAgICpcbiAgICAgICAqIGBjaGFsbGVuZ2UgPSBITUFDLVNIQTI1NihrZXk9cmFuZG9tX3NlZWQsIG1lc3NhZ2U9cHJlaW1hZ2UpYFxuICAgICAgICovXG4gICAgICBwcmVpbWFnZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJhbmRvbSBzZWVkIHRoYXQgcHJldmVudHMgcmVwbGF5IGF0dGFja3MgKi9cbiAgICAgIHJhbmRvbV9zZWVkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBpbmZvcm1hdGlvbiBzZW50IHRvIHRoZSBjbGllbnQuXG4gICAgICogVGhpcyBzdHJ1Y3Qgd29ya3MgaW4gdGFuZGVtIHdpdGggaXRzIHNlcnZlci1zaWRlIGNvdW50ZXJwYXJ0IFtgU2Vzc2lvbkRhdGFgXS5cbiAgICAgKi9cbiAgICBDbGllbnRTZXNzaW9uSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0byB1c2UgZm9yIGF1dGhvcml6YXRpb24uICovXG4gICAgICBhdXRoX3Rva2VuOiBzdHJpbmc7XG4gICAgICBhdXRoX3Rva2VuX2V4cDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRXBvY2ggYXQgd2hpY2ggdGhlIHRva2VuIHdhcyBsYXN0IHJlZnJlc2hlZFxuICAgICAgICovXG4gICAgICBlcG9jaDogbnVtYmVyO1xuICAgICAgZXBvY2hfdG9rZW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQjMyXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0byB1c2UgZm9yIHJlZnJlc2hpbmcgdGhlIGAoYXV0aCwgcmVmcmVzaClgIHRva2VuIHBhaXIgKi9cbiAgICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICAgIHJlZnJlc2hfdG9rZW5fZXhwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQgKi9cbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICB9O1xuICAgIENvbmZpZ3VyZWRNZmE6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0eXBlOiBcInRvdHBcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBjcmVkZW50aWFsIGlkICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBnaXZlbiB0byB0aGUga2V5ICovXG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHR5cGU6IFwiZmlkb1wiO1xuICAgICAgICB9O1xuICAgIENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIGF0dGVzdGF0aW9uIGRvY3VtZW50IGZyb20gYSBzZWN1cmUgZW5jbGF2ZSwgaW5jbHVkaW5nIGFuXG4gICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfYXR0ZXN0YXRpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgKiBzZWNyZXRzIGF0dGVzdGluZyB0byB0aGVpciBnZW5lcmF0aW9uIGluc2lkZSBhIHNlY3VyZSBlbmNsYXZlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgQ3JlYXRlS2V5UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzXG4gICAgICAgKiBAZXhhbXBsZSA1XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBrZXlzIHRvIGNyZWF0ZVxuICAgICAgICogQGV4YW1wbGUgMVxuICAgICAgICovXG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93cyB1c2VycyB0byBzcGVjaWZ5IGEgdXNlciBvdGhlciB0aGFuIHRoZW1zZWx2ZXMgdG8gcmVjZWl2ZSB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBDcmVhdGVLZXlSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mbyBhYm91dCB0aGUgY3JlYXRlZCBrZXlzICovXG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgY3JlYXRlIHJvbGUgcmVxdWVzdCBib2R5ICovXG4gICAgQ3JlYXRlUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ld2x5IGNyZWF0ZWQgcm9sZSBpbmZvcm1hdGlvbiAqL1xuICAgIENyZWF0ZVJvbGVSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZVxuICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAqL1xuICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQ3JlYXRlU2Vzc2lvblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHNlc3Npb24ncyBwdXJwb3NlXG4gICAgICAgKiBAZXhhbXBsZSBNYW5hZ2Uga2V5cyBvbiBzZXJ2ZXIgZm9vLmJhclxuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIm1hbmFnZTprZXk6KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3Blczogc3RyaW5nW107XG4gICAgfTtcbiAgICBDcmVhdGVUb2tlblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHB1cnBvc2Ugb2YgdGhlIGtleVxuICAgICAgICogQGV4YW1wbGUgVmFsaWRhdG9yIFNpZ25pbmdcbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgd2hhdCBjYXBhYmlsaXRpZXMgdGhpcyBzZXNzaW9uIHdpbGwgaGF2ZS4gQnkgZGVmYXVsdCwgaXQgaGFzIGFsbFxuICAgICAgICogc2lnbmluZyBjYXBhYmlsaXRpZXMsIGkuZS4sIGp1c3QgdGhlICdzaWduOionIHNjb3BlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcInNpZ246KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3Blcz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbiBleHRlbmRlZCBmb3JtIG9mIGBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zYCB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGRlcml2ZSB0aGUgV2ViQXV0aG4gY2hhbGxlbmdlXG4gICAgICogZnJvbSBhIHN0cnVjdHVyZWQgcHJlaW1hZ2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgd2VidWF0aG4gc2lnbmF0dXJlIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGEgc3BlY2lmaWMgcHVycG9zZVxuICAgICAqL1xuICAgIENyZWF0aW9uT3B0aW9uc1dpdGhIYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbiAgICB9O1xuICAgIEN1YmVTaWduZXJVc2VySW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBjb25maWd1cmVkX21mYTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb25maWd1cmVkTWZhXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNldCBvbmNlIHRoZSB1c2VyIHN1Y2Nlc3NmdWxseSBsb2dzIGludG8gQ3ViZVNpZ25lciAqL1xuICAgICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGh1bWFuIG5hbWUgZm9yIHRoZSB1c2VyICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQ3ViZVNpZ25lcidzIHVzZXIgaWRlbnRpZmllciAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIHByb2R1Y2VkIGJ5IGEgc3VjY2Vzc2Z1bCBkZXBvc2l0XG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJjaGFpbl9pZFwiOiA1LFxuICAgICAqICAgXCJkZXBvc2l0X3R4blwiOiB7XG4gICAgICogICAgIFwiZGF0YVwiOiBcIjB4Li4uXCIsXG4gICAgICogICAgIFwidG9cIjogXCIweGZmNTBlZDNkMGVjMDNhYzAxZDRjNzlhYWQ3NDkyOGJmZjQ4YTdiMmJcIixcbiAgICAgKiAgICAgXCJ2YWx1ZVwiOiBcIjB4MWJjMTZkNjc0ZWM4MDAwMDBcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwibmV3X3ZhbGlkYXRvcl9wa1wiOiBcIjk3MDBmYmI4YzkwNjk0MjQ0MmMyYTViM2FkNzQ5OGYyN2FlZGRhMjUzNzg2YTZmYmFhOGZlZjQ3ZmI3YWYyMzRlNTBjZjJjY2U4MTVhNTUzMDg3OTkyYWU1NjVkNDhkYVwiXG4gICAgICogfVxuICAgICAqL1xuICAgIERlcG9zaXRUeG46IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIENoYWluIElEIGZvciB3aGljaCB0aGUgZGVwb3NpdCB0cmFuc2FjdGlvbiB3YXMgY3JlYXRlZFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVwb3NpdCB0cmFuc2FjdGlvbi4gSW5jbHVkZXMgb25seSBgdG9gLCBgdmFsdWVgLCBhbmQgYGRhdGFgIGZpZWxkcy4gKi9cbiAgICAgIGRlcG9zaXRfdHhuOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBjb21wcmVzc2VkIGZvcm0gb2YgdGhlIG5ldyB2YWxpZGF0b3IgQkxTIHB1YmxpYyBrZXkgKi9cbiAgICAgIG5ld192YWxpZGF0b3JfcGs6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiBkZXBvc2l0IHRvIHBlcmZvcm1cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIERlcG9zaXRUeXBlOiBcIkNhbm9uaWNhbFwiIHwgXCJXcmFwcGVyXCI7XG4gICAgRGVyaXZlS2V5UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT25lIG9yIG1vcmUgZGVyaXZhdGlvbiBwYXRocyBmcm9tIHdoaWNoIHRvIGRlcml2ZSBrZXlzLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIm0vNDQnLzYwJy8wJy8wLzBcIixcbiAgICAgICAqICAgXCJtLzQ0Jy85MDAwJy8wJy8wLzBcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZ1tdO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1hdGVyaWFsLWlkIG9mIHRoZSBtbmVtb25pYyB0byB1c2UgZm9yIGRlcml2YXRpb25cbiAgICAgICAqIEBleGFtcGxlIDB4OWYwN2JlODJkOTM0ZmNiNWQwZjc1ZGQyNGMyZGZlYThhODVhNGQwYzI4OWQ1ODgyOGIzNTM3ZmFlMjRkMzJiOFxuICAgICAgICovXG4gICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgRWlwMTkxT3I3MTJTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHNpZ25hdHVyZSBjb21wcmlzaW5nIDY1IGJ5dGVzIGluIHRoZSBmb3JtYXQgcmVxdWlyZWRcbiAgICAgICAqIGJ5IGVjcmVjb3ZlcjogMzItYnl0ZSByLCAzMi1ieXRlIHMsIGFuZCBvbmUtYnl0ZSByZWNvdmVyeS1pZCB2XG4gICAgICAgKiB3aGljaCBpcyBlaXRoZXIgMjcgb3IgMjguXG4gICAgICAgKiBAZXhhbXBsZSAweDQzNTVjNDdkNjM5MjRlOGE3MmU1MDliNjUwMjkwNTJlYjZjMjk5ZDUzYTA0ZTE2N2M1Nzc1ZmQ0NjY3NTFjOWQwNzI5OTkzNmQzMDRjMTUzZjY0NDNkZmEwNWY0MGZmMDA3ZDcyOTExYjZmNzIzMDdmOTk2MjMxNjA1YjkxNTYyMWNcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBFaXAxOTFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRUlQLTE5MSBkYXRhIHRvIHNpZ24gYXMgaGV4LWVuY29kZWQgYnl0ZXMuXG4gICAgICAgKiBAZXhhbXBsZSAweGRlYWRiZWVmMTNjMGZmZWVcbiAgICAgICAqL1xuICAgICAgZGF0YTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJjaGFpbl9pZFwiOiAxMzM3LFxuICAgICAqICAgXCJ0eXBlZF9kYXRhXCI6IHtcbiAgICAgKiAgICAgXCJkb21haW5cIjoge1xuICAgICAqICAgICAgIFwiY2hhaW5JZFwiOiAxMzM3LFxuICAgICAqICAgICAgIFwibmFtZVwiOiBcIkV0aGVyIE1haWxcIixcbiAgICAgKiAgICAgICBcInZlcmlmeWluZ0NvbnRyYWN0XCI6IFwiMHhDY0NDY2NjY0NDQ0NjQ0NDQ0NDY0NjQ2NjQ2NDQ0NjQ2NjY2NjY2NDXCIsXG4gICAgICogICAgICAgXCJ2ZXJzaW9uXCI6IFwiMVwiXG4gICAgICogICAgIH0sXG4gICAgICogICAgIFwibWVzc2FnZVwiOiB7XG4gICAgICogICAgICAgXCJjb250ZW50c1wiOiBcIkhlbGxvLCBCb2IhXCIsXG4gICAgICogICAgICAgXCJmcm9tXCI6IHtcbiAgICAgKiAgICAgICAgIFwibmFtZVwiOiBcIkNvd1wiLFxuICAgICAqICAgICAgICAgXCJ3YWxsZXRzXCI6IFtcbiAgICAgKiAgICAgICAgICAgXCIweENEMmEzZDlGOTM4RTEzQ0Q5NDdFYzA1QWJDN0ZFNzM0RGY4REQ4MjZcIixcbiAgICAgKiAgICAgICAgICAgXCIweERlYURiZWVmZEVBZGJlZWZkRWFkYkVFRmRlYWRiZUVGZEVhRGJlZUZcIlxuICAgICAqICAgICAgICAgXVxuICAgICAqICAgICAgIH0sXG4gICAgICogICAgICAgXCJ0b1wiOiB7XG4gICAgICogICAgICAgICBcIm5hbWVcIjogXCJCb2JcIixcbiAgICAgKiAgICAgICAgIFwid2FsbGV0c1wiOiBbXG4gICAgICogICAgICAgICAgIFwiMHhiQmJCQkJCYmJCQkJiYmJCYmJCYmJiYkJCYkJiYmJiQmJCYmJCQmJCXCIsXG4gICAgICogICAgICAgICAgIFwiMHhCMEJkYUJlYTU3QjBCREFCZUE1N2IwYmRBQkVBNTdiMEJEYWJFYTU3XCIsXG4gICAgICogICAgICAgICAgIFwiMHhCMEIwYjBiMGIwYjBCMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCJcbiAgICAgKiAgICAgICAgIF1cbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIH0sXG4gICAgICogICAgIFwicHJpbWFyeVR5cGVcIjogXCJNYWlsXCIsXG4gICAgICogICAgIFwidHlwZXNcIjoge1xuICAgICAqICAgICAgIFwiRUlQNzEyRG9tYWluXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwidmVyc2lvblwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwiY2hhaW5JZFwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJ1aW50MjU2XCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInZlcmlmeWluZ0NvbnRyYWN0XCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcImFkZHJlc3NcIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF0sXG4gICAgICogICAgICAgXCJHcm91cFwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm1lbWJlcnNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiUGVyc29uW11cIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF0sXG4gICAgICogICAgICAgXCJNYWlsXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwiZnJvbVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25cIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwidG9cIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiUGVyc29uXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcImNvbnRlbnRzXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIlBlcnNvblwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIndhbGxldHNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiYWRkcmVzc1tdXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdXG4gICAgICogICAgIH1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgRWlwNzEyU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbi1pZCB0byB3aGljaCB0aGlzIHR5cGVkIGRhdGEgd2lsbCBiZSBzZW50XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVJUC03MTIgdHlwZWQgZGF0YS4gUmVmZXIgdG8gdGhlIEpTT04gc2NoZW1hIGRlZmluZWQgaW4gRUlQLTcxMi4gKi9cbiAgICAgIHR5cGVkX2RhdGE6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIC8qKiBAZGVmYXVsdCBudWxsICovXG4gICAgRW1wdHk6IHVua25vd247XG4gICAgRW1wdHlJbXBsOiB7XG4gICAgICBzdGF0dXM6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFcG9jaCBpcyBhIHF1b3RlZCBgdWludDY0YC5cbiAgICAgKiBAZXhhbXBsZSAyNTZcbiAgICAgKi9cbiAgICBFcG9jaDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZVRpbWUgbWVhc3VyZWQgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLlxuICAgICAqIEEgd3JhcHBlciB0eXBlIGZvciBzZXJpYWxpemF0aW9uIHRoYXQgZW5jb2RlcyBhIFtgU3lzdGVtVGltZWBdIGFzIGEgW2B1NjRgXVxuICAgICAqIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgW2BTeXN0ZW1UaW1lOjpVTklYX0VQT0NIYF0uXG4gICAgICovXG4gICAgRXBvY2hEYXRlVGltZTogbnVtYmVyO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN0cnVjdHVyZSBvZiBFcnJvclJlc3BvbnNlIG11c3QgbWF0Y2ggdGhlIHJlc3BvbnNlIHRlbXBsYXRlIHRoYXQgQVdTIHVzZXMgKi9cbiAgICBFcnJvclJlc3BvbnNlOiB7XG4gICAgICBhY2NlcHRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRWYWx1ZVwiXSB8IG51bGw7XG4gICAgICBlcnJvcl9jb2RlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lckVycm9yQ29kZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSAqL1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCByZXF1ZXN0IGlkZW50aWZpZXIgKi9cbiAgICAgIHJlcXVlc3RfaWQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDQzMTEzLFxuICAgICAqICAgXCJ0eFwiOiB7XG4gICAgICogICAgIFwiY2hhaW5faWRcIjogXCIweGE4NjlcIixcbiAgICAgKiAgICAgXCJnYXNcIjogXCIweDYxYTgwXCIsXG4gICAgICogICAgIFwibWF4RmVlUGVyR2FzXCI6IFwiMHg5NTAyRjkwMFwiLFxuICAgICAqICAgICBcIm1heFByaW9yaXR5RmVlUGVyR2FzXCI6IFwiMHg1MFwiLFxuICAgICAqICAgICBcIm5vbmNlXCI6IFwiMHhiXCIsXG4gICAgICogICAgIFwidG9cIjogXCIweGYwMGJhMTJmMDAwMDAwMDBiNDEyMTIwMDAwMGYwMGMwZmZlZWYwMGRcIixcbiAgICAgKiAgICAgXCJ0eXBlXCI6IFwiMHgwMlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxMDAwMDAwMDAwMFwiXG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqL1xuICAgIEV0aDFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNoYWluIGlkIHRvIHNldCBpbiB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFSVAtMjcxOCB0eXBlZCB0cmFuc2FjdGlvbiAoc2VlIHRoZSBbZXRoZXJzLXJzXG4gICAgICAgKiBpbnRlcmZhY2VdKGh0dHBzOi8vZG9jcy5ycy9ldGhlcnMvbGF0ZXN0L2V0aGVycy90eXBlcy9zdHJ1Y3QuRWlwMTU1OVRyYW5zYWN0aW9uUmVxdWVzdC5odG1sKSkgdHlwZXMsIGluY2x1ZGluZyBFSVAtMTU1OSB0cmFuc2FjdGlvbnMgKGB7IFwidHlwZVwiOiBcIjB4MDJcIiAuLi4gfWApLCBhbmQgbGVnYWN5XG4gICAgICAgKiB0cmFuc2FjdGlvbnMgKGB7IFwidHlwZVwiOiBcIjB4MDBcIiAuLi4gfWApLiBBbGwgdmFsdWVzIGluIHRoZSB0cmFuc2FjdGlvbiBhcmUgZXhwZWN0ZWRcbiAgICAgICAqIHRvIGJlICgweC1wcmVmaXhlZCBvciBub3QpIGhleCBzdHJpbmdzIG9yIGJ5dGUgYXJyYXlzLlxuICAgICAgICovXG4gICAgICB0eDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgRXRoMVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgUkxQIGVuY29kaW5nIG9mIHRoZSB0cmFuc2FjdGlvbiBhbmQgaXRzIHNpZ25hdHVyZVxuICAgICAgICogQGV4YW1wbGUgMHgyMjg5NTExODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyMDFkNTg2NTZiMGUyMmFhYTY4ZmRjNjkyZGI0MTk3OTA5OGMzODg2ZWQzMzAxNWQ3NDY3ZGU5MjExNjA5Y2RhYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwOGIwYzI5MDAzMjRkM2ZmOWFkZmJhN2ZkZmU1YWYzZjliMmNkYmVlZjdiMjgwNDM3YmJmMWIxYzU5YTA5M2Q2MTVhZmUzZTVkZmVkOTYyMmI1NDBjZGQ5YjQ5YjNjNWFkMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDkwMTFhZGJjYzNiYzljMDMwN2JiMDdmMzdkZGExYTFhOWM2OWQyZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA5MDNkYjg1MjU2NzRiOGU3OTA0ZjliN2Q3ZDllYzU1YTBhNDJkMzNjZjU4YmUyNTQ2OWIwYzIxYmJiNmQwNjE3MmJjNWJiNWZkMWFlZDhlNGYzNTkzNjk2ODk1ODExNmIwNjE5NTUzYzJjYjFjNTJlNzMyMzA3NGM2ZjhlYjNkNWE3MDc0ZmM2NTgwMTQ4ZGY5MDc4MzdmYTNiMTY0YWQ3ZmJjMjI4OGRhZDFlOGE1YjAyMTA5NWI1N2M4YTM2ZDRcbiAgICAgICAqL1xuICAgICAgcmxwX3NpZ25lZF90eDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJldGgyX3NpZ25fcmVxdWVzdFwiOiB7XG4gICAgICogICAgIFwiYWdncmVnYXRpb25fc2xvdFwiOiB7XG4gICAgICogICAgICAgXCJzbG90XCI6IFwiMzZcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcImZvcmtfaW5mb1wiOiB7XG4gICAgICogICAgICAgXCJmb3JrXCI6IHtcbiAgICAgKiAgICAgICAgIFwiY3VycmVudF92ZXJzaW9uXCI6IFwiMHg0MjQyNDI0MlwiLFxuICAgICAqICAgICAgICAgXCJlcG9jaFwiOiBcIjBcIixcbiAgICAgKiAgICAgICAgIFwicHJldmlvdXNfdmVyc2lvblwiOiBcIjB4NDI0MjQyNDJcIlxuICAgICAqICAgICAgIH0sXG4gICAgICogICAgICAgXCJnZW5lc2lzX3ZhbGlkYXRvcnNfcm9vdFwiOiBcIjB4OWQxM2Q2MTIxMmMwNjdlMDJjZThlNjA4YTcwMDdlMmMzYjAyNTcxZTllNmYyN2ZmNDVkZmE5MWJmMjdjODcwYlwiXG4gICAgICogICAgIH0sXG4gICAgICogICAgIFwic2lnbmluZ1Jvb3RcIjogXCIweDljNTdlNzdjNDk2NTcyNzU0MmI5MzM3ZGY2NzU2Zjk0ODQ2NGJjYTM4NTliZWE2ZWQzYzBlYzY2MDBkODk4MmFcIixcbiAgICAgKiAgICAgXCJ0eXBlXCI6IFwiQUdHUkVHQVRJT05fU0xPVFwiXG4gICAgICogICB9LFxuICAgICAqICAgXCJuZXR3b3JrXCI6IFwibWFpbm5ldFwiXG4gICAgICogfVxuICAgICAqL1xuICAgIEV0aDJTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3Vic2V0IG9mIHRoZSBXZWIzU2lnbmVyIEV0aDIgQkxTIHNpZ25pbmcgcmVxdWVzdCB3aG9zZSBzY2hlbWEgaXMgZGVmaW5lZFxuICAgICAgICogW2hlcmVdKGh0dHBzOi8vY29uc2Vuc3lzLmdpdGh1Yi5pby93ZWIzc2lnbmVyL3dlYjNzaWduZXItZXRoMi5odG1sI3RhZy9TaWduaW5nL29wZXJhdGlvbi9FVEgyX1NJR04pLlxuICAgICAgICogV2UgaGFuZGxlIGRlcG9zaXRzIGFuZCB2b2x1bnRhcnkgZXhpdHMgc2VwYXJhdGVseS5cbiAgICAgICAqL1xuICAgICAgZXRoMl9zaWduX3JlcXVlc3Q6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV0d29ya1wiXTtcbiAgICB9O1xuICAgIEV0aDJTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhleCBlbmNvZGVkIHNpZ25hdHVyZSBwcmVmaXhlZCB3aXRoIDB4IGUuZy4gXCIweDAwMDAuLi5cIlxuICAgICAgICogQGV4YW1wbGUgMHhiNGYyZWY5ZDEyYTU0ZTFmNTY5NTk2YzA3Yzk3ZDZkNzMwNTM1YjZmZmMwZDI4Nzc2MWRjNzgxMDNhODYzMjY3ODI0NzFhMDRjNzVjZTdhNmZhZWEwOGNhOWE0YTA4MzAwMzFjZGNiODkzZGE4NzExZDU0YWEyMjYxOWYxYTdlNzFiODE4NWRkZjRjNmJmZDliYWJiZDczNTk2MGUzNWU1NmJkNmVlYjg5NjI1YjA0ODUwZTdhOWVmODg0NmU1NDlcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBFdm1UeERlcG9zaXRFcnJvckNvZGU6XG4gICAgICB8IFwiRXZtVHhEZXBvc2l0UmVjZWl2ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0RW1wdHlEYXRhXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRFbXB0eUNoYWluSWRcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEVtcHR5UmVjZWl2ZXJcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZERhdGFMZW5ndGhcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdE5vQWJpXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXROb0RlcG9zaXRGdW5jdGlvblwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZEZ1bmN0aW9uTmFtZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFZhbGlkYXRvcktleVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0SW52YWxpZFZhbGlkYXRvcktleVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0TWlzc2luZ0RlcG9zaXRBcmdcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFdyb25nRGVwb3NpdEFyZ1R5cGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFdyb25nVmFsaWRhdG9yQXJnVmFsdWVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFZhbGlkYXRvcktleU5vdEluUm9sZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFdpdGhkcmF3YWxDcmVkZW50aWFsc1wiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5yZXNvbHZlZFJvbGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEludmFsaWREZXBvc2l0RW5jb2RpbmdcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gYW5zd2VyIGEgZmlkbyBjaGFsbGVuZ2UgKi9cbiAgICBGaWRvQXNzZXJ0QW5zd2VyOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlIHRoYXQgd2FzIHJldHVybmVkIGZyb20gdGhlIFBPU1QgZW5kcG9pbnQgKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgY3JlZGVudGlhbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsXCJdO1xuICAgIH07XG4gICAgRmlkb0Fzc2VydENoYWxsZW5nZTogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG4gICAgfSkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VudCBieSB0aGUgc2VydmVyIHRvIHRoZSBjbGllbnQuIENvbnRhaW5zIHRoZSBjaGFsbGVuZ2UgZGF0YSB0aGF0IG11c3QgYmVcbiAgICAgKiB1c2VkIHRvIGdlbmVyYXRlIGEgbmV3IGNyZWRlbnRpYWxcbiAgICAgKi9cbiAgICBGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2U6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZWNsYXJlcyBpbnRlbnQgdG8gcmVnaXN0ZXIgYSBuZXcgRklETyBrZXkgKi9cbiAgICBGaWRvQ3JlYXRlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgbmV3IGZpZG8gY3JlZGVudGlhbFxuICAgICAgICogQGV4YW1wbGUgV29yayBZdWJpa2V5XG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEZvcmJpZGRlbkVycm9yQ29kZTpcbiAgICAgIHwgXCJGaWRvUmVxdWlyZWRUb1JlbW92ZVRvdHBcIlxuICAgICAgfCBcIk1mYUNoYWxsZW5nZUV4cGlyZWRcIlxuICAgICAgfCBcIkNoYWluSWROb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJJbnZhbGlkT3JnXCJcbiAgICAgIHwgXCJTZXNzaW9uRm9yV3JvbmdPcmdcIlxuICAgICAgfCBcIk9yZ0Rpc2FibGVkXCJcbiAgICAgIHwgXCJPcmdOb3RGb3VuZFwiXG4gICAgICB8IFwiT3JnV2l0aG91dE93bmVyXCJcbiAgICAgIHwgXCJPcnBoYW5lZFVzZXJcIlxuICAgICAgfCBcIk9pZGNVc2VyTm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJOb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlck5vdE9yZ093bmVyXCJcbiAgICAgIHwgXCJVc2VyTm90S2V5T3duZXJcIlxuICAgICAgfCBcIkludmFsaWRSb2xlXCJcbiAgICAgIHwgXCJEaXNhYmxlZFJvbGVcIlxuICAgICAgfCBcIktleURpc2FibGVkXCJcbiAgICAgIHwgXCJSb2xlTm90SW5PcmdcIlxuICAgICAgfCBcIktleU5vdEluUm9sZVwiXG4gICAgICB8IFwiS2V5Tm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0Tm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0SW52YWxpZFwiXG4gICAgICB8IFwiVXNlck5vdE9yaWdpbmFsS2V5T3duZXJcIlxuICAgICAgfCBcIlVzZXJOb3RJblJvbGVcIlxuICAgICAgfCBcIk11c3RCZUZ1bGxNZW1iZXJcIlxuICAgICAgfCBcIlNlc3Npb25FeHBpcmVkXCJcbiAgICAgIHwgXCJTZXNzaW9uUmV2b2tlZFwiXG4gICAgICB8IFwiRXhwZWN0ZWRVc2VyU2Vzc2lvblwiXG4gICAgICB8IFwiU2Vzc2lvblJvbGVDaGFuZ2VkXCJcbiAgICAgIHwgXCJTY29wZWROYW1lTm90Rm91bmRcIlxuICAgICAgfCBcIlNlc3Npb25JbnZhbGlkRXBvY2hUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkludmFsaWRSZWZyZXNoVG9rZW5cIlxuICAgICAgfCBcIlNlc3Npb25SZWZyZXNoVG9rZW5FeHBpcmVkXCJcbiAgICAgIHwgXCJJbnZhbGlkQXV0aEhlYWRlclwiXG4gICAgICB8IFwiU2Vzc2lvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkQXJuXCJcbiAgICAgIHwgXCJTZXNzaW9uSW52YWxpZEF1dGhUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkF1dGhUb2tlbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25Qb3NzaWJseVN0b2xlblRva2VuXCJcbiAgICAgIHwgXCJNZmFEaXNhbGxvd2VkSWRlbnRpdHlcIlxuICAgICAgfCBcIk1mYURpc2FsbG93ZWRBcHByb3ZlclwiXG4gICAgICB8IFwiTWZhVHlwZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk1mYU5vdEFwcHJvdmVkWWV0XCJcbiAgICAgIHwgXCJNZmFDb25maXJtYXRpb25Db2RlTWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYUh0dHBSZXF1ZXN0TWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYVJlbW92ZUJlbG93TWluXCJcbiAgICAgIHwgXCJUb3RwQWxyZWFkeUNvbmZpZ3VyZWRcIlxuICAgICAgfCBcIlRvdHBDb25maWd1cmF0aW9uQ2hhbmdlZFwiXG4gICAgICB8IFwiTWZhVG90cEJhZENvbmZpZ3VyYXRpb25cIlxuICAgICAgfCBcIk1mYVRvdHBCYWRDb2RlXCJcbiAgICAgIHwgXCJNZmFUb3RwUmF0ZUxpbWl0XCJcbiAgICAgIHwgXCJJbXByb3BlclNlc3Npb25TY29wZVwiXG4gICAgICB8IFwiRnVsbFNlc3Npb25SZXF1aXJlZFwiXG4gICAgICB8IFwiU2Vzc2lvbldpdGhvdXRBbnlTY29wZVVuZGVyXCJcbiAgICAgIHwgXCJVc2VyUm9sZVVucHJpdmlsZWdlZFwiXG4gICAgICB8IFwiTWZhTm90Q29uZmlndXJlZFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgYSBmb3JrIG9mIHRoZSBgQmVhY29uQ2hhaW5gLCB0byBwcmV2ZW50IHJlcGxheSBhdHRhY2tzLlxuICAgICAqIFRoZSBzY2hlbWEgb2YgYEZvcmtgIGlzIGRlZmluZWQgaW4gdGhlIFtCZWFjb24gY2hhaW5cbiAgICAgKiBzcGVjXShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vY29uc2Vuc3VzLXNwZWNzL2Jsb2IvdjEuMC4xL3NwZWNzL3BoYXNlMC9iZWFjb24tY2hhaW4ubWQjZm9yaykuXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJjdXJyZW50X3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCIsXG4gICAgICogICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgXCJwcmV2aW91c192ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiXG4gICAgICogfVxuICAgICAqL1xuICAgIEZvcms6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEN1cnJlbnQgZm9yayB2ZXJzaW9uLlxuICAgICAgICogQGV4YW1wbGUgMHg0MzQzNDM0M1xuICAgICAgICovXG4gICAgICBjdXJyZW50X3ZlcnNpb246IHN0cmluZztcbiAgICAgIGVwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUHJldmlvdXMgZm9yayB2ZXJzaW9uLlxuICAgICAgICogQGV4YW1wbGUgMHg0MjQyNDI0MlxuICAgICAgICovXG4gICAgICBwcmV2aW91c192ZXJzaW9uOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyBkYXRhIGFzIGRlZmluZWQgaW4gdGhlIFtCZWFjb24gQVBJXG4gICAgICogc3BlY10oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vZ2V0R2VuZXNpcykuXG4gICAgICogWW91IGNhbiBnZXQgdGhlIGdlbmVzaXMgZGF0YSBmcm9tIHRoZSBCZWFjb24gbm9kZSdzIGAvZXRoL3YxL2JlYWNvbi9nZW5lc2lzYCBlbmQtcG9pbnQuXG4gICAgICogVGhpcyBzdHJ1Y3QgZGVmaW5pdGlvbiBpcyBvcmlnaW5hbGx5IGZyb20gbGlnaHRob3VzZSdzIGV0aDIuXG4gICAgICovXG4gICAgR2VuZXNpc0RhdGE6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgZm9yayB2ZXJzaW9uLlxuICAgICAgICogQGV4YW1wbGUgMHg0MjQyNDI0MlxuICAgICAgICovXG4gICAgICBnZW5lc2lzX2ZvcmtfdmVyc2lvbjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyB0aW1lXG4gICAgICAgKiBAZXhhbXBsZSAxNjc5MzI2NDQ5XG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfdGltZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyB2YWxpZGF0b3JzIHJvb3QuXG4gICAgICAgKiBAZXhhbXBsZSAweDI3MGQ0M2U3NGNlMzQwZGU0YmNhMmIxOTM2YmVjYTBmNGY1NDA4ZDllNzhhZWM0ODUwOTIwYmFmNjU5ZDViNjlcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc192YWxpZGF0b3JzX3Jvb3Q6IHN0cmluZztcbiAgICB9O1xuICAgIEdldEtleXNJbk9yZ1JlcXVlc3Q6IHtcbiAgICAgIGtleV90eXBlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIEdldFVzZXJzSW5PcmdSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiB1c2VycyBpbiB0aGUgb3JnICovXG4gICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5PcmdJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFN0YXRzIHBlcnRhaW5pbmcgdGhlIHRoZSBzZW5kZXIgYGN1YmUzc2lnbmVyYCBpbnN0YW5jZSAqL1xuICAgIEhlYXJ0YmVhdFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyBjdXJyZW50bHkgYWN0aXZlIChyZWNlaXZlZCBidXQgbm90IG5lY2Vzc2FyaWx5IGJlaW5nIHByb2Nlc3NlZCB5ZXQpXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfbnVtX3JlcXVlc3RzX2FjdGl2ZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgYnkgY3ViZTNzaWduZXJcbiAgICAgICAqL1xuICAgICAgY3VycmVudF9udW1fcmVxdWVzdHNfcHJvY2Vzc2luZzogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcmVjb3JkIG1ldHJpYyBkYXRhIGZyb20gdGhpcyBoZWFydGJlYXQgKi9cbiAgICAgIGlnbm9yZT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgbmV3IHJlcXVlc3RzIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JlcXVlc3RzOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgdGhhdCBmYWlsZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHNfZmFpbGVkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgd2VyZSByZXRyaWVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JlcXVlc3RzX3JldHJpZWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXRyaWVzIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JldHJpZXM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiB0aW1lcyBhdXRoIHRva2VuIHdhcyByZWZyZXNoZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fdG9rZW5fcmVmcmVzaGVzPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHRpbWVzIGF1dGggdG9rZW4gcmVmcmVzaCBmYWlsZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fdG9rZW5fcmVmcmVzaGVzX2ZhaWxlZD86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFZlcnNpb24gb2YgdGhlIHByb3h5IHNlbmRpbmcgdGhlIGhlYXJ0IGJlYXQgcmVxdWVzdFxuICAgICAgICpcbiAgICAgICAqIFRPRE86IE1ha2Ugbm9uLW9wdGlvbmFsIG9uY2Ugd2UgZG8gbm90IHN1cHBvcnQgcHJveGllcyB3aXRob3V0IHZlcnNpb24gaW5mb3JtYXRpb25cbiAgICAgICAqL1xuICAgICAgcHJveHlfdmVyc2lvbj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBDYXB0dXJlcyBhbGwgdGhlIHJlbGV2YW50IGluZm8gKGluY2x1ZGluZyB0aGUgcmVxdWVzdCBib2R5KSBhYm91dCByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgTUZBLlxuICAgICAqIFdlIHVzZSB0aGlzIHRvIHZlcmlmeSB0aGF0IHdoZW4gYSByZXF1ZXN0IGlzIHJlc3VtZWQgKGFmdGVyIG9idGFpbmluZyBuZWNlc3NhcnkgTUZBIGFwcHJvdmFscylcbiAgICAgKiBpdCBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGl0IG9yaWdpbmFsbHkgd2FzLlxuICAgICAqL1xuICAgIEh0dHBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcmVxdWVzdCBib2R5ICovXG4gICAgICBib2R5PzogdW5rbm93bjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCBtZXRob2Qgb2YgdGhlIHJlcXVlc3QgKi9cbiAgICAgIG1ldGhvZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIHBhdGggb2YgdGhlIHJlcXVlc3QgKGluY2x1ZGluZyBob3N0IG9yIG5vdD8pICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvb2YgdGhhdCBhbiBlbmQtdXNlciBwcm92aWRlZCBDdWJlU2lnbmVyIHdpdGggYSB2YWxpZCBhdXRoIHRva2VuXG4gICAgICogKGVpdGhlciBhbiBPSURDIHRva2VuIG9yIGEgQ3ViZVNpZ25lciBzZXNzaW9uIHRva2VuKVxuICAgICAqL1xuICAgIElkZW50aXR5UHJvb2Y6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9JREMgYXVkaWVuY2U7IHNldCBvbmx5IGlmIHRoZSBwcm9vZiB3YXMgb2J0YWluZWQgYnkgdXNpbmcgT0lEQyB0b2tlbi5cbiAgICAgICAqXG4gICAgICAgKiBJbiBvdGhlciB3b3JkcywgcHJlc2VuY2Ugb2YgdGhpcyBmaWVsZCB0ZXN0aWZpZXMgdGhhdCBhdXRob3JpemF0aW9uIHdhcyBvYnRhaW5lZCB2aWEgT0lEQy5cbiAgICAgICAqL1xuICAgICAgYXVkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIHVzZXJAZW1haWwuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgaWRlbnRpdHk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcm5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBjdWJpc3RkZXZcbiAgICAgICAqL1xuICAgICAgcHJlZmVycmVkX3VzZXJuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHVzZXJfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3ViZVNpZ25lclVzZXJJbmZvXCJdIHwgbnVsbDtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgdGhlIHByb29mICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgIH07XG4gICAgSW1wb3J0S2V5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbXBvcnRLZXlcIl0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgc2V0IG9mIGVuY3J5cHRlZCBrZXlzIHRvIGJlIGltcG9ydGVkICovXG4gICAgICBrZXlfbWF0ZXJpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW1wb3J0S2V5UmVxdWVzdE1hdGVyaWFsXCJdW107XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgIH07XG4gICAgSW1wb3J0S2V5UmVxdWVzdE1hdGVyaWFsOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2xpZW50J3MgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5LlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkLCBTRUMxLWVuY29kZWQgUDM4NCBwdWJsaWMga2V5LlxuICAgICAgICovXG4gICAgICBjbGllbnRfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVuY3J5cHRlZCBrZXlpbmcgbWF0ZXJpYWwgdG8gYmUgaW1wb3J0ZWQuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQgY2lwaGVydGV4dC5cbiAgICAgICAqL1xuICAgICAgaWttX2VuYzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBzYWx0IHZhbHVlIHVzZWQgdG8gZGVyaXZlIGEgc2hhcmVkIGtleS5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZy5cbiAgICAgICAqL1xuICAgICAgc2FsdDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgSW50ZXJuYWxFcnJvckNvZGU6XG4gICAgICB8IFwiU3lzdGVtVGltZUVycm9yXCJcbiAgICAgIHwgXCJSZXF3ZXN0RXJyb3JcIlxuICAgICAgfCBcIkRiUXVlcnlFcnJvclwiXG4gICAgICB8IFwiRGJHZXRFcnJvclwiXG4gICAgICB8IFwiRGJEZWxldGVFcnJvclwiXG4gICAgICB8IFwiRGJQdXRFcnJvclwiXG4gICAgICB8IFwiRGJVcGRhdGVFcnJvclwiXG4gICAgICB8IFwiU2VyZGVFcnJvclwiXG4gICAgICB8IFwiVGVzdEFuZFNldEVycm9yXCJcbiAgICAgIHwgXCJEYkdldEl0ZW1zRXJyb3JcIlxuICAgICAgfCBcIkRiV3JpdGVFcnJvclwiXG4gICAgICB8IFwiQ3ViaXN0U2lnbmVyRXJyb3JcIlxuICAgICAgfCBcIkN3UHV0TWV0cmljRGF0YUVycm9yXCJcbiAgICAgIHwgXCJLbXNHZW5lcmF0ZVJhbmRvbUVycm9yXCJcbiAgICAgIHwgXCJNYWxmb3JtZWRUb3RwQnl0ZXNcIlxuICAgICAgfCBcIkttc0dlbmVyYXRlUmFuZG9tTm9SZXNwb25zZUVycm9yXCJcbiAgICAgIHwgXCJDcmVhdGVLZXlFcnJvclwiXG4gICAgICB8IFwiUGFyc2VEZXJpdmF0aW9uUGF0aEVycm9yXCJcbiAgICAgIHwgXCJTcGxpdFNpZ25lckVycm9yXCJcbiAgICAgIHwgXCJDcmVhdGVJbXBvcnRLZXlFcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0RlbGV0ZVVzZXJFcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0xpc3RVc2Vyc0Vycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvR2V0VXNlckVycm9yXCJcbiAgICAgIHwgXCJNaXNzaW5nVXNlckVtYWlsXCJcbiAgICAgIHwgXCJDb2duaXRvUmVzZW5kVXNlckludml0YXRpb25cIlxuICAgICAgfCBcIkNvZ25pdG9TZXRVc2VyUGFzc3dvcmRFcnJvclwiXG4gICAgICB8IFwiR2VuZXJpY0ludGVybmFsRXJyb3JcIlxuICAgICAgfCBcIk9pZGNBdXRoV2l0aG91dE9yZ1wiXG4gICAgICB8IFwiTWlzc2luZ0tleU1ldGFkYXRhXCJcbiAgICAgIHwgXCJLbXNLZXlXaXRob3V0SWRcIlxuICAgICAgfCBcIkttc0VuYWJsZUtleUVycm9yXCJcbiAgICAgIHwgXCJLbXNEaXNhYmxlS2V5RXJyb3JcIlxuICAgICAgfCBcIlNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJEZXNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJSZUVuY3J5cHRVc2VyRXhwb3J0XCJcbiAgICAgIHwgXCJTM1VwbG9hZEVycm9yXCJcbiAgICAgIHwgXCJTM0Rvd25sb2FkRXJyb3JcIlxuICAgICAgfCBcIk1hbmFnZWRTdGF0ZU1pc3NpbmdcIlxuICAgICAgfCBcIkludGVybmFsSGVhZGVyTWlzc2luZ1wiXG4gICAgICB8IFwiSW52YWxpZEludGVybmFsSGVhZGVyVmFsdWVcIlxuICAgICAgfCBcIlJlcXVlc3RMb2NhbFN0YXRlQWxyZWFkeVNldFwiXG4gICAgICB8IFwiT2lkY09yZ01pc21hdGNoXCJcbiAgICAgIHwgXCJPcnBoYW5lZFJvbGVLZXlJZFwiXG4gICAgICB8IFwiT2lkY0lzc3Vlckp3a0VuZHBvaW50VW5hdmFpbGFibGVcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJJbnZhbGlkSndrXCJcbiAgICAgIHwgXCJJbnZhbGlkUGtGb3JNYXRlcmlhbElkXCJcbiAgICAgIHwgXCJVbmNoZWNrZWRPcmdcIlxuICAgICAgfCBcIkF2YVNpZ25DcmVkc01pc3NpbmdcIlxuICAgICAgfCBcIkF2YVNpZ25TaWduYXR1cmVNaXNzaW5nXCJcbiAgICAgIHwgXCJFeHBlY3RlZFJvbGVTZXNzaW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkVGhpcmRQYXJ0eUlkZW50aXR5XCJcbiAgICAgIHwgXCJDb2duaXRvR2V0VXNlclwiXG4gICAgICB8IFwiU25zU3Vic2NyaWJlRXJyb3JcIlxuICAgICAgfCBcIlNuc1Vuc3Vic2NyaWJlRXJyb3JcIlxuICAgICAgfCBcIlNuc1B1Ymxpc2hCYXRjaEVycm9yXCI7XG4gICAgSW52aXRlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBhY21lLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZnVsbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZSBXb25kZXJsYW5kXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHJvbGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2tpcCBzZW5kaW5nIGFuIGludml0YXRpb24gZW1haWwgdG8gdGhpcyB1c2VyIGlmIHRydWUuXG4gICAgICAgKlxuICAgICAgICogTk9URTogdGhpcyBmaWVsZCBpcyBmb3IgaW50ZXJuYWwgdGVzdGluZyB1c2UgT05MWS4gSWYgeW91IGRvIG5vdFxuICAgICAgICogc2VuZCBhbiBpbnZpdGF0aW9uIGVtYWlsLCB0aGUgdXNlciB3aWxsIG5ldmVyIGJlIGFibGUgdG8gbG9nIGluLlxuICAgICAgICogQGV4YW1wbGUgZmFsc2VcbiAgICAgICAqL1xuICAgICAgc2tpcF9lbWFpbDogYm9vbGVhbjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIFtgS2V5UGFja2FnZWBdIHNlcmlhbGl6ZWQgaW50byBhIGZvcm1hdCB0aGF0IGdpdmVzIGEgdGlkaWVyIEpTT05cbiAgICAgKiByZXByZXNlbnRhdGlvbiBzdWl0YWJsZSBmb3IgZW5jcnlwdGlvbiBpbiB0aGUgdXNlci1leHBvcnQgZmxvdy5cbiAgICAgKlxuICAgICAqIFdlIGNvbnN0cnVjdCB2YWx1ZXMgb2YgdGhpcyB0eXBlIHJhdGhlciB0aGFuIGNvbnN0cnVjdGluZyBgc2VyZGVfanNvbjo6VmFsdWVgc1xuICAgICAqIGRpcmVjdGx5IHdpdGggYGpzb24hKClgIGJlY2F1c2UgdGhpcyBhbGxvd3MgdXMgdG8gemVyb2l6ZSB2YWx1ZXMgb24gZHJvcCwgd2hpY2hcbiAgICAgKiBkb2Vzbid0IHdvcmsgd2l0aCBgc2VyZGVfanNvbjo6VmFsdWVgLlxuICAgICAqXG4gICAgICogRXhhbXBsZXMgb2Ygc2VyaWFsaXplZCBtYXRlcmlhbDpcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6RW5nbGlzaE1uZW1vbmljYDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogRGVyaXZhdGlvblBhdGgsIEtleVBhY2thZ2UsIE1uZW1vbmljLCBNbmVtb25pY1BhY2thZ2UsIFNlY3AyNTZrMVBrZyxcbiAgICAgKiB9O1xuICAgICAqIHVzZSBzZXJkZV9qc29uOjpqc29uO1xuICAgICAqXG4gICAgICogY29uc3QgTU5FTU9OSUM6ICZzdHIgPSBcImRlcG9zaXQgZmlzY2FsIGJyYWluIHN3YXJtIHN1cnJvdW5kIGNvdXNpbiBob3JuIGdsYXJlIGZpeCBsb3ZlIHJlbmRlciBiZWxpZXZlIGd1aWRlIHNodWZmbGUgc3RlbSBjcmFtIGJyb2Njb2xpIHJlc2VtYmxlIGJlYWNoIGFydGVmYWN0IGxhbmd1YWdlIGdpZnQgamFyIHBlcm1pdFwiO1xuICAgICAqIGNvbnN0IERFUl9QQVRIOiAmc3RyID0gXCJtLzQ0Jy82MCcvMCcvMC8wXCI7XG4gICAgICogY29uc3QgS0VZX1RZUEU6ICZzdHIgPSBcImVjZHNhOnNlY3AyNTZrMVwiO1xuICAgICAqXG4gICAgICogbGV0IG1uZSA9IE1uZW1vbmljOjp0cnlfZnJvbShNTkVNT05JQykuZXhwZWN0KFwiZ29vZCBtbmVtb25pY1wiKTtcbiAgICAgKiBsZXQgZGVycCA9IERlcml2YXRpb25QYXRoOjp0cnlfZnJvbShERVJfUEFUSCkuZXhwZWN0KFwiZ29vZCBkZXIgcGF0aFwiKTtcbiAgICAgKiBsZXQgbW5lX3BrZyA9IE1uZW1vbmljUGFja2FnZTo6bmV3KG1uZSwgXCJcIiwgZGVycCk7XG4gICAgICogbGV0IGtleV9wa2cgPSBLZXlQYWNrYWdlOjo8U2VjcDI1NmsxUGtnPjo6RW5nbGlzaE1uZW1vbmljKG1uZV9wa2cpO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcImVuZ2xpc2hfbW5lbW9uaWNcIixcbiAgICAgKiBcIm1uZW1vbmljXCI6IE1ORU1PTklDLFxuICAgICAqIFwicGFzc3dvcmRcIjogXCJcIixcbiAgICAgKiBcImRlcml2YXRpb25fcGF0aFwiOiBERVJfUEFUSCxcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGFzc2VydF9lcSEoXG4gICAgICogc2VyZGVfanNvbjo6dG9fdmFsdWUoJmpzb25fcGtnKS5leHBlY3QoXCJqc29uIHNlcmlhbGl6YXRpb25cIiksXG4gICAgICoganNvbl9leHBlY3QsXG4gICAgICogKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6UmF3U2VjcmV0YDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogZ2V0X3JhbmRvbV9ieXRlX2FycmF5LCBoZXhfZW5jb2RlLCBLZXlQYWNrYWdlLCBSbmdDb3JlLCBTZWNwMjU2azFQa2csXG4gICAgICogfTtcbiAgICAgKiB1c2Ugc2VyZGVfanNvbjo6anNvbjtcbiAgICAgKlxuICAgICAqIGNvbnN0IEtFWV9UWVBFOiAmc3RyID0gXCJlY2RzYTpzZWNwMjU2azFcIjtcbiAgICAgKlxuICAgICAqIC8vIHJhbmRvbSAzMi1ieXRlIHNlY3JldFxuICAgICAqIGxldCBzazogW3U4OyAzMl0gPSAqZ2V0X3JhbmRvbV9ieXRlX2FycmF5KCk7XG4gICAgICpcbiAgICAgKiBsZXQga2V5X3BrZyA9IEtleVBhY2thZ2U6OjxTZWNwMjU2azFQa2c+OjpTZWNyZXQoc2spO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcInJhd19zZWNyZXRcIixcbiAgICAgKiBcInNlY3JldFwiOiBoZXhfZW5jb2RlKCZzayksXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3NlcnRfZXEhKFxuICAgICAqIHNlcmRlX2pzb246OnRvX3ZhbHVlKCZqc29uX3BrZykuZXhwZWN0KFwianNvbiBzZXJpYWxpemF0aW9uXCIpLFxuICAgICAqIGpzb25fZXhwZWN0LFxuICAgICAqICk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgSnNvbktleVBhY2thZ2U6IChcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwicmF3X3NlY3JldFwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIG9mIHRoZSByYXcgc2VjcmV0ICovXG4gICAgICAgICAgc2VjcmV0OiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwiZW5nbGlzaF9tbmVtb25pY1wiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljICovXG4gICAgICAgICAgbW5lbW9uaWM6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwYXNzd29yZCAod2hpY2ggbWF5IGJlIGVtcHR5KSAqL1xuICAgICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICApICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiBrZXkgdGhpcyBwYWNrYWdlIHJlcHJlc2VudHMgKi9cbiAgICAgIGtleV90eXBlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlcml2YXRpb24tcmVsYXRlZCBtZXRhZGF0YSBmb3Iga2V5cyBkZXJpdmVkIGZyb20gYSBsb25nLWxpdmVkIG1uZW1vbmljICovXG4gICAgS2V5RGVyaXZhdGlvbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtbmVtb25pYy1pZCBvZiB0aGUga2V5J3MgcGFyZW50IG1uZW1vbmljICovXG4gICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHdyYXBwZWQga2V5LWltcG9ydCBrZXkgKi9cbiAgICBLZXlJbXBvcnRLZXk6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBkYXRhIGtleS4gKi9cbiAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgKi9cbiAgICAgIGV4cGlyZXM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB0byB3aGljaCBhbiBpbXBvcnRlZCBrZXkgc2hvdWxkIGJlIGVuY3J5cHRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBQMzg0IHB1YmxpYyBrZXkgaW4gYmFzZTY0LWVuY29kZWQgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0LlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgc2VjcmV0IGtleS4gKi9cbiAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgIH07XG4gICAgS2V5SW5Sb2xlSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IElEXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgdGhpcyBrZXkgaXMgdXNlZCBvbiBiZWhhbGYgb2YgdGhpcyByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSb2xlIElEXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1xuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJbmZvOiB7XG4gICAgICBkZXJpdmF0aW9uX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleURlcml2YXRpb25JbmZvXCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUga2V5IGlzIGVuYWJsZWQgKG9ubHkgZW5hYmxlZCBrZXlzIG1heSBiZSB1c2VkIGZvciBzaWduaW5nKSAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5OiBcIktleSNcIiBmb2xsb3dlZCBieSBhIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvXG4gICAgICAgKiB0aGUgdHlwZSBvZiBrZXkgKHN1Y2ggYXMgYSBwdWJsaWMga2V5IGZvciBCTFMgb3IgYW4gZXRoZXJldW0gYWRkcmVzcyBmb3IgU2VjcClcbiAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBrZXksIHN1Y2ggYXMgYSBwdWJsaWMga2V5IG9yIGFuIGV0aGVyZXVtIGFkZHJlc3NcbiAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICBtYXRlcmlhbF9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhLiBXaGVuIHJlbmRlcmluZyAoZS5nLiwgaW4gdGhlIGJyb3dzZXIpIHlvdSBzaG91bGQgdHJlYXRcbiAgICAgICAqIGl0IGFzIHVudHJ1c3RlZCB1c2VyIGRhdGEgKGFuZCBhdm9pZCBpbmplY3RpbmcgbWV0YWRhdGEgaW50byBIVE1MIGRpcmVjdGx5KSBpZlxuICAgICAgICogdW50cnVzdGVkIHVzZXJzIGNhbiBjcmVhdGUvdXBkYXRlIGtleXMgKG9yIHRoZWlyIG1ldGFkYXRhKS5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPd25lciBvZiB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkLCBzZXJpYWxpemVkIHB1YmxpYyBrZXkuIFRoZSBmb3JtYXQgdXNlZCBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTpcbiAgICAgICAqIC0gU2VjcDI1NmsxIGtleXMgdXNlIDY1LWJ5dGUgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0O1xuICAgICAgICogLSBTdGFyayBrZXlzIHVzZSAzMy1ieXRlIGNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgKiAtIEJMUyBrZXlzIHVzZSA0OC1ieXRlIGNvbXByZXNzZWQgQkxTMTItMzgxIChaQ2FzaCkgZm9ybWF0O1xuICAgICAgICogLSBFZDI1NTE5IGtleXMgdXNlIHRoZSBjYW5vbmljYWwgMzItYnl0ZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gUkZDIDgwMzIuXG4gICAgICAgKiBAZXhhbXBsZSAweDA0ZDI2ODhiNmJjMmNlN2Y5ODc5YjllNzQ1ZjNjNGRjMTc3OTA4YzVjZWYwYzFiNjRjZmYxOWFlN2ZmMjdkZWU2MjNjNjRmZTlkOWMzMjVjN2ZiYmM3NDhiYmQ1ZjYwN2NlMTRkZDgzZTI4ZWJiYmI3ZDNlN2YyZmZiNzBhNzk0MzFcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHB1cnBvc2UgZm9yIHdoaWNoIHRoZSBrZXkgY2FuIGJlIHVzZWQgKGUuZy4sIGNoYWluIGlkIGZvciB3aGljaCB0aGUga2V5IGlzIGFsbG93ZWQgdG8gc2lnbiBtZXNzYWdlcylcbiAgICAgICAqIEBleGFtcGxlIEV0aDJWYWxpZGF0b3IoMSlcbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgIH07XG4gICAgS2V5SW5mb3M6IHtcbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgS2V5VHlwZTpcbiAgICAgIHwgXCJTZWNwRXRoQWRkclwiXG4gICAgICB8IFwiU2VjcEJ0Y1wiXG4gICAgICB8IFwiU2VjcEJ0Y1Rlc3RcIlxuICAgICAgfCBcIlNlY3BBdmFBZGRyXCJcbiAgICAgIHwgXCJTZWNwQXZhVGVzdEFkZHJcIlxuICAgICAgfCBcIkJsc1B1YlwiXG4gICAgICB8IFwiQmxzSW5hY3RpdmVcIlxuICAgICAgfCBcIkVkMjU1MTlTb2xhbmFBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5U3VpQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOUFwdG9zQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOUNhcmRhbm9BZGRyVmtcIlxuICAgICAgfCBcIkVkMjU1MTlTdGVsbGFyQWRkclwiXG4gICAgICB8IFwiTW5lbW9uaWNcIlxuICAgICAgfCBcIlN0YXJrXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGVuY3J5cHRlZCBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gYnl0ZXMuXG4gICAgICpcbiAgICAgKiBXZSBzZXJpYWxpemUgdGhpcyBpbnRvIGEgYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIGFuZCByZXR1cm4gdG8gdGhlIHVzZXJcbiAgICAgKiBzbyB0aGF0IHRoZXkgY2FuIHBhc3MgdGhpcyBiYWNrIHRvIHVzIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgKi9cbiAgICBMYXN0RXZhbEtleTogc3RyaW5nO1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgKi9cbiAgICAgIG1mYV9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXVtdO1xuICAgIH07XG4gICAgTGlzdFRva2Vuc1Jlc3BvbnNlOiB7XG4gICAgICB0b2tlbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIHdoZXRoZXIgYSB1c2VyIGluIGFuIG9yZyBpcyBhbiBPd25lciBvciBqdXN0IGEgcmVndWxhciBtZW1iZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1lbWJlclJvbGU6IFwiQWxpZW5cIiB8IFwiTWVtYmVyXCIgfCBcIk93bmVyXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXR1cm5lZCBhcyBhIHJlc3BvbnNlIGZyb20gbXVsdGlwbGUgcm91dGVzIChlLmcuLCAnZ2V0IG1mYScsICdhcHByb3ZlIG1mYScsICdhcHByb3ZlIHRvdHAnKS4gKi9cbiAgICBNZmFSZXF1ZXN0SW5mbzoge1xuICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcHByb3ZhbCByZXF1ZXN0IElELiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIHJlY2VpcHQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlY2VpcHRcIl0gfCBudWxsO1xuICAgICAgcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIdHRwUmVxdWVzdFwiXTtcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl07XG4gICAgfTtcbiAgICBNZmFUeXBlOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgXCJDdWJlU2lnbmVyXCIsXG4gICAgICAgIFwiVG90cFwiLFxuICAgICAgICBcIkZpZG9cIixcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW5zd2VyIGEgRklETyBjaGFsbGVuZ2Ugd2l0aCBhIHNwZWNpZmljIEZJRE8ga2V5ICovXG4gICAgICAgICAgRmlkb0tleToge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBGSURPIGtleSB0aGF0IG11c3QgYmUgdXNlIHRvIGFwcHJvdmUgdGhlIHJlcXVlc3RcbiAgICAgICAgICAgICAqIEBleGFtcGxlIEZpZG9LZXkjRXREZC4uLlpaYzg9XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBNZmFWb3RlOiBcImFwcHJvdmVcIiB8IFwicmVqZWN0XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE5ldHdvcmsgbmFtZSAoJ21haW5uZXQnLCAncHJhdGVyJywgJ2dvZXJsaScpXG4gICAgICogQGV4YW1wbGUgZ29lcmxpXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBOZXR3b3JrOiBcIm1haW5uZXRcIiB8IFwicHJhdGVyXCIgfCBcImdvZXJsaVwiIHwgXCJob2xlc2t5XCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAqIEBleGFtcGxlIDE3MDE4Nzk2NDBcbiAgICAgICAqL1xuICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgIHNlc3Npb25faW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRTZXNzaW9uSW5mb1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAqIHNob3VsZCBpbmNsdWRlIHRoaXMgdmFsdWUgaW4gdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXJcbiAgICAgICAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIE5vdEZvdW5kRXJyb3JDb2RlOlxuICAgICAgfCBcIlVyaVNlZ21lbnRNaXNzaW5nXCJcbiAgICAgIHwgXCJVcmlTZWdtZW50SW52YWxpZFwiXG4gICAgICB8IFwiVG90cE5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIkZpZG9LZXlOb3RGb3VuZFwiXG4gICAgICB8IFwiRmlkb0NoYWxsZW5nZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJUb3RwQ2hhbGxlbmdlTm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0Tm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRDaXBoZXJ0ZXh0Tm90Rm91bmRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjb25maWd1cmF0aW9uIGZvciBhbiBvcmcgZXZlbnQgZW5kcG9pbnQgKi9cbiAgICBOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb246IHtcbiAgICAgIGZpbHRlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnRXZlbnRGaWx0ZXJcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVSTCBvZiB0aGUgZW5kcG9pbnQgKi9cbiAgICAgIHVybDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBnbG9iYWxseSB1bmlxdWUgT0lEQy1hdXRob3JpemVkIHVzZXIgYnkgZXhwcmVzc2luZyB0aGUgZnVsbCBcInBhdGhcIiB0byBhIHVzZXIuIFRoYXQgaXM6XG4gICAgICpcbiAgICAgKiAoaXNzKSAgICAgICAoc3ViKVxuICAgICAqIElzc3VlciAtPiBTdWJyZXNvdXJjZVxuICAgICAqL1xuICAgIE9JRENJZGVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJvb3QtbGV2ZWwgaXNzdWVyIHdobyBhZG1pbmlzdHJhdGVzIHRoaXMgdXNlci4gRnJvbWUgdGhlIE9JREMgc3BlYzpcbiAgICAgICAqIElzc3VlciBJZGVudGlmaWVyIGZvciB0aGUgSXNzdWVyIG9mIHRoZSByZXNwb25zZS4gVGhlIGlzc1xuICAgICAgICogdmFsdWUgaXMgYSBjYXNlIHNlbnNpdGl2ZSBVUkwgdXNpbmcgdGhlIGh0dHBzIHNjaGVtZSB0aGF0IGNvbnRhaW5zXG4gICAgICAgKiBzY2hlbWUsIGhvc3QsIGFuZCBvcHRpb25hbGx5LCBwb3J0IG51bWJlciBhbmQgcGF0aCBjb21wb25lbnRzIGFuZFxuICAgICAgICogbm8gcXVlcnkgb3IgZnJhZ21lbnQgY29tcG9uZW50cy5cbiAgICAgICAqIEBleGFtcGxlIGh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbVxuICAgICAgICovXG4gICAgICBpc3M6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gdGhlIE9JREMgc3BlYzpcbiAgICAgICAqXG4gICAgICAgKiBBIGxvY2FsbHkgdW5pcXVlIGFuZCBuZXZlciByZWFzc2lnbmVkIGlkZW50aWZpZXIgd2l0aGluIHRoZSBJc3N1ZXIgZm9yXG4gICAgICAgKiB0aGUgRW5kLVVzZXIsIHdoaWNoIGlzIGludGVuZGVkIHRvIGJlIGNvbnN1bWVkIGJ5IHRoZSBDbGllbnQsIGUuZy4sXG4gICAgICAgKiAyNDQwMDMyMCBvciBBSXRPYXdtd3RXd2NUMGs1MUJheWV3TnZ1dHJKVXFzdmw2cXM3QTQuIEl0IE1VU1QgTk9UIGV4Y2VlZFxuICAgICAgICogMjU1IEFTQ0lJIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLiBUaGUgc3ViIHZhbHVlIGlzIGEgY2FzZSBzZW5zaXRpdmVcbiAgICAgICAqIHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDEwNzY5MTUwMzUwMDA2MTUwNzE1MTEzMDgyMzY3XG4gICAgICAgKi9cbiAgICAgIHN1Yjogc3RyaW5nO1xuICAgIH07XG4gICAgT2lkY0xvZ2luUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBwdXJwb3NlIG9mIHRoZSBzZXNzaW9uICovXG4gICAgICBwdXJwb3NlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwic2lnbjoqXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzOiBzdHJpbmdbXTtcbiAgICAgIHRva2Vucz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnRXZlbnREaXNjcmltaW5hbnRzOlxuICAgICAgfCBcIk9pZGNBdXRoXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQmxvY2tQcm9wb3NlclNsb3RUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQXR0ZXN0YXRpb25Tb3VyY2VFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkludmFsaWRBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyVW5zdGFrZVwiXG4gICAgICB8IFwiRXRoMkV4Y2VlZGVkTWF4VW5zdGFrZVwiXG4gICAgICB8IFwiTWZhUmVqZWN0ZWRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEZpbHRlciBmb3Igb3JnIGV2ZW50cyAqL1xuICAgIE9yZ0V2ZW50RmlsdGVyOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgXCJBbGxcIixcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT25seSBhY2NlcHRzIG9yZyBldmVudHMgdGhhdCBhcmUgb25lIG9mIHRoZSBsaXN0ZWQgZXZlbnRzICovXG4gICAgICAgICAgT25lT2Y6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnRXZlbnREaXNjcmltaW5hbnRzXCJdW107XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICBPcmdJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZW4gZmFsc2UsIGFsbCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgaW52b2x2aW5nIGtleXMgaW4gdGhpcyBvcmcgYXJlIGRpc2FibGVkLiAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZDogdGhpcyBmaWVsZCBzaG91bGQgYmUgaWdub3JlZC4gKi9cbiAgICAgIGtleV9pbXBvcnRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyB1bml2ZXJzYWxseSB1bmlxdWUga2V5LXdyYXBwaW5nLWtleSBpZGVudGlmaWVyLlxuICAgICAgICogVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCB3aGVuIHNldHRpbmcgdXAga2V5IGV4cG9ydC5cbiAgICAgICAqIEBleGFtcGxlIG1yay1mY2UwOTUyNWU4MTU4N2QyMzUyMGYxMWUwN2UyZTlkOVxuICAgICAgICovXG4gICAgICBrd2tfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIERhdGUvdGltZSAoaW4gVVRDKSB3aGVuIGxhc3QgJ3Vuc3Rha2UnIHdhcyBwZXJmb3JtZWQuIFVuaXggZXBvY2ggaWYgbm9uZS5cbiAgICAgICAqIEBleGFtcGxlIFRPRE9cbiAgICAgICAqL1xuICAgICAgbGFzdF91bnN0YWtlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSAndW5zdGFrZScgY2FsbHMgaGFwcGVuZWQgb24gdGhlIGRheSB3aGVuIGBsYXN0X3Vuc3Rha2VgIHdhcyBwZXJmb3JtZWQuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfdW5zdGFrZV9kYXlfY291bnQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLCB3aGljaCBhcmUgSFRUUFMgVVJMcyBhcmUgbm90aWZpZWQgYWJvdXQgYVxuICAgICAgICogY29uZmlndXJhYmxlIHNldCBvZiBldmVudHMgaW4gYW4gb3JnYW5pemF0aW9uLiBGb3IgZWFjaCBldmVudCwgQ3ViZVNpZ25lciBzZW5kcyBhIFBPU1RcbiAgICAgICAqIHJlcXVlc3Qgd2l0aCBhIEpTT04tZm9ybWF0dGVkIGJvZHkgdGhhdCBjb250YWlucyB0aGUgZXZlbnQgZGV0YWlscy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludFwiXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmctd2lkZSBwb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSBhIGtleSBpcyB1c2VkIGZvciBzaWduaW5nXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgVE9UUCBmYWlsdXJlIGxpbWl0LCBpLmUuLCB0aGUgbnVtYmVyXG4gICAgICAgKiBvZiB0aW1lcyBhIHVzZXIgY2FuIHByb3ZpZGUgYW4gaW5jb3JyZWN0IFRPVFAgY29kZSBiZWZvcmUgYmVpbmcgcmF0ZSBsaW1pdGVkLlxuICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIG1pbmltdW1cbiAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAqIGl0IG1heSBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlXG4gICAgICAgKiBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF9kZWxheTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIHVzZXItZXhwb3J0IHdpbmRvdywgaS5lLiwgdGhlIGFtb3VudFxuICAgICAgICogb2YgdGltZSAoaW4gc2Vjb25kcykgYmV0d2VlbiB3aGVuIHRoZSB1c2VyLWV4cG9ydCBkZWxheSBpcyBjb21wbGV0ZWQgYW5kIHdoZW5cbiAgICAgICAqIHRoZSB1c2VyIGV4cG9ydCByZXF1ZXN0IGhhcyBleHBpcmVkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWVcbiAgICAgICAqIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlIG9yZy13aWRlIGV4cG9ydC4pXG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdzogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSByb2NrZXQgcXVlcnkgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgcGFnZSBmcm9tIHdoaWNoIHRvIHN0YXJ0IGEgcGFnaW5hdGVkIHF1ZXJ5LlxuICAgICAqXG4gICAgICogTVVTVCBiZSBuYW1lZCBgPHBhZ2U+YCBpbiByb2NrZXQgdXJsIHNwZWMgc28gdGhhdCAnc2VyZGUocmVuYW1lID0gXCJwYWdlLipcIiknIGJlbG93IGNvbnRpbnVlcyB0byB3b3JrXG4gICAgICovXG4gICAgUGFnZToge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgKlxuICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICovXG4gICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgKi9cbiAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdEtleVJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIHRoZSBrZXkgaXMgaW4gKi9cbiAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZToge1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBrZXlzIGluIGEgcm9sZSAqL1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgdXNlcnMgaW4gYSByb2xlICovXG4gICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZToge1xuICAgICAgZXhwb3J0X3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRJbml0UmVzcG9uc2VcIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIFBvbGljeUVycm9yQ29kZTpcbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFcnJvck93bkNvZGVzXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtVHhEZXBvc2l0RXJyb3JDb2RlXCJdO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFBvbGljeUVycm9yT3duQ29kZXM6XG4gICAgICB8IFwiRXZtVHhSZWNlaXZlck1pc21hdGNoXCJcbiAgICAgIHwgXCJFdm1UeFNlbmRlck1pc21hdGNoXCJcbiAgICAgIHwgXCJQb2xpY3lEaXNqdW5jdGlvbkVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lOZWdhdGlvbkVycm9yXCJcbiAgICAgIHwgXCJFdGgyRXhjZWVkZWRNYXhVbnN0YWtlXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudFVuc3Rha2luZ1wiXG4gICAgICB8IFwiTm90SW5JcHY0QWxsb3dsaXN0XCJcbiAgICAgIHwgXCJOb3RJbk9yaWdpbkFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZFNvdXJjZUlwXCJcbiAgICAgIHwgXCJSYXdTaWduaW5nTm90QWxsb3dlZFwiXG4gICAgICB8IFwiRWlwNzEyU2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIk9pZGNTb3VyY2VOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJOb09pZGNBdXRoU291cmNlc0RlZmluZWRcIlxuICAgICAgfCBcIkFkZEtleVRvUm9sZURpc2FsbG93ZWRcIlxuICAgICAgfCBcIktleXNBbHJlYWR5SW5Sb2xlXCJcbiAgICAgIHwgXCJLZXlJbk11bHRpcGxlUm9sZXNcIlxuICAgICAgfCBcIktleUFjY2Vzc0Vycm9yXCJcbiAgICAgIHwgXCJFaXAxOTFTaWduaW5nTm90QWxsb3dlZFwiO1xuICAgIFByZWNvbmRpdGlvbkVycm9yQ29kZTpcbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQcmVjb25kaXRpb25FcnJvck93bkNvZGVzXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5RXJyb3JDb2RlXCJdO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFByZWNvbmRpdGlvbkVycm9yT3duQ29kZXM6XG4gICAgICB8IFwiRXRoMlByb3Bvc2VyU2xvdFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkF0dGVzdGF0aW9uU291cmNlRXBvY2hUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJNdWx0aURlcG9zaXRUb05vbkdlbmVyYXRlZEtleVwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFVua25vd25Jbml0aWFsRGVwb3NpdFwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFdpdGhkcmF3YWxBZGRyZXNzTWlzbWF0Y2hcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSB3aXJlLWVuY29kYWJsZSBmb3JtIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIGludGVyZmFjZVxuICAgICAqIENsaWVudHMgbWF5IG5lZWQgdG8gbWFudWFsbHkgZW5jb2RlIGludG8gdGhpcyBmb3JtYXQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2VydmVyXG4gICAgICpcbiAgICAgKiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbCBpbnRlcmZhY2UgaW5oZXJpdHMgZnJvbSBDcmVkZW50aWFsXG4gICAgICogW0NSRURFTlRJQUwtTUFOQUdFTUVOVC0xXSwgYW5kIGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIHRoYXQgYXJlIHJldHVybmVkIHRvXG4gICAgICogdGhlIGNhbGxlciB3aGVuIGEgbmV3IGNyZWRlbnRpYWwgaXMgY3JlYXRlZCwgb3IgYSBuZXcgYXNzZXJ0aW9uIGlzXG4gICAgICogcmVxdWVzdGVkLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLXBrY3JlZGVudGlhbFxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgcmVzdWx0cyBvZiBwcm9jZXNzaW5nIGNsaWVudCBleHRlbnNpb25zXG4gICAgICAgKiByZXF1ZXN0ZWQgYnkgdGhlIFJlbHlpbmcgUGFydHkgdXBvbiB0aGUgUmVseWluZyBQYXJ0eSdzIGludm9jYXRpb24gb2ZcbiAgICAgICAqIGVpdGhlciBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgb3IgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCgpLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbC1jbGllbnRleHRlbnNpb25zcmVzdWx0cy1zbG90XG4gICAgICAgKlxuICAgICAgICogSU1QTEVNRU5UQVRJT04gTk9URTogVGhlIHR5cGUgZm9yIHRoaXMgZmllbGQgY29tZXMgZnJvbSB0aGUgdHlwZSBvZiBnZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgd2hpY2ggYXMgdGhlIGZvbGxvd2luZyBkb2M6XG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcGVyYXRpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgW1tjbGllbnRFeHRlbnNpb25zUmVzdWx0c11dLCB3aGljaCBpcyBhIG1hcCBjb250YWluaW5nIGV4dGVuc2lvbiBpZGVudGlmaWVyIOKGkiBjbGllbnQgZXh0ZW5zaW9uIG91dHB1dCBlbnRyaWVzIHByb2R1Y2VkIGJ5IHRoZSBleHRlbnNpb27igJlzIGNsaWVudCBleHRlbnNpb24gcHJvY2Vzc2luZy5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNyZWYtZm9yLWRvbS1wdWJsaWNrZXljcmVkZW50aWFsLWdldGNsaWVudGV4dGVuc2lvbnJlc3VsdHNcbiAgICAgICAqL1xuICAgICAgY2xpZW50RXh0ZW5zaW9uUmVzdWx0cz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGludGVybmFsIHNsb3QgY29udGFpbnMgdGhlIGNyZWRlbnRpYWwgSUQsIGNob3NlbiBieSB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIFRoZSBjcmVkZW50aWFsIElEIGlzIHVzZWQgdG8gbG9vayB1cCBjcmVkZW50aWFscyBmb3IgdXNlLFxuICAgICAgICogYW5kIGlzIHRoZXJlZm9yZSBleHBlY3RlZCB0byBiZSBnbG9iYWxseSB1bmlxdWUgd2l0aCBoaWdoIHByb2JhYmlsaXR5XG4gICAgICAgKiBhY3Jvc3MgYWxsIGNyZWRlbnRpYWxzIG9mIHRoZSBzYW1lIHR5cGUsIGFjcm9zcyBhbGwgYXV0aGVudGljYXRvcnMuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsLWlkZW50aWZpZXItc2xvdFxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdG9ycyByZXNwb25kIHRvIFJlbHlpbmcgUGFydHkgcmVxdWVzdHMgYnkgcmV0dXJuaW5nIGFuIG9iamVjdCBkZXJpdmVkIGZyb20gdGhlIEF1dGhlbnRpY2F0b3JSZXNwb25zZSBpbnRlcmZhY2UgKi9cbiAgICAgIHJlc3BvbnNlOlxuICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VcIl1cbiAgICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgcHVibGljIGtleSBjcmVkZW50aWFsXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGRlZi1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczoge1xuICAgICAgYXR0ZXN0YXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2VcIl07XG4gICAgICBhdXRoZW50aWNhdG9yU2VsZWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWFcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgYSBjaGFsbGVuZ2UgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgICAqIG5ld2x5IGNyZWF0ZWQgY3JlZGVudGlhbOKAmXMgYXR0ZXN0YXRpb24gb2JqZWN0LiBTZWUgdGhlIMKn4oCvMTMuNC4zXG4gICAgICAgKiBDcnlwdG9ncmFwaGljIENoYWxsZW5nZXMgc2VjdXJpdHkgY29uc2lkZXJhdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtY2hhbGxlbmdlXG4gICAgICAgKi9cbiAgICAgIGNoYWxsZW5nZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgaXMgaW50ZW5kZWQgZm9yIHVzZSBieSBSZWx5aW5nIFBhcnRpZXMgdGhhdCB3aXNoIHRvIGxpbWl0XG4gICAgICAgKiB0aGUgY3JlYXRpb24gb2YgbXVsdGlwbGUgY3JlZGVudGlhbHMgZm9yIHRoZSBzYW1lIGFjY291bnQgb24gYSBzaW5nbGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIFRoZSBjbGllbnQgaXMgcmVxdWVzdGVkIHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgbmV3XG4gICAgICAgKiBjcmVkZW50aWFsIHdvdWxkIGJlIGNyZWF0ZWQgb24gYW4gYXV0aGVudGljYXRvciB0aGF0IGFsc28gY29udGFpbnMgb25lXG4gICAgICAgKiBvZiB0aGUgY3JlZGVudGlhbHMgZW51bWVyYXRlZCBpbiB0aGlzIHBhcmFtZXRlci5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtZXhjbHVkZWNyZWRlbnRpYWxzXG4gICAgICAgKi9cbiAgICAgIGV4Y2x1ZGVDcmVkZW50aWFscz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGNvbnRhaW5zIGFkZGl0aW9uYWwgcGFyYW1ldGVycyByZXF1ZXN0aW5nIGFkZGl0aW9uYWxcbiAgICAgICAqIHByb2Nlc3NpbmcgYnkgdGhlIGNsaWVudCBhbmQgYXV0aGVudGljYXRvci4gRm9yIGV4YW1wbGUsIHRoZSBjYWxsZXIgbWF5XG4gICAgICAgKiByZXF1ZXN0IHRoYXQgb25seSBhdXRoZW50aWNhdG9ycyB3aXRoIGNlcnRhaW4gY2FwYWJpbGl0aWVzIGJlIHVzZWQgdG9cbiAgICAgICAqIGNyZWF0ZSB0aGUgY3JlZGVudGlhbCwgb3IgdGhhdCBwYXJ0aWN1bGFyIGluZm9ybWF0aW9uIGJlIHJldHVybmVkIGluIHRoZVxuICAgICAgICogYXR0ZXN0YXRpb24gb2JqZWN0LiBTb21lIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQgaW4gwqfigK85IFdlYkF1dGhuXG4gICAgICAgKiBFeHRlbnNpb25zOyBjb25zdWx0IHRoZSBJQU5BIFwiV2ViQXV0aG4gRXh0ZW5zaW9uIElkZW50aWZpZXJzXCIgcmVnaXN0cnlcbiAgICAgICAqIFtJQU5BLVdlYkF1dGhuLVJlZ2lzdHJpZXNdIGVzdGFibGlzaGVkIGJ5IFtSRkM4ODA5XSBmb3IgYW4gdXAtdG8tZGF0ZVxuICAgICAgICogbGlzdCBvZiByZWdpc3RlcmVkIFdlYkF1dGhuIEV4dGVuc2lvbnMuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLWV4dGVuc2lvbnNcbiAgICAgICAqL1xuICAgICAgZXh0ZW5zaW9ucz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGVzaXJlZCBwcm9wZXJ0aWVzIG9mIHRoZVxuICAgICAgICogY3JlZGVudGlhbCB0byBiZSBjcmVhdGVkLiBUaGUgc2VxdWVuY2UgaXMgb3JkZXJlZCBmcm9tIG1vc3QgcHJlZmVycmVkIHRvXG4gICAgICAgKiBsZWFzdCBwcmVmZXJyZWQuIFRoZSBjbGllbnQgbWFrZXMgYSBiZXN0LWVmZm9ydCB0byBjcmVhdGUgdGhlIG1vc3RcbiAgICAgICAqIHByZWZlcnJlZCBjcmVkZW50aWFsIHRoYXQgaXQgY2FuLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1wdWJrZXljcmVkcGFyYW1zXG4gICAgICAgKi9cbiAgICAgIHB1YktleUNyZWRQYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnNcIl1bXTtcbiAgICAgIHJwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIHNwZWNpZmllcyBhIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdGhhdCB0aGUgY2FsbGVyIGlzXG4gICAgICAgKiB3aWxsaW5nIHRvIHdhaXQgZm9yIHRoZSBjYWxsIHRvIGNvbXBsZXRlLiBUaGlzIGlzIHRyZWF0ZWQgYXMgYSBoaW50LCBhbmRcbiAgICAgICAqIE1BWSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjbGllbnQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZGljdGlvbmFyeSBjb250YWlucyB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSBzcGVjaWZpZWQgYnkgYSBjYWxsZXIgd2hlblxuICAgICAqIHJlZmVycmluZyB0byBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBhcyBhbiBpbnB1dCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZSgpXG4gICAgICogb3IgZ2V0KCkgbWV0aG9kcy4gSXQgbWlycm9ycyB0aGUgZmllbGRzIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIG9iamVjdFxuICAgICAqIHJldHVybmVkIGJ5IHRoZSBsYXR0ZXIgbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0aW9uYXJ5LWNyZWRlbnRpYWwtZGVzY3JpcHRvclxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyB0aGUgY3JlZGVudGlhbCBJRCBvZiB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsIHRoZSBjYWxsZXIgaXMgcmVmZXJyaW5nIHRvLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGRlc2NyaXB0b3ItaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIGNvbnRhaW5zIGEgaGludCBhcyB0byBob3cgdGhlIGNsaWVudCBtaWdodFxuICAgICAgICogY29tbXVuaWNhdGUgd2l0aCB0aGUgbWFuYWdpbmcgYXV0aGVudGljYXRvciBvZiB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsXG4gICAgICAgKiB0aGUgY2FsbGVyIGlzIHJlZmVycmluZyB0by4gVGhlIHZhbHVlcyBTSE9VTEQgYmUgbWVtYmVycyBvZlxuICAgICAgICogQXV0aGVudGljYXRvclRyYW5zcG9ydCBidXQgY2xpZW50IHBsYXRmb3JtcyBNVVNUIGlnbm9yZSB1bmtub3duIHZhbHVlcy5cbiAgICAgICAqXG4gICAgICAgKiBUaGUgZ2V0VHJhbnNwb3J0cygpIG9wZXJhdGlvbiBjYW4gcHJvdmlkZSBzdWl0YWJsZSB2YWx1ZXMgZm9yIHRoaXNcbiAgICAgICAqIG1lbWJlci4gV2hlbiByZWdpc3RlcmluZyBhIG5ldyBjcmVkZW50aWFsLCB0aGUgUmVseWluZyBQYXJ0eSBTSE9VTERcbiAgICAgICAqIHN0b3JlIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGdldFRyYW5zcG9ydHMoKS4gV2hlbiBjcmVhdGluZyBhXG4gICAgICAgKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciBmb3IgdGhhdCBjcmVkZW50aWFsLCB0aGUgUmVseWluZyBQYXJ0eVxuICAgICAgICogU0hPVUxEIHJldHJpZXZlIHRoYXQgc3RvcmVkIHZhbHVlIGFuZCBzZXQgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZVxuICAgICAgICogdHJhbnNwb3J0cyBtZW1iZXIuXG4gICAgICAgKi9cbiAgICAgIHRyYW5zcG9ydHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRcIl1bXSB8IG51bGw7XG4gICAgICB0eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZGljdGlvbmFyeSBpcyB1c2VkIHRvIHN1cHBseSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgd2hlbiBjcmVhdGluZyBhIG5ld1xuICAgICAqIGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1jcmVkZW50aWFsLXBhcmFtc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBzcGVjaWZpZXMgdGhlIGNyeXB0b2dyYXBoaWMgc2lnbmF0dXJlIGFsZ29yaXRobSB3aXRoIHdoaWNoXG4gICAgICAgKiB0aGUgbmV3bHkgZ2VuZXJhdGVkIGNyZWRlbnRpYWwgd2lsbCBiZSB1c2VkLCBhbmQgdGh1cyBhbHNvIHRoZSB0eXBlIG9mXG4gICAgICAgKiBhc3ltbWV0cmljIGtleSBwYWlyIHRvIGJlIGdlbmVyYXRlZCwgZS5nLiwgUlNBIG9yIEVsbGlwdGljIEN1cnZlLlxuICAgICAgICovXG4gICAgICBhbGc6IG51bWJlcjtcbiAgICAgIHR5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFR5cGVcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNgIGRpY3Rpb25hcnkgc3VwcGxpZXMgZ2V0KCkgd2l0aCB0aGVcbiAgICAgKiBkYXRhIGl0IG5lZWRzIHRvIGdlbmVyYXRlIGFuIGFzc2VydGlvbi4gSXRzIGNoYWxsZW5nZSBtZW1iZXIgTVVTVCBiZVxuICAgICAqIHByZXNlbnQsIHdoaWxlIGl0cyBvdGhlciBtZW1iZXJzIGFyZSBPUFRJT05BTC5cbiAgICAgKlxuICAgICAqIFRoaXMgc3RydWN0IGlzIGFsc28gdXNlZCBhcyBwYXJ0IG9mIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VkdXJlIGZvciBhc3NlcnRpb25zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBjb250YWlucyBhIGxpc3Qgb2YgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcbiAgICAgICAqIG9iamVjdHMgcmVwcmVzZW50aW5nIHB1YmxpYyBrZXkgY3JlZGVudGlhbHMgYWNjZXB0YWJsZSB0byB0aGUgY2FsbGVyLCBpblxuICAgICAgICogZGVzY2VuZGluZyBvcmRlciBvZiB0aGUgY2FsbGVy4oCZcyBwcmVmZXJlbmNlICh0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICogaXMgdGhlIG1vc3QgcHJlZmVycmVkIGNyZWRlbnRpYWwsIGFuZCBzbyBvbiBkb3duIHRoZSBsaXN0KS5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1hbGxvd2NyZWRlbnRpYWxzXG4gICAgICAgKi9cbiAgICAgIGFsbG93Q3JlZGVudGlhbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXCJdW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciByZXByZXNlbnRzIGEgY2hhbGxlbmdlIHRoYXQgdGhlIHNlbGVjdGVkIGF1dGhlbnRpY2F0b3JcbiAgICAgICAqIHNpZ25zLCBhbG9uZyB3aXRoIG90aGVyIGRhdGEsIHdoZW4gcHJvZHVjaW5nIGFuIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgKiBhc3NlcnRpb24uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtY2hhbGxlbmdlXG4gICAgICAgKi9cbiAgICAgIGNoYWxsZW5nZTogc3RyaW5nO1xuICAgICAgZXh0ZW5zaW9ucz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBzcGVjaWZpZXMgdGhlIHJlbHlpbmcgcGFydHkgaWRlbnRpZmllciBjbGFpbWVkIGJ5XG4gICAgICAgKiB0aGUgY2FsbGVyLiBJZiBvbWl0dGVkLCBpdHMgdmFsdWUgd2lsbCBiZSB0aGUgQ3JlZGVudGlhbHNDb250YWluZXJcbiAgICAgICAqIG9iamVjdOKAmXMgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0J3Mgb3JpZ2luJ3MgZWZmZWN0aXZlIGRvbWFpbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1ycGlkXG4gICAgICAgKi9cbiAgICAgIHJwSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgc3BlY2lmaWVzIGEgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0aGF0IHRoZSBjYWxsZXJcbiAgICAgICAqIGlzIHdpbGxpbmcgdG8gd2FpdCBmb3IgdGhlIGNhbGwgdG8gY29tcGxldGUuIFRoZSB2YWx1ZSBpcyB0cmVhdGVkIGFzIGFcbiAgICAgICAqIGhpbnQsIGFuZCBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyVmVyaWZpY2F0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiBSZWx5aW5nIFBhcnR5IGF0dHJpYnV0ZXMgd2hlbiBjcmVhdGluZyBhIG5ldyBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktcnAtY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBSZWx5aW5nIFBhcnR5IGVudGl0eSwgd2hpY2ggc2V0cyB0aGUgUlAgSUQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscnBlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1wYWxhdGFibGUgbmFtZSBmb3IgdGhlIGVudGl0eS4gSXRzIGZ1bmN0aW9uIGRlcGVuZHMgb24gd2hhdCB0aGVcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxFbnRpdHkgcmVwcmVzZW50czogV2hlbiBpbmhlcml0ZWQgYnlcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZSBpZGVudGlmaWVyIGZvciB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHksIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuIEZvciBleGFtcGxlLCBcIkFDTUVcbiAgICAgICAqIENvcnBvcmF0aW9uXCIsIFwiV29uZGVyZnVsIFdpZGdldHMsIEluYy5cIiBvciBcItCe0JDQniDQn9GA0LjQvNC10YDRgtC10YVcIi5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBuYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb24gZGVmaW5lcyB0aGUgdmFsaWQgY3JlZGVudGlhbCB0eXBlcy4gSXQgaXMgYW4gZXh0ZW5zaW9uXG4gICAgICogcG9pbnQ7IHZhbHVlcyBjYW4gYmUgYWRkZWQgdG8gaXQgaW4gdGhlIGZ1dHVyZSwgYXMgbW9yZSBjcmVkZW50aWFsIHR5cGVzIGFyZVxuICAgICAqIGRlZmluZWQuIFRoZSB2YWx1ZXMgb2YgdGhpcyBlbnVtZXJhdGlvbiBhcmUgdXNlZCBmb3IgdmVyc2lvbmluZyB0aGVcbiAgICAgKiBBdXRoZW50aWNhdGlvbiBBc3NlcnRpb24gYW5kIGF0dGVzdGF0aW9uIHN0cnVjdHVyZXMgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mXG4gICAgICogdGhlIGF1dGhlbnRpY2F0b3IuICBDdXJyZW50bHkgb25lIGNyZWRlbnRpYWwgdHlwZSBpcyBkZWZpbmVkLCBuYW1lbHlcbiAgICAgKiBcInB1YmxpYy1rZXlcIi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLXB1YmxpY2tleWNyZWRlbnRpYWx0eXBlXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTogXCJwdWJsaWMta2V5XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiB1c2VyIGFjY291bnQgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWwuXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcGFsYXRhYmxlIG5hbWUgZm9yIHRoZSB1c2VyIGFjY291bnQsIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuXG4gICAgICAgKiBGb3IgZXhhbXBsZSwgXCJBbGV4IE3DvGxsZXJcIiBvciBcIueUsOS4reWAq1wiLiBUaGUgUmVseWluZyBQYXJ0eSBTSE9VTEQgbGV0IHRoZVxuICAgICAgICogdXNlciBjaG9vc2UgdGhpcywgYW5kIFNIT1VMRCBOT1QgcmVzdHJpY3QgdGhlIGNob2ljZSBtb3JlIHRoYW5cbiAgICAgICAqIG5lY2Vzc2FyeS5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBkaXNwbGF5TmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0b1xuICAgICAgICogdGhlIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuMyBvZlxuICAgICAgICogW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgb24gZGlzcGxheU5hbWUncyB2YWx1ZSBwcmlvciB0byBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIgb3IgaW5jbHVkaW5nIHRoZSB2YWx1ZSBhcyBhIHBhcmFtZXRlciBvZiB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogV2hlbiBjbGllbnRzLCBjbGllbnQgcGxhdGZvcm1zLCBvciBhdXRoZW50aWNhdG9ycyBkaXNwbGF5IGFcbiAgICAgICAqIGRpc3BsYXlOYW1lJ3MgdmFsdWUsIHRoZXkgc2hvdWxkIGFsd2F5cyB1c2UgVUkgZWxlbWVudHMgdG8gcHJvdmlkZSBhXG4gICAgICAgKiBjbGVhciBib3VuZGFyeSBhcm91bmQgdGhlIGRpc3BsYXllZCB2YWx1ZSwgYW5kIG5vdCBhbGxvdyBvdmVyZmxvdyBpbnRvXG4gICAgICAgKiBvdGhlciBlbGVtZW50cyBbY3NzLW92ZXJmbG93LTNdLlxuICAgICAgICpcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JzIE1VU1QgYWNjZXB0IGFuZCBzdG9yZSBhIDY0LWJ5dGUgbWluaW11bSBsZW5ndGggZm9yIGFcbiAgICAgICAqIGRpc3BsYXlOYW1lIG1lbWJlcuKAmXMgdmFsdWUuIEF1dGhlbnRpY2F0b3JzIE1BWSB0cnVuY2F0ZSBhIGRpc3BsYXlOYW1lXG4gICAgICAgKiBtZW1iZXLigJlzIHZhbHVlIHNvIHRoYXQgaXQgZml0cyB3aXRoaW4gNjQgYnl0ZXMuIFNlZSDCp+KArzYuNC4xIFN0cmluZ1xuICAgICAgICogVHJ1bmNhdGlvbiBhYm91dCB0cnVuY2F0aW9uIGFuZCBvdGhlciBjb25zaWRlcmF0aW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWx1c2VyZW50aXR5LWRpc3BsYXluYW1lXG4gICAgICAgKi9cbiAgICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBoYW5kbGUgb2YgdGhlIHVzZXIgYWNjb3VudCBlbnRpdHkuIEEgdXNlciBoYW5kbGUgaXMgYW4gb3BhcXVlXG4gICAgICAgKiBieXRlIHNlcXVlbmNlIHdpdGggYSBtYXhpbXVtIHNpemUgb2YgNjQgYnl0ZXMsIGFuZCBpcyBub3QgbWVhbnQgdG8gYmVcbiAgICAgICAqIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUbyBlbnN1cmUgc2VjdXJlIG9wZXJhdGlvbiwgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gZGVjaXNpb25zXG4gICAgICAgKiBNVVNUIGJlIG1hZGUgb24gdGhlIGJhc2lzIG9mIHRoaXMgaWQgbWVtYmVyLCBub3QgdGhlIGRpc3BsYXlOYW1lIG5vclxuICAgICAgICogbmFtZSBtZW1iZXJzLiBTZWUgU2VjdGlvbiA2LjEgb2YgW1JGQzgyNjZdLlxuICAgICAgICpcbiAgICAgICAqIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBjb250YWluIHBlcnNvbmFsbHkgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb25cbiAgICAgICAqIGFib3V0IHRoZSB1c2VyLCBzdWNoIGFzIGEgdXNlcm5hbWUgb3IgZS1tYWlsIGFkZHJlc3M7IHNlZSDCp+KArzE0LjYuMSBVc2VyXG4gICAgICAgKiBIYW5kbGUgQ29udGVudHMgZm9yIGRldGFpbHMuIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBiZSBlbXB0eSwgdGhvdWdoXG4gICAgICAgKiBpdCBNQVkgYmUgbnVsbC5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlOiB0aGUgdXNlciBoYW5kbGUgb3VnaHQgbm90IGJlIGEgY29uc3RhbnQgdmFsdWUgYWNyb3NzIGRpZmZlcmVudFxuICAgICAgICogYWNjb3VudHMsIGV2ZW4gZm9yIG5vbi1kaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMsIGJlY2F1c2Ugc29tZVxuICAgICAgICogYXV0aGVudGljYXRvcnMgYWx3YXlzIGNyZWF0ZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFRodXMgYSBjb25zdGFudFxuICAgICAgICogdXNlciBoYW5kbGUgd291bGQgcHJldmVudCBhIHVzZXIgZnJvbSB1c2luZyBzdWNoIGFuIGF1dGhlbnRpY2F0b3Igd2l0aFxuICAgICAgICogbW9yZSB0aGFuIG9uZSBhY2NvdW50IGF0IHRoZSBSZWx5aW5nIFBhcnR5LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gaW5oZXJpdGVkIGJ5IFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5LCBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZVxuICAgICAgICogaWRlbnRpZmllciBmb3IgYSB1c2VyIGFjY291bnQuIEl0IGlzIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXksIGkuZS4sXG4gICAgICAgKiBhaWRpbmcgdGhlIHVzZXIgaW4gZGV0ZXJtaW5pbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB1c2VyIGFjY291bnRzIHdpdGhcbiAgICAgICAqIHNpbWlsYXIgZGlzcGxheU5hbWVzLiBGb3IgZXhhbXBsZSwgXCJhbGV4bVwiLCBcImFsZXgubXVlbGxlckBleGFtcGxlLmNvbVwiXG4gICAgICAgKiBvciBcIisxNDI1NTU1MTIzNFwiLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBSZWx5aW5nIFBhcnR5IE1BWSBsZXQgdGhlIHVzZXIgY2hvb3NlIHRoaXMgdmFsdWUuIFRoZSBSZWx5aW5nIFBhcnR5XG4gICAgICAgKiBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XVxuICAgICAgICogZm9yIHRoZSBVc2VybmFtZUNhc2VQcmVzZXJ2ZWQgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIElkZW50aWZpZXJDbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCB3aGVuIHNldHRpbmcgbmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XSBmb3IgdGhlIFVzZXJuYW1lQ2FzZVByZXNlcnZlZCBQcm9maWxlIG9mIHRoZSBQUkVDSVMgSWRlbnRpZmllckNsYXNzIFtSRkM4MjY0XSwgb24gbmFtZSdzIHZhbHVlIHByaW9yIHRvIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZSB1c2VyIG9yIGluY2x1ZGluZyB0aGUgdmFsdWUgYXMgYSBwYXJhbWV0ZXIgb2YgdGhlIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIFJhdGNoZXRDb25maWc6IHtcbiAgICAgIC8qKiBAZGVmYXVsdCBkZWZhdWx0X2F1dGhfbGlmZXRpbWUgKi9cbiAgICAgIGF1dGhfbGlmZXRpbWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlZmF1bHQgZGVmYXVsdF9ncmFjZV9saWZldGltZSAqL1xuICAgICAgZ3JhY2VfbGlmZXRpbWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlZmF1bHQgZGVmYXVsdF9yZWZyZXNoX2xpZmV0aW1lICovXG4gICAgICByZWZyZXNoX2xpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqIEBkZWZhdWx0IGRlZmF1bHRfc2Vzc2lvbl9saWZldGltZSAqL1xuICAgICAgc2Vzc2lvbl9saWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVjZWlwdCB0aGF0IGFuIE1GQSByZXF1ZXN0IHdhcyBhcHByb3ZlZC4gKi9cbiAgICBSZWNlaXB0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb25maXJtYXRpb24gY29kZSB0aGUgdXNlciBuZWVkcyB0byBwcmVzZW50IHdoZW4gcmVzdW1pbmcgdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gICAgICAgKiBAZXhhbXBsZSBiYTFkNzVkZC1kOTk5LTRjMWItOTQ0ZC0yNWMyNTQ0MGM4YWZcbiAgICAgICAqL1xuICAgICAgY29uZmlybWF0aW9uOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgbG9nZ2VkLWluIHVzZXIgd2hvc2UgYWN0aW9uIGNyZWF0ZWQgdGhpcyBhcHByb3ZhbC4gKi9cbiAgICAgIGZpbmFsX2FwcHJvdmVyOiBzdHJpbmc7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbiBleHRlbmRlZCBmb3JtIG9mIGBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNgIHRoYXQgYWxsb3dzIGNsaWVudHMgdG8gZGVyaXZlIHRoZSBXZWJBdXRobiBjaGFsbGVuZ2VcbiAgICAgKiBmcm9tIGEgc3RydWN0dXJlZCBwcmVpbWFnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB3ZWJ1YXRobiBzaWduYXR1cmUgY2FuIG9ubHkgYmUgdXNlZCBmb3IgYSBzcGVjaWZpYyBwdXJwb3NlXG4gICAgICovXG4gICAgUmVxdWVzdE9wdGlvbnNXaXRoSGFzaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGVudW1lcmF0aW9u4oCZcyB2YWx1ZXMgZGVzY3JpYmUgdGhlIFJlbHlpbmcgUGFydHkncyByZXF1aXJlbWVudHMgZm9yXG4gICAgICogY2xpZW50LXNpZGUgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzIChmb3JtZXJseSBrbm93biBhcyByZXNpZGVudCBjcmVkZW50aWFsc1xuICAgICAqIG9yIHJlc2lkZW50IGtleXMpOlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtcmVzaWRlbnRrZXlyZXF1aXJlbWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUmVzaWRlbnRLZXlSZXF1aXJlbWVudDogXCJkaXNjb3VyYWdlZFwiIHwgXCJwcmVmZXJyZWRcIiB8IFwicmVxdWlyZWRcIjtcbiAgICBSZXZva2VUb2tlblJlc3BvbnNlOiB7XG4gICAgICB0b2tlbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFJldm9rZVRva2Vuc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VucyB0aGF0IHdlcmUgcmV2b2tlZC4gKi9cbiAgICAgIHJldm9rZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgfTtcbiAgICBSb2xlSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgcm9sZSBpcyBlbmFibGVkXG4gICAgICAgKiBAZXhhbXBsZSB0cnVlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQgVGhlIEN1YmVTaWduZXIgSURzIG9mIGF0IG1vc3QgMTAwIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcm9sZSAqL1xuICAgICAga2V5cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZSAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcm9sZVxuICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAqL1xuICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgbGlzdCBvZiBhdCBtb3N0IDEwMCB1c2VycyB3aXRoIGFjY2VzcyB0byB0aGUgcm9sZS4gKi9cbiAgICAgIHVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAqIEBkZXNjcmlwdGlvbiBEdXJhdGlvbiBtZWFzdXJlZCBpbiBzZWNvbmRzXG4gICAgICogQSB3cmFwcGVyIHR5cGUgZm9yIHNlcmlhbGl6YXRpb24gdGhhdCBlbmNvZGVzIGEgYER1cmF0aW9uYCBhcyBhIGB1NjRgIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMuXG4gICAgICovXG4gICAgU2Vjb25kczogbnVtYmVyO1xuICAgIFNlc3Npb25JbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2Vzc2lvblxuICAgICAgICogQGV4YW1wbGUgT0lEQyBsb2dpbiBzZXNzaW9uXG4gICAgICAgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHNlc3Npb24sIGJ1dCBjYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC5cbiAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAqL1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgZnJvbSBhbnkgb3BlcmF0aW9uIG9wZXJhdGluZyBvbiBtdWx0aXBsZSBzZXNzaW9ucyAqL1xuICAgIFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgfTtcbiAgICBTaWduZXJFcnJvckNvZGU6XG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVyRXJyb3JPd25Db2Rlc1wiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkVmFsdWVDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFkUmVxdWVzdEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhZEdhdGV3YXlFcnJvckNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RGb3VuZEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZvcmJpZGRlbkVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuYXV0aG9yaXplZEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZWNvbmRpdGlvbkVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludGVybmFsRXJyb3JDb2RlXCJdO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFNpZ25lckVycm9yT3duQ29kZXM6IFwiVW5oYW5kbGVkRXJyb3JcIiB8IFwiUHJveHlTdGFydEVycm9yXCIgfCBcIkVuY2xhdmVFcnJvclwiO1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwibWVzc2FnZV9iYXNlNjRcIjogXCJBUUFCQThPS1Z6TEVqc3RzdE40eFhyMzlrTEtIVDhkNThlUVkxUUVzNk1lWHdFRkJyeFRBbFVMWDF0cm9MYld4dUFYUXFnYlFvZkdpNno4ZkppN0tBQUlmN1lNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkswdG4zOWsyOHMrWDg2VzQ3RXZiUlJLbllCVlE4US9sMm0xRWJmVDcrdkFRSUNBQUVNQWdBQUFHUUFBQUFBQUFBQVwiXG4gICAgICogfVxuICAgICAqL1xuICAgIFNvbGFuYVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbGFuYSBiYXNlNjQtZW5jb2RlZCBzZXJpYWxpemVkIE1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBTb2xhbmFTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gb24gd2hpY2ggd2Ugd2lsbCBkZXBvc2l0XG4gICAgICAgKiBAZXhhbXBsZSA1XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICBkZXBvc2l0X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBzdGFraW5nIGFtb3VudCBpbiBHV0VJLlxuICAgICAgICogSWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdHMgdG8gMzJfMDAwXzAwMF8wMDAgKDMyIEVUSCkuXG4gICAgICAgKiBNdXN0IGJlIGJldHdlZW4gMSBFVEggYW5kIDMyIEVUSC5cbiAgICAgICAqIE11c3Qgbm90IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gJ2RlcG9zaXRfdHlwZScgaXMgXCJXcmFwcGVyXCIuXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfYW1vdW50X2d3ZWk/OiBudW1iZXI7XG4gICAgICB1bnNhZmVfY29uZj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5zYWZlQ29uZlwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIEJMUyBwdWJsaWMga2V5IHRvIHVzZSwgb3IgYE5vbmVgIHRvIGdlbmVyYXRlIGEgZnJlc2ggb25lLlxuICAgICAgICogQGV4YW1wbGUgMHhhOTlhNzZlZDc3OTZmN2JlMjJkNWI3ZTg1ZGVlYjdjNTY3N2U4OGU1MTFlMGIzMzc2MThmOGM0ZWI2MTM0OWI0YmYyZDE1M2Y2NDlmN2I1MzM1OWZlOGI5NGEzOGU0NGNcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXRoZXJldW0gYWRkcmVzcyB0byB3aGljaCB3aXRoZHJhd24gZnVuZHMgZ29cbiAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICB3aXRoZHJhd2FsX2FkZHI6IHN0cmluZztcbiAgICB9O1xuICAgIFN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3Iga2V5IGlkIChcIktleSMuLi5cIilcbiAgICAgICAqIEBleGFtcGxlIEtleSNkYjE3MzFmOC0zNjU5LTQ1YzAtODg1Yi1lMTFlMWY1YjdiZTJcbiAgICAgICAqL1xuICAgICAgY3JlYXRlZF92YWxpZGF0b3Jfa2V5X2lkOiBzdHJpbmc7XG4gICAgICBkZXBvc2l0X3R4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeG5cIl07XG4gICAgfTtcbiAgICBTdGF0dXM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGFyZSBhbGxvd2VkIHRvIGFwcHJvdmUuIE11c3QgYmUgbm9uLWVtcHR5LiAqL1xuICAgICAgYWxsb3dlZF9hcHByb3ZlcnM6IHN0cmluZ1tdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGxvd2VkIGFwcHJvdmFsIHR5cGVzLiBXaGVuIG9taXR0ZWQsIGRlZmF1bHRzIHRvIGFueS4gKi9cbiAgICAgIGFsbG93ZWRfbWZhX3R5cGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVc2VycyB3aG8gaGF2ZSBhbHJlYWR5IGFwcHJvdmVkICovXG4gICAgICBhcHByb3ZlZF9ieToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBcHByb3ZhbEluZm9cIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgdXNlcnMgbXVzdCBhcHByb3ZlXG4gICAgICAgKi9cbiAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSBhdXRoIGZhY3RvcnMgdG8gcmVxdWlyZSBwZXIgdXNlclxuICAgICAgICovXG4gICAgICBudW1fYXV0aF9mYWN0b3JzOiBudW1iZXI7XG4gICAgfTtcbiAgICBUb2tlbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVXNlIGl0IHRvIHJldm9rZSBhIHNlc3Npb24uIENhbm5vdCBiZSB1c2VkIGZvciBhdXRoLiAqL1xuICAgICAgaGFzaDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbnMgcHVycG9zZSAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9BdXRoMiBzdGFuZGFyZCBUb2tlbiBSZXNwb25zZS5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjc0OSNzZWN0aW9uLTQuMi4yXG4gICAgICovXG4gICAgVG9rZW5SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzIHRva2VuIGlzc3VlZCBieSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIuICovXG4gICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZztcbiAgICAgIGV4cGlyZXNfaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gT0lEQyB0b2tlbiBpc3N1ZWQgYnkgQ3ViaXN0LCBjb250YWluaW5nIHVzZXIgaW5mb3JtYXRpb24gKi9cbiAgICAgIGlkX3Rva2VuPzogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiB0aGUgdG9rZW4gaXNzdWVkLiBWYWx1ZSBpcyBjYXNlIGluc2Vuc2l0aXZlLiAqL1xuICAgICAgdG9rZW5fdHlwZTogc3RyaW5nO1xuICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICB9O1xuICAgIFRvdHBBcHByb3ZlUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUT1RQIHZlcmlmaWNhdGlvbiBjb2RlICovXG4gICAgICBjb2RlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gYW5zd2VyIGEgVE9UUCBjaGFsbGVuZ2UgKi9cbiAgICBUb3RwQ2hhbGxlbmdlQW5zd2VyOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50IFRPVFAgY29kZSAqL1xuICAgICAgY29kZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBUb3RwSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBUT1RQIGNoYWxsZW5nZS5cbiAgICAgICAqIEBleGFtcGxlIFRvdHBDaGFsbGVuZ2UjNzg5MmViYmEtNTYzZS00ODViLWJiN2QtZTI2MjY3MzYzMjg2XG4gICAgICAgKi9cbiAgICAgIHRvdHBfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFN0YW5kYXJkIFRPVFAgdXJsIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIGluaXRpYWxpemUgVE9UUC5cbiAgICAgICAqIEBleGFtcGxlIG90cGF1dGg6Ly90b3RwL0N1YmlzdDphbGljZS0lNDBleGFtcGxlLmNvbT9zZWNyZXQ9REFIRjdLQ09UUVdTT01LNFhGRU1OSFhPNEo0MzNPRDcmaXNzdWVyPUN1YmlzdFxuICAgICAgICovXG4gICAgICB0b3RwX3VybDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHJlc2V0IFRPVFAuICovXG4gICAgVG90cFJlc2V0UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgaXNzdWVyOyBkZWZhdWx0cyB0byBcIkN1YmlzdFwiLiAqL1xuICAgICAgaXNzdWVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFVuYXV0aG9yaXplZEVycm9yQ29kZTpcbiAgICAgIHwgXCJDbGFpbXNIZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJDbGFpbXNQYXJzZUVycm9yXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlIZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlQYXJzZUVycm9yXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25zIHRoYXQgc2hvdWxkIGJlIHNldCBvbmx5IGZvciBsb2NhbCBkZXZuZXQgdGVzdGluZy4gKi9cbiAgICBVbnNhZmVDb25mOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgYWRkcmVzcyBvZiB0aGUgZGVwb3NpdCBjb250cmFjdC4gSWYgb21pdHRlZCwgaW5mZXJyZWQgZnJvbSBgY2hhaW5faWRgXG4gICAgICAgKiBAZXhhbXBsZSAweGZmNTBlZDNkMGVjMDNhYzAxZDRjNzlhYWQ3NDkyOGJmZjQ4YTdiMmJcbiAgICAgICAqL1xuICAgICAgZGVwb3NpdF9jb250cmFjdF9hZGRyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCA0LWJ5dGUgZm9yayB2ZXJzaW9uXG4gICAgICAgKiBAZXhhbXBsZSAweDAwMDAxMDIwXG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfZm9ya192ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBVbnN0YWtlIG1lc3NhZ2UgcmVxdWVzdC5cbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImVwb2NoXCI6IFwiMjU2XCIsXG4gICAgICogICBcImZvcmtcIjoge1xuICAgICAqICAgICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIixcbiAgICAgKiAgICAgXCJlcG9jaFwiOiBcIjBcIixcbiAgICAgKiAgICAgXCJwcmV2aW91c192ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiXG4gICAgICogICB9LFxuICAgICAqICAgXCJnZW5lc2lzX2RhdGFcIjoge1xuICAgICAqICAgICBcImdlbmVzaXNfZm9ya192ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiLFxuICAgICAqICAgICBcImdlbmVzaXNfdGltZVwiOiBcIjE2Nzk1NDE2NDJcIixcbiAgICAgKiAgICAgXCJnZW5lc2lzX3ZhbGlkYXRvcnNfcm9vdFwiOiBcIjB4MjcwZDQzZTc0Y2UzNDBkZTRiY2EyYjE5MzZiZWNhMGY0ZjU0MDhkOWU3OGFlYzQ4NTA5MjBiYWY2NTlkNWI2OVwiXG4gICAgICogICB9LFxuICAgICAqICAgXCJuZXR3b3JrXCI6IFwiZ29lcmxpXCIsXG4gICAgICogICBcInZhbGlkYXRvcl9pbmRleFwiOiBcIjBcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBVbnN0YWtlUmVxdWVzdDoge1xuICAgICAgZXBvY2g/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoXCJdIHwgbnVsbDtcbiAgICAgIGZvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRm9ya1wiXTtcbiAgICAgIGdlbmVzaXNfZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJHZW5lc2lzRGF0YVwiXTtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV0d29ya1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvciBpbmRleCAoYHVpbnQ2NGApIHRvIGV4aXQuIFlvdSBjYW4gZ2V0IHRoZSB2YWxpZGF0b3IgaW5kZXggZnJvbSB0aGUgQmVhY29uIG5vZGUnc1xuICAgICAgICogYC9ldGgvdjEvYmVhY29uL3N0YXRlcy9oZWFkL3ZhbGlkYXRvcnMve3B1YmtleX1gIGVuZC1wb2ludC4gVGhpcyBlbmQgcG9pbnQgcmV0dXJucyBhblxuICAgICAgICogb2JqZWN0IHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhbGlkYXRvciAod2hvc2UgcHVibGljIGtleSBpcyBge3B1YmtleX1gKSxcbiAgICAgICAqIGluY2x1ZGluZyB0aGUgdmFsaWRhdG9yIGluZGV4LiBUaGUgc2NoZW1hIG9mIHRoaXMgZW5kLXBvaW50IGlzIGRlZmluZWRcbiAgICAgICAqIFtoZXJlXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9nZXRTdGF0ZVZhbGlkYXRvcikuXG4gICAgICAgKiBAZXhhbXBsZSAzMTMzN1xuICAgICAgICovXG4gICAgICB2YWxpZGF0b3JfaW5kZXg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBVbnN0YWtlIHJlc3BvbnNlcyBhcmUgc2lnbmVkIHZvbHVudGFyeSBleGl0IG1lc3NhZ2VzLlxuICAgICAqIFRoZSBzY2hlbWEgZm9yIHRoaXMgbWVzc2FnZSBpcyBkZWZpbmVkXG4gICAgICogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNzaWduZWR2b2x1bnRhcnlleGl0KS5cbiAgICAgKiBUaGlzIG1lc3NhZ2UgY2FuIGJlIGRpcmVjdGx5IFBPU1RlZCB0byB0aGUgQmVhY29uIG5vZGUnc1xuICAgICAqIGAvZXRoL3YxL2JlYWNvbi9wb29sL3ZvbHVudGFyeV9leGl0c2AgZW5kLXBvaW50IChzZWUgZXhwZWN0ZWQgc2NoZW1hXG4gICAgICogW2hlcmVdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL3N1Ym1pdFBvb2xWb2x1bnRhcnlFeGl0KSkuXG4gICAgICovXG4gICAgVW5zdGFrZVJlc3BvbnNlOiB7XG4gICAgICBtZXNzYWdlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlZvbHVudGFyeUV4aXRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBCTFMgc2lnbmF0dXJlLlxuICAgICAgICogQGV4YW1wbGUgMHg5MTBjN2NkNTM3ZWQ5MWNjOGM0YTgyZjNjYmQ4MzJlOWJlOGMyNGEyMmU5Yzg2ZGY0NzlmN2NlNDIwMjVlYTZhMDk2MTliNDE4YjY2NmEwNjBlMjYwZDJhYWUzMWI4ZTUwZTlkMDVjYTM0NDJjN2VlZDNiNTA3ZTUyMDdlMTQ2NzQyNzVmNjhjMmJhODRjNGJmNmI4ZGQzNjRhMzA0YWNhYzhjZmFiMzY4MWUyNTE0YjQ0MDBmOTI0MmJjNjExNjRcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBVcGRhdGVLZXlSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZXMgdGhlIGtleXMncyBgZW5hYmxlZGAgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAqIE9uY2UgZGlzYWJsZWQsIGEga2V5IGNhbm5vdCBiZSB1c2VkIGZvciBzaWduaW5nLlxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIGtleSdzIG1ldGFkYXRhLiBWYWxpZGF0aW9uIHJlZ2V4OiBeW0EtWmEtejAtOV89Ky8gXFwtXFwuXFwsXXswLDEwMjR9JFxuICAgICAgICogQGV4YW1wbGUgQ29udHJhY3QgYWRtaW4ga2V5XG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyBrZXkncyBvd25lciB0byB0aGlzIHZhbHVlLlxuICAgICAgICogVGhlIG5ldyBvd25lciBtdXN0IGJlIGFuIGV4aXN0aW5nIHVzZXIgd2hvIGlzIGEgbWVtYmVyIG9mIHRoZSBzYW1lIG9yZy5cbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMga2V5J3MgcG9saWNpZXMgKG9sZCBwb2xpY2llcyB3aWxsIGJlIG92ZXJ3cml0dGVuISkuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgfTtcbiAgICBVcGRhdGVPcmdSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgYGVuYWJsZWRgIGZpZWxkIHRvIHRoaXMgdmFsdWUuICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIGFsaWFzLiAgT3JnIGFsaWFzZXMgYXJlIGdsb2JhbGx5IHVuaXF1ZS5cbiAgICAgICAqIEBleGFtcGxlIG15X29yZ1xuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3Mgbm90aWZpY2F0aW9uIGVuZHBvaW50cy4gTm90aWZpY2F0aW9uIGVuZHBvaW50cyBhcmUgZXhwZWN0ZWQgdG8gYmVcbiAgICAgICAqIEhUVFBTIFVSTHMsIHdoaWNoIGFjY2VwdCBQT1NUIHJlcXVlc3RzLiBUaGUgYm9keSBvZiB0aGUgcmVxdWVzdHMgc2VudCB0byB0aGVzZSBlbmRwb2ludHMgYXJlXG4gICAgICAgKiBhcmUgZm9ybWF0dGVkIGluIEpTT04gYW5kIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgICAgKlxuICAgICAgICogYGBganNvblxuICAgICAgICoge1xuICAgICAgICogXCJvcmdcIjogXCIuLi5cIixcbiAgICAgICAqIFwidXRjX3RpbWVzdGFtcFwiOiBcIi4uLlwiLFxuICAgICAgICogXCJvcmdfZXZlbnRcIjogXCIuLi5cIixcbiAgICAgICAqIC4uLlxuICAgICAgICogfVxuICAgICAgICogYGBgXG4gICAgICAgKlxuICAgICAgICogYG9yZ2AgaXMgdGhlIG9yZyBpZCwgYHV0Y190aW1lc3RhbXBgIGlzIHRoZSBVVEMgdGltZXN0YW1wIG9mIHRoZSBldmVudCBpbiBtaWxsaXNlY29uZHMsIGFuZFxuICAgICAgICogYG9yZ19ldmVudGAgaXMgYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHR5cGUgb2YgZXZlbnQgdGhhdCBoYXMgb2NjdXJyZWQuIFRoZSByZXN0IG9mIHRoZVxuICAgICAgICogZmllbGRzIHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICAgICAqXG4gICAgICAgKiBFbmRwb2ludHMgY2FuIG9wdGlvbmFsbHkgaW5jbHVkZSBmaWx0ZXJzIHRvIGN1c3RvbWl6ZSB0aGUgb3JnIGV2ZW50cyB0aGF0IHRoZXkgYXJlIG5vdGlmaWVkXG4gICAgICAgKiBhYm91dC4gQ3VycmVudGx5LCB0aGUgb25seSBzdXBwb3J0ZWQgZmlsdGVyIHR5cGUgaXMgYE9uZU9mYCwgd2hpY2ggZXhwZWN0cyBhIGxpc3Qgb2Ygb3JnXG4gICAgICAgKiBldmVudCB0eXBlcyB0byBzZW5kIHRvIHRoZSBlbmRwb2ludC4gSWYgbm8gZmlsdGVyIGlzIGNvbmZpZ3VyZWQsIHRoZSBzeXN0ZW0gc2VuZHMgYWxsIG9yZ1xuICAgICAgICogZXZlbnRzIHRvIHRoZSBlbmRwb2ludC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwidXJsOlwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQxXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiZmlsdGVyXCI6IHtcbiAgICAgICAqICAgICAgIFwiT25lT2ZcIjogW1xuICAgICAgICogICAgICAgICBcIkV0aDJDb25jdXJyZW50QXR0ZXN0YXRpb25TaWduaW5nXCIsXG4gICAgICAgKiAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgICogICAgICAgXVxuICAgICAgICogICAgIH0sXG4gICAgICAgKiAgICAgXCJ1cmw6XCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDJcIlxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG5vdGlmaWNhdGlvbl9lbmRwb2ludHM/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHBvbGljaWVzIChvbGQgcG9saWNpZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiEpLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJPcmlnaW5BbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCJodHRwczovL2V4YW1wbGUuY29tXCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiMTAuMS4yLjMvOFwiLFxuICAgICAgICogICAgICAgXCIxNjkuMjU0LjE3LjEvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIFRPVFAgZmFpbHVyZSBsaW1pdC4gQWZ0ZXIgdGhpcyBtYW55IGZhaWx1cmVzLFxuICAgICAgICogdGhlIHVzZXIgaXMgcmF0ZSBsaW1pdGVkIHVudGlsIHRoZSBuZXh0IDMwLXNlY29uZCBUT1RQIHdpbmRvdy5cbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgdXNlci1leHBvcnQgZGVsYXksIGkuZS4sIHRoZSBhbW91bnQgb2YgdGltZVxuICAgICAgICogKGluIHNlY29uZHMpIGJldHdlZW4gYSB1c2VyJ3MgaW5pdGlhdGluZyBhbiBleHBvcnQgYW5kIHRoZSB0aW1lIHdoZW5cbiAgICAgICAqIGV4cG9ydCBpcyBhbGxvd2VkLiBGb3Igc2VjdXJpdHksIHRoaXMgZGVsYXkgY2Fubm90IGJlIHNldCB0byBsZXNzIHRoYW5cbiAgICAgICAqIDE3MjgwMCwgaS5lLiwgMiBkYXlzLlxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF9kZWxheT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHVzZXItZXhwb3J0IHdpbmRvdywgaS5lLiwgdGhlIGFtb3VudCBvZiB0aW1lXG4gICAgICAgKiAoaW4gc2Vjb25kcykgdGhhdCBleHBvcnQgaXMgYWxsb3dlZCBhZnRlciB0aGUgdXNlci1leHBvcnQgZGVsYXkuIEFmdGVyXG4gICAgICAgKiB0aGlzIGFtb3VudCBvZiB0aW1lLCB0aGUgZXhwb3J0IGlzIGNhbmNlbGVkIGFuZCBtdXN0IGJlIHJlLWluaXRpYXRlZC5cbiAgICAgICAqIEZvciBzZWN1cml0eSwgdGhpcyB3aW5kb3cgY2Fubm90IGJlIHNldCB0byBncmVhdGVyIHRoYW4gMjU5MjAwLCBpLmUuLFxuICAgICAgICogMyBkYXlzLlxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF93aW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgVXBkYXRlT3JnUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5ICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IG5vdGlmaWNhdGlvbiBlbmRwb2ludCBjb25maWd1cmF0aW9uc1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50XCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2Ygb3JnLXdpZGUgcG9saWNpZXNcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlIFRPVFAgZmFpbHVyZSBsaW1pdFxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCBkZWxheVxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF9kZWxheT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IHdpbmRvd1xuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF93aW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgVXBkYXRlUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUgcm9sZSdzIGBlbmFibGVkYCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLlxuICAgICAgICogT25jZSBkaXNhYmxlZCwgYSByb2xlIGNhbm5vdCBiZSB1c2VkOyBhbmQgaXQncyB0b2tlbnMgY2Fubm90IGJlIHVzZWQgZm9yIHNpZ25pbmcuXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgcm9sZSdzIGtleSBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIE9ubHkgXCJkZW55XCIgc3R5bGUgcG9saWNpZXMgbWF5IGJlIHNldC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byBjb21wbGV0ZSBhIHVzZXIgZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXkgdG8gYmUgZXhwb3J0ZWQuIFRoZSBrZXktaWQgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBvbmUgaW5cbiAgICAgICAqIHRoZSBzcGVjaWZpZWQgZXhwb3J0IHJlcXVlc3QsIGFuZCB0aGUgY2FsbGVyIG11c3Qgb3duIHRoaXMga2V5LlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBOSVNUIFAtMjU2IHB1YmxpYyBrZXkgKGJhc2U2NC1lbmNvZGVkIFNFQzEgd2l0aCBvciB3aXRob3V0IGNvbXByZXNzaW9uKVxuICAgICAgICogdG8gd2hpY2ggdGhlIGV4cG9ydCB3aWxsIGJlIGVuY3J5cHRlZC4gSWYgYSBwdWJsaWMga2V5IHdhcyBwcm92aWRlZCB3aGVuXG4gICAgICAgKiBgdXNlcl9leHBvcnRfaW5pdGAgd2FzIGNhbGxlZCwgdGhpcyBrZXkgbXVzdCBtYXRjaCB0aGF0IG9uZS5cbiAgICAgICAqIEBleGFtcGxlIEFrcExULzNkWEFwSnpYU2R1YVBRN2FweVQwQURCd3FrdDFlcy9hVDBpV1dmXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gZW5jcnlwdGVkIHVzZXItZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBleHBvcnRlZCBrZXkgbWF0ZXJpYWwsIGVuY3J5cHRlZCB3aXRoIEFFUy0yNTYtR0NNIHVuZGVyIGEga2V5XG4gICAgICAgKiBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXkgc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QgdmlhIEhQS0UgKFJGQzkxODApXG4gICAgICAgKiB3aXRoIERIS0VNKFAtMjU2LCBIS0RGLVNIQTI1NikgYW5kIGJhc2U2NCBlbmNvZGVkLlxuICAgICAgICovXG4gICAgICBlbmNyeXB0ZWRfa2V5X21hdGVyaWFsOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBhcyBiYXNlNjQtZW5jb2RlZFxuICAgICAgICogdW5jb21wcmVzc2VkIFNFQzEgc2VyaWFsaXphdGlvbi5cbiAgICAgICAqL1xuICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgdG8gd2hpY2ggdGhpcyBrZXkgYmVsb25ncy4gKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IHRvIGluaXRpYXRlIGEgdXNlciBleHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5IHRvIGJlIGV4cG9ydGVkLiBUaGlzIGtleSBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjYWxsZXIuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dFxuICAgICAgICogY29tcHJlc3Npb24pIHRvIHdoaWNoIHRoZSBleHBvcnQgd2lsbCBiZSBlbmNyeXB0ZWQuIElmIHByb3ZpZGVkLCB0aGlzXG4gICAgICAgKiBwdWJsaWMga2V5IE1VU1QgYmUgdGhlIG9uZSB1c2VkIHRvIGVuY3J5cHQgdGhlIGV4cG9ydCBvbmNlIHRoZSBkZWxheSBoYXNcbiAgICAgICAqIGV4cGlyZWQuIE90aGVyd2lzZSwgdGhlIHVzZXIgY2FuIHByb3ZpZGUgYW55IHB1YmxpYyBrZXkgd2hlbiBjb21wbGV0aW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IHJlcXVlc3QgcG9zdCBkZWxheS5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIG9wdGlvbiBtYXkgcHJvdmlkZSBleHRyYSBzZWN1cml0eSB3aGVuIHRoZSB1c2VyIGhhcyBhIHNlY3VyZSBoYXJkd2FyZVxuICAgICAgICogZGV2aWNlIChlLmcuLCBhIHBob25lJ3Mgc2VjdXJlIGVsZW1lbnQgb3IgYSBZdWJpS2V5KSBpbiB3aGljaCBhIE5JU1QgUC0yNTZcbiAgICAgICAqIHNlY3JldCBrZXkgY2FuIGJlIGdlbmVyYXRlZC4gUHJvdmlkaW5nIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBrZXkgaGVyZVxuICAgICAgICogZW5zdXJlcyB0aGF0IG9ubHkgdGhhdCBzcGVjaWZpYyBkZXZpY2Ugd2lsbCBiZSBjYXBhYmxlIG9mIGRlY3J5cHRpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgY2lwaGVydGV4dC5cbiAgICAgICAqXG4gICAgICAgKiBJZiBubyBzZWN1cmUgaGFyZHdhcmUgZGV2aWNlIGlzIGF2YWlsYWJsZSB0byBzdG9yZSB0aGUgc2VjcmV0IGtleSwgdGhpc1xuICAgICAgICogb3B0aW9uIFNIT1VMRCBOT1QgYmUgdXNlZCBiZWNhdXNlIG9mIHRoZSByaXNrIG9mIHNlY3JldCBrZXkgdGhlZnQgZHVyaW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGRlbGF5IHBlcmlvZC5cbiAgICAgICAqIEBleGFtcGxlIEFrcExULzNkWEFwSnpYU2R1YVBRN2FweVQwQURCd3FrdDFlcy9hVDBpV1dmXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gYSBzdWNjZXNzZnVsIHVzZXItZXhwb3J0IGluaXQgcmVxdWVzdCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydFJlcXVlc3RcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIGJlaW5nIHJlcXVlc3RlZC5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBlbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdCBhcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiAqL1xuICAgIFVzZXJFeHBvcnRSZXF1ZXN0OiB7XG4gICAgICBleHBfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmctaWQgaW4gd2hpY2ggdGhlIGtleSBpcyBob3VzZWQuXG4gICAgICAgKiBAZXhhbXBsZSBPcmcjZjM2MWVkNmItNWQxOS00Y2NmLWE0ZDUtZWJhOTM1ZGMwYjkwXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNIQS0yNTYgaGFzaCBvZiB0aGUgcHVibGljIGtleSBwcm92aWRlZCBhdCBleHBvcnQgaW5pdGlhdGlvbixcbiAgICAgICAqIGlmIGFueS4gSWYgYSBrZXkgd2FzIHByb3ZpZGVkLCBvbmx5IHRoYXQga2V5IGNhbiBiZSB1c2VkIHRvIGNvbXBsZXRlXG4gICAgICAgKiB0aGUgZXhwb3J0IHByb2NlZHVyZS4gT3RoZXJ3aXNlLCBhbnkga2V5IGNhbiBiZSB1c2VkLlxuICAgICAgICpcbiAgICAgICAqIElNUE9SVEFOVDogaWYgYSBwdWJsaWMga2V5IGlzIHN1cHBsaWVkIGF0IGV4cG9ydCBpbml0aWF0aW9uLCBpdCBpc1xuICAgICAgICogU1RST05HTFkgUkVDT01NRU5ERUQgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBzZWNyZXQga2V5IGJlIHN0b3JlZCBpblxuICAgICAgICogYSBzZWN1cmUgaGFyZHdhcmUgZGV2aWNlLCBlLmcuLCBhIFl1YmlLZXkgb3IgYSBwaG9uZSdzIHNlY3VyZSBlbGVtZW50LlxuICAgICAgICogSWYgbm8gc3VjaCBoYXJkd2FyZSBpcyBhdmFpbGFibGUsIHN1cHBseWluZyBhIHB1YmxpYyBrZXkgYXQgZXhwb3J0XG4gICAgICAgKiBpbml0aWF0aW9uIGlzIFNUUk9OR0xZIERJU0NPVVJBR0VEIGJlY2F1c2Ugb2YgdGhlIHJpc2sgb2YgdGhlZnQgZHVyaW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGRlbGF5IHBlcmlvZC5cbiAgICAgICAqXG4gICAgICAgKiAoU2VlIGFsc28gdGhlIGNvbW1lbnQgaW4gdGhlIGBwdWJsaWNfa2V5YCBmaWVsZCBvZiBgVXNlckluaXRSZXF1ZXN0YC4pXG4gICAgICAgKiBAZXhhbXBsZSBkZjQ1N2E5OGQ1NTM4NTQwZjU0ZDEzMTZiNTk3YTBmMzliOGQ5NmY0ODhmMTBhMmUzMWE5NTVjMTQ2ZmRmMWQzXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXlfaGFzaD86IHN0cmluZyB8IG51bGw7XG4gICAgICB2YWxpZF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gICAgVXNlckluT3JnSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBlbWFpbFxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIG1lbWJlcnNoaXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdXNlciBuYW1lLiAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBVc2VySW5Sb2xlSW5mbzoge1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcG9saWN5LCBhcHBsaWVzIGJlZm9yZSBsb2dnaW5nIGluIGFuZCBvdGhlciBzZW5zaXRpdmUgb3BlcmF0aW9ucyAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG9cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgV2ViQXV0aG4gUmVseWluZyBQYXJ0eSBtYXkgcmVxdWlyZSB1c2VyIHZlcmlmaWNhdGlvbiBmb3Igc29tZSBvZiBpdHNcbiAgICAgKiBvcGVyYXRpb25zIGJ1dCBub3QgZm9yIG90aGVycywgYW5kIG1heSB1c2UgdGhpcyB0eXBlIHRvIGV4cHJlc3MgaXRzIG5lZWRzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW0tdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6IFwicmVxdWlyZWRcIiB8IFwiZGlzY291cmFnZWRcIiB8IFwicHJlZmVycmVkXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4aXQgdm9sdW50YXJpbHkgc3VibWl0dGVkIGEgdmFsaWRhdG9yIHdobyB3aXNoZXMgdG8gd2l0aGRyYXcuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqL1xuICAgIFZvbHVudGFyeUV4aXQ6IHtcbiAgICAgIGVwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSW5kZXggb2YgdGhlIGV4aXRpbmcgdmFsaWRhdG9yLlxuICAgICAgICogQGV4YW1wbGUgMjU2XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIHJlc3BvbnNlczoge1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGYgKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQXZhU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEJsb2JTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQnRjU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUgaW4gY29tcGFjdCBmb3JtYXQuXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg0NTRhZWYyN2MyMWRmN2RkOGY1MzdkYzg2OWY0Y2Q2NTI4NmNlMjM5YTUyZDM2NDcwZjRkODViZTg1YTg5MWIwMjc4OWU1ZmZkODU2MGIzMmE5ODExMGU1ZDAwOTY4MDJlNGMxNDE0NWNmNmM0NGYxMGE3NjhjODc3NTVlYWE0ODAwXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mbyBhYm91dCB0aGUgY3JlYXRlZCBrZXlzICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3bHkgY3JlYXRlZCByb2xlIGluZm9ybWF0aW9uICovXG4gICAgQ3JlYXRlUm9sZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZVxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEVpcDE5MU9yNzEyU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHNpZ25hdHVyZSBjb21wcmlzaW5nIDY1IGJ5dGVzIGluIHRoZSBmb3JtYXQgcmVxdWlyZWRcbiAgICAgICAgICAgKiBieSBlY3JlY292ZXI6IDMyLWJ5dGUgciwgMzItYnl0ZSBzLCBhbmQgb25lLWJ5dGUgcmVjb3ZlcnktaWQgdlxuICAgICAgICAgICAqIHdoaWNoIGlzIGVpdGhlciAyNyBvciAyOC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDQzNTVjNDdkNjM5MjRlOGE3MmU1MDliNjUwMjkwNTJlYjZjMjk5ZDUzYTA0ZTE2N2M1Nzc1ZmQ0NjY3NTFjOWQwNzI5OTkzNmQzMDRjMTUzZjY0NDNkZmEwNWY0MGZmMDA3ZDcyOTExYjZmNzIzMDdmOTk2MjMxNjA1YjkxNTYyMWNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFdGgxU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFdGgyU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleCBlbmNvZGVkIHNpZ25hdHVyZSBwcmVmaXhlZCB3aXRoIDB4IGUuZy4gXCIweDAwMDAuLi5cIlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4YjRmMmVmOWQxMmE1NGUxZjU2OTU5NmMwN2M5N2Q2ZDczMDUzNWI2ZmZjMGQyODc3NjFkYzc4MTAzYTg2MzI2NzgyNDcxYTA0Yzc1Y2U3YTZmYWVhMDhjYTlhNGEwODMwMDMxY2RjYjg5M2RhODcxMWQ1NGFhMjI2MTlmMWE3ZTcxYjgxODVkZGY0YzZiZmQ5YmFiYmQ3MzU5NjBlMzVlNTZiZDZlZWI4OTYyNWIwNDg1MGU3YTllZjg4NDZlNTQ5XG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRmlkb0Fzc2VydENoYWxsZW5nZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlbnQgYnkgdGhlIHNlcnZlciB0byB0aGUgY2xpZW50LiBDb250YWlucyB0aGUgY2hhbGxlbmdlIGRhdGEgdGhhdCBtdXN0IGJlXG4gICAgICogdXNlZCB0byBnZW5lcmF0ZSBhIG5ldyBjcmVkZW50aWFsXG4gICAgICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiB1c2VycyBpbiB0aGUgb3JnICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPSURDIGF1ZGllbmNlOyBzZXQgb25seSBpZiB0aGUgcHJvb2Ygd2FzIG9idGFpbmVkIGJ5IHVzaW5nIE9JREMgdG9rZW4uXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBJbiBvdGhlciB3b3JkcywgcHJlc2VuY2Ugb2YgdGhpcyBmaWVsZCB0ZXN0aWZpZXMgdGhhdCBhdXRob3JpemF0aW9uIHdhcyBvYnRhaW5lZCB2aWEgT0lEQy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBhdWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAgICAgaWRlbnRpdHk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VybmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBjdWJpc3RkZXZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIHVzZXJfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3ViZVNpZ25lclVzZXJJbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcHJvb2YgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSB3cmFwcGVkIGtleS1pbXBvcnQga2V5ICovXG4gICAgS2V5SW1wb3J0S2V5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdG8gd2hpY2ggYW4gaW1wb3J0ZWQga2V5IHNob3VsZCBiZSBlbmNyeXB0ZWQuXG4gICAgICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBkZXJpdmF0aW9uX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleURlcml2YXRpb25JbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGtleSBpcyBlbmFibGVkIChvbmx5IGVuYWJsZWQga2V5cyBtYXkgYmUgdXNlZCBmb3Igc2lnbmluZykgKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleTogXCJLZXkjXCIgZm9sbG93ZWQgYnkgYSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0b1xuICAgICAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXItZGVmaW5lZCBtZXRhZGF0YS4gV2hlbiByZW5kZXJpbmcgKGUuZy4sIGluIHRoZSBicm93c2VyKSB5b3Ugc2hvdWxkIHRyZWF0XG4gICAgICAgICAgICogaXQgYXMgdW50cnVzdGVkIHVzZXIgZGF0YSAoYW5kIGF2b2lkIGluamVjdGluZyBtZXRhZGF0YSBpbnRvIEhUTUwgZGlyZWN0bHkpIGlmXG4gICAgICAgICAgICogdW50cnVzdGVkIHVzZXJzIGNhbiBjcmVhdGUvdXBkYXRlIGtleXMgKG9yIHRoZWlyIG1ldGFkYXRhKS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBtZXRhZGF0YT86IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3duZXIgb2YgdGhlIGtleVxuICAgICAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeTogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkLCBzZXJpYWxpemVkIHB1YmxpYyBrZXkuIFRoZSBmb3JtYXQgdXNlZCBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTpcbiAgICAgICAgICAgKiAtIFNlY3AyNTZrMSBrZXlzIHVzZSA2NS1ieXRlIHVuY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIEJMUyBrZXlzIHVzZSA0OC1ieXRlIGNvbXByZXNzZWQgQkxTMTItMzgxIChaQ2FzaCkgZm9ybWF0O1xuICAgICAgICAgICAqIC0gRWQyNTUxOSBrZXlzIHVzZSB0aGUgY2Fub25pY2FsIDMyLWJ5dGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFJGQyA4MDMyLlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHB1cnBvc2UgZm9yIHdoaWNoIHRoZSBrZXkgY2FuIGJlIHVzZWQgKGUuZy4sIGNoYWluIGlkIGZvciB3aGljaCB0aGUga2V5IGlzIGFsbG93ZWQgdG8gc2lnbiBtZXNzYWdlcylcbiAgICAgICAgICAgKiBAZXhhbXBsZSBFdGgyVmFsaWRhdG9yKDEpXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm9zOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgTGlzdE1mYVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgKi9cbiAgICAgICAgICBtZmFfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBMaXN0VG9rZW5zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICB0b2tlbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXR1cm5lZCBhcyBhIHJlc3BvbnNlIGZyb20gbXVsdGlwbGUgcm91dGVzIChlLmcuLCAnZ2V0IG1mYScsICdhcHByb3ZlIG1mYScsICdhcHByb3ZlIHRvdHAnKS4gKi9cbiAgICBNZmFSZXF1ZXN0SW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFwcHJvdmFsIHJlcXVlc3QgSUQuICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICByZWNlaXB0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWNlaXB0XCJdIHwgbnVsbDtcbiAgICAgICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAxNzAxODc5NjQwXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgICAgICBzZXNzaW9uX2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbkluZm9cIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAgICAgKiBzaG91bGQgaW5jbHVkZSB0aGlzIHZhbHVlIGluIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyXG4gICAgICAgICAgICovXG4gICAgICAgICAgdG9rZW46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBPcmdJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlLCBhbGwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGludm9sdmluZyBrZXlzIGluIHRoaXMgb3JnIGFyZSBkaXNhYmxlZC4gKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZDogdGhpcyBmaWVsZCBzaG91bGQgYmUgaWdub3JlZC4gKi9cbiAgICAgICAgICBrZXlfaW1wb3J0X2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyB1bml2ZXJzYWxseSB1bmlxdWUga2V5LXdyYXBwaW5nLWtleSBpZGVudGlmaWVyLlxuICAgICAgICAgICAqIFRoaXMgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBzZXR0aW5nIHVwIGtleSBleHBvcnQuXG4gICAgICAgICAgICogQGV4YW1wbGUgbXJrLWZjZTA5NTI1ZTgxNTg3ZDIzNTIwZjExZTA3ZTJlOWQ5XG4gICAgICAgICAgICovXG4gICAgICAgICAga3drX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIERhdGUvdGltZSAoaW4gVVRDKSB3aGVuIGxhc3QgJ3Vuc3Rha2UnIHdhcyBwZXJmb3JtZWQuIFVuaXggZXBvY2ggaWYgbm9uZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBUT0RPXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91bnN0YWtlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSAndW5zdGFrZScgY2FsbHMgaGFwcGVuZWQgb24gdGhlIGRheSB3aGVuIGBsYXN0X3Vuc3Rha2VgIHdhcyBwZXJmb3JtZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91bnN0YWtlX2RheV9jb3VudDogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLCB3aGljaCBhcmUgSFRUUFMgVVJMcyBhcmUgbm90aWZpZWQgYWJvdXQgYVxuICAgICAgICAgICAqIGNvbmZpZ3VyYWJsZSBzZXQgb2YgZXZlbnRzIGluIGFuIG9yZ2FuaXphdGlvbi4gRm9yIGVhY2ggZXZlbnQsIEN1YmVTaWduZXIgc2VuZHMgYSBQT1NUXG4gICAgICAgICAgICogcmVxdWVzdCB3aXRoIGEgSlNPTi1mb3JtYXR0ZWQgYm9keSB0aGF0IGNvbnRhaW5zIHRoZSBldmVudCBkZXRhaWxzLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50XCJcbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgcG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgYSBrZXkgaXMgdXNlZCBmb3Igc2lnbmluZ1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCBUT1RQIGZhaWx1cmUgbGltaXQsIGkuZS4sIHRoZSBudW1iZXJcbiAgICAgICAgICAgKiBvZiB0aW1lcyBhIHVzZXIgY2FuIHByb3ZpZGUgYW4gaW5jb3JyZWN0IFRPVFAgY29kZSBiZWZvcmUgYmVpbmcgcmF0ZSBsaW1pdGVkLlxuICAgICAgICAgICAqIFRoaXMgdmFsdWUgY2FuIGJlIGJldHdlZW4gMSBhbmQgNSAoaW5jbHVzaXZlKS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIG1pbmltdW1cbiAgICAgICAgICAgKiBhbW91bnQgb2YgdGltZSAoaW4gc2Vjb25kcykgYmV0d2VlbiB3aGVuIGEgdXNlci1leHBvcnQgaXMgaW5pdGlhdGVkIGFuZCB3aGVuXG4gICAgICAgICAgICogaXQgbWF5IGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWUgaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2VcbiAgICAgICAgICAgKiBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X2RlbGF5OiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50XG4gICAgICAgICAgICogb2YgdGltZSAoaW4gc2Vjb25kcykgYmV0d2VlbiB3aGVuIHRoZSB1c2VyLWV4cG9ydCBkZWxheSBpcyBjb21wbGV0ZWQgYW5kIHdoZW5cbiAgICAgICAgICAgKiB0aGUgdXNlciBleHBvcnQgcmVxdWVzdCBoYXMgZXhwaXJlZCBhbmQgY2FuIG5vIGxvbmdlciBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlXG4gICAgICAgICAgICogaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2Ugb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF93aW5kb3c6IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIHRoZSBrZXkgaXMgaW4gKi9cbiAgICAgICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFJvbGVLZXlzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBrZXlzIGluIGEgcm9sZSAqL1xuICAgICAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0Um9sZVVzZXJzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCB1c2VycyBpbiBhIHJvbGUgKi9cbiAgICAgICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5Sb2xlSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0Um9sZXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIGluIGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICAgICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFVzZXJFeHBvcnRMaXN0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBleHBvcnRfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBSZXZva2VUb2tlblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgdG9rZW4/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRva2VuSW5mb1wiXSB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUmV2b2tlVG9rZW5zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VucyB0aGF0IHdlcmUgcmV2b2tlZC4gKi9cbiAgICAgICAgICByZXZva2VkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRva2VuSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFJvbGVJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHJvbGUgaXMgZW5hYmxlZFxuICAgICAgICAgICAqIEBleGFtcGxlIHRydWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZCBUaGUgQ3ViZVNpZ25lciBJRHMgb2YgYXQgbW9zdCAxMDAga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhpcyByb2xlICovXG4gICAgICAgICAga2V5cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlIChtdXN0IGJlIGFscGhhbnVtZXJpYylcbiAgICAgICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFBvbGljeSB0aGF0IGlzIGNoZWNrZWQgd2hlbmV2ZXIgYSBrZXkgaXMgYWNjZXNzZWQgZm9yIHNpZ25pbmcgdmlhIHRoaXMgcm9sZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICAgICAqICAgICAgIFwiMTIzLjQ1Ni43OC45LzE2XCJcbiAgICAgICAgICAgKiAgICAgXVxuICAgICAgICAgICAqICAgfSxcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAgICAgKiAgICAgfVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSByb2xlXG4gICAgICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgbGlzdCBvZiBhdCBtb3N0IDEwMCB1c2VycyB3aXRoIGFjY2VzcyB0byB0aGUgcm9sZS4gKi9cbiAgICAgICAgICB1c2Vycz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBTZXNzaW9uSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2Vzc2lvblxuICAgICAgICAgICAqIEBleGFtcGxlIE9JREMgbG9naW4gc2Vzc2lvblxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgc2Vzc2lvbiwgYnV0IGNhbm5vdCBiZSB1c2VkIGZvciBhdXRoLlxuICAgICAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgZnJvbSBhbnkgb3BlcmF0aW9uIG9wZXJhdGluZyBvbiBtdWx0aXBsZSBzZXNzaW9ucyAqL1xuICAgIFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBTb2xhbmFTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgU3Rha2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIGtleSBpZCAoXCJLZXkjLi4uXCIpXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5I2RiMTczMWY4LTM2NTktNDVjMC04ODViLWUxMWUxZjViN2JlMlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNyZWF0ZWRfdmFsaWRhdG9yX2tleV9pZDogc3RyaW5nO1xuICAgICAgICAgIGRlcG9zaXRfdHg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFR4blwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBUb2tlbkluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVzZSBpdCB0byByZXZva2UgYSBzZXNzaW9uLiBDYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC4gKi9cbiAgICAgICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbnMgcHVycG9zZSAqL1xuICAgICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT0F1dGgyIHN0YW5kYXJkIFRva2VuIFJlc3BvbnNlLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NzQ5I3NlY3Rpb24tNC4yLjJcbiAgICAgKi9cbiAgICBUb2tlblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzIHRva2VuIGlzc3VlZCBieSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIuICovXG4gICAgICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgICAgZXhwaXJlc19pbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gT0lEQyB0b2tlbiBpc3N1ZWQgYnkgQ3ViaXN0LCBjb250YWluaW5nIHVzZXIgaW5mb3JtYXRpb24gKi9cbiAgICAgICAgICBpZF90b2tlbj86IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIHRoZSB0b2tlbiBpc3N1ZWQuIFZhbHVlIGlzIGNhc2UgaW5zZW5zaXRpdmUuICovXG4gICAgICAgICAgdG9rZW5fdHlwZTogc3RyaW5nO1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVG90cEluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBUT1RQIGNoYWxsZW5nZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBUb3RwQ2hhbGxlbmdlIzc4OTJlYmJhLTU2M2UtNDg1Yi1iYjdkLWUyNjI2NzM2MzI4NlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gU3RhbmRhcmQgVE9UUCB1cmwgd2hpY2ggaW5jbHVkZXMgZXZlcnl0aGluZyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBUT1RQLlxuICAgICAgICAgICAqIEBleGFtcGxlIG90cGF1dGg6Ly90b3RwL0N1YmlzdDphbGljZS0lNDBleGFtcGxlLmNvbT9zZWNyZXQ9REFIRjdLQ09UUVdTT01LNFhGRU1OSFhPNEo0MzNPRDcmaXNzdWVyPUN1YmlzdFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfdXJsOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFVuc3Rha2UgcmVzcG9uc2VzIGFyZSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZXMuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqIFRoaXMgbWVzc2FnZSBjYW4gYmUgZGlyZWN0bHkgUE9TVGVkIHRvIHRoZSBCZWFjb24gbm9kZSdzXG4gICAgICogYC9ldGgvdjEvYmVhY29uL3Bvb2wvdm9sdW50YXJ5X2V4aXRzYCBlbmQtcG9pbnQgKHNlZSBleHBlY3RlZCBzY2hlbWFcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vc3VibWl0UG9vbFZvbHVudGFyeUV4aXQpKS5cbiAgICAgKi9cbiAgICBVbnN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBtZXNzYWdlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlZvbHVudGFyeUV4aXRcIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEJMUyBzaWduYXR1cmUuXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg5MTBjN2NkNTM3ZWQ5MWNjOGM0YTgyZjNjYmQ4MzJlOWJlOGMyNGEyMmU5Yzg2ZGY0NzlmN2NlNDIwMjVlYTZhMDk2MTliNDE4YjY2NmEwNjBlMjYwZDJhYWUzMWI4ZTUwZTlkMDVjYTM0NDJjN2VlZDNiNTA3ZTUyMDdlMTQ2NzQyNzVmNjhjMmJhODRjNGJmNmI4ZGQzNjRhMzA0YWNhYzhjZmFiMzY4MWUyNTE0YjQ0MDBmOTI0MmJjNjExNjRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBVcGRhdGVPcmdSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5ICovXG4gICAgICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgbm90aWZpY2F0aW9uIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnRcIlxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCJodHRwczovL2V4YW1wbGUuY29tXCJcbiAgICAgICAgICAgKiAgICAgXVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBUT1RQIGZhaWx1cmUgbGltaXRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCBkZWxheVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X2RlbGF5PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgd2luZG93XG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGVuY3J5cHRlZCB1c2VyLWV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBleHBvcnRlZCBrZXkgbWF0ZXJpYWwsIGVuY3J5cHRlZCB3aXRoIEFFUy0yNTYtR0NNIHVuZGVyIGEga2V5XG4gICAgICAgICAgICogZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0IHZpYSBIUEtFIChSRkM5MTgwKVxuICAgICAgICAgICAqIHdpdGggREhLRU0oUC0yNTYsIEhLREYtU0hBMjU2KSBhbmQgYmFzZTY0IGVuY29kZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jcnlwdGVkX2tleV9tYXRlcmlhbDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBhcyBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHRvIHdoaWNoIHRoaXMga2V5IGJlbG9uZ3MuICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgc3VjY2Vzc2Z1bCB1c2VyLWV4cG9ydCBpbml0IHJlcXVlc3QgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRSZXF1ZXN0XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIGJlaW5nIHJlcXVlc3RlZC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZW1haWxcbiAgICAgICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICAgICAgbWZhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZpZ3VyZWRNZmFcIl1bXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE1GQSBwb2xpY3ksIGFwcGxpZXMgYmVmb3JlIGxvZ2dpbmcgaW4gYW5kIG90aGVyIHNlbnNpdGl2ZSBvcGVyYXRpb25zICovXG4gICAgICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG5hbWVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGwgb3JnYW5pemF0aW9ucyB0aGUgdXNlciBiZWxvbmdzIHRvXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHBhcmFtZXRlcnM6IG5ldmVyO1xuICByZXF1ZXN0Qm9kaWVzOiBuZXZlcjtcbiAgaGVhZGVyczogbmV2ZXI7XG4gIHBhdGhJdGVtczogbmV2ZXI7XG59XG5cbmV4cG9ydCB0eXBlICRkZWZzID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgdHlwZSBleHRlcm5hbCA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IGludGVyZmFjZSBvcGVyYXRpb25zIHtcbiAgLyoqXG4gICAqIFVzZXIgSW5mb1xuICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKi9cbiAgYWJvdXRNZUxlZ2FjeToge1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgZ2V0T3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiT3JnSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgT3JnXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAqXG4gICAqIFVwZGF0ZSBvcmdhbml6YXRpb24gYXR0cmlidXRlcyAoZW5hYmxlZCBmbGFnLCBuYW1lLCBhbmQgcG9saWNpZXMpLlxuICAgKi9cbiAgdXBkYXRlT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZU9yZ1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVcGRhdGVPcmdSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgKlxuICAgKiBTaWducyBhbiBBdmFsYW5jaGUgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4gU2VjcEF2YSBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYXZhU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdmFsYW5jaGUgYmVjaDMyIGFkZHJlc3MgZm9ybWF0IHdpdGhvdXQgdGhlIGNoYWluIHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSBhdmF4MWFtNHc2aGZydm1oM2FrZHV6a2p0aHJ0Z3RxYWZhbGNlNmFuOGNyXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdmFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkF2YVNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBCaXRjb2luIFRyYW5zYWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEJpdGNvaW4gVHJhbnNhY3Rpb25cbiAgICpcbiAgICogU2lnbnMgYSBCaXRjb2luIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYnRjU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzIgZW5jb2Rpbmcgb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgYmMxcTVwNXFrYWU3N2x5ODBrcjRweWZ5dGRxbTdyZjA4ZGRoZGVqbDlnXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJ0Y1NpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICogQGRlc2NyaXB0aW9uIERlcml2ZSBLZXkgRnJvbSBMb25nLUxpdmVkIE1uZW1vbmljXG4gICAqXG4gICAqIERlcml2ZXMgYSBrZXkgb2YgYSBzcGVjaWZpZWQgdHlwZSB1c2luZyBhIHN1cHBsaWVkIGRlcml2YXRpb24gcGF0aCBhbmQgYW5cbiAgICogZXhpc3RpbmcgbG9uZy1saXZlZCBtbmVtb25pYy5cbiAgICovXG4gIGRlcml2ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXJpdmVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBFSVAtMTkxIERhdGFcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAqXG4gICAqIFNpZ25zIGEgbWVzc2FnZSB1c2luZyBFSVAtMTkxIHBlcnNvbmFsX3NpZ24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqL1xuICBlaXAxOTFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIEVWTSBhZGRyZXNzIG9mIHRoZSBTZWNwMjU2azEga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDkwMTFhZGJDQzNiQzljMDMwN0JCMDdGMzdEZGExYTFhOWM2OWQyRVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWlwMTkxU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFaXAxOTFPcjcxMlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAqXG4gICAqIFNpZ25zIHR5cGVkIGRhdGEgYWNjb3JkaW5nIHRvIEVJUC03MTIgd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqL1xuICBlaXA3MTJTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIEVWTSBhZGRyZXNzIG9mIHRoZSBTZWNwMjU2azEga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDkwMTFhZGJDQzNiQzljMDMwN0JCMDdGMzdEZGExYTFhOWM2OWQyRVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWlwNzEyU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFaXAxOTFPcjcxMlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICpcbiAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBhXG4gICAqIHZhbGlkIEN1YmVTaWduZXIgc2Vzc2lvbi5cbiAgICpcbiAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZVxuICAgKiB0byBhbm90aGVyIHNlcnZpY2Ugd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgKi9cbiAgY3JlYXRlUHJvb2ZDdWJlU2lnbmVyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICpcbiAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgbWV0IHRoZVxuICAgKiBhdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMgKGFsbG93ZWQgaXNzdWVycyAmIGF1ZGllbmNlcykgZm9yIEN1YmVTaWduZXJcbiAgICogd2l0aG91dCBsZWFraW5nIHRoZWlyIGNyZWRlbnRpYWxzLlxuICAgKlxuICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlIHRvIGFub3RoZXIgc2VydmljZVxuICAgKiB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAqL1xuICBjcmVhdGVQcm9vZk9pZGM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAqXG4gICAqIEFsbG93cyBhIHRoaXJkLXBhcnR5IHRvIHZhbGlkYXRlIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBXaGVuIGEgdGhpcmQtcGFydHkgaXMgcHJvdmlkZWQgYW4gW0lkZW50aXR5UHJvb2ZdIG9iamVjdCwgdGhleSBtdXN0IGNoZWNrIGl0c1xuICAgKiB2ZXJhY2l0eSBieSBjYWxsaW5nIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHZlcmlmeVByb29mOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAqXG4gICAqIEdlbmVyYXRlIGFuIGVwaGVtZXJhbCBrZXkgdGhhdCBhIGNsaWVudCBjYW4gdXNlIGZvciBrZXktaW1wb3J0IGVuY3J5cHRpb24uXG4gICAqL1xuICBjcmVhdGVLZXlJbXBvcnRLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlJbXBvcnRLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbXBvcnQgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBJbXBvcnQgS2V5XG4gICAqXG4gICAqIFNlY3VyZWx5IGltcG9ydHMgYW4gZXhpc3Rpbmcga2V5IHVzaW5nIGEgcHJldmlvdXNseSBnZW5lcmF0ZWQga2V5LWltcG9ydCBrZXkuXG4gICAqL1xuICBpbXBvcnRLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW1wb3J0S2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEludml0ZSBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgaW4gYW4gZXhpc3Rpbmcgb3JnIGFuZCBzZW5kcyB0aGF0IHVzZXIgYW4gaW52aXRlIGVtYWlsLlxuICAgKi9cbiAgaW52aXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleXNcbiAgICpcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBvd25lZCBrZXlzIGluIGEgZ2l2ZW4gb3JnLlxuICAgKi9cbiAgbGlzdEtleXNJbk9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBGaWx0ZXIgYnkga2V5IHR5cGVcbiAgICAgICAgICogQGV4YW1wbGUgU2VjcEV0aEFkZHJcbiAgICAgICAgICovXG4gICAgICAgIGtleV90eXBlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXlcbiAgICpcbiAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSBuZXcga2V5cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAqL1xuICBjcmVhdGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlS2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIEdldCBLZXlcbiAgICpcbiAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIGtleS5cbiAgICovXG4gIGdldEtleUluT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEtleVxuICAgKlxuICAgKiBEZWxldGVzIGEga2V5IHNwZWNpZmllZCBieSBpdHMgSUQuXG4gICAqIE9ubHkgdGhlIGtleSBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUga2V5cy5cbiAgICovXG4gIGRlbGV0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIEtleVxuICAgKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhIGtleS4gIFRoZSB1c2VyIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBrZXkgb3Igb3JnYW5pemF0aW9uIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICB1cGRhdGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZUtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgS2V5IFJvbGVzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleSBSb2xlc1xuICAgKlxuICAgKiBHZXQgYWxsIHJvbGVzIHRoZSBrZXkgaXMgaW5cbiAgICovXG4gIGxpc3RLZXlSb2xlczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdEtleVJvbGVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzIHRoYXQgYXJlIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlcixcbiAgICogaS5lLiwgdGhvc2UgaW4gd2hpY2ggdGhlIGN1cnJlbnQgdXNlciBpcyBsaXN0ZWQgYXMgYW4gYXBwcm92ZXJcbiAgICovXG4gIG1mYUxpc3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJMaXN0TWZhUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAqXG4gICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgKi9cbiAgbWZhR2V0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICpcbiAgICogQXBwcm92ZSBvciByZWplY3QgcmVxdWVzdCBhZnRlciBsb2dnaW5nIGluIHdpdGggQ3ViZVNpZ25lci5cbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIHRoZSBjdXJyZW50bHktbG9nZ2VkIHVzZXIgYXMgYW4gYXBwcm92ZXJcbiAgICogb2YgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IG9mIHRoZSBbU3RhdHVzOjpSZXF1aXJlZEFwcHJvdmVyc10ga2luZC4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZlxuICAgKiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG9cbiAgICogcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVDczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICBtZmFfdm90ZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVm90ZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICpcbiAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBGSURPLlxuICAgKi9cbiAgbWZhRmlkb0luaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9Bc3NlcnRDaGFsbGVuZ2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqXG4gICAqIElmIGFwcHJvdmluZywgYWRkcyBhbiBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICogdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlRmlkb0NvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQXNzZXJ0QW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZS9SZWplY3QgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIHRoZSBjdXJyZW50IHVzZXIgYXMgYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5XG4gICAqIHByb3ZpZGluZyBUT1RQIGNvZGUuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpc1xuICAgKiBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlVG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICBtZmFfdm90ZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVm90ZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cEFwcHJvdmVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAqIEBkZXNjcmlwdGlvbiBNaW50IGFuIE9JREMgSUQgdG9rZW4gZm9yIFR3aXR0ZXJcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBhY3RzIGlkZW50aWNhbGx5IHRvIFR3aXR0ZXIncyBbYG9hdXRoMi90b2tlbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLnR3aXR0ZXIuY29tL2VuL2RvY3MvYXV0aGVudGljYXRpb24vYXBpLXJlZmVyZW5jZS90b2tlbikgZW5kcG9pbnQsXG4gICAqIGJ1dCBleHRlbmRzIHRoZSBvdXRwdXQgd2l0aCBhbiBgaWRfdG9rZW5gLlxuICAgKlxuICAgKiBUaGlzIGBpZF90b2tlbmAgY2FuIHRoZW4gYmUgdXNlZCB3aXRoIGFueSBDdWJlU2lnbmVyIGVuZHBvaW50IHRoYXQgcmVxdWlyZXMgYW4gT0lEQyB0b2tlbi5cbiAgICpcbiAgICogPiBbIUlNUE9SVEFOVF1cbiAgICogPiBUaGlzIGVuZHBvaW50IHdpbGwgZmFpbCB1bmxlc3MgdGhlIG9yZyBpcyBjb25maWd1cmVkIHRvIGFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90d2l0dGVyYCBhbmQgY2xpZW50IElEIGJlaW5nIHVzZWQgZm9yIFR3aXR0ZXIuXG4gICAqL1xuICBvYXV0aDJUd2l0dGVyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG9rZW5SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMb2dpbiB3aXRoIE9JRENcbiAgICogQGRlc2NyaXB0aW9uIExvZ2luIHdpdGggT0lEQ1xuICAgKlxuICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBzaWduZXIgc2Vzc2lvbi5cbiAgICpcbiAgICogTUZBIGlzIHJlcXVpcmVkIHdoZW46XG4gICAqIC0gYW4gTUZBIHBvbGljeSBpcyBleHBsaWNpdGx5IGF0dGFjaGVkIHRvIHRoZSB1c2VyIGxvZ2dpbmcgaW5cbiAgICogKGUuZy4sIGFuIG9yZyBvd25lciBjYW4gZG8gdGhhdCBhdCB1c2VyIGNyZWF0aW9uIHRpbWUgdG8gcmVxdWlyZSBjZXJ0YWluIGtpbmQgb2YgTUZBKVxuICAgKiAtIHRoZSB1c2VyIGhhcyBhdCBsZWFzdCAxIE1GQSBmYWN0b3IgY29uZmlndXJlZFxuICAgKi9cbiAgb2lkY0F1dGg6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlc1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgYWxsIHJvbGVzIGluIGFuIG9yZ2FuaXphdGlvbiB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaXMgYWxsb3dlZCB0byBhY2Nlc3MuXG4gICAqL1xuICBsaXN0Um9sZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG9uJ3QgaW5jbHVkZSBrZXlzIGFuZCB1c2VycyBmb3IgZWFjaCByb2xlICovXG4gICAgICAgIHN1bW1hcml6ZT86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUm9sZVxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLiBVbmxlc3MgdGhlIGxvZ2dlZC1pbiB1c2VyXG4gICAqIGlzIHRoZSBvd25lciwgdGhleSBhcmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbmV3bHkgY3JlYXRlZCByb2xlLlxuICAgKi9cbiAgY3JlYXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHJlcXVlc3QgYm9keSB0byBzZXQgdGhlIHJvbGUgbmFtZSAqL1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVSb2xlUmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVSb2xlUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIEdldCBSb2xlXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uXG4gICAqL1xuICBnZXRSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUm9sZUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBSb2xlXG4gICAqXG4gICAqIERlbGV0ZXMgYSByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICovXG4gIGRlbGV0ZVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBSb2xlXG4gICAqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYSByb2xlICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOmVuYWJsZWAgc2NvcGUpLlxuICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5YCBzY29wZSkuXG4gICAqIFRoZSB1c2VyIG11c3QgYmUgaW4gdGhlIHJvbGUgb3IgYW4gb3duZXIgb2YgdGhlIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIHVwZGF0ZVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlUm9sZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSb2xlSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgS2V5c1xuICAgKiBAZGVzY3JpcHRpb24gQWRkIEtleXNcbiAgICpcbiAgICogQWRkcyBhIGxpc3Qgb2YgZXhpc3Rpbmcga2V5cyB0byBhbiBleGlzdGluZyByb2xlLlxuICAgKi9cbiAgYWRkS2V5c1RvUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRLZXlzVG9Sb2xlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHt9O1xuICB9O1xuICAvKipcbiAgICogQWRkIFVzZXJcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBVc2VyXG4gICAqXG4gICAqIEFkZHMgYW4gZXhpc3RpbmcgdXNlciB0byBhbiBleGlzdGluZyByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gYWRkIHVzZXJzIHRvIGEgcm9sZS5cbiAgICovXG4gIGFkZFVzZXJUb1JvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFJvbGUgS2V5c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIEtleXNcbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwga2V5cyBpbiBhIHJvbGUuXG4gICAqL1xuICBsaXN0Um9sZUtleXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVLZXlzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIEtleVxuICAgKlxuICAgKiBSZW1vdmVzIGEgZ2l2ZW4ga2V5IGZyb20gYSByb2xlXG4gICAqL1xuICByZW1vdmVLZXlGcm9tUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgYSBzaW5nbGUgcGFnZSBvZiBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IGEgc2luZ2xlIHBhZ2Ugb2YgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgKlxuICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBHRVQgL29yZy97b3JnX2lkfS9zZXNzaW9uP3JvbGU9YFxuICAgKlxuICAgKiBSZXR1cm5zIGFsbCBhY2Nlc3MgdG9rZW5zIGZvciBhIGdpdmVuIHJvbGUuXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBjcmVhdGUgYSB0b2tlbiBmb3IgaXQuXG4gICAqL1xuICBsaXN0Um9sZVRva2Vuczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkxpc3RUb2tlbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgVG9rZW5cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBUb2tlblxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFjY2VzcyB0b2tlbiBmb3IgYSBnaXZlbiByb2xlICh0byBiZSB1c2VkIGFzIFwiQVBJIEtleVwiIGZvciBhbGwgc2lnbmluZyBhY3Rpb25zKS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGNyZWF0ZSBhIHRva2VuIGZvciBpdC5cbiAgICovXG4gIGNyZWF0ZVJvbGVUb2tlbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVUb2tlblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIEFsbCBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgQWxsIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICpcbiAgICogKipEZXByZWNhdGVkKio6IFVzZSBgREVMRVRFIC9vcmcve29yZ19pZH0vc2Vzc2lvbj9yb2xlPWAgaW5zdGVhZFxuICAgKlxuICAgKiBSZXZva2VzIGFsbCBhY2Nlc3MgdG9rZW5zIGFzc29jaWF0ZWQgd2l0aCBhIHJvbGUuXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgcmV2b2tlQWxsUm9sZVRva2Vuczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJldm9rZVRva2Vuc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBUb2tlbiAoRGVwcmVjYXRlZClcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBUb2tlbiAoRGVwcmVjYXRlZClcbiAgICpcbiAgICogKipEZXByZWNhdGVkKio6IFVzZSBgREVMRVRFIC9vcmcve29yZ19pZH0vc2Vzc2lvbi97c2Vzc2lvbl9pZH1gXG4gICAqXG4gICAqIFJldm9rZXMgYW4gYWNjZXNzIHRva2VuIGFzc29jaWF0ZWQgd2l0aCBhIHJvbGUuXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgcmV2b2tlUm9sZVRva2VuOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgc2Vzc2lvbiB0byByZXZva2VcbiAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgKi9cbiAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUmV2b2tlVG9rZW5SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFJvbGUgVXNlcnMuXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgVXNlcnMuXG4gICAqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHVzZXJzIHdobyBoYXZlIGFjY2VzcyB0byBhIHJvbGUuXG4gICAqL1xuICBsaXN0Um9sZVVzZXJzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIFVzZXJcbiAgICpcbiAgICogUmVtb3ZlcyBhbiBleGlzdGluZyB1c2VyIGZyb20gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiByZW1vdmUgdXNlcnMgZnJvbSBhIHJvbGUuXG4gICAqL1xuICByZW1vdmVVc2VyRnJvbVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHNlc3Npb25zXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IHNlc3Npb25zXG4gICAqXG4gICAqIElmIG5vIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLCBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyByZXR1cm5lZFxuICAgKi9cbiAgbGlzdFNlc3Npb25zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUgbmFtZSBvciBJRCBvZiBhIHJvbGUgdG8gb3BlcmF0ZSBvblxuICAgICAgICAgKiBAZXhhbXBsZSBteS1yb2xlXG4gICAgICAgICAqL1xuICAgICAgICByb2xlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgdXNlciBzZXNzaW9uLCBzaWxlbnRseSB0cnVuY2F0aW5nIHJlcXVlc3RlZCBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lc1xuICAgKiB0byBiZSBhdCBtb3N0IHJlcXVlc3RvcidzIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWUsIHJlc3BlY3RpdmVseS5cbiAgICovXG4gIGNyZWF0ZVNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlU2Vzc2lvblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIGV4aXN0aW5nIHNlc3Npb24ocylcbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBleGlzdGluZyBzZXNzaW9uKHMpXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgZXhpc3Rpbmcgc2Vzc2lvbnMsIHByZXZlbnRpbmcgdGhlbSBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkLlxuICAgKiBJZiBubyBxdWVyeSBwYXJhbXMgYXJlIHByb3ZpZGVkLCB0aGUgY3VycmVudCBzZXNzaW9uIGlzIHJldm9rZWQuXG4gICAqL1xuICByZXZva2VTZXNzaW9uczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUgbmFtZSBvciBJRCBvZiBhIHJvbGUgdG8gb3BlcmF0ZSBvblxuICAgICAgICAgKiBAZXhhbXBsZSBteS1yb2xlXG4gICAgICAgICAqL1xuICAgICAgICByb2xlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTZXNzaW9uc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyB0aGUgY3VycmVudCBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICovXG4gIHJldm9rZUN1cnJlbnRTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgKi9cbiAgZ2V0U2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gZ2V0XG4gICAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25JbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBhIHNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBhIHNlc3Npb25cbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBhbiBleGlzdGluZyBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICovXG4gIHJldm9rZVNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIHJldm9rZVxuICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTZXNzaW9uSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAqXG4gICAqIFNpZ25zIGEgU29sYW5hIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBzb2xhbmFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBiYXNlNTgtZW5jb2RlZCBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDg2WlJQc3pCcDVFb1BqN3dSM2JIbjd3bkFaNWlZZnBhc1JjN0RLRlBUVWFaXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNvbGFuYVNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFRva2VuLUFjY2Vzc2libGUgS2V5c1xuICAgKiBAZGVzY3JpcHRpb24gR2V0IFRva2VuLUFjY2Vzc2libGUgS2V5c1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGtleXMgdGhhdCB0aGUgcm9sZSB0b2tlbiBjYW4gYWNjZXNzLlxuICAgKi9cbiAgbGlzdFRva2VuS2V5czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9zXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVzZXIgSW5mb1xuICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKi9cbiAgYWJvdXRNZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICovXG4gIHVzZXJFeHBvcnRMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUgdXNlci1pZCB3aG9zZSB1c2VyLWV4cG9ydCByZXF1ZXN0cyB0byBsaXN0LiBEZWZhdWx0cyB0byB0aGVcbiAgICAgICAgICogY3VycmVudCB1c2VyLiAgT25seSB0aGUgb3JnIG93bmVyIG1heSBsaXN0IHJlcXVlc3RzIGZvciBhbm90aGVyIHVzZXIuXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjODA2Yzk1NDQtZjFmYS00YmFkLThkNGQtMTA5N2ExODQ0NzI2XG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIGtleS1pZCBmb3Igd2hpY2ggdG8gbGlzdCBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0LlxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZFVzZXJFeHBvcnRMaXN0UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICpcbiAgICogVGhpcyBzdGFydHMgYSBkZWxheSAod2hvc2UgbGVuZ3RoIGlzIGRldGVybWluZWQgYnkgT3JnLXdpZGUgc2V0dGluZ3MpXG4gICAqIGJlZm9yZSBleHBvcnQgY2FuIGJlIGNvbXBsZXRlZCwgYW5kIHJldHVybnMgYSB0aWNrZXQgdGhhdCBjYW4gYmUgdXNlZFxuICAgKiB0byBjb21wbGV0ZSB0aGUgZXhwb3J0IG9uY2UgdGhlIHRpbWVyIGhhcyBleHBpcmVkLlxuICAgKlxuICAgKiBPbmx5IG9uZSB1c2VyLWV4cG9ydCByZXF1ZXN0IGNhbiBiZSBhY3RpdmUgZm9yIGEgZ2l2ZW4ga2V5LiBJZiB0aGVyZVxuICAgKiBpcyBhbHJlYWR5IGFuIGFjdGl2ZSBleHBvcnQsIHRoaXMgZW5kcG9pbnQgd2lsbCByZXR1cm4gYW4gZXJyb3IuIFRvXG4gICAqIGNyZWF0ZSBhIG5ldyByZXF1ZXN0LCBmaXJzdCBkZWxldGUgdGhlIGV4aXN0aW5nIG9uZS5cbiAgICovXG4gIHVzZXJFeHBvcnRJbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRJbml0UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJFeHBvcnRJbml0UmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKi9cbiAgdXNlckV4cG9ydERlbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGtleS1pZCB3aG9zZSBleHBvcnQgcmVxdWVzdCBzaG91bGQgYmUgZGVsZXRlZFxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlci1pZCB3aG8gb3ducyB0aGlzIHJlcXVlc3QuIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICAgICAqIE9ubHkgdGhlIG9yZyBvd25lciBtYXkgZGVsZXRlIHVzZXItZXhwb3J0IHJlcXVlc3RzIGZvciBhbm90aGVyIHVzZXIuXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjODA2Yzk1NDQtZjFmYS00YmFkLThkNGQtMTA5N2ExODQ0NzI2XG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBjYW4gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgaW5pdGlhdGluZyBhIHVzZXItZXhwb3J0IHJlcXVlc3QgdmlhXG4gICAqIHRoZSBgdXNlcl9leHBvcnRfaW5pdGAgQVBJLCBhbmQgb25seSB3aXRoaW4gdGhlIHN1YnNlcXVlbnQgZXhwb3J0IHdpbmRvd1xuICAgKiAoaS5lLiwgYWZ0ZXIgdGhlIGV4cG9ydCBkZWxheSBoYXMgcGFzc2VkIGFuZCBiZWZvcmUgdGhlIHJlcXVlc3QgaGFzIGV4cGlyZWQpLlxuICAgKlxuICAgKiBUbyBjaGVjayBvbiB0aGUgc3RhdHVzIG9mIGFuIGV4cG9ydCByZXF1ZXN0LCBzZWUgdGhlIGB1c2VyX2V4cG9ydF9saXN0YCBBUEkuXG4gICAqL1xuICB1c2VyRXhwb3J0Q29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydENvbXBsZXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICovXG4gIHVzZXJSZWdpc3RlckZpZG9Jbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBGSURPIGtleVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEZJRE8ga2V5XG4gICAqXG4gICAqIERlbGV0ZXMgYSBGSURPIGtleSBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgdGhlIGtleSBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyRGVsZXRlRmlkbzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIEZpZG9LZXlcbiAgICAgICAgICogQGV4YW1wbGUgRmlkb0tleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGZpZG9faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAqXG4gICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHVzZXJSZXNldFRvdHBJbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwUmVzZXRSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlRvdHBJbmZvXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFRPVFBcbiAgICpcbiAgICogRGVsZXRlcyBUT1RQIGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiBUT1RQIGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICovXG4gIHVzZXJEZWxldGVUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgdXNlclJlc2V0VG90cENvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVmVyaWZ5IFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgKi9cbiAgdXNlclZlcmlmeVRvdHA6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cEFwcHJvdmVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgKi9cbiAgbGlzdFVzZXJzSW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJHZXRVc2Vyc0luT3JnUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICovXG4gIGNyZWF0ZU9pZGNVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZFRoaXJkUGFydHlVc2VyUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIGEgdGhpcmQtcGFydHkgdXNlciBmcm9tIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqL1xuICBkZWxldGVPaWRjVXNlcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPSURDSWRlbnRpdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAqL1xuICByZWdpc3RlckZpZG9Jbml0TGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBBY2NlcHRzIHRoZSByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCB0byB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgcmVnaXN0ZXJGaWRvQ29tcGxldGVMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICpcbiAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVzZXRUb3RwSW5pdExlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwUmVzZXRSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlRvdHBJbmZvXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHJlc2V0VG90cENvbXBsZXRlTGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cENoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgVE9UUFxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAqL1xuICB2ZXJpZnlUb3RwTGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cEFwcHJvdmVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gUmF3IEJsb2JcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gUmF3IEJsb2JcbiAgICpcbiAgICogU2lnbnMgYW4gYXJiaXRyYXJ5IGJsb2Igd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqXG4gICAqIC0gRUNEU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBhcyBiaWctZW5kaWFuIHIgYW5kIHMgcGx1cyByZWNvdmVyeS1pZFxuICAgKiBieXRlIHYsIHdoaWNoIGNhbiBpbiBnZW5lcmFsIHRha2UgYW55IG9mIHRoZSB2YWx1ZXMgMCwgMSwgMiwgb3IgMy5cbiAgICpcbiAgICogLSBFZERTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGluIHRoZSBzdGFuZGFyZCBmb3JtYXQuXG4gICAqXG4gICAqIC0gQkxTIHNpZ25hdHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGJsb2Itc2lnbiBlbmRwb2ludC5cbiAgICovXG4gIGJsb2JTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCbG9iU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCbG9iU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZWNvcmQgaGVhcnRiZWF0XG4gICAqIEBkZXNjcmlwdGlvbiBSZWNvcmQgaGVhcnRiZWF0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgaXMgY2FsbGVkIGJ5IHRoZSBjdWJlM3NpZ25lciBwcm94eSB0byByZWNvcmQgdmFyaW91cyBtZXRyaWNzIHRvIENsb3VkV2F0Y2guXG4gICAqL1xuICBjdWJlM3NpZ25lckhlYXJ0YmVhdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGVhcnRiZWF0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBFVk0gVHJhbnNhY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAqXG4gICAqIFNpZ25zIGFuIEV0aGVyZXVtIChhbmQgb3RoZXIgRVZNKSB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICogUmV0dXJucyBhbiBSTFAtZW5jb2RlZCB0cmFuc2FjdGlvbiB3aXRoIEVJUC0xNTUgc2lnbmF0dXJlLlxuICAgKlxuICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICovXG4gIGV0aDFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIGV0aGVyZXVtIGFkZHJlc3Mgb2YgdGhlIHNlY3Aga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDkwMTFhZGJDQzNiQzljMDMwN0JCMDdGMzdEZGExYTFhOWM2OWQyRVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXRoMVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRXRoMVNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBWYWxpZGF0b3IgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBWYWxpZGF0b3IgUmVxdWVzdFxuICAgKlxuICAgKiBTaWducyBhbiBldGgyIHZhbGlkYXRvciByZXF1ZXN0IHdpdGggYSBnaXZlbiBCTFMga2V5LlxuICAgKlxuICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICovXG4gIGV0aDJTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHZhbGlkYXRvciAoQkxTKSBwdWJsaWMga2V5IHdpdGggMHggcHJlZml4XG4gICAgICAgICAqIEBleGFtcGxlIDB4OTcwMGZiYjhjOTA2OTQyNDQyYzJhNWIzYWQ3NDk4ZjI3YWVkZGEyNTM3ODZhNmZiYWE4ZmVmNDdmYjdhZjIzNGU1MGNmMmNjZTgxNWE1NTMwODc5OTJhZTU2NWQ0OGRhXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdGgyU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFdGgyU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgKlxuICAgKiBTaWducyBhIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2l0aCBhIGB2YWxpZGF0b3Jfa2V5YC4gSWYgYHZhbGlkYXRvcl9rZXlgIGlzIHNldCB0byBhIHByZWdlbmVyYXRlZCBrZXksIHdlIHVzZSB0aGVcbiAgICogcHJvdmlkZWQgdmFsaWRhdG9yIGtleS4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhIG5ldyBCTFMga2V5LlxuICAgKlxuICAgKiBXaGVuIHVzaW5nIGEgcHJlZ2VuZXJhdGVkIGtleSwgdGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlXG4gICAqIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBzdGFrZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGFrZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTdGFrZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICpcbiAgICogSGFuZGxlIHVuc3Rha2luZyByZXF1ZXN0LCBwcm9kdWNpbmcgYSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZVxuICAgKiB0aGF0IGNhbiBiZSBwb3N0ZWQgZGlyZWN0bHkgdG8gdGhlIEJlYWNvbiBjaGFpbi5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICB1bnN0YWtlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHZhbGlkYXRvciAoQkxTKSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4YTk5YTc2ZWQ3Nzk2ZjdiZTIyZDViN2U4NWRlZWI3YzU2NzdlODhlNTExZTBiMzM3NjE4ZjhjNGViNjEzNDliNGJmMmQxNTNmNjQ5ZjdiNTMzNTlmZThiOTRhMzhlNDRjXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbnN0YWtlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVuc3Rha2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgKi9cbiAgc2lnbmVyU2Vzc2lvblJlZnJlc2g6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIG9yZ2FuaXphdGlvbiBvd25pbmcgdGhlIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoRGF0YVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXX0=
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIGJ5IG9wZW5hcGktdHlwZXNjcmlwdC5cbiAqIERvIG5vdCBtYWtlIGRpcmVjdCBjaGFuZ2VzIHRvIHRoZSBmaWxlLlxuICovXG5cbi8qKiBPbmVPZiB0eXBlIGhlbHBlcnMgKi9cbnR5cGUgV2l0aG91dDxULCBVPiA9IHsgW1AgaW4gRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBVPl0/OiBuZXZlciB9O1xudHlwZSBYT1I8VCwgVT4gPSBUIHwgVSBleHRlbmRzIG9iamVjdCA/IChXaXRob3V0PFQsIFU+ICYgVSkgfCAoV2l0aG91dDxVLCBUPiAmIFQpIDogVCB8IFU7XG50eXBlIE9uZU9mPFQgZXh0ZW5kcyBhbnlbXT4gPSBUIGV4dGVuZHMgW2luZmVyIE9ubHldXG4gID8gT25seVxuICA6IFQgZXh0ZW5kcyBbaW5mZXIgQSwgaW5mZXIgQiwgLi4uaW5mZXIgUmVzdF1cbiAgICA/IE9uZU9mPFtYT1I8QSwgQj4sIC4uLlJlc3RdPlxuICAgIDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgcGF0aHMge1xuICBcIi92MC9hYm91dF9tZVwiOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYWJvdXRNZUxlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgT3JnXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBPcmdcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0T3JnXCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIE9yZ1xuICAgICAqXG4gICAgICogVXBkYXRlIG9yZ2FuaXphdGlvbiBhdHRyaWJ1dGVzIChlbmFibGVkIGZsYWcsIG5hbWUsIGFuZCBwb2xpY2llcykuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVPcmdcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdmEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgICAqXG4gICAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYnRjL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEJpdGNvaW4gVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIFNpZ25zIGEgQml0Y29pbiB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJidGNTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKlxuICAgICAqIERlcml2ZXMgYSBrZXkgb2YgYSBzcGVjaWZpZWQgdHlwZSB1c2luZyBhIHN1cHBsaWVkIGRlcml2YXRpb24gcGF0aCBhbmQgYW5cbiAgICAgKiBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImRlcml2ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V2bS9laXAxOTEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFSVAtMTkxIERhdGFcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtMTkxIERhdGFcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgbWVzc2FnZSB1c2luZyBFSVAtMTkxIHBlcnNvbmFsX3NpZ24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVpcDE5MVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9ldm0vZWlwNzEyL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAgICpcbiAgICAgKiBTaWducyB0eXBlZCBkYXRhIGFjY29yZGluZyB0byBFSVAtNzEyIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlaXA3MTJTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvcHJvdmVcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICAgKlxuICAgICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgYVxuICAgICAqIHZhbGlkIEN1YmVTaWduZXIgc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2VcbiAgICAgKiB0byBhbm90aGVyIHNlcnZpY2Ugd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQcm9vZkN1YmVTaWduZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS9wcm92ZS9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgICAqXG4gICAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIG1ldCB0aGVcbiAgICAgKiBhdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMgKGFsbG93ZWQgaXNzdWVycyAmIGF1ZGllbmNlcykgZm9yIEN1YmVTaWduZXJcbiAgICAgKiB3aXRob3V0IGxlYWtpbmcgdGhlaXIgY3JlZGVudGlhbHMuXG4gICAgICpcbiAgICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlIHRvIGFub3RoZXIgc2VydmljZVxuICAgICAqIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUHJvb2ZPaWRjXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvdmVyaWZ5XCI6IHtcbiAgICAvKipcbiAgICAgKiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAgICpcbiAgICAgKiBBbGxvd3MgYSB0aGlyZC1wYXJ0eSB0byB2YWxpZGF0ZSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIFdoZW4gYSB0aGlyZC1wYXJ0eSBpcyBwcm92aWRlZCBhbiBbSWRlbnRpdHlQcm9vZl0gb2JqZWN0LCB0aGV5IG11c3QgY2hlY2sgaXRzXG4gICAgICogdmVyYWNpdHkgYnkgY2FsbGluZyB0aGlzIGVuZHBvaW50XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInZlcmlmeVByb29mXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW1wb3J0X2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgICAqXG4gICAgICogR2VuZXJhdGUgYW4gZXBoZW1lcmFsIGtleSB0aGF0IGEgY2xpZW50IGNhbiB1c2UgZm9yIGtleS1pbXBvcnQgZW5jcnlwdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJjcmVhdGVLZXlJbXBvcnRLZXlcIl07XG4gICAgLyoqXG4gICAgICogSW1wb3J0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBTZWN1cmVseSBpbXBvcnRzIGFuIGV4aXN0aW5nIGtleSB1c2luZyBhIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGtleS1pbXBvcnQga2V5LlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImltcG9ydEtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2ludml0ZVwiOiB7XG4gICAgLyoqXG4gICAgICogSW52aXRlIFVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gSW52aXRlIFVzZXJcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgdXNlciBpbiBhbiBleGlzdGluZyBvcmcgYW5kIHNlbmRzIHRoYXQgdXNlciBhbiBpbnZpdGUgZW1haWwuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImludml0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleXNcbiAgICAgKlxuICAgICAqIEdldHMgdGhlIGxpc3Qgb2Ygb3duZWQga2V5cyBpbiBhIGdpdmVuIG9yZy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0S2V5c0luT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSBuZXcga2V5cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2tleXMve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleVxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIGtleS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRLZXlJbk9yZ1wiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBLZXlcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSBrZXkgc3BlY2lmaWVkIGJ5IGl0cyBJRC5cbiAgICAgKiBPbmx5IHRoZSBrZXkgb3duZXIgYW5kIG9yZyBvd25lcnMgYXJlIGFsbG93ZWQgdG8gZGVsZXRlIGtleXMuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlS2V5XCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIEtleVxuICAgICAqXG4gICAgICogRW5hYmxlIG9yIGRpc2FibGUgYSBrZXkuICBUaGUgdXNlciBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUga2V5IG9yIG9yZ2FuaXphdGlvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfS9yb2xlc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXkgUm9sZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXkgUm9sZXNcbiAgICAgKlxuICAgICAqIEdldCBhbGwgcm9sZXMgdGhlIGtleSBpcyBpblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlSb2xlc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYVwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzIHRoYXQgYXJlIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlcixcbiAgICAgKiBpLmUuLCB0aG9zZSBpbiB3aGljaCB0aGUgY3VycmVudCB1c2VyIGlzIGxpc3RlZCBhcyBhbiBhcHByb3ZlclxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1mYUxpc3RcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZmEve21mYV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IGl0cyBpZC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJtZmFHZXRcIl07XG4gICAgLyoqXG4gICAgICogQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIEFwcHJvdmUgb3IgcmVqZWN0IHJlcXVlc3QgYWZ0ZXIgbG9nZ2luZyBpbiB3aXRoIEN1YmVTaWduZXIuXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnRseS1sb2dnZWQgdXNlciBhcyBhbiBhcHByb3ZlclxuICAgICAqIG9mIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBvZiB0aGUgW1N0YXR1czo6UmVxdWlyZWRBcHByb3ZlcnNdIGtpbmQuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2ZcbiAgICAgKiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcIm1mYVZvdGVDc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBGSURPLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJtZmFGaWRvSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAgICogdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZUZpZG9Db21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZS9SZWplY3QgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnQgdXNlciBhcyBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnlcbiAgICAgKiBwcm92aWRpbmcgVE9UUCBjb2RlLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXNcbiAgICAgKiBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZVRvdHBcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vYXV0aDIvdHdpdHRlclwiOiB7XG4gICAgLyoqXG4gICAgICogTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAgICogQGRlc2NyaXB0aW9uIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBhY3RzIGlkZW50aWNhbGx5IHRvIFR3aXR0ZXIncyBbYG9hdXRoMi90b2tlbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLnR3aXR0ZXIuY29tL2VuL2RvY3MvYXV0aGVudGljYXRpb24vYXBpLXJlZmVyZW5jZS90b2tlbikgZW5kcG9pbnQsXG4gICAgICogYnV0IGV4dGVuZHMgdGhlIG91dHB1dCB3aXRoIGFuIGBpZF90b2tlbmAuXG4gICAgICpcbiAgICAgKiBUaGlzIGBpZF90b2tlbmAgY2FuIHRoZW4gYmUgdXNlZCB3aXRoIGFueSBDdWJlU2lnbmVyIGVuZHBvaW50IHRoYXQgcmVxdWlyZXMgYW4gT0lEQyB0b2tlbi5cbiAgICAgKlxuICAgICAqID4gWyFJTVBPUlRBTlRdXG4gICAgICogPiBUaGlzIGVuZHBvaW50IHdpbGwgZmFpbCB1bmxlc3MgdGhlIG9yZyBpcyBjb25maWd1cmVkIHRvIGFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90d2l0dGVyYCBhbmQgY2xpZW50IElEIGJlaW5nIHVzZWQgZm9yIFR3aXR0ZXIuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm9hdXRoMlR3aXR0ZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBMb2dpbiB3aXRoIE9JRENcbiAgICAgKiBAZGVzY3JpcHRpb24gTG9naW4gd2l0aCBPSURDXG4gICAgICpcbiAgICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBzaWduZXIgc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIE1GQSBpcyByZXF1aXJlZCB3aGVuOlxuICAgICAqIC0gYW4gTUZBIHBvbGljeSBpcyBleHBsaWNpdGx5IGF0dGFjaGVkIHRvIHRoZSB1c2VyIGxvZ2dpbmcgaW5cbiAgICAgKiAoZS5nLiwgYW4gb3JnIG93bmVyIGNhbiBkbyB0aGF0IGF0IHVzZXIgY3JlYXRpb24gdGltZSB0byByZXF1aXJlIGNlcnRhaW4ga2luZCBvZiBNRkEpXG4gICAgICogLSB0aGUgdXNlciBoYXMgYXQgbGVhc3QgMSBNRkEgZmFjdG9yIGNvbmZpZ3VyZWRcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2lkY0F1dGhcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGVzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYWxsIHJvbGVzIGluIGFuIG9yZ2FuaXphdGlvbiB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaXMgYWxsb3dlZCB0byBhY2Nlc3MuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFJvbGVzXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLiBVbmxlc3MgdGhlIGxvZ2dlZC1pbiB1c2VyXG4gICAgICogaXMgdGhlIG93bmVyLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJvbGUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBSb2xlXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSByb2xlIGluIGFuIG9yZ2FuaXphdGlvblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFJvbGVcIl07XG4gICAgLyoqXG4gICAgICogRGVsZXRlIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFJvbGVcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZVJvbGVcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFJvbGVcbiAgICAgKlxuICAgICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYSByb2xlICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOmVuYWJsZWAgc2NvcGUpLlxuICAgICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTpwb2xpY3lgIHNjb3BlKS5cbiAgICAgKiBUaGUgdXNlciBtdXN0IGJlIGluIHRoZSByb2xlIG9yIGFuIG93bmVyIG9mIHRoZSBvcmdhbml6YXRpb24uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2FkZF9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBBZGQgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgS2V5c1xuICAgICAqXG4gICAgICogQWRkcyBhIGxpc3Qgb2YgZXhpc3Rpbmcga2V5cyB0byBhbiBleGlzdGluZyByb2xlLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImFkZEtleXNUb1JvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vYWRkX3VzZXIve3VzZXJfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBBZGQgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgVXNlclxuICAgICAqXG4gICAgICogQWRkcyBhbiBleGlzdGluZyB1c2VyIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGFkZCB1c2VycyB0byBhIHJvbGUuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiYWRkVXNlclRvUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFJvbGUgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgS2V5c1xuICAgICAqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwga2V5cyBpbiBhIHJvbGUuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFJvbGVLZXlzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2tleXMve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIEtleVxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGtleSBmcm9tIGEgcm9sZVxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZUtleUZyb21Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3Rva2Vuc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGEgc2luZ2xlIHBhZ2Ugb2YgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgICAqXG4gICAgICogKipEZXByZWNhdGVkKio6IFVzZSBgR0VUIC9vcmcve29yZ19pZH0vc2Vzc2lvbj9yb2xlPWBcbiAgICAgKlxuICAgICAqIFJldHVybnMgYWxsIGFjY2VzcyB0b2tlbnMgZm9yIGEgZ2l2ZW4gcm9sZS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlVG9rZW5zXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBUb2tlblxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgVG9rZW5cbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYWNjZXNzIHRva2VuIGZvciBhIGdpdmVuIHJvbGUgKHRvIGJlIHVzZWQgYXMgXCJBUEkgS2V5XCIgZm9yIGFsbCBzaWduaW5nIGFjdGlvbnMpLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBjcmVhdGUgYSB0b2tlbiBmb3IgaXQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVJvbGVUb2tlblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgQWxsIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgQWxsIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICAgKlxuICAgICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYERFTEVURSAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gIGluc3RlYWRcbiAgICAgKlxuICAgICAqIFJldm9rZXMgYWxsIGFjY2VzcyB0b2tlbnMgYXNzb2NpYXRlZCB3aXRoIGEgcm9sZS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VBbGxSb2xlVG9rZW5zXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3Rva2Vucy97c2Vzc2lvbl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBUb2tlbiAoRGVwcmVjYXRlZClcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgVG9rZW4gKERlcHJlY2F0ZWQpXG4gICAgICpcbiAgICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uL3tzZXNzaW9uX2lkfWBcbiAgICAgKlxuICAgICAqIFJldm9rZXMgYW4gYWNjZXNzIHRva2VuIGFzc29jaWF0ZWQgd2l0aCBhIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlUm9sZVRva2VuXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFJvbGUgVXNlcnMuXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBVc2Vycy5cbiAgICAgKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHVzZXJzIHdobyBoYXZlIGFjY2VzcyB0byBhIHJvbGUuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFJvbGVVc2Vyc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS91c2Vycy97dXNlcl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBVc2VyXG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBVc2VyXG4gICAgICpcbiAgICAgKiBSZW1vdmVzIGFuIGV4aXN0aW5nIHVzZXIgZnJvbSBhbiBleGlzdGluZyByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIHVzZXJzIGZyb20gYSByb2xlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZVVzZXJGcm9tUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb25cIjoge1xuICAgIC8qKlxuICAgICAqIExpc3Qgc2Vzc2lvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBzZXNzaW9uc1xuICAgICAqXG4gICAgICogSWYgbm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQsIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCBzZXNzaW9uIGlzIHJldHVybmVkXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFNlc3Npb25zXCJdO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgdXNlciBzZXNzaW9uLCBzaWxlbnRseSB0cnVuY2F0aW5nIHJlcXVlc3RlZCBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lc1xuICAgICAqIHRvIGJlIGF0IG1vc3QgcmVxdWVzdG9yJ3Mgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZSwgcmVzcGVjdGl2ZWx5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVTZXNzaW9uXCJdO1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBleGlzdGluZyBzZXNzaW9uKHMpXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBleGlzdGluZyBzZXNzaW9uKHMpXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGV4aXN0aW5nIHNlc3Npb25zLCBwcmV2ZW50aW5nIHRoZW0gZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZC5cbiAgICAgKiBJZiBubyBxdWVyeSBwYXJhbXMgYXJlIHByb3ZpZGVkLCB0aGUgY3VycmVudCBzZXNzaW9uIGlzIHJldm9rZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlU2Vzc2lvbnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uL3NlbGZcIjoge1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyB0aGUgY3VycmVudCBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VDdXJyZW50U2Vzc2lvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb24ve3Nlc3Npb25faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFNlc3Npb25cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIGEgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgYSBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGFuIGV4aXN0aW5nIHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVNlc3Npb25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zb2xhbmEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAgICpcbiAgICAgKiBTaWducyBhIFNvbGFuYSBtZXNzYWdlIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNvbGFuYVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS90b2tlbi9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IHRoZSByb2xlIHRva2VuIGNhbiBhY2Nlc3MuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFRva2VuS2V5c1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWVcIjoge1xuICAgIC8qKlxuICAgICAqIFVzZXIgSW5mb1xuICAgICAqIEBkZXNjcmlwdGlvbiBVc2VyIEluZm9cbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImFib3V0TWVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2V4cG9ydFwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IG91dHN0YW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1widXNlckV4cG9ydExpc3RcIl07XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqXG4gICAgICogVGhpcyBzdGFydHMgYSBkZWxheSAod2hvc2UgbGVuZ3RoIGlzIGRldGVybWluZWQgYnkgT3JnLXdpZGUgc2V0dGluZ3MpXG4gICAgICogYmVmb3JlIGV4cG9ydCBjYW4gYmUgY29tcGxldGVkLCBhbmQgcmV0dXJucyBhIHRpY2tldCB0aGF0IGNhbiBiZSB1c2VkXG4gICAgICogdG8gY29tcGxldGUgdGhlIGV4cG9ydCBvbmNlIHRoZSB0aW1lciBoYXMgZXhwaXJlZC5cbiAgICAgKlxuICAgICAqIE9ubHkgb25lIHVzZXItZXhwb3J0IHJlcXVlc3QgY2FuIGJlIGFjdGl2ZSBmb3IgYSBnaXZlbiBrZXkuIElmIHRoZXJlXG4gICAgICogaXMgYWxyZWFkeSBhbiBhY3RpdmUgZXhwb3J0LCB0aGlzIGVuZHBvaW50IHdpbGwgcmV0dXJuIGFuIGVycm9yLiBUb1xuICAgICAqIGNyZWF0ZSBhIG5ldyByZXF1ZXN0LCBmaXJzdCBkZWxldGUgdGhlIGV4aXN0aW5nIG9uZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlckV4cG9ydEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0RGVsZXRlXCJdO1xuICAgIC8qKlxuICAgICAqIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGluaXRpYXRpbmcgYSB1c2VyLWV4cG9ydCByZXF1ZXN0IHZpYVxuICAgICAqIHRoZSBgdXNlcl9leHBvcnRfaW5pdGAgQVBJLCBhbmQgb25seSB3aXRoaW4gdGhlIHN1YnNlcXVlbnQgZXhwb3J0IHdpbmRvd1xuICAgICAqIChpLmUuLCBhZnRlciB0aGUgZXhwb3J0IGRlbGF5IGhhcyBwYXNzZWQgYW5kIGJlZm9yZSB0aGUgcmVxdWVzdCBoYXMgZXhwaXJlZCkuXG4gICAgICpcbiAgICAgKiBUbyBjaGVjayBvbiB0aGUgc3RhdHVzIG9mIGFuIGV4cG9ydCByZXF1ZXN0LCBzZWUgdGhlIGB1c2VyX2V4cG9ydF9saXN0YCBBUEkuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0Q29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleVxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVnaXN0ZXJGaWRvSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkby97Zmlkb19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgRklETyBrZXlcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSBGSURPIGtleSBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgdGhlIGtleSBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckRlbGV0ZUZpZG9cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgICAqXG4gICAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVzZXRUb3RwSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgVE9UUFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgVE9UUFxuICAgICAqXG4gICAgICogRGVsZXRlcyBUT1RQIGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiBUT1RQIGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJ1c2VyRGVsZXRlVG90cFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlclJlc2V0VG90cENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwL3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJWZXJpZnlUb3RwXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFVzZXJzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAgICogQGRlc2NyaXB0aW9uIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVPaWRjVXNlclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlT2lkY1VzZXJcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvbWUvZmlkb1wiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicmVnaXN0ZXJGaWRvSW5pdExlZ2FjeVwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBBY2NlcHRzIHRoZSByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCB0byB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wicmVnaXN0ZXJGaWRvQ29tcGxldGVMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvbWUvdG90cFwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICAgKlxuICAgICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicmVzZXRUb3RwSW5pdExlZ2FjeVwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJyZXNldFRvdHBDb21wbGV0ZUxlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9tZS90b3RwL3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IFRPVFBcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widmVyaWZ5VG90cExlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2Jsb2Ivc2lnbi97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBSYXcgQmxvYlxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFJhdyBCbG9iXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBhcmJpdHJhcnkgYmxvYiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqXG4gICAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAgICogYnl0ZSB2LCB3aGljaCBjYW4gaW4gZ2VuZXJhbCB0YWtlIGFueSBvZiB0aGUgdmFsdWVzIDAsIDEsIDIsIG9yIDMuXG4gICAgICpcbiAgICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICAgKlxuICAgICAqIC0gQkxTIHNpZ25hdHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGJsb2Itc2lnbiBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYmxvYlNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9jdWJlM3NpZ25lci9oZWFydGJlYXRcIjoge1xuICAgIC8qKlxuICAgICAqIFJlY29yZCBoZWFydGJlYXRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVjb3JkIGhlYXJ0YmVhdFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBpcyBjYWxsZWQgYnkgdGhlIGN1YmUzc2lnbmVyIHByb3h5IHRvIHJlY29yZCB2YXJpb3VzIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3ViZTNzaWduZXJIZWFydGJlYXRcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgxL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBFdGhlcmV1bSAoYW5kIG90aGVyIEVWTSkgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICogUmV0dXJucyBhbiBSTFAtZW5jb2RlZCB0cmFuc2FjdGlvbiB3aXRoIEVJUC0xNTUgc2lnbmF0dXJlLlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImV0aDFTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIGV0aDIgdmFsaWRhdG9yIHJlcXVlc3Qgd2l0aCBhIGdpdmVuIEJMUyBrZXkuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZXRoMlNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3N0YWtlXCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAgICpcbiAgICAgKiBTaWducyBhIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2l0aCBhIGB2YWxpZGF0b3Jfa2V5YC4gSWYgYHZhbGlkYXRvcl9rZXlgIGlzIHNldCB0byBhIHByZWdlbmVyYXRlZCBrZXksIHdlIHVzZSB0aGVcbiAgICAgKiBwcm92aWRlZCB2YWxpZGF0b3Iga2V5LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEgbmV3IEJMUyBrZXkuXG4gICAgICpcbiAgICAgKiBXaGVuIHVzaW5nIGEgcHJlZ2VuZXJhdGVkIGtleSwgdGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlXG4gICAgICogYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wic3Rha2VcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3Vuc3Rha2Uve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBIYW5kbGUgdW5zdGFraW5nIHJlcXVlc3QsIHByb2R1Y2luZyBhIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlXG4gICAgICogdGhhdCBjYW4gYmUgcG9zdGVkIGRpcmVjdGx5IHRvIHRoZSBCZWFjb24gY2hhaW4uXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widW5zdGFrZVwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L3Rva2VuL3JlZnJlc2hcIjoge1xuICAgIC8qKlxuICAgICAqIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wic2lnbmVyU2Vzc2lvblJlZnJlc2hcIl07XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIHdlYmhvb2tzID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIGNvbXBvbmVudHMge1xuICBzY2hlbWFzOiB7XG4gICAgQWNjZXB0ZWRSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEaWZmZXJlbnQgcmVzcG9uc2VzIHdlIHJldHVybiBmb3Igc3RhdHVzIGNvZGUgXCIyMDIgQWNjZXB0ZWRcIi5cbiAgICAgKlxuICAgICAqIEV2ZW4gdGhvdWdoIFwiMjAyIEFjY2VwdGVkXCIgaXMgYSBzdWNjZXNzZnVsIHJlc3BvbnNlLCB3ZSByZXByZXNlbnRcbiAgICAgKiBpdCBhcyBhIFJ1c3QgZXJyb3IgYmVjYXVzZSB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gaGF2ZSByb3V0ZSBoYW5kbGVyc1xuICAgICAqIHJldHVybiBgUmVzdWx0PFQsIFNpZ25lckVycm9yPmAgd2hlcmUgYFRgIGlzIHRoZSB0eXBlIG9mIHRoZVxuICAgICAqIHJlc3BvbnNlIGZvciB0aGUgc3RhdHVzIGNvZGUgXCIyMDAgT2tcIi5cbiAgICAgKi9cbiAgICBBY2NlcHRlZFZhbHVlOiB7XG4gICAgICBNZmFSZXF1aXJlZDoge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE1GQSByZXF1ZXN0IGlkICovXG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnYW5pemF0aW9uIGlkICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICBzZXNzaW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEFjY2VwdGVkVmFsdWVDb2RlOiBcIk1mYVJlcXVpcmVkXCI7XG4gICAgQWRkS2V5c1RvUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiBrZXlzIHRvIGFkZCB0byBhIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJLZXkjNjMwMjNhMjctMWU3MC00MzBhLWIyOTMtZmZiYzlkNmM0NDg0XCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAga2V5X2lkczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY2llcyB0byBhcHBseSBmb3IgZWFjaCBrZXlcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjogXCJDYW5vbmljYWxcIlxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjoge1xuICAgICAgICogICAgICAgICBcIlJlcXVpcmVkQXBwcm92ZXJzXCI6IHtcbiAgICAgICAqICAgICAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICAgICAgfVxuICAgICAgICogICAgICAgfSxcbiAgICAgICAqICAgICAgIFwicmVzdHJpY3RlZF9vcGVyYXRpb25zXCI6IFtcbiAgICAgICAqICAgICAgICAgXCJFdGgxU2lnblwiLFxuICAgICAgICogICAgICAgICBcIkJsb2JTaWduXCJcbiAgICAgICAqICAgICAgIF1cbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgIH07XG4gICAgQWRkVGhpcmRQYXJ0eVVzZXJSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBVc2VyIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgaWRlbnRpdHk6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT0lEQ0lkZW50aXR5XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgZnVsbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZSBXb25kZXJsYW5kXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgcm9sZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgIH07XG4gICAgQWRkVGhpcmRQYXJ0eVVzZXJSZXNwb25zZToge1xuICAgICAgLyoqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBBcHByb3ZhbEluZm86IHtcbiAgICAgIHRpbWVzdGFtcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdlYkF1dGhuIFJlbHlpbmcgUGFydGllcyBtYXkgdXNlIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UgdG8gc3BlY2lmeVxuICAgICAqIHRoZWlyIHByZWZlcmVuY2UgcmVnYXJkaW5nIGF0dGVzdGF0aW9uIGNvbnZleWFuY2UgZHVyaW5nIGNyZWRlbnRpYWxcbiAgICAgKiBnZW5lcmF0aW9uLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtYXR0ZXN0YXRpb25jb252ZXlhbmNlcHJlZmVyZW5jZVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTogXCJub25lXCIgfCBcImluZGlyZWN0XCIgfCBcImRpcmVjdFwiIHwgXCJlbnRlcnByaXNlXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIHJlcXVpcmVkIGZvciBib3RoIGBhdXRoZW50aWNhdGVgIGFuZCBgcmVmcmVzaGAuICovXG4gICAgQXV0aERhdGE6IHtcbiAgICAgIC8qKiBGb3JtYXQ6IGludDMyICovXG4gICAgICBlcG9jaF9udW06IG51bWJlcjtcbiAgICAgIGVwb2NoX3Rva2VuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkIzMlwiXTtcbiAgICAgIG90aGVyX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgYXNzZXJ0aW9uIHJlc3BvbnNlIHVzZWQgYnkgY2xpZW50cyB3aGVuIGF0dGVtcHRpbmcgdG8gbG9nIGluIHdpdGggYSBrbm93biBjcmVkZW50aWFsXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2F1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgdGhlIHN0YW5kYXJkIENUQVAyIGF1dGhlbnRpY2F0b3IgZGF0YS4gTXVzdCBiZSBhIHZhbGlkIFtgQXV0aGVudGljYXRvckRhdGFgXS5cbiAgICAgICAqIFRoaXMgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaG93IGtleSB3YXMgaW52b2tlZC5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcmFzc2VydGlvbnJlc3BvbnNlLWF1dGhlbnRpY2F0b3JkYXRhXG4gICAgICAgKi9cbiAgICAgIGF1dGhlbnRpY2F0b3JEYXRhOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250YWlucyBVVEY4IGVuY29kZWQgSlNPTiB3aGljaCBtdXN0IGJlIGEgdmFsaWQgW2BDbGllbnREYXRhYF1cbiAgICAgICAqIFRoaXMgZGF0YSBpcyBjb21iaW5lZCB3aXRoIGBhdXRoZW50aWNhdG9yX2RhdGFgIHRvIHByb2R1Y2UgdGhlIHNpZ25hdHVyZVxuICAgICAgICogbWVhbmluZyB0aGUgY2xpZW50IGF0dGVzdHMgdG8gdGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgZGF0YS5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnJlc3BvbnNlLWNsaWVudGRhdGFqc29uXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBjb25jYXRlbmF0ZWQgYGF1dGhlbnRpY2F0b3JEYXRhIHx8IGhhc2hgIHdoZXJlXG4gICAgICAgKiBgaGFzaGAgaXMgdGhlIFNIQTI1NiBoYXNoIG9mIHRoZSBgY2xpZW50RGF0YUpTT05gIGJ1ZmZlcjpcbiAgICAgICAqXG4gICAgICAgKiBGaWVsZCBEZWZpbml0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1zaWduYXR1cmVcbiAgICAgICAqIFN0ZXAgMTEgb2YgYGdldEFzc2VydGlvbmAgc3BlY2lmaWVzIHRoZSBjb25jYXRlbmF0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jc2N0bi1vcC1nZXQtYXNzZXJ0aW9uXG4gICAgICAgKiBSZXF1aXJlbWVudCBmb3IgU0hBLTI1NjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2NvbGxlY3RlZGNsaWVudGRhdGEtaGFzaC1vZi10aGUtc2VyaWFsaXplZC1jbGllbnQtZGF0YVxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93cyB0aGUgYXV0aGVudGljYXRvciB0byBvcHRpb25hbGx5IGRlY2xhcmUgdGhlIGNyZWRlbnRpYWwgaWRlbnRpZmllciB0aGV5IHVzZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS11c2VyaGFuZGxlXG4gICAgICAgKi9cbiAgICAgIHVzZXJIYW5kbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSBhdXRoZW50aWNhdG9ycycgYXR0YWNobWVudCBtb2RhbGl0aWVzLlxuICAgICAqIFJlbHlpbmcgUGFydGllcyB1c2UgdGhpcyB0byBleHByZXNzIGEgcHJlZmVycmVkIGF1dGhlbnRpY2F0b3IgYXR0YWNobWVudFxuICAgICAqIG1vZGFsaXR5IHdoZW4gY2FsbGluZyBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgdG8gY3JlYXRlIGEgY3JlZGVudGlhbC5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF1dGhlbnRpY2F0b3JhdHRhY2htZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0YWNobWVudDogXCJwbGF0Zm9ybVwiIHwgXCJjcm9zcy1wbGF0Zm9ybVwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGhlIGF1dGhlbnRpY2F0b3Inc1xuICAgICAqIHJlc3BvbnNlIHRvIGEgY2xpZW504oCZcyByZXF1ZXN0IGZvciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgcHVibGljIGtleVxuICAgICAqIGNyZWRlbnRpYWwuIEl0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgY3JlZGVudGlhbCB0aGF0IGNhbiBiZVxuICAgICAqIHVzZWQgdG8gaWRlbnRpZnkgaXQgZm9yIGxhdGVyIHVzZSwgYW5kIG1ldGFkYXRhIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlXG4gICAgICogV2ViQXV0aG4gUmVseWluZyBQYXJ0eSB0byBhc3Nlc3MgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgY3JlZGVudGlhbFxuICAgICAqIGR1cmluZyByZWdpc3RyYXRpb24uXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jaWZhY2UtYXV0aGVudGljYXRvcmF0dGVzdGF0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYW4gYXR0ZXN0YXRpb24gb2JqZWN0LCB3aGljaCBpcyBvcGFxdWUgdG8sIGFuZFxuICAgICAgICogY3J5cHRvZ3JhcGhpY2FsbHkgcHJvdGVjdGVkIGFnYWluc3QgdGFtcGVyaW5nIGJ5LCB0aGUgY2xpZW50LiBUaGVcbiAgICAgICAqIGF0dGVzdGF0aW9uIG9iamVjdCBjb250YWlucyBib3RoIGF1dGhlbnRpY2F0b3IgZGF0YSBhbmQgYW4gYXR0ZXN0YXRpb25cbiAgICAgICAqIHN0YXRlbWVudC4gVGhlIGZvcm1lciBjb250YWlucyB0aGUgQUFHVUlELCBhIHVuaXF1ZSBjcmVkZW50aWFsIElELCBhbmRcbiAgICAgICAqIHRoZSBjcmVkZW50aWFsIHB1YmxpYyBrZXkuIFRoZSBjb250ZW50cyBvZiB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGFyZVxuICAgICAgICogZGV0ZXJtaW5lZCBieSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGZvcm1hdCB1c2VkIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gSXQgYWxzbyBjb250YWlucyBhbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0aGF0IHRoZVxuICAgICAgICogUmVseWluZyBQYXJ0eSdzIHNlcnZlciByZXF1aXJlcyB0byB2YWxpZGF0ZSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50LFxuICAgICAgICogYXMgd2VsbCBhcyB0byBkZWNvZGUgYW5kIHZhbGlkYXRlIHRoZSBhdXRoZW50aWNhdG9yIGRhdGEgYWxvbmcgd2l0aCB0aGVcbiAgICAgICAqIEpTT04tY29tcGF0aWJsZSBzZXJpYWxpemF0aW9uIG9mIGNsaWVudCBkYXRhLiBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgICAgICAqIMKn4oCvNi41IEF0dGVzdGF0aW9uLCDCp+KArzYuNS40IEdlbmVyYXRpbmcgYW4gQXR0ZXN0YXRpb24gT2JqZWN0LCBhbmQgRmlndXJlXG4gICAgICAgKiA2LlxuICAgICAgICovXG4gICAgICBhdHRlc3RhdGlvbk9iamVjdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUsIGluaGVyaXRlZCBmcm9tIEF1dGhlbnRpY2F0b3JSZXNwb25zZSwgY29udGFpbnMgdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YSAoc2VlIMKn4oCvNi41IEF0dGVzdGF0aW9uKVxuICAgICAgICogcGFzc2VkIHRvIHRoZSBhdXRoZW50aWNhdG9yIGJ5IHRoZSBjbGllbnQgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhpc1xuICAgICAgICogY3JlZGVudGlhbC4gVGhlIGV4YWN0IEpTT04gc2VyaWFsaXphdGlvbiBNVVNUIGJlIHByZXNlcnZlZCwgYXMgdGhlIGhhc2hcbiAgICAgICAqIG9mIHRoZSBzZXJpYWxpemVkIGNsaWVudCBkYXRhIGhhcyBiZWVuIGNvbXB1dGVkIG92ZXIgaXQuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2ViQXV0aG4gUmVseWluZyBQYXJ0aWVzIG1heSB1c2UgdGhlIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVxuICAgICAqIGRpY3Rpb25hcnkgdG8gc3BlY2lmeSB0aGVpciByZXF1aXJlbWVudHMgcmVnYXJkaW5nIGF1dGhlbnRpY2F0b3JcbiAgICAgKiBhdHRyaWJ1dGVzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3RkZWYtYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhOiB7XG4gICAgICBhdXRoZW50aWNhdG9yQXR0YWNobWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckF0dGFjaG1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggV2ViQXV0aG4gTGV2ZWxcbiAgICAgICAqIDEgYW5kLCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCBpdHMgbmFtaW5nIHJldGFpbnMgdGhlIGRlcHJlY2F0ZWRcbiAgICAgICAqIOKAnHJlc2lkZW504oCdIHRlcm1pbm9sb2d5IGZvciBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIHNldCBpdCB0byB0cnVlIGlmLCBhbmQgb25seSBpZiwgcmVzaWRlbnRLZXkgaXMgc2V0IHRvIHJlcXVpcmVkLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhLXJlcXVpcmVyZXNpZGVudGtleVxuICAgICAgICovXG4gICAgICByZXF1aXJlUmVzaWRlbnRLZXk/OiBib29sZWFuO1xuICAgICAgcmVzaWRlbnRLZXk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc2lkZW50S2V5UmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgdXNlclZlcmlmaWNhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIG1heSBpbXBsZW1lbnQgdmFyaW91cyB0cmFuc3BvcnRzIGZvciBjb21tdW5pY2F0aW5nIHdpdGhcbiAgICAgKiBjbGllbnRzLiBUaGlzIGVudW1lcmF0aW9uIGRlZmluZXMgaGludHMgYXMgdG8gaG93IGNsaWVudHMgbWlnaHQgY29tbXVuaWNhdGVcbiAgICAgKiB3aXRoIGEgcGFydGljdWxhciBhdXRoZW50aWNhdG9yIGluIG9yZGVyIHRvIG9idGFpbiBhbiBhc3NlcnRpb24gZm9yIGFcbiAgICAgKiBzcGVjaWZpYyBjcmVkZW50aWFsLiBOb3RlIHRoYXQgdGhlc2UgaGludHMgcmVwcmVzZW50IHRoZSBXZWJBdXRobiBSZWx5aW5nXG4gICAgICogUGFydHkncyBiZXN0IGJlbGllZiBhcyB0byBob3cgYW4gYXV0aGVudGljYXRvciBtYXkgYmUgcmVhY2hlZC4gQSBSZWx5aW5nXG4gICAgICogUGFydHkgd2lsbCB0eXBpY2FsbHkgbGVhcm4gb2YgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIGZvciBhIHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsIHZpYSBnZXRUcmFuc3BvcnRzKCkuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9ydHJhbnNwb3J0XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OiBcInVzYlwiIHwgXCJuZmNcIiB8IFwiYmxlXCIgfCBcImludGVybmFsXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHNpZ24gYW4gQXZhbGFuY2hlIHRyYW5zYWN0aW9ucyAqL1xuICAgIEF2YVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbiB0byBzaWduLlxuICAgICAgICpcbiAgICAgICAqIEV4YW1wbGVzOlxuICAgICAgICogLSB7XCJQXCI6IHsgXCJBZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfcGVybWlzc2lvbmxlc3NfdmFsaWRhdG9yLnJzI0wxNCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkU3VibmV0VmFsaWRhdG9yXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2FkZF9zdWJuZXRfdmFsaWRhdG9yLnJzI0wyOSkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkVmFsaWRhdG9yXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2FkZF92YWxpZGF0b3IucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJDcmVhdGVDaGFpblwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9jcmVhdGVfY2hhaW4ucnMjTDgpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkNyZWF0ZVN1Ym5ldFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9jcmVhdGVfc3VibmV0LnJzI0w4KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJFeHBvcnRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvZXhwb3J0LnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiSW1wb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2ltcG9ydC5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlhcIjogeyBcIkJhc2VcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvYXZtL3R4cy9tb2QucnMjTDIxKSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJFeHBvcnRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvYXZtL3R4cy9leHBvcnQucnMjTDE2KSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJJbXBvcnRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvYXZtL3R4cy9pbXBvcnQucnMjTDE0KSB9fVxuICAgICAgICovXG4gICAgICB0eDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgQXZhU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gV3JhcHBlciBhcm91bmQgYSB6ZXJvaXppbmcgMzItYnl0ZSBmaXhlZC1zaXplIGFycmF5ICovXG4gICAgQjMyOiBzdHJpbmc7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQmFkR2F0ZXdheUVycm9yQ29kZTogXCJPQXV0aFByb3ZpZGVyRXJyb3JcIjtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBCYWRSZXF1ZXN0RXJyb3JDb2RlOlxuICAgICAgfCBcIkdlbmVyaWNCYWRSZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkQm9keVwiXG4gICAgICB8IFwiVG9rZW5SZXF1ZXN0RXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRNZmFSZWNlaXB0XCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5Q291bnRcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lOdW1BdXRoRmFjdG9yc1wiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeU51bUFsbG93ZWRBcHByb3ZlcnNcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lSZWR1bmRhbnRSdWxlXCJcbiAgICAgIHwgXCJJbnZhbGlkQ3JlYXRlS2V5Q291bnRcIlxuICAgICAgfCBcIk9yZ0ludml0ZUV4aXN0aW5nVXNlclwiXG4gICAgICB8IFwiT3JnTmFtZVRha2VuXCJcbiAgICAgIHwgXCJSb2xlTmFtZVRha2VuXCJcbiAgICAgIHwgXCJBZGRLZXlUb1JvbGVDb3VudFRvb0hpZ2hcIlxuICAgICAgfCBcIkludmFsaWRLZXlJZFwiXG4gICAgICB8IFwiSW52YWxpZEtleU1ldGFkYXRhTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWV0YWRhdGFcIlxuICAgICAgfCBcIkludmFsaWRLZXlNYXRlcmlhbElkXCJcbiAgICAgIHwgXCJLZXlOb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydERlcml2ZWRLZXlcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRQdWJsaWNLZXlJbnZhbGlkXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0SW5Qcm9ncmVzc1wiXG4gICAgICB8IFwiUm9sZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdE9yZ0lkTWlzc2luZ1wiXG4gICAgICB8IFwiSW52YWxpZE1mYVJlY2VpcHRJbnZhbGlkT3JnSWRcIlxuICAgICAgfCBcIk1mYVJlcXVlc3ROb3RGb3VuZFwiXG4gICAgICB8IFwiSW52YWxpZEtleVR5cGVcIlxuICAgICAgfCBcIkludmFsaWRLZXlNYXRlcmlhbFwiXG4gICAgICB8IFwiSW52YWxpZEhleFZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFzZTMyVmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRCYXNlNThWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEZvcmtWZXJzaW9uTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoQWRkcmVzc1wiXG4gICAgICB8IFwiSW52YWxpZFN0ZWxsYXJBZGRyZXNzXCJcbiAgICAgIHwgXCJJbnZhbGlkT3JnTmFtZU9ySWRcIlxuICAgICAgfCBcIkludmFsaWRTdGFrZURlcG9zaXRcIlxuICAgICAgfCBcIkludmFsaWRCbG9iU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRTb2xhbmFTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZEVpcDcxMlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRXZtU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRFdGgyU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWREZXJpdmVLZXlSZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkU3Rha2luZ0Ftb3VudFwiXG4gICAgICB8IFwiQ3VzdG9tU3Rha2luZ0Ftb3VudE5vdEFsbG93ZWRGb3JXcmFwcGVyQ29udHJhY3RcIlxuICAgICAgfCBcIkludmFsaWRVbnN0YWtlUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZENyZWF0ZVVzZXJSZXF1ZXN0XCJcbiAgICAgIHwgXCJVc2VyQWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiVXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJQb2xpY3lSdWxlS2V5TWlzbWF0Y2hcIlxuICAgICAgfCBcIkVtcHR5U2NvcGVzXCJcbiAgICAgIHwgXCJJbnZhbGlkU2NvcGVzRm9yUm9sZVNlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRMaWZldGltZVwiXG4gICAgICB8IFwiTm9TaW5nbGVLZXlGb3JVc2VyXCJcbiAgICAgIHwgXCJJbnZhbGlkT3JnUG9saWN5UnVsZVwiXG4gICAgICB8IFwiU291cmNlSXBBbGxvd2xpc3RFbXB0eVwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1BvbGljeVJlcGVhdGVkUnVsZVwiXG4gICAgICB8IFwiQXZhU2lnbkhhc2hFcnJvclwiXG4gICAgICB8IFwiQXZhU2lnbkVycm9yXCJcbiAgICAgIHwgXCJCdGNTZWd3aXRIYXNoRXJyb3JcIlxuICAgICAgfCBcIkJ0Y1NpZ25FcnJvclwiXG4gICAgICB8IFwiRWlwNzEyU2lnbkVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkTWVtYmVyUm9sZUluVXNlckFkZFwiXG4gICAgICB8IFwiVGhpcmRQYXJ0eVVzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJUaGlyZFBhcnR5VXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJEZWxldGVPaWRjVXNlckVycm9yXCJcbiAgICAgIHwgXCJTZXNzaW9uUm9sZU1pc21hdGNoXCJcbiAgICAgIHwgXCJJbnZhbGlkT2lkY1Rva2VuXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyVW5zdXBwb3J0ZWRcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyTm9BcHBsaWNhYmxlSndrXCJcbiAgICAgIHwgXCJGaWRvS2V5QWxyZWFkeVJlZ2lzdGVyZWRcIlxuICAgICAgfCBcIkZpZG9LZXlTaWduQ291bnRUb29Mb3dcIlxuICAgICAgfCBcIkZpZG9WZXJpZmljYXRpb25GYWlsZWRcIlxuICAgICAgfCBcIkZpZG9DaGFsbGVuZ2VNZmFNaXNtYXRjaFwiXG4gICAgICB8IFwiVW5zdXBwb3J0ZWRMZWdhY3lDb2duaXRvU2Vzc2lvblwiXG4gICAgICB8IFwiSW52YWxpZElkZW50aXR5UHJvb2ZcIlxuICAgICAgfCBcIlBhZ2luYXRpb25EYXRhRXhwaXJlZFwiXG4gICAgICB8IFwiRXhpc3RpbmdLZXlzVmlvbGF0ZUV4Y2x1c2l2ZUtleUFjY2Vzc1wiXG4gICAgICB8IFwiRXhwb3J0RGVsYXlUb29TaG9ydFwiXG4gICAgICB8IFwiRXhwb3J0V2luZG93VG9vTG9uZ1wiXG4gICAgICB8IFwiSW52YWxpZFRvdHBGYWlsdXJlTGltaXRcIlxuICAgICAgfCBcIkludmFsaWRFaXAxOTFTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiQ2Fubm90UmVzZW5kVXNlckludml0YXRpb25cIlxuICAgICAgfCBcIkludmFsaWROb3RpZmljYXRpb25FbmRwb2ludENvdW50XCJcbiAgICAgIHwgXCJDYW5ub3REZWxldGVQZW5kaW5nU3Vic2NyaXB0aW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkTm90aWZpY2F0aW9uVXJsUHJvdG9jb2xcIlxuICAgICAgfCBcIkVtcHR5T25lT2ZPcmdFdmVudEZpbHRlclwiXG4gICAgICB8IFwiRW1wdHlBbGxFeGNlcHRPcmdFdmVudEZpbHRlclwiO1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwibWVzc2FnZV9iYXNlNjRcIjogXCJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYb3hNak0wTlRZS1wiXG4gICAgICogfVxuICAgICAqL1xuICAgIEJsb2JTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJsb2IgdG8gc2lnbiwgZW5jb2RlZCBhcyBhIGJhc2U2NCBzdHJpbmcuXG4gICAgICAgKlxuICAgICAgICogTm90ZSB0aGF0IGNlcnRhaW4gc2lnbmluZyBrZXlzIGltcG9zZSBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cyBvbiB0aGUgY29udGVudHMgb2ZcbiAgICAgICAqIHRoZSBtZXNzYWdlLiBGb3IgZXhhbXBsZSwgU2VjcDI1NmsxIGtleXMgcmVxdWlyZSB0aGF0IHRoZSBtZXNzYWdlIGlzIDMyIGJ5dGVzIGxvbmcuXG4gICAgICAgKi9cbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBCbG9iU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEJ0Y1NpZ2hhc2hUeXBlOlxuICAgICAgfCBcIkFsbFwiXG4gICAgICB8IFwiTm9uZVwiXG4gICAgICB8IFwiU2luZ2xlXCJcbiAgICAgIHwgXCJBbGxQbHVzQW55b25lQ2FuUGF5XCJcbiAgICAgIHwgXCJOb25lUGx1c0FueW9uZUNhblBheVwiXG4gICAgICB8IFwiU2luZ2xlUGx1c0FueW9uZUNhblBheVwiO1xuICAgIEJ0Y1NpZ25SZXF1ZXN0OiB7XG4gICAgICBzaWdfa2luZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWduYXR1cmVLaW5kXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYml0Y29pbiB0cmFuc2FjdGlvbiB0byBzaWduICovXG4gICAgICB0eDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgQnRjU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlIGluIGNvbXBhY3QgZm9ybWF0LlxuICAgICAgICogQGV4YW1wbGUgMHg0NTRhZWYyN2MyMWRmN2RkOGY1MzdkYzg2OWY0Y2Q2NTI4NmNlMjM5YTUyZDM2NDcwZjRkODViZTg1YTg5MWIwMjc4OWU1ZmZkODU2MGIzMmE5ODExMGU1ZDAwOTY4MDJlNGMxNDE0NWNmNmM0NGYxMGE3NjhjODc3NTVlYWE0ODAwXG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgQnRjU2lnbmF0dXJlS2luZDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZWdyZWdhdGVkIFdpdG5lc3MgKi9cbiAgICAgIFNlZ3dpdDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uIGlucHV0IGluZGV4XG4gICAgICAgICAqIEBleGFtcGxlIDBcbiAgICAgICAgICovXG4gICAgICAgIGlucHV0X2luZGV4OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2NyaXB0XG4gICAgICAgICAqIEBleGFtcGxlIDB4NzZhOTE0NzkwOTE5NzIxODZjNDQ5ZWIxZGVkMjJiNzhlNDBkMDA5YmRmMDA4OTg4YWNcbiAgICAgICAgICovXG4gICAgICAgIHNjcmlwdF9jb2RlOiBzdHJpbmc7XG4gICAgICAgIHNpZ2hhc2hfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWdoYXNoVHlwZVwiXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEFtb3VudCBpbiBzYXRvc2hpc1xuICAgICAgICAgKiBAZXhhbXBsZSAxMDAwMDAwXG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIGhvdyB0byBkZXJpdmUgYSBXZWJBdXRobiBjaGFsbGVuZ2UgdmFsdWUuICovXG4gICAgQ2hhbGxlbmdlUGllY2VzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGJhc2U2NHVybCBlbmNvZGluZyBvZiBVVEY4IEpTT04uIFRoZSBkYXRhIGluIHRoYXQgSlNPTiBpcyBlbmRwb2ludCBzcGVjaWZpYywgYW5kIGRlc2NyaWJlcyB3aGF0IHRoaXMgRklETyBjaGFsbGVuZ2Ugd2lsbCBiZSB1c2VkIGZvci5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIGNhbiB1c2UgYHByZWltYWdlYCBhbG9uZyB3aXRoIGByYW5kb21fc2VlZGAgdG8gcmVjb25zdHJ1Y3QgdGhlIGNoYWxsZW5nZSBsaWtlIHNvOlxuICAgICAgICpcbiAgICAgICAqIGBjaGFsbGVuZ2UgPSBITUFDLVNIQTI1NihrZXk9cmFuZG9tX3NlZWQsIG1lc3NhZ2U9cHJlaW1hZ2UpYFxuICAgICAgICovXG4gICAgICBwcmVpbWFnZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJhbmRvbSBzZWVkIHRoYXQgcHJldmVudHMgcmVwbGF5IGF0dGFja3MgKi9cbiAgICAgIHJhbmRvbV9zZWVkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBpbmZvcm1hdGlvbiBzZW50IHRvIHRoZSBjbGllbnQuXG4gICAgICogVGhpcyBzdHJ1Y3Qgd29ya3MgaW4gdGFuZGVtIHdpdGggaXRzIHNlcnZlci1zaWRlIGNvdW50ZXJwYXJ0IFtgU2Vzc2lvbkRhdGFgXS5cbiAgICAgKi9cbiAgICBDbGllbnRTZXNzaW9uSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0byB1c2UgZm9yIGF1dGhvcml6YXRpb24uICovXG4gICAgICBhdXRoX3Rva2VuOiBzdHJpbmc7XG4gICAgICBhdXRoX3Rva2VuX2V4cDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRXBvY2ggYXQgd2hpY2ggdGhlIHRva2VuIHdhcyBsYXN0IHJlZnJlc2hlZFxuICAgICAgICovXG4gICAgICBlcG9jaDogbnVtYmVyO1xuICAgICAgZXBvY2hfdG9rZW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQjMyXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0byB1c2UgZm9yIHJlZnJlc2hpbmcgdGhlIGAoYXV0aCwgcmVmcmVzaClgIHRva2VuIHBhaXIgKi9cbiAgICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICAgIHJlZnJlc2hfdG9rZW5fZXhwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQgKi9cbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICB9O1xuICAgIENvbmZpZ3VyZWRNZmE6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0eXBlOiBcInRvdHBcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBjcmVkZW50aWFsIGlkICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBnaXZlbiB0byB0aGUga2V5ICovXG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHR5cGU6IFwiZmlkb1wiO1xuICAgICAgICB9O1xuICAgIENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIGF0dGVzdGF0aW9uIGRvY3VtZW50IGZyb20gYSBzZWN1cmUgZW5jbGF2ZSwgaW5jbHVkaW5nIGFuXG4gICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfYXR0ZXN0YXRpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgKiBzZWNyZXRzIGF0dGVzdGluZyB0byB0aGVpciBnZW5lcmF0aW9uIGluc2lkZSBhIHNlY3VyZSBlbmNsYXZlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgQ3JlYXRlS2V5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzXG4gICAgICAgKiBAZXhhbXBsZSA1XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBrZXlzIHRvIGNyZWF0ZVxuICAgICAgICogQGV4YW1wbGUgMVxuICAgICAgICovXG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpbmZvIGFib3V0IHRoZSBjcmVhdGVkIGtleXMgKi9cbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBjcmVhdGUgcm9sZSByZXF1ZXN0IGJvZHkgKi9cbiAgICBDcmVhdGVSb2xlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3bHkgY3JlYXRlZCByb2xlIGluZm9ybWF0aW9uICovXG4gICAgQ3JlYXRlUm9sZVJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlLlxuICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDcmVhdGVTZXNzaW9uUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgc2Vzc2lvbidzIHB1cnBvc2VcbiAgICAgICAqIEBleGFtcGxlIE1hbmFnZSBrZXlzIG9uIHNlcnZlciBmb28uYmFyXG4gICAgICAgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwibWFuYWdlOmtleToqXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIENyZWF0ZVRva2VuUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBWYWxpZGF0b3IgU2lnbmluZ1xuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLiBCeSBkZWZhdWx0LCBpdCBoYXMgYWxsXG4gICAgICAgKiBzaWduaW5nIGNhcGFiaWxpdGllcywgaS5lLiwganVzdCB0aGUgJ3NpZ246Kicgc2NvcGUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwic2lnbjoqXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzPzogc3RyaW5nW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNgIHRoYXQgYWxsb3dzIGNsaWVudHMgdG8gZGVyaXZlIHRoZSBXZWJBdXRobiBjaGFsbGVuZ2VcbiAgICAgKiBmcm9tIGEgc3RydWN0dXJlZCBwcmVpbWFnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB3ZWJ1YXRobiBzaWduYXR1cmUgY2FuIG9ubHkgYmUgdXNlZCBmb3IgYSBzcGVjaWZpYyBwdXJwb3NlXG4gICAgICovXG4gICAgQ3JlYXRpb25PcHRpb25zV2l0aEhhc2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH07XG4gICAgQ3ViZVNpZ25lclVzZXJJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgIGNvbmZpZ3VyZWRfbWZhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZpZ3VyZWRNZmFcIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2V0IG9uY2UgdGhlIHVzZXIgc3VjY2Vzc2Z1bGx5IGxvZ3MgaW50byBDdWJlU2lnbmVyICovXG4gICAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaHVtYW4gbmFtZSBmb3IgdGhlIHVzZXIgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyJ3MgdXNlciBpZGVudGlmaWVyICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcHJvZHVjZWQgYnkgYSBzdWNjZXNzZnVsIGRlcG9zaXRcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDUsXG4gICAgICogICBcImRlcG9zaXRfdHhuXCI6IHtcbiAgICAgKiAgICAgXCJkYXRhXCI6IFwiMHguLi5cIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxYmMxNmQ2NzRlYzgwMDAwMFwiXG4gICAgICogICB9LFxuICAgICAqICAgXCJuZXdfdmFsaWRhdG9yX3BrXCI6IFwiOTcwMGZiYjhjOTA2OTQyNDQyYzJhNWIzYWQ3NDk4ZjI3YWVkZGEyNTM3ODZhNmZiYWE4ZmVmNDdmYjdhZjIzNGU1MGNmMmNjZTgxNWE1NTMwODc5OTJhZTU2NWQ0OGRhXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRGVwb3NpdFR4bjoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gSUQgZm9yIHdoaWNoIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLiBJbmNsdWRlcyBvbmx5IGB0b2AsIGB2YWx1ZWAsIGFuZCBgZGF0YWAgZmllbGRzLiAqL1xuICAgICAgZGVwb3NpdF90eG46IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIGNvbXByZXNzZWQgZm9ybSBvZiB0aGUgbmV3IHZhbGlkYXRvciBCTFMgcHVibGljIGtleSAqL1xuICAgICAgbmV3X3ZhbGlkYXRvcl9wazogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGRlcG9zaXQgdG8gcGVyZm9ybVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRGVwb3NpdFR5cGU6IFwiQ2Fub25pY2FsXCIgfCBcIldyYXBwZXJcIjtcbiAgICBEZXJpdmVLZXlSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPbmUgb3IgbW9yZSBkZXJpdmF0aW9uIHBhdGhzIGZyb20gd2hpY2ggdG8gZGVyaXZlIGtleXMuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwibS80NCcvNjAnLzAnLzAvMFwiLFxuICAgICAgICogICBcIm0vNDQnLzkwMDAnLzAnLzAvMFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nW107XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF0ZXJpYWwtaWQgb2YgdGhlIG1uZW1vbmljIHRvIHVzZSBmb3IgZGVyaXZhdGlvblxuICAgICAgICogQGV4YW1wbGUgMHg5ZjA3YmU4MmQ5MzRmY2I1ZDBmNzVkZDI0YzJkZmVhOGE4NWE0ZDBjMjg5ZDU4ODI4YjM1MzdmYWUyNGQzMmI4XG4gICAgICAgKi9cbiAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBFaXAxOTFPcjcxMlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgc2lnbmF0dXJlIGNvbXByaXNpbmcgNjUgYnl0ZXMgaW4gdGhlIGZvcm1hdCByZXF1aXJlZFxuICAgICAgICogYnkgZWNyZWNvdmVyOiAzMi1ieXRlIHIsIDMyLWJ5dGUgcywgYW5kIG9uZS1ieXRlIHJlY292ZXJ5LWlkIHZcbiAgICAgICAqIHdoaWNoIGlzIGVpdGhlciAyNyBvciAyOC5cbiAgICAgICAqIEBleGFtcGxlIDB4NDM1NWM0N2Q2MzkyNGU4YTcyZTUwOWI2NTAyOTA1MmViNmMyOTlkNTNhMDRlMTY3YzU3NzVmZDQ2Njc1MWM5ZDA3Mjk5OTM2ZDMwNGMxNTNmNjQ0M2RmYTA1ZjQwZmYwMDdkNzI5MTFiNmY3MjMwN2Y5OTYyMzE2MDViOTE1NjIxY1xuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIEVpcDE5MVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFSVAtMTkxIGRhdGEgdG8gc2lnbiBhcyBoZXgtZW5jb2RlZCBieXRlcy5cbiAgICAgICAqIEBleGFtcGxlIDB4ZGVhZGJlZWYxM2MwZmZlZVxuICAgICAgICovXG4gICAgICBkYXRhOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDEzMzcsXG4gICAgICogICBcInR5cGVkX2RhdGFcIjoge1xuICAgICAqICAgICBcImRvbWFpblwiOiB7XG4gICAgICogICAgICAgXCJjaGFpbklkXCI6IDEzMzcsXG4gICAgICogICAgICAgXCJuYW1lXCI6IFwiRXRoZXIgTWFpbFwiLFxuICAgICAqICAgICAgIFwidmVyaWZ5aW5nQ29udHJhY3RcIjogXCIweENjQ0NjY2NjQ0NDQ2NDQ0NDQ0NjQ2NDY2NDY0NDQ2NDY2NjY2NjY0NcIixcbiAgICAgKiAgICAgICBcInZlcnNpb25cIjogXCIxXCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJtZXNzYWdlXCI6IHtcbiAgICAgKiAgICAgICBcImNvbnRlbnRzXCI6IFwiSGVsbG8sIEJvYiFcIixcbiAgICAgKiAgICAgICBcImZyb21cIjoge1xuICAgICAqICAgICAgICAgXCJuYW1lXCI6IFwiQ293XCIsXG4gICAgICogICAgICAgICBcIndhbGxldHNcIjogW1xuICAgICAqICAgICAgICAgICBcIjB4Q0QyYTNkOUY5MzhFMTNDRDk0N0VjMDVBYkM3RkU3MzREZjhERDgyNlwiLFxuICAgICAqICAgICAgICAgICBcIjB4RGVhRGJlZWZkRUFkYmVlZmRFYWRiRUVGZGVhZGJlRUZkRWFEYmVlRlwiXG4gICAgICogICAgICAgICBdXG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcInRvXCI6IHtcbiAgICAgKiAgICAgICAgIFwibmFtZVwiOiBcIkJvYlwiLFxuICAgICAqICAgICAgICAgXCJ3YWxsZXRzXCI6IFtcbiAgICAgKiAgICAgICAgICAgXCIweGJCYkJCQkJiYkJCQmJiYkJiYkJiYmJiQkJiQmJiYmJCYkJiYkJCYkJcIixcbiAgICAgKiAgICAgICAgICAgXCIweEIwQmRhQmVhNTdCMEJEQUJlQTU3YjBiZEFCRUE1N2IwQkRhYkVhNTdcIixcbiAgICAgKiAgICAgICAgICAgXCIweEIwQjBiMGIwYjBiMEIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAqICAgICAgICAgXVxuICAgICAqICAgICAgIH1cbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJwcmltYXJ5VHlwZVwiOiBcIk1haWxcIixcbiAgICAgKiAgICAgXCJ0eXBlc1wiOiB7XG4gICAgICogICAgICAgXCJFSVA3MTJEb21haW5cIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ2ZXJzaW9uXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJjaGFpbklkXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInVpbnQyNTZcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwidmVyaWZ5aW5nQ29udHJhY3RcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiYWRkcmVzc1wiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIkdyb3VwXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibWVtYmVyc1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25bXVwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIk1haWxcIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJmcm9tXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvblwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ0b1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25cIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwiY29udGVudHNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiUGVyc29uXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwid2FsbGV0c1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzW11cIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF1cbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFaXA3MTJTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNoYWluLWlkIHRvIHdoaWNoIHRoaXMgdHlwZWQgZGF0YSB3aWxsIGJlIHNlbnRcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRUlQLTcxMiB0eXBlZCBkYXRhLiBSZWZlciB0byB0aGUgSlNPTiBzY2hlbWEgZGVmaW5lZCBpbiBFSVAtNzEyLiAqL1xuICAgICAgdHlwZWRfZGF0YTogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgLyoqIEBkZWZhdWx0IG51bGwgKi9cbiAgICBFbXB0eTogdW5rbm93bjtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVwb2NoIGlzIGEgcXVvdGVkIGB1aW50NjRgLlxuICAgICAqIEBleGFtcGxlIDI1NlxuICAgICAqL1xuICAgIEVwb2NoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAqIEBkZXNjcmlwdGlvbiBEYXRlVGltZSBtZWFzdXJlZCBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guXG4gICAgICogQSB3cmFwcGVyIHR5cGUgZm9yIHNlcmlhbGl6YXRpb24gdGhhdCBlbmNvZGVzIGEgW2BTeXN0ZW1UaW1lYF0gYXMgYSBbYHU2NGBdXG4gICAgICogcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBbYFN5c3RlbVRpbWU6OlVOSVhfRVBPQ0hgXS5cbiAgICAgKi9cbiAgICBFcG9jaERhdGVUaW1lOiBudW1iZXI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3RydWN0dXJlIG9mIEVycm9yUmVzcG9uc2UgbXVzdCBtYXRjaCB0aGUgcmVzcG9uc2UgdGVtcGxhdGUgdGhhdCBBV1MgdXNlcyAqL1xuICAgIEVycm9yUmVzcG9uc2U6IHtcbiAgICAgIGFjY2VwdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFZhbHVlXCJdIHwgbnVsbDtcbiAgICAgIGVycm9yX2NvZGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVyRXJyb3JDb2RlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFcnJvciBtZXNzYWdlICovXG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHJlcXVlc3QgaWRlbnRpZmllciAqL1xuICAgICAgcmVxdWVzdF9pZD86IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogNDMxMTMsXG4gICAgICogICBcInR4XCI6IHtcbiAgICAgKiAgICAgXCJjaGFpbl9pZFwiOiBcIjB4YTg2OVwiLFxuICAgICAqICAgICBcImdhc1wiOiBcIjB4NjFhODBcIixcbiAgICAgKiAgICAgXCJtYXhGZWVQZXJHYXNcIjogXCIweDk1MDJGOTAwXCIsXG4gICAgICogICAgIFwibWF4UHJpb3JpdHlGZWVQZXJHYXNcIjogXCIweDUwXCIsXG4gICAgICogICAgIFwibm9uY2VcIjogXCIweGJcIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZjAwYmExMmYwMDAwMDAwMGI0MTIxMjAwMDAwZjAwYzBmZmVlZjAwZFwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCIweDAyXCIsXG4gICAgICogICAgIFwidmFsdWVcIjogXCIweDEwMDAwMDAwMDAwXCJcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgRXRoMVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQgdG8gc2V0IGluIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi5cbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVJUC0yNzE4IHR5cGVkIHRyYW5zYWN0aW9uIChzZWUgdGhlIFtldGhlcnMtcnNcbiAgICAgICAqIGludGVyZmFjZV0oaHR0cHM6Ly9kb2NzLnJzL2V0aGVycy9sYXRlc3QvZXRoZXJzL3R5cGVzL3N0cnVjdC5FaXAxNTU5VHJhbnNhY3Rpb25SZXF1ZXN0Lmh0bWwpKSB0eXBlcywgaW5jbHVkaW5nIEVJUC0xNTU5IHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMlwiIC4uLiB9YCksIGFuZCBsZWdhY3lcbiAgICAgICAqIHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMFwiIC4uLiB9YCkuIEFsbCB2YWx1ZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGFyZSBleHBlY3RlZFxuICAgICAgICogdG8gYmUgKDB4LXByZWZpeGVkIG9yIG5vdCkgaGV4IHN0cmluZ3Mgb3IgYnl0ZSBhcnJheXMuXG4gICAgICAgKi9cbiAgICAgIHR4OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgfTtcbiAgICBFdGgxU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBSTFAgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uIGFuZCBpdHMgc2lnbmF0dXJlXG4gICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICovXG4gICAgICBybHBfc2lnbmVkX3R4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImV0aDJfc2lnbl9yZXF1ZXN0XCI6IHtcbiAgICAgKiAgICAgXCJhZ2dyZWdhdGlvbl9zbG90XCI6IHtcbiAgICAgKiAgICAgICBcInNsb3RcIjogXCIzNlwiXG4gICAgICogICAgIH0sXG4gICAgICogICAgIFwiZm9ya19pbmZvXCI6IHtcbiAgICAgKiAgICAgICBcImZvcmtcIjoge1xuICAgICAqICAgICAgICAgXCJjdXJyZW50X3ZlcnNpb25cIjogXCIweDQyNDI0MjQyXCIsXG4gICAgICogICAgICAgICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgICAgICAgXCJwcmV2aW91c192ZXJzaW9uXCI6IFwiMHg0MjQyNDI0MlwiXG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcImdlbmVzaXNfdmFsaWRhdG9yc19yb290XCI6IFwiMHg5ZDEzZDYxMjEyYzA2N2UwMmNlOGU2MDhhNzAwN2UyYzNiMDI1NzFlOWU2ZjI3ZmY0NWRmYTkxYmYyN2M4NzBiXCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJzaWduaW5nUm9vdFwiOiBcIjB4OWM1N2U3N2M0OTY1NzI3NTQyYjkzMzdkZjY3NTZmOTQ4NDY0YmNhMzg1OWJlYTZlZDNjMGVjNjYwMGQ4OTgyYVwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCJBR0dSRUdBVElPTl9TTE9UXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ldHdvcmtcIjogXCJtYWlubmV0XCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRXRoMlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdWJzZXQgb2YgdGhlIFdlYjNTaWduZXIgRXRoMiBCTFMgc2lnbmluZyByZXF1ZXN0IHdob3NlIHNjaGVtYSBpcyBkZWZpbmVkXG4gICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9jb25zZW5zeXMuZ2l0aHViLmlvL3dlYjNzaWduZXIvd2ViM3NpZ25lci1ldGgyLmh0bWwjdGFnL1NpZ25pbmcvb3BlcmF0aW9uL0VUSDJfU0lHTikuXG4gICAgICAgKiBXZSBoYW5kbGUgZGVwb3NpdHMgYW5kIHZvbHVudGFyeSBleGl0cyBzZXBhcmF0ZWx5LlxuICAgICAgICovXG4gICAgICBldGgyX3NpZ25fcmVxdWVzdDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXR3b3JrXCJdO1xuICAgIH07XG4gICAgRXRoMlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4IGVuY29kZWQgc2lnbmF0dXJlIHByZWZpeGVkIHdpdGggMHggZS5nLiBcIjB4MDAwMC4uLlwiXG4gICAgICAgKiBAZXhhbXBsZSAweGI0ZjJlZjlkMTJhNTRlMWY1Njk1OTZjMDdjOTdkNmQ3MzA1MzViNmZmYzBkMjg3NzYxZGM3ODEwM2E4NjMyNjc4MjQ3MWEwNGM3NWNlN2E2ZmFlYTA4Y2E5YTRhMDgzMDAzMWNkY2I4OTNkYTg3MTFkNTRhYTIyNjE5ZjFhN2U3MWI4MTg1ZGRmNGM2YmZkOWJhYmJkNzM1OTYwZTM1ZTU2YmQ2ZWViODk2MjViMDQ4NTBlN2E5ZWY4ODQ2ZTU0OVxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEV2bVR4RGVwb3NpdEVycm9yQ29kZTpcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRSZWNlaXZlck1pc21hdGNoXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRFbXB0eURhdGFcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEVtcHR5Q2hhaW5JZFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0RW1wdHlSZWNlaXZlclwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFZhbHVlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkRGF0YUxlbmd0aFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0Tm9BYmlcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdE5vRGVwb3NpdEZ1bmN0aW9uXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkRnVuY3Rpb25OYW1lXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkVmFsaWRhdG9yS2V5XCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRJbnZhbGlkVmFsaWRhdG9yS2V5XCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRNaXNzaW5nRGVwb3NpdEFyZ1wiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0V3JvbmdEZXBvc2l0QXJnVHlwZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0V3JvbmdWYWxpZGF0b3JBcmdWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VmFsaWRhdG9yS2V5Tm90SW5Sb2xlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkV2l0aGRyYXdhbENyZWRlbnRpYWxzXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbnJlc29sdmVkUm9sZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0SW52YWxpZERlcG9zaXRFbmNvZGluZ1wiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIEZpZG9Bc3NlcnRBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZTogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlY2xhcmVzIGludGVudCB0byByZWdpc3RlciBhIG5ldyBGSURPIGtleSAqL1xuICAgIEZpZG9DcmVhdGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBuZXcgZmlkbyBjcmVkZW50aWFsXG4gICAgICAgKiBAZXhhbXBsZSBXb3JrIFl1YmlrZXlcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgRm9yYmlkZGVuRXJyb3JDb2RlOlxuICAgICAgfCBcIkZpZG9SZXF1aXJlZFRvUmVtb3ZlVG90cFwiXG4gICAgICB8IFwiTWZhQ2hhbGxlbmdlRXhwaXJlZFwiXG4gICAgICB8IFwiQ2hhaW5JZE5vdEFsbG93ZWRcIlxuICAgICAgfCBcIkludmFsaWRPcmdcIlxuICAgICAgfCBcIlNlc3Npb25Gb3JXcm9uZ09yZ1wiXG4gICAgICB8IFwiT3JnRGlzYWJsZWRcIlxuICAgICAgfCBcIk9yZ05vdEZvdW5kXCJcbiAgICAgIHwgXCJPcmdXaXRob3V0T3duZXJcIlxuICAgICAgfCBcIk9ycGhhbmVkVXNlclwiXG4gICAgICB8IFwiT2lkY1VzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlck5vdEluT3JnXCJcbiAgICAgIHwgXCJVc2VyTm90T3JnT3duZXJcIlxuICAgICAgfCBcIlVzZXJOb3RLZXlPd25lclwiXG4gICAgICB8IFwiSW52YWxpZFJvbGVcIlxuICAgICAgfCBcIkRpc2FibGVkUm9sZVwiXG4gICAgICB8IFwiS2V5RGlzYWJsZWRcIlxuICAgICAgfCBcIlJvbGVOb3RJbk9yZ1wiXG4gICAgICB8IFwiS2V5Tm90SW5Sb2xlXCJcbiAgICAgIHwgXCJLZXlOb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3ROb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3RJbnZhbGlkXCJcbiAgICAgIHwgXCJVc2VyTm90T3JpZ2luYWxLZXlPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEluUm9sZVwiXG4gICAgICB8IFwiTXVzdEJlRnVsbE1lbWJlclwiXG4gICAgICB8IFwiU2Vzc2lvbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25DaGFuZ2VkXCJcbiAgICAgIHwgXCJTZXNzaW9uUmV2b2tlZFwiXG4gICAgICB8IFwiRXhwZWN0ZWRVc2VyU2Vzc2lvblwiXG4gICAgICB8IFwiU2Vzc2lvblJvbGVDaGFuZ2VkXCJcbiAgICAgIHwgXCJTY29wZWROYW1lTm90Rm91bmRcIlxuICAgICAgfCBcIlNlc3Npb25JbnZhbGlkRXBvY2hUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkludmFsaWRSZWZyZXNoVG9rZW5cIlxuICAgICAgfCBcIlNlc3Npb25SZWZyZXNoVG9rZW5FeHBpcmVkXCJcbiAgICAgIHwgXCJJbnZhbGlkQXV0aEhlYWRlclwiXG4gICAgICB8IFwiU2Vzc2lvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkQXJuXCJcbiAgICAgIHwgXCJTZXNzaW9uSW52YWxpZEF1dGhUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkF1dGhUb2tlbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25Qb3NzaWJseVN0b2xlblRva2VuXCJcbiAgICAgIHwgXCJNZmFEaXNhbGxvd2VkSWRlbnRpdHlcIlxuICAgICAgfCBcIk1mYURpc2FsbG93ZWRBcHByb3ZlclwiXG4gICAgICB8IFwiTWZhVHlwZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk1mYU5vdEFwcHJvdmVkWWV0XCJcbiAgICAgIHwgXCJNZmFDb25maXJtYXRpb25Db2RlTWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYUh0dHBSZXF1ZXN0TWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYVJlbW92ZUJlbG93TWluXCJcbiAgICAgIHwgXCJUb3RwQWxyZWFkeUNvbmZpZ3VyZWRcIlxuICAgICAgfCBcIlRvdHBDb25maWd1cmF0aW9uQ2hhbmdlZFwiXG4gICAgICB8IFwiTWZhVG90cEJhZENvbmZpZ3VyYXRpb25cIlxuICAgICAgfCBcIk1mYVRvdHBCYWRDb2RlXCJcbiAgICAgIHwgXCJNZmFUb3RwUmF0ZUxpbWl0XCJcbiAgICAgIHwgXCJJbXByb3BlclNlc3Npb25TY29wZVwiXG4gICAgICB8IFwiRnVsbFNlc3Npb25SZXF1aXJlZFwiXG4gICAgICB8IFwiU2Vzc2lvbldpdGhvdXRBbnlTY29wZVVuZGVyXCJcbiAgICAgIHwgXCJVc2VyUm9sZVVucHJpdmlsZWdlZFwiXG4gICAgICB8IFwiTWZhTm90Q29uZmlndXJlZFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgYSBmb3JrIG9mIHRoZSBgQmVhY29uQ2hhaW5gLCB0byBwcmV2ZW50IHJlcGxheSBhdHRhY2tzLlxuICAgICAqIFRoZSBzY2hlbWEgb2YgYEZvcmtgIGlzIGRlZmluZWQgaW4gdGhlIFtCZWFjb24gY2hhaW5cbiAgICAgKiBzcGVjXShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vY29uc2Vuc3VzLXNwZWNzL2Jsb2IvdjEuMC4xL3NwZWNzL3BoYXNlMC9iZWFjb24tY2hhaW4ubWQjZm9yaykuXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJjdXJyZW50X3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCIsXG4gICAgICogICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgXCJwcmV2aW91c192ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiXG4gICAgICogfVxuICAgICAqL1xuICAgIEZvcms6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEN1cnJlbnQgZm9yayB2ZXJzaW9uLlxuICAgICAgICogQGV4YW1wbGUgMHg0MzQzNDM0M1xuICAgICAgICovXG4gICAgICBjdXJyZW50X3ZlcnNpb246IHN0cmluZztcbiAgICAgIGVwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUHJldmlvdXMgZm9yayB2ZXJzaW9uLlxuICAgICAgICogQGV4YW1wbGUgMHg0MjQyNDI0MlxuICAgICAgICovXG4gICAgICBwcmV2aW91c192ZXJzaW9uOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyBkYXRhIGFzIGRlZmluZWQgaW4gdGhlIFtCZWFjb24gQVBJXG4gICAgICogc3BlY10oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vZ2V0R2VuZXNpcykuXG4gICAgICogWW91IGNhbiBnZXQgdGhlIGdlbmVzaXMgZGF0YSBmcm9tIHRoZSBCZWFjb24gbm9kZSdzIGAvZXRoL3YxL2JlYWNvbi9nZW5lc2lzYCBlbmQtcG9pbnQuXG4gICAgICogVGhpcyBzdHJ1Y3QgZGVmaW5pdGlvbiBpcyBvcmlnaW5hbGx5IGZyb20gbGlnaHRob3VzZSdzIGV0aDIuXG4gICAgICovXG4gICAgR2VuZXNpc0RhdGE6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgZm9yayB2ZXJzaW9uLlxuICAgICAgICogQGV4YW1wbGUgMHg0MjQyNDI0MlxuICAgICAgICovXG4gICAgICBnZW5lc2lzX2ZvcmtfdmVyc2lvbjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyB0aW1lXG4gICAgICAgKiBAZXhhbXBsZSAxNjc5MzI2NDQ5XG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfdGltZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyB2YWxpZGF0b3JzIHJvb3QuXG4gICAgICAgKiBAZXhhbXBsZSAweDI3MGQ0M2U3NGNlMzQwZGU0YmNhMmIxOTM2YmVjYTBmNGY1NDA4ZDllNzhhZWM0ODUwOTIwYmFmNjU5ZDViNjlcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc192YWxpZGF0b3JzX3Jvb3Q6IHN0cmluZztcbiAgICB9O1xuICAgIEdldEtleXNJbk9yZ1JlcXVlc3Q6IHtcbiAgICAgIGtleV90eXBlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIEdldFVzZXJzSW5PcmdSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiB1c2VycyBpbiB0aGUgb3JnICovXG4gICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5PcmdJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFN0YXRzIHBlcnRhaW5pbmcgdGhlIHRoZSBzZW5kZXIgYGN1YmUzc2lnbmVyYCBpbnN0YW5jZSAqL1xuICAgIEhlYXJ0YmVhdFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyBjdXJyZW50bHkgYWN0aXZlIChyZWNlaXZlZCBidXQgbm90IG5lY2Vzc2FyaWx5IGJlaW5nIHByb2Nlc3NlZCB5ZXQpXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfbnVtX3JlcXVlc3RzX2FjdGl2ZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgYnkgY3ViZTNzaWduZXJcbiAgICAgICAqL1xuICAgICAgY3VycmVudF9udW1fcmVxdWVzdHNfcHJvY2Vzc2luZzogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcmVjb3JkIG1ldHJpYyBkYXRhIGZyb20gdGhpcyBoZWFydGJlYXQgKi9cbiAgICAgIGlnbm9yZT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgbmV3IHJlcXVlc3RzIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JlcXVlc3RzOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgdGhhdCBmYWlsZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHNfZmFpbGVkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgd2VyZSByZXRyaWVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JlcXVlc3RzX3JldHJpZWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXRyaWVzIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JldHJpZXM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiB0aW1lcyBhdXRoIHRva2VuIHdhcyByZWZyZXNoZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fdG9rZW5fcmVmcmVzaGVzPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHRpbWVzIGF1dGggdG9rZW4gcmVmcmVzaCBmYWlsZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fdG9rZW5fcmVmcmVzaGVzX2ZhaWxlZD86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFZlcnNpb24gb2YgdGhlIHByb3h5IHNlbmRpbmcgdGhlIGhlYXJ0IGJlYXQgcmVxdWVzdFxuICAgICAgICpcbiAgICAgICAqIFRPRE86IE1ha2Ugbm9uLW9wdGlvbmFsIG9uY2Ugd2UgZG8gbm90IHN1cHBvcnQgcHJveGllcyB3aXRob3V0IHZlcnNpb24gaW5mb3JtYXRpb25cbiAgICAgICAqL1xuICAgICAgcHJveHlfdmVyc2lvbj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBDYXB0dXJlcyBhbGwgdGhlIHJlbGV2YW50IGluZm8gKGluY2x1ZGluZyB0aGUgcmVxdWVzdCBib2R5KSBhYm91dCByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgTUZBLlxuICAgICAqIFdlIHVzZSB0aGlzIHRvIHZlcmlmeSB0aGF0IHdoZW4gYSByZXF1ZXN0IGlzIHJlc3VtZWQgKGFmdGVyIG9idGFpbmluZyBuZWNlc3NhcnkgTUZBIGFwcHJvdmFscylcbiAgICAgKiBpdCBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGl0IG9yaWdpbmFsbHkgd2FzLlxuICAgICAqL1xuICAgIEh0dHBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcmVxdWVzdCBib2R5ICovXG4gICAgICBib2R5PzogdW5rbm93bjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCBtZXRob2Qgb2YgdGhlIHJlcXVlc3QgKi9cbiAgICAgIG1ldGhvZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIHBhdGggb2YgdGhlIHJlcXVlc3QgKGluY2x1ZGluZyBob3N0IG9yIG5vdD8pICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvb2YgdGhhdCBhbiBlbmQtdXNlciBwcm92aWRlZCBDdWJlU2lnbmVyIHdpdGggYSB2YWxpZCBhdXRoIHRva2VuXG4gICAgICogKGVpdGhlciBhbiBPSURDIHRva2VuIG9yIGEgQ3ViZVNpZ25lciBzZXNzaW9uIHRva2VuKVxuICAgICAqL1xuICAgIElkZW50aXR5UHJvb2Y6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9JREMgYXVkaWVuY2U7IHNldCBvbmx5IGlmIHRoZSBwcm9vZiB3YXMgb2J0YWluZWQgYnkgdXNpbmcgT0lEQyB0b2tlbi5cbiAgICAgICAqXG4gICAgICAgKiBJbiBvdGhlciB3b3JkcywgcHJlc2VuY2Ugb2YgdGhpcyBmaWVsZCB0ZXN0aWZpZXMgdGhhdCBhdXRob3JpemF0aW9uIHdhcyBvYnRhaW5lZCB2aWEgT0lEQy5cbiAgICAgICAqL1xuICAgICAgYXVkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIHVzZXJAZW1haWwuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgaWRlbnRpdHk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcm5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBjdWJpc3RkZXZcbiAgICAgICAqL1xuICAgICAgcHJlZmVycmVkX3VzZXJuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHVzZXJfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3ViZVNpZ25lclVzZXJJbmZvXCJdIHwgbnVsbDtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgdGhlIHByb29mICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgIH07XG4gICAgSW1wb3J0S2V5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbXBvcnRLZXlcIl0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgc2V0IG9mIGVuY3J5cHRlZCBrZXlzIHRvIGJlIGltcG9ydGVkICovXG4gICAgICBrZXlfbWF0ZXJpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW1wb3J0S2V5UmVxdWVzdE1hdGVyaWFsXCJdW107XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgIH07XG4gICAgSW1wb3J0S2V5UmVxdWVzdE1hdGVyaWFsOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2xpZW50J3MgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5LlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkLCBTRUMxLWVuY29kZWQgUDM4NCBwdWJsaWMga2V5LlxuICAgICAgICovXG4gICAgICBjbGllbnRfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVuY3J5cHRlZCBrZXlpbmcgbWF0ZXJpYWwgdG8gYmUgaW1wb3J0ZWQuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQgY2lwaGVydGV4dC5cbiAgICAgICAqL1xuICAgICAgaWttX2VuYzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBzYWx0IHZhbHVlIHVzZWQgdG8gZGVyaXZlIGEgc2hhcmVkIGtleS5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZy5cbiAgICAgICAqL1xuICAgICAgc2FsdDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgSW50ZXJuYWxFcnJvckNvZGU6XG4gICAgICB8IFwiU3lzdGVtVGltZUVycm9yXCJcbiAgICAgIHwgXCJSZXF3ZXN0RXJyb3JcIlxuICAgICAgfCBcIkRiUXVlcnlFcnJvclwiXG4gICAgICB8IFwiRGJHZXRFcnJvclwiXG4gICAgICB8IFwiRGJEZWxldGVFcnJvclwiXG4gICAgICB8IFwiRGJQdXRFcnJvclwiXG4gICAgICB8IFwiRGJVcGRhdGVFcnJvclwiXG4gICAgICB8IFwiU2VyZGVFcnJvclwiXG4gICAgICB8IFwiVGVzdEFuZFNldEVycm9yXCJcbiAgICAgIHwgXCJEYkdldEl0ZW1zRXJyb3JcIlxuICAgICAgfCBcIkRiV3JpdGVFcnJvclwiXG4gICAgICB8IFwiQ3ViaXN0U2lnbmVyRXJyb3JcIlxuICAgICAgfCBcIkN3UHV0TWV0cmljRGF0YUVycm9yXCJcbiAgICAgIHwgXCJLbXNHZW5lcmF0ZVJhbmRvbUVycm9yXCJcbiAgICAgIHwgXCJNYWxmb3JtZWRUb3RwQnl0ZXNcIlxuICAgICAgfCBcIkttc0dlbmVyYXRlUmFuZG9tTm9SZXNwb25zZUVycm9yXCJcbiAgICAgIHwgXCJDcmVhdGVLZXlFcnJvclwiXG4gICAgICB8IFwiUGFyc2VEZXJpdmF0aW9uUGF0aEVycm9yXCJcbiAgICAgIHwgXCJTcGxpdFNpZ25lckVycm9yXCJcbiAgICAgIHwgXCJDcmVhdGVJbXBvcnRLZXlFcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0RlbGV0ZVVzZXJFcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0xpc3RVc2Vyc0Vycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvR2V0VXNlckVycm9yXCJcbiAgICAgIHwgXCJNaXNzaW5nVXNlckVtYWlsXCJcbiAgICAgIHwgXCJDb2duaXRvUmVzZW5kVXNlckludml0YXRpb25cIlxuICAgICAgfCBcIkNvZ25pdG9TZXRVc2VyUGFzc3dvcmRFcnJvclwiXG4gICAgICB8IFwiR2VuZXJpY0ludGVybmFsRXJyb3JcIlxuICAgICAgfCBcIk9pZGNBdXRoV2l0aG91dE9yZ1wiXG4gICAgICB8IFwiTWlzc2luZ0tleU1ldGFkYXRhXCJcbiAgICAgIHwgXCJLbXNLZXlXaXRob3V0SWRcIlxuICAgICAgfCBcIkttc0VuYWJsZUtleUVycm9yXCJcbiAgICAgIHwgXCJLbXNEaXNhYmxlS2V5RXJyb3JcIlxuICAgICAgfCBcIlNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJEZXNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJSZUVuY3J5cHRVc2VyRXhwb3J0XCJcbiAgICAgIHwgXCJTM1VwbG9hZEVycm9yXCJcbiAgICAgIHwgXCJTM0Rvd25sb2FkRXJyb3JcIlxuICAgICAgfCBcIk1hbmFnZWRTdGF0ZU1pc3NpbmdcIlxuICAgICAgfCBcIkludGVybmFsSGVhZGVyTWlzc2luZ1wiXG4gICAgICB8IFwiSW52YWxpZEludGVybmFsSGVhZGVyVmFsdWVcIlxuICAgICAgfCBcIlJlcXVlc3RMb2NhbFN0YXRlQWxyZWFkeVNldFwiXG4gICAgICB8IFwiT2lkY09yZ01pc21hdGNoXCJcbiAgICAgIHwgXCJPcnBoYW5lZFJvbGVLZXlJZFwiXG4gICAgICB8IFwiT2lkY0lzc3Vlckp3a0VuZHBvaW50VW5hdmFpbGFibGVcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJJbnZhbGlkSndrXCJcbiAgICAgIHwgXCJJbnZhbGlkUGtGb3JNYXRlcmlhbElkXCJcbiAgICAgIHwgXCJVbmNoZWNrZWRPcmdcIlxuICAgICAgfCBcIkF2YVNpZ25DcmVkc01pc3NpbmdcIlxuICAgICAgfCBcIkF2YVNpZ25TaWduYXR1cmVNaXNzaW5nXCJcbiAgICAgIHwgXCJFeHBlY3RlZFJvbGVTZXNzaW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkVGhpcmRQYXJ0eUlkZW50aXR5XCJcbiAgICAgIHwgXCJDb2duaXRvR2V0VXNlclwiXG4gICAgICB8IFwiU25zU3Vic2NyaWJlRXJyb3JcIlxuICAgICAgfCBcIlNuc1Vuc3Vic2NyaWJlRXJyb3JcIlxuICAgICAgfCBcIlNuc0dldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNFcnJvclwiXG4gICAgICB8IFwiU25zU3Vic2NyaXB0aW9uQXR0cmlidXRlc01pc3NpbmdcIlxuICAgICAgfCBcIlNuc1NldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNFcnJvclwiXG4gICAgICB8IFwiU25zUHVibGlzaEJhdGNoRXJyb3JcIjtcbiAgICBJbnZpdGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIGFkZHJlc3NcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGFjbWUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGxvZ2luIE1GQSBwb2xpY3kgKi9cbiAgICAgIG1mYV9wb2xpY3k/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBmdWxsIG5hbWVcbiAgICAgICAqIEBleGFtcGxlIEFsaWNlIFdvbmRlcmxhbmRcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgcm9sZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTa2lwIHNlbmRpbmcgYW4gaW52aXRhdGlvbiBlbWFpbCB0byB0aGlzIHVzZXIgaWYgdHJ1ZS5cbiAgICAgICAqXG4gICAgICAgKiBOT1RFOiB0aGlzIGZpZWxkIGlzIGZvciBpbnRlcm5hbCB0ZXN0aW5nIHVzZSBPTkxZLiBJZiB5b3UgZG8gbm90XG4gICAgICAgKiBzZW5kIGFuIGludml0YXRpb24gZW1haWwsIHRoZSB1c2VyIHdpbGwgbmV2ZXIgYmUgYWJsZSB0byBsb2cgaW4uXG4gICAgICAgKiBAZXhhbXBsZSBmYWxzZVxuICAgICAgICovXG4gICAgICBza2lwX2VtYWlsOiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgW2BLZXlQYWNrYWdlYF0gc2VyaWFsaXplZCBpbnRvIGEgZm9ybWF0IHRoYXQgZ2l2ZXMgYSB0aWRpZXIgSlNPTlxuICAgICAqIHJlcHJlc2VudGF0aW9uIHN1aXRhYmxlIGZvciBlbmNyeXB0aW9uIGluIHRoZSB1c2VyLWV4cG9ydCBmbG93LlxuICAgICAqXG4gICAgICogV2UgY29uc3RydWN0IHZhbHVlcyBvZiB0aGlzIHR5cGUgcmF0aGVyIHRoYW4gY29uc3RydWN0aW5nIGBzZXJkZV9qc29uOjpWYWx1ZWBzXG4gICAgICogZGlyZWN0bHkgd2l0aCBganNvbiEoKWAgYmVjYXVzZSB0aGlzIGFsbG93cyB1cyB0byB6ZXJvaXplIHZhbHVlcyBvbiBkcm9wLCB3aGljaFxuICAgICAqIGRvZXNuJ3Qgd29yayB3aXRoIGBzZXJkZV9qc29uOjpWYWx1ZWAuXG4gICAgICpcbiAgICAgKiBFeGFtcGxlcyBvZiBzZXJpYWxpemVkIG1hdGVyaWFsOlxuICAgICAqXG4gICAgICogLSBgSnNvbktleU1hdGVyaWFsOjpFbmdsaXNoTW5lbW9uaWNgOlxuICAgICAqXG4gICAgICogYGBgXG4gICAgICogdXNlIGN1YmlzdF9zaWduZXJfdXRpbHM6OntcbiAgICAgKiBEZXJpdmF0aW9uUGF0aCwgS2V5UGFja2FnZSwgTW5lbW9uaWMsIE1uZW1vbmljUGFja2FnZSwgU2VjcDI1NmsxUGtnLFxuICAgICAqIH07XG4gICAgICogdXNlIHNlcmRlX2pzb246Ompzb247XG4gICAgICpcbiAgICAgKiBjb25zdCBNTkVNT05JQzogJnN0ciA9IFwiZGVwb3NpdCBmaXNjYWwgYnJhaW4gc3dhcm0gc3Vycm91bmQgY291c2luIGhvcm4gZ2xhcmUgZml4IGxvdmUgcmVuZGVyIGJlbGlldmUgZ3VpZGUgc2h1ZmZsZSBzdGVtIGNyYW0gYnJvY2NvbGkgcmVzZW1ibGUgYmVhY2ggYXJ0ZWZhY3QgbGFuZ3VhZ2UgZ2lmdCBqYXIgcGVybWl0XCI7XG4gICAgICogY29uc3QgREVSX1BBVEg6ICZzdHIgPSBcIm0vNDQnLzYwJy8wJy8wLzBcIjtcbiAgICAgKiBjb25zdCBLRVlfVFlQRTogJnN0ciA9IFwiZWNkc2E6c2VjcDI1NmsxXCI7XG4gICAgICpcbiAgICAgKiBsZXQgbW5lID0gTW5lbW9uaWM6OnRyeV9mcm9tKE1ORU1PTklDKS5leHBlY3QoXCJnb29kIG1uZW1vbmljXCIpO1xuICAgICAqIGxldCBkZXJwID0gRGVyaXZhdGlvblBhdGg6OnRyeV9mcm9tKERFUl9QQVRIKS5leHBlY3QoXCJnb29kIGRlciBwYXRoXCIpO1xuICAgICAqIGxldCBtbmVfcGtnID0gTW5lbW9uaWNQYWNrYWdlOjpuZXcobW5lLCBcIlwiLCBkZXJwKTtcbiAgICAgKiBsZXQga2V5X3BrZyA9IEtleVBhY2thZ2U6OjxTZWNwMjU2azFQa2c+OjpFbmdsaXNoTW5lbW9uaWMobW5lX3BrZyk7XG4gICAgICogbGV0IGpzb25fcGtnID0ga2V5X3BrZy5pbnRvX2pzb24oS0VZX1RZUEUpO1xuICAgICAqXG4gICAgICogbGV0IGpzb25fZXhwZWN0ID0ganNvbiEoe1xuICAgICAqIFwia2V5X3R5cGVcIjogS0VZX1RZUEUsXG4gICAgICogXCJtYXRlcmlhbF90eXBlXCI6IFwiZW5nbGlzaF9tbmVtb25pY1wiLFxuICAgICAqIFwibW5lbW9uaWNcIjogTU5FTU9OSUMsXG4gICAgICogXCJwYXNzd29yZFwiOiBcIlwiLFxuICAgICAqIFwiZGVyaXZhdGlvbl9wYXRoXCI6IERFUl9QQVRILFxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogYXNzZXJ0X2VxIShcbiAgICAgKiBzZXJkZV9qc29uOjp0b192YWx1ZSgmanNvbl9wa2cpLmV4cGVjdChcImpzb24gc2VyaWFsaXphdGlvblwiKSxcbiAgICAgKiBqc29uX2V4cGVjdCxcbiAgICAgKiApO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogLSBgSnNvbktleU1hdGVyaWFsOjpSYXdTZWNyZXRgOlxuICAgICAqXG4gICAgICogYGBgXG4gICAgICogdXNlIGN1YmlzdF9zaWduZXJfdXRpbHM6OntcbiAgICAgKiBnZXRfcmFuZG9tX2J5dGVfYXJyYXksIGhleF9lbmNvZGUsIEtleVBhY2thZ2UsIFJuZ0NvcmUsIFNlY3AyNTZrMVBrZyxcbiAgICAgKiB9O1xuICAgICAqIHVzZSBzZXJkZV9qc29uOjpqc29uO1xuICAgICAqXG4gICAgICogY29uc3QgS0VZX1RZUEU6ICZzdHIgPSBcImVjZHNhOnNlY3AyNTZrMVwiO1xuICAgICAqXG4gICAgICogLy8gcmFuZG9tIDMyLWJ5dGUgc2VjcmV0XG4gICAgICogbGV0IHNrOiBbdTg7IDMyXSA9ICpnZXRfcmFuZG9tX2J5dGVfYXJyYXkoKTtcbiAgICAgKlxuICAgICAqIGxldCBrZXlfcGtnID0gS2V5UGFja2FnZTo6PFNlY3AyNTZrMVBrZz46OlNlY3JldChzayk7XG4gICAgICogbGV0IGpzb25fcGtnID0ga2V5X3BrZy5pbnRvX2pzb24oS0VZX1RZUEUpO1xuICAgICAqXG4gICAgICogbGV0IGpzb25fZXhwZWN0ID0ganNvbiEoe1xuICAgICAqIFwia2V5X3R5cGVcIjogS0VZX1RZUEUsXG4gICAgICogXCJtYXRlcmlhbF90eXBlXCI6IFwicmF3X3NlY3JldFwiLFxuICAgICAqIFwic2VjcmV0XCI6IGhleF9lbmNvZGUoJnNrKSxcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGFzc2VydF9lcSEoXG4gICAgICogc2VyZGVfanNvbjo6dG9fdmFsdWUoJmpzb25fcGtnKS5leHBlY3QoXCJqc29uIHNlcmlhbGl6YXRpb25cIiksXG4gICAgICoganNvbl9leHBlY3QsXG4gICAgICogKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBKc29uS2V5UGFja2FnZTogKFxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWF0ZXJpYWxfdHlwZTogXCJyYXdfc2VjcmV0XCI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgb2YgdGhlIHJhdyBzZWNyZXQgKi9cbiAgICAgICAgICBzZWNyZXQ6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVyaXZhdGlvbiBwYXRoICovXG4gICAgICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWF0ZXJpYWxfdHlwZTogXCJlbmdsaXNoX21uZW1vbmljXCI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbW5lbW9uaWMgKi9cbiAgICAgICAgICBtbmVtb25pYzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBhc3N3b3JkICh3aGljaCBtYXkgYmUgZW1wdHkpICovXG4gICAgICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgICAgfVxuICAgICkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGtleSB0aGlzIHBhY2thZ2UgcmVwcmVzZW50cyAqL1xuICAgICAga2V5X3R5cGU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVyaXZhdGlvbiBwYXRoIHVzZWQgdG8gZGVyaXZlIHRoaXMga2V5ICovXG4gICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgd3JhcHBlZCBrZXktaW1wb3J0IGtleSAqL1xuICAgIEtleUltcG9ydEtleToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgZGtfZW5jOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIHRpbWVzdGFtcCBleHByZXNzZWQgYXMgc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC5cbiAgICAgICAqL1xuICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHRvIHdoaWNoIGFuIGltcG9ydGVkIGtleSBzaG91bGQgYmUgZW5jcnlwdGVkLlxuICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgc2tfZW5jOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJblJvbGVJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgSURcbiAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSB0aGlzIGtleSBpcyB1c2VkIG9uIGJlaGFsZiBvZiB0aGlzIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjogXCJDYW5vbmljYWxcIlxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJvbGUgSURcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluZm86IHtcbiAgICAgIGRlcml2YXRpb25faW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5RGVyaXZhdGlvbkluZm9cIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBrZXkgaXMgZW5hYmxlZCAob25seSBlbmFibGVkIGtleXMgbWF5IGJlIHVzZWQgZm9yIHNpZ25pbmcpICovXG4gICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXk6IFwiS2V5I1wiIGZvbGxvd2VkIGJ5IGEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG9cbiAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBVc2VyLWRlZmluZWQgbWV0YWRhdGEuIFdoZW4gcmVuZGVyaW5nIChlLmcuLCBpbiB0aGUgYnJvd3NlcikgeW91IHNob3VsZCB0cmVhdFxuICAgICAgICogaXQgYXMgdW50cnVzdGVkIHVzZXIgZGF0YSAoYW5kIGF2b2lkIGluamVjdGluZyBtZXRhZGF0YSBpbnRvIEhUTUwgZGlyZWN0bHkpIGlmXG4gICAgICAgKiB1bnRydXN0ZWQgdXNlcnMgY2FuIGNyZWF0ZS91cGRhdGUga2V5cyAob3IgdGhlaXIgbWV0YWRhdGEpLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE93bmVyIG9mIHRoZSBrZXlcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgcG9saWN5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k6IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQsIHNlcmlhbGl6ZWQgcHVibGljIGtleS4gVGhlIGZvcm1hdCB1c2VkIGRlcGVuZHMgb24gdGhlIGtleSB0eXBlOlxuICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAqIC0gQkxTIGtleXMgdXNlIDQ4LWJ5dGUgY29tcHJlc3NlZCBCTFMxMi0zODEgKFpDYXNoKSBmb3JtYXQ7XG4gICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHVycG9zZSBmb3Igd2hpY2ggdGhlIGtleSBjYW4gYmUgdXNlZCAoZS5nLiwgY2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzKVxuICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJbmZvczoge1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBLZXlUeXBlOlxuICAgICAgfCBcIlNlY3BFdGhBZGRyXCJcbiAgICAgIHwgXCJTZWNwQnRjXCJcbiAgICAgIHwgXCJTZWNwQnRjVGVzdFwiXG4gICAgICB8IFwiU2VjcEF2YUFkZHJcIlxuICAgICAgfCBcIlNlY3BBdmFUZXN0QWRkclwiXG4gICAgICB8IFwiQmxzUHViXCJcbiAgICAgIHwgXCJCbHNJbmFjdGl2ZVwiXG4gICAgICB8IFwiRWQyNTUxOVNvbGFuYUFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlTdWlBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5QXB0b3NBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5Q2FyZGFub0FkZHJWa1wiXG4gICAgICB8IFwiRWQyNTUxOVN0ZWxsYXJBZGRyXCJcbiAgICAgIHwgXCJNbmVtb25pY1wiXG4gICAgICB8IFwiU3RhcmtcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV3JhcHBlciBhcm91bmQgZW5jcnlwdGVkIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSBieXRlcy5cbiAgICAgKlxuICAgICAqIFdlIHNlcmlhbGl6ZSB0aGlzIGludG8gYSBiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmcgYW5kIHJldHVybiB0byB0aGUgdXNlclxuICAgICAqIHNvIHRoYXQgdGhleSBjYW4gcGFzcyB0aGlzIGJhY2sgdG8gdXMgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAqL1xuICAgIExhc3RFdmFsS2V5OiBzdHJpbmc7XG4gICAgTGlzdE1mYVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyAqL1xuICAgICAgbWZhX3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdW107XG4gICAgfTtcbiAgICBMaXN0VG9rZW5zUmVzcG9uc2U6IHtcbiAgICAgIHRva2VuczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXNjcmliZXMgd2hldGhlciBhIHVzZXIgaW4gYW4gb3JnIGlzIGFuIE93bmVyIG9yIGp1c3QgYSByZWd1bGFyIG1lbWJlclxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgTWVtYmVyUm9sZTogXCJBbGllblwiIHwgXCJNZW1iZXJcIiB8IFwiT3duZXJcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIGFzIGEgcmVzcG9uc2UgZnJvbSBtdWx0aXBsZSByb3V0ZXMgKGUuZy4sICdnZXQgbWZhJywgJ2FwcHJvdmUgbWZhJywgJ2FwcHJvdmUgdG90cCcpLiAqL1xuICAgIE1mYVJlcXVlc3RJbmZvOiB7XG4gICAgICBleHBpcmVzX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFwcHJvdmFsIHJlcXVlc3QgSUQuICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgcmVjZWlwdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVjZWlwdFwiXSB8IG51bGw7XG4gICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YXR1c1wiXTtcbiAgICB9O1xuICAgIE1mYVR5cGU6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICBcIkN1YmVTaWduZXJcIixcbiAgICAgICAgXCJUb3RwXCIsXG4gICAgICAgIFwiRmlkb1wiLFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbnN3ZXIgYSBGSURPIGNoYWxsZW5nZSB3aXRoIGEgc3BlY2lmaWMgRklETyBrZXkgKi9cbiAgICAgICAgICBGaWRvS2V5OiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIEZJRE8ga2V5IHRoYXQgbXVzdCBiZSB1c2UgdG8gYXBwcm92ZSB0aGUgcmVxdWVzdFxuICAgICAgICAgICAgICogQGV4YW1wbGUgRmlkb0tleSNFdERkLi4uWlpjOD1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIE1mYVZvdGU6IFwiYXBwcm92ZVwiIHwgXCJyZWplY3RcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTmV0d29yayBuYW1lICgnbWFpbm5ldCcsICdwcmF0ZXInLCAnZ29lcmxpJylcbiAgICAgKiBAZXhhbXBsZSBnb2VybGlcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE5ldHdvcms6IFwibWFpbm5ldFwiIHwgXCJwcmF0ZXJcIiB8IFwiZ29lcmxpXCIgfCBcImhvbGVza3lcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbmV3IHNlc3Npb24sIHJldHVybmVkIGZyb20gbXVsdGlwbGUgZW5kcG9pbnRzIChlLmcuLCBsb2dpbiwgcmVmcmVzaCwgZXRjLikuICovXG4gICAgTmV3U2Vzc2lvblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGV4cGlyYXRpb24gKGluIHNlY29uZHMgc2luY2UgVU5JWCBlcG9jaCksIGJleW9uZCB3aGljaCBpdCBjYW5ub3QgYmUgcmVmcmVzaGVkLlxuICAgICAgICogQGV4YW1wbGUgMTcwMTg3OTY0MFxuICAgICAgICovXG4gICAgICBleHBpcmF0aW9uPzogbnVtYmVyO1xuICAgICAgc2Vzc2lvbl9pbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25JbmZvXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTmV3IHRva2VuIHRvIGJlIHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uLiBSZXF1ZXN0cyB0byBzaWduaW5nIGVuZHBvaW50c1xuICAgICAgICogc2hvdWxkIGluY2x1ZGUgdGhpcyB2YWx1ZSBpbiB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlclxuICAgICAgICovXG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgTm90Rm91bmRFcnJvckNvZGU6XG4gICAgICB8IFwiVXJpU2VnbWVudE1pc3NpbmdcIlxuICAgICAgfCBcIlVyaVNlZ21lbnRJbnZhbGlkXCJcbiAgICAgIHwgXCJUb3RwTm90Q29uZmlndXJlZFwiXG4gICAgICB8IFwiRmlkb0tleU5vdEZvdW5kXCJcbiAgICAgIHwgXCJGaWRvQ2hhbGxlbmdlTm90Rm91bmRcIlxuICAgICAgfCBcIlRvdHBDaGFsbGVuZ2VOb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3ROb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydENpcGhlcnRleHROb3RGb3VuZFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGNvbmZpZ3VyYXRpb24gYW5kIHN0YXR1cyBvZiBhIG5vdGlmaWNhdGlvbiBlbmRwb2ludCAqL1xuICAgIE5vdGlmaWNhdGlvbkVuZHBvaW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdGlmaWNhdGlvbkVuZHBvaW50U3Vic2NyaXB0aW9uXCJdICYge1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1YnNjcmlwdGlvblN0YXR1c1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGNvbmZpZ3VyYXRpb24gZm9yIGFuIG9yZyBldmVudCBlbmRwb2ludCAqL1xuICAgIE5vdGlmaWNhdGlvbkVuZHBvaW50Q29uZmlndXJhdGlvbjoge1xuICAgICAgZmlsdGVyPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudEZpbHRlclwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVVJMIG9mIHRoZSBlbmRwb2ludCAqL1xuICAgICAgdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgbm90aWZpY2F0aW9uIGVuZHBvaW50IHN1YnNjcmlwdGlvbiAqL1xuICAgIE5vdGlmaWNhdGlvbkVuZHBvaW50U3Vic2NyaXB0aW9uOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBBUk4gb2YgdGhlIHN1YnNjcmlwdGlvbiAqL1xuICAgICAgYXJuOiBzdHJpbmc7XG4gICAgICBjb25maWc6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBnbG9iYWxseSB1bmlxdWUgT0lEQy1hdXRob3JpemVkIHVzZXIgYnkgZXhwcmVzc2luZyB0aGUgZnVsbCBcInBhdGhcIiB0byBhIHVzZXIuIFRoYXQgaXM6XG4gICAgICpcbiAgICAgKiAoaXNzKSAgICAgICAoc3ViKVxuICAgICAqIElzc3VlciAtPiBTdWJyZXNvdXJjZVxuICAgICAqL1xuICAgIE9JRENJZGVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJvb3QtbGV2ZWwgaXNzdWVyIHdobyBhZG1pbmlzdHJhdGVzIHRoaXMgdXNlci4gRnJvbWUgdGhlIE9JREMgc3BlYzpcbiAgICAgICAqIElzc3VlciBJZGVudGlmaWVyIGZvciB0aGUgSXNzdWVyIG9mIHRoZSByZXNwb25zZS4gVGhlIGlzc1xuICAgICAgICogdmFsdWUgaXMgYSBjYXNlIHNlbnNpdGl2ZSBVUkwgdXNpbmcgdGhlIGh0dHBzIHNjaGVtZSB0aGF0IGNvbnRhaW5zXG4gICAgICAgKiBzY2hlbWUsIGhvc3QsIGFuZCBvcHRpb25hbGx5LCBwb3J0IG51bWJlciBhbmQgcGF0aCBjb21wb25lbnRzIGFuZFxuICAgICAgICogbm8gcXVlcnkgb3IgZnJhZ21lbnQgY29tcG9uZW50cy5cbiAgICAgICAqIEBleGFtcGxlIGh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbVxuICAgICAgICovXG4gICAgICBpc3M6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gdGhlIE9JREMgc3BlYzpcbiAgICAgICAqXG4gICAgICAgKiBBIGxvY2FsbHkgdW5pcXVlIGFuZCBuZXZlciByZWFzc2lnbmVkIGlkZW50aWZpZXIgd2l0aGluIHRoZSBJc3N1ZXIgZm9yXG4gICAgICAgKiB0aGUgRW5kLVVzZXIsIHdoaWNoIGlzIGludGVuZGVkIHRvIGJlIGNvbnN1bWVkIGJ5IHRoZSBDbGllbnQsIGUuZy4sXG4gICAgICAgKiAyNDQwMDMyMCBvciBBSXRPYXdtd3RXd2NUMGs1MUJheWV3TnZ1dHJKVXFzdmw2cXM3QTQuIEl0IE1VU1QgTk9UIGV4Y2VlZFxuICAgICAgICogMjU1IEFTQ0lJIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLiBUaGUgc3ViIHZhbHVlIGlzIGEgY2FzZSBzZW5zaXRpdmVcbiAgICAgICAqIHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDEwNzY5MTUwMzUwMDA2MTUwNzE1MTEzMDgyMzY3XG4gICAgICAgKi9cbiAgICAgIHN1Yjogc3RyaW5nO1xuICAgIH07XG4gICAgT2lkY0xvZ2luUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBwdXJwb3NlIG9mIHRoZSBzZXNzaW9uICovXG4gICAgICBwdXJwb3NlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwic2lnbjoqXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzOiBzdHJpbmdbXTtcbiAgICAgIHRva2Vucz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnRXZlbnREaXNjcmltaW5hbnRzOlxuICAgICAgfCBcIkJpbGxpbmdcIlxuICAgICAgfCBcIk9pZGNBdXRoXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQmxvY2tQcm9wb3NlclNsb3RUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQXR0ZXN0YXRpb25Tb3VyY2VFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkludmFsaWRBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyVW5zdGFrZVwiXG4gICAgICB8IFwiRXRoMkV4Y2VlZGVkTWF4VW5zdGFrZVwiXG4gICAgICB8IFwiTWZhUmVqZWN0ZWRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEZpbHRlciBmb3Igb3JnIGV2ZW50cyAqL1xuICAgIE9yZ0V2ZW50RmlsdGVyOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgXCJBbGxcIixcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWNjZXB0cyBhbGwgb3JnIGV2ZW50cyBvdGhlciB0aGFuIHRoZSBvbmVzIGxpc3RlZCAqL1xuICAgICAgICAgIEFsbEV4Y2VwdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERpc2NyaW1pbmFudHNcIl1bXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT25seSBhY2NlcHRzIG9yZyBldmVudHMgdGhhdCBhcmUgb25lIG9mIHRoZSBsaXN0ZWQgZXZlbnRzICovXG4gICAgICAgICAgT25lT2Y6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnRXZlbnREaXNjcmltaW5hbnRzXCJdW107XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICBPcmdJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZW4gZmFsc2UsIGFsbCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgaW52b2x2aW5nIGtleXMgaW4gdGhpcyBvcmcgYXJlIGRpc2FibGVkLiAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZDogdGhpcyBmaWVsZCBzaG91bGQgYmUgaWdub3JlZC4gKi9cbiAgICAgIGtleV9pbXBvcnRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyB1bml2ZXJzYWxseSB1bmlxdWUga2V5LXdyYXBwaW5nLWtleSBpZGVudGlmaWVyLlxuICAgICAgICogVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCB3aGVuIHNldHRpbmcgdXAga2V5IGV4cG9ydC5cbiAgICAgICAqIEBleGFtcGxlIG1yay1mY2UwOTUyNWU4MTU4N2QyMzUyMGYxMWUwN2UyZTlkOVxuICAgICAgICovXG4gICAgICBrd2tfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIERhdGUvdGltZSAoaW4gVVRDKSB3aGVuIGxhc3QgJ3Vuc3Rha2UnIHdhcyBwZXJmb3JtZWQuIFVuaXggZXBvY2ggaWYgbm9uZS5cbiAgICAgICAqIEBleGFtcGxlIFRPRE9cbiAgICAgICAqL1xuICAgICAgbGFzdF91bnN0YWtlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSAndW5zdGFrZScgY2FsbHMgaGFwcGVuZWQgb24gdGhlIGRheSB3aGVuIGBsYXN0X3Vuc3Rha2VgIHdhcyBwZXJmb3JtZWQuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfdW5zdGFrZV9kYXlfY291bnQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLCB3aGljaCBhcmUgSFRUUFMgVVJMcyBhcmUgbm90aWZpZWQgYWJvdXQgYVxuICAgICAgICogY29uZmlndXJhYmxlIHNldCBvZiBldmVudHMgaW4gYW4gb3JnYW5pemF0aW9uLiBGb3IgZWFjaCBldmVudCwgQ3ViZVNpZ25lciBzZW5kcyBhIFBPU1RcbiAgICAgICAqIHJlcXVlc3Qgd2l0aCBhIEpTT04tZm9ybWF0dGVkIGJvZHkgdGhhdCBjb250YWlucyB0aGUgZXZlbnQgZGV0YWlscy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDFcIixcbiAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQxXCJcbiAgICAgICAqICAgICB9LFxuICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiQ29uZmlybWVkXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDJcIixcbiAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgKiAgICAgICBcImZpbHRlclwiOiB7XG4gICAgICAgKiAgICAgICAgIFwiT25lT2ZcIjogW1xuICAgICAgICogICAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIixcbiAgICAgICAqICAgICAgICAgICBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCJcbiAgICAgICAqICAgICAgICAgXVxuICAgICAgICogICAgICAgfSxcbiAgICAgICAqICAgICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDJcIlxuICAgICAgICogICAgIH0sXG4gICAgICAgKiAgICAgXCJzdGF0dXNcIjogXCJQZW5kaW5nXCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludFwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmctd2lkZSBwb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSBhIGtleSBpcyB1c2VkIGZvciBzaWduaW5nXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgVE9UUCBmYWlsdXJlIGxpbWl0LCBpLmUuLCB0aGUgbnVtYmVyXG4gICAgICAgKiBvZiB0aW1lcyBhIHVzZXIgY2FuIHByb3ZpZGUgYW4gaW5jb3JyZWN0IFRPVFAgY29kZSBiZWZvcmUgYmVpbmcgcmF0ZSBsaW1pdGVkLlxuICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIG1pbmltdW1cbiAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAqIGl0IG1heSBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlXG4gICAgICAgKiBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF9kZWxheTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIHVzZXItZXhwb3J0IHdpbmRvdywgaS5lLiwgdGhlIGFtb3VudFxuICAgICAgICogb2YgdGltZSAoaW4gc2Vjb25kcykgYmV0d2VlbiB3aGVuIHRoZSB1c2VyLWV4cG9ydCBkZWxheSBpcyBjb21wbGV0ZWQgYW5kIHdoZW5cbiAgICAgICAqIHRoZSB1c2VyIGV4cG9ydCByZXF1ZXN0IGhhcyBleHBpcmVkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWVcbiAgICAgICAqIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlIG9yZy13aWRlIGV4cG9ydC4pXG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdzogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSByb2NrZXQgcXVlcnkgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgcGFnZSBmcm9tIHdoaWNoIHRvIHN0YXJ0IGEgcGFnaW5hdGVkIHF1ZXJ5LlxuICAgICAqXG4gICAgICogTVVTVCBiZSBuYW1lZCBgPHBhZ2U+YCBpbiByb2NrZXQgdXJsIHNwZWMgc28gdGhhdCAnc2VyZGUocmVuYW1lID0gXCJwYWdlLipcIiknIGJlbG93IGNvbnRpbnVlcyB0byB3b3JrXG4gICAgICovXG4gICAgUGFnZToge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgKlxuICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICovXG4gICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgKi9cbiAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdEtleVJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIHRoZSBrZXkgaXMgaW4gKi9cbiAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZToge1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBrZXlzIGluIGEgcm9sZSAqL1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgdXNlcnMgaW4gYSByb2xlICovXG4gICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZToge1xuICAgICAgZXhwb3J0X3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRJbml0UmVzcG9uc2VcIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIFBvbGljeUVycm9yQ29kZTpcbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFcnJvck93bkNvZGVzXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtVHhEZXBvc2l0RXJyb3JDb2RlXCJdO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFBvbGljeUVycm9yT3duQ29kZXM6XG4gICAgICB8IFwiRXZtVHhSZWNlaXZlck1pc21hdGNoXCJcbiAgICAgIHwgXCJFdm1UeFNlbmRlck1pc21hdGNoXCJcbiAgICAgIHwgXCJQb2xpY3lEaXNqdW5jdGlvbkVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lOZWdhdGlvbkVycm9yXCJcbiAgICAgIHwgXCJFdGgyRXhjZWVkZWRNYXhVbnN0YWtlXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudFVuc3Rha2luZ1wiXG4gICAgICB8IFwiTm90SW5JcHY0QWxsb3dsaXN0XCJcbiAgICAgIHwgXCJOb3RJbk9yaWdpbkFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZFNvdXJjZUlwXCJcbiAgICAgIHwgXCJSYXdTaWduaW5nTm90QWxsb3dlZFwiXG4gICAgICB8IFwiRWlwNzEyU2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIk9pZGNTb3VyY2VOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJOb09pZGNBdXRoU291cmNlc0RlZmluZWRcIlxuICAgICAgfCBcIkFkZEtleVRvUm9sZURpc2FsbG93ZWRcIlxuICAgICAgfCBcIktleXNBbHJlYWR5SW5Sb2xlXCJcbiAgICAgIHwgXCJLZXlJbk11bHRpcGxlUm9sZXNcIlxuICAgICAgfCBcIktleUFjY2Vzc0Vycm9yXCJcbiAgICAgIHwgXCJFaXAxOTFTaWduaW5nTm90QWxsb3dlZFwiO1xuICAgIFByZWNvbmRpdGlvbkVycm9yQ29kZTpcbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQcmVjb25kaXRpb25FcnJvck93bkNvZGVzXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5RXJyb3JDb2RlXCJdO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFByZWNvbmRpdGlvbkVycm9yT3duQ29kZXM6XG4gICAgICB8IFwiRXRoMlByb3Bvc2VyU2xvdFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkF0dGVzdGF0aW9uU291cmNlRXBvY2hUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJNdWx0aURlcG9zaXRUb05vbkdlbmVyYXRlZEtleVwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFVua25vd25Jbml0aWFsRGVwb3NpdFwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFdpdGhkcmF3YWxBZGRyZXNzTWlzbWF0Y2hcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSB3aXJlLWVuY29kYWJsZSBmb3JtIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIGludGVyZmFjZVxuICAgICAqIENsaWVudHMgbWF5IG5lZWQgdG8gbWFudWFsbHkgZW5jb2RlIGludG8gdGhpcyBmb3JtYXQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2VydmVyXG4gICAgICpcbiAgICAgKiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbCBpbnRlcmZhY2UgaW5oZXJpdHMgZnJvbSBDcmVkZW50aWFsXG4gICAgICogW0NSRURFTlRJQUwtTUFOQUdFTUVOVC0xXSwgYW5kIGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIHRoYXQgYXJlIHJldHVybmVkIHRvXG4gICAgICogdGhlIGNhbGxlciB3aGVuIGEgbmV3IGNyZWRlbnRpYWwgaXMgY3JlYXRlZCwgb3IgYSBuZXcgYXNzZXJ0aW9uIGlzXG4gICAgICogcmVxdWVzdGVkLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLXBrY3JlZGVudGlhbFxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgcmVzdWx0cyBvZiBwcm9jZXNzaW5nIGNsaWVudCBleHRlbnNpb25zXG4gICAgICAgKiByZXF1ZXN0ZWQgYnkgdGhlIFJlbHlpbmcgUGFydHkgdXBvbiB0aGUgUmVseWluZyBQYXJ0eSdzIGludm9jYXRpb24gb2ZcbiAgICAgICAqIGVpdGhlciBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgb3IgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCgpLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbC1jbGllbnRleHRlbnNpb25zcmVzdWx0cy1zbG90XG4gICAgICAgKlxuICAgICAgICogSU1QTEVNRU5UQVRJT04gTk9URTogVGhlIHR5cGUgZm9yIHRoaXMgZmllbGQgY29tZXMgZnJvbSB0aGUgdHlwZSBvZiBnZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgd2hpY2ggYXMgdGhlIGZvbGxvd2luZyBkb2M6XG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcGVyYXRpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgW1tjbGllbnRFeHRlbnNpb25zUmVzdWx0c11dLCB3aGljaCBpcyBhIG1hcCBjb250YWluaW5nIGV4dGVuc2lvbiBpZGVudGlmaWVyIOKGkiBjbGllbnQgZXh0ZW5zaW9uIG91dHB1dCBlbnRyaWVzIHByb2R1Y2VkIGJ5IHRoZSBleHRlbnNpb27igJlzIGNsaWVudCBleHRlbnNpb24gcHJvY2Vzc2luZy5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNyZWYtZm9yLWRvbS1wdWJsaWNrZXljcmVkZW50aWFsLWdldGNsaWVudGV4dGVuc2lvbnJlc3VsdHNcbiAgICAgICAqL1xuICAgICAgY2xpZW50RXh0ZW5zaW9uUmVzdWx0cz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGludGVybmFsIHNsb3QgY29udGFpbnMgdGhlIGNyZWRlbnRpYWwgSUQsIGNob3NlbiBieSB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIFRoZSBjcmVkZW50aWFsIElEIGlzIHVzZWQgdG8gbG9vayB1cCBjcmVkZW50aWFscyBmb3IgdXNlLFxuICAgICAgICogYW5kIGlzIHRoZXJlZm9yZSBleHBlY3RlZCB0byBiZSBnbG9iYWxseSB1bmlxdWUgd2l0aCBoaWdoIHByb2JhYmlsaXR5XG4gICAgICAgKiBhY3Jvc3MgYWxsIGNyZWRlbnRpYWxzIG9mIHRoZSBzYW1lIHR5cGUsIGFjcm9zcyBhbGwgYXV0aGVudGljYXRvcnMuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsLWlkZW50aWZpZXItc2xvdFxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdG9ycyByZXNwb25kIHRvIFJlbHlpbmcgUGFydHkgcmVxdWVzdHMgYnkgcmV0dXJuaW5nIGFuIG9iamVjdCBkZXJpdmVkIGZyb20gdGhlIEF1dGhlbnRpY2F0b3JSZXNwb25zZSBpbnRlcmZhY2UgKi9cbiAgICAgIHJlc3BvbnNlOlxuICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VcIl1cbiAgICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgcHVibGljIGtleSBjcmVkZW50aWFsXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGRlZi1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczoge1xuICAgICAgYXR0ZXN0YXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2VcIl07XG4gICAgICBhdXRoZW50aWNhdG9yU2VsZWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWFcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgYSBjaGFsbGVuZ2UgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgICAqIG5ld2x5IGNyZWF0ZWQgY3JlZGVudGlhbOKAmXMgYXR0ZXN0YXRpb24gb2JqZWN0LiBTZWUgdGhlIMKn4oCvMTMuNC4zXG4gICAgICAgKiBDcnlwdG9ncmFwaGljIENoYWxsZW5nZXMgc2VjdXJpdHkgY29uc2lkZXJhdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtY2hhbGxlbmdlXG4gICAgICAgKi9cbiAgICAgIGNoYWxsZW5nZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgaXMgaW50ZW5kZWQgZm9yIHVzZSBieSBSZWx5aW5nIFBhcnRpZXMgdGhhdCB3aXNoIHRvIGxpbWl0XG4gICAgICAgKiB0aGUgY3JlYXRpb24gb2YgbXVsdGlwbGUgY3JlZGVudGlhbHMgZm9yIHRoZSBzYW1lIGFjY291bnQgb24gYSBzaW5nbGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIFRoZSBjbGllbnQgaXMgcmVxdWVzdGVkIHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgbmV3XG4gICAgICAgKiBjcmVkZW50aWFsIHdvdWxkIGJlIGNyZWF0ZWQgb24gYW4gYXV0aGVudGljYXRvciB0aGF0IGFsc28gY29udGFpbnMgb25lXG4gICAgICAgKiBvZiB0aGUgY3JlZGVudGlhbHMgZW51bWVyYXRlZCBpbiB0aGlzIHBhcmFtZXRlci5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtZXhjbHVkZWNyZWRlbnRpYWxzXG4gICAgICAgKi9cbiAgICAgIGV4Y2x1ZGVDcmVkZW50aWFscz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGNvbnRhaW5zIGFkZGl0aW9uYWwgcGFyYW1ldGVycyByZXF1ZXN0aW5nIGFkZGl0aW9uYWxcbiAgICAgICAqIHByb2Nlc3NpbmcgYnkgdGhlIGNsaWVudCBhbmQgYXV0aGVudGljYXRvci4gRm9yIGV4YW1wbGUsIHRoZSBjYWxsZXIgbWF5XG4gICAgICAgKiByZXF1ZXN0IHRoYXQgb25seSBhdXRoZW50aWNhdG9ycyB3aXRoIGNlcnRhaW4gY2FwYWJpbGl0aWVzIGJlIHVzZWQgdG9cbiAgICAgICAqIGNyZWF0ZSB0aGUgY3JlZGVudGlhbCwgb3IgdGhhdCBwYXJ0aWN1bGFyIGluZm9ybWF0aW9uIGJlIHJldHVybmVkIGluIHRoZVxuICAgICAgICogYXR0ZXN0YXRpb24gb2JqZWN0LiBTb21lIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQgaW4gwqfigK85IFdlYkF1dGhuXG4gICAgICAgKiBFeHRlbnNpb25zOyBjb25zdWx0IHRoZSBJQU5BIFwiV2ViQXV0aG4gRXh0ZW5zaW9uIElkZW50aWZpZXJzXCIgcmVnaXN0cnlcbiAgICAgICAqIFtJQU5BLVdlYkF1dGhuLVJlZ2lzdHJpZXNdIGVzdGFibGlzaGVkIGJ5IFtSRkM4ODA5XSBmb3IgYW4gdXAtdG8tZGF0ZVxuICAgICAgICogbGlzdCBvZiByZWdpc3RlcmVkIFdlYkF1dGhuIEV4dGVuc2lvbnMuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLWV4dGVuc2lvbnNcbiAgICAgICAqL1xuICAgICAgZXh0ZW5zaW9ucz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGVzaXJlZCBwcm9wZXJ0aWVzIG9mIHRoZVxuICAgICAgICogY3JlZGVudGlhbCB0byBiZSBjcmVhdGVkLiBUaGUgc2VxdWVuY2UgaXMgb3JkZXJlZCBmcm9tIG1vc3QgcHJlZmVycmVkIHRvXG4gICAgICAgKiBsZWFzdCBwcmVmZXJyZWQuIFRoZSBjbGllbnQgbWFrZXMgYSBiZXN0LWVmZm9ydCB0byBjcmVhdGUgdGhlIG1vc3RcbiAgICAgICAqIHByZWZlcnJlZCBjcmVkZW50aWFsIHRoYXQgaXQgY2FuLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1wdWJrZXljcmVkcGFyYW1zXG4gICAgICAgKi9cbiAgICAgIHB1YktleUNyZWRQYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnNcIl1bXTtcbiAgICAgIHJwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIHNwZWNpZmllcyBhIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdGhhdCB0aGUgY2FsbGVyIGlzXG4gICAgICAgKiB3aWxsaW5nIHRvIHdhaXQgZm9yIHRoZSBjYWxsIHRvIGNvbXBsZXRlLiBUaGlzIGlzIHRyZWF0ZWQgYXMgYSBoaW50LCBhbmRcbiAgICAgICAqIE1BWSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjbGllbnQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZGljdGlvbmFyeSBjb250YWlucyB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSBzcGVjaWZpZWQgYnkgYSBjYWxsZXIgd2hlblxuICAgICAqIHJlZmVycmluZyB0byBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBhcyBhbiBpbnB1dCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZSgpXG4gICAgICogb3IgZ2V0KCkgbWV0aG9kcy4gSXQgbWlycm9ycyB0aGUgZmllbGRzIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIG9iamVjdFxuICAgICAqIHJldHVybmVkIGJ5IHRoZSBsYXR0ZXIgbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0aW9uYXJ5LWNyZWRlbnRpYWwtZGVzY3JpcHRvclxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyB0aGUgY3JlZGVudGlhbCBJRCBvZiB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsIHRoZSBjYWxsZXIgaXMgcmVmZXJyaW5nIHRvLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGRlc2NyaXB0b3ItaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIGNvbnRhaW5zIGEgaGludCBhcyB0byBob3cgdGhlIGNsaWVudCBtaWdodFxuICAgICAgICogY29tbXVuaWNhdGUgd2l0aCB0aGUgbWFuYWdpbmcgYXV0aGVudGljYXRvciBvZiB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsXG4gICAgICAgKiB0aGUgY2FsbGVyIGlzIHJlZmVycmluZyB0by4gVGhlIHZhbHVlcyBTSE9VTEQgYmUgbWVtYmVycyBvZlxuICAgICAgICogQXV0aGVudGljYXRvclRyYW5zcG9ydCBidXQgY2xpZW50IHBsYXRmb3JtcyBNVVNUIGlnbm9yZSB1bmtub3duIHZhbHVlcy5cbiAgICAgICAqXG4gICAgICAgKiBUaGUgZ2V0VHJhbnNwb3J0cygpIG9wZXJhdGlvbiBjYW4gcHJvdmlkZSBzdWl0YWJsZSB2YWx1ZXMgZm9yIHRoaXNcbiAgICAgICAqIG1lbWJlci4gV2hlbiByZWdpc3RlcmluZyBhIG5ldyBjcmVkZW50aWFsLCB0aGUgUmVseWluZyBQYXJ0eSBTSE9VTERcbiAgICAgICAqIHN0b3JlIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGdldFRyYW5zcG9ydHMoKS4gV2hlbiBjcmVhdGluZyBhXG4gICAgICAgKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciBmb3IgdGhhdCBjcmVkZW50aWFsLCB0aGUgUmVseWluZyBQYXJ0eVxuICAgICAgICogU0hPVUxEIHJldHJpZXZlIHRoYXQgc3RvcmVkIHZhbHVlIGFuZCBzZXQgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZVxuICAgICAgICogdHJhbnNwb3J0cyBtZW1iZXIuXG4gICAgICAgKi9cbiAgICAgIHRyYW5zcG9ydHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRcIl1bXSB8IG51bGw7XG4gICAgICB0eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZGljdGlvbmFyeSBpcyB1c2VkIHRvIHN1cHBseSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgd2hlbiBjcmVhdGluZyBhIG5ld1xuICAgICAqIGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1jcmVkZW50aWFsLXBhcmFtc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBzcGVjaWZpZXMgdGhlIGNyeXB0b2dyYXBoaWMgc2lnbmF0dXJlIGFsZ29yaXRobSB3aXRoIHdoaWNoXG4gICAgICAgKiB0aGUgbmV3bHkgZ2VuZXJhdGVkIGNyZWRlbnRpYWwgd2lsbCBiZSB1c2VkLCBhbmQgdGh1cyBhbHNvIHRoZSB0eXBlIG9mXG4gICAgICAgKiBhc3ltbWV0cmljIGtleSBwYWlyIHRvIGJlIGdlbmVyYXRlZCwgZS5nLiwgUlNBIG9yIEVsbGlwdGljIEN1cnZlLlxuICAgICAgICovXG4gICAgICBhbGc6IG51bWJlcjtcbiAgICAgIHR5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFR5cGVcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNgIGRpY3Rpb25hcnkgc3VwcGxpZXMgZ2V0KCkgd2l0aCB0aGVcbiAgICAgKiBkYXRhIGl0IG5lZWRzIHRvIGdlbmVyYXRlIGFuIGFzc2VydGlvbi4gSXRzIGNoYWxsZW5nZSBtZW1iZXIgTVVTVCBiZVxuICAgICAqIHByZXNlbnQsIHdoaWxlIGl0cyBvdGhlciBtZW1iZXJzIGFyZSBPUFRJT05BTC5cbiAgICAgKlxuICAgICAqIFRoaXMgc3RydWN0IGlzIGFsc28gdXNlZCBhcyBwYXJ0IG9mIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VkdXJlIGZvciBhc3NlcnRpb25zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBjb250YWlucyBhIGxpc3Qgb2YgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcbiAgICAgICAqIG9iamVjdHMgcmVwcmVzZW50aW5nIHB1YmxpYyBrZXkgY3JlZGVudGlhbHMgYWNjZXB0YWJsZSB0byB0aGUgY2FsbGVyLCBpblxuICAgICAgICogZGVzY2VuZGluZyBvcmRlciBvZiB0aGUgY2FsbGVy4oCZcyBwcmVmZXJlbmNlICh0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICogaXMgdGhlIG1vc3QgcHJlZmVycmVkIGNyZWRlbnRpYWwsIGFuZCBzbyBvbiBkb3duIHRoZSBsaXN0KS5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1hbGxvd2NyZWRlbnRpYWxzXG4gICAgICAgKi9cbiAgICAgIGFsbG93Q3JlZGVudGlhbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXCJdW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciByZXByZXNlbnRzIGEgY2hhbGxlbmdlIHRoYXQgdGhlIHNlbGVjdGVkIGF1dGhlbnRpY2F0b3JcbiAgICAgICAqIHNpZ25zLCBhbG9uZyB3aXRoIG90aGVyIGRhdGEsIHdoZW4gcHJvZHVjaW5nIGFuIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgKiBhc3NlcnRpb24uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtY2hhbGxlbmdlXG4gICAgICAgKi9cbiAgICAgIGNoYWxsZW5nZTogc3RyaW5nO1xuICAgICAgZXh0ZW5zaW9ucz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBzcGVjaWZpZXMgdGhlIHJlbHlpbmcgcGFydHkgaWRlbnRpZmllciBjbGFpbWVkIGJ5XG4gICAgICAgKiB0aGUgY2FsbGVyLiBJZiBvbWl0dGVkLCBpdHMgdmFsdWUgd2lsbCBiZSB0aGUgQ3JlZGVudGlhbHNDb250YWluZXJcbiAgICAgICAqIG9iamVjdOKAmXMgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0J3Mgb3JpZ2luJ3MgZWZmZWN0aXZlIGRvbWFpbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1ycGlkXG4gICAgICAgKi9cbiAgICAgIHJwSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgc3BlY2lmaWVzIGEgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0aGF0IHRoZSBjYWxsZXJcbiAgICAgICAqIGlzIHdpbGxpbmcgdG8gd2FpdCBmb3IgdGhlIGNhbGwgdG8gY29tcGxldGUuIFRoZSB2YWx1ZSBpcyB0cmVhdGVkIGFzIGFcbiAgICAgICAqIGhpbnQsIGFuZCBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyVmVyaWZpY2F0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiBSZWx5aW5nIFBhcnR5IGF0dHJpYnV0ZXMgd2hlbiBjcmVhdGluZyBhIG5ldyBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktcnAtY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBSZWx5aW5nIFBhcnR5IGVudGl0eSwgd2hpY2ggc2V0cyB0aGUgUlAgSUQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscnBlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1wYWxhdGFibGUgbmFtZSBmb3IgdGhlIGVudGl0eS4gSXRzIGZ1bmN0aW9uIGRlcGVuZHMgb24gd2hhdCB0aGVcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxFbnRpdHkgcmVwcmVzZW50czogV2hlbiBpbmhlcml0ZWQgYnlcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZSBpZGVudGlmaWVyIGZvciB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHksIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuIEZvciBleGFtcGxlLCBcIkFDTUVcbiAgICAgICAqIENvcnBvcmF0aW9uXCIsIFwiV29uZGVyZnVsIFdpZGdldHMsIEluYy5cIiBvciBcItCe0JDQniDQn9GA0LjQvNC10YDRgtC10YVcIi5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBuYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb24gZGVmaW5lcyB0aGUgdmFsaWQgY3JlZGVudGlhbCB0eXBlcy4gSXQgaXMgYW4gZXh0ZW5zaW9uXG4gICAgICogcG9pbnQ7IHZhbHVlcyBjYW4gYmUgYWRkZWQgdG8gaXQgaW4gdGhlIGZ1dHVyZSwgYXMgbW9yZSBjcmVkZW50aWFsIHR5cGVzIGFyZVxuICAgICAqIGRlZmluZWQuIFRoZSB2YWx1ZXMgb2YgdGhpcyBlbnVtZXJhdGlvbiBhcmUgdXNlZCBmb3IgdmVyc2lvbmluZyB0aGVcbiAgICAgKiBBdXRoZW50aWNhdGlvbiBBc3NlcnRpb24gYW5kIGF0dGVzdGF0aW9uIHN0cnVjdHVyZXMgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mXG4gICAgICogdGhlIGF1dGhlbnRpY2F0b3IuICBDdXJyZW50bHkgb25lIGNyZWRlbnRpYWwgdHlwZSBpcyBkZWZpbmVkLCBuYW1lbHlcbiAgICAgKiBcInB1YmxpYy1rZXlcIi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLXB1YmxpY2tleWNyZWRlbnRpYWx0eXBlXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTogXCJwdWJsaWMta2V5XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiB1c2VyIGFjY291bnQgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWwuXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcGFsYXRhYmxlIG5hbWUgZm9yIHRoZSB1c2VyIGFjY291bnQsIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuXG4gICAgICAgKiBGb3IgZXhhbXBsZSwgXCJBbGV4IE3DvGxsZXJcIiBvciBcIueUsOS4reWAq1wiLiBUaGUgUmVseWluZyBQYXJ0eSBTSE9VTEQgbGV0IHRoZVxuICAgICAgICogdXNlciBjaG9vc2UgdGhpcywgYW5kIFNIT1VMRCBOT1QgcmVzdHJpY3QgdGhlIGNob2ljZSBtb3JlIHRoYW5cbiAgICAgICAqIG5lY2Vzc2FyeS5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBkaXNwbGF5TmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0b1xuICAgICAgICogdGhlIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuMyBvZlxuICAgICAgICogW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgb24gZGlzcGxheU5hbWUncyB2YWx1ZSBwcmlvciB0byBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIgb3IgaW5jbHVkaW5nIHRoZSB2YWx1ZSBhcyBhIHBhcmFtZXRlciBvZiB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogV2hlbiBjbGllbnRzLCBjbGllbnQgcGxhdGZvcm1zLCBvciBhdXRoZW50aWNhdG9ycyBkaXNwbGF5IGFcbiAgICAgICAqIGRpc3BsYXlOYW1lJ3MgdmFsdWUsIHRoZXkgc2hvdWxkIGFsd2F5cyB1c2UgVUkgZWxlbWVudHMgdG8gcHJvdmlkZSBhXG4gICAgICAgKiBjbGVhciBib3VuZGFyeSBhcm91bmQgdGhlIGRpc3BsYXllZCB2YWx1ZSwgYW5kIG5vdCBhbGxvdyBvdmVyZmxvdyBpbnRvXG4gICAgICAgKiBvdGhlciBlbGVtZW50cyBbY3NzLW92ZXJmbG93LTNdLlxuICAgICAgICpcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JzIE1VU1QgYWNjZXB0IGFuZCBzdG9yZSBhIDY0LWJ5dGUgbWluaW11bSBsZW5ndGggZm9yIGFcbiAgICAgICAqIGRpc3BsYXlOYW1lIG1lbWJlcuKAmXMgdmFsdWUuIEF1dGhlbnRpY2F0b3JzIE1BWSB0cnVuY2F0ZSBhIGRpc3BsYXlOYW1lXG4gICAgICAgKiBtZW1iZXLigJlzIHZhbHVlIHNvIHRoYXQgaXQgZml0cyB3aXRoaW4gNjQgYnl0ZXMuIFNlZSDCp+KArzYuNC4xIFN0cmluZ1xuICAgICAgICogVHJ1bmNhdGlvbiBhYm91dCB0cnVuY2F0aW9uIGFuZCBvdGhlciBjb25zaWRlcmF0aW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWx1c2VyZW50aXR5LWRpc3BsYXluYW1lXG4gICAgICAgKi9cbiAgICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBoYW5kbGUgb2YgdGhlIHVzZXIgYWNjb3VudCBlbnRpdHkuIEEgdXNlciBoYW5kbGUgaXMgYW4gb3BhcXVlXG4gICAgICAgKiBieXRlIHNlcXVlbmNlIHdpdGggYSBtYXhpbXVtIHNpemUgb2YgNjQgYnl0ZXMsIGFuZCBpcyBub3QgbWVhbnQgdG8gYmVcbiAgICAgICAqIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUbyBlbnN1cmUgc2VjdXJlIG9wZXJhdGlvbiwgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gZGVjaXNpb25zXG4gICAgICAgKiBNVVNUIGJlIG1hZGUgb24gdGhlIGJhc2lzIG9mIHRoaXMgaWQgbWVtYmVyLCBub3QgdGhlIGRpc3BsYXlOYW1lIG5vclxuICAgICAgICogbmFtZSBtZW1iZXJzLiBTZWUgU2VjdGlvbiA2LjEgb2YgW1JGQzgyNjZdLlxuICAgICAgICpcbiAgICAgICAqIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBjb250YWluIHBlcnNvbmFsbHkgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb25cbiAgICAgICAqIGFib3V0IHRoZSB1c2VyLCBzdWNoIGFzIGEgdXNlcm5hbWUgb3IgZS1tYWlsIGFkZHJlc3M7IHNlZSDCp+KArzE0LjYuMSBVc2VyXG4gICAgICAgKiBIYW5kbGUgQ29udGVudHMgZm9yIGRldGFpbHMuIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBiZSBlbXB0eSwgdGhvdWdoXG4gICAgICAgKiBpdCBNQVkgYmUgbnVsbC5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlOiB0aGUgdXNlciBoYW5kbGUgb3VnaHQgbm90IGJlIGEgY29uc3RhbnQgdmFsdWUgYWNyb3NzIGRpZmZlcmVudFxuICAgICAgICogYWNjb3VudHMsIGV2ZW4gZm9yIG5vbi1kaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMsIGJlY2F1c2Ugc29tZVxuICAgICAgICogYXV0aGVudGljYXRvcnMgYWx3YXlzIGNyZWF0ZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFRodXMgYSBjb25zdGFudFxuICAgICAgICogdXNlciBoYW5kbGUgd291bGQgcHJldmVudCBhIHVzZXIgZnJvbSB1c2luZyBzdWNoIGFuIGF1dGhlbnRpY2F0b3Igd2l0aFxuICAgICAgICogbW9yZSB0aGFuIG9uZSBhY2NvdW50IGF0IHRoZSBSZWx5aW5nIFBhcnR5LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gaW5oZXJpdGVkIGJ5IFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5LCBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZVxuICAgICAgICogaWRlbnRpZmllciBmb3IgYSB1c2VyIGFjY291bnQuIEl0IGlzIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXksIGkuZS4sXG4gICAgICAgKiBhaWRpbmcgdGhlIHVzZXIgaW4gZGV0ZXJtaW5pbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB1c2VyIGFjY291bnRzIHdpdGhcbiAgICAgICAqIHNpbWlsYXIgZGlzcGxheU5hbWVzLiBGb3IgZXhhbXBsZSwgXCJhbGV4bVwiLCBcImFsZXgubXVlbGxlckBleGFtcGxlLmNvbVwiXG4gICAgICAgKiBvciBcIisxNDI1NTU1MTIzNFwiLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBSZWx5aW5nIFBhcnR5IE1BWSBsZXQgdGhlIHVzZXIgY2hvb3NlIHRoaXMgdmFsdWUuIFRoZSBSZWx5aW5nIFBhcnR5XG4gICAgICAgKiBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XVxuICAgICAgICogZm9yIHRoZSBVc2VybmFtZUNhc2VQcmVzZXJ2ZWQgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIElkZW50aWZpZXJDbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCB3aGVuIHNldHRpbmcgbmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XSBmb3IgdGhlIFVzZXJuYW1lQ2FzZVByZXNlcnZlZCBQcm9maWxlIG9mIHRoZSBQUkVDSVMgSWRlbnRpZmllckNsYXNzIFtSRkM4MjY0XSwgb24gbmFtZSdzIHZhbHVlIHByaW9yIHRvIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZSB1c2VyIG9yIGluY2x1ZGluZyB0aGUgdmFsdWUgYXMgYSBwYXJhbWV0ZXIgb2YgdGhlIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIFJhdGNoZXRDb25maWc6IHtcbiAgICAgIC8qKiBAZGVmYXVsdCBkZWZhdWx0X2F1dGhfbGlmZXRpbWUgKi9cbiAgICAgIGF1dGhfbGlmZXRpbWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlZmF1bHQgZGVmYXVsdF9ncmFjZV9saWZldGltZSAqL1xuICAgICAgZ3JhY2VfbGlmZXRpbWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlZmF1bHQgZGVmYXVsdF9yZWZyZXNoX2xpZmV0aW1lICovXG4gICAgICByZWZyZXNoX2xpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqIEBkZWZhdWx0IGRlZmF1bHRfc2Vzc2lvbl9saWZldGltZSAqL1xuICAgICAgc2Vzc2lvbl9saWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVjZWlwdCB0aGF0IGFuIE1GQSByZXF1ZXN0IHdhcyBhcHByb3ZlZC4gKi9cbiAgICBSZWNlaXB0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb25maXJtYXRpb24gY29kZSB0aGUgdXNlciBuZWVkcyB0byBwcmVzZW50IHdoZW4gcmVzdW1pbmcgdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gICAgICAgKiBAZXhhbXBsZSBiYTFkNzVkZC1kOTk5LTRjMWItOTQ0ZC0yNWMyNTQ0MGM4YWZcbiAgICAgICAqL1xuICAgICAgY29uZmlybWF0aW9uOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgbG9nZ2VkLWluIHVzZXIgd2hvc2UgYWN0aW9uIGNyZWF0ZWQgdGhpcyBhcHByb3ZhbC4gKi9cbiAgICAgIGZpbmFsX2FwcHJvdmVyOiBzdHJpbmc7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbiBleHRlbmRlZCBmb3JtIG9mIGBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNgIHRoYXQgYWxsb3dzIGNsaWVudHMgdG8gZGVyaXZlIHRoZSBXZWJBdXRobiBjaGFsbGVuZ2VcbiAgICAgKiBmcm9tIGEgc3RydWN0dXJlZCBwcmVpbWFnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB3ZWJ1YXRobiBzaWduYXR1cmUgY2FuIG9ubHkgYmUgdXNlZCBmb3IgYSBzcGVjaWZpYyBwdXJwb3NlXG4gICAgICovXG4gICAgUmVxdWVzdE9wdGlvbnNXaXRoSGFzaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGVudW1lcmF0aW9u4oCZcyB2YWx1ZXMgZGVzY3JpYmUgdGhlIFJlbHlpbmcgUGFydHkncyByZXF1aXJlbWVudHMgZm9yXG4gICAgICogY2xpZW50LXNpZGUgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzIChmb3JtZXJseSBrbm93biBhcyByZXNpZGVudCBjcmVkZW50aWFsc1xuICAgICAqIG9yIHJlc2lkZW50IGtleXMpOlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtcmVzaWRlbnRrZXlyZXF1aXJlbWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUmVzaWRlbnRLZXlSZXF1aXJlbWVudDogXCJkaXNjb3VyYWdlZFwiIHwgXCJwcmVmZXJyZWRcIiB8IFwicmVxdWlyZWRcIjtcbiAgICBSZXZva2VUb2tlblJlc3BvbnNlOiB7XG4gICAgICB0b2tlbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFJldm9rZVRva2Vuc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VucyB0aGF0IHdlcmUgcmV2b2tlZC4gKi9cbiAgICAgIHJldm9rZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgfTtcbiAgICBSb2xlSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgcm9sZSBpcyBlbmFibGVkXG4gICAgICAgKiBAZXhhbXBsZSB0cnVlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQgVGhlIEN1YmVTaWduZXIgSURzIG9mIGF0IG1vc3QgMTAwIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcm9sZSAqL1xuICAgICAga2V5cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZSAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcm9sZVxuICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAqL1xuICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgbGlzdCBvZiBhdCBtb3N0IDEwMCB1c2VycyB3aXRoIGFjY2VzcyB0byB0aGUgcm9sZS4gKi9cbiAgICAgIHVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAqIEBkZXNjcmlwdGlvbiBEdXJhdGlvbiBtZWFzdXJlZCBpbiBzZWNvbmRzXG4gICAgICogQSB3cmFwcGVyIHR5cGUgZm9yIHNlcmlhbGl6YXRpb24gdGhhdCBlbmNvZGVzIGEgYER1cmF0aW9uYCBhcyBhIGB1NjRgIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMuXG4gICAgICovXG4gICAgU2Vjb25kczogbnVtYmVyO1xuICAgIFNlc3Npb25JbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2Vzc2lvblxuICAgICAgICogQGV4YW1wbGUgT0lEQyBsb2dpbiBzZXNzaW9uXG4gICAgICAgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHNlc3Npb24sIGJ1dCBjYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC5cbiAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAqL1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgZnJvbSBhbnkgb3BlcmF0aW9uIG9wZXJhdGluZyBvbiBtdWx0aXBsZSBzZXNzaW9ucyAqL1xuICAgIFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgfTtcbiAgICBTaWduZXJFcnJvckNvZGU6XG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVyRXJyb3JPd25Db2Rlc1wiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkVmFsdWVDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFkUmVxdWVzdEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhZEdhdGV3YXlFcnJvckNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RGb3VuZEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZvcmJpZGRlbkVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuYXV0aG9yaXplZEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZWNvbmRpdGlvbkVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludGVybmFsRXJyb3JDb2RlXCJdO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFNpZ25lckVycm9yT3duQ29kZXM6IFwiVW5oYW5kbGVkRXJyb3JcIiB8IFwiUHJveHlTdGFydEVycm9yXCIgfCBcIkVuY2xhdmVFcnJvclwiO1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwibWVzc2FnZV9iYXNlNjRcIjogXCJBUUFCQThPS1Z6TEVqc3RzdE40eFhyMzlrTEtIVDhkNThlUVkxUUVzNk1lWHdFRkJyeFRBbFVMWDF0cm9MYld4dUFYUXFnYlFvZkdpNno4ZkppN0tBQUlmN1lNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkswdG4zOWsyOHMrWDg2VzQ3RXZiUlJLbllCVlE4US9sMm0xRWJmVDcrdkFRSUNBQUVNQWdBQUFHUUFBQUFBQUFBQVwiXG4gICAgICogfVxuICAgICAqL1xuICAgIFNvbGFuYVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbGFuYSBiYXNlNjQtZW5jb2RlZCBzZXJpYWxpemVkIE1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBTb2xhbmFTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gb24gd2hpY2ggd2Ugd2lsbCBkZXBvc2l0XG4gICAgICAgKiBAZXhhbXBsZSA1XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICBkZXBvc2l0X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBzdGFraW5nIGFtb3VudCBpbiBHV0VJLlxuICAgICAgICogSWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdHMgdG8gMzJfMDAwXzAwMF8wMDAgKDMyIEVUSCkuXG4gICAgICAgKiBNdXN0IGJlIGJldHdlZW4gMSBFVEggYW5kIDMyIEVUSC5cbiAgICAgICAqIE11c3Qgbm90IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gJ2RlcG9zaXRfdHlwZScgaXMgXCJXcmFwcGVyXCIuXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfYW1vdW50X2d3ZWk/OiBudW1iZXI7XG4gICAgICB1bnNhZmVfY29uZj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5zYWZlQ29uZlwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIEJMUyBwdWJsaWMga2V5IHRvIHVzZSwgb3IgYE5vbmVgIHRvIGdlbmVyYXRlIGEgZnJlc2ggb25lLlxuICAgICAgICogQGV4YW1wbGUgMHhhOTlhNzZlZDc3OTZmN2JlMjJkNWI3ZTg1ZGVlYjdjNTY3N2U4OGU1MTFlMGIzMzc2MThmOGM0ZWI2MTM0OWI0YmYyZDE1M2Y2NDlmN2I1MzM1OWZlOGI5NGEzOGU0NGNcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXRoZXJldW0gYWRkcmVzcyB0byB3aGljaCB3aXRoZHJhd24gZnVuZHMgZ29cbiAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICB3aXRoZHJhd2FsX2FkZHI6IHN0cmluZztcbiAgICB9O1xuICAgIFN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3Iga2V5IGlkIChcIktleSMuLi5cIilcbiAgICAgICAqIEBleGFtcGxlIEtleSNkYjE3MzFmOC0zNjU5LTQ1YzAtODg1Yi1lMTFlMWY1YjdiZTJcbiAgICAgICAqL1xuICAgICAgY3JlYXRlZF92YWxpZGF0b3Jfa2V5X2lkOiBzdHJpbmc7XG4gICAgICBkZXBvc2l0X3R4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeG5cIl07XG4gICAgfTtcbiAgICBTdGF0dXM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGFyZSBhbGxvd2VkIHRvIGFwcHJvdmUuIE11c3QgYmUgbm9uLWVtcHR5LiAqL1xuICAgICAgYWxsb3dlZF9hcHByb3ZlcnM6IHN0cmluZ1tdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGxvd2VkIGFwcHJvdmFsIHR5cGVzLiBXaGVuIG9taXR0ZWQsIGRlZmF1bHRzIHRvIGFueS4gKi9cbiAgICAgIGFsbG93ZWRfbWZhX3R5cGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVc2VycyB3aG8gaGF2ZSBhbHJlYWR5IGFwcHJvdmVkICovXG4gICAgICBhcHByb3ZlZF9ieToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBcHByb3ZhbEluZm9cIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgdXNlcnMgbXVzdCBhcHByb3ZlXG4gICAgICAgKi9cbiAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSBhdXRoIGZhY3RvcnMgdG8gcmVxdWlyZSBwZXIgdXNlclxuICAgICAgICovXG4gICAgICBudW1fYXV0aF9mYWN0b3JzOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXR1cyBvZiBhIHN1YnNjcmlwdGlvblxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgU3Vic2NyaXB0aW9uU3RhdHVzOiBcIkNvbmZpcm1lZFwiIHwgXCJQZW5kaW5nXCI7XG4gICAgVG9rZW5JbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVzZSBpdCB0byByZXZva2UgYSBzZXNzaW9uLiBDYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC4gKi9cbiAgICAgIGhhc2g6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW5zIHB1cnBvc2UgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPQXV0aDIgc3RhbmRhcmQgVG9rZW4gUmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY3NDkjc2VjdGlvbi00LjIuMlxuICAgICAqL1xuICAgIFRva2VuUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2VzcyB0b2tlbiBpc3N1ZWQgYnkgdGhlIGF1dGhvcml6YXRpb24gc2VydmVyLiAqL1xuICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gICAgICBleHBpcmVzX2luOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIE9JREMgdG9rZW4gaXNzdWVkIGJ5IEN1YmlzdCwgY29udGFpbmluZyB1c2VyIGluZm9ybWF0aW9uICovXG4gICAgICBpZF90b2tlbj86IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzc3VlZC4gVmFsdWUgaXMgY2FzZSBpbnNlbnNpdGl2ZS4gKi9cbiAgICAgIHRva2VuX3R5cGU6IHN0cmluZztcbiAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfTtcbiAgICBUb3RwQXBwcm92ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVE9UUCB2ZXJpZmljYXRpb24gY29kZSAqL1xuICAgICAgY29kZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIFRPVFAgY2hhbGxlbmdlICovXG4gICAgVG90cENoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY3VycmVudCBUT1RQIGNvZGUgKi9cbiAgICAgIGNvZGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVG90cEluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgVE9UUCBjaGFsbGVuZ2UuXG4gICAgICAgKiBAZXhhbXBsZSBUb3RwQ2hhbGxlbmdlIzc4OTJlYmJhLTU2M2UtNDg1Yi1iYjdkLWUyNjI2NzM2MzI4NlxuICAgICAgICovXG4gICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBUT1RQIHVybCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCB0byBpbml0aWFsaXplIFRPVFAuXG4gICAgICAgKiBAZXhhbXBsZSBvdHBhdXRoOi8vdG90cC9DdWJpc3Q6YWxpY2UtJTQwZXhhbXBsZS5jb20/c2VjcmV0PURBSEY3S0NPVFFXU09NSzRYRkVNTkhYTzRKNDMzT0Q3Jmlzc3Vlcj1DdWJpc3RcbiAgICAgICAqL1xuICAgICAgdG90cF91cmw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byByZXNldCBUT1RQLiAqL1xuICAgIFRvdHBSZXNldFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5hbWUgb2YgdGhlIGlzc3VlcjsgZGVmYXVsdHMgdG8gXCJDdWJpc3RcIi4gKi9cbiAgICAgIGlzc3Vlcj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBVbmF1dGhvcml6ZWRFcnJvckNvZGU6XG4gICAgICB8IFwiQ2xhaW1zSGVhZGVyTWlzc2luZ1wiXG4gICAgICB8IFwiQ2xhaW1zUGFyc2VFcnJvclwiXG4gICAgICB8IFwiT2lkY0lkZW50aXR5SGVhZGVyTWlzc2luZ1wiXG4gICAgICB8IFwiT2lkY0lkZW50aXR5UGFyc2VFcnJvclwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9ucyB0aGF0IHNob3VsZCBiZSBzZXQgb25seSBmb3IgbG9jYWwgZGV2bmV0IHRlc3RpbmcuICovXG4gICAgVW5zYWZlQ29uZjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIGFkZHJlc3Mgb2YgdGhlIGRlcG9zaXQgY29udHJhY3QuIElmIG9taXR0ZWQsIGluZmVycmVkIGZyb20gYGNoYWluX2lkYFxuICAgICAgICogQGV4YW1wbGUgMHhmZjUwZWQzZDBlYzAzYWMwMWQ0Yzc5YWFkNzQ5MjhiZmY0OGE3YjJiXG4gICAgICAgKi9cbiAgICAgIGRlcG9zaXRfY29udHJhY3RfYWRkcj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgNC1ieXRlIGZvcmsgdmVyc2lvblxuICAgICAgICogQGV4YW1wbGUgMHgwMDAwMTAyMFxuICAgICAgICovXG4gICAgICBnZW5lc2lzX2ZvcmtfdmVyc2lvbj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVW5zdGFrZSBtZXNzYWdlIHJlcXVlc3QuXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJlcG9jaFwiOiBcIjI1NlwiLFxuICAgICAqICAgXCJmb3JrXCI6IHtcbiAgICAgKiAgICAgXCJjdXJyZW50X3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCIsXG4gICAgICogICAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICAgIFwicHJldmlvdXNfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwiZ2VuZXNpc19kYXRhXCI6IHtcbiAgICAgKiAgICAgXCJnZW5lc2lzX2ZvcmtfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIixcbiAgICAgKiAgICAgXCJnZW5lc2lzX3RpbWVcIjogXCIxNjc5NTQxNjQyXCIsXG4gICAgICogICAgIFwiZ2VuZXNpc192YWxpZGF0b3JzX3Jvb3RcIjogXCIweDI3MGQ0M2U3NGNlMzQwZGU0YmNhMmIxOTM2YmVjYTBmNGY1NDA4ZDllNzhhZWM0ODUwOTIwYmFmNjU5ZDViNjlcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwibmV0d29ya1wiOiBcImdvZXJsaVwiLFxuICAgICAqICAgXCJ2YWxpZGF0b3JfaW5kZXhcIjogXCIwXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgVW5zdGFrZVJlcXVlc3Q6IHtcbiAgICAgIGVwb2NoPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXSB8IG51bGw7XG4gICAgICBmb3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZvcmtcIl07XG4gICAgICBnZW5lc2lzX2RhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiR2VuZXNpc0RhdGFcIl07XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ldHdvcmtcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3IgaW5kZXggKGB1aW50NjRgKSB0byBleGl0LiBZb3UgY2FuIGdldCB0aGUgdmFsaWRhdG9yIGluZGV4IGZyb20gdGhlIEJlYWNvbiBub2RlJ3NcbiAgICAgICAqIGAvZXRoL3YxL2JlYWNvbi9zdGF0ZXMvaGVhZC92YWxpZGF0b3JzL3twdWJrZXl9YCBlbmQtcG9pbnQuIFRoaXMgZW5kIHBvaW50IHJldHVybnMgYW5cbiAgICAgICAqIG9iamVjdCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZGF0b3IgKHdob3NlIHB1YmxpYyBrZXkgaXMgYHtwdWJrZXl9YCksXG4gICAgICAgKiBpbmNsdWRpbmcgdGhlIHZhbGlkYXRvciBpbmRleC4gVGhlIHNjaGVtYSBvZiB0aGlzIGVuZC1wb2ludCBpcyBkZWZpbmVkXG4gICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vZ2V0U3RhdGVWYWxpZGF0b3IpLlxuICAgICAgICogQGV4YW1wbGUgMzEzMzdcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2luZGV4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVW5zdGFrZSByZXNwb25zZXMgYXJlIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlcy5cbiAgICAgKiBUaGUgc2NoZW1hIGZvciB0aGlzIG1lc3NhZ2UgaXMgZGVmaW5lZFxuICAgICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vY29uc2Vuc3VzLXNwZWNzL2Jsb2IvdjEuMC4xL3NwZWNzL3BoYXNlMC9iZWFjb24tY2hhaW4ubWQjc2lnbmVkdm9sdW50YXJ5ZXhpdCkuXG4gICAgICogVGhpcyBtZXNzYWdlIGNhbiBiZSBkaXJlY3RseSBQT1NUZWQgdG8gdGhlIEJlYWNvbiBub2RlJ3NcbiAgICAgKiBgL2V0aC92MS9iZWFjb24vcG9vbC92b2x1bnRhcnlfZXhpdHNgIGVuZC1wb2ludCAoc2VlIGV4cGVjdGVkIHNjaGVtYVxuICAgICAqIFtoZXJlXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9zdWJtaXRQb29sVm9sdW50YXJ5RXhpdCkpLlxuICAgICAqL1xuICAgIFVuc3Rha2VSZXNwb25zZToge1xuICAgICAgbWVzc2FnZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWb2x1bnRhcnlFeGl0XCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQkxTIHNpZ25hdHVyZS5cbiAgICAgICAqIEBleGFtcGxlIDB4OTEwYzdjZDUzN2VkOTFjYzhjNGE4MmYzY2JkODMyZTliZThjMjRhMjJlOWM4NmRmNDc5ZjdjZTQyMDI1ZWE2YTA5NjE5YjQxOGI2NjZhMDYwZTI2MGQyYWFlMzFiOGU1MGU5ZDA1Y2EzNDQyYzdlZWQzYjUwN2U1MjA3ZTE0Njc0Mjc1ZjY4YzJiYTg0YzRiZjZiOGRkMzY0YTMwNGFjYWM4Y2ZhYjM2ODFlMjUxNGI0NDAwZjkyNDJiYzYxMTY0XG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgVXBkYXRlS2V5UHJvcGVydGllczoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBrZXkncyBtZXRhZGF0YS4gVmFsaWRhdGlvbiByZWdleDogXltBLVphLXowLTlfPSsvIFxcLVxcLlxcLF17MCwxMDI0fSRcbiAgICAgICAqIEBleGFtcGxlIENvbnRyYWN0IGFkbWluIGtleVxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgdXNlcnMgdG8gc3BlY2lmeSBhIHVzZXIgb3RoZXIgdGhhbiB0aGVtc2VsdmVzIHRvIHJlY2VpdmUgdGhlIGtleVxuICAgICAgICogVGhlIG5ldyBvd25lciBtdXN0IGJlIGFuIGV4aXN0aW5nIHVzZXIgd2hvIGlzIGEgbWVtYmVyIG9mIHRoZSBzYW1lIG9yZy5cbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMga2V5J3MgcG9saWNpZXMgKG9sZCBwb2xpY2llcyB3aWxsIGJlIG92ZXJ3cml0dGVuISkuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgfTtcbiAgICBVcGRhdGVLZXlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZUtleVByb3BlcnRpZXNcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZXMgdGhlIGtleXMncyBgZW5hYmxlZGAgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAqIE9uY2UgZGlzYWJsZWQsIGEga2V5IGNhbm5vdCBiZSB1c2VkIGZvciBzaWduaW5nLlxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgfTtcbiAgICBVcGRhdGVPcmdSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgYGVuYWJsZWRgIGZpZWxkIHRvIHRoaXMgdmFsdWUuICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIGFsaWFzLiAgT3JnIGFsaWFzZXMgYXJlIGdsb2JhbGx5IHVuaXF1ZS5cbiAgICAgICAqIEBleGFtcGxlIG15X29yZ1xuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3Mgbm90aWZpY2F0aW9uIGVuZHBvaW50cy4gTm90aWZpY2F0aW9uIGVuZHBvaW50cyBhcmUgZXhwZWN0ZWQgdG8gYmVcbiAgICAgICAqIEhUVFBTIFVSTHMsIHdoaWNoIGFjY2VwdCBQT1NUIHJlcXVlc3RzLiBUaGUgYm9keSBvZiB0aGUgcmVxdWVzdHMgc2VudCB0byB0aGVzZSBlbmRwb2ludHMgYXJlXG4gICAgICAgKiBhcmUgZm9ybWF0dGVkIGluIEpTT04gYW5kIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgICAgKlxuICAgICAgICogYGBganNvblxuICAgICAgICoge1xuICAgICAgICogXCJvcmdcIjogXCIuLi5cIixcbiAgICAgICAqIFwidXRjX3RpbWVzdGFtcFwiOiBcIi4uLlwiLFxuICAgICAgICogXCJvcmdfZXZlbnRcIjogXCIuLi5cIixcbiAgICAgICAqIC4uLlxuICAgICAgICogfVxuICAgICAgICogYGBgXG4gICAgICAgKlxuICAgICAgICogYG9yZ2AgaXMgdGhlIG9yZyBpZCwgYHV0Y190aW1lc3RhbXBgIGlzIHRoZSBVVEMgdGltZXN0YW1wIG9mIHRoZSBldmVudCBpbiBtaWxsaXNlY29uZHMsIGFuZFxuICAgICAgICogYG9yZ19ldmVudGAgaXMgYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHR5cGUgb2YgZXZlbnQgdGhhdCBoYXMgb2NjdXJyZWQuIFRoZSByZXN0IG9mIHRoZVxuICAgICAgICogZmllbGRzIHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICAgICAqXG4gICAgICAgKiBFbmRwb2ludHMgY2FuIG9wdGlvbmFsbHkgaW5jbHVkZSBmaWx0ZXJzIHRvIGN1c3RvbWl6ZSB0aGUgb3JnIGV2ZW50cyB0aGF0IHRoZXkgYXJlIG5vdGlmaWVkXG4gICAgICAgKiBhYm91dC4gQ3VycmVudGx5LCB0aGUgb25seSBzdXBwb3J0ZWQgZmlsdGVyIHR5cGUgaXMgYE9uZU9mYCwgd2hpY2ggZXhwZWN0cyBhIGxpc3Qgb2Ygb3JnXG4gICAgICAgKiBldmVudCB0eXBlcyB0byBzZW5kIHRvIHRoZSBlbmRwb2ludC4gSWYgbm8gZmlsdGVyIGlzIGNvbmZpZ3VyZWQsIHRoZSBzeXN0ZW0gc2VuZHMgYWxsIG9yZ1xuICAgICAgICogZXZlbnRzIHRvIHRoZSBlbmRwb2ludC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwidXJsOlwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQxXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiZmlsdGVyXCI6IHtcbiAgICAgICAqICAgICAgIFwiT25lT2ZcIjogW1xuICAgICAgICogICAgICAgICBcIkV0aDJDb25jdXJyZW50QXR0ZXN0YXRpb25TaWduaW5nXCIsXG4gICAgICAgKiAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgICogICAgICAgXVxuICAgICAgICogICAgIH0sXG4gICAgICAgKiAgICAgXCJ1cmw6XCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDJcIlxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG5vdGlmaWNhdGlvbl9lbmRwb2ludHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdGlmaWNhdGlvbkVuZHBvaW50Q29uZmlndXJhdGlvblwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgcG9saWNpZXMgKG9sZCBwb2xpY2llcyB3aWxsIGJlIG92ZXJ3cml0dGVuISkuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMC4xLjIuMy84XCIsXG4gICAgICAgKiAgICAgICBcIjE2OS4yNTQuMTcuMS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgVE9UUCBmYWlsdXJlIGxpbWl0LiBBZnRlciB0aGlzIG1hbnkgZmFpbHVyZXMsXG4gICAgICAgKiB0aGUgdXNlciBpcyByYXRlIGxpbWl0ZWQgdW50aWwgdGhlIG5leHQgMzAtc2Vjb25kIFRPVFAgd2luZG93LlxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIGFtb3VudCBvZiB0aW1lXG4gICAgICAgKiAoaW4gc2Vjb25kcykgYmV0d2VlbiBhIHVzZXIncyBpbml0aWF0aW5nIGFuIGV4cG9ydCBhbmQgdGhlIHRpbWUgd2hlblxuICAgICAgICogZXhwb3J0IGlzIGFsbG93ZWQuIEZvciBzZWN1cml0eSwgdGhpcyBkZWxheSBjYW5ub3QgYmUgc2V0IHRvIGxlc3MgdGhhblxuICAgICAgICogMTcyODAwLCBpLmUuLCAyIGRheXMuXG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X2RlbGF5PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50IG9mIHRpbWVcbiAgICAgICAqIChpbiBzZWNvbmRzKSB0aGF0IGV4cG9ydCBpcyBhbGxvd2VkIGFmdGVyIHRoZSB1c2VyLWV4cG9ydCBkZWxheS4gQWZ0ZXJcbiAgICAgICAqIHRoaXMgYW1vdW50IG9mIHRpbWUsIHRoZSBleHBvcnQgaXMgY2FuY2VsZWQgYW5kIG11c3QgYmUgcmUtaW5pdGlhdGVkLlxuICAgICAgICogRm9yIHNlY3VyaXR5LCB0aGlzIHdpbmRvdyBjYW5ub3QgYmUgc2V0IHRvIGdyZWF0ZXIgdGhhbiAyNTkyMDAsIGkuZS4sXG4gICAgICAgKiAzIGRheXMuXG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdz86IG51bWJlciB8IG51bGw7XG4gICAgfTtcbiAgICBVcGRhdGVPcmdSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZyAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgbm90aWZpY2F0aW9uIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnRcIlxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG5vdGlmaWNhdGlvbl9lbmRwb2ludHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdGlmaWNhdGlvbkVuZHBvaW50Q29uZmlndXJhdGlvblwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiBvcmctd2lkZSBwb2xpY2llc1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJPcmlnaW5BbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCJodHRwczovL2V4YW1wbGUuY29tXCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgVE9UUCBmYWlsdXJlIGxpbWl0XG4gICAgICAgKi9cbiAgICAgIHRvdHBfZmFpbHVyZV9saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRlbGF5XG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X2RlbGF5PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgd2luZG93XG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdz86IG51bWJlciB8IG51bGw7XG4gICAgfTtcbiAgICBVcGRhdGVSb2xlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGVzIHRoZSByb2xlJ3MgYGVuYWJsZWRgIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKiBPbmNlIGRpc2FibGVkLCBhIHJvbGUgY2Fubm90IGJlIHVzZWQ7IGFuZCBpdCdzIHRva2VucyBjYW5ub3QgYmUgdXNlZCBmb3Igc2lnbmluZy5cbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyByb2xlJ3Mga2V5IHBvbGljaWVzIChvbGQgcG9saWNpZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiEpLlxuICAgICAgICogT25seSBcImRlbnlcIiBzdHlsZSBwb2xpY2llcyBtYXkgYmUgc2V0LlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IHRvIGNvbXBsZXRlIGEgdXNlciBleHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0Q29tcGxldGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSB0byBiZSBleHBvcnRlZC4gVGhlIGtleS1pZCBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIG9uZSBpblxuICAgICAgICogdGhlIHNwZWNpZmllZCBleHBvcnQgcmVxdWVzdCwgYW5kIHRoZSBjYWxsZXIgbXVzdCBvd24gdGhpcyBrZXkuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIE5JU1QgUC0yNTYgcHVibGljIGtleSAoYmFzZTY0LWVuY29kZWQgU0VDMSB3aXRoIG9yIHdpdGhvdXQgY29tcHJlc3Npb24pXG4gICAgICAgKiB0byB3aGljaCB0aGUgZXhwb3J0IHdpbGwgYmUgZW5jcnlwdGVkLiBJZiBhIHB1YmxpYyBrZXkgd2FzIHByb3ZpZGVkIHdoZW5cbiAgICAgICAqIGB1c2VyX2V4cG9ydF9pbml0YCB3YXMgY2FsbGVkLCB0aGlzIGtleSBtdXN0IG1hdGNoIHRoYXQgb25lLlxuICAgICAgICogQGV4YW1wbGUgQWtwTFQvM2RYQXBKelhTZHVhUFE3YXB5VDBBREJ3cWt0MWVzL2FUMGlXV2ZcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBlbmNyeXB0ZWQgdXNlci1leHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0Q29tcGxldGVSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGV4cG9ydGVkIGtleSBtYXRlcmlhbCwgZW5jcnlwdGVkIHdpdGggQUVTLTI1Ni1HQ00gdW5kZXIgYSBrZXlcbiAgICAgICAqIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleSBzdXBwbGllZCBpbiB0aGUgcmVxdWVzdCB2aWEgSFBLRSAoUkZDOTE4MClcbiAgICAgICAqIHdpdGggREhLRU0oUC0yNTYsIEhLREYtU0hBMjU2KSBhbmQgYmFzZTY0IGVuY29kZWQuXG4gICAgICAgKi9cbiAgICAgIGVuY3J5cHRlZF9rZXlfbWF0ZXJpYWw6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIGZvciBIUEtFIGtleSBkZXJpdmF0aW9uIGFzIGJhc2U2NC1lbmNvZGVkXG4gICAgICAgKiB1bmNvbXByZXNzZWQgU0VDMSBzZXJpYWxpemF0aW9uLlxuICAgICAgICovXG4gICAgICBlcGhlbWVyYWxfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlci1pZCB0byB3aGljaCB0aGlzIGtleSBiZWxvbmdzLiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gaW5pdGlhdGUgYSB1c2VyIGV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXkgdG8gYmUgZXhwb3J0ZWQuIFRoaXMga2V5IG11c3QgYmUgb3duZWQgYnkgdGhlIGNhbGxlci5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBOSVNUIFAtMjU2IHB1YmxpYyBrZXkgKGJhc2U2NC1lbmNvZGVkIFNFQzEgd2l0aCBvciB3aXRob3V0XG4gICAgICAgKiBjb21wcmVzc2lvbikgdG8gd2hpY2ggdGhlIGV4cG9ydCB3aWxsIGJlIGVuY3J5cHRlZC4gSWYgcHJvdmlkZWQsIHRoaXNcbiAgICAgICAqIHB1YmxpYyBrZXkgTVVTVCBiZSB0aGUgb25lIHVzZWQgdG8gZW5jcnlwdCB0aGUgZXhwb3J0IG9uY2UgdGhlIGRlbGF5IGhhc1xuICAgICAgICogZXhwaXJlZC4gT3RoZXJ3aXNlLCB0aGUgdXNlciBjYW4gcHJvdmlkZSBhbnkgcHVibGljIGtleSB3aGVuIGNvbXBsZXRpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgcmVxdWVzdCBwb3N0IGRlbGF5LlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgb3B0aW9uIG1heSBwcm92aWRlIGV4dHJhIHNlY3VyaXR5IHdoZW4gdGhlIHVzZXIgaGFzIGEgc2VjdXJlIGhhcmR3YXJlXG4gICAgICAgKiBkZXZpY2UgKGUuZy4sIGEgcGhvbmUncyBzZWN1cmUgZWxlbWVudCBvciBhIFl1YmlLZXkpIGluIHdoaWNoIGEgTklTVCBQLTI1NlxuICAgICAgICogc2VjcmV0IGtleSBjYW4gYmUgZ2VuZXJhdGVkLiBQcm92aWRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcHVibGljIGtleSBoZXJlXG4gICAgICAgKiBlbnN1cmVzIHRoYXQgb25seSB0aGF0IHNwZWNpZmljIGRldmljZSB3aWxsIGJlIGNhcGFibGUgb2YgZGVjcnlwdGluZ1xuICAgICAgICogdGhlIGV4cG9ydCBjaXBoZXJ0ZXh0LlxuICAgICAgICpcbiAgICAgICAqIElmIG5vIHNlY3VyZSBoYXJkd2FyZSBkZXZpY2UgaXMgYXZhaWxhYmxlIHRvIHN0b3JlIHRoZSBzZWNyZXQga2V5LCB0aGlzXG4gICAgICAgKiBvcHRpb24gU0hPVUxEIE5PVCBiZSB1c2VkIGJlY2F1c2Ugb2YgdGhlIHJpc2sgb2Ygc2VjcmV0IGtleSB0aGVmdCBkdXJpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgZGVsYXkgcGVyaW9kLlxuICAgICAgICogQGV4YW1wbGUgQWtwTFQvM2RYQXBKelhTZHVhUFE3YXB5VDBBREJ3cWt0MWVzL2FUMGlXV2ZcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBhIHN1Y2Nlc3NmdWwgdXNlci1leHBvcnQgaW5pdCByZXF1ZXN0ICovXG4gICAgVXNlckV4cG9ydEluaXRSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0UmVxdWVzdFwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgYmVpbmcgcmVxdWVzdGVkLlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGVuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0IGFzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuICovXG4gICAgVXNlckV4cG9ydFJlcXVlc3Q6IHtcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZy1pZCBpbiB3aGljaCB0aGUga2V5IGlzIGhvdXNlZC5cbiAgICAgICAqIEBleGFtcGxlIE9yZyNmMzYxZWQ2Yi01ZDE5LTRjY2YtYTRkNS1lYmE5MzVkYzBiOTBcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBwdWJsaWMga2V5IHByb3ZpZGVkIGF0IGV4cG9ydCBpbml0aWF0aW9uLFxuICAgICAgICogaWYgYW55LiBJZiBhIGtleSB3YXMgcHJvdmlkZWQsIG9ubHkgdGhhdCBrZXkgY2FuIGJlIHVzZWQgdG8gY29tcGxldGVcbiAgICAgICAqIHRoZSBleHBvcnQgcHJvY2VkdXJlLiBPdGhlcndpc2UsIGFueSBrZXkgY2FuIGJlIHVzZWQuXG4gICAgICAgKlxuICAgICAgICogSU1QT1JUQU5UOiBpZiBhIHB1YmxpYyBrZXkgaXMgc3VwcGxpZWQgYXQgZXhwb3J0IGluaXRpYXRpb24sIGl0IGlzXG4gICAgICAgKiBTVFJPTkdMWSBSRUNPTU1FTkRFRCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIHNlY3JldCBrZXkgYmUgc3RvcmVkIGluXG4gICAgICAgKiBhIHNlY3VyZSBoYXJkd2FyZSBkZXZpY2UsIGUuZy4sIGEgWXViaUtleSBvciBhIHBob25lJ3Mgc2VjdXJlIGVsZW1lbnQuXG4gICAgICAgKiBJZiBubyBzdWNoIGhhcmR3YXJlIGlzIGF2YWlsYWJsZSwgc3VwcGx5aW5nIGEgcHVibGljIGtleSBhdCBleHBvcnRcbiAgICAgICAqIGluaXRpYXRpb24gaXMgU1RST05HTFkgRElTQ09VUkFHRUQgYmVjYXVzZSBvZiB0aGUgcmlzayBvZiB0aGVmdCBkdXJpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgZGVsYXkgcGVyaW9kLlxuICAgICAgICpcbiAgICAgICAqIChTZWUgYWxzbyB0aGUgY29tbWVudCBpbiB0aGUgYHB1YmxpY19rZXlgIGZpZWxkIG9mIGBVc2VySW5pdFJlcXVlc3RgLilcbiAgICAgICAqIEBleGFtcGxlIGRmNDU3YTk4ZDU1Mzg1NDBmNTRkMTMxNmI1OTdhMGYzOWI4ZDk2ZjQ4OGYxMGEyZTMxYTk1NWMxNDZmZGYxZDNcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleV9oYXNoPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHZhbGlkX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgfTtcbiAgICBVc2VySW5PcmdJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgbWVtYmVyc2hpcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyIG5hbWUuICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIncyBtZW1iZXJzaGlwIGluIGFuIG9yZ2FuaXphdGlvblxuICAgICAqICh3aXRob3V0IGluY2x1ZGluZyBhbnkgaW5mbyBhYm91dCB0aGUgdXNlcilcbiAgICAgKi9cbiAgICBVc2VySW5PcmdNZW1iZXJzaGlwOiB7XG4gICAgICBtZW1iZXJzaGlwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmdhbml6YXRpb24gaWRcbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBVc2VySW5Sb2xlSW5mbzoge1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcG9saWN5LCBhcHBsaWVzIGJlZm9yZSBsb2dnaW5nIGluIGFuZCBvdGhlciBzZW5zaXRpdmUgb3BlcmF0aW9ucyAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlcHJlY2F0ZWRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGwgb3JnYW5pemF0aW9ucyB0aGUgdXNlciBiZWxvbmdzIHRvLiBEZXByZWNhdGVkIGluIGZhdm9yIG9mICdvcmdzJy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG8sIGluY2x1ZGluZyB0aGUgbWVtYmVyc2hpcCByb2xlIGluIGVhY2guICovXG4gICAgICBvcmdzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ01lbWJlcnNoaXBcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQSBXZWJBdXRobiBSZWx5aW5nIFBhcnR5IG1heSByZXF1aXJlIHVzZXIgdmVyaWZpY2F0aW9uIGZvciBzb21lIG9mIGl0c1xuICAgICAqIG9wZXJhdGlvbnMgYnV0IG5vdCBmb3Igb3RoZXJzLCBhbmQgbWF5IHVzZSB0aGlzIHR5cGUgdG8gZXhwcmVzcyBpdHMgbmVlZHMuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bS11c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnRcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDogXCJyZXF1aXJlZFwiIHwgXCJkaXNjb3VyYWdlZFwiIHwgXCJwcmVmZXJyZWRcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQW4gZXhpdCB2b2x1bnRhcmlseSBzdWJtaXR0ZWQgYSB2YWxpZGF0b3Igd2hvIHdpc2hlcyB0byB3aXRoZHJhdy5cbiAgICAgKiBUaGUgc2NoZW1hIGZvciB0aGlzIG1lc3NhZ2UgaXMgZGVmaW5lZFxuICAgICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vY29uc2Vuc3VzLXNwZWNzL2Jsb2IvdjEuMC4xL3NwZWNzL3BoYXNlMC9iZWFjb24tY2hhaW4ubWQjc2lnbmVkdm9sdW50YXJ5ZXhpdCkuXG4gICAgICovXG4gICAgVm9sdW50YXJ5RXhpdDoge1xuICAgICAgZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJbmRleCBvZiB0aGUgZXhpdGluZyB2YWxpZGF0b3IuXG4gICAgICAgKiBAZXhhbXBsZSAyNTZcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2luZGV4OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgcmVzcG9uc2VzOiB7XG4gICAgQWRkVGhpcmRQYXJ0eVVzZXJSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZiAqL1xuICAgICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBBdmFTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQmxvYlNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBCdGNTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZSBpbiBjb21wYWN0IGZvcm1hdC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDQ1NGFlZjI3YzIxZGY3ZGQ4ZjUzN2RjODY5ZjRjZDY1Mjg2Y2UyMzlhNTJkMzY0NzBmNGQ4NWJlODVhODkxYjAyNzg5ZTVmZmQ4NTYwYjMyYTk4MTEwZTVkMDA5NjgwMmU0YzE0MTQ1Y2Y2YzQ0ZjEwYTc2OGM4Nzc1NWVhYTQ4MDBcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBDcmVhdGVLZXlJbXBvcnRLZXlSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbXBvcnRLZXlcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFuIGF0dGVzdGF0aW9uIGRvY3VtZW50IGZyb20gYSBzZWN1cmUgZW5jbGF2ZSwgaW5jbHVkaW5nIGFuXG4gICAgICAgICAgICogUlNBIHNpZ25pbmcga2V5IHVzZWQgdG8gc2lnbiB0aGUgY29udGVudHMgb2YgdGhpcyBtZXNzYWdlLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuY2xhdmVfYXR0ZXN0YXRpb246IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW4gUlNBLVBTUy1TSEEyNTYgc2lnbmF0dXJlIG9uIHRoZSBwdWJsaWMga2V5IGFuZCBlbmNyeXB0ZWRcbiAgICAgICAgICAgKiBzZWNyZXRzIGF0dGVzdGluZyB0byB0aGVpciBnZW5lcmF0aW9uIGluc2lkZSBhIHNlY3VyZSBlbmNsYXZlLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuY2xhdmVfc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQ3JlYXRlS2V5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpbmZvIGFib3V0IHRoZSBjcmVhdGVkIGtleXMgKi9cbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXdseSBjcmVhdGVkIHJvbGUgaW5mb3JtYXRpb24gKi9cbiAgICBDcmVhdGVSb2xlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCByb2xlXG4gICAgICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRWlwMTkxT3I3MTJTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgc2lnbmF0dXJlIGNvbXByaXNpbmcgNjUgYnl0ZXMgaW4gdGhlIGZvcm1hdCByZXF1aXJlZFxuICAgICAgICAgICAqIGJ5IGVjcmVjb3ZlcjogMzItYnl0ZSByLCAzMi1ieXRlIHMsIGFuZCBvbmUtYnl0ZSByZWNvdmVyeS1pZCB2XG4gICAgICAgICAgICogd2hpY2ggaXMgZWl0aGVyIDI3IG9yIDI4LlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4NDM1NWM0N2Q2MzkyNGU4YTcyZTUwOWI2NTAyOTA1MmViNmMyOTlkNTNhMDRlMTY3YzU3NzVmZDQ2Njc1MWM5ZDA3Mjk5OTM2ZDMwNGMxNTNmNjQ0M2RmYTA1ZjQwZmYwMDdkNzI5MTFiNmY3MjMwN2Y5OTYyMzE2MDViOTE1NjIxY1xuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEVtcHR5SW1wbDoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEV0aDFTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgUkxQIGVuY29kaW5nIG9mIHRoZSB0cmFuc2FjdGlvbiBhbmQgaXRzIHNpZ25hdHVyZVxuICAgICAgICAgICAqIEBleGFtcGxlIDB4MjI4OTUxMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjAxZDU4NjU2YjBlMjJhYWE2OGZkYzY5MmRiNDE5NzkwOThjMzg4NmVkMzMwMTVkNzQ2N2RlOTIxMTYwOWNkYWMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDhiMGMyOTAwMzI0ZDNmZjlhZGZiYTdmZGZlNWFmM2Y5YjJjZGJlZWY3YjI4MDQzN2JiZjFiMWM1OWEwOTNkNjE1YWZlM2U1ZGZlZDk2MjJiNTQwY2RkOWI0OWIzYzVhZDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5MDExYWRiY2MzYmM5YzAzMDdiYjA3ZjM3ZGRhMWExYTljNjlkMmUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwOTAzZGI4NTI1Njc0YjhlNzkwNGY5YjdkN2Q5ZWM1NWEwYTQyZDMzY2Y1OGJlMjU0NjliMGMyMWJiYjZkMDYxNzJiYzViYjVmZDFhZWQ4ZTRmMzU5MzY5Njg5NTgxMTZiMDYxOTU1M2MyY2IxYzUyZTczMjMwNzRjNmY4ZWIzZDVhNzA3NGZjNjU4MDE0OGRmOTA3ODM3ZmEzYjE2NGFkN2ZiYzIyODhkYWQxZThhNWIwMjEwOTViNTdjOGEzNmQ0XG4gICAgICAgICAgICovXG4gICAgICAgICAgcmxwX3NpZ25lZF90eDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEV0aDJTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4IGVuY29kZWQgc2lnbmF0dXJlIHByZWZpeGVkIHdpdGggMHggZS5nLiBcIjB4MDAwMC4uLlwiXG4gICAgICAgICAgICogQGV4YW1wbGUgMHhiNGYyZWY5ZDEyYTU0ZTFmNTY5NTk2YzA3Yzk3ZDZkNzMwNTM1YjZmZmMwZDI4Nzc2MWRjNzgxMDNhODYzMjY3ODI0NzFhMDRjNzVjZTdhNmZhZWEwOGNhOWE0YTA4MzAwMzFjZGNiODkzZGE4NzExZDU0YWEyMjYxOWYxYTdlNzFiODE4NWRkZjRjNmJmZDliYWJiZDczNTk2MGUzNWU1NmJkNmVlYjg5NjI1YjA0ODUwZTdhOWVmODg0NmU1NDlcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG4gICAgICAgIH0pICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VudCBieSB0aGUgc2VydmVyIHRvIHRoZSBjbGllbnQuIENvbnRhaW5zIHRoZSBjaGFsbGVuZ2UgZGF0YSB0aGF0IG11c3QgYmVcbiAgICAgKiB1c2VkIHRvIGdlbmVyYXRlIGEgbmV3IGNyZWRlbnRpYWxcbiAgICAgKi9cbiAgICBGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNcIl07XG4gICAgICAgIH0pICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBHZXRVc2Vyc0luT3JnUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHVzZXJzIGluIHRoZSBvcmcgKi9cbiAgICAgICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5PcmdJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFByb29mIHRoYXQgYW4gZW5kLXVzZXIgcHJvdmlkZWQgQ3ViZVNpZ25lciB3aXRoIGEgdmFsaWQgYXV0aCB0b2tlblxuICAgICAqIChlaXRoZXIgYW4gT0lEQyB0b2tlbiBvciBhIEN1YmVTaWduZXIgc2Vzc2lvbiB0b2tlbilcbiAgICAgKi9cbiAgICBJZGVudGl0eVByb29mOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE9JREMgYXVkaWVuY2U7IHNldCBvbmx5IGlmIHRoZSBwcm9vZiB3YXMgb2J0YWluZWQgYnkgdXNpbmcgT0lEQyB0b2tlbi5cbiAgICAgICAgICAgKlxuICAgICAgICAgICAqIEluIG90aGVyIHdvcmRzLCBwcmVzZW5jZSBvZiB0aGlzIGZpZWxkIHRlc3RpZmllcyB0aGF0IGF1dGhvcml6YXRpb24gd2FzIG9idGFpbmVkIHZpYSBPSURDLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGF1ZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSB1c2VyQGVtYWlsLmNvbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICBleHBfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICBpZGVudGl0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT0lEQ0lkZW50aXR5XCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXJuYW1lIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICAgICAqIEBleGFtcGxlIGN1YmlzdGRldlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHByZWZlcnJlZF91c2VybmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgdXNlcl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdWJlU2lnbmVyVXNlckluZm9cIl0gfCBudWxsO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3BhcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBwcm9vZiAqL1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXJpdmF0aW9uLXJlbGF0ZWQgbWV0YWRhdGEgZm9yIGtleXMgZGVyaXZlZCBmcm9tIGEgbG9uZy1saXZlZCBtbmVtb25pYyAqL1xuICAgIEtleURlcml2YXRpb25JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVyaXZhdGlvbiBwYXRoIHVzZWQgdG8gZGVyaXZlIHRoaXMga2V5ICovXG4gICAgICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbW5lbW9uaWMtaWQgb2YgdGhlIGtleSdzIHBhcmVudCBtbmVtb25pYyAqL1xuICAgICAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHdyYXBwZWQga2V5LWltcG9ydCBrZXkgKi9cbiAgICBLZXlJbXBvcnRLZXk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgZGF0YSBrZXkuICovXG4gICAgICAgICAgZGtfZW5jOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIHRpbWVzdGFtcCBleHByZXNzZWQgYXMgc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBleHBpcmVzOiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB0byB3aGljaCBhbiBpbXBvcnRlZCBrZXkgc2hvdWxkIGJlIGVuY3J5cHRlZC5cbiAgICAgICAgICAgKiBUaGlzIGlzIGEgUDM4NCBwdWJsaWMga2V5IGluIGJhc2U2NC1lbmNvZGVkIHVuY29tcHJlc3NlZCBTRUNHIGZvcm1hdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIHNlY3JldCBrZXkuICovXG4gICAgICAgICAgc2tfZW5jOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgS2V5SW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGRlcml2YXRpb25faW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5RGVyaXZhdGlvbkluZm9cIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUga2V5IGlzIGVuYWJsZWQgKG9ubHkgZW5hYmxlZCBrZXlzIG1heSBiZSB1c2VkIGZvciBzaWduaW5nKSAqL1xuICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5OiBcIktleSNcIiBmb2xsb3dlZCBieSBhIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvXG4gICAgICAgICAgICogdGhlIHR5cGUgb2Yga2V5IChzdWNoIGFzIGEgcHVibGljIGtleSBmb3IgQkxTIG9yIGFuIGV0aGVyZXVtIGFkZHJlc3MgZm9yIFNlY3ApXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2Yga2V5LCBzdWNoIGFzIGEgcHVibGljIGtleSBvciBhbiBldGhlcmV1bSBhZGRyZXNzXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgICAgICovXG4gICAgICAgICAgbWF0ZXJpYWxfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhLiBXaGVuIHJlbmRlcmluZyAoZS5nLiwgaW4gdGhlIGJyb3dzZXIpIHlvdSBzaG91bGQgdHJlYXRcbiAgICAgICAgICAgKiBpdCBhcyB1bnRydXN0ZWQgdXNlciBkYXRhIChhbmQgYXZvaWQgaW5qZWN0aW5nIG1ldGFkYXRhIGludG8gSFRNTCBkaXJlY3RseSkgaWZcbiAgICAgICAgICAgKiB1bnRydXN0ZWQgdXNlcnMgY2FuIGNyZWF0ZS91cGRhdGUga2V5cyAob3IgdGhlaXIgbWV0YWRhdGEpLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIG1ldGFkYXRhPzogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPd25lciBvZiB0aGUga2V5XG4gICAgICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgcG9saWN5XG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCIsXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgICAgICogICAgIH1cbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9saWN5OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQsIHNlcmlhbGl6ZWQgcHVibGljIGtleS4gVGhlIGZvcm1hdCB1c2VkIGRlcGVuZHMgb24gdGhlIGtleSB0eXBlOlxuICAgICAgICAgICAqIC0gU2VjcDI1NmsxIGtleXMgdXNlIDY1LWJ5dGUgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0O1xuICAgICAgICAgICAqIC0gU3Rhcmsga2V5cyB1c2UgMzMtYnl0ZSBjb21wcmVzc2VkIFNFQ0cgZm9ybWF0O1xuICAgICAgICAgICAqIC0gQkxTIGtleXMgdXNlIDQ4LWJ5dGUgY29tcHJlc3NlZCBCTFMxMi0zODEgKFpDYXNoKSBmb3JtYXQ7XG4gICAgICAgICAgICogLSBFZDI1NTE5IGtleXMgdXNlIHRoZSBjYW5vbmljYWwgMzItYnl0ZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gUkZDIDgwMzIuXG4gICAgICAgICAgICogQGV4YW1wbGUgMHgwNGQyNjg4YjZiYzJjZTdmOTg3OWI5ZTc0NWYzYzRkYzE3NzkwOGM1Y2VmMGMxYjY0Y2ZmMTlhZTdmZjI3ZGVlNjIzYzY0ZmU5ZDljMzI1YzdmYmJjNzQ4YmJkNWY2MDdjZTE0ZGQ4M2UyOGViYmJiN2QzZTdmMmZmYjcwYTc5NDMxXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHVycG9zZSBmb3Igd2hpY2ggdGhlIGtleSBjYW4gYmUgdXNlZCAoZS5nLiwgY2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzKVxuICAgICAgICAgICAqIEBleGFtcGxlIEV0aDJWYWxpZGF0b3IoMSlcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgS2V5SW5mb3M6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBMaXN0TWZhUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyAqL1xuICAgICAgICAgIG1mYV9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIExpc3RUb2tlbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHRva2VuczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIGFzIGEgcmVzcG9uc2UgZnJvbSBtdWx0aXBsZSByb3V0ZXMgKGUuZy4sICdnZXQgbWZhJywgJ2FwcHJvdmUgbWZhJywgJ2FwcHJvdmUgdG90cCcpLiAqL1xuICAgIE1mYVJlcXVlc3RJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXBwcm92YWwgcmVxdWVzdCBJRC4gKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIHJlY2VpcHQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlY2VpcHRcIl0gfCBudWxsO1xuICAgICAgICAgIHJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RcIl07XG4gICAgICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YXR1c1wiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbmV3IHNlc3Npb24sIHJldHVybmVkIGZyb20gbXVsdGlwbGUgZW5kcG9pbnRzIChlLmcuLCBsb2dpbiwgcmVmcmVzaCwgZXRjLikuICovXG4gICAgTmV3U2Vzc2lvblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGV4cGlyYXRpb24gKGluIHNlY29uZHMgc2luY2UgVU5JWCBlcG9jaCksIGJleW9uZCB3aGljaCBpdCBjYW5ub3QgYmUgcmVmcmVzaGVkLlxuICAgICAgICAgICAqIEBleGFtcGxlIDE3MDE4Nzk2NDBcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBleHBpcmF0aW9uPzogbnVtYmVyO1xuICAgICAgICAgIHNlc3Npb25faW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRTZXNzaW9uSW5mb1wiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmV3IHRva2VuIHRvIGJlIHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uLiBSZXF1ZXN0cyB0byBzaWduaW5nIGVuZHBvaW50c1xuICAgICAgICAgICAqIHNob3VsZCBpbmNsdWRlIHRoaXMgdmFsdWUgaW4gdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b2tlbjogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIE9yZ0luZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZW4gZmFsc2UsIGFsbCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgaW52b2x2aW5nIGtleXMgaW4gdGhpcyBvcmcgYXJlIGRpc2FibGVkLiAqL1xuICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkOiB0aGlzIGZpZWxkIHNob3VsZCBiZSBpZ25vcmVkLiAqL1xuICAgICAgICAgIGtleV9pbXBvcnRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIHVuaXZlcnNhbGx5IHVuaXF1ZSBrZXktd3JhcHBpbmcta2V5IGlkZW50aWZpZXIuXG4gICAgICAgICAgICogVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCB3aGVuIHNldHRpbmcgdXAga2V5IGV4cG9ydC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBtcmstZmNlMDk1MjVlODE1ODdkMjM1MjBmMTFlMDdlMmU5ZDlcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrd2tfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZS90aW1lIChpbiBVVEMpIHdoZW4gbGFzdCAndW5zdGFrZScgd2FzIHBlcmZvcm1lZC4gVW5peCBlcG9jaCBpZiBub25lLlxuICAgICAgICAgICAqIEBleGFtcGxlIFRPRE9cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X3Vuc3Rha2U6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55ICd1bnN0YWtlJyBjYWxscyBoYXBwZW5lZCBvbiB0aGUgZGF5IHdoZW4gYGxhc3RfdW5zdGFrZWAgd2FzIHBlcmZvcm1lZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X3Vuc3Rha2VfZGF5X2NvdW50OiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIG5vdGlmaWNhdGlvbiBlbmRwb2ludHMsIHdoaWNoIGFyZSBIVFRQUyBVUkxzIGFyZSBub3RpZmllZCBhYm91dCBhXG4gICAgICAgICAgICogY29uZmlndXJhYmxlIHNldCBvZiBldmVudHMgaW4gYW4gb3JnYW5pemF0aW9uLiBGb3IgZWFjaCBldmVudCwgQ3ViZVNpZ25lciBzZW5kcyBhIFBPU1RcbiAgICAgICAgICAgKiByZXF1ZXN0IHdpdGggYSBKU09OLWZvcm1hdHRlZCBib2R5IHRoYXQgY29udGFpbnMgdGhlIGV2ZW50IGRldGFpbHMuXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcImFyblwiOiBcImFybjphd3M6c25zOnVzLWVhc3QtMTowMTIzNDU2Nzg5MDE6T3JnRXZlbnRzVG9waWM6MTIzNDU2NzgtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxXCIsXG4gICAgICAgICAgICogICAgIFwiY29uZmlnXCI6IHtcbiAgICAgICAgICAgKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQxXCJcbiAgICAgICAgICAgKiAgICAgfSxcbiAgICAgICAgICAgKiAgICAgXCJzdGF0dXNcIjogXCJDb25maXJtZWRcIlxuICAgICAgICAgICAqICAgfSxcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJhcm5cIjogXCJhcm46YXdzOnNuczp1cy1lYXN0LTE6MDEyMzQ1Njc4OTAxOk9yZ0V2ZW50c1RvcGljOjEyMzQ1Njc4LTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMlwiLFxuICAgICAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgICAgICogICAgICAgXCJmaWx0ZXJcIjoge1xuICAgICAgICAgICAqICAgICAgICAgXCJPbmVPZlwiOiBbXG4gICAgICAgICAgICogICAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIixcbiAgICAgICAgICAgKiAgICAgICAgICAgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICAgICAgICogICAgICAgICBdXG4gICAgICAgICAgICogICAgICAgfSxcbiAgICAgICAgICAgKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQyXCJcbiAgICAgICAgICAgKiAgICAgfSxcbiAgICAgICAgICAgKiAgICAgXCJzdGF0dXNcIjogXCJQZW5kaW5nXCJcbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRcIl1bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE9yZy13aWRlIHBvbGljaWVzIHRoYXQgYXJlIGNoZWNrZWQgYmVmb3JlIGEga2V5IGlzIHVzZWQgZm9yIHNpZ25pbmdcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgVE9UUCBmYWlsdXJlIGxpbWl0LCBpLmUuLCB0aGUgbnVtYmVyXG4gICAgICAgICAgICogb2YgdGltZXMgYSB1c2VyIGNhbiBwcm92aWRlIGFuIGluY29ycmVjdCBUT1RQIGNvZGUgYmVmb3JlIGJlaW5nIHJhdGUgbGltaXRlZC5cbiAgICAgICAgICAgKiBUaGlzIHZhbHVlIGNhbiBiZSBiZXR3ZWVuIDEgYW5kIDUgKGluY2x1c2l2ZSkuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9mYWlsdXJlX2xpbWl0OiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgZGVsYXksIGkuZS4sIHRoZSBtaW5pbXVtXG4gICAgICAgICAgICogYW1vdW50IG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiBhIHVzZXItZXhwb3J0IGlzIGluaXRpYXRlZCBhbmQgd2hlblxuICAgICAgICAgICAqIGl0IG1heSBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlXG4gICAgICAgICAgICogb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF9kZWxheTogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIHVzZXItZXhwb3J0IHdpbmRvdywgaS5lLiwgdGhlIGFtb3VudFxuICAgICAgICAgICAqIG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiB0aGUgdXNlci1leHBvcnQgZGVsYXkgaXMgY29tcGxldGVkIGFuZCB3aGVuXG4gICAgICAgICAgICogdGhlIHVzZXIgZXhwb3J0IHJlcXVlc3QgaGFzIGV4cGlyZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZVxuICAgICAgICAgICAqIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlIG9yZy13aWRlIGV4cG9ydC4pXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfd2luZG93OiBudW1iZXI7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdEtleVJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyB0aGUga2V5IGlzIGluICovXG4gICAgICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwga2V5cyBpbiBhIHJvbGUgKi9cbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgdXNlcnMgaW4gYSByb2xlICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24uICovXG4gICAgICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgZXhwb3J0X3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRJbml0UmVzcG9uc2VcIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUmV2b2tlVG9rZW5SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHRva2VuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFJldm9rZVRva2Vuc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbnMgdGhhdCB3ZXJlIHJldm9rZWQuICovXG4gICAgICAgICAgcmV2b2tlZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBSb2xlSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSByb2xlIGlzIGVuYWJsZWRcbiAgICAgICAgICAgKiBAZXhhbXBsZSB0cnVlXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQgVGhlIEN1YmVTaWduZXIgSURzIG9mIGF0IG1vc3QgMTAwIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcm9sZSAqL1xuICAgICAgICAgIGtleXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZSAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3kgdGhhdCBpcyBjaGVja2VkIHdoZW5ldmVyIGEga2V5IGlzIGFjY2Vzc2VkIGZvciBzaWduaW5nIHZpYSB0aGlzIHJvbGUuXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgICAgICogICAgIF1cbiAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgICAgICogICAgIH1cbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcm9sZVxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZC4gVGhlIGxpc3Qgb2YgYXQgbW9zdCAxMDAgdXNlcnMgd2l0aCBhY2Nlc3MgdG8gdGhlIHJvbGUuICovXG4gICAgICAgICAgdXNlcnM/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgU2Vzc2lvbkluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNlc3Npb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSBPSURDIGxvZ2luIHNlc3Npb25cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHNlc3Npb24sIGJ1dCBjYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIGZyb20gYW55IG9wZXJhdGlvbiBvcGVyYXRpbmcgb24gbXVsdGlwbGUgc2Vzc2lvbnMgKi9cbiAgICBTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgU29sYW5hU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbGlkYXRvciBrZXkgaWQgKFwiS2V5Iy4uLlwiKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSNkYjE3MzFmOC0zNjU5LTQ1YzAtODg1Yi1lMTFlMWY1YjdiZTJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjcmVhdGVkX3ZhbGlkYXRvcl9rZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICBkZXBvc2l0X3R4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeG5cIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVG9rZW5JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVc2UgaXQgdG8gcmV2b2tlIGEgc2Vzc2lvbi4gQ2Fubm90IGJlIHVzZWQgZm9yIGF1dGguICovXG4gICAgICAgICAgaGFzaDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW5zIHB1cnBvc2UgKi9cbiAgICAgICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9BdXRoMiBzdGFuZGFyZCBUb2tlbiBSZXNwb25zZS5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjc0OSNzZWN0aW9uLTQuMi4yXG4gICAgICovXG4gICAgVG9rZW5SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2VzcyB0b2tlbiBpc3N1ZWQgYnkgdGhlIGF1dGhvcml6YXRpb24gc2VydmVyLiAqL1xuICAgICAgICAgIGFjY2Vzc190b2tlbjogc3RyaW5nO1xuICAgICAgICAgIGV4cGlyZXNfaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIE9JREMgdG9rZW4gaXNzdWVkIGJ5IEN1YmlzdCwgY29udGFpbmluZyB1c2VyIGluZm9ybWF0aW9uICovXG4gICAgICAgICAgaWRfdG9rZW4/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiB0aGUgdG9rZW4gaXNzdWVkLiBWYWx1ZSBpcyBjYXNlIGluc2Vuc2l0aXZlLiAqL1xuICAgICAgICAgIHRva2VuX3R5cGU6IHN0cmluZztcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFRvdHBJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgVE9UUCBjaGFsbGVuZ2UuXG4gICAgICAgICAgICogQGV4YW1wbGUgVG90cENoYWxsZW5nZSM3ODkyZWJiYS01NjNlLTQ4NWItYmI3ZC1lMjYyNjczNjMyODZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFN0YW5kYXJkIFRPVFAgdXJsIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIGluaXRpYWxpemUgVE9UUC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBvdHBhdXRoOi8vdG90cC9DdWJpc3Q6YWxpY2UtJTQwZXhhbXBsZS5jb20/c2VjcmV0PURBSEY3S0NPVFFXU09NSzRYRkVNTkhYTzRKNDMzT0Q3Jmlzc3Vlcj1DdWJpc3RcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX3VybDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBVbnN0YWtlIHJlc3BvbnNlcyBhcmUgc2lnbmVkIHZvbHVudGFyeSBleGl0IG1lc3NhZ2VzLlxuICAgICAqIFRoZSBzY2hlbWEgZm9yIHRoaXMgbWVzc2FnZSBpcyBkZWZpbmVkXG4gICAgICogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNzaWduZWR2b2x1bnRhcnlleGl0KS5cbiAgICAgKiBUaGlzIG1lc3NhZ2UgY2FuIGJlIGRpcmVjdGx5IFBPU1RlZCB0byB0aGUgQmVhY29uIG5vZGUnc1xuICAgICAqIGAvZXRoL3YxL2JlYWNvbi9wb29sL3ZvbHVudGFyeV9leGl0c2AgZW5kLXBvaW50IChzZWUgZXhwZWN0ZWQgc2NoZW1hXG4gICAgICogW2hlcmVdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL3N1Ym1pdFBvb2xWb2x1bnRhcnlFeGl0KSkuXG4gICAgICovXG4gICAgVW5zdGFrZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgbWVzc2FnZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWb2x1bnRhcnlFeGl0XCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBCTFMgc2lnbmF0dXJlLlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4OTEwYzdjZDUzN2VkOTFjYzhjNGE4MmYzY2JkODMyZTliZThjMjRhMjJlOWM4NmRmNDc5ZjdjZTQyMDI1ZWE2YTA5NjE5YjQxOGI2NjZhMDYwZTI2MGQyYWFlMzFiOGU1MGU5ZDA1Y2EzNDQyYzdlZWQzYjUwN2U1MjA3ZTE0Njc0Mjc1ZjY4YzJiYTg0YzRiZjZiOGRkMzY0YTMwNGFjYWM4Y2ZhYjM2ODFlMjUxNGI0NDAwZjkyNDJiYzYxMTY0XG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXBkYXRlT3JnUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSAqL1xuICAgICAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnIChtdXN0IGJlIGFscGhhbnVtZXJpYylcbiAgICAgICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IG5vdGlmaWNhdGlvbiBlbmRwb2ludCBjb25maWd1cmF0aW9uc1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50XCJcbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86XG4gICAgICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uXCJdW11cbiAgICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2Ygb3JnLXdpZGUgcG9saWNpZXNcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlIFRPVFAgZmFpbHVyZSBsaW1pdFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfZmFpbHVyZV9saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRlbGF5XG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF93aW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gZW5jcnlwdGVkIHVzZXItZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGV4cG9ydGVkIGtleSBtYXRlcmlhbCwgZW5jcnlwdGVkIHdpdGggQUVTLTI1Ni1HQ00gdW5kZXIgYSBrZXlcbiAgICAgICAgICAgKiBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXkgc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QgdmlhIEhQS0UgKFJGQzkxODApXG4gICAgICAgICAgICogd2l0aCBESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIGFuZCBiYXNlNjQgZW5jb2RlZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNyeXB0ZWRfa2V5X21hdGVyaWFsOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIGZvciBIUEtFIGtleSBkZXJpdmF0aW9uIGFzIGJhc2U2NC1lbmNvZGVkXG4gICAgICAgICAgICogdW5jb21wcmVzc2VkIFNFQzEgc2VyaWFsaXphdGlvbi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlcGhlbWVyYWxfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgdG8gd2hpY2ggdGhpcyBrZXkgYmVsb25ncy4gKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gYSBzdWNjZXNzZnVsIHVzZXItZXhwb3J0IGluaXQgcmVxdWVzdCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydFJlcXVlc3RcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgYmVpbmcgcmVxdWVzdGVkLlxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBVc2VySW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBlbWFpbFxuICAgICAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gTUZBIHBvbGljeSwgYXBwbGllcyBiZWZvcmUgbG9nZ2luZyBpbiBhbmQgb3RoZXIgc2Vuc2l0aXZlIG9wZXJhdGlvbnMgKi9cbiAgICAgICAgICBtZmFfcG9saWN5PzogdW5rbm93bjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbmFtZVxuICAgICAgICAgICAqIEBleGFtcGxlIEFsaWNlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlcHJlY2F0ZWRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQWxsIG9yZ2FuaXphdGlvbnMgdGhlIHVzZXIgYmVsb25ncyB0by4gRGVwcmVjYXRlZCBpbiBmYXZvciBvZiAnb3JncycuXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgb3JnYW5pemF0aW9ucyB0aGUgdXNlciBiZWxvbmdzIHRvLCBpbmNsdWRpbmcgdGhlIG1lbWJlcnNoaXAgcm9sZSBpbiBlYWNoLiAqL1xuICAgICAgICAgIG9yZ3M6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnTWVtYmVyc2hpcFwiXVtdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlclxuICAgICAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBwYXJhbWV0ZXJzOiBuZXZlcjtcbiAgcmVxdWVzdEJvZGllczogbmV2ZXI7XG4gIGhlYWRlcnM6IG5ldmVyO1xuICBwYXRoSXRlbXM6IG5ldmVyO1xufVxuXG5leHBvcnQgdHlwZSAkZGVmcyA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IHR5cGUgZXh0ZXJuYWwgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG5cbmV4cG9ydCBpbnRlcmZhY2Ugb3BlcmF0aW9ucyB7XG4gIC8qKlxuICAgKiBVc2VyIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGFib3V0TWVMZWdhY3k6IHtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBPcmdcbiAgICogQGRlc2NyaXB0aW9uIEdldCBPcmdcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIGdldE9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIE9yZ1xuICAgKlxuICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICovXG4gIHVwZGF0ZU9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVPcmdSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXBkYXRlT3JnUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGF2YVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXZhbGFuY2hlIGJlY2gzMiBhZGRyZXNzIGZvcm1hdCB3aXRob3V0IHRoZSBjaGFpbiBwcmVmaXhcbiAgICAgICAgICogQGV4YW1wbGUgYXZheDFhbTR3NmhmcnZtaDNha2R1emtqdGhydGd0cWFmYWxjZTZhbjhjclxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXZhU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJBdmFTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCaXRjb2luIFRyYW5zYWN0aW9uXG4gICAqXG4gICAqIFNpZ25zIGEgQml0Y29pbiB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGJ0Y1NpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyIGVuY29kaW5nIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIGJjMXE1cDVxa2FlNzdseTgwa3I0cHlmeXRkcW03cmYwOGRkaGRlamw5Z1xuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCdGNTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlcml2ZSBLZXkgRnJvbSBMb25nLUxpdmVkIE1uZW1vbmljXG4gICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKlxuICAgKiBEZXJpdmVzIGEga2V5IG9mIGEgc3BlY2lmaWVkIHR5cGUgdXNpbmcgYSBzdXBwbGllZCBkZXJpdmF0aW9uIHBhdGggYW5kIGFuXG4gICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAqL1xuICBkZXJpdmVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVyaXZlS2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC0xOTEgRGF0YVxuICAgKlxuICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgRUlQLTE5MSBwZXJzb25hbF9zaWduIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKi9cbiAgZWlwMTkxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyBvZiB0aGUgU2VjcDI1NmsxIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVpcDE5MVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRWlwMTkxT3I3MTJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgKlxuICAgKiBTaWducyB0eXBlZCBkYXRhIGFjY29yZGluZyB0byBFSVAtNzEyIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKi9cbiAgZWlwNzEyU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyBvZiB0aGUgU2VjcDI1NmsxIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVpcDcxMlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRWlwMTkxT3I3MTJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAqXG4gICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgYVxuICAgKiB2YWxpZCBDdWJlU2lnbmVyIHNlc3Npb24uXG4gICAqXG4gICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2VcbiAgICogdG8gYW5vdGhlciBzZXJ2aWNlIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICovXG4gIGNyZWF0ZVByb29mQ3ViZVNpZ25lcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAqXG4gICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIG1ldCB0aGVcbiAgICogYXV0aGVudGljYXRpb24gcmVxdWlyZW1lbnRzIChhbGxvd2VkIGlzc3VlcnMgJiBhdWRpZW5jZXMpIGZvciBDdWJlU2lnbmVyXG4gICAqIHdpdGhvdXQgbGVha2luZyB0aGVpciBjcmVkZW50aWFscy5cbiAgICpcbiAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZSB0byBhbm90aGVyIHNlcnZpY2VcbiAgICogd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgKi9cbiAgY3JlYXRlUHJvb2ZPaWRjOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgKlxuICAgKiBBbGxvd3MgYSB0aGlyZC1wYXJ0eSB0byB2YWxpZGF0ZSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogV2hlbiBhIHRoaXJkLXBhcnR5IGlzIHByb3ZpZGVkIGFuIFtJZGVudGl0eVByb29mXSBvYmplY3QsIHRoZXkgbXVzdCBjaGVjayBpdHNcbiAgICogdmVyYWNpdHkgYnkgY2FsbGluZyB0aGlzIGVuZHBvaW50XG4gICAqL1xuICB2ZXJpZnlQcm9vZjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgKlxuICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgKi9cbiAgY3JlYXRlS2V5SW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW1wb3J0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gSW1wb3J0IEtleVxuICAgKlxuICAgKiBTZWN1cmVseSBpbXBvcnRzIGFuIGV4aXN0aW5nIGtleSB1c2luZyBhIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGtleS1pbXBvcnQga2V5LlxuICAgKi9cbiAgaW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbnZpdGUgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gSW52aXRlIFVzZXJcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIGluIGFuIGV4aXN0aW5nIG9yZyBhbmQgc2VuZHMgdGhhdCB1c2VyIGFuIGludml0ZSBlbWFpbC5cbiAgICovXG4gIGludml0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZpdGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgS2V5c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXlzXG4gICAqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2Ygb3duZWQga2V5cyBpbiBhIGdpdmVuIG9yZy5cbiAgICovXG4gIGxpc3RLZXlzSW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IGtleSB0eXBlXG4gICAgICAgICAqIEBleGFtcGxlIFNlY3BFdGhBZGRyXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfdHlwZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5XG4gICAqXG4gICAqIENyZWF0ZXMgb25lIG9yIG1vcmUgbmV3IGtleXMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLlxuICAgKi9cbiAgY3JlYXRlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5XG4gICAqXG4gICAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgb2YgYSBrZXkuXG4gICAqL1xuICBnZXRLZXlJbk9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBLZXlcbiAgICpcbiAgICogRGVsZXRlcyBhIGtleSBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgKiBPbmx5IHRoZSBrZXkgb3duZXIgYW5kIG9yZyBvd25lcnMgYXJlIGFsbG93ZWQgdG8gZGVsZXRlIGtleXMuXG4gICAqL1xuICBkZWxldGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBLZXlcbiAgICpcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgYSBrZXkuICBUaGUgdXNlciBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUga2V5IG9yIG9yZ2FuaXphdGlvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgdXBkYXRlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IEtleSBSb2xlc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXkgUm9sZXNcbiAgICpcbiAgICogR2V0IGFsbCByb2xlcyB0aGUga2V5IGlzIGluXG4gICAqL1xuICBsaXN0S2V5Um9sZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICpcbiAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyB0aGF0IGFyZSBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHVzZXIsXG4gICAqIGkuZS4sIHRob3NlIGluIHdoaWNoIHRoZSBjdXJyZW50IHVzZXIgaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAqL1xuICBtZmFMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdE1mYVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUGVuZGluZyBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IGl0cyBpZC5cbiAgICovXG4gIG1mYUdldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUgb3IgUmVqZWN0IE1GQSBSZXF1ZXN0XG4gICAqXG4gICAqIEFwcHJvdmUgb3IgcmVqZWN0IHJlcXVlc3QgYWZ0ZXIgbG9nZ2luZyBpbiB3aXRoIEN1YmVTaWduZXIuXG4gICAqXG4gICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudGx5LWxvZ2dlZCB1c2VyIGFzIGFuIGFwcHJvdmVyXG4gICAqIG9mIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBvZiB0aGUgW1N0YXR1czo6UmVxdWlyZWRBcHByb3ZlcnNdIGtpbmQuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2ZcbiAgICogYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvXG4gICAqIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqL1xuICBtZmFWb3RlQ3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqXG4gICAqIEluaXRpYXRlcyB0aGUgYXBwcm92YWwvcmVqZWN0aW9uIHByb2Nlc3Mgb2YgYW4gTUZBIFJlcXVlc3QgdXNpbmcgRklETy5cbiAgICovXG4gIG1mYUZpZG9Jbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJGaWRvQXNzZXJ0Q2hhbGxlbmdlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAqIHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0byByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKi9cbiAgbWZhVm90ZUZpZG9Db21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICBtZmFfdm90ZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVm90ZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0Fzc2VydEFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZS9SZWplY3QgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAqXG4gICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudCB1c2VyIGFzIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieVxuICAgKiBwcm92aWRpbmcgVE9UUCBjb2RlLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXNcbiAgICogYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0byByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKi9cbiAgbWZhVm90ZVRvdHA6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgKiBAZGVzY3JpcHRpb24gTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gYWN0cyBpZGVudGljYWxseSB0byBUd2l0dGVyJ3MgW2BvYXV0aDIvdG9rZW5gXShodHRwczovL2RldmVsb3Blci50d2l0dGVyLmNvbS9lbi9kb2NzL2F1dGhlbnRpY2F0aW9uL2FwaS1yZWZlcmVuY2UvdG9rZW4pIGVuZHBvaW50LFxuICAgKiBidXQgZXh0ZW5kcyB0aGUgb3V0cHV0IHdpdGggYW4gYGlkX3Rva2VuYC5cbiAgICpcbiAgICogVGhpcyBgaWRfdG9rZW5gIGNhbiB0aGVuIGJlIHVzZWQgd2l0aCBhbnkgQ3ViZVNpZ25lciBlbmRwb2ludCB0aGF0IHJlcXVpcmVzIGFuIE9JREMgdG9rZW4uXG4gICAqXG4gICAqID4gWyFJTVBPUlRBTlRdXG4gICAqID4gVGhpcyBlbmRwb2ludCB3aWxsIGZhaWwgdW5sZXNzIHRoZSBvcmcgaXMgY29uZmlndXJlZCB0byBhbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdHdpdHRlcmAgYW5kIGNsaWVudCBJRCBiZWluZyB1c2VkIGZvciBUd2l0dGVyLlxuICAgKi9cbiAgb2F1dGgyVHdpdHRlcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlRva2VuUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTG9naW4gd2l0aCBPSURDXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dpbiB3aXRoIE9JRENcbiAgICpcbiAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgc2lnbmVyIHNlc3Npb24uXG4gICAqXG4gICAqIE1GQSBpcyByZXF1aXJlZCB3aGVuOlxuICAgKiAtIGFuIE1GQSBwb2xpY3kgaXMgZXhwbGljaXRseSBhdHRhY2hlZCB0byB0aGUgdXNlciBsb2dnaW5nIGluXG4gICAqIChlLmcuLCBhbiBvcmcgb3duZXIgY2FuIGRvIHRoYXQgYXQgdXNlciBjcmVhdGlvbiB0aW1lIHRvIHJlcXVpcmUgY2VydGFpbiBraW5kIG9mIE1GQSlcbiAgICogLSB0aGUgdXNlciBoYXMgYXQgbGVhc3QgMSBNRkEgZmFjdG9yIGNvbmZpZ3VyZWRcbiAgICovXG4gIG9pZGNBdXRoOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNMb2dpblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZXNcbiAgICpcbiAgICogUmV0cmlldmVzIGFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzLlxuICAgKi9cbiAgbGlzdFJvbGVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIERvbid0IGluY2x1ZGUga2V5cyBhbmQgdXNlcnMgZm9yIGVhY2ggcm9sZSAqL1xuICAgICAgICBzdW1tYXJpemU/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFJvbGVcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi4gVW5sZXNzIHRoZSBsb2dnZWQtaW4gdXNlclxuICAgKiBpcyB0aGUgb3duZXIsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZS5cbiAgICovXG4gIGNyZWF0ZVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCByZXF1ZXN0IGJvZHkgdG8gc2V0IHRoZSByb2xlIG5hbWUgKi9cbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlUm9sZVJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlUm9sZVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUm9sZVxuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSByb2xlIGluIGFuIG9yZ2FuaXphdGlvblxuICAgKi9cbiAgZ2V0Um9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJvbGVJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUm9sZVxuICAgKlxuICAgKiBEZWxldGVzIGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICBkZWxldGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgUm9sZVxuICAgKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgcm9sZSAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVgIHNjb3BlKS5cbiAgICogVXBkYXRlcyB0aGUgcm9sZSdzIHBvbGljaWVzICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOnBvbGljeWAgc2NvcGUpLlxuICAgKiBUaGUgdXNlciBtdXN0IGJlIGluIHRoZSByb2xlIG9yIGFuIG93bmVyIG9mIHRoZSBvcmdhbml6YXRpb24uXG4gICAqL1xuICB1cGRhdGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZVJvbGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUm9sZUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWRkIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBLZXlzXG4gICAqXG4gICAqIEFkZHMgYSBsaXN0IG9mIGV4aXN0aW5nIGtleXMgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICovXG4gIGFkZEtleXNUb1JvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkS2V5c1RvUm9sZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgVXNlclxuICAgKlxuICAgKiBBZGRzIGFuIGV4aXN0aW5nIHVzZXIgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGFkZCB1c2VycyB0byBhIHJvbGUuXG4gICAqL1xuICBhZGRVc2VyVG9Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHt9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBLZXlzXG4gICAqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGtleXMgaW4gYSByb2xlLlxuICAgKi9cbiAgbGlzdFJvbGVLZXlzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBLZXlcbiAgICpcbiAgICogUmVtb3ZlcyBhIGdpdmVuIGtleSBmcm9tIGEgcm9sZVxuICAgKi9cbiAgcmVtb3ZlS2V5RnJvbVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IGEgc2luZ2xlIHBhZ2Ugb2YgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICpcbiAgICogKipEZXByZWNhdGVkKio6IFVzZSBgR0VUIC9vcmcve29yZ19pZH0vc2Vzc2lvbj9yb2xlPWBcbiAgICpcbiAgICogUmV0dXJucyBhbGwgYWNjZXNzIHRva2VucyBmb3IgYSBnaXZlbiByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgKi9cbiAgbGlzdFJvbGVUb2tlbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJMaXN0VG9rZW5zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFRva2VuXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgVG9rZW5cbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBhY2Nlc3MgdG9rZW4gZm9yIGEgZ2l2ZW4gcm9sZSAodG8gYmUgdXNlZCBhcyBcIkFQSSBLZXlcIiBmb3IgYWxsIHNpZ25pbmcgYWN0aW9ucykuXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBjcmVhdGUgYSB0b2tlbiBmb3IgaXQuXG4gICAqL1xuICBjcmVhdGVSb2xlVG9rZW46IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlVG9rZW5SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBBbGwgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIEFsbCBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAqXG4gICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYERFTEVURSAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gIGluc3RlYWRcbiAgICpcbiAgICogUmV2b2tlcyBhbGwgYWNjZXNzIHRva2VucyBhc3NvY2lhdGVkIHdpdGggYSByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICovXG4gIHJldm9rZUFsbFJvbGVUb2tlbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSZXZva2VUb2tlbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgVG9rZW4gKERlcHJlY2F0ZWQpXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgVG9rZW4gKERlcHJlY2F0ZWQpXG4gICAqXG4gICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYERFTEVURSAvb3JnL3tvcmdfaWR9L3Nlc3Npb24ve3Nlc3Npb25faWR9YFxuICAgKlxuICAgKiBSZXZva2VzIGFuIGFjY2VzcyB0b2tlbiBhc3NvY2lhdGVkIHdpdGggYSByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICovXG4gIHJldm9rZVJvbGVUb2tlbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gcmV2b2tlXG4gICAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJldm9rZVRva2VuUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlIFVzZXJzLlxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIFVzZXJzLlxuICAgKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB1c2VycyB3aG8gaGF2ZSBhY2Nlc3MgdG8gYSByb2xlLlxuICAgKi9cbiAgbGlzdFJvbGVVc2Vyczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZVVzZXJzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIFVzZXJcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBVc2VyXG4gICAqXG4gICAqIFJlbW92ZXMgYW4gZXhpc3RpbmcgdXNlciBmcm9tIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIHVzZXJzIGZyb20gYSByb2xlLlxuICAgKi9cbiAgcmVtb3ZlVXNlckZyb21Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHt9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBzZXNzaW9uc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBzZXNzaW9uc1xuICAgKlxuICAgKiBJZiBubyBxdWVyeSBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZCwgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHNlc3Npb24gaXMgcmV0dXJuZWRcbiAgICovXG4gIGxpc3RTZXNzaW9uczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIG5hbWUgb3IgSUQgb2YgYSByb2xlIHRvIG9wZXJhdGUgb25cbiAgICAgICAgICogQGV4YW1wbGUgbXktcm9sZVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZT86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkU2Vzc2lvbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgc2Vzc2lvbiwgc2lsZW50bHkgdHJ1bmNhdGluZyByZXF1ZXN0ZWQgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZXNcbiAgICogdG8gYmUgYXQgbW9zdCByZXF1ZXN0b3IncyBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lLCByZXNwZWN0aXZlbHkuXG4gICAqL1xuICBjcmVhdGVTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVNlc3Npb25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBleGlzdGluZyBzZXNzaW9uKHMpXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgKlxuICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGV4aXN0aW5nIHNlc3Npb25zLCBwcmV2ZW50aW5nIHRoZW0gZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZC5cbiAgICogSWYgbm8gcXVlcnkgcGFyYW1zIGFyZSBwcm92aWRlZCwgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyByZXZva2VkLlxuICAgKi9cbiAgcmV2b2tlU2Vzc2lvbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIG5hbWUgb3IgSUQgb2YgYSByb2xlIHRvIG9wZXJhdGUgb25cbiAgICAgICAgICogQGV4YW1wbGUgbXktcm9sZVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZT86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAqL1xuICByZXZva2VDdXJyZW50U2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgKiBAZGVzY3JpcHRpb24gR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICovXG4gIGdldFNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIGdldFxuICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTZXNzaW9uSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgYSBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgYSBzZXNzaW9uXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgYW4gZXhpc3Rpbmcgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAqL1xuICByZXZva2VTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgc2Vzc2lvbiB0byByZXZva2VcbiAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgKi9cbiAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbkluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgKlxuICAgKiBTaWducyBhIFNvbGFuYSBtZXNzYWdlIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgc29sYW5hU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYmFzZTU4LWVuY29kZWQgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSA4NlpSUHN6QnA1RW9Qajd3UjNiSG43d25BWjVpWWZwYXNSYzdES0ZQVFVhWlxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU29sYW5hU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTb2xhbmFTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICpcbiAgICogUmV0cmlldmVzIHRoZSBrZXlzIHRoYXQgdGhlIHJvbGUgdG9rZW4gY2FuIGFjY2Vzcy5cbiAgICovXG4gIGxpc3RUb2tlbktleXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvc1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVc2VyIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGFib3V0TWU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VySW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IG91dHN0YW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IG91dHN0YW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXG4gICAqL1xuICB1c2VyRXhwb3J0TGlzdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIHVzZXItaWQgd2hvc2UgdXNlci1leHBvcnQgcmVxdWVzdHMgdG8gbGlzdC4gRGVmYXVsdHMgdG8gdGhlXG4gICAgICAgICAqIGN1cnJlbnQgdXNlci4gIE9ubHkgdGhlIG9yZyBvd25lciBtYXkgbGlzdCByZXF1ZXN0cyBmb3IgYW5vdGhlciB1c2VyLlxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzgwNmM5NTQ0LWYxZmEtNGJhZC04ZDRkLTEwOTdhMTg0NDcyNlxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBrZXktaWQgZm9yIHdoaWNoIHRvIGxpc3QgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdC5cbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqXG4gICAqIFRoaXMgc3RhcnRzIGEgZGVsYXkgKHdob3NlIGxlbmd0aCBpcyBkZXRlcm1pbmVkIGJ5IE9yZy13aWRlIHNldHRpbmdzKVxuICAgKiBiZWZvcmUgZXhwb3J0IGNhbiBiZSBjb21wbGV0ZWQsIGFuZCByZXR1cm5zIGEgdGlja2V0IHRoYXQgY2FuIGJlIHVzZWRcbiAgICogdG8gY29tcGxldGUgdGhlIGV4cG9ydCBvbmNlIHRoZSB0aW1lciBoYXMgZXhwaXJlZC5cbiAgICpcbiAgICogT25seSBvbmUgdXNlci1leHBvcnQgcmVxdWVzdCBjYW4gYmUgYWN0aXZlIGZvciBhIGdpdmVuIGtleS4gSWYgdGhlcmVcbiAgICogaXMgYWxyZWFkeSBhbiBhY3RpdmUgZXhwb3J0LCB0aGlzIGVuZHBvaW50IHdpbGwgcmV0dXJuIGFuIGVycm9yLiBUb1xuICAgKiBjcmVhdGUgYSBuZXcgcmVxdWVzdCwgZmlyc3QgZGVsZXRlIHRoZSBleGlzdGluZyBvbmUuXG4gICAqL1xuICB1c2VyRXhwb3J0SW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICovXG4gIHVzZXJFeHBvcnREZWxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeToge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgd2hvc2UgZXhwb3J0IHJlcXVlc3Qgc2hvdWxkIGJlIGRlbGV0ZWRcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgd2hvIG93bnMgdGhpcyByZXF1ZXN0LiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCB1c2VyLlxuICAgICAgICAgKiBPbmx5IHRoZSBvcmcgb3duZXIgbWF5IGRlbGV0ZSB1c2VyLWV4cG9ydCByZXF1ZXN0cyBmb3IgYW5vdGhlciB1c2VyLlxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzgwNmM5NTQ0LWYxZmEtNGJhZC04ZDRkLTEwOTdhMTg0NDcyNlxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGluaXRpYXRpbmcgYSB1c2VyLWV4cG9ydCByZXF1ZXN0IHZpYVxuICAgKiB0aGUgYHVzZXJfZXhwb3J0X2luaXRgIEFQSSwgYW5kIG9ubHkgd2l0aGluIHRoZSBzdWJzZXF1ZW50IGV4cG9ydCB3aW5kb3dcbiAgICogKGkuZS4sIGFmdGVyIHRoZSBleHBvcnQgZGVsYXkgaGFzIHBhc3NlZCBhbmQgYmVmb3JlIHRoZSByZXF1ZXN0IGhhcyBleHBpcmVkKS5cbiAgICpcbiAgICogVG8gY2hlY2sgb24gdGhlIHN0YXR1cyBvZiBhbiBleHBvcnQgcmVxdWVzdCwgc2VlIHRoZSBgdXNlcl9leHBvcnRfbGlzdGAgQVBJLlxuICAgKi9cbiAgdXNlckV4cG9ydENvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRDb21wbGV0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VyRXhwb3J0Q29tcGxldGVSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAqL1xuICB1c2VyUmVnaXN0ZXJGaWRvSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICB1c2VyUmVnaXN0ZXJGaWRvQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgRklETyBrZXlcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBGSURPIGtleVxuICAgKlxuICAgKiBEZWxldGVzIGEgRklETyBrZXkgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIHRoZSBrZXkgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgKi9cbiAgdXNlckRlbGV0ZUZpZG86IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBGaWRvS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEZpZG9LZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBmaWRvX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBUT1RQXG4gICAqXG4gICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyRGVsZXRlVG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHVzZXJSZXNldFRvdHBDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBUT1RQXG4gICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICovXG4gIHVzZXJWZXJpZnlUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICovXG4gIGxpc3RVc2Vyc0luT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgKiBAZGVzY3JpcHRpb24gQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAqL1xuICBjcmVhdGVPaWRjVXNlcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRUaGlyZFBhcnR5VXNlclJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJBZGRUaGlyZFBhcnR5VXNlclJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgKi9cbiAgZGVsZXRlT2lkY1VzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT0lEQ0lkZW50aXR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleVxuICAgKi9cbiAgcmVnaXN0ZXJGaWRvSW5pdExlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHJlZ2lzdGVyRmlkb0NvbXBsZXRlTGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAqXG4gICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlc2V0VG90cEluaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZXNldFRvdHBDb21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVmVyaWZ5IFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgKi9cbiAgdmVyaWZ5VG90cExlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFJhdyBCbG9iXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFJhdyBCbG9iXG4gICAqXG4gICAqIFNpZ25zIGFuIGFyYml0cmFyeSBibG9iIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKlxuICAgKiAtIEVDRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgYXMgYmlnLWVuZGlhbiByIGFuZCBzIHBsdXMgcmVjb3ZlcnktaWRcbiAgICogYnl0ZSB2LCB3aGljaCBjYW4gaW4gZ2VuZXJhbCB0YWtlIGFueSBvZiB0aGUgdmFsdWVzIDAsIDEsIDIsIG9yIDMuXG4gICAqXG4gICAqIC0gRWREU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBpbiB0aGUgc3RhbmRhcmQgZm9ybWF0LlxuICAgKlxuICAgKiAtIEJMUyBzaWduYXR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoZSBibG9iLXNpZ24gZW5kcG9pbnQuXG4gICAqL1xuICBibG9iU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmxvYlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQmxvYlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVjb3JkIGhlYXJ0YmVhdFxuICAgKiBAZGVzY3JpcHRpb24gUmVjb3JkIGhlYXJ0YmVhdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGlzIGNhbGxlZCBieSB0aGUgY3ViZTNzaWduZXIgcHJveHkgdG8gcmVjb3JkIHZhcmlvdXMgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICAgKi9cbiAgY3ViZTNzaWduZXJIZWFydGJlYXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhlYXJ0YmVhdFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhbiBFdGhlcmV1bSAoYW5kIG90aGVyIEVWTSkgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqIFJldHVybnMgYW4gUkxQLWVuY29kZWQgdHJhbnNhY3Rpb24gd2l0aCBFSVAtMTU1IHNpZ25hdHVyZS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBldGhlcmV1bSBhZGRyZXNzIG9mIHRoZSBzZWNwIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV0aDFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkV0aDFTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICpcbiAgICogU2lnbnMgYW4gZXRoMiB2YWxpZGF0b3IgcmVxdWVzdCB3aXRoIGEgZ2l2ZW4gQkxTIGtleS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgyU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgKEJMUykgcHVibGljIGtleSB3aXRoIDB4IHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSAweDk3MDBmYmI4YzkwNjk0MjQ0MmMyYTViM2FkNzQ5OGYyN2FlZGRhMjUzNzg2YTZmYmFhOGZlZjQ3ZmI3YWYyMzRlNTBjZjJjY2U4MTVhNTUzMDg3OTkyYWU1NjVkNDhkYVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXRoMlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRXRoMlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICpcbiAgICogU2lnbnMgYSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdpdGggYSBgdmFsaWRhdG9yX2tleWAuIElmIGB2YWxpZGF0b3Jfa2V5YCBpcyBzZXQgdG8gYSBwcmVnZW5lcmF0ZWQga2V5LCB3ZSB1c2UgdGhlXG4gICAqIHByb3ZpZGVkIHZhbGlkYXRvciBrZXkuIE90aGVyd2lzZSwgd2UgZ2VuZXJhdGUgYSBuZXcgQkxTIGtleS5cbiAgICpcbiAgICogV2hlbiB1c2luZyBhIHByZWdlbmVyYXRlZCBrZXksIHRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZVxuICAgKiBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgc3Rha2U6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3Rha2VSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU3Rha2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAqXG4gICAqIEhhbmRsZSB1bnN0YWtpbmcgcmVxdWVzdCwgcHJvZHVjaW5nIGEgc2lnbmVkIHZvbHVudGFyeSBleGl0IG1lc3NhZ2VcbiAgICogdGhhdCBjYW4gYmUgcG9zdGVkIGRpcmVjdGx5IHRvIHRoZSBCZWFjb24gY2hhaW4uXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgdW5zdGFrZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgKEJMUykgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweGE5OWE3NmVkNzc5NmY3YmUyMmQ1YjdlODVkZWViN2M1Njc3ZTg4ZTUxMWUwYjMzNzYxOGY4YzRlYjYxMzQ5YjRiZjJkMTUzZjY0OWY3YjUzMzU5ZmU4Yjk0YTM4ZTQ0Y1xuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5zdGFrZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVbnN0YWtlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICovXG4gIHNpZ25lclNlc3Npb25SZWZyZXNoOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBvcmdhbml6YXRpb24gb3duaW5nIHRoZSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aERhdGFcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIl19
|