@beiguancyc/parse-server 9.10.0-ruixiang.4 → 9.10.6-ruixiang.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +5 -0
  2. package/lib/Adapters/Auth/AuthAdapter.js +3 -3
  3. package/lib/Adapters/Auth/index.js +83 -23
  4. package/lib/Adapters/Auth/ldap.js +13 -2
  5. package/lib/Adapters/Auth/mfa.js +4 -3
  6. package/lib/Adapters/Cache/LRUCache.js +26 -2
  7. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +9 -2
  8. package/lib/Adapters/Storage/Mongo/MongoTransform.js +6 -3
  9. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +6 -4
  10. package/lib/Adapters/Storage/StorageAdapter.js +1 -1
  11. package/lib/Auth.js +16 -7
  12. package/lib/Config.js +14 -5
  13. package/lib/Controllers/DatabaseController.js +74 -23
  14. package/lib/Controllers/FilesController.js +28 -24
  15. package/lib/Controllers/SchemaController.js +8 -2
  16. package/lib/Controllers/UserController.js +52 -37
  17. package/lib/Deprecator/Deprecations.js +5 -1
  18. package/lib/GraphQL/ParseGraphQLSchema.js +4 -4
  19. package/lib/GraphQL/ParseGraphQLServer.js +83 -22
  20. package/lib/LiveQuery/ParseLiveQueryServer.js +108 -7
  21. package/lib/LiveQuery/QueryTools.js +31 -60
  22. package/lib/Options/Definitions.js +14 -8
  23. package/lib/Options/docs.js +9 -8
  24. package/lib/Options/index.js +1 -1
  25. package/lib/ParseServer.js +2 -1
  26. package/lib/PromiseRouter.js +2 -19
  27. package/lib/RestQuery.js +28 -5
  28. package/lib/RestWrite.js +628 -57
  29. package/lib/Routers/SessionsRouter.js +5 -1
  30. package/lib/Routers/UsersRouter.js +9 -2
  31. package/lib/SharedRest.js +7 -1
  32. package/lib/Utils.js +17 -1
  33. package/lib/batch.js +3 -2
  34. package/lib/cloud-code/Parse.Cloud.js +4 -2
  35. package/lib/middlewares.js +36 -3
  36. package/lib/triggers.js +7 -7
  37. package/package.json +20 -33
  38. package/types/Options/index.d.ts +1 -0
  39. package/lib/ClientSDK.js +0 -39
@@ -9,4 +9,4 @@ var _PubSubAdapter = require("../Adapters/PubSub/PubSubAdapter");
9
9
  var _StorageAdapter = require("../Adapters/Storage/StorageAdapter");
10
10
  var _WSSAdapter = require("../Adapters/WebSocketServer/WSSAdapter");
11
11
  var _CheckGroup = require("../Security/CheckGroup");
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQW5hbHl0aWNzQWRhcHRlciIsInJlcXVpcmUiLCJfQ2FjaGVBZGFwdGVyIiwiX01haWxBZGFwdGVyIiwiX0ZpbGVzQWRhcHRlciIsIl9Mb2dnZXJBZGFwdGVyIiwiX1B1YlN1YkFkYXB0ZXIiLCJfU3RvcmFnZUFkYXB0ZXIiLCJfV1NTQWRhcHRlciIsIl9DaGVja0dyb3VwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL09wdGlvbnMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCB7IEFuYWx5dGljc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9BbmFseXRpY3MvQW5hbHl0aWNzQWRhcHRlcic7XG5pbXBvcnQgeyBDYWNoZUFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9DYWNoZS9DYWNoZUFkYXB0ZXInO1xuaW1wb3J0IHsgTWFpbEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9FbWFpbC9NYWlsQWRhcHRlcic7XG5pbXBvcnQgeyBGaWxlc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9GaWxlcy9GaWxlc0FkYXB0ZXInO1xuaW1wb3J0IHsgTG9nZ2VyQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0xvZ2dlci9Mb2dnZXJBZGFwdGVyJztcbmltcG9ydCB7IFB1YlN1YkFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdWJTdWIvUHViU3ViQWRhcHRlcic7XG5pbXBvcnQgeyBTdG9yYWdlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXInO1xuaW1wb3J0IHsgV1NTQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1dlYlNvY2tldFNlcnZlci9XU1NBZGFwdGVyJztcbmltcG9ydCB7IENoZWNrR3JvdXAgfSBmcm9tICcuLi9TZWN1cml0eS9DaGVja0dyb3VwJztcblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWFPcHRpb25zIHtcbiAgLyogUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYVxuICA6REVGQVVMVDogW10gKi9cbiAgZGVmaW5pdGlvbnM6IGFueTtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgc3RyaWN0OiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGRlbGV0ZSBhbnkgZmllbGRzIG5vdCBkZWZpbmVkIGluIGEgc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkZWxldGVFeHRyYUZpZWxkczogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCByZWNyZWF0ZSBhbnkgZmllbGRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGRhdGFiYXNlIHNjaGVtYSBhbmQgdGhlc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICByZWNyZWF0ZU1vZGlmaWVkRmllbGRzOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgd2lsbCByZWplY3QgYW55IGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgc2NoZW1hIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGxvY2tTY2hlbWFzOiA/Ym9vbGVhbjtcbiAgLyogKE9wdGlvbmFsKSBLZWVwIGluZGV4ZXMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgZGF0YWJhc2UgYnV0IG5vdCBkZWZpbmVkIGluIHRoZSBzY2hlbWEuIFNldCB0aGlzIHRvIGB0cnVlYCBpZiB5b3UgYXJlIGFkZGluZyBpbmRleGVzIG1hbnVhbGx5LCBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgcmVtb3ZlZCB3aGVuIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbi4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAga2VlcFVua25vd25JbmRleGVzOiA/Ym9vbGVhbjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGJlZm9yZSBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLiAqL1xuICBiZWZvcmVNaWdyYXRpb246ID8oKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGFmdGVyIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuICovXG4gIGFmdGVyTWlncmF0aW9uOiA/KCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgQWRhcHRlcjxUPiA9IHN0cmluZyB8IGFueSB8IFQ7XG50eXBlIE51bWJlck9yQm9vbGVhbiA9IG51bWJlciB8IGJvb2xlYW47XG50eXBlIE51bWJlck9yU3RyaW5nID0gbnVtYmVyIHwgc3RyaW5nO1xudHlwZSBQcm90ZWN0ZWRGaWVsZHMgPSBhbnk7XG50eXBlIFN0cmluZ09yU3RyaW5nQXJyYXkgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbnR5cGUgUmVxdWVzdEtleXdvcmREZW55bGlzdCA9IHtcbiAga2V5OiBzdHJpbmcgfCBhbnksXG4gIHZhbHVlOiBhbnksXG59O1xudHlwZSBFbWFpbFZlcmlmaWNhdGlvblJlcXVlc3QgPSB7XG4gIG9yaWdpbmFsPzogYW55LFxuICBvYmplY3Q6IGFueSxcbiAgbWFzdGVyPzogYm9vbGVhbixcbiAgaXA/OiBzdHJpbmcsXG4gIGluc3RhbGxhdGlvbklkPzogc3RyaW5nLFxuICBjcmVhdGVkV2l0aD86IHtcbiAgICBhY3Rpb246ICdsb2dpbicgfCAnc2lnbnVwJyxcbiAgICBhdXRoUHJvdmlkZXI6IHN0cmluZyxcbiAgfSxcbiAgcmVzZW5kUmVxdWVzdD86IGJvb2xlYW4sXG59O1xudHlwZSBTZW5kRW1haWxWZXJpZmljYXRpb25SZXF1ZXN0ID0ge1xuICB1c2VyOiBhbnksXG4gIG1hc3Rlcj86IGJvb2xlYW4sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9ucyB7XG4gIC8qIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qIFlvdXIgUGFyc2UgTWFzdGVyIEtleSAqL1xuICBtYXN0ZXJLZXk6ICgoKSA9PiB2b2lkKSB8IHN0cmluZztcbiAgLyogKE9wdGlvbmFsKSBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgYG1hc3RlcktleWAgaXMgYmVpbmcgdXNlZCBiZWZvcmUgaXQgaXMgcmVxdWVzdGVkIGFnYWluIGlmIGBtYXN0ZXJLZXlgIGlzIHNldCB0byBhIGZ1bmN0aW9uLiBJZiBgbWFzdGVyS2V5YCBpcyBub3Qgc2V0IHRvIGEgZnVuY3Rpb24sIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QuIERlZmF1bHQgaXMgYDBgLCB3aGljaCBtZWFucyB0aGUgbWFzdGVyIGtleSBpcyByZXF1ZXN0ZWQgYnkgaW52b2tpbmcgdGhlICBgbWFzdGVyS2V5YCBmdW5jdGlvbiBldmVyeSB0aW1lIHRoZSBtYXN0ZXIga2V5IGlzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIuICovXG4gIG1hc3RlcktleVR0bDogP251bWJlcjtcbiAgLyogKE9wdGlvbmFsKSBUaGUgbWFpbnRlbmFuY2Uga2V5IGlzIHVzZWQgZm9yIG1vZGlmeWluZyBpbnRlcm5hbCBhbmQgcmVhZC1vbmx5IGZpZWxkcyBvZiBQYXJzZSBTZXJ2ZXIuPGJyPjxicj7imqDvuI8gVGhpcyBrZXkgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBhIHJlZ3VsYXIgb3BlcmF0aW9uIG9mIFBhcnNlIFNlcnZlci4gVGhpcyBrZXkgaXMgaW50ZW5kZWQgdG8gY29uZHVjdCBvdXQtb2YtYmFuZCBjaGFuZ2VzIHN1Y2ggYXMgb25lLXRpbWUgbWlncmF0aW9ucyBvciBkYXRhIGNvcnJlY3Rpb24gdGFza3MuIEludGVybmFsIGZpZWxkcyBhcmUgbm90IG9mZmljaWFsbHkgZG9jdW1lbnRlZCBhbmQgbWF5IGNoYW5nZSBhdCBhbnkgdGltZSB3aXRob3V0IHB1YmxpY2F0aW9uIGluIHJlbGVhc2UgY2hhbmdlbG9ncy4gV2Ugc3Ryb25nbHkgYWR2aWNlIG5vdCB0byByZWx5IG9uIGludGVybmFsIGZpZWxkcyBhcyBwYXJ0IG9mIHlvdXIgcmVndWxhciBvcGVyYXRpb24gYW5kIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IHBsYW5uZWQgY2hhbmdlcyAqZGlyZWN0bHkgaW4gdGhlIHNvdXJjZSBjb2RlKiBvZiB5b3VyIGN1cnJlbnQgdmVyc2lvbiBvZiBQYXJzZSBTZXJ2ZXIuICovXG4gIG1haW50ZW5hbmNlS2V5OiBzdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gUGFyc2UgU2VydmVyLjxicj48YnI+4pqg77iPIENlcnRhaW4gc2VydmVyIGZlYXR1cmVzIG9yIGFkYXB0ZXJzIG1heSByZXF1aXJlIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC4gSWYgYSBmZWF0dXJlIHJlcXVpcmVzIHRoaXMsIGl0IGlzIG1lbnRpb25lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSW4gdGhhdCBjYXNlIGVuc3VyZSB0aGF0IHRoZSBVUkwgaXMgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfVVJMICovXG4gIHNlcnZlclVSTDogc3RyaW5nO1xuICAvKiBQYXJzZSBTZXJ2ZXIgbWFrZXMgYSBIVFRQIHJlcXVlc3QgdG8gdGhlIFVSTCBzZXQgaW4gYHNlcnZlclVSTGAgYXQgdGhlIGVuZCBvZiBpdHMgbGF1bmNoIHJvdXRpbmUgdG8gdmVyaWZ5IHRoYXQgdGhlIGxhdW5jaCBzdWNjZWVkZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBgZmFsc2VgLCB0aGUgdmVyaWZpY2F0aW9uIHdpbGwgYmUgc2tpcHBlZC4gVGhpcyBjYW4gYmUgdXNlZnVsIGluIGVudmlyb25tZW50cyB3aGVyZSB0aGUgc2VydmVyIFVSTCBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLCBzdWNoIGFzIHdoZW4gcnVubmluZyBiZWhpbmQgYSBmaXJld2FsbCBvciBpbiBjZXJ0YWluIGNvbnRhaW5lcml6ZWQgZW52aXJvbm1lbnRzLjxicj48YnI+4pqg77iPIFNlcnZlciBVUkwgdmVyaWZpY2F0aW9uIHJlcXVpcmVzIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC48YnI+PGJyPkRlZmF1bHQgaXMgYHRydWVgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICB2ZXJpZnlTZXJ2ZXJVcmw6ID9ib29sZWFuO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIG1hc3RlciBrZXkgcGVybWlzc2lvbnMgdG8gYSBsaXN0IG9mIElQIGFkZHJlc3NlcyBvciByYW5nZXMuPGJyPjxicj5UaGlzIG9wdGlvbiBhY2NlcHRzIGEgbGlzdCBvZiBzaW5nbGUgSVAgYWRkcmVzc2VzLCBmb3IgZXhhbXBsZSBgWycxMC4wLjAuMScsICcxMC4wLjAuMiddYC4gWW91IGNhbiBhbHNvIHVzZSBDSURSIG5vdGF0aW9uIHRvIHNwZWNpZnkgYW4gSVAgYWRkcmVzcyByYW5nZSwgZm9yIGV4YW1wbGUgYFsnMTAuMC4xLjAvMjQnXWAuPGJyPjxicj48Yj5TcGVjaWFsIHNjZW5hcmlvczo8L2I+PGJyPi0gU2V0dGluZyBhbiBlbXB0eSBhcnJheSBgW11gIG1lYW5zIHRoYXQgdGhlIG1hc3RlciBrZXkgY2Fubm90IGJlIHVzZWQgZXZlbiBpbiBQYXJzZSBTZXJ2ZXIgQ2xvdWQgQ29kZS4gVGhpcyB2YWx1ZSBjYW5ub3QgYmUgc2V0IHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcGFzcyBhbiBlbXB0eSBhcnJheSB0byBQYXJzZSBTZXJ2ZXIgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLjxicj4tIFNldHRpbmcgYFsnMC4wLjAuMC8wJywgJzo6MCddYCBtZWFucyB0byBhbGxvdyBhbnkgSVB2NCBhbmQgSVB2NiBhZGRyZXNzIHRvIHVzZSB0aGUgbWFzdGVyIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzEyNy4wLjAuMScsICc6OjEnXWAgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IGBsb2NhbGhvc3RgLCB0aGUgc2VydmVyIGluc3RhbmNlIG9uIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgbWFzdGVyIGtleS5cbiAgOkRFRkFVTFQ6IFtcIjEyNy4wLjAuMVwiLFwiOjoxXCJdICovXG4gIG1hc3RlcktleUlwczogPyhzdHJpbmdbXSk7XG4gIC8qIChPcHRpb25hbCkgUmVzdHJpY3RzIGV4dGVybmFsIGNsaWVudCBhY2Nlc3MgdG8gYSBsaXN0IG9mIGFsbG93ZWQgUkVTVCBBUEkgcm91dGVzLjxicj48YnI+V2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIGFsbCBleHRlcm5hbCBub24tbWFzdGVyLWtleSBSRVNUIEFQSSByZXF1ZXN0cyBhcmUgZGVuaWVkIGJ5IGRlZmF1bHQuIE9ubHkgcm91dGVzIG1hdGNoaW5nIGF0IGxlYXN0IG9uZSBvZiB0aGUgY29uZmlndXJlZCByZWdleCBwYXR0ZXJucyBhcmUgYWxsb3dlZCB0aHJvdWdoLiBJbnRlcm5hbCBjYWxscyBmcm9tIENsb3VkIENvZGUsIENsb3VkIEpvYnMsIGFuZCB0cmlnZ2VycyBhcmUgbm90IGFmZmVjdGVkLjxicj48YnI+RWFjaCBlbnRyeSBpcyBhIHJlZ2V4IHBhdHRlcm4gc3RyaW5nIG1hdGNoZWQgYWdhaW5zdCB0aGUgbm9ybWFsaXplZCByb3V0ZSBpZGVudGlmaWVyIChyZXF1ZXN0IHBhdGggd2l0aCBtb3VudCBwcmVmaXggYW5kIGxlYWRpbmcgc2xhc2ggc3RyaXBwZWQpLiBQYXR0ZXJucyBhcmUgYXV0by1hbmNob3JlZCB3aXRoIGBeYCBhbmQgYCRgIGZvciBmdWxsLW1hdGNoIHNlbWFudGljcy48YnI+PGJyPjxiPkV4YW1wbGVzIG9mIG5vcm1hbGl6ZWQgcm91dGUgaWRlbnRpZmllcnM6PC9iPjx1bD48bGk+YGNsYXNzZXMvR2FtZVNjb3JlYCAoY2xhc3MgQ1JVRCk8L2xpPjxsaT5gY2xhc3Nlcy9HYW1lU2NvcmUvYWJjMTIzYCAob2JqZWN0IGJ5IElEKTwvbGk+PGxpPmB1c2Vyc2AgKHVzZXIgb3BlcmF0aW9ucyk8L2xpPjxsaT5gbG9naW5gIChsb2dpbiBlbmRwb2ludCk8L2xpPjxsaT5gZnVuY3Rpb25zL3NlbmRFbWFpbGAgKENsb3VkIEZ1bmN0aW9uKTwvbGk+PGxpPmBqb2JzL2NsZWFudXBgIChDbG91ZCBKb2IpPC9saT48bGk+YHB1c2hgIChwdXNoIG5vdGlmaWNhdGlvbnMpPC9saT48bGk+YGNvbmZpZ2AgKGNsaWVudCBjb25maWcpPC9saT48bGk+YGluc3RhbGxhdGlvbnNgIChpbnN0YWxsYXRpb25zKTwvbGk+PC91bD48Yj5FeGFtcGxlIHBhdHRlcm5zOjwvYj48dWw+PGxpPmBjbGFzc2VzL0NoYXRNZXNzYWdlYCBtYXRjaGVzIG9ubHkgYGNsYXNzZXMvQ2hhdE1lc3NhZ2VgPC9saT48bGk+YGNsYXNzZXMvQ2hhdC4qYCBtYXRjaGVzIGBjbGFzc2VzL0NoYXRNZXNzYWdlYCwgYGNsYXNzZXMvQ2hhdFJvb21gLCBldGMuPC9saT48bGk+YGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgQ2xvdWQgRnVuY3Rpb25zPC9saT48L3VsPlNldHRpbmcgYW4gZW1wdHkgYXJyYXkgYFtdYCBibG9ja3MgYWxsIGV4dGVybmFsIG5vbi1tYXN0ZXIta2V5IFJFU1QgQVBJIHJlcXVlc3RzIChmdWxsIGxvY2tkb3duIG9mIFJFU1QgQVBJIHJvdXRlcykuPGJyPjxicj5XaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBub3RhdGlvbiBpcyBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlIGBcImNsYXNzZXMvQ2hhdE1lc3NhZ2UsdXNlcnMsZnVuY3Rpb25zLy4qXCJgLjxicj48YnI+RGVmYXVsdHMgdG8gYHVuZGVmaW5lZGAgd2hpY2ggbWVhbnMgdGhlIGZlYXR1cmUgaXMgaW5hY3RpdmUgYW5kIGFsbCByb3V0ZXMgYXJlIGFjY2Vzc2libGUuPGJyPjxicj48Yj5Ob3RlOjwvYj4gRmlsZSByb3V0ZXMgYW5kIHRoZSBHcmFwaFFMIEFQSSBhcmUgbm90IGNvdmVyZWQgYnkgdGhpcyBvcHRpb24uKi9cbiAgcm91dGVBbGxvd0xpc3Q6ID8oc3RyaW5nW10pO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIG1haW50ZW5hbmNlIGtleSBwZXJtaXNzaW9ucyB0byBhIGxpc3Qgb2YgSVAgYWRkcmVzc2VzIG9yIHJhbmdlcy48YnI+PGJyPlRoaXMgb3B0aW9uIGFjY2VwdHMgYSBsaXN0IG9mIHNpbmdsZSBJUCBhZGRyZXNzZXMsIGZvciBleGFtcGxlIGBbJzEwLjAuMC4xJywgJzEwLjAuMC4yJ11gLiBZb3UgY2FuIGFsc28gdXNlIENJRFIgbm90YXRpb24gdG8gc3BlY2lmeSBhbiBJUCBhZGRyZXNzIHJhbmdlLCBmb3IgZXhhbXBsZSBgWycxMC4wLjEuMC8yNCddYC48YnI+PGJyPjxiPlNwZWNpYWwgc2NlbmFyaW9zOjwvYj48YnI+LSBTZXR0aW5nIGFuIGVtcHR5IGFycmF5IGBbXWAgbWVhbnMgdGhhdCB0aGUgbWFpbnRlbmFuY2Uga2V5IGNhbm5vdCBiZSB1c2VkIGV2ZW4gaW4gUGFyc2UgU2VydmVyIENsb3VkIENvZGUuIFRoaXMgdmFsdWUgY2Fubm90IGJlIHNldCB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHBhc3MgYW4gZW1wdHkgYXJyYXkgdG8gUGFyc2UgU2VydmVyIHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS48YnI+LSBTZXR0aW5nIGBbJzAuMC4wLjAvMCcsICc6OjAnXWAgbWVhbnMgdG8gYWxsb3cgYW55IElQdjQgYW5kIElQdjYgYWRkcmVzcyB0byB1c2UgdGhlIG1haW50ZW5hbmNlIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzEyNy4wLjAuMScsICc6OjEnXWAgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IGBsb2NhbGhvc3RgLCB0aGUgc2VydmVyIGluc3RhbmNlIG9uIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgbWFpbnRlbmFuY2Uga2V5LlxuICA6REVGQVVMVDogW1wiMTI3LjAuMC4xXCIsXCI6OjFcIl0gKi9cbiAgbWFpbnRlbmFuY2VLZXlJcHM6ID8oc3RyaW5nW10pO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIHJlYWQtb25seSBtYXN0ZXIga2V5IHBlcm1pc3Npb25zIHRvIGEgbGlzdCBvZiBJUCBhZGRyZXNzZXMgb3IgcmFuZ2VzLjxicj48YnI+VGhpcyBvcHRpb24gYWNjZXB0cyBhIGxpc3Qgb2Ygc2luZ2xlIElQIGFkZHJlc3NlcywgZm9yIGV4YW1wbGUgYFsnMTAuMC4wLjEnLCAnMTAuMC4wLjInXWAuIFlvdSBjYW4gYWxzbyB1c2UgQ0lEUiBub3RhdGlvbiB0byBzcGVjaWZ5IGFuIElQIGFkZHJlc3MgcmFuZ2UsIGZvciBleGFtcGxlIGBbJzEwLjAuMS4wLzI0J11gLjxicj48YnI+PGI+U3BlY2lhbCBzY2VuYXJpb3M6PC9iPjxicj4tIFNldHRpbmcgYW4gZW1wdHkgYXJyYXkgYFtdYCBtZWFucyB0aGF0IHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBjYW5ub3QgYmUgdXNlZCBldmVuIGluIFBhcnNlIFNlcnZlciBDbG91ZCBDb2RlLiBUaGlzIHZhbHVlIGNhbm5vdCBiZSBzZXQgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwYXNzIGFuIGVtcHR5IGFycmF5IHRvIFBhcnNlIFNlcnZlciB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuPGJyPi0gU2V0dGluZyBgWycwLjAuMC4wLzAnLCAnOjowJ11gIG1lYW5zIHRvIGFsbG93IGFueSBJUHY0IGFuZCBJUHY2IGFkZHJlc3MgdG8gdXNlIHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzAuMC4wLjAvMCcsICc6OjAnXWAgd2hpY2ggbWVhbnMgdGhhdCBhbnkgSVAgYWRkcmVzcyBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHNldCB0aGlzIG9wdGlvbiB0byBgWycxMjcuMC4wLjEnLCAnOjoxJ11gIHRvIHJlc3RyaWN0IGFjY2VzcyB0byBgbG9jYWxob3N0YC5cbiAgOkRFRkFVTFQ6IFtcIjAuMC4wLjAvMFwiLFwiOjowXCJdICovXG4gIHJlYWRPbmx5TWFzdGVyS2V5SXBzOiA/KHN0cmluZ1tdKTtcbiAgLyogU2V0cyB0aGUgYXBwIG5hbWUgKi9cbiAgYXBwTmFtZTogP3N0cmluZztcbiAgLyogQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyAqL1xuICBhbGxvd0hlYWRlcnM6ID8oc3RyaW5nW10pO1xuICAvKiBTZXRzIG9yaWdpbnMgZm9yIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gVGhpcyBjYW4gYmUgYSBzdHJpbmcgZm9yIGEgc2luZ2xlIG9yaWdpbiBvciBhbiBhcnJheSBvZiBzdHJpbmdzIGZvciBtdWx0aXBsZSBvcmlnaW5zLiAqL1xuICBhbGxvd09yaWdpbjogP1N0cmluZ09yU3RyaW5nQXJyYXk7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgYW5hbHl0aWNzICovXG4gIGFuYWx5dGljc0FkYXB0ZXI6ID9BZGFwdGVyPEFuYWx5dGljc0FkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGZpbGVzIHN1Yi1zeXN0ZW0gKi9cbiAgZmlsZXNBZGFwdGVyOiA/QWRhcHRlcjxGaWxlc0FkYXB0ZXI+O1xuICAvKiBDb25maWd1cmF0aW9uIGZvciBwdXNoLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNwdXNoLW5vdGlmaWNhdGlvbnMgKi9cbiAgcHVzaDogP2FueTtcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgcHVzaCBzY2hlZHVsaW5nLCBkZWZhdWx0cyB0byBmYWxzZS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHNjaGVkdWxlZFB1c2g6ID9ib29sZWFuO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGxvZ2dpbmcgc3ViLXN5c3RlbSAqL1xuICBsb2dnZXJBZGFwdGVyOiA/QWRhcHRlcjxMb2dnZXJBZGFwdGVyPjtcbiAgLyogTG9nIGFzIHN0cnVjdHVyZWQgSlNPTiBvYmplY3RzXG4gIDpFTlY6IEpTT05fTE9HUyAqL1xuICBqc29uTG9nczogP2Jvb2xlYW47XG4gIC8qIEZvbGRlciBmb3IgdGhlIGxvZ3MgKGRlZmF1bHRzIHRvICcuL2xvZ3MnKTsgc2V0IHRvIG51bGwgdG8gZGlzYWJsZSBmaWxlIGJhc2VkIGxvZ2dpbmdcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0xPR1NfRk9MREVSXG4gIDpERUZBVUxUOiAuL2xvZ3MgKi9cbiAgbG9nc0ZvbGRlcjogP3N0cmluZztcbiAgLyogU2V0IHRoZSBsb2dnaW5nIHRvIHZlcmJvc2VcbiAgOkVOVjogVkVSQk9TRSAqL1xuICB2ZXJib3NlOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgbGV2ZWwgZm9yIGxvZ3MgKi9cbiAgbG9nTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIChPcHRpb25hbCkgT3ZlcnJpZGVzIHRoZSBsb2cgbGV2ZWxzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIgdG8gbG9nIGV2ZW50cy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGxvZ0xldmVsczogP0xvZ0xldmVscztcbiAgLyogTWF4aW11bSBsZW5ndGggb2YgbG9nIG1lc3NhZ2Ugc3RyaW5ncyBiZWZvcmUgdHJ1bmNhdGlvbiBpbiBDbG91ZCBDb2RlIGxvZ3MuXG4gIDpERUZBVUxUOiAxMDAwICovXG4gIGxvZ1N0cmluZ1RydW5jYXRlTGVuZ3RoOiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG51bWJlciBvZiBsb2dzIHRvIGtlZXAuIElmIG5vdCBzZXQsIG5vIGxvZ3Mgd2lsbCBiZSByZW1vdmVkLiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBmaWxlcyBvciBudW1iZXIgb2YgZGF5cy4gSWYgdXNpbmcgZGF5cywgYWRkICdkJyBhcyB0aGUgc3VmZml4LiAoZGVmYXVsdDogbnVsbCkgKi9cbiAgbWF4TG9nRmlsZXM6ID9OdW1iZXJPclN0cmluZztcbiAgLyogRGlzYWJsZXMgY29uc29sZSBvdXRwdXRcbiAgOkVOVjogU0lMRU5UICovXG4gIHNpbGVudDogP2Jvb2xlYW47XG4gIC8qIFRoZSBmdWxsIFVSSSB0byB5b3VyIGRhdGFiYXNlLiBTdXBwb3J0ZWQgZGF0YWJhc2VzIGFyZSBtb25nb2RiIG9yIHBvc3RncmVzLlxuICA6REVGQVVMVDogbW9uZ29kYjovL2xvY2FsaG9zdDoyNzAxNy9wYXJzZSAqL1xuICBkYXRhYmFzZVVSSTogc3RyaW5nO1xuICAvKiBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGRhdGFiYXNlIGNsaWVudFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfREFUQUJBU0VfT1BUSU9OUyAqL1xuICBkYXRhYmFzZU9wdGlvbnM6ID9EYXRhYmFzZU9wdGlvbnM7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZGF0YWJhc2U7IGFueSBvcHRpb25zIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IGRlc2NyaWJlZCBoZXJlIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGRhdGFiYXNlIGNsaWVudC4gKi9cbiAgZGF0YWJhc2VBZGFwdGVyOiA/QWRhcHRlcjxTdG9yYWdlQWRhcHRlcj47XG4gIC8qIE9wdGlvbmFsLiBJZiBzZXQgdG8gYHRydWVgLCB0aGUgY29sbGF0aW9uIHJ1bGUgb2YgY2FzZSBjb21wYXJpc29uIGZvciBxdWVyaWVzIGFuZCBpbmRleGVzIGlzIGVuYWJsZWQuIEVuYWJsZSB0aGlzIG9wdGlvbiB0byBydW4gUGFyc2UgU2VydmVyIHdpdGggTW9uZ29EQiBBdGxhcyBTZXJ2ZXJsZXNzIG9yIEFXUyBBbWF6b24gRG9jdW1lbnREQi4gSWYgYGZhbHNlYCwgdGhlIGNvbGxhdGlvbiBydWxlIG9mIGNhc2UgY29tcGFyaXNvbiBpcyBkaXNhYmxlZC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlQ29sbGF0aW9uQ2FzZUNvbXBhcmlzb246ID9ib29sZWFuO1xuICAvKiBPcHRpb25hbC4gSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGBlbWFpbGAgcHJvcGVydHkgb2YgYSB1c2VyIGlzIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGxvd2VyY2FzZSBiZWZvcmUgYmVpbmcgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gQ29uc2VxdWVudGx5LCBxdWVyaWVzIG11c3QgbWF0Y2ggdGhlIGNhc2UgYXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgd2hpY2ggd291bGQgYmUgbG93ZXJjYXNlIGluIHRoaXMgc2NlbmFyaW8uIElmIGBmYWxzZWAsIHRoZSBgZW1haWxgIHByb3BlcnR5IGlzIHN0b3JlZCBhcyBzZXQsIHdpdGhvdXQgYW55IGNhc2UgbW9kaWZpY2F0aW9ucy4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgY29udmVydEVtYWlsVG9Mb3dlcmNhc2U6ID9ib29sZWFuO1xuICAvKiBPcHRpb25hbC4gSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGB1c2VybmFtZWAgcHJvcGVydHkgb2YgYSB1c2VyIGlzIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGxvd2VyY2FzZSBiZWZvcmUgYmVpbmcgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gQ29uc2VxdWVudGx5LCBxdWVyaWVzIG11c3QgbWF0Y2ggdGhlIGNhc2UgYXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgd2hpY2ggd291bGQgYmUgbG93ZXJjYXNlIGluIHRoaXMgc2NlbmFyaW8uIElmIGBmYWxzZWAsIHRoZSBgdXNlcm5hbWVgIHByb3BlcnR5IGlzIHN0b3JlZCBhcyBzZXQsIHdpdGhvdXQgYW55IGNhc2UgbW9kaWZpY2F0aW9ucy4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgY29udmVydFVzZXJuYW1lVG9Mb3dlcmNhc2U6ID9ib29sZWFuO1xuICAvKiBGdWxsIHBhdGggdG8geW91ciBjbG91ZCBjb2RlIG1haW4uanMgKi9cbiAgY2xvdWQ6ID9zdHJpbmc7XG4gIC8qIEEgY29sbGVjdGlvbiBwcmVmaXggZm9yIHRoZSBjbGFzc2VzXG4gIDpERUZBVUxUOiAnJyAqL1xuICBjb2xsZWN0aW9uUHJlZml4OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIGlPUywgTWFjT1MsIHR2T1MgY2xpZW50cyAqL1xuICBjbGllbnRLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgdGhlIEphdmFzY3JpcHQgU0RLICovXG4gIGphdmFzY3JpcHRLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgVW5pdHkgYW5kIC5OZXQgU0RLICovXG4gIGRvdE5ldEtleTogP3N0cmluZztcbiAgLyogS2V5IGZvciBlbmNyeXB0aW5nIHlvdXIgZmlsZXNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VOQ1JZUFRJT05fS0VZICovXG4gIGVuY3J5cHRpb25LZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgUkVTVCBjYWxsc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfUkVTVF9BUElfS0VZICovXG4gIHJlc3RBUElLZXk6ID9zdHJpbmc7XG4gIC8qIFRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBpcyBhIHNlY3JldCBrZXkgd2l0aCB0aGUgc2FtZSByZWFkIGNhcGFiaWxpdGllcyBhcyB0aGUgYG1hc3RlcktleWAsIGJ1dCB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gd3JpdGVzLiBMaWtlIHRoZSBgbWFzdGVyS2V5YCwgaXQgYnlwYXNzZXMgYWxsIHNlY3VyaXR5IG1lY2hhbmlzbXMgKENsYXNzIExldmVsIFBlcm1pc3Npb25zLCBvYmplY3QgQUNMcywgYHByb3RlY3RlZEZpZWxkc2ApLCBzbyBpdCBncmFudHMgZnVsbCByZWFkIGFjY2VzcyB0byBhbGwgZGF0YS48YnI+PGJyPkl0IGlzIGludGVuZGVkIHN0cmljdGx5IGZvciBpbnRlcm5hbCwgc2VydmVyLXNpZGUgdXNlIOKAlCBmb3IgZXhhbXBsZSB0byBnaXZlIGEgdHJ1c3RlZCBpbnRlcm5hbCBwcm9jZXNzIHJlYWQgYWNjZXNzIHdoaWxlIGd1YXJkaW5nIGFnYWluc3QgYWNjaWRlbnRhbCB3cml0ZXMgZHVyaW5nIGRldmVsb3BtZW50IG9yIG9wZXJhdGlvbnMuIEl0IGlzIG5vdCBhIGNyZWRlbnRpYWwgZm9yIHVudHJ1c3RlZCBjb250ZXh0czogaXQgbXVzdCBuZXZlciBiZSBzaGlwcGVkLCBkaXN0cmlidXRlZCwgcHVibGlzaGVkLCBlbWJlZGRlZCBpbiBhIGNsaWVudCBhcHBsaWNhdGlvbiwgb3Igb3RoZXJ3aXNlIGV4cG9zZWQgdG8gdW50cnVzdGVkIHBhcnRpZXMsIGJlY2F1c2UgYW55b25lIHdobyBvYnRhaW5zIGl0IGNhbiByZWFkIGFsbCBkYXRhIGluIHRoZSBkYXRhYmFzZS4gVXNlIGByZWFkT25seU1hc3RlcktleUlwc2AgdG8gcmVzdHJpY3QgdGhlIElQIGFkZHJlc3NlcyBmcm9tIHdoaWNoIGl0IG1heSBiZSB1c2VkLiAqL1xuICByZWFkT25seU1hc3RlcktleTogP3N0cmluZztcbiAgLyogV2hldGhlciB0aGUgYHJlYWRPbmx5TWFzdGVyS2V5YCBpcyBhbGxvd2VkIHRvIHJ1biBhZ2dyZWdhdGlvbiBwaXBlbGluZXMgdmlhIHRoZSBhZ2dyZWdhdGUgZW5kcG9pbnQuIEFuIGFnZ3JlZ2F0aW9uIHBpcGVsaW5lIGNhbiBjb250YWluIHdyaXRlLWNhcGFibGUgc3RhZ2VzIChmb3IgZXhhbXBsZSBNb25nb0RCIGAkb3V0YCBhbmQgYCRtZXJnZWApLCBzbyBhbGxvd2luZyBhZ2dyZWdhdGlvbiBlZmZlY3RpdmVseSBnaXZlcyB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgYSB3YXkgdG8gcGVyZm9ybSB3cml0ZXMsIGNvbnRyYXJ5IHRvIGl0cyByZWFkLW9ubHkgaW50ZW50LiBJZiBgdHJ1ZWAgKGRlZmF1bHQpLCB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgY2FuIHJ1biBhZ2dyZWdhdGlvbiBwaXBlbGluZXMuIElmIGBmYWxzZWAsIHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBjYW5ub3QgcnVuIGFnZ3JlZ2F0aW9uIHBpcGVsaW5lcyBhdCBhbGwuIE5vdGUgdGhhdCB0aGUgYHJlYWRPbmx5TWFzdGVyS2V5YCBpcyBhIHNlY3JldCBrZXkgZm9yIGludGVybmFsIHNlcnZlci1zaWRlIHVzZSBvbmx5IGFuZCBtdXN0IG5ldmVyIGJlIGRpc3RyaWJ1dGVkOyB0aGlzIG9wdGlvbiBpcyBhbiBhZGRpdGlvbmFsIHNhZmVndWFyZCwgbm90IGEgc3Vic3RpdHV0ZSBmb3Iga2VlcGluZyB0aGUga2V5IGNvbmZpZGVudGlhbC4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQUxMT1dfQUdHUkVHQVRJT05fRk9SX1JFQURfT05MWV9NQVNURVJfS0VZXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGFsbG93QWdncmVnYXRpb25Gb3JSZWFkT25seU1hc3RlcktleTogP2Jvb2xlYW47XG4gIC8qIEtleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxscyAqL1xuICB3ZWJob29rS2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIHlvdXIgZmlsZXMgKi9cbiAgZmlsZUtleTogP3N0cmluZztcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSB0aGUgYWRkaXRpb24gb2YgYSB1bmlxdWUgaGFzaCB0byB0aGUgZmlsZSBuYW1lc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJFU0VSVkVfRklMRV9OQU1FXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcmVzZXJ2ZUZpbGVOYW1lOiA/Ym9vbGVhbjtcbiAgLyogUGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gZmllbGRzIGluIHRoZSB1c2VyIHRhYmxlIHRoZSBzaG91bGQgYmUgcmVtb3ZlZCBmb3Igbm9uLWF1dGhvcml6ZWQgdXNlcnMuIERlcHJlY2F0ZWQgQHNlZSBwcm90ZWN0ZWRGaWVsZHMgKi9cbiAgdXNlclNlbnNpdGl2ZUZpZWxkczogPyhzdHJpbmdbXSk7XG4gIC8qIEZpZWxkcyBwZXIgY2xhc3MgdGhhdCBhcmUgaGlkZGVuIGZyb20gcXVlcnkgcmVzdWx0cyBmb3Igc3BlY2lmaWMgdXNlciBncm91cHMuIFByb3RlY3RlZCBmaWVsZHMgYXJlIHN0cmlwcGVkIGZyb20gdGhlIHNlcnZlciByZXNwb25zZSwgYnV0IGNhbiBzdGlsbCBiZSB1c2VkIGludGVybmFsbHkgKGUuZy4gaW4gQ2xvdWQgQ29kZSB0cmlnZ2VycykuIENvbmZpZ3VyZSBhcyBgeyAnQ2xhc3NOYW1lJzogeyAnVXNlckdyb3VwJzogWydmaWVsZDEnLCAnZmllbGQyJ10gfSB9YCB3aGVyZSBgVXNlckdyb3VwYCBpcyBvbmUgb2Y6IGAnKidgIChhbGwgdXNlcnMpLCBgJ2F1dGhlbnRpY2F0ZWQnYCAoYXV0aGVudGljYXRlZCB1c2VycyksIGAncm9sZTpSb2xlTmFtZSdgICh1c2VycyB3aXRoIGEgc3BlY2lmaWMgcm9sZSksIGAndXNlckZpZWxkOkZpZWxkTmFtZSdgICh1c2VycyByZWZlcmVuY2VkIGJ5IGEgcG9pbnRlciBmaWVsZCksIG9yIGEgdXNlciBgb2JqZWN0SWRgIHRvIHRhcmdldCBhIHNwZWNpZmljIHVzZXIuIFdoZW4gbXVsdGlwbGUgZ3JvdXBzIGFwcGx5LCB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZWlyIHByb3RlY3RlZCBmaWVsZHMgaXMgdXNlZC4gQW55IGZpZWxkIGNhbiBiZSBwcm90ZWN0ZWQsIGluY2x1ZGluZyBzeXN0ZW0gZmllbGRzIGxpa2UgYGNyZWF0ZWRBdGAgYW5kIGB1cGRhdGVkQXRgLiBCeSBkZWZhdWx0LCBgZW1haWxgIGlzIHByb3RlY3RlZCBvbiB0aGUgYF9Vc2VyYCBjbGFzcyBmb3IgYWxsIHVzZXJzLiBPbiB0aGUgYF9Vc2VyYCBjbGFzcywgdGhlIG9iamVjdCBvd25lciBpcyBleGVtcHQgZnJvbSBwcm90ZWN0ZWQgZmllbGRzIGJ5IGRlZmF1bHQ7IHNlZSBgcHJvdGVjdGVkRmllbGRzT3duZXJFeGVtcHRgIHRvIGNoYW5nZSB0aGlzLlxuICA6REVGQVVMVDoge1wiX1VzZXJcIjoge1wiKlwiOiBbXCJlbWFpbFwiXX19ICovXG4gIHByb3RlY3RlZEZpZWxkczogP1Byb3RlY3RlZEZpZWxkcztcbiAgLyogV2hldGhlciB0aGUgYF9Vc2VyYCBjbGFzcyBpcyBleGVtcHQgZnJvbSBgcHJvdGVjdGVkRmllbGRzYCB3aGVuIHRoZSBsb2dnZWQtaW4gdXNlciBxdWVyaWVzIHRoZWlyIG93biB1c2VyIG9iamVjdC4gSWYgYHRydWVgIChkZWZhdWx0KSwgYSB1c2VyIGNhbiBzZWUgYWxsIHRoZWlyIG93biBmaWVsZHMgcmVnYXJkbGVzcyBvZiBgcHJvdGVjdGVkRmllbGRzYCBjb25maWd1cmF0aW9uOyBkZWZhdWx0IHByb3RlY3RlZCBmaWVsZHMgKGUuZy4gYGVtYWlsYCkgYXJlIG1lcmdlZCBpbnRvIGFueSBjdXN0b20gYHByb3RlY3RlZEZpZWxkc2AgY29uZmlndXJhdGlvbi4gSWYgYGZhbHNlYCwgYHByb3RlY3RlZEZpZWxkc2AgYXBwbGllcyBlcXVhbGx5IHRvIHRoZSB1c2VyJ3Mgb3duIG9iamVjdCwgY29uc2lzdGVudCB3aXRoIGFsbCBvdGhlciBjbGFzc2VzOyBvbmx5IGV4cGxpY2l0bHkgY29uZmlndXJlZCBwcm90ZWN0ZWQgZmllbGRzIGFwcGx5LCBkZWZhdWx0cyBhcmUgbm90IG1lcmdlZC4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJPVEVDVEVEX0ZJRUxEU19PV05FUl9FWEVNUFRcbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgcHJvdGVjdGVkRmllbGRzT3duZXJFeGVtcHQ6ID9ib29sZWFuO1xuICAvKiBXaGV0aGVyIENsb3VkIENvZGUgdHJpZ2dlcnMgKGUuZy4gYGJlZm9yZVNhdmVgLCBgYWZ0ZXJTYXZlYCkgYXJlIGV4ZW1wdCBmcm9tIGBwcm90ZWN0ZWRGaWVsZHNgLiBJZiBgdHJ1ZWAsIHRyaWdnZXJzIHJlY2VpdmUgdGhlIGZ1bGwgb2JqZWN0IGluY2x1ZGluZyBwcm90ZWN0ZWQgZmllbGRzIGluIGByZXF1ZXN0Lm9iamVjdGAgYW5kIGByZXF1ZXN0Lm9yaWdpbmFsYCwgcmVnYXJkbGVzcyBvZiB0aGUgY2FsbGVyJ3MgYXV0aCBjb250ZXh0LiBJZiBgZmFsc2VgLCBwcm90ZWN0ZWQgZmllbGRzIGFyZSBzdHJpcHBlZCBmcm9tIHRoZSBvcmlnaW5hbCBvYmplY3QgZmV0Y2ggdXNlZCB0byBidWlsZCB0cmlnZ2VyIG9iamVjdHMuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9QUk9URUNURURfRklFTERTX1RSSUdHRVJfRVhFTVBUXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcm90ZWN0ZWRGaWVsZHNUcmlnZ2VyRXhlbXB0OiA/Ym9vbGVhbjtcbiAgLyogV2hldGhlciBzYXZlIG9wZXJhdGlvbiByZXNwb25zZXMgKGNyZWF0ZSwgdXBkYXRlKSBhcmUgZXhlbXB0IGZyb20gYHByb3RlY3RlZEZpZWxkc2AuIElmIGB0cnVlYCAoZGVmYXVsdCksIHByb3RlY3RlZCBmaWVsZHMgbW9kaWZpZWQgZHVyaW5nIGEgc2F2ZSBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlIHRvIHRoZSBjbGllbnQuIElmIGBmYWxzZWAsIHByb3RlY3RlZCBmaWVsZHMgYXJlIHN0cmlwcGVkIGZyb20gc2F2ZSByZXNwb25zZXMsIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhleSBhcmUgc3RyaXBwZWQgZnJvbSBxdWVyeSByZXN1bHRzLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9QUk9URUNURURfRklFTERTX1NBVkVfUkVTUE9OU0VfRVhFTVBUXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHByb3RlY3RlZEZpZWxkc1NhdmVSZXNwb25zZUV4ZW1wdDogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkFCTEVfQU5PTl9VU0VSU1xuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVBbm9ueW1vdXNVc2VyczogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgY2xpZW50IGNsYXNzIGNyZWF0aW9uLCBkZWZhdWx0cyB0byBmYWxzZVxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQUxMT1dfQ0xJRU5UX0NMQVNTX0NSRUFUSU9OXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhbGxvd0NsaWVudENsYXNzQ3JlYXRpb246ID9ib29sZWFuO1xuICAvKiBFbmFibGUgKG9yIGRpc2FibGUpIGN1c3RvbSBvYmplY3RJZFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQUxMT1dfQ1VTVE9NX09CSkVDVF9JRFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWxsb3dDdXN0b21PYmplY3RJZDogP2Jvb2xlYW47XG4gIC8qIENvbmZpZ3VyYXRpb24gZm9yIHlvdXIgYXV0aGVudGljYXRpb24gcHJvdmlkZXJzLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNvYXV0aC1hbmQtM3JkLXBhcnR5LWF1dGhlbnRpY2F0aW9uPGJyPjxicj5Qcm92aWRlciBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgYW5kIGNvbnRhaW4gb25seSBsZXR0ZXJzLCBkaWdpdHMsIGFuZCB1bmRlcnNjb3JlcyAoYC9eW0EtWmEtel1bQS1aYS16MC05X10qJC9gKS4gVGhpcyBpcyBiZWNhdXNlIGVhY2ggcHJvdmlkZXIgbmFtZSBpcyB1c2VkIHRvIGNvbnN0cnVjdCBhIGRhdGFiYXNlIGZpZWxkIChgX2F1dGhfZGF0YV88cHJvdmlkZXI+YCksIHdoaWNoIG11c3QgY29tcGx5IHdpdGggUGFyc2UgU2VydmVyJ3MgZmllbGQgbmFtaW5nIHJ1bGVzLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQVVUSF9QUk9WSURFUlMgKi9cbiAgYXV0aDogP3sgW3N0cmluZ106IEF1dGhBZGFwdGVyIH07XG4gIC8qIE9wdGlvbmFsLiBFbmFibGVzIGluc2VjdXJlIGF1dGhlbnRpY2F0aW9uIGFkYXB0ZXJzLiBJbnNlY3VyZSBhdXRoIGFkYXB0ZXJzIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VOQUJMRV9JTlNFQ1VSRV9BVVRIX0FEQVBURVJTXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVJbnNlY3VyZUF1dGhBZGFwdGVyczogP2Jvb2xlYW47XG4gIC8qIE1heCBmaWxlIHNpemUgZm9yIHVwbG9hZHMsIGRlZmF1bHRzIHRvIDIwbWJcbiAgOkRFRkFVTFQ6IDIwbWIgKi9cbiAgbWF4VXBsb2FkU2l6ZTogP3N0cmluZztcbiAgLyogU2V0IHRvIGB0cnVlYCB0byByZXF1aXJlIHVzZXJzIHRvIHZlcmlmeSB0aGVpciBlbWFpbCBhZGRyZXNzIHRvIGNvbXBsZXRlIHRoZSBzaWduLXVwIHByb2Nlc3MuIFN1cHBvcnRzIGEgZnVuY3Rpb24gd2l0aCBhIHJldHVybiB2YWx1ZSBvZiBgdHJ1ZWAgb3IgYGZhbHNlYCBmb3IgY29uZGl0aW9uYWwgdmVyaWZpY2F0aW9uLiBUaGUgZnVuY3Rpb24gcmVjZWl2ZXMgYSByZXF1ZXN0IG9iamVjdCB0aGF0IGluY2x1ZGVzIGBjcmVhdGVkV2l0aGAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgaW52b2NhdGlvbiBpcyBmb3IgYHNpZ251cGAgb3IgYGxvZ2luYCBhbmQgdGhlIHVzZWQgYXV0aCBwcm92aWRlci5cbiAgPGJyPjxicj5cbiAgVGhlIGBjcmVhdGVkV2l0aGAgdmFsdWVzIHBlciBzY2VuYXJpbzpcbiAgPHVsPjxsaT5QYXNzd29yZCBzaWdudXA6IGB7IGFjdGlvbjogJ3NpZ251cCcsIGF1dGhQcm92aWRlcjogJ3Bhc3N3b3JkJyB9YDwvbGk+PGxpPkF1dGggcHJvdmlkZXIgc2lnbnVwOiBgeyBhY3Rpb246ICdzaWdudXAnLCBhdXRoUHJvdmlkZXI6ICc8cHJvdmlkZXI+JyB9YDwvbGk+PGxpPlBhc3N3b3JkIGxvZ2luOiBgeyBhY3Rpb246ICdsb2dpbicsIGF1dGhQcm92aWRlcjogJ3Bhc3N3b3JkJyB9YDwvbGk+PGxpPkF1dGggcHJvdmlkZXIgbG9naW46IGZ1bmN0aW9uIG5vdCBpbnZva2VkOyBhdXRoIHByb3ZpZGVyIGxvZ2luIGJ5cGFzc2VzIGVtYWlsIHZlcmlmaWNhdGlvbjwvbGk+PGxpPlJlc2VuZCB2ZXJpZmljYXRpb24gZW1haWw6IGBjcmVhdGVkV2l0aGAgaXMgYHVuZGVmaW5lZGA7IHVzZSB0aGUgYHJlc2VuZFJlcXVlc3RgIHByb3BlcnR5IHRvIGlkZW50aWZ5IHRob3NlPC9saT48L3VsPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICB2ZXJpZnlVc2VyRW1haWxzOiA/KGJvb2xlYW4gfCAoRW1haWxWZXJpZmljYXRpb25SZXF1ZXN0ID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+KSk7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gcHJldmVudCBhIHVzZXIgZnJvbSBsb2dnaW5nIGluIGlmIHRoZSBlbWFpbCBoYXMgbm90IHlldCBiZWVuIHZlcmlmaWVkIGFuZCBlbWFpbCB2ZXJpZmljYXRpb24gaXMgcmVxdWlyZWQuIFN1cHBvcnRzIGEgZnVuY3Rpb24gd2l0aCBhIHJldHVybiB2YWx1ZSBvZiBgdHJ1ZWAgb3IgYGZhbHNlYCBmb3IgY29uZGl0aW9uYWwgcHJldmVudGlvbi4gVGhlIGZ1bmN0aW9uIHJlY2VpdmVzIGEgcmVxdWVzdCBvYmplY3QgdGhhdCBpbmNsdWRlcyBgY3JlYXRlZFdpdGhgIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGludm9jYXRpb24gaXMgZm9yIGBzaWdudXBgIG9yIGBsb2dpbmAgYW5kIHRoZSB1c2VkIGF1dGggcHJvdmlkZXIuXG4gIDxicj48YnI+XG4gIFRoZSBgY3JlYXRlZFdpdGhgIHZhbHVlcyBwZXIgc2NlbmFyaW86XG4gIDx1bD48bGk+UGFzc3dvcmQgc2lnbnVwOiBgeyBhY3Rpb246ICdzaWdudXAnLCBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcgfWA8L2xpPjxsaT5BdXRoIHByb3ZpZGVyIHNpZ251cDogYHsgYWN0aW9uOiAnc2lnbnVwJywgYXV0aFByb3ZpZGVyOiAnPHByb3ZpZGVyPicgfWA8L2xpPjxsaT5QYXNzd29yZCBsb2dpbjogYHsgYWN0aW9uOiAnbG9naW4nLCBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcgfWA8L2xpPjxsaT5BdXRoIHByb3ZpZGVyIGxvZ2luOiBmdW5jdGlvbiBub3QgaW52b2tlZDsgYXV0aCBwcm92aWRlciBsb2dpbiBieXBhc3NlcyBlbWFpbCB2ZXJpZmljYXRpb248L2xpPjwvdWw+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbDogPyhcbiAgICB8IGJvb2xlYW5cbiAgICB8IChFbWFpbFZlcmlmaWNhdGlvblJlcXVlc3QgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4pXG4gICk7XG4gIC8qIElmIHNldCB0byBgdHJ1ZWAgaXQgcHJldmVudHMgYSB1c2VyIGZyb20gc2lnbmluZyB1cCBpZiB0aGUgZW1haWwgaGFzIG5vdCB5ZXQgYmVlbiB2ZXJpZmllZCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkLiBJbiB0aGF0IGNhc2UgdGhlIHNlcnZlciByZXNwb25kcyB0byB0aGUgc2lnbi11cCB3aXRoIEhUVFAgc3RhdHVzIDQwMCBhbmQgYSBQYXJzZSBFcnJvciAyMDUgYEVNQUlMX05PVF9GT1VORGAuIElmIHNldCB0byBgZmFsc2VgIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgd2l0aCBIVFRQIHN0YXR1cyAyMDAsIGFuZCBjbGllbnQgU0RLcyByZXR1cm4gYW4gdW5hdXRoZW50aWNhdGVkIFBhcnNlIFVzZXIgd2l0aG91dCBzZXNzaW9uIHRva2VuLiBJbiB0aGF0IGNhc2Ugc3Vic2VxdWVudCByZXF1ZXN0cyBmYWlsIHVudGlsIHRoZSB1c2VyJ3MgZW1haWwgYWRkcmVzcyBpcyB2ZXJpZmllZC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcmV2ZW50U2lnbnVwV2l0aFVudmVyaWZpZWRFbWFpbDogP2Jvb2xlYW47XG4gIC8qIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuXG4gIDxicj48YnI+XG4gIEZvciBleGFtcGxlLCB0byBleHBpcmUgdGhlIHRva2VuIGFmdGVyIDIgaG91cnMsIHNldCBhIHZhbHVlIG9mIDcyMDAgc2Vjb25kcyAoPSA2MCBzZWNvbmRzICogNjAgbWludXRlcyAqIDIgaG91cnMpLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGB1bmRlZmluZWRgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gICovXG4gIGVtYWlsVmVyaWZ5VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIGEgZW1haWwgdmVyaWZpY2F0aW9uIHRva2VuIHNob3VsZCBiZSByZXVzZWQgaW4gY2FzZSBhbm90aGVyIHRva2VuIGlzIHJlcXVlc3RlZCBidXQgdGhlcmUgaXMgYSB0b2tlbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpLmUuIGhhcyBub3QgZXhwaXJlZC4gVGhpcyBhdm9pZHMgdGhlIG9mdGVuIG9ic2VydmVkIGlzc3VlIHRoYXQgYSB1c2VyIHJlcXVlc3RzIG11bHRpcGxlIGVtYWlscyBhbmQgZG9lcyBub3Qga25vdyB3aGljaCBsaW5rIGNvbnRhaW5zIGEgdmFsaWQgdG9rZW4gYmVjYXVzZSBlYWNoIG5ld2x5IGdlbmVyYXRlZCB0b2tlbiB3b3VsZCBpbnZhbGlkYXRlIHRoZSBwcmV2aW91cyB0b2tlbi5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIHJlcXVlc3QgdG8gdmVyaWZ5IHRoZSBlbWFpbCBzaG91bGQgcmV0dXJuIGEgc3VjY2VzcyByZXNwb25zZSBldmVuIGlmIHRoZSBwcm92aWRlZCBlbWFpbCBhZGRyZXNzIGRvZXMgbm90IGJlbG9uZyB0byBhIHZlcmlmaWFibGUgYWNjb3VudCwgZm9yIGV4YW1wbGUgYmVjYXVzZSBpdCBpcyB1bmtub3duIG9yIGFscmVhZHkgdmVyaWZpZWQsIG9yIGBmYWxzZWAgaWYgdGhlIHJlcXVlc3Qgc2hvdWxkIHJldHVybiBhbiBlcnJvciByZXNwb25zZSBpbiB0aG9zZSBjYXNlcy5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW1haWxWZXJpZnlTdWNjZXNzT25JbnZhbGlkRW1haWw6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYGZhbHNlYCB0byBwcmV2ZW50IHNlbmRpbmcgb2YgdmVyaWZpY2F0aW9uIGVtYWlsLiBTdXBwb3J0cyBhIGZ1bmN0aW9uIHdpdGggYSByZXR1cm4gdmFsdWUgb2YgYHRydWVgIG9yIGBmYWxzZWAgZm9yIGNvbmRpdGlvbmFsIGVtYWlsIHNlbmRpbmcuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHRydWVgLlxuICA8YnI+XG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHNlbmRVc2VyRW1haWxWZXJpZmljYXRpb246ID8oXG4gICAgfCBib29sZWFuXG4gICAgfCAoU2VuZEVtYWlsVmVyaWZpY2F0aW9uUmVxdWVzdCA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPilcbiAgKTtcbiAgLyogVGhlIGFjY291bnQgbG9ja291dCBwb2xpY3kgZm9yIGZhaWxlZCBsb2dpbiBhdHRlbXB0cy5cbiAgPGJyPjxicj5cbiAgTm90ZTogU2V0dGluZyBhIHVzZXIncyBBQ0wgdG8gYW4gZW1wdHkgb2JqZWN0IGB7fWAgdmlhIG1hc3RlciBrZXkgaXMgYSBzZXBhcmF0ZSBtZWNoYW5pc20gdGhhdCBvbmx5IHByZXZlbnRzIG5ldyBsb2dpbnM7IGl0IGRvZXMgbm90IGludmFsaWRhdGUgZXhpc3Rpbmcgc2Vzc2lvbiB0b2tlbnMuIFRvIGltbWVkaWF0ZWx5IHJldm9rZSBhIHVzZXIncyBhY2Nlc3MsIGRlc3Ryb3kgdGhlaXIgc2Vzc2lvbnMgdmlhIG1hc3RlciBrZXkgaW4gYWRkaXRpb24gdG8gc2V0dGluZyB0aGUgQUNMLiAqL1xuICBhY2NvdW50TG9ja291dDogP0FjY291bnRMb2Nrb3V0T3B0aW9ucztcbiAgLyogVGhlIHBhc3N3b3JkIHBvbGljeSBmb3IgZW5mb3JjaW5nIHBhc3N3b3JkIHJlbGF0ZWQgcnVsZXMuICovXG4gIHBhc3N3b3JkUG9saWN5OiA/UGFzc3dvcmRQb2xpY3lPcHRpb25zO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGNhY2hlICovXG4gIGNhY2hlQWRhcHRlcjogP0FkYXB0ZXI8Q2FjaGVBZGFwdGVyPjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIGVtYWlsIHNlbmRpbmcgKi9cbiAgZW1haWxBZGFwdGVyOiA/QWRhcHRlcjxNYWlsQWRhcHRlcj47XG4gIC8qIE9wdGlvbmFsLiBUaGUgcHVibGljIFVSTCB0byBQYXJzZSBTZXJ2ZXIuIFRoaXMgVVJMIHdpbGwgYmUgdXNlZCB0byByZWFjaCBQYXJzZSBTZXJ2ZXIgcHVibGljbHkgZm9yIGZlYXR1cmVzIGxpa2UgcGFzc3dvcmQgcmVzZXQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbiBsaW5rcy4gVGhlIG9wdGlvbiBjYW4gYmUgc2V0IHRvIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgYXN5bmNocm9ub3VzbHkgcmVzb2x2ZWQuIFRoZSByZXR1cm5lZCBVUkwgc3RyaW5nIG11c3Qgc3RhcnQgd2l0aCBgaHR0cDovL2Agb3IgYGh0dHBzOi8vYC5cbiAgOkVOVjogUEFSU0VfUFVCTElDX1NFUlZFUl9VUkwgKi9cbiAgcHVibGljU2VydmVyVVJMOiA/KHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpIHwgKCgpID0+IFByb21pc2U8c3RyaW5nPikpO1xuICAvKiBUaGUgb3B0aW9ucyBmb3IgcGFnZXMgc3VjaCBhcyBwYXNzd29yZCByZXNldCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uLlxuICA6REVGQVVMVDoge30gKi9cbiAgcGFnZXM6ID9QYWdlc09wdGlvbnM7XG4gIC8qIGN1c3RvbSBwYWdlcyBmb3IgcGFzc3dvcmQgdmFsaWRhdGlvbiBhbmQgcmVzZXRcbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGN1c3RvbVBhZ2VzOiA/Q3VzdG9tUGFnZXNPcHRpb25zO1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY29uZmlndXJhdGlvbiBvYmplY3QgKi9cbiAgbGl2ZVF1ZXJ5OiA/TGl2ZVF1ZXJ5T3B0aW9ucztcbiAgLyogU2Vzc2lvbiBkdXJhdGlvbiwgaW4gc2Vjb25kcywgZGVmYXVsdHMgdG8gMSB5ZWFyXG4gIDpERUZBVUxUOiAzMTUzNjAwMCAqL1xuICBzZXNzaW9uTGVuZ3RoOiA/bnVtYmVyO1xuICAvKiBXaGV0aGVyIFBhcnNlIFNlcnZlciBzaG91bGQgYXV0b21hdGljYWxseSBleHRlbmQgYSB2YWxpZCBzZXNzaW9uIGJ5IHRoZSBzZXNzaW9uTGVuZ3RoLiBJbiBvcmRlciB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBzZXNzaW9uIHVwZGF0ZXMgaW4gdGhlIGRhdGFiYXNlLCBhIHNlc3Npb24gd2lsbCBvbmx5IGJlIGV4dGVuZGVkIHdoZW4gYSByZXF1ZXN0IGlzIHJlY2VpdmVkIGFmdGVyIGF0IGxlYXN0IGhhbGYgb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbidzIGxpZmV0aW1lIGhhcyBwYXNzZWQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBleHRlbmRTZXNzaW9uT25Vc2U6ID9ib29sZWFuO1xuICAvKiBEZWZhdWx0IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gYDEwMGAuXG4gIDpERUZBVUxUOiAxMDAgKi9cbiAgZGVmYXVsdExpbWl0OiA/bnVtYmVyO1xuICAvKiBNYXggdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byB1bmxpbWl0ZWQgKi9cbiAgbWF4TGltaXQ6ID9udW1iZXI7XG4gIC8qIFNldHMgd2hldGhlciB3ZSBzaG91bGQgZXhwaXJlIHRoZSBpbmFjdGl2ZSBzZXNzaW9ucywgZGVmYXVsdHMgdG8gdHJ1ZS4gSWYgZmFsc2UsIGFsbCBuZXcgc2Vzc2lvbnMgYXJlIGNyZWF0ZWQgd2l0aCBubyBleHBpcmF0aW9uIGRhdGUuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGV4cGlyZUluYWN0aXZlU2Vzc2lvbnM6ID9ib29sZWFuO1xuICAvKiBXaGVuIGEgdXNlciBjaGFuZ2VzIHRoZWlyIHBhc3N3b3JkLCBlaXRoZXIgdGhyb3VnaCB0aGUgcmVzZXQgcGFzc3dvcmQgZW1haWwgb3Igd2hpbGUgbG9nZ2VkIGluLCBhbGwgc2Vzc2lvbnMgYXJlIHJldm9rZWQgaWYgdGhpcyBpcyB0cnVlLiBTZXQgdG8gZmFsc2UgaWYgeW91IGRvbid0IHdhbnQgdG8gcmV2b2tlIHNlc3Npb25zLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICByZXZva2VTZXNzaW9uT25QYXNzd29yZFJlc2V0OiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgVFRMIGZvciB0aGUgaW4gbWVtb3J5IGNhY2hlIChpbiBtcyksIGRlZmF1bHRzIHRvIDUwMDAgKDUgc2Vjb25kcylcbiAgOkRFRkFVTFQ6IDUwMDAgKi9cbiAgY2FjaGVUVEw6ID9udW1iZXI7XG4gIC8qIFNldHMgdGhlIG1heGltdW0gc2l6ZSBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSwgZGVmYXVsdHMgdG8gMTAwMDBcbiAgOkRFRkFVTFQ6IDEwMDAwICovXG4gIGNhY2hlTWF4U2l6ZTogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIHNhbWUgTm9kZS5qcyBlbnZpcm9ubWVudCBhcyBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGJlIHJvdXRlZCB0byBQYXJzZSBTZXJ2ZXIgZGlyZWN0bHkgaW5zdGVhZCBvZiB2aWEgdGhlIEhUVFAgaW50ZXJmYWNlLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDxicj48YnI+XG4gIElmIHNldCB0byBgZmFsc2VgIHRoZW4gUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIGFyZSBleGVjdXRlZCBhcyBIVFRQIHJlcXVlc3RzIHNlbnQgdG8gUGFyc2UgU2VydmVyIHZpYSB0aGUgYHNlcnZlclVSTGAuIEZvciBleGFtcGxlLCBhIGBQYXJzZS5RdWVyeWAgaW4gQ2xvdWQgQ29kZSBpcyBjYWxsaW5nIFBhcnNlIFNlcnZlciB2aWEgYSBIVFRQIHJlcXVlc3QuIFRoZSBzZXJ2ZXIgaXMgZXNzZW50aWFsbHkgbWFraW5nIGEgSFRUUCByZXF1ZXN0IHRvIGl0c2VsZiwgdW5uZWNlc3NhcmlseSB1c2luZyBuZXR3b3JrIHJlc291cmNlcyBzdWNoIGFzIG5ldHdvcmsgcG9ydHMuXG4gIDxicj48YnI+XG4gIOKaoO+4jyBJbiBlbnZpcm9ubWVudHMgd2hlcmUgbXVsdGlwbGUgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBydW4gYmVoaW5kIGEgbG9hZCBiYWxhbmNlciBhbmQgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBjdXJyZW50IE5vZGUuanMgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHJvdXRlZCB2aWEgdGhlIGxvYWQgYmFsYW5jZXIgYW5kIGRpc3RyaWJ1dGVkIGFzIEhUVFAgcmVxdWVzdHMgYW1vbmcgYWxsIGluc3RhbmNlcyB2aWEgdGhlIGBzZXJ2ZXJVUkxgLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZGlyZWN0QWNjZXNzOiA/Ym9vbGVhbjtcbiAgLyogRW5hYmxlcyB0aGUgZGVmYXVsdCBleHByZXNzIGVycm9yIGhhbmRsZXIgZm9yIGFsbCBlcnJvcnNcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUV4cHJlc3NFcnJvckhhbmRsZXI6ID9ib29sZWFuO1xuICAvKiBEZXByZWNhdGVkLiBFbmFibGVzIHRoZSBsZWdhY3kgcHJvZHVjdCBwdXJjaGFzZSBBUEkgaW5jbHVkaW5nIHRoZSBgX1Byb2R1Y3RgIGNsYXNzIGFuZCB0aGUgYC92YWxpZGF0ZV9wdXJjaGFzZWAgZW5kcG9pbnQuIFRoaXMgaXMgYW4gdW5kb2N1bWVudGVkLCB1bm1haW50YWluZWQgbGVnYWN5IGZlYXR1cmUgaW5oZXJpdGVkIGZyb20gdGhlIG9yaWdpbmFsIFBhcnNlIHBsYXRmb3JtIHRoYXQgbWF5IG5vdCBmdW5jdGlvbiBhcyBleHBlY3RlZC4gV2Ugc3Ryb25nbHkgYWR2aXNlIGFnYWluc3QgdXNpbmcgaXQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfRU5BQkxFX1BST0RVQ1RfUFVSQ0hBU0VfTEVHQUNZX0FQSVxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVQcm9kdWN0UHVyY2hhc2VMZWdhY3lBcGk6ID9ib29sZWFuO1xuICAvKiBTZXRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBnZW5lcmF0ZWQgb2JqZWN0IGlkJ3MsIGRlZmF1bHQgMTBcbiAgOkRFRkFVTFQ6IDEwICovXG4gIG9iamVjdElkU2l6ZTogP251bWJlcjtcbiAgLyogVGhlIHBvcnQgdG8gcnVuIHRoZSBQYXJzZVNlcnZlciwgZGVmYXVsdHMgdG8gMTMzNy5cbiAgOkVOVjogUE9SVFxuICA6REVGQVVMVDogMTMzNyAqL1xuICBwb3J0OiA/bnVtYmVyO1xuICAvKiBUaGUgaG9zdCB0byBzZXJ2ZSBQYXJzZVNlcnZlciBvbiwgZGVmYXVsdHMgdG8gMC4wLjAuMFxuICA6REVGQVVMVDogMC4wLjAuMCAqL1xuICBob3N0OiA/c3RyaW5nO1xuICAvKiBNb3VudCBwYXRoIGZvciB0aGUgc2VydmVyLCBkZWZhdWx0cyB0byAvcGFyc2VcbiAgOkRFRkFVTFQ6IC9wYXJzZSAqL1xuICBtb3VudFBhdGg6ID9zdHJpbmc7XG4gIC8qIFJ1biB3aXRoIGNsdXN0ZXIsIG9wdGlvbmFsbHkgc2V0IHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGRlZmF1bHQgdG8gb3MuY3B1cygpLmxlbmd0aCAqL1xuICBjbHVzdGVyOiA/TnVtYmVyT3JCb29sZWFuO1xuICAvKiBtaWRkbGV3YXJlIGZvciBleHByZXNzIHNlcnZlciwgY2FuIGJlIHN0cmluZyBvciBmdW5jdGlvbiAqL1xuICBtaWRkbGV3YXJlOiA/KCgoKSA9PiB2b2lkKSB8IHN0cmluZyk7XG4gIC8qIFRoZSB0cnVzdCBwcm94eSBzZXR0aW5ncy4gSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IHNldHVwIG9mIHRoZSByZXZlcnNlIHByb3h5LCBzaW5jZSB0aGlzIHNldHRpbmcgd2lsbCB0cnVzdCB2YWx1ZXMgcHJvdmlkZWQgaW4gdGhlIFBhcnNlIFNlcnZlciBBUEkgcmVxdWVzdC4gU2VlIHRoZSA8YSBocmVmPVwiaHR0cHM6Ly9leHByZXNzanMuY29tL2VuL2d1aWRlL2JlaGluZC1wcm94aWVzLmh0bWxcIj5leHByZXNzIHRydXN0IHByb3h5IHNldHRpbmdzPC9hPiBkb2N1bWVudGF0aW9uLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgdHJ1c3RQcm94eTogP2FueTtcbiAgLyogU3RhcnRzIHRoZSBsaXZlUXVlcnkgc2VydmVyICovXG4gIHN0YXJ0TGl2ZVF1ZXJ5U2VydmVyOiA/Ym9vbGVhbjtcbiAgLyogTGl2ZSBxdWVyeSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zICh3aWxsIHN0YXJ0IHRoZSBsaXZlUXVlcnkgc2VydmVyKSAqL1xuICBsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zOiA/TGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucztcbiAgLyogT3B0aW9ucyBmb3IgcmVxdWVzdCBpZGVtcG90ZW5jeSB0byBkZWR1cGxpY2F0ZSBpZGVudGljYWwgcmVxdWVzdHMgdGhhdCBtYXkgYmUgY2F1c2VkIGJ5IG5ldHdvcmsgaXNzdWVzLiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VYUEVSSU1FTlRBTF9JREVNUE9URU5DWV9PUFRJT05TXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBpZGVtcG90ZW5jeU9wdGlvbnM6ID9JZGVtcG90ZW5jeU9wdGlvbnM7XG4gIC8qIE9wdGlvbnMgZm9yIGZpbGUgdXBsb2Fkc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfRklMRV9VUExPQURfT1BUSU9OU1xuICA6REVGQVVMVDoge30gKi9cbiAgZmlsZVVwbG9hZDogP0ZpbGVVcGxvYWRPcHRpb25zO1xuICAvKiBPcHRpb25zIGZvciBmaWxlIGRvd25sb2Fkc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfRklMRV9ET1dOTE9BRF9PUFRJT05TXG4gIDpERUZBVUxUOiB7fSAqL1xuICBmaWxlRG93bmxvYWQ6ID9GaWxlRG93bmxvYWRPcHRpb25zO1xuICAvKiBGdWxsIHBhdGggdG8geW91ciBHcmFwaFFMIGN1c3RvbSBzY2hlbWEuZ3JhcGhxbCBmaWxlICovXG4gIGdyYXBoUUxTY2hlbWE6ID9zdHJpbmc7XG4gIC8qIE1vdW50cyB0aGUgR3JhcGhRTCBlbmRwb2ludFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfTU9VTlRfR1JBUEhRTFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgbW91bnRHcmFwaFFMOiA/Ym9vbGVhbjtcbiAgLyogVGhlIG1vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIGVuZHBvaW50PGJyPjxicj7imqDvuI8gRmlsZSB1cGxvYWQgaW5zaWRlIHRoZSBHcmFwaFFMIG11dGF0aW9uIHN5c3RlbSByZXF1aXJlcyBQYXJzZSBTZXJ2ZXIgdG8gYmUgYWJsZSB0byBjYWxsIGl0c2VsZiBieSBtYWtpbmcgcmVxdWVzdHMgdG8gdGhlIFVSTCBzZXQgaW4gYHNlcnZlclVSTGAuPGJyPjxicj5EZWZhdWx0cyBpcyBgL2dyYXBocWxgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfR1JBUEhRTF9QQVRIXG4gIDpERUZBVUxUOiAvZ3JhcGhxbCAqL1xuICBncmFwaFFMUGF0aDogP3N0cmluZztcbiAgLyogRW5hYmxlIHB1YmxpYyBpbnRyb3NwZWN0aW9uIGZvciB0aGUgR3JhcGhRTCBlbmRwb2ludCwgZGVmYXVsdHMgdG8gZmFsc2VcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0dSQVBIUUxfUFVCTElDX0lOVFJPU1BFQ1RJT05cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGdyYXBoUUxQdWJsaWNJbnRyb3NwZWN0aW9uOiA/Ym9vbGVhbjtcbiAgLyogRGVwcmVjYXRlZC4gTW91bnRzIHRoZSBHcmFwaFFMIFBsYXlncm91bmQgd2hpY2ggaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFRoZSBwbGF5Z3JvdW5kIGV4cG9zZXMgdGhlIG1hc3RlciBrZXkgaW4gdGhlIGJyb3dzZXIuIFVzZSBQYXJzZSBEYXNoYm9hcmQgYXMgR3JhcGhRTCBJREUgb3IgY29uZmlndXJlIGEgdGhpcmQtcGFydHkgR3JhcGhRTCBjbGllbnQgd2l0aCBjdXN0b20gcmVxdWVzdCBoZWFkZXJzLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfTU9VTlRfUExBWUdST1VORFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgbW91bnRQbGF5Z3JvdW5kOiA/Ym9vbGVhbjtcbiAgLyogRGVwcmVjYXRlZC4gTW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgUGxheWdyb3VuZC4gVGhlIHBsYXlncm91bmQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIElmIHVuc2V0LCBQbGF5Z3JvdW5kIG1vdW50cyBhdCBgL3BsYXlncm91bmRgIHdoZW4gYG1vdW50UGxheWdyb3VuZGAgaXMgZW5hYmxlZC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1BMQVlHUk9VTkRfUEFUSCAqL1xuICBwbGF5Z3JvdW5kUGF0aDogP3N0cmluZztcbiAgLyogRGVmaW5lZCBzY2hlbWFcbiAgOkVOVjogUEFSU0VfU0VSVkVSX1NDSEVNQVxuICAqL1xuICBzY2hlbWE6ID9TY2hlbWFPcHRpb25zO1xuICAvKiBDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgY2xvc2VkICovXG4gIHNlcnZlckNsb3NlQ29tcGxldGU6ID8oKSA9PiB2b2lkO1xuICAvKiBPcHRpb25zIHRvIGxpbWl0IHRoZSBjb21wbGV4aXR5IG9mIHJlcXVlc3RzIHRvIHByZXZlbnQgZGVuaWFsLW9mLXNlcnZpY2UgYXR0YWNrcy4gTGltaXRzIGFyZSBlbmZvcmNlZCBmb3IgYWxsIHJlcXVlc3RzIGV4Y2VwdCB0aG9zZSB1c2luZyB0aGUgbWFzdGVyIG9yIG1haW50ZW5hbmNlIGtleS4gRWFjaCBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGAtMWAgdG8gZGlzYWJsZSB0aGF0IHNwZWNpZmljIGxpbWl0LlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUkVRVUVTVF9DT01QTEVYSVRZXG4gIDpERUZBVUxUOiB7fSAqL1xuICByZXF1ZXN0Q29tcGxleGl0eTogP1JlcXVlc3RDb21wbGV4aXR5T3B0aW9ucztcbiAgLyogT3B0aW9ucyBjb250cm9sbGluZyBob3cgUGFyc2UgU2VydmVyIGRlZHVwbGljYXRlcyBgX0luc3RhbGxhdGlvbmAgcmVjb3JkcyB0aGF0IHNoYXJlIHRoZSBzYW1lIGBkZXZpY2VUb2tlbmAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9JTlNUQUxMQVRJT05cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGluc3RhbGxhdGlvbjogP0luc3RhbGxhdGlvbk9wdGlvbnM7XG4gIC8qIFF1ZXJ5LXJlbGF0ZWQgc2VydmVyIGRlZmF1bHRzLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUVVFUllcbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHF1ZXJ5OiA/UXVlcnlTZXJ2ZXJPcHRpb25zO1xuICAvKiBUaGUgc2VjdXJpdHkgb3B0aW9ucyB0byBpZGVudGlmeSBhbmQgcmVwb3J0IHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuXG4gIDpERUZBVUxUOiB7fSAqL1xuICBzZWN1cml0eTogP1NlY3VyaXR5T3B0aW9ucztcbiAgLyogU2V0IHRvIHRydWUgaWYgbmV3IHVzZXJzIHNob3VsZCBiZSBjcmVhdGVkIHdpdGhvdXQgcHVibGljIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5mb3JjZVByaXZhdGVVc2VyczogP2Jvb2xlYW47XG4gIC8qIERlcHJlY2F0ZWQuIFRoaXMgb3B0aW9uIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBBdXRoIHByb3ZpZGVycyBhcmUgYWx3YXlzIHZhbGlkYXRlZCBvbiBsb2dpbi4gT24gdXBkYXRlLCBpZiB0aGlzIGlzIHNldCB0byBgdHJ1ZWAsIGF1dGggcHJvdmlkZXJzIGFyZSBvbmx5IHJlLXZhbGlkYXRlZCB3aGVuIHRoZSBhdXRoIGRhdGEgaGFzIGNoYW5nZWQuIElmIHRoaXMgaXMgc2V0IHRvIGBmYWxzZWAsIGF1dGggcHJvdmlkZXJzIGFyZSByZS12YWxpZGF0ZWQgb24gZXZlcnkgdXBkYXRlLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWxsb3dFeHBpcmVkQXV0aERhdGFUb2tlbjogP2Jvb2xlYW47XG4gIC8qIEFuIGFycmF5IG9mIGtleXMgYW5kIHZhbHVlcyB0aGF0IGFyZSBwcm9oaWJpdGVkIGluIGRhdGFiYXNlIHJlYWQgYW5kIHdyaXRlIHJlcXVlc3RzIHRvIHByZXZlbnQgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBvbmx5IGEga2V5IChge1wia2V5XCI6XCIuLi5cIn1gKSwgb25seSBhIHZhbHVlIChge1widmFsdWVcIjpcIi4uLlwifWApIG9yIGEga2V5LXZhbHVlIHBhaXIgKGB7XCJrZXlcIjpcIi4uLlwiLFwidmFsdWVcIjpcIi4uLlwifWApLiBUaGUgc3BlY2lmaWNhdGlvbiBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGBib29sZWFuYCwgYG51bWVyaWNgIG9yIGBzdHJpbmdgLCB3aGVyZSBgc3RyaW5nYCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgcmVnZXggbm90YXRpb24uIFJlcXVlc3QgZGF0YSBpcyBkZWVwLXNjYW5uZWQgZm9yIG1hdGNoaW5nIGRlZmluaXRpb25zIHRvIGRldGVjdCBhbHNvIGFueSBuZXN0ZWQgb2NjdXJyZW5jZXMuIERlZmF1bHRzIGFyZSBwYXR0ZXJucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBpbiBtYWxpY2lvdXMgcmVxdWVzdHMuIFNldHRpbmcgdGhpcyBvcHRpb24gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXR0ZXJucy5cbiAgOkRFRkFVTFQ6IFt7XCJrZXlcIjpcIl9ic29udHlwZVwiLFwidmFsdWVcIjpcIkNvZGVcIn0se1wia2V5XCI6XCJjb25zdHJ1Y3RvclwifSx7XCJrZXlcIjpcIl9fcHJvdG9fX1wifV0gKi9cbiAgcmVxdWVzdEtleXdvcmREZW55bGlzdDogPyhSZXF1ZXN0S2V5d29yZERlbnlsaXN0W10pO1xuICAvKiBPcHRpb25zIHRvIGxpbWl0IHJlcGVhdGVkIHJlcXVlc3RzIHRvIFBhcnNlIFNlcnZlciBBUElzLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHByb3RlY3Qgc2Vuc2l0aXZlIGVuZHBvaW50cyBzdWNoIGFzIGAvcmVxdWVzdFBhc3N3b3JkUmVzZXRgIGZyb20gYnJ1dGUtZm9yY2UgYXR0YWNrcyBvciBQYXJzZSBTZXJ2ZXIgYXMgYSB3aG9sZSBmcm9tIGRlbmlhbC1vZi1zZXJ2aWNlIChEb1MpIGF0dGFja3MuPGJyPjxicj7ihLnvuI8gTWluZCB0aGUgZm9sbG93aW5nIGxpbWl0YXRpb25zOjxicj4tIHJhdGUgbGltaXRzIGFwcGxpZWQgcGVyIElQIGFkZHJlc3M7IHRoaXMgbGltaXRzIHByb3RlY3Rpb24gYWdhaW5zdCBkaXN0cmlidXRlZCBkZW5pYWwtb2Ytc2VydmljZSAoRERvUykgYXR0YWNrcyB3aGVyZSBtYW55IHJlcXVlc3RzIGFyZSBjb21pbmcgZnJvbSB2YXJpb3VzIElQIGFkZHJlc3Nlczxicj4tIGlmIG11bHRpcGxlIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgYXJlIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIgb3IgcmFuIGluIGEgY2x1c3RlciwgZWFjaCBpbnN0YW5jZSB3aWxsIGNhbGN1bGF0ZSBpdCdzIG93biByZXF1ZXN0IHJhdGVzLCBpbmRlcGVuZGVudCBmcm9tIG90aGVyIGluc3RhbmNlczsgdGhpcyBsaW1pdHMgdGhlIGFwcGxpY2FiaWxpdHkgb2YgdGhpcyBmZWF0dXJlIHdoZW4gdXNpbmcgYSBsb2FkIGJhbGFuY2VyIGFuZCBhbm90aGVyIHJhdGUgbGltaXRpbmcgc29sdXRpb24gdGhhdCB0YWtlcyByZXF1ZXN0cyBhY3Jvc3MgYWxsIGluc3RhbmNlcyBpbnRvIGFjY291bnQgbWF5IGJlIG1vcmUgc3VpdGFibGU8YnI+LSB0aGlzIGZlYXR1cmUgcHJvdmlkZXMgYmFzaWMgcHJvdGVjdGlvbiBhZ2FpbnN0IGRlbmlhbC1vZi1zZXJ2aWNlIGF0dGFja3MsIGJ1dCBhIG1vcmUgc29waGlzdGljYXRlZCBzb2x1dGlvbiB3b3JrcyBlYXJsaWVyIGluIHRoZSByZXF1ZXN0IGZsb3cgYW5kIHByZXZlbnRzIGEgbWFsaWNpb3VzIHJlcXVlc3RzIHRvIGV2ZW4gcmVhY2ggYSBzZXJ2ZXIgaW5zdGFuY2U7IGl0J3MgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIGltcGxlbWVudCBhIHNvbHV0aW9uIGFjY29yZGluZyB0byBhcmNoaXRlY3R1cmUgYW5kIHVzZSBjYXNlLjxicj4tIHJhdGUgbGltaXRzIGFyZSBtYXRjaGVkIGFnYWluc3QgdGhlIFJFU1QgQVBJIFVSTCBwYXRoIChgcmVxdWVzdFBhdGhgKSBhbmQgdGhlcmVmb3JlIGFwcGx5IHRvIFJFU1QgQVBJIHJvdXRlcyBvbmx5OyB0aGV5IGRvIG5vdCBhcHBseSB0byBHcmFwaFFMIG9wZXJhdGlvbnMsIHdoaWNoIGFyZSBhbGwgc2VydmVkIHVuZGVyIHRoZSBzaW5nbGUgR3JhcGhRTCBlbmRwb2ludCBwYXRoIChgZ3JhcGhRTFBhdGhgLCBkZWZhdWx0IGAvZ3JhcGhxbGApIGFuZCBhcmUgaWRlbnRpZmllZCBieSB0aGUgcmVxdWVzdCBwYXlsb2FkIHJhdGhlciB0aGFuIHRoZSBVUkwuIFRvIHJhdGUgbGltaXQgR3JhcGhRTCwgZWl0aGVyIHNldCBhIGByZXF1ZXN0UGF0aGAgZm9yIHRoZSBHcmFwaFFMIGVuZHBvaW50IHBhdGggdG8gdGhyb3R0bGUgdGhlIGVudGlyZSBHcmFwaFFMIEFQSSwgb3IgdXNlIGEgR3JhcGhRTC1hd2FyZSByYXRlIGxpbWl0aW5nIHNvbHV0aW9uIChmb3IgZXhhbXBsZSBhIHNjaGVtYS1kaXJlY3RpdmUtYmFzZWQgcmF0ZSBsaW1pdGVyKSBmb3IgcGVyLW9wZXJhdGlvbiBsaW1pdHMuXG4gIDpERUZBVUxUOiBbXSAqL1xuICByYXRlTGltaXQ6ID8oUmF0ZUxpbWl0T3B0aW9uc1tdKTtcbiAgLyogT3B0aW9ucyB0byBjdXN0b21pemUgdGhlIHJlcXVlc3QgY29udGV4dCB1c2luZyBpbnZlcnNpb24gb2YgY29udHJvbC9kZXBlbmRlbmN5IGluamVjdGlvbi4qL1xuICByZXF1ZXN0Q29udGV4dE1pZGRsZXdhcmU6ID8ocmVxOiBhbnksIHJlczogYW55LCBuZXh0OiBhbnkpID0+IHZvaWQ7XG4gIC8qIElmIHNldCB0byBgdHJ1ZWAsIGVycm9yIGRldGFpbHMgYXJlIHJlbW92ZWQgZnJvbSBlcnJvciBtZXNzYWdlcyBpbiByZXNwb25zZXMgdG8gY2xpZW50IHJlcXVlc3RzLCBhbmQgaW5zdGVhZCBhIGdlbmVyaWMgZXJyb3IgbWVzc2FnZSBpcyBzZW50LiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlU2FuaXRpemVkRXJyb3JSZXNwb25zZTogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0T3B0aW9ucyB7XG4gIC8qIFRoZSBwYXRoIG9mIHRoZSBBUEkgcm91dGUgdG8gYmUgcmF0ZSBsaW1pdGVkLiBSb3V0ZSBwYXRocywgaW4gY29tYmluYXRpb24gd2l0aCBhIHJlcXVlc3QgbWV0aG9kLCBkZWZpbmUgdGhlIGVuZHBvaW50cyBhdCB3aGljaCByZXF1ZXN0cyBjYW4gYmUgbWFkZS4gUm91dGUgcGF0aHMgY2FuIGJlIHN0cmluZ3Mgb3Igc3RyaW5nIHBhdHRlcm5zIGZvbGxvd2luZyA8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL3BpbGxhcmpzL3BhdGgtdG8tcmVnZXhwXCI+cGF0aC10by1yZWdleHAgdjg8L2E+IHN5bnRheC4gKi9cbiAgcmVxdWVzdFBhdGg6IHN0cmluZztcbiAgLyogVGhlIHdpbmRvdyBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB3aXRoaW4gd2hpY2ggdGhlIG51bWJlciBvZiByZXF1ZXN0cyBzZXQgaW4gYHJlcXVlc3RDb3VudGAgY2FuIGJlIG1hZGUgYmVmb3JlIHRoZSByYXRlIGxpbWl0IGlzIGFwcGxpZWQuICovXG4gIHJlcXVlc3RUaW1lV2luZG93OiA/bnVtYmVyO1xuICAvKiBUaGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRoYXQgY2FuIGJlIG1hZGUgcGVyIElQIGFkZHJlc3Mgd2l0aGluIHRoZSB0aW1lIHdpbmRvdyBzZXQgaW4gYHJlcXVlc3RUaW1lV2luZG93YCBiZWZvcmUgdGhlIHJhdGUgbGltaXQgaXMgYXBwbGllZC4gRm9yIGJhdGNoIHJlcXVlc3RzLCB0aGlzIGFsc28gbGltaXRzIHRoZSBudW1iZXIgb2Ygc3ViLXJlcXVlc3RzIGluIGEgc2luZ2xlIGJhdGNoIHRoYXQgdGFyZ2V0IHRoaXMgcGF0aDsgaG93ZXZlciwgcmVxdWVzdHMgYWxyZWFkeSBjb25zdW1lZCBpbiB0aGUgY3VycmVudCB0aW1lIHdpbmRvdyBhcmUgbm90IGNvdW50ZWQgYWdhaW5zdCB0aGUgYmF0Y2gsIHNvIHRoZSBlZmZlY3RpdmUgbGltaXQgbWF5IGJlIGhpZ2hlciB3aGVuIGNvbWJpbmluZyBpbmRpdmlkdWFsIGFuZCBiYXRjaCByZXF1ZXN0cy4gTm90ZSB0aGF0IHRoaXMgaXMgYSBiYXNpYyBzZXJ2ZXItbGV2ZWwgcmF0ZSBsaW1pdDsgZm9yIGNvbXByZWhlbnNpdmUgcHJvdGVjdGlvbiwgdXNlIGEgcmV2ZXJzZSBwcm94eSBvciBXQUYgZm9yIHJhdGUgbGltaXRpbmcuICovXG4gIHJlcXVlc3RDb3VudDogP251bWJlcjtcbiAgLyogVGhlIGVycm9yIG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgaW4gdGhlIGJvZHkgb2YgdGhlIEhUVFAgNDI5IHJlc3BvbnNlIHdoZW4gdGhlIHJhdGUgbGltaXQgaXMgaGl0LiBEZWZhdWx0IGlzIGBUb28gbWFueSByZXF1ZXN0cy5gLlxuICA6REVGQVVMVDogVG9vIG1hbnkgcmVxdWVzdHMuICovXG4gIGVycm9yUmVzcG9uc2VNZXNzYWdlOiA/c3RyaW5nO1xuICAvKiBPcHRpb25hbCwgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2RzIHRvIHdoaWNoIHRoZSByYXRlIGxpbWl0IHNob3VsZCBiZSBhcHBsaWVkLCBkZWZhdWx0IGlzIGFsbCBtZXRob2RzLiBUaGUgbWV0aG9kIGlzIG1hdGNoZWQgYWZ0ZXIgYW55IGBfbWV0aG9kYCBib2R5IG92ZXJyaWRlIGhhcyBiZWVuIHJlc29sdmVkLCBpLmUuIGl0IGlzIHRoZSBtZXRob2QgdXNlZCB0byByb3V0ZSB0aGUgcmVxdWVzdC4gTm90ZSB0aGF0IHNvbWUgZW5kcG9pbnRzIGFyZSByZWFjaGFibGUgdmlhIG1vcmUgdGhhbiBvbmUgSFRUUCBtZXRob2QgKGZvciBleGFtcGxlIGAvbG9naW5gIGFuZCBgL3ZlcmlmeVBhc3N3b3JkYCBhcmUgYXZhaWxhYmxlIHZpYSBib3RoIGBHRVRgIGFuZCBgUE9TVGApOyB0byByYXRlIGxpbWl0IHN1Y2ggYW4gZW5kcG9pbnQgcmVsaWFibHksIGluY2x1ZGUgYWxsIHJlbGV2YW50IG1ldGhvZHMgKGUuZy4gYFsnR0VUJywgJ1BPU1QnXWApIG9yIG9taXQgdGhpcyBvcHRpb24gdG8gYXBwbHkgdGhlIGxpbWl0IHRvIGFsbCBtZXRob2RzLiAqL1xuICByZXF1ZXN0TWV0aG9kczogPyhzdHJpbmdbXSk7XG4gIC8qIE9wdGlvbmFsLCBpZiBgdHJ1ZWAgdGhlIHJhdGUgbGltaXQgd2lsbCBhbHNvIGFwcGx5IHRvIHJlcXVlc3RzIHVzaW5nIHRoZSBgbWFzdGVyS2V5YCwgZGVmYXVsdCBpcyBgZmFsc2VgLiBOb3RlIHRoYXQgYSBwdWJsaWMgQ2xvdWQgQ29kZSBmdW5jdGlvbiB0aGF0IHRyaWdnZXJzIGludGVybmFsIHJlcXVlc3RzIHVzaW5nIHRoZSBgbWFzdGVyS2V5YCBtYXkgY2lyY3VtdmVudCByYXRlIGxpbWl0aW5nIGFuZCBiZSB2dWxuZXJhYmxlIHRvIGF0dGFja3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBpbmNsdWRlTWFzdGVyS2V5OiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwsIGlmIGB0cnVlYCB0aGUgcmF0ZSBsaW1pdCB3aWxsIGFsc28gYXBwbHkgdG8gcmVxdWVzdHMgdGhhdCBhcmUgbWFkZSBpbiBieSBDbG91ZCBDb2RlLCBkZWZhdWx0IGlzIGBmYWxzZWAuIE5vdGUgdGhhdCBhIHB1YmxpYyBDbG91ZCBDb2RlIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgaW50ZXJuYWwgcmVxdWVzdHMgbWF5IGNpcmN1bXZlbnQgcmF0ZSBsaW1pdGluZyBhbmQgYmUgdnVsbmVyYWJsZSB0byBhdHRhY2tzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgaW5jbHVkZUludGVybmFsUmVxdWVzdHM6ID9ib29sZWFuO1xuICAvKiBPcHRpb25hbCwgdGhlIFVSTCBvZiB0aGUgUmVkaXMgc2VydmVyIHRvIHN0b3JlIHJhdGUgbGltaXQgZGF0YS4gVGhpcyBhbGxvd3MgdG8gcmF0ZSBsaW1pdCByZXF1ZXN0cyBmb3IgbXVsdGlwbGUgc2VydmVycyBieSBjYWxjdWxhdGluZyB0aGUgc3VtIG9mIGFsbCByZXF1ZXN0cyBhY3Jvc3MgYWxsIHNlcnZlcnMuIFRoaXMgaXMgdXNlZnVsIGlmIG11bHRpcGxlIHNlcnZlcnMgYXJlIHByb2Nlc3NpbmcgcmVxdWVzdHMgYmVoaW5kIGEgbG9hZCBiYWxhbmNlci4gRm9yIGV4YW1wbGUsIHRoZSBsaW1pdCBvZiAxMCByZXF1ZXN0cyBpcyByZWFjaGVkIGlmIGVhY2ggb2YgMiBzZXJ2ZXJzIHByb2Nlc3NlZCA1IHJlcXVlc3RzLlxuICAgKi9cbiAgcmVkaXNVcmw6ID9zdHJpbmc7XG4gIC8qIFRoZSB0eXBlIG9mIHJhdGUgbGltaXQgdG8gYXBwbHkuIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgPHVsPlxuICA8bGk+YGdsb2JhbGA6IHJhdGUgbGltaXQgYmFzZWQgb24gdGhlIG51bWJlciBvZiByZXF1ZXN0cyBtYWRlIGJ5IGFsbCB1c2VyczwvbGk+XG4gIDxsaT5gaXBgOiByYXRlIGxpbWl0IGJhc2VkIG9uIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSByZXF1ZXN0PC9saT5cbiAgPGxpPmB1c2VyYDogcmF0ZSBsaW1pdCBiYXNlZCBvbiB0aGUgdXNlciBJRCBvZiB0aGUgcmVxdWVzdDwvbGk+XG4gIDxsaT5gc2Vzc2lvbmA6IHJhdGUgbGltaXQgYmFzZWQgb24gdGhlIHNlc3Npb24gdG9rZW4gb2YgdGhlIHJlcXVlc3Q8L2xpPlxuICA8L3VsPlxuICBEZWZhdWx0IGlzIGBpcGAuXG4gIDpERUZBVUxUOiBpcCAqL1xuICB6b25lOiA/c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RDb21wbGV4aXR5T3B0aW9ucyB7XG4gIC8qIFdoZXRoZXIgdG8gYWxsb3cgdGhlIGAkcmVnZXhgIHF1ZXJ5IG9wZXJhdG9yLiBTZXQgdG8gYGZhbHNlYCB0byByZWplY3QgYCRyZWdleGAgaW4gcXVlcmllcyBmb3Igbm9uLW1hc3Rlci1rZXkgdXNlcnMuIERlZmF1bHQgaXMgYHRydWVgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUkVRVUVTVF9DT01QTEVYSVRZX0FMTE9XX1JFR0VYXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGFsbG93UmVnZXg6ID9ib29sZWFuO1xuICAvKiBNYXhpbXVtIGRlcHRoIG9mIGluY2x1ZGUgcG9pbnRlciBjaGFpbnMgKGUuZy4gYGEuYi5jYCA9IGRlcHRoIDMpLiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBpbmNsdWRlRGVwdGg6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gbnVtYmVyIG9mIGluY2x1ZGUgcGF0aHMgaW4gYSBzaW5nbGUgcXVlcnkuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkRFRkFVTFQ6IC0xICovXG4gIGluY2x1ZGVDb3VudDogP251bWJlcjtcbiAgLyogTWF4aW11bSBuZXN0aW5nIGRlcHRoIG9mIGAkaW5RdWVyeWAsIGAkbm90SW5RdWVyeWAsIGAkc2VsZWN0YCwgYCRkb250U2VsZWN0YCBzdWJxdWVyaWVzLiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBzdWJxdWVyeURlcHRoOiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzIHJldHVybmVkIGJ5IGEgYCRpblF1ZXJ5YCwgYCRub3RJblF1ZXJ5YCwgYCRzZWxlY3RgLCBgJGRvbnRTZWxlY3RgIHN1YnF1ZXJ5LiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBzdWJxdWVyeUxpbWl0OiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG5lc3RpbmcgZGVwdGggb2YgYCRvcmAsIGAkYW5kYCwgYCRub3JgIHF1ZXJ5IG9wZXJhdG9ycy4gU2V0IHRvIGAtMWAgdG8gZGlzYWJsZS4gRGVmYXVsdCBpcyBgLTFgLlxuICA6REVGQVVMVDogLTEgKi9cbiAgcXVlcnlEZXB0aDogP251bWJlcjtcbiAgLyogTWF4aW11bSBkZXB0aCBvZiBHcmFwaFFMIGZpZWxkIHNlbGVjdGlvbnMuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1JFUVVFU1RfQ09NUExFWElUWV9HUkFQSFFMX0RFUFRIXG4gIDpERUZBVUxUOiAtMSAqL1xuICBncmFwaFFMRGVwdGg6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gbnVtYmVyIG9mIGZpZWxkIHNlbGVjdGlvbnMgaW4gYSBHcmFwaFFMIHF1ZXJ5LiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9SRVFVRVNUX0NPTVBMRVhJVFlfR1JBUEhRTF9GSUVMRFNcbiAgOkRFRkFVTFQ6IC0xICovXG4gIGdyYXBoUUxGaWVsZHM6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gbnVtYmVyIG9mIHN1Yi1yZXF1ZXN0cyBpbiBhIHNpbmdsZSBiYXRjaCByZXF1ZXN0LiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBiYXRjaFJlcXVlc3RMaW1pdDogP251bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YWxsYXRpb25PcHRpb25zIHtcbiAgLyogV2hldGhlciB0aGUgYF9JbnN0YWxsYXRpb25gIGRlZHVwbGljYXRpb24gb3BlcmF0aW9uIGVuZm9yY2VzIHRoZSBjYWxsZXIncyBhdXRoIGNvbnRleHQgKGFuZCB0aGUgcmVzdWx0aW5nIEFDTCBhbmQgQ0xQKS4gV2hlbiBgdHJ1ZWAsIHRoZSBkZWR1cCBgZGVzdHJveWAvYHVwZGF0ZWAgcnVucyB3aXRoIHRoZSBjYWxsZXIncyBgcnVuT3B0aW9uc2AsIHNvIEFDTCBhbmQgQ0xQIGFyZSBob25vcmVkLiBXaGVuIGBmYWxzZWAsIHRoZSBkZWR1cCBydW5zIGFzIG1hc3RlciBhbmQgYnlwYXNzZXMgYm90aC4gTWFzdGVyIGFuZCBtYWludGVuYW5jZSBrZXlzIGFsd2F5cyBieXBhc3MgcmVnYXJkbGVzcyBvZiB0aGlzIGZsYWcuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGR1cGxpY2F0ZURldmljZVRva2VuQWN0aW9uRW5mb3JjZUF1dGg6ID9ib29sZWFuO1xuICAvKiBXaGF0IFBhcnNlIFNlcnZlciBkb2VzIHRvIHRoZSBjb25mbGljdGluZyBgX0luc3RhbGxhdGlvbmAgcm93KHMpIHdoZW4gYSBuZXcgaW5zdGFsbCdzIGBkZXZpY2VUb2tlbmAgY29sbGlkZXMgd2l0aCBhbiBleGlzdGluZyByb3cuIGAnZGVsZXRlJ2AgZGVzdHJveXMgdGhlIGNvbmZsaWN0aW5nIHJvdy4gYCd1cGRhdGUnYCBjbGVhcnMgdGhlIG5vdy1jb25mbGljdGluZyBJRCBmaWVsZCBvbiB0aGUgY29uZmxpY3Rpbmcgcm93LCBwcmVzZXJ2aW5nIGN1c3RvbSBmaWVsZHMsIGNoYW5uZWxzLCBhbmQgaGlzdG9yeS4gRGVmYXVsdCBpcyBgJ2RlbGV0ZSdgLlxuICA6REVGQVVMVDogZGVsZXRlICovXG4gIGR1cGxpY2F0ZURldmljZVRva2VuQWN0aW9uOiA/c3RyaW5nO1xuICAvKiBBdCB0aGUgbWVyZ2UgY2FzZSAod2hlbiBhbiBleGlzdGluZyByb3cgaG9sZHMgdGhlIG5ldyBgZGV2aWNlVG9rZW5gIGJ1dCBoYXMgbm8gYGluc3RhbGxhdGlvbklkYCBvZiBpdHMgb3duKSwgd2hpY2ggc2lkZSB3aW5zLiBgJ2RldmljZVRva2VuJ2Ag4oCUIHRoZSBkZXZpY2VUb2tlbi1vbmx5IHJvdyBzdXJ2aXZlcywgdGhlIHJlcXVlc3QncyBgaWRNYXRjaGAgcm93IGlzIHRoZSBsb3Nlci4gYCdpbnN0YWxsYXRpb25JZCdgIOKAlCB0aGUgcmVxdWVzdCdzIGBpZE1hdGNoYCAoYWN0aXZlIGluc3RhbGwpIHN1cnZpdmVzLCB0aGUgZGV2aWNlVG9rZW4tb25seSBvcnBoYW4gaXMgdGhlIGxvc2VyLiBEZWZhdWx0IGlzIGAnZGV2aWNlVG9rZW4nYC5cbiAgOkRFRkFVTFQ6IGRldmljZVRva2VuICovXG4gIGR1cGxpY2F0ZURldmljZVRva2VuTWVyZ2VQcmlvcml0eTogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eU9wdGlvbnMge1xuICAvKiBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgY2hlY2sgZm9yIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVDaGVjazogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgdGhlIHNlY3VyaXR5IGNoZWNrIHJlcG9ydCBzaG91bGQgYmUgd3JpdHRlbiB0byBsb2dzLiBUaGlzIHNob3VsZCBvbmx5IGJlIGVuYWJsZWQgdGVtcG9yYXJpbHkgdG8gbm90IGV4cG9zZSB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzIGluIGxvZ3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVDaGVja0xvZzogP2Jvb2xlYW47XG4gIC8qIFRoZSBzZWN1cml0eSBjaGVjayBncm91cHMgdG8gcnVuLiBUaGlzIGFsbG93cyB0byBhZGQgY3VzdG9tIHNlY3VyaXR5IGNoZWNrcyBvciBvdmVycmlkZSBleGlzdGluZyBvbmVzLiBEZWZhdWx0IGFyZSB0aGUgZ3JvdXBzIGRlZmluZWQgaW4gYENoZWNrR3JvdXBzLmpzYC4gKi9cbiAgY2hlY2tHcm91cHM6ID8oQ2hlY2tHcm91cFtdKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVNlcnZlck9wdGlvbnMge1xuICAvKiBXaGVuIGB0cnVlYCwgYWxsIGFnZ3JlZ2F0aW9uIHF1ZXJpZXMgZGVmYXVsdCB0byB1c2luZyBNb25nb0RCIEV4dGVuZGVkIEpTT04gKEVKU09OKSBmb3IgZXhwbGljaXQgdmFsdWUgdHlwaW5nIGFuZCBza2lwIHNjaGVtYS1iYXNlZCB2YWx1ZSBjb2VyY2lvbi4gSW5kaXZpZHVhbCBxdWVyaWVzIGNhbiBzdGlsbCBvdmVycmlkZSB0aGlzIHZpYSB0aGUgYHJhd1ZhbHVlc2Agb3B0aW9uLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9RVUVSWV9BR0dSRUdBVElPTl9SQVdfVkFMVUVTXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhZ2dyZWdhdGlvblJhd1ZhbHVlczogP2Jvb2xlYW47XG4gIC8qIFdoZW4gYHRydWVgLCBhbGwgYWdncmVnYXRpb24gcXVlcmllcyBkZWZhdWx0IHRvIHVzaW5nIG5hdGl2ZSBNb25nb0RCIGZpZWxkIG5hbWVzIChubyBhdXRvbWF0aWMgYGNyZWF0ZWRBdGAg4oaSIGBfY3JlYXRlZF9hdGAgcmV3cml0aW5nKS4gSW5kaXZpZHVhbCBxdWVyaWVzIGNhbiBzdGlsbCBvdmVycmlkZSB0aGlzIHZpYSB0aGUgYHJhd0ZpZWxkTmFtZXNgIG9wdGlvbi4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUVVFUllfQUdHUkVHQVRJT05fUkFXX0ZJRUxEX05BTUVTXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhZ2dyZWdhdGlvblJhd0ZpZWxkTmFtZXM6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzT3B0aW9ucyB7XG4gIC8qIElzIHRydWUgaWYgcGFnZXMgc2hvdWxkIGJlIGxvY2FsaXplZDsgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIGN1c3RvbSBwYWdlIHJlZGlyZWN0cy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUxvY2FsaXphdGlvbjogP2Jvb2xlYW47XG4gIC8qIFRoZSBwYXRoIHRvIHRoZSBKU09OIGZpbGUgZm9yIGxvY2FsaXphdGlvbjsgdGhlIHRyYW5zbGF0aW9ucyB3aWxsIGJlIHVzZWQgdG8gZmlsbCB0ZW1wbGF0ZSBwbGFjZWhvbGRlcnMgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUuICovXG4gIGxvY2FsaXphdGlvbkpzb25QYXRoOiA/c3RyaW5nO1xuICAvKiBUaGUgZmFsbGJhY2sgbG9jYWxlIGZvciBsb2NhbGl6YXRpb24gaWYgbm8gbWF0Y2hpbmcgdHJhbnNsYXRpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHByb3ZpZGluZyB0cmFuc2xhdGlvbiByZXNvdXJjZXMgdmlhIEpTT04gZmlsZS5cbiAgOkRFRkFVTFQ6IGVuICovXG4gIGxvY2FsaXphdGlvbkZhbGxiYWNrTG9jYWxlOiA/c3RyaW5nO1xuICAvKiBUaGUgcGxhY2Vob2xkZXIga2V5cyBhbmQgdmFsdWVzIHdoaWNoIHdpbGwgYmUgZmlsbGVkIGluIHBhZ2VzOyB0aGlzIGNhbiBiZSBhIHNpbXBsZSBvYmplY3Qgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHBsYWNlaG9sZGVyczogP09iamVjdDtcbiAgLyogSXMgdHJ1ZSBpZiByZXNwb25zZXMgc2hvdWxkIGFsd2F5cyBiZSByZWRpcmVjdHMgYW5kIG5ldmVyIGNvbnRlbnQsIGZhbHNlIGlmIHRoZSByZXNwb25zZSB0eXBlIHNob3VsZCBkZXBlbmQgb24gdGhlIHJlcXVlc3QgdHlwZSAoR0VUIHJlcXVlc3QgLT4gY29udGVudCByZXNwb25zZTsgUE9TVCByZXF1ZXN0IC0+IHJlZGlyZWN0IHJlc3BvbnNlKS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGZvcmNlUmVkaXJlY3Q6ID9ib29sZWFuO1xuICAvKiBUaGUgcGF0aCB0byB0aGUgcGFnZXMgZGlyZWN0b3J5OyB0aGlzIGFsc28gZGVmaW5lcyB3aGVyZSB0aGUgc3RhdGljIGVuZHBvaW50ICcvYXBwcycgcG9pbnRzIHRvLiBEZWZhdWx0IGlzIHRoZSAnLi9wdWJsaWMvJyBkaXJlY3Rvcnkgb2YgdGhlIHBhcnNlLXNlcnZlciBtb2R1bGUuICovXG4gIHBhZ2VzUGF0aDogP3N0cmluZztcbiAgLyogVGhlIEFQSSBlbmRwb2ludCBmb3IgdGhlIHBhZ2VzLiBEZWZhdWx0IGlzICdhcHBzJy5cbiAgOkRFRkFVTFQ6IGFwcHMgKi9cbiAgcGFnZXNFbmRwb2ludDogP3N0cmluZztcbiAgLyogVGhlIFVSTHMgdG8gdGhlIGN1c3RvbSBwYWdlcy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGN1c3RvbVVybHM6ID9QYWdlc0N1c3RvbVVybHNPcHRpb25zO1xuICAvKiBUaGUgY3VzdG9tIHJvdXRlcy5cbiAgOkRFRkFVTFQ6IFtdICovXG4gIGN1c3RvbVJvdXRlczogPyhQYWdlc1JvdXRlW10pO1xuICAvKiBJcyBgdHJ1ZWAgaWYgdGhlIHBhZ2UgcGFyYW1ldGVyIGhlYWRlcnMgc2hvdWxkIGJlIFVSSS1lbmNvZGVkLiBUaGlzIGlzIHJlcXVpcmVkIGlmIGFueSBwYWdlIHBhcmFtZXRlciB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywgc3VjaCBhcyB0aGUgYXBwIG5hbWUuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmNvZGVQYWdlUGFyYW1IZWFkZXJzOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlc1JvdXRlIHtcbiAgLyogVGhlIHJvdXRlIHBhdGguICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyogVGhlIHJvdXRlIG1ldGhvZCwgZS5nLiAnR0VUJyBvciAnUE9TVCcuICovXG4gIG1ldGhvZDogc3RyaW5nO1xuICAvKiBUaGUgcm91dGUgaGFuZGxlciB0aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uLiAqL1xuICBoYW5kbGVyOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzQ3VzdG9tVXJsc09wdGlvbnMge1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQuICovXG4gIHBhc3N3b3JkUmVzZXQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBsaW5rIGludmFsaWQuICovXG4gIHBhc3N3b3JkUmVzZXRMaW5rSW52YWxpZDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0IC0+IHN1Y2Nlc3MuICovXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHN1Y2Nlc3MuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uU3VjY2VzczogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIHNlbmQgZmFpbC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiByZXNlbmQgbGluayAtPiBzdWNjZXNzLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvblNlbmRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgaW52YWxpZC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25MaW5rSW52YWxpZDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGV4cGlyZWQuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0V4cGlyZWQ6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUGFnZXNPcHRpb25zIHtcbiAgLyogaW52YWxpZCBsaW5rIHBhZ2UgcGF0aCAqL1xuICBpbnZhbGlkTGluazogP3N0cmluZztcbiAgLyogdmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBmYWlsIHBhZ2UgcGF0aCAqL1xuICBsaW5rU2VuZEZhaWw6ID9zdHJpbmc7XG4gIC8qIGNob29zZSBwYXNzd29yZCBwYWdlIHBhdGggKi9cbiAgY2hvb3NlUGFzc3dvcmQ6ID9zdHJpbmc7XG4gIC8qIHZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgbGlua1NlbmRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiB2ZXJpZnkgZW1haWwgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgdmVyaWZ5RW1haWxTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBwYXNzd29yZCByZXNldCBzdWNjZXNzIHBhZ2UgcGF0aCAqL1xuICBwYXNzd29yZFJlc2V0U3VjY2VzczogP3N0cmluZztcbiAgLyogaW52YWxpZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGggKi9cbiAgaW52YWxpZFZlcmlmaWNhdGlvbkxpbms6ID9zdHJpbmc7XG4gIC8qIGV4cGlyZWQgdmVyaWZpY2F0aW9uIGxpbmsgcGFnZSBwYXRoICovXG4gIGV4cGlyZWRWZXJpZmljYXRpb25MaW5rOiA/c3RyaW5nO1xuICAvKiBpbnZhbGlkIHBhc3N3b3JkIHJlc2V0IGxpbmsgcGFnZSBwYXRoICovXG4gIGludmFsaWRQYXNzd29yZFJlc2V0TGluazogP3N0cmluZztcbiAgLyogZm9yIG1hc2tpbmcgdXNlci1mYWNpbmcgcGFnZXMgKi9cbiAgcGFyc2VGcmFtZVVSTDogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXZlUXVlcnlPcHRpb25zIHtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNsYXNzTmFtZXNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0xJVkVRVUVSWV9DTEFTU05BTUVTICovXG4gIGNsYXNzTmFtZXM6ID8oc3RyaW5nW10pO1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zICovXG4gIHJlZGlzT3B0aW9uczogP2FueTtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMICovXG4gIHJlZGlzVVJMOiA/c3RyaW5nO1xuICAvKiBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXIgKi9cbiAgcHViU3ViQWRhcHRlcjogP0FkYXB0ZXI8UHViU3ViQWRhcHRlcj47XG4gIC8qIFNldHMgdGhlIG1heGltdW0gZXhlY3V0aW9uIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZvciByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBtYXRjaGluZyBpbiBMaXZlUXVlcnkuIFRoaXMgcHJvdGVjdHMgYWdhaW5zdCBSZWd1bGFyIEV4cHJlc3Npb24gRGVuaWFsIG9mIFNlcnZpY2UgKFJlRG9TKSBhdHRhY2tzIHdoZXJlIGEgbWFsaWNpb3VzIHJlZ2V4IHBhdHRlcm4gY291bGQgYmxvY2sgdGhlIGV2ZW50IGxvb3AuIEEgcmVnZXggdGhhdCBleGNlZWRzIHRoZSB0aW1lb3V0IHdpbGwgYmUgdHJlYXRlZCBhcyBub24tbWF0Y2hpbmcuPGJyPjxicj5UaGUgcHJvdGVjdGlvbiBydW5zIGVhY2ggcmVnZXggZXZhbHVhdGlvbiBpbiBhbiBpc29sYXRlZCBWTSBjb250ZXh0IHdpdGggYSB0aW1lb3V0LiBUaGlzIGFkZHMgYXBwcm94aW1hdGVseSA1MCBtaWNyb3NlY29uZHMgb2Ygb3ZlcmhlYWQgcGVyIHJlZ2V4IGV2YWx1YXRpb24uIEZvciBtb3N0IGFwcGxpY2F0aW9ucyB0aGlzIGlzIG5lZ2xpZ2libGUsIGJ1dCBpdCBjYW4gYWRkIHVwIGlmIHlvdSBoYXZlIGEgdmVyeSBsYXJnZSBudW1iZXIgb2YgTGl2ZVF1ZXJ5IHN1YnNjcmlwdGlvbnMgdGhhdCB1c2UgYCRyZWdleGAgb24gdGhlIHNhbWUgY2xhc3MuIEZvciBleGFtcGxlLCAxMCwwMDAgY29uY3VycmVudCByZWdleCBzdWJzY3JpcHRpb25zIHdvdWxkIGFkZCBhcHByb3hpbWF0ZWx5IDUwMG1zIG9mIHByb2Nlc3NpbmcgdGltZSBwZXIgb2JqZWN0IHNhdmUgZXZlbnQgb24gdGhhdCBjbGFzcy48YnI+PGJyPlNldCB0byBgMGAgdG8gZGlzYWJsZSB0aGUgdGltZW91dCBhbmQgdXNlIG5hdGl2ZSByZWdleCBldmFsdWF0aW9uIHdpdGhvdXQgcHJvdGVjdGlvbi4gRGVmYXVsdHMgdG8gYDEwMGAuXG4gIDpERUZBVUxUOiAxMDAgKi9cbiAgcmVnZXhUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlciAqL1xuICB3c3NBZGFwdGVyOiA/QWRhcHRlcjxXU1NBZGFwdGVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIHtcbiAgLyogVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBhcHBJZCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIGFwcElkLiovXG4gIGFwcElkOiA/c3RyaW5nO1xuICAvKiBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIG1hc3RlcktleSBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIG1hc3RlcktleS4qL1xuICBtYXN0ZXJLZXk6ID9zdHJpbmc7XG4gIC8qIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgc2VydmVyVVJMIGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgc2VydmVyVVJMLiovXG4gIHNlcnZlclVSTDogP3N0cmluZztcbiAgLyogQSBKU09OIG9iamVjdCB0aGF0IHNlcnZlcyBhcyBhIHdoaXRlbGlzdCBvZiBrZXlzLiBJdCBpcyB1c2VkIGZvciB2YWxpZGF0aW5nIGNsaWVudHMgd2hlbiB0aGV5IHRyeSB0byBjb25uZWN0IHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLiovXG4gIGtleVBhaXJzOiA/YW55O1xuICAvKiBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gcGluZy9wb25nIGZyYW1lcy4gVGhlIFdlYlNvY2tldCBzZXJ2ZXIgc2VuZHMgcGluZy9wb25nIGZyYW1lcyB0byB0aGUgY2xpZW50cyB0byBrZWVwIHRoZSBXZWJTb2NrZXQgYWxpdmUuIFRoaXMgdmFsdWUgZGVmaW5lcyB0aGUgaW50ZXJ2YWwgb2YgdGhlIHBpbmcvcG9uZyBmcmFtZSBmcm9tIHRoZSBzZXJ2ZXIgdG8gY2xpZW50cywgZGVmYXVsdHMgdG8gMTAgKiAxMDAwIG1zICgxMCBzKS4qL1xuICB3ZWJzb2NrZXRUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBOdW1iZXIgaW4gbWlsbGlzZWNvbmRzLiBXaGVuIGNsaWVudHMgcHJvdmlkZSB0aGUgc2Vzc2lvblRva2VuIHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byBmZXRjaCBpdHMgUGFyc2VVc2VyJ3Mgb2JqZWN0SWQgZnJvbSBwYXJzZSBzZXJ2ZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBjYWNoZS4gVGhlIHZhbHVlIGRlZmluZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWNoZS4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscywgZGVmYXVsdHMgdG8gNSAqIDEwMDAgbXMgKDUgc2Vjb25kcykuKi9cbiAgY2FjaGVUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBUaGlzIHN0cmluZyBkZWZpbmVzIHRoZSBsb2cgbGV2ZWwgb2YgdGhlIExpdmVRdWVyeSBzZXJ2ZXIuIFdlIHN1cHBvcnQgVkVSQk9TRSwgSU5GTywgRVJST1IsIE5PTkUsIGRlZmF1bHRzIHRvIElORk8uKi9cbiAgbG9nTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIFRoZSBwb3J0IHRvIHJ1biB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciwgZGVmYXVsdHMgdG8gMTMzNy5cbiAgOkRFRkFVTFQ6IDEzMzcgKi9cbiAgcG9ydDogP251bWJlcjtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzT3B0aW9ucyAqL1xuICByZWRpc09wdGlvbnM6ID9hbnk7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTCAqL1xuICByZWRpc1VSTDogP3N0cmluZztcbiAgLyogTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyICovXG4gIHB1YlN1YkFkYXB0ZXI6ID9BZGFwdGVyPFB1YlN1YkFkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlciAqL1xuICB3c3NBZGFwdGVyOiA/QWRhcHRlcjxXU1NBZGFwdGVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVtcG90ZW5jeU9wdGlvbnMge1xuICAvKiBBbiBhcnJheSBvZiBwYXRocyBmb3Igd2hpY2ggdGhlIGZlYXR1cmUgc2hvdWxkIGJlIGVuYWJsZWQuIFRoZSBtb3VudCBwYXRoIG11c3Qgbm90IGJlIGluY2x1ZGVkLCBmb3IgZXhhbXBsZSBpbnN0ZWFkIG9mIGAvcGFyc2UvZnVuY3Rpb25zL215RnVuY3Rpb25gIHNwZWNpZml5IGBmdW5jdGlvbnMvbXlGdW5jdGlvbmAuIFRoZSBlbnRyaWVzIGFyZSBpbnRlcnByZXRlZCBhcyByZWd1bGFyIGV4cHJlc3Npb24sIGZvciBleGFtcGxlIGBmdW5jdGlvbnMvLipgIG1hdGNoZXMgYWxsIGZ1bmN0aW9ucywgYGpvYnMvLipgIG1hdGNoZXMgYWxsIGpvYnMsIGBjbGFzc2VzLy4qYCBtYXRjaGVzIGFsbCBjbGFzc2VzLCBgLipgIG1hdGNoZXMgYWxsIHBhdGhzLlxuICA6REVGQVVMVDogW10gKi9cbiAgcGF0aHM6ID8oc3RyaW5nW10pO1xuICAvKiBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBhZnRlciB3aGljaCBhIHJlcXVlc3QgcmVjb3JkIGlzIGRpc2NhcmRlZCBmcm9tIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gMzAwcy5cbiAgOkRFRkFVTFQ6IDMwMCAqL1xuICB0dGw6ID9udW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudExvY2tvdXRPcHRpb25zIHtcbiAgLyogU2V0IHRoZSBkdXJhdGlvbiBpbiBtaW51dGVzIHRoYXQgYSBsb2NrZWQtb3V0IGFjY291bnQgcmVtYWlucyBsb2NrZWQgb3V0IGJlZm9yZSBhdXRvbWF0aWNhbGx5IGJlY29taW5nIHVubG9ja2VkLlxuICA8YnI+PGJyPlxuICBWYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMDAwYC4gKi9cbiAgZHVyYXRpb246ID9udW1iZXI7XG4gIC8qIFNldCB0aGUgbnVtYmVyIG9mIGZhaWxlZCBzaWduLWluIGF0dGVtcHRzIHRoYXQgd2lsbCBjYXVzZSBhIHVzZXIgYWNjb3VudCB0byBiZSBsb2NrZWQuIElmIHRoZSBhY2NvdW50IGlzIGxvY2tlZC4gVGhlIGFjY291bnQgd2lsbCB1bmxvY2sgYWZ0ZXIgdGhlIGR1cmF0aW9uIHNldCBpbiB0aGUgYGR1cmF0aW9uYCBvcHRpb24gaGFzIHBhc3NlZCBhbmQgbm8gZnVydGhlciBsb2dpbiBhdHRlbXB0cyBoYXZlIGJlZW4gbWFkZS5cbiAgPGJyPjxicj5cbiAgVmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDBgLiAqL1xuICB0aHJlc2hvbGQ6ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgIGlmIHRoZSBhY2NvdW50IHNob3VsZCBiZSB1bmxvY2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgcGFzc3dvcmQgcmVzZXQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb25zIGBkdXJhdGlvbmAgYW5kIGB0aHJlc2hvbGRgIHRvIGJlIHNldC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHVubG9ja09uUGFzc3dvcmRSZXNldDogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFzc3dvcmRQb2xpY3lPcHRpb25zIHtcbiAgLyogU2V0IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdmFsaWRhdGlvbiBwYXR0ZXJuIGEgcGFzc3dvcmQgbXVzdCBtYXRjaCB0byBiZSBhY2NlcHRlZC5cbiAgPGJyPjxicj5cbiAgSWYgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGB2YWxpZGF0b3JDYWxsYmFja2AsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC4gKi9cbiAgdmFsaWRhdG9yUGF0dGVybjogP3N0cmluZztcbiAgLyogICAqL1xuICAvKiBTZXQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhIHBhc3N3b3JkIHRvIGJlIGFjY2VwdGVkLlxuICA8YnI+PGJyPlxuICBJZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvclBhdHRlcm5gLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuICovXG4gIHZhbGlkYXRvckNhbGxiYWNrOiA/KCkgPT4gdm9pZDtcbiAgLyogU2V0IHRoZSBlcnJvciBtZXNzYWdlIHRvIGJlIHNlbnQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYFBhc3N3b3JkIGRvZXMgbm90IG1lZXQgdGhlIFBhc3N3b3JkIFBvbGljeSByZXF1aXJlbWVudHMuYCAqL1xuICB2YWxpZGF0aW9uRXJyb3I6ID9zdHJpbmc7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWxsb3cgdGhlIHVzZXJuYW1lIGFzIHBhcnQgb2YgdGhlIHBhc3N3b3JkLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkb05vdEFsbG93VXNlcm5hbWU6ID9ib29sZWFuO1xuICAvKiBTZXQgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIGEgcGFzc3dvcmQgZXhwaXJlcy4gTG9naW4gYXR0ZW1wdHMgZmFpbCBpZiB0aGUgdXNlciBkb2VzIG5vdCByZXNldCB0aGUgcGFzc3dvcmQgYmVmb3JlIGV4cGlyYXRpb24uICovXG4gIG1heFBhc3N3b3JkQWdlOiA/bnVtYmVyO1xuICAvKiBTZXQgdGhlIG51bWJlciBvZiBwcmV2aW91cyBwYXNzd29yZCB0aGF0IHdpbGwgbm90IGJlIGFsbG93ZWQgdG8gYmUgc2V0IGFzIG5ldyBwYXNzd29yZC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgMGAsIG5vIHByZXZpb3VzIHBhc3N3b3JkcyB3aWxsIGJlIGNvbnNpZGVyZWQuXG4gIDxicj48YnI+XG4gIFZhbGlkIHZhbHVlcyBhcmUgPj0gYDBgIGFuZCA8PSBgMjBgLlxuICA8YnI+XG4gIERlZmF1bHQgaXMgYDBgLlxuICAqL1xuICBtYXhQYXNzd29yZEhpc3Rvcnk6ID9udW1iZXI7XG4gIC8qIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIHBhc3N3b3JkIHJlc2V0IHRva2VuIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHRva2VuIGV4cGlyZXMuIFRoZSB0b2tlbiBpcyB1c2VkIGluIHRoZSBsaW5rIHRoYXQgaXMgc2V0IGluIHRoZSBlbWFpbC4gQWZ0ZXIgdGhlIHRva2VuIGV4cGlyZXMsIHRoZSBsaW5rIGJlY29tZXMgaW52YWxpZCBhbmQgYSBuZXcgbGluayBoYXMgdG8gYmUgc2VudC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgdW5kZWZpbmVkYCwgdGhlbiB0aGUgdG9rZW4gbmV2ZXIgZXhwaXJlcy5cbiAgPGJyPjxicj5cbiAgRm9yIGV4YW1wbGUsIHRvIGV4cGlyZSB0aGUgdG9rZW4gYWZ0ZXIgMiBob3Vycywgc2V0IGEgdmFsdWUgb2YgNzIwMCBzZWNvbmRzICg9IDYwIHNlY29uZHMgKiA2MCBtaW51dGVzICogMiBob3VycykuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHVuZGVmaW5lZGAuXG4gICovXG4gIHJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIGEgcGFzc3dvcmQgcmVzZXQgdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICByZXNldFRva2VuUmV1c2VJZlZhbGlkOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIHJlcXVlc3QgdG8gcmVzZXQgdGhlIHBhc3N3b3JkIHNob3VsZCByZXR1cm4gYSBzdWNjZXNzIHJlc3BvbnNlIGV2ZW4gaWYgdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MgaXMgaW52YWxpZCwgb3IgYGZhbHNlYCBpZiB0aGUgcmVxdWVzdCBzaG91bGQgcmV0dXJuIGFuIGVycm9yIHJlc3BvbnNlIGlmIHRoZSBlbWFpbCBhZGRyZXNzIGlzIGludmFsaWQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHRydWVgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICByZXNldFBhc3N3b3JkU3VjY2Vzc09uSW52YWxpZEVtYWlsOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkT3B0aW9ucyB7XG4gIC8qIFNldHMgdGhlIGFsbG93ZWQgZmlsZSBleHRlbnNpb25zIGZvciB1cGxvYWRpbmcgZmlsZXMuIFRoZSBleHRlbnNpb24gaXMgZGVmaW5lZCBhcyBhbiBhcnJheSBvZiBmaWxlIGV4dGVuc2lvbnMsIG9yIGEgcmVnZXggcGF0dGVybi48YnI+PGJyPkl0IGlzIHJlY29tbWVuZGVkIHRvIG9ubHkgYWxsb3cgdGhlIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IHlvdXIgYXBwIGFjdHVhbGx5IG5lZWRzLCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIGJsb2NraW5nIGRhbmdlcm91cyBleHRlbnNpb25zLiBUaGlzIGFsbG93bGlzdCBhcHByb2FjaCBpcyBtb3JlIHNlY3VyZSBiZWNhdXNlIG5ldyBkYW5nZXJvdXMgZmlsZSBleHRlbnNpb25zIG1heSBlbWVyZ2UgdGhhdCBhcmUgbm90IGNvdmVyZWQgYnkgdGhlIGRlZmF1bHQgYmxvY2tsaXN0Ljxicj48YnI+VGhlIGRlZmF1bHQgYmxvY2tzIHRoZSBtb3N0IGNvbW1vbiBmaWxlIGV4dGVuc2lvbnMgdGhhdCBhcmUga25vd24gdG8gYmUgcmVuZGVyZWQgYXMgYWN0aXZlIGNvbnRlbnQgYnkgd2ViIGJyb3dzZXJzLCBzdWNoIGFzIEhUTUwsIFNWRywgYW5kIFhNTCBmaWxlcywgd2hpY2ggbWF5IGJlIHVzZWQgYnkgYW4gYXR0YWNrZXIgdG8gY29tcHJvbWlzZSB0aGUgc2Vzc2lvbiB0b2tlbiBvZiBhbm90aGVyIHVzZXIgdmlhIGFjY2Vzc2luZyB0aGUgYnJvd3NlcidzIGxvY2FsIHN0b3JhZ2UuIFRoZSBibG9ja2VkIGV4dGVuc2lvbnMgYXJlOiBgaHRtbGAsIGBodG1gLCBgc2h0bWxgLCBgeGh0bWxgLCBgeGh0bWwreG1sYCwgYHhodGAsIGBzdmdgLCBgc3ZnemAsIGBzdmcreG1sYCwgYHhtbGAsIGB4c2xgLCBgeHNsdGAsIGB4c2x0K3htbGAsIGB4c2RgLCBgcm5nYCwgYHJkZmAsIGByZGYreG1sYCwgYG93bGAsIGBtYXRobWxgLCBgbWF0aG1sK3htbGAuPGJyPjxicj5EZWZhdWx0cyB0byBgW1wiXig/IShbeFhzU10/W2hIXVt0VF1bbU1dW2xMXT8oXFxcXCtbeFhdW21NXVtsTF0pP3xbeFhdW2hIXVt0VF18W3NTXVt2Vl1bZ0ddKFt6Wl18XFxcXCtbeFhdW21NXVtsTF0pP3xbeFhdW21NXVtsTF18W3hYXVtzU11bbExdW3RUXT8oXFxcXCtbeFhdW21NXVtsTF0pP3xbeFhdW3NTXVtkRF18W3JSXVtuTl1bZ0ddfFtyUl1bZERdW2ZGXShcXFxcK1t4WF1bbU1dW2xMXSk/fFtvT11bd1ddW2xMXXxbbU1dW2FBXVt0VF1baEhdW21NXVtsTF0oXFxcXCtbeFhdW21NXVtsTF0pPykkKVwiXWAuXG4gIDpERUZBVUxUOiBbXCJeKD8hKFt4WHNTXT9baEhdW3RUXVttTV1bbExdPyhcXFxcK1t4WF1bbU1dW2xMXSk/fFt4WF1baEhdW3RUXXxbc1NdW3ZWXVtnR10oW3paXXxcXFxcK1t4WF1bbU1dW2xMXSk/fFt4WF1bbU1dW2xMXXxbeFhdW3NTXVtsTF1bdFRdPyhcXFxcK1t4WF1bbU1dW2xMXSk/fFt4WF1bc1NdW2REXXxbclJdW25OXVtnR118W3JSXVtkRF1bZkZdKFxcXFwrW3hYXVttTV1bbExdKT98W29PXVt3V11bbExdfFttTV1bYUFdW3RUXVtoSF1bbU1dW2xMXShcXFxcK1t4WF1bbU1dW2xMXSk/KSQpXCJdICovXG4gIGZpbGVFeHRlbnNpb25zOiA/KHN0cmluZ1tdKTtcbiAgLyogIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFub255bW91cyB1c2Vycy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUZvckFub255bW91c1VzZXI6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhdXRoZW50aWNhdGVkIHVzZXJzLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRm9yUHVibGljOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgYWxsb3dlZCBob3N0bmFtZXMgZm9yIGZpbGUgVVJMcyByZWZlcmVuY2VkIGluIFBhcnNlIG9iamVjdHMuIFdoZW4gYSBGaWxlIG9iamVjdCBpbmNsdWRlcyBhIFVSTCwgaXRzIGhvc3RuYW1lIG11c3QgbWF0Y2ggb25lIG9mIHRoZXNlIGVudHJpZXMgdG8gYmUgYWNjZXB0ZWQuIFN1cHBvcnRzIGV4YWN0IGhvc3RuYW1lcyAoZS5nLiwgYCdjZG4uZXhhbXBsZS5jb20nYCkgYW5kIHdpbGRjYXJkIHN1YmRvbWFpbnMgKGUuZy4sIGAnKi5leGFtcGxlLmNvbSdgKS4gVXNlIGBbJyonXWAgdG8gYWxsb3cgYW55IGRvbWFpbi4gVXNlIGBbXWAgdG8gYmxvY2sgYWxsIGZpbGUgVVJMcyAob25seSBuYW1lLWJhc2VkIGZpbGVzIGFsbG93ZWQpLjxicj48YnI+SWYgdGhpcyBvcHRpb24gaXMgbm90IHNldCwgaXQgZGVmYXVsdHMgdG8gdGhlIGhvc3RuYW1lcyBvZiBgcHVibGljU2VydmVyVVJMYCBhbmQgYHNlcnZlclVSTGAsIHNvIGZpbGVzIGhvc3RlZCBieSBQYXJzZSBTZXJ2ZXIgYXJlIGFsbG93ZWQgd2l0aG91dCBvcGVuaW5nIGFyYml0cmFyeSBkb21haW5zLiAqL1xuICBhbGxvd2VkRmlsZVVybERvbWFpbnM6ID8oc3RyaW5nW10pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVEb3dubG9hZE9wdGlvbnMge1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgZG93bmxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFub255bW91cyB1c2Vycy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlRm9yQW5vbnltb3VzVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSBkb3dubG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYXV0aGVudGljYXRlZCB1c2Vycy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXI6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgZG93bmxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVGb3JQdWJsaWM6ID9ib29sZWFuO1xufVxuXG4vKiBUaGUgYXZhaWxhYmxlIGxvZyBsZXZlbHMgZm9yIFBhcnNlIFNlcnZlciBsb2dnaW5nLiBWYWxpZCB2YWx1ZXMgYXJlOjxicj4tIGAnZXJyb3InYCAtIEVycm9yIGxldmVsIChoaWdoZXN0IHByaW9yaXR5KTxicj4tIGAnd2FybidgIC0gV2FybmluZyBsZXZlbDxicj4tIGAnaW5mbydgIC0gSW5mbyBsZXZlbCAoZGVmYXVsdCk8YnI+LSBgJ3ZlcmJvc2UnYCAtIFZlcmJvc2UgbGV2ZWw8YnI+LSBgJ2RlYnVnJ2AgLSBEZWJ1ZyBsZXZlbDxicj4tIGAnc2lsbHknYCAtIFNpbGx5IGxldmVsIChsb3dlc3QgcHJpb3JpdHkpICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ0xldmVsIHtcbiAgLyogRXJyb3IgbGV2ZWwgLSBoaWdoZXN0IHByaW9yaXR5ICovXG4gIGVycm9yOiAnZXJyb3InO1xuICAvKiBXYXJuaW5nIGxldmVsICovXG4gIHdhcm46ICd3YXJuJztcbiAgLyogSW5mbyBsZXZlbCAtIGRlZmF1bHQgKi9cbiAgaW5mbzogJ2luZm8nO1xuICAvKiBWZXJib3NlIGxldmVsICovXG4gIHZlcmJvc2U6ICd2ZXJib3NlJztcbiAgLyogRGVidWcgbGV2ZWwgKi9cbiAgZGVidWc6ICdkZWJ1Zyc7XG4gIC8qIFNpbGx5IGxldmVsIC0gbG93ZXN0IHByaW9yaXR5ICovXG4gIHNpbGx5OiAnc2lsbHknO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0NsaWVudEV2ZW50IHtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIGV2ZW50IG5hbWUgdG8gbGlzdGVuIGZvci4gU2VlIHRoZSBbTW9uZ29EQiBkcml2ZXIgZXZlbnRzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3Lm1vbmdvZGIuY29tL2RvY3MvZHJpdmVycy9ub2RlL2N1cnJlbnQvZnVuZGFtZW50YWxzL21vbml0b3JpbmcvKSBmb3IgYXZhaWxhYmxlIGV2ZW50cy4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiBPcHRpb25hbCBhcnJheSBvZiBkb3Qtbm90YXRpb24gcGF0aHMgdG8gZXh0cmFjdCBzcGVjaWZpYyBkYXRhIGZyb20gdGhlIGV2ZW50IG9iamVjdC4gSWYgbm90IHByb3ZpZGVkIG9yIGVtcHR5LCB0aGUgZW50aXJlIGV2ZW50IG9iamVjdCB3aWxsIGJlIGxvZ2dlZC4gKi9cbiAga2V5czogPyhzdHJpbmdbXSk7XG4gIC8qIFRoZSBsb2cgbGV2ZWwgdG8gdXNlIGZvciB0aGlzIGV2ZW50LiBTZWUgW0xvZ0xldmVsXShMb2dMZXZlbC5odG1sKSBmb3IgYXZhaWxhYmxlIHZhbHVlcy4gRGVmYXVsdHMgdG8gYCdpbmZvJ2AuXG4gIDpERUZBVUxUOiBpbmZvICovXG4gIGxvZ0xldmVsOiA/c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlT3B0aW9ucyB7XG4gIC8qIEVuYWJsZXMgZGF0YWJhc2UgcmVhbC10aW1lIGhvb2tzIHRvIHVwZGF0ZSBzaW5nbGUgc2NoZW1hIGNhY2hlLiBTZXQgdG8gYHRydWVgIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIGNhdXNlIGEgc2NoZW1hIGNoYW5nZSB0byBub3QgcHJvcGFnYXRlIHRvIGFsbCBpbnN0YW5jZXMgYW5kIHJlLXN5bmNpbmcgd2lsbCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBpbnN0YW5jZXMgcmVzdGFydC4gVG8gdXNlIHRoaXMgZmVhdHVyZSB3aXRoIE1vbmdvREIsIGEgcmVwbGljYSBzZXQgY2x1c3RlciB3aXRoIFtjaGFuZ2Ugc3RyZWFtXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL2NoYW5nZVN0cmVhbXMvI2F2YWlsYWJpbGl0eSkgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZVNjaGVtYUhvb2tzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIGR1cmF0aW9uIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHNjaGVtYSBjYWNoZSBleHBpcmVzIGFuZCB3aWxsIGJlIHJlZmV0Y2hlZCBmcm9tIHRoZSBkYXRhYmFzZS4gVXNlIHRoaXMgb3B0aW9uIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gQSBsb3cgZHVyYXRpb24gd2lsbCBjYXVzZSB0aGUgc2NoZW1hIGNhY2hlIHRvIGJlIHVwZGF0ZWQgdG9vIG9mdGVuLCBjYXVzaW5nIHVubmVjZXNzYXJ5IGRhdGFiYXNlIHJlYWRzLiBBIGhpZ2ggZHVyYXRpb24gd2lsbCBjYXVzZSB0aGUgc2NoZW1hIHRvIGJlIHVwZGF0ZWQgdG9vIHJhcmVseSwgaW5jcmVhc2luZyB0aGUgdGltZSByZXF1aXJlZCB1bnRpbCBzY2hlbWEgY2hhbmdlcyBwcm9wYWdhdGUgdG8gYWxsIHNlcnZlciBpbnN0YW5jZXMuIFRoaXMgZmVhdHVyZSBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBvciBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBvcHRpb24gYGVuYWJsZVNjaGVtYUhvb2tzYC4gRGVmYXVsdCBpcyBpbmZpbml0ZSB3aGljaCBtZWFucyB0aGUgc2NoZW1hIGNhY2hlIG5ldmVyIGV4cGlyZXMuICovXG4gIHNjaGVtYUNhY2hlVHRsOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCB3aGV0aGVyIHRvIHJldHJ5IGZhaWxlZCB3cml0ZXMuICovXG4gIHJldHJ5V3JpdGVzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIG51bWJlciBvZiBkb2N1bWVudHMgcGVyIGJhdGNoIGZvciBNb25nb0RCIGN1cnNvciBgZ2V0TW9yZWAgb3BlcmF0aW9ucy4gQSBsb3dlciB2YWx1ZSByZWR1Y2VzIG1lbW9yeSB1c2FnZSBwZXIgYmF0Y2g7IGEgaGlnaGVyIHZhbHVlIHJlZHVjZXMgdGhlIG51bWJlciBvZiBuZXR3b3JrIHJvdW5kLXRyaXBzLlxuICA6REVGQVVMVDogMTAwMCAqL1xuICBiYXRjaFNpemU6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IGEgY3VtdWxhdGl2ZSB0aW1lIGxpbWl0IGluIG1pbGxpc2Vjb25kcyBmb3IgcHJvY2Vzc2luZyBvcGVyYXRpb25zIG9uIGEgY3Vyc29yLiAqL1xuICBtYXhUaW1lTVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IHRoZSBtYXhpbXVtIHJlcGxpY2F0aW9uIGxhZyBmb3IgcmVhZHMgZnJvbSBzZWNvbmRhcnkgbm9kZXMuKi9cbiAgbWF4U3RhbGVuZXNzU2Vjb25kczogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9wZW5lZCwgY2FjaGVkLCByZWFkeS10by11c2UgZGF0YWJhc2UgY29ubmVjdGlvbnMgbWFpbnRhaW5lZCBieSB0aGUgZHJpdmVyLiAqL1xuICBtaW5Qb29sU2l6ZTogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG9wZW5lZCwgY2FjaGVkLCByZWFkeS10by11c2UgZGF0YWJhc2UgY29ubmVjdGlvbnMgbWFpbnRhaW5lZCBieSB0aGUgZHJpdmVyLiAqL1xuICBtYXhQb29sU2l6ZTogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhbW91bnQgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgZm9yIGEgc2VydmVyIHRvIGJlIGNvbnNpZGVyZWQgc3VpdGFibGUgZm9yIHNlbGVjdGlvbi4gKi9cbiAgc2VydmVyU2VsZWN0aW9uVGltZW91dE1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGF0IGEgY29ubmVjdGlvbiBjYW4gcmVtYWluIGlkbGUgaW4gdGhlIGNvbm5lY3Rpb24gcG9vbCBiZWZvcmUgYmVpbmcgcmVtb3ZlZCBhbmQgY2xvc2VkLiAqL1xuICBtYXhJZGxlVGltZU1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGZyZXF1ZW5jeSBpbiBtaWxsaXNlY29uZHMgYXQgd2hpY2ggdGhlIGRyaXZlciBjaGVja3MgdGhlIHN0YXRlIG9mIHRoZSBNb25nb0RCIGRlcGxveW1lbnQuICovXG4gIGhlYXJ0YmVhdEZyZXF1ZW5jeU1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGFtb3VudCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRvIHdhaXQgdG8gZXN0YWJsaXNoIGEgc2luZ2xlIFRDUCBzb2NrZXQgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGJlZm9yZSByYWlzaW5nIGFuIGVycm9yLiBTcGVjaWZ5aW5nIDAgZGlzYWJsZXMgdGhlIGNvbm5lY3Rpb24gdGltZW91dC4gKi9cbiAgY29ubmVjdFRpbWVvdXRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhbW91bnQgb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCBzcGVudCBhdHRlbXB0aW5nIHRvIHNlbmQgb3IgcmVjZWl2ZSBvbiBhIHNvY2tldCBiZWZvcmUgdGltaW5nIG91dC4gU3BlY2lmeWluZyAwIG1lYW5zIG5vIHRpbWVvdXQuICovXG4gIHNvY2tldFRpbWVvdXRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgd2hldGhlciB0aGUgc29ja2V0IGF0dGVtcHRzIHRvIGNvbm5lY3QgdG8gSVB2NiBhbmQgSVB2NCBhZGRyZXNzZXMgdW50aWwgYSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLiBJZiBhdmFpbGFibGUsIHRoZSBkcml2ZXIgd2lsbCBzZWxlY3QgdGhlIGZpcnN0IElQdjYgYWRkcmVzcy4gKi9cbiAgYXV0b1NlbGVjdEZhbWlseTogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIGEgY29ubmVjdGlvbiBhdHRlbXB0IHRvIGZpbmlzaCBiZWZvcmUgdHJ5aW5nIHRoZSBuZXh0IGFkZHJlc3Mgd2hlbiB1c2luZyB0aGUgYXV0b1NlbGVjdEZhbWlseSBvcHRpb24uIElmIHNldCB0byBhIHBvc2l0aXZlIGludGVnZXIgbGVzcyB0aGFuIDEwLCB0aGUgdmFsdWUgMTAgaXMgdXNlZCBpbnN0ZWFkLiAqL1xuICBhdXRvU2VsZWN0RmFtaWx5QXR0ZW1wdFRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgdGhhdCBtYXkgYmUgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZXN0YWJsaXNoZWQgY29uY3VycmVudGx5IGJ5IHRoZSBjb25uZWN0aW9uIHBvb2wuICovXG4gIG1heENvbm5lY3Rpbmc6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGF0IGEgdGhyZWFkIGNhbiB3YWl0IGZvciBhIGNvbm5lY3Rpb24gdG8gYmVjb21lIGF2YWlsYWJsZS4gKi9cbiAgd2FpdFF1ZXVlVGltZW91dE1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIHJlcGxpY2Egc2V0LCBpZiB0aGUgbW9uZ29kIGlzIGEgbWVtYmVyIG9mIGEgcmVwbGljYSBzZXQuICovXG4gIHJlcGxpY2FTZXQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gZm9yY2UgYSBTaW5nbGUgdG9wb2xvZ3kgdHlwZSB3aXRoIGEgY29ubmVjdGlvbiBzdHJpbmcgY29udGFpbmluZyBvbmUgaG9zdC4gKi9cbiAgZGlyZWN0Q29ubmVjdGlvbjogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gaW5zdHJ1Y3QgdGhlIGRyaXZlciBpdCBpcyBjb25uZWN0aW5nIHRvIGEgbG9hZCBiYWxhbmNlciBmcm9udGluZyBhIG1vbmdvcyBsaWtlIHNlcnZpY2UuICovXG4gIGxvYWRCYWxhbmNlZDogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgc2l6ZSAoaW4gbWlsbGlzZWNvbmRzKSBvZiB0aGUgbGF0ZW5jeSB3aW5kb3cgZm9yIHNlbGVjdGluZyBhbW9uZyBtdWx0aXBsZSBzdWl0YWJsZSBNb25nb0RCIGluc3RhbmNlcy4gKi9cbiAgbG9jYWxUaHJlc2hvbGRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBtYXhpbXVtIG51bWJlciBvZiBob3N0cyB0byBjb25uZWN0IHRvIHdoZW4gdXNpbmcgYW4gc3J2IGNvbm5lY3Rpb24gc3RyaW5nLCBhIHNldHRpbmcgb2YgMCBtZWFucyB1bmxpbWl0ZWQgaG9zdHMuICovXG4gIHNydk1heEhvc3RzOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIG1vZGlmeSB0aGUgc3J2IFVSSSBzZXJ2aWNlIG5hbWUuICovXG4gIHNydlNlcnZpY2VOYW1lOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIFRMUy9TU0wgZm9yIHRoZSBjb25uZWN0aW9uLiAqL1xuICB0bHM6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIFRMUy9TU0wgZm9yIHRoZSBjb25uZWN0aW9uIChlcXVpdmFsZW50IHRvIHRscyBvcHRpb24pLiAqL1xuICBzc2w6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIGEgbG9jYWwgLnBlbSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGNsaWVudCdzIFRMUy9TU0wgY2VydGlmaWNhdGUgYW5kIGtleS4gKi9cbiAgdGxzQ2VydGlmaWNhdGVLZXlGaWxlOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgdGhlIHRsc0NlcnRpZmljYXRlS2V5RmlsZS4gKi9cbiAgdGxzQ2VydGlmaWNhdGVLZXlGaWxlUGFzc3dvcmQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgYSBsb2NhbCAucGVtIGZpbGUgdGhhdCBjb250YWlucyB0aGUgcm9vdCBjZXJ0aWZpY2F0ZSBjaGFpbiBmcm9tIHRoZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkuICovXG4gIHRsc0NBRmlsZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBieXBhc3MgdmFsaWRhdGlvbiBvZiB0aGUgY2VydGlmaWNhdGVzIHByZXNlbnRlZCBieSB0aGUgbW9uZ29kL21vbmdvcyBpbnN0YW5jZS4gKi9cbiAgdGxzQWxsb3dJbnZhbGlkQ2VydGlmaWNhdGVzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBkaXNhYmxlIGhvc3RuYW1lIHZhbGlkYXRpb24gb2YgdGhlIGNlcnRpZmljYXRlIHByZXNlbnRlZCBieSB0aGUgbW9uZ29kL21vbmdvcyBpbnN0YW5jZS4gKi9cbiAgdGxzQWxsb3dJbnZhbGlkSG9zdG5hbWVzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBkaXNhYmxlIHZhcmlvdXMgY2VydGlmaWNhdGUgdmFsaWRhdGlvbnMuICovXG4gIHRsc0luc2VjdXJlOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IGFuIGFycmF5IG9yIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcgb2YgY29tcHJlc3NvcnMgdG8gZW5hYmxlIG5ldHdvcmsgY29tcHJlc3Npb24gZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGlzIGNsaWVudCBhbmQgYSBtb25nb2QvbW9uZ29zIGluc3RhbmNlLiAqL1xuICBjb21wcmVzc29yczogPyhzdHJpbmdbXSB8IHN0cmluZyk7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgaWYgdXNpbmcgemxpYiBmb3IgbmV0d29yayBjb21wcmVzc2lvbiAoMC05KS4gKi9cbiAgemxpYkNvbXByZXNzaW9uTGV2ZWw6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgcmVhZCBwcmVmZXJlbmNlcyBmb3IgdGhpcyBjb25uZWN0aW9uLiAqL1xuICByZWFkUHJlZmVyZW5jZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSB0YWdzIGRvY3VtZW50IGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29sb24tc2VwYXJhdGVkIGtleS12YWx1ZSBwYWlycy4gKi9cbiAgcmVhZFByZWZlcmVuY2VUYWdzOiA/KGFueVtdKTtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBsZXZlbCBvZiBpc29sYXRpb24uICovXG4gIHJlYWRDb25jZXJuTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgZGF0YWJhc2UgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIncyBjcmVkZW50aWFscy4gKi9cbiAgYXV0aFNvdXJjZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gdGhhdCBNb25nb0RCIHdpbGwgdXNlIHRvIGF1dGhlbnRpY2F0ZSB0aGUgY29ubmVjdGlvbi4gKi9cbiAgYXV0aE1lY2hhbmlzbTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHByb3BlcnRpZXMgZm9yIHRoZSBzcGVjaWZpZWQgYXV0aE1lY2hhbmlzbSBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbG9uLXNlcGFyYXRlZCBrZXktdmFsdWUgcGFpcnMuICovXG4gIGF1dGhNZWNoYW5pc21Qcm9wZXJ0aWVzOiA/YW55O1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uIHRoYXQgY3JlYXRlZCB0aGlzIE1vbmdvQ2xpZW50IGluc3RhbmNlLiAqL1xuICBhcHBOYW1lOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGVuYWJsZSByZXRyeWFibGUgcmVhZHMuICovXG4gIHJldHJ5UmVhZHM6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGZvcmNlIHNlcnZlciB0byBhc3NpZ24gX2lkIHZhbHVlcyBpbnN0ZWFkIG9mIGRyaXZlci4gKi9cbiAgZm9yY2VTZXJ2ZXJPYmplY3RJZDogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gaW5zdHJ1Y3QgdGhlIGRyaXZlciBtb25pdG9ycyB0byB1c2UgYSBzcGVjaWZpYyBtb25pdG9yaW5nIG1vZGUuICovXG4gIHNlcnZlck1vbml0b3JpbmdNb2RlOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGNvbmZpZ3VyZSBhIFNvY2tzNSBwcm94eSBob3N0IHVzZWQgZm9yIGNyZWF0aW5nIFRDUCBjb25uZWN0aW9ucy4gKi9cbiAgcHJveHlIb3N0OiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGNvbmZpZ3VyZSBhIFNvY2tzNSBwcm94eSBwb3J0IHVzZWQgZm9yIGNyZWF0aW5nIFRDUCBjb25uZWN0aW9ucy4gKi9cbiAgcHJveHlQb3J0OiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGNvbmZpZ3VyZSBhIFNvY2tzNSBwcm94eSB1c2VybmFtZSB3aGVuIHRoZSBwcm94eSByZXF1aXJlcyB1c2VybmFtZS9wYXNzd29yZCBhdXRoZW50aWNhdGlvbi4gKi9cbiAgcHJveHlVc2VybmFtZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBjb25maWd1cmUgYSBTb2NrczUgcHJveHkgcGFzc3dvcmQgd2hlbiB0aGUgcHJveHkgcmVxdWlyZXMgdXNlcm5hbWUvcGFzc3dvcmQgYXV0aGVudGljYXRpb24uICovXG4gIHByb3h5UGFzc3dvcmQ6ID9zdHJpbmc7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgaW5kZXhlcyBvbiB0aGUgZW1haWwgZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJFbWFpbDogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSBjYXNlLWluc2Vuc2l0aXZlIGluZGV4IG9uIHRoZSBlbWFpbCBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlckVtYWlsQ2FzZUluc2Vuc2l0aXZlOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhbiBpbmRleCBvbiB0aGUgX2VtYWlsX3ZlcmlmeV90b2tlbiBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlckVtYWlsVmVyaWZ5VG9rZW46ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGFuIGluZGV4IG9uIHRoZSBfcGVyaXNoYWJsZV90b2tlbiBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlclBhc3N3b3JkUmVzZXRUb2tlbjogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgaW5kZXhlcyBvbiB0aGUgdXNlcm5hbWUgZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJVc2VybmFtZTogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSBjYXNlLWluc2Vuc2l0aXZlIGluZGV4IG9uIHRoZSB1c2VybmFtZSBmaWVsZCBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBvbiBzZXJ2ZXIgc3RhcnQuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXgsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSB0byBiZSBvcHRpbWl6ZWQgZm9yIHRoZSBpbnRlcm5hbCB1c2FnZSBieSBQYXJzZSBTZXJ2ZXIuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGNyZWF0ZUluZGV4VXNlclVzZXJuYW1lQ2FzZUluc2Vuc2l0aXZlOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB1bmlxdWUgaW5kZXhlcyBvbiB0aGUgYXV0aERhdGEgZmllbGRzIG9mIHRoZSBfVXNlciBjb2xsZWN0aW9uIGZvciBlYWNoIGNvbmZpZ3VyZWQgYXV0aCBwcm92aWRlciBvbiBzZXJ2ZXIgc3RhcnQsIGluY2x1ZGluZyBgYW5vbnltb3VzYCB3aGVuIGFub255bW91cyB1c2VycyBhcmUgZW5hYmxlZC4gVGhlc2UgaW5kZXhlcyBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgY29uY3VycmVudCBzaWdudXBzIHdpdGggdGhlIHNhbWUgYXV0aERhdGEuIFNldCB0byBgZmFsc2VgIHRvIHNraXAgaW5kZXggY3JlYXRpb24uIERlZmF1bHQgaXMgYHRydWVgLjxicj48YnI+4pqg77iPIFdoZW4gc2V0dGluZyB0aGlzIG9wdGlvbiB0byBgZmFsc2VgIHRvIG1hbnVhbGx5IGNyZWF0ZSB0aGUgaW5kZXhlcywga2VlcCBpbiBtaW5kIHRoYXQgdGhlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5kZXhlcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleEF1dGhEYXRhVW5pcXVlbmVzczogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSB1bmlxdWUgaW5kZXggb24gdGhlIG5hbWUgZmllbGQgb2YgdGhlIF9Sb2xlIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFJvbGVOYW1lOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBkaXNhYmxlIHZhbGlkYXRpb24gb2YgaW5kZXggZmllbGRzLiBXaGVuIGRpc2FibGVkLCBpbmRleGVzIGNhbiBiZSBjcmVhdGVkIGV2ZW4gaWYgdGhlIGZpZWxkcyBkbyBub3QgZXhpc3QgaW4gdGhlIHNjaGVtYS4gVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gY3JlYXRpbmcgaW5kZXhlcyBvbiBmaWVsZHMgdGhhdCB3aWxsIGJlIGFkZGVkIGxhdGVyLiAqL1xuICBkaXNhYmxlSW5kZXhGaWVsZFZhbGlkYXRpb246ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGFsbG93IGBQYXJzZS5RdWVyeS5leHBsYWluYCB3aXRob3V0IG1hc3RlciBrZXkuPGJyPjxicj7imqDvuI8gRW5hYmxpbmcgdGhpcyBvcHRpb24gbWF5IGV4cG9zZSBzZW5zaXRpdmUgcXVlcnkgcGVyZm9ybWFuY2UgZGF0YSB0byB1bmF1dGhvcml6ZWQgdXNlcnMgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGJlIGV4cGxvaXRlZCBmb3IgbWFsaWNpb3VzIHB1cnBvc2VzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWxsb3dQdWJsaWNFeHBsYWluOiA/Ym9vbGVhbjtcbiAgLyogQW4gYXJyYXkgb2YgTW9uZ29EQiBjbGllbnQgZXZlbnQgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlIGxvZ2dpbmcgb2Ygc3BlY2lmaWMgZXZlbnRzLiAqL1xuICBsb2dDbGllbnRFdmVudHM6ID8oTG9nQ2xpZW50RXZlbnRbXSk7XG4gIC8qIEN1c3RvbSBtZXRhZGF0YSB0byBhcHBlbmQgdG8gZGF0YWJhc2UgY2xpZW50IGNvbm5lY3Rpb25zIGZvciBpZGVudGlmeWluZyBQYXJzZSBTZXJ2ZXIgaW5zdGFuY2VzIGluIGRhdGFiYXNlIGxvZ3MuIElmIHNldCwgdGhpcyBtZXRhZGF0YSB3aWxsIGJlIHZpc2libGUgaW4gZGF0YWJhc2UgbG9ncyBkdXJpbmcgY29ubmVjdGlvbiBoYW5kc2hha2VzLiBUaGlzIGNhbiBoZWxwIHdpdGggZGVidWdnaW5nIGFuZCBtb25pdG9yaW5nIGluIGRlcGxveW1lbnRzIHdpdGggbXVsdGlwbGUgZGF0YWJhc2UgY2xpZW50cy4gU2V0IGBuYW1lYCB0byBpZGVudGlmeSB5b3VyIGFwcGxpY2F0aW9uIChlLmcuLCAnTXlBcHAnKSBhbmQgYHZlcnNpb25gIHRvIHlvdXIgYXBwbGljYXRpb24ncyB2ZXJzaW9uLiBMZWF2ZSB1bmRlZmluZWQgKGRlZmF1bHQpIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlIGFuZCBhdm9pZCB0aGUgYWRkaXRpb25hbCBkYXRhIHRyYW5zZmVyIG92ZXJoZWFkLiAqL1xuICBjbGllbnRNZXRhZGF0YTogP0RhdGFiYXNlT3B0aW9uc0NsaWVudE1ldGFkYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlT3B0aW9uc0NsaWVudE1ldGFkYXRhIHtcbiAgLyogVGhlIG5hbWUgdG8gaWRlbnRpZnkgeW91ciBhcHBsaWNhdGlvbiBpbiBkYXRhYmFzZSBsb2dzIChlLmcuLCAnTXlBcHAnKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiBUaGUgdmVyc2lvbiBvZiB5b3VyIGFwcGxpY2F0aW9uIChlLmcuLCAnMS4wLjAnKS4gKi9cbiAgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhBZGFwdGVyIHtcbiAgLyogSXMgYHRydWVgIGlmIHRoZSBhdXRoIGFkYXB0ZXIgaXMgZW5hYmxlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gIDpERUZBVUxUOiBmYWxzZVxuICA6RU5WOlxuICAqL1xuICBlbmFibGVkOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dMZXZlbHMge1xuICAvKiBMb2cgbGV2ZWwgdXNlZCBieSB0aGUgQ2xvdWQgQ29kZSBUcmlnZ2VycyBgYWZ0ZXJTYXZlYCwgYGFmdGVyRGVsZXRlYCwgYGFmdGVyRmluZGAsIGBhZnRlckxvZ291dGAuIERlZmF1bHQgaXMgYGluZm9gLiBTZWUgW0xvZ0xldmVsXShMb2dMZXZlbC5odG1sKSBmb3IgYXZhaWxhYmxlIHZhbHVlcy5cbiAgOkRFRkFVTFQ6IGluZm9cbiAgKi9cbiAgdHJpZ2dlckFmdGVyOiA/c3RyaW5nO1xuICAvKiBMb2cgbGV2ZWwgdXNlZCBieSB0aGUgQ2xvdWQgQ29kZSBUcmlnZ2VycyBgYmVmb3JlU2F2ZWAsIGBiZWZvcmVEZWxldGVgLCBgYmVmb3JlRmluZGAsIGBiZWZvcmVMb2dpbmAgb24gc3VjY2Vzcy4gRGVmYXVsdCBpcyBgaW5mb2AuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogaW5mb1xuICAqL1xuICB0cmlnZ2VyQmVmb3JlU3VjY2VzczogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgVHJpZ2dlcnMgYGJlZm9yZVNhdmVgLCBgYmVmb3JlRGVsZXRlYCwgYGJlZm9yZUZpbmRgLCBgYmVmb3JlTG9naW5gIG9uIGVycm9yLiBEZWZhdWx0IGlzIGBlcnJvcmAuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogZXJyb3JcbiAgKi9cbiAgdHJpZ2dlckJlZm9yZUVycm9yOiA/c3RyaW5nO1xuICAvKiBMb2cgbGV2ZWwgdXNlZCBieSB0aGUgQ2xvdWQgQ29kZSBGdW5jdGlvbnMgb24gc3VjY2Vzcy4gRGVmYXVsdCBpcyBgaW5mb2AuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogaW5mb1xuICAqL1xuICBjbG91ZEZ1bmN0aW9uU3VjY2VzczogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgRnVuY3Rpb25zIG9uIGVycm9yLiBEZWZhdWx0IGlzIGBlcnJvcmAuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogZXJyb3JcbiAgKi9cbiAgY2xvdWRGdW5jdGlvbkVycm9yOiA/c3RyaW5nO1xuICAvKiBMb2cgbGV2ZWwgdXNlZCB3aGVuIGEgc2lnbi11cCBmYWlscyBiZWNhdXNlIHRoZSB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cy4gRGVmYXVsdCBpcyBgaW5mb2AuIFNlZSBbTG9nTGV2ZWxdKExvZ0xldmVsLmh0bWwpIGZvciBhdmFpbGFibGUgdmFsdWVzLlxuICA6REVGQVVMVDogaW5mb1xuICAqL1xuICBzaWdudXBVc2VybmFtZVRha2VuOiA/c3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUNBLElBQUFBLGlCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQW5hbHl0aWNzQWRhcHRlciIsInJlcXVpcmUiLCJfQ2FjaGVBZGFwdGVyIiwiX01haWxBZGFwdGVyIiwiX0ZpbGVzQWRhcHRlciIsIl9Mb2dnZXJBZGFwdGVyIiwiX1B1YlN1YkFkYXB0ZXIiLCJfU3RvcmFnZUFkYXB0ZXIiLCJfV1NTQWRhcHRlciIsIl9DaGVja0dyb3VwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL09wdGlvbnMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCB7IEFuYWx5dGljc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9BbmFseXRpY3MvQW5hbHl0aWNzQWRhcHRlcic7XG5pbXBvcnQgeyBDYWNoZUFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9DYWNoZS9DYWNoZUFkYXB0ZXInO1xuaW1wb3J0IHsgTWFpbEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9FbWFpbC9NYWlsQWRhcHRlcic7XG5pbXBvcnQgeyBGaWxlc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9GaWxlcy9GaWxlc0FkYXB0ZXInO1xuaW1wb3J0IHsgTG9nZ2VyQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0xvZ2dlci9Mb2dnZXJBZGFwdGVyJztcbmltcG9ydCB7IFB1YlN1YkFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdWJTdWIvUHViU3ViQWRhcHRlcic7XG5pbXBvcnQgeyBTdG9yYWdlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXInO1xuaW1wb3J0IHsgV1NTQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL1dlYlNvY2tldFNlcnZlci9XU1NBZGFwdGVyJztcbmltcG9ydCB7IENoZWNrR3JvdXAgfSBmcm9tICcuLi9TZWN1cml0eS9DaGVja0dyb3VwJztcblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWFPcHRpb25zIHtcbiAgLyogUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYVxuICA6REVGQVVMVDogW10gKi9cbiAgZGVmaW5pdGlvbnM6IGFueTtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgc3RyaWN0OiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGRlbGV0ZSBhbnkgZmllbGRzIG5vdCBkZWZpbmVkIGluIGEgc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkZWxldGVFeHRyYUZpZWxkczogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCByZWNyZWF0ZSBhbnkgZmllbGRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGRhdGFiYXNlIHNjaGVtYSBhbmQgdGhlc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICByZWNyZWF0ZU1vZGlmaWVkRmllbGRzOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgd2lsbCByZWplY3QgYW55IGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgc2NoZW1hIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGxvY2tTY2hlbWFzOiA/Ym9vbGVhbjtcbiAgLyogKE9wdGlvbmFsKSBLZWVwIGluZGV4ZXMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgZGF0YWJhc2UgYnV0IG5vdCBkZWZpbmVkIGluIHRoZSBzY2hlbWEuIFNldCB0aGlzIHRvIGB0cnVlYCBpZiB5b3UgYXJlIGFkZGluZyBpbmRleGVzIG1hbnVhbGx5LCBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgcmVtb3ZlZCB3aGVuIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbi4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAga2VlcFVua25vd25JbmRleGVzOiA/Ym9vbGVhbjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGJlZm9yZSBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLiAqL1xuICBiZWZvcmVNaWdyYXRpb246ID8oKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgLyogRXhlY3V0ZSBhIGNhbGxiYWNrIGFmdGVyIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuICovXG4gIGFmdGVyTWlncmF0aW9uOiA/KCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgQWRhcHRlcjxUPiA9IHN0cmluZyB8IGFueSB8IFQ7XG50eXBlIE51bWJlck9yQm9vbGVhbiA9IG51bWJlciB8IGJvb2xlYW47XG50eXBlIE51bWJlck9yU3RyaW5nID0gbnVtYmVyIHwgc3RyaW5nO1xudHlwZSBQcm90ZWN0ZWRGaWVsZHMgPSBhbnk7XG50eXBlIFN0cmluZ09yU3RyaW5nQXJyYXkgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbnR5cGUgUmVxdWVzdEtleXdvcmREZW55bGlzdCA9IHtcbiAga2V5OiBzdHJpbmcgfCBhbnksXG4gIHZhbHVlOiBhbnksXG59O1xudHlwZSBFbWFpbFZlcmlmaWNhdGlvblJlcXVlc3QgPSB7XG4gIG9yaWdpbmFsPzogYW55LFxuICBvYmplY3Q6IGFueSxcbiAgbWFzdGVyPzogYm9vbGVhbixcbiAgaXA/OiBzdHJpbmcsXG4gIGluc3RhbGxhdGlvbklkPzogc3RyaW5nLFxuICBjcmVhdGVkV2l0aD86IHtcbiAgICBhY3Rpb246ICdsb2dpbicgfCAnc2lnbnVwJyxcbiAgICBhdXRoUHJvdmlkZXI6IHN0cmluZyxcbiAgfSxcbiAgcmVzZW5kUmVxdWVzdD86IGJvb2xlYW4sXG59O1xudHlwZSBTZW5kRW1haWxWZXJpZmljYXRpb25SZXF1ZXN0ID0ge1xuICB1c2VyOiBhbnksXG4gIG1hc3Rlcj86IGJvb2xlYW4sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9ucyB7XG4gIC8qIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qIFlvdXIgUGFyc2UgTWFzdGVyIEtleSAqL1xuICBtYXN0ZXJLZXk6ICgoKSA9PiB2b2lkKSB8IHN0cmluZztcbiAgLyogKE9wdGlvbmFsKSBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgYG1hc3RlcktleWAgaXMgYmVpbmcgdXNlZCBiZWZvcmUgaXQgaXMgcmVxdWVzdGVkIGFnYWluIGlmIGBtYXN0ZXJLZXlgIGlzIHNldCB0byBhIGZ1bmN0aW9uLiBJZiBgbWFzdGVyS2V5YCBpcyBub3Qgc2V0IHRvIGEgZnVuY3Rpb24sIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QuIERlZmF1bHQgaXMgYDBgLCB3aGljaCBtZWFucyB0aGUgbWFzdGVyIGtleSBpcyByZXF1ZXN0ZWQgYnkgaW52b2tpbmcgdGhlICBgbWFzdGVyS2V5YCBmdW5jdGlvbiBldmVyeSB0aW1lIHRoZSBtYXN0ZXIga2V5IGlzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIuICovXG4gIG1hc3RlcktleVR0bDogP251bWJlcjtcbiAgLyogKE9wdGlvbmFsKSBUaGUgbWFpbnRlbmFuY2Uga2V5IGlzIHVzZWQgZm9yIG1vZGlmeWluZyBpbnRlcm5hbCBhbmQgcmVhZC1vbmx5IGZpZWxkcyBvZiBQYXJzZSBTZXJ2ZXIuPGJyPjxicj7imqDvuI8gVGhpcyBrZXkgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBhIHJlZ3VsYXIgb3BlcmF0aW9uIG9mIFBhcnNlIFNlcnZlci4gVGhpcyBrZXkgaXMgaW50ZW5kZWQgdG8gY29uZHVjdCBvdXQtb2YtYmFuZCBjaGFuZ2VzIHN1Y2ggYXMgb25lLXRpbWUgbWlncmF0aW9ucyBvciBkYXRhIGNvcnJlY3Rpb24gdGFza3MuIEludGVybmFsIGZpZWxkcyBhcmUgbm90IG9mZmljaWFsbHkgZG9jdW1lbnRlZCBhbmQgbWF5IGNoYW5nZSBhdCBhbnkgdGltZSB3aXRob3V0IHB1YmxpY2F0aW9uIGluIHJlbGVhc2UgY2hhbmdlbG9ncy4gV2Ugc3Ryb25nbHkgYWR2aWNlIG5vdCB0byByZWx5IG9uIGludGVybmFsIGZpZWxkcyBhcyBwYXJ0IG9mIHlvdXIgcmVndWxhciBvcGVyYXRpb24gYW5kIHRvIGludmVzdGlnYXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IHBsYW5uZWQgY2hhbmdlcyAqZGlyZWN0bHkgaW4gdGhlIHNvdXJjZSBjb2RlKiBvZiB5b3VyIGN1cnJlbnQgdmVyc2lvbiBvZiBQYXJzZSBTZXJ2ZXIuICovXG4gIG1haW50ZW5hbmNlS2V5OiBzdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gUGFyc2UgU2VydmVyLjxicj48YnI+4pqg77iPIENlcnRhaW4gc2VydmVyIGZlYXR1cmVzIG9yIGFkYXB0ZXJzIG1heSByZXF1aXJlIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC4gSWYgYSBmZWF0dXJlIHJlcXVpcmVzIHRoaXMsIGl0IGlzIG1lbnRpb25lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSW4gdGhhdCBjYXNlIGVuc3VyZSB0aGF0IHRoZSBVUkwgaXMgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfVVJMICovXG4gIHNlcnZlclVSTDogc3RyaW5nO1xuICAvKiBQYXJzZSBTZXJ2ZXIgbWFrZXMgYSBIVFRQIHJlcXVlc3QgdG8gdGhlIFVSTCBzZXQgaW4gYHNlcnZlclVSTGAgYXQgdGhlIGVuZCBvZiBpdHMgbGF1bmNoIHJvdXRpbmUgdG8gdmVyaWZ5IHRoYXQgdGhlIGxhdW5jaCBzdWNjZWVkZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBgZmFsc2VgLCB0aGUgdmVyaWZpY2F0aW9uIHdpbGwgYmUgc2tpcHBlZC4gVGhpcyBjYW4gYmUgdXNlZnVsIGluIGVudmlyb25tZW50cyB3aGVyZSB0aGUgc2VydmVyIFVSTCBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIHRoZSBzZXJ2ZXIgaXRzZWxmLCBzdWNoIGFzIHdoZW4gcnVubmluZyBiZWhpbmQgYSBmaXJld2FsbCBvciBpbiBjZXJ0YWluIGNvbnRhaW5lcml6ZWQgZW52aXJvbm1lbnRzLjxicj48YnI+4pqg77iPIFNlcnZlciBVUkwgdmVyaWZpY2F0aW9uIHJlcXVpcmVzIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC48YnI+PGJyPkRlZmF1bHQgaXMgYHRydWVgLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICB2ZXJpZnlTZXJ2ZXJVcmw6ID9ib29sZWFuO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIG1hc3RlciBrZXkgcGVybWlzc2lvbnMgdG8gYSBsaXN0IG9mIElQIGFkZHJlc3NlcyBvciByYW5nZXMuPGJyPjxicj5UaGlzIG9wdGlvbiBhY2NlcHRzIGEgbGlzdCBvZiBzaW5nbGUgSVAgYWRkcmVzc2VzLCBmb3IgZXhhbXBsZSBgWycxMC4wLjAuMScsICcxMC4wLjAuMiddYC4gWW91IGNhbiBhbHNvIHVzZSBDSURSIG5vdGF0aW9uIHRvIHNwZWNpZnkgYW4gSVAgYWRkcmVzcyByYW5nZSwgZm9yIGV4YW1wbGUgYFsnMTAuMC4xLjAvMjQnXWAuPGJyPjxicj48Yj5TcGVjaWFsIHNjZW5hcmlvczo8L2I+PGJyPi0gU2V0dGluZyBhbiBlbXB0eSBhcnJheSBgW11gIG1lYW5zIHRoYXQgdGhlIG1hc3RlciBrZXkgY2Fubm90IGJlIHVzZWQgZXZlbiBpbiBQYXJzZSBTZXJ2ZXIgQ2xvdWQgQ29kZS4gVGhpcyB2YWx1ZSBjYW5ub3QgYmUgc2V0IHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcGFzcyBhbiBlbXB0eSBhcnJheSB0byBQYXJzZSBTZXJ2ZXIgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLjxicj4tIFNldHRpbmcgYFsnMC4wLjAuMC8wJywgJzo6MCddYCBtZWFucyB0byBhbGxvdyBhbnkgSVB2NCBhbmQgSVB2NiBhZGRyZXNzIHRvIHVzZSB0aGUgbWFzdGVyIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzEyNy4wLjAuMScsICc6OjEnXWAgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IGBsb2NhbGhvc3RgLCB0aGUgc2VydmVyIGluc3RhbmNlIG9uIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgbWFzdGVyIGtleS5cbiAgOkRFRkFVTFQ6IFtcIjEyNy4wLjAuMVwiLFwiOjoxXCJdICovXG4gIG1hc3RlcktleUlwczogPyhzdHJpbmdbXSk7XG4gIC8qIChPcHRpb25hbCkgUmVzdHJpY3RzIGV4dGVybmFsIGNsaWVudCBhY2Nlc3MgdG8gYSBsaXN0IG9mIGFsbG93ZWQgUkVTVCBBUEkgcm91dGVzLjxicj48YnI+V2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIGFsbCBleHRlcm5hbCBub24tbWFzdGVyLWtleSBSRVNUIEFQSSByZXF1ZXN0cyBhcmUgZGVuaWVkIGJ5IGRlZmF1bHQuIE9ubHkgcm91dGVzIG1hdGNoaW5nIGF0IGxlYXN0IG9uZSBvZiB0aGUgY29uZmlndXJlZCByZWdleCBwYXR0ZXJucyBhcmUgYWxsb3dlZCB0aHJvdWdoLiBJbnRlcm5hbCBjYWxscyBmcm9tIENsb3VkIENvZGUsIENsb3VkIEpvYnMsIGFuZCB0cmlnZ2VycyBhcmUgbm90IGFmZmVjdGVkLjxicj48YnI+RWFjaCBlbnRyeSBpcyBhIHJlZ2V4IHBhdHRlcm4gc3RyaW5nIG1hdGNoZWQgYWdhaW5zdCB0aGUgbm9ybWFsaXplZCByb3V0ZSBpZGVudGlmaWVyIChyZXF1ZXN0IHBhdGggd2l0aCBtb3VudCBwcmVmaXggYW5kIGxlYWRpbmcgc2xhc2ggc3RyaXBwZWQpLiBQYXR0ZXJucyBhcmUgYXV0by1hbmNob3JlZCB3aXRoIGBeYCBhbmQgYCRgIGZvciBmdWxsLW1hdGNoIHNlbWFudGljcy48YnI+PGJyPjxiPkV4YW1wbGVzIG9mIG5vcm1hbGl6ZWQgcm91dGUgaWRlbnRpZmllcnM6PC9iPjx1bD48bGk+YGNsYXNzZXMvR2FtZVNjb3JlYCAoY2xhc3MgQ1JVRCk8L2xpPjxsaT5gY2xhc3Nlcy9HYW1lU2NvcmUvYWJjMTIzYCAob2JqZWN0IGJ5IElEKTwvbGk+PGxpPmB1c2Vyc2AgKHVzZXIgb3BlcmF0aW9ucyk8L2xpPjxsaT5gbG9naW5gIChsb2dpbiBlbmRwb2ludCk8L2xpPjxsaT5gZnVuY3Rpb25zL3NlbmRFbWFpbGAgKENsb3VkIEZ1bmN0aW9uKTwvbGk+PGxpPmBqb2JzL2NsZWFudXBgIChDbG91ZCBKb2IpPC9saT48bGk+YHB1c2hgIChwdXNoIG5vdGlmaWNhdGlvbnMpPC9saT48bGk+YGNvbmZpZ2AgKGNsaWVudCBjb25maWcpPC9saT48bGk+YGluc3RhbGxhdGlvbnNgIChpbnN0YWxsYXRpb25zKTwvbGk+PC91bD48Yj5FeGFtcGxlIHBhdHRlcm5zOjwvYj48dWw+PGxpPmBjbGFzc2VzL0NoYXRNZXNzYWdlYCBtYXRjaGVzIG9ubHkgYGNsYXNzZXMvQ2hhdE1lc3NhZ2VgPC9saT48bGk+YGNsYXNzZXMvQ2hhdC4qYCBtYXRjaGVzIGBjbGFzc2VzL0NoYXRNZXNzYWdlYCwgYGNsYXNzZXMvQ2hhdFJvb21gLCBldGMuPC9saT48bGk+YGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgQ2xvdWQgRnVuY3Rpb25zPC9saT48L3VsPlNldHRpbmcgYW4gZW1wdHkgYXJyYXkgYFtdYCBibG9ja3MgYWxsIGV4dGVybmFsIG5vbi1tYXN0ZXIta2V5IFJFU1QgQVBJIHJlcXVlc3RzIChmdWxsIGxvY2tkb3duIG9mIFJFU1QgQVBJIHJvdXRlcykuPGJyPjxicj5XaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBub3RhdGlvbiBpcyBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlIGBcImNsYXNzZXMvQ2hhdE1lc3NhZ2UsdXNlcnMsZnVuY3Rpb25zLy4qXCJgLjxicj48YnI+RGVmYXVsdHMgdG8gYHVuZGVmaW5lZGAgd2hpY2ggbWVhbnMgdGhlIGZlYXR1cmUgaXMgaW5hY3RpdmUgYW5kIGFsbCByb3V0ZXMgYXJlIGFjY2Vzc2libGUuPGJyPjxicj48Yj5Ob3RlOjwvYj4gRmlsZSByb3V0ZXMsIHRoZSBQYWdlcyBBUEkgYW5kIHRoZSBHcmFwaFFMIEFQSSBhcmUgbm90IGNvdmVyZWQgYnkgdGhpcyBvcHRpb24uKi9cbiAgcm91dGVBbGxvd0xpc3Q6ID8oc3RyaW5nW10pO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIG1haW50ZW5hbmNlIGtleSBwZXJtaXNzaW9ucyB0byBhIGxpc3Qgb2YgSVAgYWRkcmVzc2VzIG9yIHJhbmdlcy48YnI+PGJyPlRoaXMgb3B0aW9uIGFjY2VwdHMgYSBsaXN0IG9mIHNpbmdsZSBJUCBhZGRyZXNzZXMsIGZvciBleGFtcGxlIGBbJzEwLjAuMC4xJywgJzEwLjAuMC4yJ11gLiBZb3UgY2FuIGFsc28gdXNlIENJRFIgbm90YXRpb24gdG8gc3BlY2lmeSBhbiBJUCBhZGRyZXNzIHJhbmdlLCBmb3IgZXhhbXBsZSBgWycxMC4wLjEuMC8yNCddYC48YnI+PGJyPjxiPlNwZWNpYWwgc2NlbmFyaW9zOjwvYj48YnI+LSBTZXR0aW5nIGFuIGVtcHR5IGFycmF5IGBbXWAgbWVhbnMgdGhhdCB0aGUgbWFpbnRlbmFuY2Uga2V5IGNhbm5vdCBiZSB1c2VkIGV2ZW4gaW4gUGFyc2UgU2VydmVyIENsb3VkIENvZGUuIFRoaXMgdmFsdWUgY2Fubm90IGJlIHNldCB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHBhc3MgYW4gZW1wdHkgYXJyYXkgdG8gUGFyc2UgU2VydmVyIHZpYSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS48YnI+LSBTZXR0aW5nIGBbJzAuMC4wLjAvMCcsICc6OjAnXWAgbWVhbnMgdG8gYWxsb3cgYW55IElQdjQgYW5kIElQdjYgYWRkcmVzcyB0byB1c2UgdGhlIG1haW50ZW5hbmNlIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzEyNy4wLjAuMScsICc6OjEnXWAgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IGBsb2NhbGhvc3RgLCB0aGUgc2VydmVyIGluc3RhbmNlIG9uIHdoaWNoIFBhcnNlIFNlcnZlciBydW5zLCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgbWFpbnRlbmFuY2Uga2V5LlxuICA6REVGQVVMVDogW1wiMTI3LjAuMC4xXCIsXCI6OjFcIl0gKi9cbiAgbWFpbnRlbmFuY2VLZXlJcHM6ID8oc3RyaW5nW10pO1xuICAvKiAoT3B0aW9uYWwpIFJlc3RyaWN0cyB0aGUgdXNlIG9mIHJlYWQtb25seSBtYXN0ZXIga2V5IHBlcm1pc3Npb25zIHRvIGEgbGlzdCBvZiBJUCBhZGRyZXNzZXMgb3IgcmFuZ2VzLjxicj48YnI+VGhpcyBvcHRpb24gYWNjZXB0cyBhIGxpc3Qgb2Ygc2luZ2xlIElQIGFkZHJlc3NlcywgZm9yIGV4YW1wbGUgYFsnMTAuMC4wLjEnLCAnMTAuMC4wLjInXWAuIFlvdSBjYW4gYWxzbyB1c2UgQ0lEUiBub3RhdGlvbiB0byBzcGVjaWZ5IGFuIElQIGFkZHJlc3MgcmFuZ2UsIGZvciBleGFtcGxlIGBbJzEwLjAuMS4wLzI0J11gLjxicj48YnI+PGI+U3BlY2lhbCBzY2VuYXJpb3M6PC9iPjxicj4tIFNldHRpbmcgYW4gZW1wdHkgYXJyYXkgYFtdYCBtZWFucyB0aGF0IHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBjYW5ub3QgYmUgdXNlZCBldmVuIGluIFBhcnNlIFNlcnZlciBDbG91ZCBDb2RlLiBUaGlzIHZhbHVlIGNhbm5vdCBiZSBzZXQgdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwYXNzIGFuIGVtcHR5IGFycmF5IHRvIFBhcnNlIFNlcnZlciB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuPGJyPi0gU2V0dGluZyBgWycwLjAuMC4wLzAnLCAnOjowJ11gIG1lYW5zIHRvIGFsbG93IGFueSBJUHY0IGFuZCBJUHY2IGFkZHJlc3MgdG8gdXNlIHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBhbmQgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIElQIGZpbHRlci48YnI+PGJyPjxiPkNvbnNpZGVyYXRpb25zOjwvYj48YnI+LSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhcmUgbm90IGNvbXBhcmVkIGFnYWluc3QgZWFjaCBvdGhlci4gRWFjaCBJUCB2ZXJzaW9uIChJUHY0IGFuZCBJUHY2KSBuZWVkcyB0byBiZSBjb25zaWRlcmVkIHNlcGFyYXRlbHkuIEZvciBleGFtcGxlLCBgWycwLjAuMC4wLzAnXWAgYWxsb3dzIGFueSBJUHY0IGFkZHJlc3MgYW5kIGJsb2NrcyBldmVyeSBJUHY2IGFkZHJlc3MuIENvbnZlcnNlbHksIGBbJzo6MCddYCBhbGxvd3MgYW55IElQdjYgYWRkcmVzcyBhbmQgYmxvY2tzIGV2ZXJ5IElQdjQgYWRkcmVzcy48YnI+LSBLZWVwIGluIG1pbmQgdGhhdCB0aGUgSVAgdmVyc2lvbiBpbiB1c2UgZGVwZW5kcyBvbiB0aGUgbmV0d29yayBzdGFjayBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggUGFyc2UgU2VydmVyIHJ1bnMuIEEgbG9jYWwgZW52aXJvbm1lbnQgbWF5IHVzZSBhIGRpZmZlcmVudCBJUCB2ZXJzaW9uIHRoYW4gYSByZW1vdGUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIHRoYXQgbG9jYWxseSB0aGUgdmFsdWUgYFsnMC4wLjAuMC8wJ11gIGFsbG93cyB0aGUgcmVxdWVzdCBJUCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBpcyB1c2luZyBJUHY0LCBidXQgd2hlbiBQYXJzZSBTZXJ2ZXIgaXMgZGVwbG95ZWQgcmVtb3RlbHkgdGhlIHJlcXVlc3QgSVAgaXMgYmxvY2tlZCBiZWNhdXNlIHRoZSByZW1vdGUgZW52aXJvbm1lbnQgaXMgdXNpbmcgSVB2Ni48YnI+LSBXaGVuIHNldHRpbmcgdGhlIG9wdGlvbiB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhlIG5vdGF0aW9uIGlzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgZm9yIGV4YW1wbGUgYFwiMC4wLjAuMC8wLDo6MFwiYC48YnI+LSBJUHY2IHpvbmUgaW5kaWNlcyAoYCVgIHN1ZmZpeCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGZvciBleGFtcGxlIGBmZTgwOjoxJWV0aDBgLCBgZmU4MDo6MSUxYCBvciBgOjoxJWxvYC48YnI+PGJyPkRlZmF1bHRzIHRvIGBbJzAuMC4wLjAvMCcsICc6OjAnXWAgd2hpY2ggbWVhbnMgdGhhdCBhbnkgSVAgYWRkcmVzcyBpcyBhbGxvd2VkIHRvIHVzZSB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHNldCB0aGlzIG9wdGlvbiB0byBgWycxMjcuMC4wLjEnLCAnOjoxJ11gIHRvIHJlc3RyaWN0IGFjY2VzcyB0byBgbG9jYWxob3N0YC5cbiAgOkRFRkFVTFQ6IFtcIjAuMC4wLjAvMFwiLFwiOjowXCJdICovXG4gIHJlYWRPbmx5TWFzdGVyS2V5SXBzOiA/KHN0cmluZ1tdKTtcbiAgLyogU2V0cyB0aGUgYXBwIG5hbWUgKi9cbiAgYXBwTmFtZTogP3N0cmluZztcbiAgLyogQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyAqL1xuICBhbGxvd0hlYWRlcnM6ID8oc3RyaW5nW10pO1xuICAvKiBTZXRzIG9yaWdpbnMgZm9yIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4gVGhpcyBjYW4gYmUgYSBzdHJpbmcgZm9yIGEgc2luZ2xlIG9yaWdpbiBvciBhbiBhcnJheSBvZiBzdHJpbmdzIGZvciBtdWx0aXBsZSBvcmlnaW5zLiAqL1xuICBhbGxvd09yaWdpbjogP1N0cmluZ09yU3RyaW5nQXJyYXk7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgYW5hbHl0aWNzICovXG4gIGFuYWx5dGljc0FkYXB0ZXI6ID9BZGFwdGVyPEFuYWx5dGljc0FkYXB0ZXI+O1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGZpbGVzIHN1Yi1zeXN0ZW0gKi9cbiAgZmlsZXNBZGFwdGVyOiA/QWRhcHRlcjxGaWxlc0FkYXB0ZXI+O1xuICAvKiBDb25maWd1cmF0aW9uIGZvciBwdXNoLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNwdXNoLW5vdGlmaWNhdGlvbnMgKi9cbiAgcHVzaDogP2FueTtcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgcHVzaCBzY2hlZHVsaW5nLCBkZWZhdWx0cyB0byBmYWxzZS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHNjaGVkdWxlZFB1c2g6ID9ib29sZWFuO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGxvZ2dpbmcgc3ViLXN5c3RlbSAqL1xuICBsb2dnZXJBZGFwdGVyOiA/QWRhcHRlcjxMb2dnZXJBZGFwdGVyPjtcbiAgLyogTG9nIGFzIHN0cnVjdHVyZWQgSlNPTiBvYmplY3RzXG4gIDpFTlY6IEpTT05fTE9HUyAqL1xuICBqc29uTG9nczogP2Jvb2xlYW47XG4gIC8qIEZvbGRlciBmb3IgdGhlIGxvZ3MgKGRlZmF1bHRzIHRvICcuL2xvZ3MnKTsgc2V0IHRvIG51bGwgdG8gZGlzYWJsZSBmaWxlIGJhc2VkIGxvZ2dpbmdcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0xPR1NfRk9MREVSXG4gIDpERUZBVUxUOiAuL2xvZ3MgKi9cbiAgbG9nc0ZvbGRlcjogP3N0cmluZztcbiAgLyogU2V0IHRoZSBsb2dnaW5nIHRvIHZlcmJvc2VcbiAgOkVOVjogVkVSQk9TRSAqL1xuICB2ZXJib3NlOiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgbGV2ZWwgZm9yIGxvZ3MgKi9cbiAgbG9nTGV2ZWw6ID9zdHJpbmc7XG4gIC8qIChPcHRpb25hbCkgT3ZlcnJpZGVzIHRoZSBsb2cgbGV2ZWxzIHVzZWQgaW50ZXJuYWxseSBieSBQYXJzZSBTZXJ2ZXIgdG8gbG9nIGV2ZW50cy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGxvZ0xldmVsczogP0xvZ0xldmVscztcbiAgLyogTWF4aW11bSBsZW5ndGggb2YgbG9nIG1lc3NhZ2Ugc3RyaW5ncyBiZWZvcmUgdHJ1bmNhdGlvbiBpbiBDbG91ZCBDb2RlIGxvZ3MuXG4gIDpERUZBVUxUOiAxMDAwICovXG4gIGxvZ1N0cmluZ1RydW5jYXRlTGVuZ3RoOiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG51bWJlciBvZiBsb2dzIHRvIGtlZXAuIElmIG5vdCBzZXQsIG5vIGxvZ3Mgd2lsbCBiZSByZW1vdmVkLiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBmaWxlcyBvciBudW1iZXIgb2YgZGF5cy4gSWYgdXNpbmcgZGF5cywgYWRkICdkJyBhcyB0aGUgc3VmZml4LiAoZGVmYXVsdDogbnVsbCkgKi9cbiAgbWF4TG9nRmlsZXM6ID9OdW1iZXJPclN0cmluZztcbiAgLyogRGlzYWJsZXMgY29uc29sZSBvdXRwdXRcbiAgOkVOVjogU0lMRU5UICovXG4gIHNpbGVudDogP2Jvb2xlYW47XG4gIC8qIFRoZSBmdWxsIFVSSSB0byB5b3VyIGRhdGFiYXNlLiBTdXBwb3J0ZWQgZGF0YWJhc2VzIGFyZSBtb25nb2RiIG9yIHBvc3RncmVzLlxuICA6REVGQVVMVDogbW9uZ29kYjovL2xvY2FsaG9zdDoyNzAxNy9wYXJzZSAqL1xuICBkYXRhYmFzZVVSSTogc3RyaW5nO1xuICAvKiBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGRhdGFiYXNlIGNsaWVudFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfREFUQUJBU0VfT1BUSU9OUyAqL1xuICBkYXRhYmFzZU9wdGlvbnM6ID9EYXRhYmFzZU9wdGlvbnM7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZGF0YWJhc2U7IGFueSBvcHRpb25zIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IGRlc2NyaWJlZCBoZXJlIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGRhdGFiYXNlIGNsaWVudC4gKi9cbiAgZGF0YWJhc2VBZGFwdGVyOiA/QWRhcHRlcjxTdG9yYWdlQWRhcHRlcj47XG4gIC8qIE9wdGlvbmFsLiBJZiBzZXQgdG8gYHRydWVgLCB0aGUgY29sbGF0aW9uIHJ1bGUgb2YgY2FzZSBjb21wYXJpc29uIGZvciBxdWVyaWVzIGFuZCBpbmRleGVzIGlzIGVuYWJsZWQuIEVuYWJsZSB0aGlzIG9wdGlvbiB0byBydW4gUGFyc2UgU2VydmVyIHdpdGggTW9uZ29EQiBBdGxhcyBTZXJ2ZXJsZXNzIG9yIEFXUyBBbWF6b24gRG9jdW1lbnREQi4gSWYgYGZhbHNlYCwgdGhlIGNvbGxhdGlvbiBydWxlIG9mIGNhc2UgY29tcGFyaXNvbiBpcyBkaXNhYmxlZC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlQ29sbGF0aW9uQ2FzZUNvbXBhcmlzb246ID9ib29sZWFuO1xuICAvKiBPcHRpb25hbC4gSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGBlbWFpbGAgcHJvcGVydHkgb2YgYSB1c2VyIGlzIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGxvd2VyY2FzZSBiZWZvcmUgYmVpbmcgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gQ29uc2VxdWVudGx5LCBxdWVyaWVzIG11c3QgbWF0Y2ggdGhlIGNhc2UgYXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgd2hpY2ggd291bGQgYmUgbG93ZXJjYXNlIGluIHRoaXMgc2NlbmFyaW8uIElmIGBmYWxzZWAsIHRoZSBgZW1haWxgIHByb3BlcnR5IGlzIHN0b3JlZCBhcyBzZXQsIHdpdGhvdXQgYW55IGNhc2UgbW9kaWZpY2F0aW9ucy4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgY29udmVydEVtYWlsVG9Mb3dlcmNhc2U6ID9ib29sZWFuO1xuICAvKiBPcHRpb25hbC4gSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGB1c2VybmFtZWAgcHJvcGVydHkgb2YgYSB1c2VyIGlzIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGxvd2VyY2FzZSBiZWZvcmUgYmVpbmcgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gQ29uc2VxdWVudGx5LCBxdWVyaWVzIG11c3QgbWF0Y2ggdGhlIGNhc2UgYXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgd2hpY2ggd291bGQgYmUgbG93ZXJjYXNlIGluIHRoaXMgc2NlbmFyaW8uIElmIGBmYWxzZWAsIHRoZSBgdXNlcm5hbWVgIHByb3BlcnR5IGlzIHN0b3JlZCBhcyBzZXQsIHdpdGhvdXQgYW55IGNhc2UgbW9kaWZpY2F0aW9ucy4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgY29udmVydFVzZXJuYW1lVG9Mb3dlcmNhc2U6ID9ib29sZWFuO1xuICAvKiBGdWxsIHBhdGggdG8geW91ciBjbG91ZCBjb2RlIG1haW4uanMgKi9cbiAgY2xvdWQ6ID9zdHJpbmc7XG4gIC8qIEEgY29sbGVjdGlvbiBwcmVmaXggZm9yIHRoZSBjbGFzc2VzXG4gIDpERUZBVUxUOiAnJyAqL1xuICBjb2xsZWN0aW9uUHJlZml4OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIGlPUywgTWFjT1MsIHR2T1MgY2xpZW50cyAqL1xuICBjbGllbnRLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgdGhlIEphdmFzY3JpcHQgU0RLICovXG4gIGphdmFzY3JpcHRLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgVW5pdHkgYW5kIC5OZXQgU0RLICovXG4gIGRvdE5ldEtleTogP3N0cmluZztcbiAgLyogS2V5IGZvciBlbmNyeXB0aW5nIHlvdXIgZmlsZXNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VOQ1JZUFRJT05fS0VZICovXG4gIGVuY3J5cHRpb25LZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgUkVTVCBjYWxsc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfUkVTVF9BUElfS0VZICovXG4gIHJlc3RBUElLZXk6ID9zdHJpbmc7XG4gIC8qIFRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBpcyBhIHNlY3JldCBrZXkgd2l0aCB0aGUgc2FtZSByZWFkIGNhcGFiaWxpdGllcyBhcyB0aGUgYG1hc3RlcktleWAsIGJ1dCB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gd3JpdGVzLiBMaWtlIHRoZSBgbWFzdGVyS2V5YCwgaXQgYnlwYXNzZXMgYWxsIHNlY3VyaXR5IG1lY2hhbmlzbXMgKENsYXNzIExldmVsIFBlcm1pc3Npb25zLCBvYmplY3QgQUNMcywgYHByb3RlY3RlZEZpZWxkc2ApLCBzbyBpdCBncmFudHMgZnVsbCByZWFkIGFjY2VzcyB0byBhbGwgZGF0YS48YnI+PGJyPkl0IGlzIGludGVuZGVkIHN0cmljdGx5IGZvciBpbnRlcm5hbCwgc2VydmVyLXNpZGUgdXNlIOKAlCBmb3IgZXhhbXBsZSB0byBnaXZlIGEgdHJ1c3RlZCBpbnRlcm5hbCBwcm9jZXNzIHJlYWQgYWNjZXNzIHdoaWxlIGd1YXJkaW5nIGFnYWluc3QgYWNjaWRlbnRhbCB3cml0ZXMgZHVyaW5nIGRldmVsb3BtZW50IG9yIG9wZXJhdGlvbnMuIEl0IGlzIG5vdCBhIGNyZWRlbnRpYWwgZm9yIHVudHJ1c3RlZCBjb250ZXh0czogaXQgbXVzdCBuZXZlciBiZSBzaGlwcGVkLCBkaXN0cmlidXRlZCwgcHVibGlzaGVkLCBlbWJlZGRlZCBpbiBhIGNsaWVudCBhcHBsaWNhdGlvbiwgb3Igb3RoZXJ3aXNlIGV4cG9zZWQgdG8gdW50cnVzdGVkIHBhcnRpZXMsIGJlY2F1c2UgYW55b25lIHdobyBvYnRhaW5zIGl0IGNhbiByZWFkIGFsbCBkYXRhIGluIHRoZSBkYXRhYmFzZS4gVXNlIGByZWFkT25seU1hc3RlcktleUlwc2AgdG8gcmVzdHJpY3QgdGhlIElQIGFkZHJlc3NlcyBmcm9tIHdoaWNoIGl0IG1heSBiZSB1c2VkLiAqL1xuICByZWFkT25seU1hc3RlcktleTogP3N0cmluZztcbiAgLyogV2hldGhlciB0aGUgYHJlYWRPbmx5TWFzdGVyS2V5YCBpcyBhbGxvd2VkIHRvIHJ1biBhZ2dyZWdhdGlvbiBwaXBlbGluZXMgdmlhIHRoZSBhZ2dyZWdhdGUgZW5kcG9pbnQuIEFuIGFnZ3JlZ2F0aW9uIHBpcGVsaW5lIGNhbiBjb250YWluIHdyaXRlLWNhcGFibGUgc3RhZ2VzIChmb3IgZXhhbXBsZSBNb25nb0RCIGAkb3V0YCBhbmQgYCRtZXJnZWApLCBzbyBhbGxvd2luZyBhZ2dyZWdhdGlvbiBlZmZlY3RpdmVseSBnaXZlcyB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgYSB3YXkgdG8gcGVyZm9ybSB3cml0ZXMsIGNvbnRyYXJ5IHRvIGl0cyByZWFkLW9ubHkgaW50ZW50LiBJZiBgdHJ1ZWAgKGRlZmF1bHQpLCB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgY2FuIHJ1biBhZ2dyZWdhdGlvbiBwaXBlbGluZXMuIElmIGBmYWxzZWAsIHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBjYW5ub3QgcnVuIGFnZ3JlZ2F0aW9uIHBpcGVsaW5lcyBhdCBhbGwuIE5vdGUgdGhhdCB0aGUgYHJlYWRPbmx5TWFzdGVyS2V5YCBpcyBhIHNlY3JldCBrZXkgZm9yIGludGVybmFsIHNlcnZlci1zaWRlIHVzZSBvbmx5IGFuZCBtdXN0IG5ldmVyIGJlIGRpc3RyaWJ1dGVkOyB0aGlzIG9wdGlvbiBpcyBhbiBhZGRpdGlvbmFsIHNhZmVndWFyZCwgbm90IGEgc3Vic3RpdHV0ZSBmb3Iga2VlcGluZyB0aGUga2V5IGNvbmZpZGVudGlhbC4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQUxMT1dfQUdHUkVHQVRJT05fRk9SX1JFQURfT05MWV9NQVNURVJfS0VZXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGFsbG93QWdncmVnYXRpb25Gb3JSZWFkT25seU1hc3RlcktleTogP2Jvb2xlYW47XG4gIC8qIEtleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxscyAqL1xuICB3ZWJob29rS2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIHlvdXIgZmlsZXMgKi9cbiAgZmlsZUtleTogP3N0cmluZztcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSB0aGUgYWRkaXRpb24gb2YgYSB1bmlxdWUgaGFzaCB0byB0aGUgZmlsZSBuYW1lc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJFU0VSVkVfRklMRV9OQU1FXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcmVzZXJ2ZUZpbGVOYW1lOiA/Ym9vbGVhbjtcbiAgLyogUGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gZmllbGRzIGluIHRoZSB1c2VyIHRhYmxlIHRoZSBzaG91bGQgYmUgcmVtb3ZlZCBmb3Igbm9uLWF1dGhvcml6ZWQgdXNlcnMuIERlcHJlY2F0ZWQgQHNlZSBwcm90ZWN0ZWRGaWVsZHMgKi9cbiAgdXNlclNlbnNpdGl2ZUZpZWxkczogPyhzdHJpbmdbXSk7XG4gIC8qIEZpZWxkcyBwZXIgY2xhc3MgdGhhdCBhcmUgaGlkZGVuIGZyb20gcXVlcnkgcmVzdWx0cyBmb3Igc3BlY2lmaWMgdXNlciBncm91cHMuIFByb3RlY3RlZCBmaWVsZHMgYXJlIHN0cmlwcGVkIGZyb20gdGhlIHNlcnZlciByZXNwb25zZSwgYnV0IGNhbiBzdGlsbCBiZSB1c2VkIGludGVybmFsbHkgKGUuZy4gaW4gQ2xvdWQgQ29kZSB0cmlnZ2VycykuIENvbmZpZ3VyZSBhcyBgeyAnQ2xhc3NOYW1lJzogeyAnVXNlckdyb3VwJzogWydmaWVsZDEnLCAnZmllbGQyJ10gfSB9YCB3aGVyZSBgVXNlckdyb3VwYCBpcyBvbmUgb2Y6IGAnKidgIChhbGwgdXNlcnMpLCBgJ2F1dGhlbnRpY2F0ZWQnYCAoYXV0aGVudGljYXRlZCB1c2VycyksIGAncm9sZTpSb2xlTmFtZSdgICh1c2VycyB3aXRoIGEgc3BlY2lmaWMgcm9sZSksIGAndXNlckZpZWxkOkZpZWxkTmFtZSdgICh1c2VycyByZWZlcmVuY2VkIGJ5IGEgcG9pbnRlciBmaWVsZCksIG9yIGEgdXNlciBgb2JqZWN0SWRgIHRvIHRhcmdldCBhIHNwZWNpZmljIHVzZXIuIFdoZW4gbXVsdGlwbGUgZ3JvdXBzIGFwcGx5LCB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZWlyIHByb3RlY3RlZCBmaWVsZHMgaXMgdXNlZC4gQW55IGZpZWxkIGNhbiBiZSBwcm90ZWN0ZWQsIGluY2x1ZGluZyBzeXN0ZW0gZmllbGRzIGxpa2UgYGNyZWF0ZWRBdGAgYW5kIGB1cGRhdGVkQXRgLiBCeSBkZWZhdWx0LCBgZW1haWxgIGlzIHByb3RlY3RlZCBvbiB0aGUgYF9Vc2VyYCBjbGFzcyBmb3IgYWxsIHVzZXJzLiBPbiB0aGUgYF9Vc2VyYCBjbGFzcywgdGhlIG9iamVjdCBvd25lciBpcyBleGVtcHQgZnJvbSBwcm90ZWN0ZWQgZmllbGRzIGJ5IGRlZmF1bHQ7IHNlZSBgcHJvdGVjdGVkRmllbGRzT3duZXJFeGVtcHRgIHRvIGNoYW5nZSB0aGlzLlxuICA6REVGQVVMVDoge1wiX1VzZXJcIjoge1wiKlwiOiBbXCJlbWFpbFwiXX19ICovXG4gIHByb3RlY3RlZEZpZWxkczogP1Byb3RlY3RlZEZpZWxkcztcbiAgLyogV2hldGhlciB0aGUgYF9Vc2VyYCBjbGFzcyBpcyBleGVtcHQgZnJvbSBgcHJvdGVjdGVkRmllbGRzYCB3aGVuIHRoZSBsb2dnZWQtaW4gdXNlciBxdWVyaWVzIHRoZWlyIG93biB1c2VyIG9iamVjdC4gSWYgYHRydWVgIChkZWZhdWx0KSwgYSB1c2VyIGNhbiBzZWUgYWxsIHRoZWlyIG93biBmaWVsZHMgcmVnYXJkbGVzcyBvZiBgcHJvdGVjdGVkRmllbGRzYCBjb25maWd1cmF0aW9uOyBkZWZhdWx0IHByb3RlY3RlZCBmaWVsZHMgKGUuZy4gYGVtYWlsYCkgYXJlIG1lcmdlZCBpbnRvIGFueSBjdXN0b20gYHByb3RlY3RlZEZpZWxkc2AgY29uZmlndXJhdGlvbi4gSWYgYGZhbHNlYCwgYHByb3RlY3RlZEZpZWxkc2AgYXBwbGllcyBlcXVhbGx5IHRvIHRoZSB1c2VyJ3Mgb3duIG9iamVjdCwgY29uc2lzdGVudCB3aXRoIGFsbCBvdGhlciBjbGFzc2VzOyBvbmx5IGV4cGxpY2l0bHkgY29uZmlndXJlZCBwcm90ZWN0ZWQgZmllbGRzIGFwcGx5LCBkZWZhdWx0cyBhcmUgbm90IG1lcmdlZC4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJPVEVDVEVEX0ZJRUxEU19PV05FUl9FWEVNUFRcbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgcHJvdGVjdGVkRmllbGRzT3duZXJFeGVtcHQ6ID9ib29sZWFuO1xuICAvKiBXaGV0aGVyIENsb3VkIENvZGUgdHJpZ2dlcnMgKGUuZy4gYGJlZm9yZVNhdmVgLCBgYWZ0ZXJTYXZlYCkgYXJlIGV4ZW1wdCBmcm9tIGBwcm90ZWN0ZWRGaWVsZHNgLiBJZiBgdHJ1ZWAsIHRyaWdnZXJzIHJlY2VpdmUgdGhlIGZ1bGwgb2JqZWN0IGluY2x1ZGluZyBwcm90ZWN0ZWQgZmllbGRzIGluIGByZXF1ZXN0Lm9iamVjdGAgYW5kIGByZXF1ZXN0Lm9yaWdpbmFsYCwgcmVnYXJkbGVzcyBvZiB0aGUgY2FsbGVyJ3MgYXV0aCBjb250ZXh0LiBJZiBgZmFsc2VgLCBwcm90ZWN0ZWQgZmllbGRzIGFyZSBzdHJpcHBlZCBmcm9tIHRoZSBvcmlnaW5hbCBvYmplY3QgZmV0Y2ggdXNlZCB0byBidWlsZCB0cmlnZ2VyIG9iamVjdHMuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9QUk9URUNURURfRklFTERTX1RSSUdHRVJfRVhFTVBUXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcm90ZWN0ZWRGaWVsZHNUcmlnZ2VyRXhlbXB0OiA/Ym9vbGVhbjtcbiAgLyogV2hldGhlciBzYXZlIG9wZXJhdGlvbiByZXNwb25zZXMgKGNyZWF0ZSwgdXBkYXRlKSBhcmUgZXhlbXB0IGZyb20gYHByb3RlY3RlZEZpZWxkc2AuIElmIGB0cnVlYCAoZGVmYXVsdCksIHByb3RlY3RlZCBmaWVsZHMgbW9kaWZpZWQgZHVyaW5nIGEgc2F2ZSBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlIHRvIHRoZSBjbGllbnQuIElmIGBmYWxzZWAsIHByb3RlY3RlZCBmaWVsZHMgYXJlIHN0cmlwcGVkIGZyb20gc2F2ZSByZXNwb25zZXMsIGNvbnNpc3RlbnQgd2l0aCBob3cgdGhleSBhcmUgc3RyaXBwZWQgZnJvbSBxdWVyeSByZXN1bHRzLiBJbmRlcGVuZGVudGx5IG9mIHRoaXMgb3B0aW9uLCBmb3IgYSByZXF1ZXN0IHdpdGhvdXQgdGhlIG1hc3RlciBrZXkgb3IgbWFpbnRlbmFuY2Uga2V5LCBhbiB1cGRhdGUgcmVzcG9uc2UgY29udGFpbnMgc3RvcmVkIGZpZWxkIHZhbHVlcyBvbmx5IGlmIHRoZSBjbGFzcy1sZXZlbCBwZXJtaXNzaW9ucyBhbmQgdGhlIEFDTCBhbGxvdyB0aGUgY2xpZW50IHRvIHJlYWQgdGhlIG9iamVjdCwgdW5sZXNzIGFuIGBhZnRlclNhdmVgIHRyaWdnZXIgb2YgdGhlIG9iamVjdCdzIGNsYXNzIHJldHVybnMgYSBwbGFpbiBvYmplY3QgYXMgdGhlIHJlc3BvbnNlLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9QUk9URUNURURfRklFTERTX1NBVkVfUkVTUE9OU0VfRVhFTVBUXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHByb3RlY3RlZEZpZWxkc1NhdmVSZXNwb25zZUV4ZW1wdDogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkFCTEVfQU5PTl9VU0VSU1xuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVBbm9ueW1vdXNVc2VyczogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgY2xpZW50IGNsYXNzIGNyZWF0aW9uLCBkZWZhdWx0cyB0byBmYWxzZVxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQUxMT1dfQ0xJRU5UX0NMQVNTX0NSRUFUSU9OXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBhbGxvd0NsaWVudENsYXNzQ3JlYXRpb246ID9ib29sZWFuO1xuICAvKiBFbmFibGUgKG9yIGRpc2FibGUpIGN1c3RvbSBvYmplY3RJZFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQUxMT1dfQ1VTVE9NX09CSkVDVF9JRFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWxsb3dDdXN0b21PYmplY3RJZDogP2Jvb2xlYW47XG4gIC8qIENvbmZpZ3VyYXRpb24gZm9yIHlvdXIgYXV0aGVudGljYXRpb24gcHJvdmlkZXJzLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNvYXV0aC1hbmQtM3JkLXBhcnR5LWF1dGhlbnRpY2F0aW9uPGJyPjxicj5Qcm92aWRlciBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgYW5kIGNvbnRhaW4gb25seSBsZXR0ZXJzLCBkaWdpdHMsIGFuZCB1bmRlcnNjb3JlcyAoYC9eW0EtWmEtel1bQS1aYS16MC05X10qJC9gKS4gVGhpcyBpcyBiZWNhdXNlIGVhY2ggcHJvdmlkZXIgbmFtZSBpcyB1c2VkIHRvIGNvbnN0cnVjdCBhIGRhdGFiYXNlIGZpZWxkIChgX2F1dGhfZGF0YV88cHJvdmlkZXI+YCksIHdoaWNoIG11c3QgY29tcGx5IHdpdGggUGFyc2UgU2VydmVyJ3MgZmllbGQgbmFtaW5nIHJ1bGVzLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQVVUSF9QUk9WSURFUlMgKi9cbiAgYXV0aDogP3sgW3N0cmluZ106IEF1dGhBZGFwdGVyIH07XG4gIC8qIE9wdGlvbmFsLiBFbmFibGVzIGluc2VjdXJlIGF1dGhlbnRpY2F0aW9uIGFkYXB0ZXJzLiBJbnNlY3VyZSBhdXRoIGFkYXB0ZXJzIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VOQUJMRV9JTlNFQ1VSRV9BVVRIX0FEQVBURVJTXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVJbnNlY3VyZUF1dGhBZGFwdGVyczogP2Jvb2xlYW47XG4gIC8qIE1heCBmaWxlIHNpemUgZm9yIHVwbG9hZHMsIGRlZmF1bHRzIHRvIDIwbWJcbiAgOkRFRkFVTFQ6IDIwbWIgKi9cbiAgbWF4VXBsb2FkU2l6ZTogP3N0cmluZztcbiAgLyogU2V0IHRvIGB0cnVlYCB0byByZXF1aXJlIHVzZXJzIHRvIHZlcmlmeSB0aGVpciBlbWFpbCBhZGRyZXNzIHRvIGNvbXBsZXRlIHRoZSBzaWduLXVwIHByb2Nlc3MuIFN1cHBvcnRzIGEgZnVuY3Rpb24gd2l0aCBhIHJldHVybiB2YWx1ZSBvZiBgdHJ1ZWAgb3IgYGZhbHNlYCBmb3IgY29uZGl0aW9uYWwgdmVyaWZpY2F0aW9uLiBUaGUgZnVuY3Rpb24gcmVjZWl2ZXMgYSByZXF1ZXN0IG9iamVjdCB0aGF0IGluY2x1ZGVzIGBjcmVhdGVkV2l0aGAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgaW52b2NhdGlvbiBpcyBmb3IgYHNpZ251cGAgb3IgYGxvZ2luYCBhbmQgdGhlIHVzZWQgYXV0aCBwcm92aWRlci5cbiAgPGJyPjxicj5cbiAgVGhlIGBjcmVhdGVkV2l0aGAgdmFsdWVzIHBlciBzY2VuYXJpbzpcbiAgPHVsPjxsaT5QYXNzd29yZCBzaWdudXA6IGB7IGFjdGlvbjogJ3NpZ251cCcsIGF1dGhQcm92aWRlcjogJ3Bhc3N3b3JkJyB9YDwvbGk+PGxpPkF1dGggcHJvdmlkZXIgc2lnbnVwOiBgeyBhY3Rpb246ICdzaWdudXAnLCBhdXRoUHJvdmlkZXI6ICc8cHJvdmlkZXI+JyB9YDwvbGk+PGxpPlBhc3N3b3JkIGxvZ2luOiBgeyBhY3Rpb246ICdsb2dpbicsIGF1dGhQcm92aWRlcjogJ3Bhc3N3b3JkJyB9YDwvbGk+PGxpPkF1dGggcHJvdmlkZXIgbG9naW46IGZ1bmN0aW9uIG5vdCBpbnZva2VkOyBhdXRoIHByb3ZpZGVyIGxvZ2luIGJ5cGFzc2VzIGVtYWlsIHZlcmlmaWNhdGlvbjwvbGk+PGxpPlJlc2VuZCB2ZXJpZmljYXRpb24gZW1haWw6IGBjcmVhdGVkV2l0aGAgaXMgYHVuZGVmaW5lZGA7IHVzZSB0aGUgYHJlc2VuZFJlcXVlc3RgIHByb3BlcnR5IHRvIGlkZW50aWZ5IHRob3NlPC9saT48L3VsPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICB2ZXJpZnlVc2VyRW1haWxzOiA/KGJvb2xlYW4gfCAoRW1haWxWZXJpZmljYXRpb25SZXF1ZXN0ID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+KSk7XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gcHJldmVudCBhIHVzZXIgZnJvbSBsb2dnaW5nIGluIGlmIHRoZSBlbWFpbCBoYXMgbm90IHlldCBiZWVuIHZlcmlmaWVkIGFuZCBlbWFpbCB2ZXJpZmljYXRpb24gaXMgcmVxdWlyZWQuIFN1cHBvcnRzIGEgZnVuY3Rpb24gd2l0aCBhIHJldHVybiB2YWx1ZSBvZiBgdHJ1ZWAgb3IgYGZhbHNlYCBmb3IgY29uZGl0aW9uYWwgcHJldmVudGlvbi4gVGhlIGZ1bmN0aW9uIHJlY2VpdmVzIGEgcmVxdWVzdCBvYmplY3QgdGhhdCBpbmNsdWRlcyBgY3JlYXRlZFdpdGhgIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGludm9jYXRpb24gaXMgZm9yIGBzaWdudXBgIG9yIGBsb2dpbmAgYW5kIHRoZSB1c2VkIGF1dGggcHJvdmlkZXIuXG4gIDxicj48YnI+XG4gIFRoZSBgY3JlYXRlZFdpdGhgIHZhbHVlcyBwZXIgc2NlbmFyaW86XG4gIDx1bD48bGk+UGFzc3dvcmQgc2lnbnVwOiBgeyBhY3Rpb246ICdzaWdudXAnLCBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcgfWA8L2xpPjxsaT5BdXRoIHByb3ZpZGVyIHNpZ251cDogYHsgYWN0aW9uOiAnc2lnbnVwJywgYXV0aFByb3ZpZGVyOiAnPHByb3ZpZGVyPicgfWA8L2xpPjxsaT5QYXNzd29yZCBsb2dpbjogYHsgYWN0aW9uOiAnbG9naW4nLCBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcgfWA8L2xpPjxsaT5BdXRoIHByb3ZpZGVyIGxvZ2luOiBmdW5jdGlvbiBub3QgaW52b2tlZDsgYXV0aCBwcm92aWRlciBsb2dpbiBieXBhc3NlcyBlbWFpbCB2ZXJpZmljYXRpb248L2xpPjwvdWw+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbDogPyhcbiAgICB8IGJvb2xlYW5cbiAgICB8IChFbWFpbFZlcmlmaWNhdGlvblJlcXVlc3QgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4pXG4gICk7XG4gIC8qIElmIHNldCB0byBgdHJ1ZWAgaXQgcHJldmVudHMgYSB1c2VyIGZyb20gc2lnbmluZyB1cCBpZiB0aGUgZW1haWwgaGFzIG5vdCB5ZXQgYmVlbiB2ZXJpZmllZCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkLiBJbiB0aGF0IGNhc2UgdGhlIHNlcnZlciByZXNwb25kcyB0byB0aGUgc2lnbi11cCB3aXRoIEhUVFAgc3RhdHVzIDQwMCBhbmQgYSBQYXJzZSBFcnJvciAyMDUgYEVNQUlMX05PVF9GT1VORGAuIElmIHNldCB0byBgZmFsc2VgIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgd2l0aCBIVFRQIHN0YXR1cyAyMDAsIGFuZCBjbGllbnQgU0RLcyByZXR1cm4gYW4gdW5hdXRoZW50aWNhdGVkIFBhcnNlIFVzZXIgd2l0aG91dCBzZXNzaW9uIHRva2VuLiBJbiB0aGF0IGNhc2Ugc3Vic2VxdWVudCByZXF1ZXN0cyBmYWlsIHVudGlsIHRoZSB1c2VyJ3MgZW1haWwgYWRkcmVzcyBpcyB2ZXJpZmllZC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcmV2ZW50U2lnbnVwV2l0aFVudmVyaWZpZWRFbWFpbDogP2Jvb2xlYW47XG4gIC8qIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuXG4gIDxicj48YnI+XG4gIEZvciBleGFtcGxlLCB0byBleHBpcmUgdGhlIHRva2VuIGFmdGVyIDIgaG91cnMsIHNldCBhIHZhbHVlIG9mIDcyMDAgc2Vjb25kcyAoPSA2MCBzZWNvbmRzICogNjAgbWludXRlcyAqIDIgaG91cnMpLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGB1bmRlZmluZWRgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gICovXG4gIGVtYWlsVmVyaWZ5VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIGEgZW1haWwgdmVyaWZpY2F0aW9uIHRva2VuIHNob3VsZCBiZSByZXVzZWQgaW4gY2FzZSBhbm90aGVyIHRva2VuIGlzIHJlcXVlc3RlZCBidXQgdGhlcmUgaXMgYSB0b2tlbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpLmUuIGhhcyBub3QgZXhwaXJlZC4gVGhpcyBhdm9pZHMgdGhlIG9mdGVuIG9ic2VydmVkIGlzc3VlIHRoYXQgYSB1c2VyIHJlcXVlc3RzIG11bHRpcGxlIGVtYWlscyBhbmQgZG9lcyBub3Qga25vdyB3aGljaCBsaW5rIGNvbnRhaW5zIGEgdmFsaWQgdG9rZW4gYmVjYXVzZSBlYWNoIG5ld2x5IGdlbmVyYXRlZCB0b2tlbiB3b3VsZCBpbnZhbGlkYXRlIHRoZSBwcmV2aW91cyB0b2tlbi5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIHJlcXVlc3QgdG8gdmVyaWZ5IHRoZSBlbWFpbCBzaG91bGQgcmV0dXJuIGEgc3VjY2VzcyByZXNwb25zZSBldmVuIGlmIHRoZSBwcm92aWRlZCBlbWFpbCBhZGRyZXNzIGRvZXMgbm90IGJlbG9uZyB0byBhIHZlcmlmaWFibGUgYWNjb3VudCwgZm9yIGV4YW1wbGUgYmVjYXVzZSBpdCBpcyB1bmtub3duIG9yIGFscmVhZHkgdmVyaWZpZWQsIG9yIGBmYWxzZWAgaWYgdGhlIHJlcXVlc3Qgc2hvdWxkIHJldHVybiBhbiBlcnJvciByZXNwb25zZSBpbiB0aG9zZSBjYXNlcy5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW1haWxWZXJpZnlTdWNjZXNzT25JbnZhbGlkRW1haWw6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYGZhbHNlYCB0byBwcmV2ZW50IHNlbmRpbmcgb2YgdmVyaWZpY2F0aW9uIGVtYWlsLiBTdXBwb3J0cyBhIGZ1bmN0aW9uIHdpdGggYSByZXR1cm4gdmFsdWUgb2YgYHRydWVgIG9yIGBmYWxzZWAgZm9yIGNvbmRpdGlvbmFsIGVtYWlsIHNlbmRpbmcuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYHRydWVgLlxuICA8YnI+XG4gIDpERUZBVUxUOiB0cnVlICovXG4gIHNlbmRVc2VyRW1haWxWZXJpZmljYXRpb246ID8oXG4gICAgfCBib29sZWFuXG4gICAgfCAoU2VuZEVtYWlsVmVyaWZpY2F0aW9uUmVxdWVzdCA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPilcbiAgKTtcbiAgLyogVGhlIGFjY291bnQgbG9ja291dCBwb2xpY3kgZm9yIGZhaWxlZCBsb2dpbiBhdHRlbXB0cy5cbiAgPGJyPjxicj5cbiAgTm90ZTogU2V0dGluZyBhIHVzZXIncyBBQ0wgdG8gYW4gZW1wdHkgb2JqZWN0IGB7fWAgdmlhIG1hc3RlciBrZXkgaXMgYSBzZXBhcmF0ZSBtZWNoYW5pc20gdGhhdCBvbmx5IHByZXZlbnRzIG5ldyBsb2dpbnM7IGl0IGRvZXMgbm90IGludmFsaWRhdGUgZXhpc3Rpbmcgc2Vzc2lvbiB0b2tlbnMuIFRvIGltbWVkaWF0ZWx5IHJldm9rZSBhIHVzZXIncyBhY2Nlc3MsIGRlc3Ryb3kgdGhlaXIgc2Vzc2lvbnMgdmlhIG1hc3RlciBrZXkgaW4gYWRkaXRpb24gdG8gc2V0dGluZyB0aGUgQUNMLiAqL1xuICBhY2NvdW50TG9ja291dDogP0FjY291bnRMb2Nrb3V0T3B0aW9ucztcbiAgLyogVGhlIHBhc3N3b3JkIHBvbGljeSBmb3IgZW5mb3JjaW5nIHBhc3N3b3JkIHJlbGF0ZWQgcnVsZXMuICovXG4gIHBhc3N3b3JkUG9saWN5OiA/UGFzc3dvcmRQb2xpY3lPcHRpb25zO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGNhY2hlICovXG4gIGNhY2hlQWRhcHRlcjogP0FkYXB0ZXI8Q2FjaGVBZGFwdGVyPjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIGVtYWlsIHNlbmRpbmcgKi9cbiAgZW1haWxBZGFwdGVyOiA/QWRhcHRlcjxNYWlsQWRhcHRlcj47XG4gIC8qIE9wdGlvbmFsLiBUaGUgcHVibGljIFVSTCB0byBQYXJzZSBTZXJ2ZXIuIFRoaXMgVVJMIHdpbGwgYmUgdXNlZCB0byByZWFjaCBQYXJzZSBTZXJ2ZXIgcHVibGljbHkgZm9yIGZlYXR1cmVzIGxpa2UgcGFzc3dvcmQgcmVzZXQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbiBsaW5rcy4gVGhlIG9wdGlvbiBjYW4gYmUgc2V0IHRvIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgYXN5bmNocm9ub3VzbHkgcmVzb2x2ZWQuIFRoZSByZXR1cm5lZCBVUkwgc3RyaW5nIG11c3Qgc3RhcnQgd2l0aCBgaHR0cDovL2Agb3IgYGh0dHBzOi8vYC5cbiAgOkVOVjogUEFSU0VfUFVCTElDX1NFUlZFUl9VUkwgKi9cbiAgcHVibGljU2VydmVyVVJMOiA/KHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpIHwgKCgpID0+IFByb21pc2U8c3RyaW5nPikpO1xuICAvKiBUaGUgb3B0aW9ucyBmb3IgcGFnZXMgc3VjaCBhcyBwYXNzd29yZCByZXNldCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uLlxuICA6REVGQVVMVDoge30gKi9cbiAgcGFnZXM6ID9QYWdlc09wdGlvbnM7XG4gIC8qIGN1c3RvbSBwYWdlcyBmb3IgcGFzc3dvcmQgdmFsaWRhdGlvbiBhbmQgcmVzZXRcbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGN1c3RvbVBhZ2VzOiA/Q3VzdG9tUGFnZXNPcHRpb25zO1xuICAvKiBDb25maWd1cmF0aW9uIGZvciBMaXZlUXVlcnkgb24gdGhpcyBQYXJzZSBTZXJ2ZXIsIGZvciBleGFtcGxlIGB7IGNsYXNzTmFtZXM6IFsnTXlDbGFzcyddIH1gLiBgY2xhc3NOYW1lc2AgbGlzdHMgdGhlIGNsYXNzZXMgdGhhdCBwdWJsaXNoIGNyZWF0ZS91cGRhdGUvZGVsZXRlIGV2ZW50cyB0byBzdWJzY3JpYmVyczsgd2l0aG91dCBpdCBubyBldmVudHMgYXJlIHB1c2hlZCwgZXZlbiB3aGlsZSBhIExpdmVRdWVyeSBzZXJ2ZXIgaXMgcnVubmluZy4gQ29tYmluZSB3aXRoIGBzdGFydExpdmVRdWVyeVNlcnZlcmAgdG8gcnVuIGEgTGl2ZVF1ZXJ5IHNlcnZlci4gKi9cbiAgbGl2ZVF1ZXJ5OiA/TGl2ZVF1ZXJ5T3B0aW9ucztcbiAgLyogV2hldGhlciBMaXZlUXVlcnkgaW5jbHVkZXMgdGhlIHN1YnNjcmliZXIncyByb2xlcyB3aGVuIGV2YWx1YXRpbmcgQ2xhc3MgTGV2ZWwgUGVybWlzc2lvbnMgKENMUCkuIElmIGB0cnVlYCwgYSBDTFAgdGhhdCBncmFudHMgYGZpbmRgIG9yIGBnZXRgIHRvIGByb2xlOjxSb2xlTmFtZT5gIGFwcGxpZXMgdG8gTGl2ZVF1ZXJ5IHN1YnNjcmlwdGlvbnMgZm9yIG1lbWJlcnMgb2YgdGhhdCByb2xlLCB0aGUgc2FtZSB3YXkgaXQgYWxyZWFkeSBhcHBsaWVzIHRvIHRoZSBlcXVpdmFsZW50IFJFU1QgcXVlcnkuIElmIGBmYWxzZWAgKGRlZmF1bHQpLCByb2xlcyBhcmUgbm90IHJlc29sdmVkIGZvciBDTFAgYW5kIHN1Y2ggYSBzdWJzY3JpcHRpb24gaXMgcmVqZWN0ZWQgZXZlbiBmb3IgbGVnaXRpbWF0ZSByb2xlIG1lbWJlcnMsIHNvIExpdmVRdWVyeSBpcyBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gUkVTVCBmb3IgdGhlIHNhbWUgQ0xQLiBUaGlzIG9wdGlvbiBkb2VzIG5vdCBhZmZlY3Qgb2JqZWN0IEFDTHMsIHdob3NlIGByb2xlOmAgZW50cmllcyBMaXZlUXVlcnkgYWxyZWFkeSBob25vcnMgcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkFCTEVfTElWRV9RVUVSWV9DTEFTU19MRVZFTF9QRVJNSVNTSU9OX1JPTEVTXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVMaXZlUXVlcnlDbGFzc0xldmVsUGVybWlzc2lvblJvbGVzOiA/Ym9vbGVhbjtcbiAgLyogU2Vzc2lvbiBkdXJhdGlvbiwgaW4gc2Vjb25kcywgZGVmYXVsdHMgdG8gMSB5ZWFyXG4gIDpERUZBVUxUOiAzMTUzNjAwMCAqL1xuICBzZXNzaW9uTGVuZ3RoOiA/bnVtYmVyO1xuICAvKiBXaGV0aGVyIFBhcnNlIFNlcnZlciBzaG91bGQgYXV0b21hdGljYWxseSBleHRlbmQgYSB2YWxpZCBzZXNzaW9uIGJ5IHRoZSBzZXNzaW9uTGVuZ3RoLiBJbiBvcmRlciB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBzZXNzaW9uIHVwZGF0ZXMgaW4gdGhlIGRhdGFiYXNlLCBhIHNlc3Npb24gd2lsbCBvbmx5IGJlIGV4dGVuZGVkIHdoZW4gYSByZXF1ZXN0IGlzIHJlY2VpdmVkIGFmdGVyIGF0IGxlYXN0IGhhbGYgb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbidzIGxpZmV0aW1lIGhhcyBwYXNzZWQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBleHRlbmRTZXNzaW9uT25Vc2U6ID9ib29sZWFuO1xuICAvKiBEZWZhdWx0IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gYDEwMGAuXG4gIDpERUZBVUxUOiAxMDAgKi9cbiAgZGVmYXVsdExpbWl0OiA/bnVtYmVyO1xuICAvKiBNYXggdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byB1bmxpbWl0ZWQgKi9cbiAgbWF4TGltaXQ6ID9udW1iZXI7XG4gIC8qIFNldHMgd2hldGhlciB3ZSBzaG91bGQgZXhwaXJlIHRoZSBpbmFjdGl2ZSBzZXNzaW9ucywgZGVmYXVsdHMgdG8gdHJ1ZS4gSWYgZmFsc2UsIGFsbCBuZXcgc2Vzc2lvbnMgYXJlIGNyZWF0ZWQgd2l0aCBubyBleHBpcmF0aW9uIGRhdGUuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGV4cGlyZUluYWN0aXZlU2Vzc2lvbnM6ID9ib29sZWFuO1xuICAvKiBXaGVuIGEgdXNlciBjaGFuZ2VzIHRoZWlyIHBhc3N3b3JkLCBlaXRoZXIgdGhyb3VnaCB0aGUgcmVzZXQgcGFzc3dvcmQgZW1haWwgb3Igd2hpbGUgbG9nZ2VkIGluLCBhbGwgc2Vzc2lvbnMgYXJlIHJldm9rZWQgaWYgdGhpcyBpcyB0cnVlLiBTZXQgdG8gZmFsc2UgaWYgeW91IGRvbid0IHdhbnQgdG8gcmV2b2tlIHNlc3Npb25zLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICByZXZva2VTZXNzaW9uT25QYXNzd29yZFJlc2V0OiA/Ym9vbGVhbjtcbiAgLyogU2V0cyB0aGUgVFRMIGZvciB0aGUgaW4gbWVtb3J5IGNhY2hlIChpbiBtcyksIGRlZmF1bHRzIHRvIDUwMDAgKDUgc2Vjb25kcylcbiAgOkRFRkFVTFQ6IDUwMDAgKi9cbiAgY2FjaGVUVEw6ID9udW1iZXI7XG4gIC8qIFNldHMgdGhlIG1heGltdW0gc2l6ZSBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSwgZGVmYXVsdHMgdG8gMTAwMDBcbiAgOkRFRkFVTFQ6IDEwMDAwICovXG4gIGNhY2hlTWF4U2l6ZTogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIHNhbWUgTm9kZS5qcyBlbnZpcm9ubWVudCBhcyBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGJlIHJvdXRlZCB0byBQYXJzZSBTZXJ2ZXIgZGlyZWN0bHkgaW5zdGVhZCBvZiB2aWEgdGhlIEhUVFAgaW50ZXJmYWNlLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDxicj48YnI+XG4gIElmIHNldCB0byBgZmFsc2VgIHRoZW4gUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIGFyZSBleGVjdXRlZCBhcyBIVFRQIHJlcXVlc3RzIHNlbnQgdG8gUGFyc2UgU2VydmVyIHZpYSB0aGUgYHNlcnZlclVSTGAuIEZvciBleGFtcGxlLCBhIGBQYXJzZS5RdWVyeWAgaW4gQ2xvdWQgQ29kZSBpcyBjYWxsaW5nIFBhcnNlIFNlcnZlciB2aWEgYSBIVFRQIHJlcXVlc3QuIFRoZSBzZXJ2ZXIgaXMgZXNzZW50aWFsbHkgbWFraW5nIGEgSFRUUCByZXF1ZXN0IHRvIGl0c2VsZiwgdW5uZWNlc3NhcmlseSB1c2luZyBuZXR3b3JrIHJlc291cmNlcyBzdWNoIGFzIG5ldHdvcmsgcG9ydHMuXG4gIDxicj48YnI+XG4gIOKaoO+4jyBJbiBlbnZpcm9ubWVudHMgd2hlcmUgbXVsdGlwbGUgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBydW4gYmVoaW5kIGEgbG9hZCBiYWxhbmNlciBhbmQgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBjdXJyZW50IE5vZGUuanMgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHJvdXRlZCB2aWEgdGhlIGxvYWQgYmFsYW5jZXIgYW5kIGRpc3RyaWJ1dGVkIGFzIEhUVFAgcmVxdWVzdHMgYW1vbmcgYWxsIGluc3RhbmNlcyB2aWEgdGhlIGBzZXJ2ZXJVUkxgLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZGlyZWN0QWNjZXNzOiA/Ym9vbGVhbjtcbiAgLyogRW5hYmxlcyB0aGUgZGVmYXVsdCBleHByZXNzIGVycm9yIGhhbmRsZXIgZm9yIGFsbCBlcnJvcnNcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUV4cHJlc3NFcnJvckhhbmRsZXI6ID9ib29sZWFuO1xuICAvKiBEZXByZWNhdGVkLiBFbmFibGVzIHRoZSBsZWdhY3kgcHJvZHVjdCBwdXJjaGFzZSBBUEkgaW5jbHVkaW5nIHRoZSBgX1Byb2R1Y3RgIGNsYXNzIGFuZCB0aGUgYC92YWxpZGF0ZV9wdXJjaGFzZWAgZW5kcG9pbnQuIFRoaXMgaXMgYW4gdW5kb2N1bWVudGVkLCB1bm1haW50YWluZWQgbGVnYWN5IGZlYXR1cmUgaW5oZXJpdGVkIGZyb20gdGhlIG9yaWdpbmFsIFBhcnNlIHBsYXRmb3JtIHRoYXQgbWF5IG5vdCBmdW5jdGlvbiBhcyBleHBlY3RlZC4gV2Ugc3Ryb25nbHkgYWR2aXNlIGFnYWluc3QgdXNpbmcgaXQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfRU5BQkxFX1BST0RVQ1RfUFVSQ0hBU0VfTEVHQUNZX0FQSVxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVQcm9kdWN0UHVyY2hhc2VMZWdhY3lBcGk6ID9ib29sZWFuO1xuICAvKiBTZXRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBnZW5lcmF0ZWQgb2JqZWN0IGlkJ3MsIGRlZmF1bHQgMTBcbiAgOkRFRkFVTFQ6IDEwICovXG4gIG9iamVjdElkU2l6ZTogP251bWJlcjtcbiAgLyogVGhlIHBvcnQgdG8gcnVuIHRoZSBQYXJzZVNlcnZlciwgZGVmYXVsdHMgdG8gMTMzNy5cbiAgOkVOVjogUE9SVFxuICA6REVGQVVMVDogMTMzNyAqL1xuICBwb3J0OiA/bnVtYmVyO1xuICAvKiBUaGUgaG9zdCB0byBzZXJ2ZSBQYXJzZVNlcnZlciBvbiwgZGVmYXVsdHMgdG8gMC4wLjAuMFxuICA6REVGQVVMVDogMC4wLjAuMCAqL1xuICBob3N0OiA/c3RyaW5nO1xuICAvKiBNb3VudCBwYXRoIGZvciB0aGUgc2VydmVyLCBkZWZhdWx0cyB0byAvcGFyc2VcbiAgOkRFRkFVTFQ6IC9wYXJzZSAqL1xuICBtb3VudFBhdGg6ID9zdHJpbmc7XG4gIC8qIFJ1biB3aXRoIGNsdXN0ZXIsIG9wdGlvbmFsbHkgc2V0IHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGRlZmF1bHQgdG8gb3MuY3B1cygpLmxlbmd0aCAqL1xuICBjbHVzdGVyOiA/TnVtYmVyT3JCb29sZWFuO1xuICAvKiBtaWRkbGV3YXJlIGZvciBleHByZXNzIHNlcnZlciwgY2FuIGJlIHN0cmluZyBvciBmdW5jdGlvbiAqL1xuICBtaWRkbGV3YXJlOiA/KCgoKSA9PiB2b2lkKSB8IHN0cmluZyk7XG4gIC8qIFRoZSB0cnVzdCBwcm94eSBzZXR0aW5ncy4gSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IHNldHVwIG9mIHRoZSByZXZlcnNlIHByb3h5LCBzaW5jZSB0aGlzIHNldHRpbmcgd2lsbCB0cnVzdCB2YWx1ZXMgcHJvdmlkZWQgaW4gdGhlIFBhcnNlIFNlcnZlciBBUEkgcmVxdWVzdC4gU2VlIHRoZSA8YSBocmVmPVwiaHR0cHM6Ly9leHByZXNzanMuY29tL2VuL2d1aWRlL2JlaGluZC1wcm94aWVzLmh0bWxcIj5leHByZXNzIHRydXN0IHByb3h5IHNldHRpbmdzPC9hPiBkb2N1bWVudGF0aW9uLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgdHJ1c3RQcm94eTogP2FueTtcbiAgLyogU3RhcnRzIGEgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgdGhpcyBQYXJzZSBTZXJ2ZXIuIEV2ZW50cyBhcmUgb25seSBkZWxpdmVyZWQgZm9yIHRoZSBjbGFzc2VzIHNldCBpbiBgbGl2ZVF1ZXJ5LmNsYXNzTmFtZXNgLCBzbyBhIG1pbmltYWwgd29ya2luZyBzZXR1cCBpcyBgbGl2ZVF1ZXJ5OiB7IGNsYXNzTmFtZXM6IFsuLi5dIH1gIHRvZ2V0aGVyIHdpdGggYHN0YXJ0TGl2ZVF1ZXJ5U2VydmVyOiB0cnVlYC4gKi9cbiAgc3RhcnRMaXZlUXVlcnlTZXJ2ZXI6ID9ib29sZWFuO1xuICAvKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBQcm92aWRpbmcgdGhpcyBhbHNvIHN0YXJ0cyB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciAobGlrZSBgc3RhcnRMaXZlUXVlcnlTZXJ2ZXJgKTsgZXZlbnRzIGFyZSBzdGlsbCBvbmx5IHB1Ymxpc2hlZCBmb3IgdGhlIGNsYXNzZXMgc2V0IGluIGBsaXZlUXVlcnkuY2xhc3NOYW1lc2AuICovXG4gIGxpdmVRdWVyeVNlcnZlck9wdGlvbnM6ID9MaXZlUXVlcnlTZXJ2ZXJPcHRpb25zO1xuICAvKiBPcHRpb25zIGZvciByZXF1ZXN0IGlkZW1wb3RlbmN5IHRvIGRlZHVwbGljYXRlIGlkZW50aWNhbCByZXF1ZXN0cyB0aGF0IG1heSBiZSBjYXVzZWQgYnkgbmV0d29yayBpc3N1ZXMuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfRVhQRVJJTUVOVEFMX0lERU1QT1RFTkNZX09QVElPTlNcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGlkZW1wb3RlbmN5T3B0aW9uczogP0lkZW1wb3RlbmN5T3B0aW9ucztcbiAgLyogT3B0aW9ucyBmb3IgZmlsZSB1cGxvYWRzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9GSUxFX1VQTE9BRF9PUFRJT05TXG4gIDpERUZBVUxUOiB7fSAqL1xuICBmaWxlVXBsb2FkOiA/RmlsZVVwbG9hZE9wdGlvbnM7XG4gIC8qIE9wdGlvbnMgZm9yIGZpbGUgZG93bmxvYWRzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9GSUxFX0RPV05MT0FEX09QVElPTlNcbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGZpbGVEb3dubG9hZDogP0ZpbGVEb3dubG9hZE9wdGlvbnM7XG4gIC8qIEZ1bGwgcGF0aCB0byB5b3VyIEdyYXBoUUwgY3VzdG9tIHNjaGVtYS5ncmFwaHFsIGZpbGUgKi9cbiAgZ3JhcGhRTFNjaGVtYTogP3N0cmluZztcbiAgLyogTW91bnRzIHRoZSBHcmFwaFFMIGVuZHBvaW50XG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9NT1VOVF9HUkFQSFFMXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBtb3VudEdyYXBoUUw6ID9ib29sZWFuO1xuICAvKiBUaGUgbW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgZW5kcG9pbnQ8YnI+PGJyPuKaoO+4jyBGaWxlIHVwbG9hZCBpbnNpZGUgdGhlIEdyYXBoUUwgbXV0YXRpb24gc3lzdGVtIHJlcXVpcmVzIFBhcnNlIFNlcnZlciB0byBiZSBhYmxlIHRvIGNhbGwgaXRzZWxmIGJ5IG1ha2luZyByZXF1ZXN0cyB0byB0aGUgVVJMIHNldCBpbiBgc2VydmVyVVJMYC48YnI+PGJyPkRlZmF1bHRzIGlzIGAvZ3JhcGhxbGAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9HUkFQSFFMX1BBVEhcbiAgOkRFRkFVTFQ6IC9ncmFwaHFsICovXG4gIGdyYXBoUUxQYXRoOiA/c3RyaW5nO1xuICAvKiBFbmFibGUgcHVibGljIGludHJvc3BlY3Rpb24gZm9yIHRoZSBHcmFwaFFMIGVuZHBvaW50LCBkZWZhdWx0cyB0byBmYWxzZS48YnI+PGJyPuKEue+4jyBEaXNhYmxpbmcgcHVibGljIGludHJvc3BlY3Rpb24gZG9lcyBub3QgaGlkZSB3aGV0aGVyIGEgY2xhc3Mgb3IgZmllbGQgZXhpc3RzLiBBIEdyYXBoUUwgb3BlcmF0aW9uIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBjb21wbGV0ZSBzY2hlbWEgYmVmb3JlIGFueSBjbGFzcy1sZXZlbCBwZXJtaXNzaW9uIGlzIGNoZWNrZWQsIHNvIGEgY2xpZW50IGNhbiBjb25maXJtIGEgZ3Vlc3NlZCBjbGFzcyBvciBmaWVsZCBuYW1lIGJ5IHNlbmRpbmcgYW4gb3BlcmF0aW9uIHRoYXQgcmVmZXJlbmNlcyBpdC4gVG8gaGlkZSBhIGNsYXNzIGZyb20gdGhlIEdyYXBoUUwgQVBJLCBleGNsdWRlIGl0IHdpdGggdGhlIGBlbmFibGVkRm9yQ2xhc3Nlc2Agb3IgYGRpc2FibGVkRm9yQ2xhc3Nlc2Agc2V0dGluZyBvZiB0aGUgR3JhcGhRTCBjb25maWcuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9HUkFQSFFMX1BVQkxJQ19JTlRST1NQRUNUSU9OXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBncmFwaFFMUHVibGljSW50cm9zcGVjdGlvbjogP2Jvb2xlYW47XG4gIC8qIERlcHJlY2F0ZWQuIE1vdW50cyB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kIHdoaWNoIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBUaGUgcGxheWdyb3VuZCBleHBvc2VzIHRoZSBtYXN0ZXIga2V5IGluIHRoZSBicm93c2VyLiBVc2UgUGFyc2UgRGFzaGJvYXJkIGFzIEdyYXBoUUwgSURFIG9yIGNvbmZpZ3VyZSBhIHRoaXJkLXBhcnR5IEdyYXBoUUwgY2xpZW50IHdpdGggY3VzdG9tIHJlcXVlc3QgaGVhZGVycy5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX01PVU5UX1BMQVlHUk9VTkRcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIG1vdW50UGxheWdyb3VuZDogP2Jvb2xlYW47XG4gIC8qIERlcHJlY2F0ZWQuIE1vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIFBsYXlncm91bmQuIFRoZSBwbGF5Z3JvdW5kIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBJZiB1bnNldCwgUGxheWdyb3VuZCBtb3VudHMgYXQgYC9wbGF5Z3JvdW5kYCB3aGVuIGBtb3VudFBsYXlncm91bmRgIGlzIGVuYWJsZWQuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9QTEFZR1JPVU5EX1BBVEggKi9cbiAgcGxheWdyb3VuZFBhdGg6ID9zdHJpbmc7XG4gIC8qIERlZmluZWQgc2NoZW1hXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9TQ0hFTUFcbiAgKi9cbiAgc2NoZW1hOiA/U2NoZW1hT3B0aW9ucztcbiAgLyogQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIGNsb3NlZCAqL1xuICBzZXJ2ZXJDbG9zZUNvbXBsZXRlOiA/KCkgPT4gdm9pZDtcbiAgLyogT3B0aW9ucyB0byBsaW1pdCB0aGUgY29tcGxleGl0eSBvZiByZXF1ZXN0cyB0byBwcmV2ZW50IGRlbmlhbC1vZi1zZXJ2aWNlIGF0dGFja3MuIExpbWl0cyBhcmUgZW5mb3JjZWQgZm9yIGFsbCByZXF1ZXN0cyBleGNlcHQgdGhvc2UgdXNpbmcgdGhlIG1hc3RlciBvciBtYWludGVuYW5jZSBrZXkuIEVhY2ggcHJvcGVydHkgY2FuIGJlIHNldCB0byBgLTFgIHRvIGRpc2FibGUgdGhhdCBzcGVjaWZpYyBsaW1pdC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1JFUVVFU1RfQ09NUExFWElUWVxuICA6REVGQVVMVDoge30gKi9cbiAgcmVxdWVzdENvbXBsZXhpdHk6ID9SZXF1ZXN0Q29tcGxleGl0eU9wdGlvbnM7XG4gIC8qIE9wdGlvbnMgY29udHJvbGxpbmcgaG93IFBhcnNlIFNlcnZlciBkZWR1cGxpY2F0ZXMgYF9JbnN0YWxsYXRpb25gIHJlY29yZHMgdGhhdCBzaGFyZSB0aGUgc2FtZSBgZGV2aWNlVG9rZW5gLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfSU5TVEFMTEFUSU9OXG4gIDpERUZBVUxUOiB7fSAqL1xuICBpbnN0YWxsYXRpb246ID9JbnN0YWxsYXRpb25PcHRpb25zO1xuICAvKiBRdWVyeS1yZWxhdGVkIHNlcnZlciBkZWZhdWx0cy5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1FVRVJZXG4gIDpERUZBVUxUOiB7fSAqL1xuICBxdWVyeTogP1F1ZXJ5U2VydmVyT3B0aW9ucztcbiAgLyogVGhlIHNlY3VyaXR5IG9wdGlvbnMgdG8gaWRlbnRpZnkgYW5kIHJlcG9ydCB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLlxuICA6REVGQVVMVDoge30gKi9cbiAgc2VjdXJpdHk6ID9TZWN1cml0eU9wdGlvbnM7XG4gIC8qIFNldCB0byB0cnVlIGlmIG5ldyB1c2VycyBzaG91bGQgYmUgY3JlYXRlZCB3aXRob3V0IHB1YmxpYyByZWFkIGFuZCB3cml0ZSBhY2Nlc3MuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuZm9yY2VQcml2YXRlVXNlcnM6ID9ib29sZWFuO1xuICAvKiBEZXByZWNhdGVkLiBUaGlzIG9wdGlvbiB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gQXV0aCBwcm92aWRlcnMgYXJlIGFsd2F5cyB2YWxpZGF0ZWQgb24gbG9naW4uIE9uIHVwZGF0ZSwgaWYgdGhpcyBpcyBzZXQgdG8gYHRydWVgLCBhdXRoIHByb3ZpZGVycyBhcmUgb25seSByZS12YWxpZGF0ZWQgd2hlbiB0aGUgYXV0aCBkYXRhIGhhcyBjaGFuZ2VkLiBJZiB0aGlzIGlzIHNldCB0byBgZmFsc2VgLCBhdXRoIHByb3ZpZGVycyBhcmUgcmUtdmFsaWRhdGVkIG9uIGV2ZXJ5IHVwZGF0ZS4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFsbG93RXhwaXJlZEF1dGhEYXRhVG9rZW46ID9ib29sZWFuO1xuICAvKiBBbiBhcnJheSBvZiBrZXlzIGFuZCB2YWx1ZXMgdGhhdCBhcmUgcHJvaGliaXRlZCBpbiBkYXRhYmFzZSByZWFkIGFuZCB3cml0ZSByZXF1ZXN0cyB0byBwcmV2ZW50IHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgb25seSBhIGtleSAoYHtcImtleVwiOlwiLi4uXCJ9YCksIG9ubHkgYSB2YWx1ZSAoYHtcInZhbHVlXCI6XCIuLi5cIn1gKSBvciBhIGtleS12YWx1ZSBwYWlyIChge1wia2V5XCI6XCIuLi5cIixcInZhbHVlXCI6XCIuLi5cIn1gKS4gVGhlIHNwZWNpZmljYXRpb24gY2FuIHVzZSB0aGUgZm9sbG93aW5nIHR5cGVzOiBgYm9vbGVhbmAsIGBudW1lcmljYCBvciBgc3RyaW5nYCwgd2hlcmUgYHN0cmluZ2Agd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIHJlZ2V4IG5vdGF0aW9uLiBSZXF1ZXN0IGRhdGEgaXMgZGVlcC1zY2FubmVkIGZvciBtYXRjaGluZyBkZWZpbml0aW9ucyB0byBkZXRlY3QgYWxzbyBhbnkgbmVzdGVkIG9jY3VycmVuY2VzLiBEZWZhdWx0cyBhcmUgcGF0dGVybnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIHVzZWQgaW4gbWFsaWNpb3VzIHJlcXVlc3RzLiBTZXR0aW5nIHRoaXMgb3B0aW9uIHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcGF0dGVybnMuXG4gIDpERUZBVUxUOiBbe1wia2V5XCI6XCJfYnNvbnR5cGVcIixcInZhbHVlXCI6XCJDb2RlXCJ9LHtcImtleVwiOlwiY29uc3RydWN0b3JcIn0se1wia2V5XCI6XCJfX3Byb3RvX19cIn1dICovXG4gIHJlcXVlc3RLZXl3b3JkRGVueWxpc3Q6ID8oUmVxdWVzdEtleXdvcmREZW55bGlzdFtdKTtcbiAgLyogT3B0aW9ucyB0byBsaW1pdCByZXBlYXRlZCByZXF1ZXN0cyB0byBQYXJzZSBTZXJ2ZXIgQVBJcy4gVGhpcyBjYW4gYmUgdXNlZCB0byBwcm90ZWN0IHNlbnNpdGl2ZSBlbmRwb2ludHMgc3VjaCBhcyBgL3JlcXVlc3RQYXNzd29yZFJlc2V0YCBmcm9tIGJydXRlLWZvcmNlIGF0dGFja3Mgb3IgUGFyc2UgU2VydmVyIGFzIGEgd2hvbGUgZnJvbSBkZW5pYWwtb2Ytc2VydmljZSAoRG9TKSBhdHRhY2tzLjxicj48YnI+4oS577iPIE1pbmQgdGhlIGZvbGxvd2luZyBsaW1pdGF0aW9uczo8YnI+LSByYXRlIGxpbWl0cyBhcHBsaWVkIHBlciBJUCBhZGRyZXNzOyB0aGlzIGxpbWl0cyBwcm90ZWN0aW9uIGFnYWluc3QgZGlzdHJpYnV0ZWQgZGVuaWFsLW9mLXNlcnZpY2UgKEREb1MpIGF0dGFja3Mgd2hlcmUgbWFueSByZXF1ZXN0cyBhcmUgY29taW5nIGZyb20gdmFyaW91cyBJUCBhZGRyZXNzZXM8YnI+LSBpZiBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXIgaW5zdGFuY2VzIGFyZSBiZWhpbmQgYSBsb2FkIGJhbGFuY2VyIG9yIHJhbiBpbiBhIGNsdXN0ZXIsIGVhY2ggaW5zdGFuY2Ugd2lsbCBjYWxjdWxhdGUgaXQncyBvd24gcmVxdWVzdCByYXRlcywgaW5kZXBlbmRlbnQgZnJvbSBvdGhlciBpbnN0YW5jZXM7IHRoaXMgbGltaXRzIHRoZSBhcHBsaWNhYmlsaXR5IG9mIHRoaXMgZmVhdHVyZSB3aGVuIHVzaW5nIGEgbG9hZCBiYWxhbmNlciBhbmQgYW5vdGhlciByYXRlIGxpbWl0aW5nIHNvbHV0aW9uIHRoYXQgdGFrZXMgcmVxdWVzdHMgYWNyb3NzIGFsbCBpbnN0YW5jZXMgaW50byBhY2NvdW50IG1heSBiZSBtb3JlIHN1aXRhYmxlPGJyPi0gdGhpcyBmZWF0dXJlIHByb3ZpZGVzIGJhc2ljIHByb3RlY3Rpb24gYWdhaW5zdCBkZW5pYWwtb2Ytc2VydmljZSBhdHRhY2tzLCBidXQgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgc29sdXRpb24gd29ya3MgZWFybGllciBpbiB0aGUgcmVxdWVzdCBmbG93IGFuZCBwcmV2ZW50cyBhIG1hbGljaW91cyByZXF1ZXN0cyB0byBldmVuIHJlYWNoIGEgc2VydmVyIGluc3RhbmNlOyBpdCdzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byBpbXBsZW1lbnQgYSBzb2x1dGlvbiBhY2NvcmRpbmcgdG8gYXJjaGl0ZWN0dXJlIGFuZCB1c2UgY2FzZS48YnI+LSByYXRlIGxpbWl0cyBhcmUgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBSRVNUIEFQSSBVUkwgcGF0aCAoYHJlcXVlc3RQYXRoYCkgYW5kIHRoZXJlZm9yZSBhcHBseSB0byBSRVNUIEFQSSByb3V0ZXMgb25seTsgdGhleSBkbyBub3QgYXBwbHkgdG8gR3JhcGhRTCBvcGVyYXRpb25zLCB3aGljaCBhcmUgYWxsIHNlcnZlZCB1bmRlciB0aGUgc2luZ2xlIEdyYXBoUUwgZW5kcG9pbnQgcGF0aCAoYGdyYXBoUUxQYXRoYCwgZGVmYXVsdCBgL2dyYXBocWxgKSBhbmQgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHJlcXVlc3QgcGF5bG9hZCByYXRoZXIgdGhhbiB0aGUgVVJMLiBUbyByYXRlIGxpbWl0IEdyYXBoUUwsIGVpdGhlciBzZXQgYSBgcmVxdWVzdFBhdGhgIGZvciB0aGUgR3JhcGhRTCBlbmRwb2ludCBwYXRoIHRvIHRocm90dGxlIHRoZSBlbnRpcmUgR3JhcGhRTCBBUEksIG9yIHVzZSBhIEdyYXBoUUwtYXdhcmUgcmF0ZSBsaW1pdGluZyBzb2x1dGlvbiAoZm9yIGV4YW1wbGUgYSBzY2hlbWEtZGlyZWN0aXZlLWJhc2VkIHJhdGUgbGltaXRlcikgZm9yIHBlci1vcGVyYXRpb24gbGltaXRzLlxuICA6REVGQVVMVDogW10gKi9cbiAgcmF0ZUxpbWl0OiA/KFJhdGVMaW1pdE9wdGlvbnNbXSk7XG4gIC8qIE9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSByZXF1ZXN0IGNvbnRleHQgdXNpbmcgaW52ZXJzaW9uIG9mIGNvbnRyb2wvZGVwZW5kZW5jeSBpbmplY3Rpb24uKi9cbiAgcmVxdWVzdENvbnRleHRNaWRkbGV3YXJlOiA/KHJlcTogYW55LCByZXM6IGFueSwgbmV4dDogYW55KSA9PiB2b2lkO1xuICAvKiBJZiBzZXQgdG8gYHRydWVgLCBlcnJvciBkZXRhaWxzIGFyZSByZW1vdmVkIGZyb20gZXJyb3IgbWVzc2FnZXMgaW4gcmVzcG9uc2VzIHRvIGNsaWVudCByZXF1ZXN0cywgYW5kIGluc3RlYWQgYSBnZW5lcmljIGVycm9yIG1lc3NhZ2UgaXMgc2VudC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuYWJsZVNhbml0aXplZEVycm9yUmVzcG9uc2U6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhdGVMaW1pdE9wdGlvbnMge1xuICAvKiBUaGUgcGF0aCBvZiB0aGUgQVBJIHJvdXRlIHRvIGJlIHJhdGUgbGltaXRlZC4gUm91dGUgcGF0aHMsIGluIGNvbWJpbmF0aW9uIHdpdGggYSByZXF1ZXN0IG1ldGhvZCwgZGVmaW5lIHRoZSBlbmRwb2ludHMgYXQgd2hpY2ggcmVxdWVzdHMgY2FuIGJlIG1hZGUuIFJvdXRlIHBhdGhzIGNhbiBiZSBzdHJpbmdzIG9yIHN0cmluZyBwYXR0ZXJucyBmb2xsb3dpbmcgPGEgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9waWxsYXJqcy9wYXRoLXRvLXJlZ2V4cFwiPnBhdGgtdG8tcmVnZXhwIHY4PC9hPiBzeW50YXguICovXG4gIHJlcXVlc3RQYXRoOiBzdHJpbmc7XG4gIC8qIFRoZSB3aW5kb3cgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgd2l0aGluIHdoaWNoIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgc2V0IGluIGByZXF1ZXN0Q291bnRgIGNhbiBiZSBtYWRlIGJlZm9yZSB0aGUgcmF0ZSBsaW1pdCBpcyBhcHBsaWVkLiAqL1xuICByZXF1ZXN0VGltZVdpbmRvdzogP251bWJlcjtcbiAgLyogVGhlIG51bWJlciBvZiByZXF1ZXN0cyB0aGF0IGNhbiBiZSBtYWRlIHBlciBJUCBhZGRyZXNzIHdpdGhpbiB0aGUgdGltZSB3aW5kb3cgc2V0IGluIGByZXF1ZXN0VGltZVdpbmRvd2AgYmVmb3JlIHRoZSByYXRlIGxpbWl0IGlzIGFwcGxpZWQuIEZvciBiYXRjaCByZXF1ZXN0cywgdGhpcyBhbHNvIGxpbWl0cyB0aGUgbnVtYmVyIG9mIHN1Yi1yZXF1ZXN0cyBpbiBhIHNpbmdsZSBiYXRjaCB0aGF0IHRhcmdldCB0aGlzIHBhdGg7IGhvd2V2ZXIsIHJlcXVlc3RzIGFscmVhZHkgY29uc3VtZWQgaW4gdGhlIGN1cnJlbnQgdGltZSB3aW5kb3cgYXJlIG5vdCBjb3VudGVkIGFnYWluc3QgdGhlIGJhdGNoLCBzbyB0aGUgZWZmZWN0aXZlIGxpbWl0IG1heSBiZSBoaWdoZXIgd2hlbiBjb21iaW5pbmcgaW5kaXZpZHVhbCBhbmQgYmF0Y2ggcmVxdWVzdHMuIE5vdGUgdGhhdCB0aGlzIGlzIGEgYmFzaWMgc2VydmVyLWxldmVsIHJhdGUgbGltaXQ7IGZvciBjb21wcmVoZW5zaXZlIHByb3RlY3Rpb24sIHVzZSBhIHJldmVyc2UgcHJveHkgb3IgV0FGIGZvciByYXRlIGxpbWl0aW5nLiAqL1xuICByZXF1ZXN0Q291bnQ6ID9udW1iZXI7XG4gIC8qIFRoZSBlcnJvciBtZXNzYWdlIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIGluIHRoZSBib2R5IG9mIHRoZSBIVFRQIDQyOSByZXNwb25zZSB3aGVuIHRoZSByYXRlIGxpbWl0IGlzIGhpdC4gRGVmYXVsdCBpcyBgVG9vIG1hbnkgcmVxdWVzdHMuYC5cbiAgOkRFRkFVTFQ6IFRvbyBtYW55IHJlcXVlc3RzLiAqL1xuICBlcnJvclJlc3BvbnNlTWVzc2FnZTogP3N0cmluZztcbiAgLyogT3B0aW9uYWwsIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kcyB0byB3aGljaCB0aGUgcmF0ZSBsaW1pdCBzaG91bGQgYmUgYXBwbGllZCwgZGVmYXVsdCBpcyBhbGwgbWV0aG9kcy4gVGhlIG1ldGhvZCBpcyBtYXRjaGVkIGFmdGVyIGFueSBgX21ldGhvZGAgYm9keSBvdmVycmlkZSBoYXMgYmVlbiByZXNvbHZlZCwgaS5lLiBpdCBpcyB0aGUgbWV0aG9kIHVzZWQgdG8gcm91dGUgdGhlIHJlcXVlc3QuIE5vdGUgdGhhdCBzb21lIGVuZHBvaW50cyBhcmUgcmVhY2hhYmxlIHZpYSBtb3JlIHRoYW4gb25lIEhUVFAgbWV0aG9kIChmb3IgZXhhbXBsZSBgL2xvZ2luYCBhbmQgYC92ZXJpZnlQYXNzd29yZGAgYXJlIGF2YWlsYWJsZSB2aWEgYm90aCBgR0VUYCBhbmQgYFBPU1RgKTsgdG8gcmF0ZSBsaW1pdCBzdWNoIGFuIGVuZHBvaW50IHJlbGlhYmx5LCBpbmNsdWRlIGFsbCByZWxldmFudCBtZXRob2RzIChlLmcuIGBbJ0dFVCcsICdQT1NUJ11gKSBvciBvbWl0IHRoaXMgb3B0aW9uIHRvIGFwcGx5IHRoZSBsaW1pdCB0byBhbGwgbWV0aG9kcy4gKi9cbiAgcmVxdWVzdE1ldGhvZHM6ID8oc3RyaW5nW10pO1xuICAvKiBPcHRpb25hbCwgaWYgYHRydWVgIHRoZSByYXRlIGxpbWl0IHdpbGwgYWxzbyBhcHBseSB0byByZXF1ZXN0cyB1c2luZyB0aGUgYG1hc3RlcktleWAsIGRlZmF1bHQgaXMgYGZhbHNlYC4gTm90ZSB0aGF0IGEgcHVibGljIENsb3VkIENvZGUgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyBpbnRlcm5hbCByZXF1ZXN0cyB1c2luZyB0aGUgYG1hc3RlcktleWAgbWF5IGNpcmN1bXZlbnQgcmF0ZSBsaW1pdGluZyBhbmQgYmUgdnVsbmVyYWJsZSB0byBhdHRhY2tzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgaW5jbHVkZU1hc3RlcktleTogP2Jvb2xlYW47XG4gIC8qIE9wdGlvbmFsLCBpZiBgdHJ1ZWAgdGhlIHJhdGUgbGltaXQgd2lsbCBhbHNvIGFwcGx5IHRvIHJlcXVlc3RzIHRoYXQgYXJlIG1hZGUgaW4gYnkgQ2xvdWQgQ29kZSwgZGVmYXVsdCBpcyBgZmFsc2VgLiBOb3RlIHRoYXQgYSBwdWJsaWMgQ2xvdWQgQ29kZSBmdW5jdGlvbiB0aGF0IHRyaWdnZXJzIGludGVybmFsIHJlcXVlc3RzIG1heSBjaXJjdW12ZW50IHJhdGUgbGltaXRpbmcgYW5kIGJlIHZ1bG5lcmFibGUgdG8gYXR0YWNrcy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGluY2x1ZGVJbnRlcm5hbFJlcXVlc3RzOiA/Ym9vbGVhbjtcbiAgLyogT3B0aW9uYWwsIHRoZSBVUkwgb2YgdGhlIFJlZGlzIHNlcnZlciB0byBzdG9yZSByYXRlIGxpbWl0IGRhdGEuIFRoaXMgYWxsb3dzIHRvIHJhdGUgbGltaXQgcmVxdWVzdHMgZm9yIG11bHRpcGxlIHNlcnZlcnMgYnkgY2FsY3VsYXRpbmcgdGhlIHN1bSBvZiBhbGwgcmVxdWVzdHMgYWNyb3NzIGFsbCBzZXJ2ZXJzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtdWx0aXBsZSBzZXJ2ZXJzIGFyZSBwcm9jZXNzaW5nIHJlcXVlc3RzIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIuIEZvciBleGFtcGxlLCB0aGUgbGltaXQgb2YgMTAgcmVxdWVzdHMgaXMgcmVhY2hlZCBpZiBlYWNoIG9mIDIgc2VydmVycyBwcm9jZXNzZWQgNSByZXF1ZXN0cy5cbiAgICovXG4gIHJlZGlzVXJsOiA/c3RyaW5nO1xuICAvKiBUaGUgdHlwZSBvZiByYXRlIGxpbWl0IHRvIGFwcGx5LiBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4gIDx1bD5cbiAgPGxpPmBnbG9iYWxgOiByYXRlIGxpbWl0IGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgbWFkZSBieSBhbGwgdXNlcnM8L2xpPlxuICA8bGk+YGlwYDogcmF0ZSBsaW1pdCBiYXNlZCBvbiB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgcmVxdWVzdDwvbGk+XG4gIDxsaT5gdXNlcmA6IHJhdGUgbGltaXQgYmFzZWQgb24gdGhlIHVzZXIgSUQgb2YgdGhlIHJlcXVlc3Q8L2xpPlxuICA8bGk+YHNlc3Npb25gOiByYXRlIGxpbWl0IGJhc2VkIG9uIHRoZSBzZXNzaW9uIHRva2VuIG9mIHRoZSByZXF1ZXN0PC9saT5cbiAgPC91bD5cbiAgRGVmYXVsdCBpcyBgaXBgLlxuICA6REVGQVVMVDogaXAgKi9cbiAgem9uZTogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0Q29tcGxleGl0eU9wdGlvbnMge1xuICAvKiBXaGV0aGVyIHRvIGFsbG93IHRoZSBgJHJlZ2V4YCBxdWVyeSBvcGVyYXRvci4gU2V0IHRvIGBmYWxzZWAgdG8gcmVqZWN0IGAkcmVnZXhgIGluIHF1ZXJpZXMgZm9yIG5vbi1tYXN0ZXIta2V5IHVzZXJzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1JFUVVFU1RfQ09NUExFWElUWV9BTExPV19SRUdFWFxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBhbGxvd1JlZ2V4OiA/Ym9vbGVhbjtcbiAgLyogTWF4aW11bSBkZXB0aCBvZiBpbmNsdWRlIHBvaW50ZXIgY2hhaW5zIChlLmcuIGBhLmIuY2AgPSBkZXB0aCAzKS4gU2V0IHRvIGAtMWAgdG8gZGlzYWJsZS4gRGVmYXVsdCBpcyBgLTFgLlxuICA6REVGQVVMVDogLTEgKi9cbiAgaW5jbHVkZURlcHRoOiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG51bWJlciBvZiBpbmNsdWRlIHBhdGhzIGluIGEgc2luZ2xlIHF1ZXJ5LiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpERUZBVUxUOiAtMSAqL1xuICBpbmNsdWRlQ291bnQ6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gbmVzdGluZyBkZXB0aCBvZiBgJGluUXVlcnlgLCBgJG5vdEluUXVlcnlgLCBgJHNlbGVjdGAsIGAkZG9udFNlbGVjdGAgc3VicXVlcmllcy4gU2V0IHRvIGAtMWAgdG8gZGlzYWJsZS4gRGVmYXVsdCBpcyBgLTFgLlxuICA6REVGQVVMVDogLTEgKi9cbiAgc3VicXVlcnlEZXB0aDogP251bWJlcjtcbiAgLyogTWF4aW11bSBudW1iZXIgb2YgcmVzdWx0cyByZXR1cm5lZCBieSBhIGAkaW5RdWVyeWAsIGAkbm90SW5RdWVyeWAsIGAkc2VsZWN0YCwgYCRkb250U2VsZWN0YCBzdWJxdWVyeS4gU2V0IHRvIGAtMWAgdG8gZGlzYWJsZS4gRGVmYXVsdCBpcyBgLTFgLlxuICA6REVGQVVMVDogLTEgKi9cbiAgc3VicXVlcnlMaW1pdDogP251bWJlcjtcbiAgLyogTWF4aW11bSBuZXN0aW5nIGRlcHRoIG9mIGAkb3JgLCBgJGFuZGAsIGAkbm9yYCBxdWVyeSBvcGVyYXRvcnMuIFNldCB0byBgLTFgIHRvIGRpc2FibGUuIERlZmF1bHQgaXMgYC0xYC5cbiAgOkRFRkFVTFQ6IC0xICovXG4gIHF1ZXJ5RGVwdGg6ID9udW1iZXI7XG4gIC8qIE1heGltdW0gZGVwdGggb2YgR3JhcGhRTCBmaWVsZCBzZWxlY3Rpb25zLiBTZXQgdG8gYC0xYCB0byBkaXNhYmxlLiBEZWZhdWx0IGlzIGAtMWAuXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9SRVFVRVNUX0NPTVBMRVhJVFlfR1JBUEhRTF9ERVBUSFxuICA6REVGQVVMVDogLTEgKi9cbiAgZ3JhcGhRTERlcHRoOiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG51bWJlciBvZiBmaWVsZCBzZWxlY3Rpb25zIGluIGEgR3JhcGhRTCBxdWVyeS4gU2V0IHRvIGAtMWAgdG8gZGlzYWJsZS4gRGVmYXVsdCBpcyBgLTFgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUkVRVUVTVF9DT01QTEVYSVRZX0dSQVBIUUxfRklFTERTXG4gIDpERUZBVUxUOiAtMSAqL1xuICBncmFwaFFMRmllbGRzOiA/bnVtYmVyO1xuICAvKiBNYXhpbXVtIG51bWJlciBvZiBzdWItcmVxdWVzdHMgaW4gYSBzaW5nbGUgYmF0Y2ggcmVxdWVzdC4gU2V0IHRvIGAtMWAgdG8gZGlzYWJsZS4gRGVmYXVsdCBpcyBgLTFgLlxuICA6REVGQVVMVDogLTEgKi9cbiAgYmF0Y2hSZXF1ZXN0TGltaXQ6ID9udW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFsbGF0aW9uT3B0aW9ucyB7XG4gIC8qIFdoZXRoZXIgdGhlIGBfSW5zdGFsbGF0aW9uYCBkZWR1cGxpY2F0aW9uIG9wZXJhdGlvbiBlbmZvcmNlcyB0aGUgY2FsbGVyJ3MgYXV0aCBjb250ZXh0IChhbmQgdGhlIHJlc3VsdGluZyBBQ0wgYW5kIENMUCkuIFdoZW4gYHRydWVgLCB0aGUgZGVkdXAgYGRlc3Ryb3lgL2B1cGRhdGVgIHJ1bnMgd2l0aCB0aGUgY2FsbGVyJ3MgYHJ1bk9wdGlvbnNgLCBzbyBBQ0wgYW5kIENMUCBhcmUgaG9ub3JlZC4gV2hlbiBgZmFsc2VgLCB0aGUgZGVkdXAgcnVucyBhcyBtYXN0ZXIgYW5kIGJ5cGFzc2VzIGJvdGguIE1hc3RlciBhbmQgbWFpbnRlbmFuY2Uga2V5cyBhbHdheXMgYnlwYXNzIHJlZ2FyZGxlc3Mgb2YgdGhpcyBmbGFnLiBCZWNhdXNlIHdoYXQgdGhpcyBvcHRpb24gZW5mb3JjZXMgaXMgdGhlIEFDTCBhbmQgdGhlIGNsYXNzLWxldmVsIHBlcm1pc3Npb25zLCBpdCBoYXMgbm8gZWZmZWN0IG9uIGl0cyBvd24gZm9yIGEgcmVjb3JkIHRoYXQgY2FycmllcyBubyBBQ0wgdW5kZXIgcGVybWlzc2l2ZSBjbGFzcy1sZXZlbCBwZXJtaXNzaW9uczsgdG8gc2NvcGUgdGhlIGRlZHVwbGljYXRpb24sIGNvbWJpbmUgdGhpcyBvcHRpb24gd2l0aCBhbiBBQ0wgb24gYF9JbnN0YWxsYXRpb25gIHJlY29yZHMgb3Igd2l0aCBjbGFzcy1sZXZlbCBwZXJtaXNzaW9ucyB0aGF0IHdpdGhob2xkIHRoZSBgZGVsZXRlYCBvcGVyYXRpb24gZnJvbSB0aGUgY2FsbGVyLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkdXBsaWNhdGVEZXZpY2VUb2tlbkFjdGlvbkVuZm9yY2VBdXRoOiA/Ym9vbGVhbjtcbiAgLyogV2hhdCBQYXJzZSBTZXJ2ZXIgZG9lcyB0byB0aGUgY29uZmxpY3RpbmcgYF9JbnN0YWxsYXRpb25gIHJvdyhzKSB3aGVuIGEgbmV3IGluc3RhbGwncyBgZGV2aWNlVG9rZW5gIGNvbGxpZGVzIHdpdGggYW4gZXhpc3Rpbmcgcm93LiBgJ2RlbGV0ZSdgIGRlc3Ryb3lzIHRoZSBjb25mbGljdGluZyByb3cuIGAndXBkYXRlJ2AgY2xlYXJzIHRoZSBub3ctY29uZmxpY3RpbmcgSUQgZmllbGQgb24gdGhlIGNvbmZsaWN0aW5nIHJvdywgcHJlc2VydmluZyBjdXN0b20gZmllbGRzLCBjaGFubmVscywgYW5kIGhpc3RvcnkuIERlZmF1bHQgaXMgYCdkZWxldGUnYC5cbiAgOkRFRkFVTFQ6IGRlbGV0ZSAqL1xuICBkdXBsaWNhdGVEZXZpY2VUb2tlbkFjdGlvbjogP3N0cmluZztcbiAgLyogQXQgdGhlIG1lcmdlIGNhc2UgKHdoZW4gYW4gZXhpc3Rpbmcgcm93IGhvbGRzIHRoZSBuZXcgYGRldmljZVRva2VuYCBidXQgaGFzIG5vIGBpbnN0YWxsYXRpb25JZGAgb2YgaXRzIG93biksIHdoaWNoIHNpZGUgd2lucy4gYCdkZXZpY2VUb2tlbidgIOKAlCB0aGUgZGV2aWNlVG9rZW4tb25seSByb3cgc3Vydml2ZXMsIHRoZSByZXF1ZXN0J3MgYGlkTWF0Y2hgIHJvdyBpcyB0aGUgbG9zZXIuIGAnaW5zdGFsbGF0aW9uSWQnYCDigJQgdGhlIHJlcXVlc3QncyBgaWRNYXRjaGAgKGFjdGl2ZSBpbnN0YWxsKSBzdXJ2aXZlcywgdGhlIGRldmljZVRva2VuLW9ubHkgb3JwaGFuIGlzIHRoZSBsb3Nlci4gRGVmYXVsdCBpcyBgJ2RldmljZVRva2VuJ2AuXG4gIDpERUZBVUxUOiBkZXZpY2VUb2tlbiAqL1xuICBkdXBsaWNhdGVEZXZpY2VUb2tlbk1lcmdlUHJpb3JpdHk6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlPcHRpb25zIHtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGNoZWNrIGZvciB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlQ2hlY2s6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIHRoZSBzZWN1cml0eSBjaGVjayByZXBvcnQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9ncy4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIHRlbXBvcmFyaWx5IHRvIG5vdCBleHBvc2Ugd2VhayBzZWN1cml0eSBzZXR0aW5ncyBpbiBsb2dzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlQ2hlY2tMb2c6ID9ib29sZWFuO1xuICAvKiBUaGUgc2VjdXJpdHkgY2hlY2sgZ3JvdXBzIHRvIHJ1bi4gVGhpcyBhbGxvd3MgdG8gYWRkIGN1c3RvbSBzZWN1cml0eSBjaGVja3Mgb3Igb3ZlcnJpZGUgZXhpc3Rpbmcgb25lcy4gRGVmYXVsdCBhcmUgdGhlIGdyb3VwcyBkZWZpbmVkIGluIGBDaGVja0dyb3Vwcy5qc2AuICovXG4gIGNoZWNrR3JvdXBzOiA/KENoZWNrR3JvdXBbXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlTZXJ2ZXJPcHRpb25zIHtcbiAgLyogV2hlbiBgdHJ1ZWAsIGFsbCBhZ2dyZWdhdGlvbiBxdWVyaWVzIGRlZmF1bHQgdG8gdXNpbmcgTW9uZ29EQiBFeHRlbmRlZCBKU09OIChFSlNPTikgZm9yIGV4cGxpY2l0IHZhbHVlIHR5cGluZyBhbmQgc2tpcCBzY2hlbWEtYmFzZWQgdmFsdWUgY29lcmNpb24uIEluZGl2aWR1YWwgcXVlcmllcyBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhpcyB2aWEgdGhlIGByYXdWYWx1ZXNgIG9wdGlvbi4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUVVFUllfQUdHUkVHQVRJT05fUkFXX1ZBTFVFU1xuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWdncmVnYXRpb25SYXdWYWx1ZXM6ID9ib29sZWFuO1xuICAvKiBXaGVuIGB0cnVlYCwgYWxsIGFnZ3JlZ2F0aW9uIHF1ZXJpZXMgZGVmYXVsdCB0byB1c2luZyBuYXRpdmUgTW9uZ29EQiBmaWVsZCBuYW1lcyAobm8gYXV0b21hdGljIGBjcmVhdGVkQXRgIOKGkiBgX2NyZWF0ZWRfYXRgIHJld3JpdGluZykuIEluZGl2aWR1YWwgcXVlcmllcyBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhpcyB2aWEgdGhlIGByYXdGaWVsZE5hbWVzYCBvcHRpb24uIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1FVRVJZX0FHR1JFR0FUSU9OX1JBV19GSUVMRF9OQU1FU1xuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgYWdncmVnYXRpb25SYXdGaWVsZE5hbWVzOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlc09wdGlvbnMge1xuICAvKiBJcyB0cnVlIGlmIHBhZ2VzIHNob3VsZCBiZSBsb2NhbGl6ZWQ7IHRoaXMgaGFzIG5vIGVmZmVjdCBvbiBjdXN0b20gcGFnZSByZWRpcmVjdHMuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVMb2NhbGl6YXRpb246ID9ib29sZWFuO1xuICAvKiBUaGUgcGF0aCB0byB0aGUgSlNPTiBmaWxlIGZvciBsb2NhbGl6YXRpb247IHRoZSB0cmFuc2xhdGlvbnMgd2lsbCBiZSB1c2VkIHRvIGZpbGwgdGVtcGxhdGUgcGxhY2Vob2xkZXJzIGFjY29yZGluZyB0byB0aGUgbG9jYWxlLiAqL1xuICBsb2NhbGl6YXRpb25Kc29uUGF0aDogP3N0cmluZztcbiAgLyogVGhlIGZhbGxiYWNrIGxvY2FsZSBmb3IgbG9jYWxpemF0aW9uIGlmIG5vIG1hdGNoaW5nIHRyYW5zbGF0aW9uIGlzIHByb3ZpZGVkIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgd2hlbiBwcm92aWRpbmcgdHJhbnNsYXRpb24gcmVzb3VyY2VzIHZpYSBKU09OIGZpbGUuXG4gIDpERUZBVUxUOiBlbiAqL1xuICBsb2NhbGl6YXRpb25GYWxsYmFja0xvY2FsZTogP3N0cmluZztcbiAgLyogVGhlIHBsYWNlaG9sZGVyIGtleXMgYW5kIHZhbHVlcyB3aGljaCB3aWxsIGJlIGZpbGxlZCBpbiBwYWdlczsgdGhpcyBjYW4gYmUgYSBzaW1wbGUgb2JqZWN0IG9yIGEgY2FsbGJhY2sgZnVuY3Rpb24uXG4gIDpERUZBVUxUOiB7fSAqL1xuICBwbGFjZWhvbGRlcnM6ID9PYmplY3Q7XG4gIC8qIElzIHRydWUgaWYgcmVzcG9uc2VzIHNob3VsZCBhbHdheXMgYmUgcmVkaXJlY3RzIGFuZCBuZXZlciBjb250ZW50LCBmYWxzZSBpZiB0aGUgcmVzcG9uc2UgdHlwZSBzaG91bGQgZGVwZW5kIG9uIHRoZSByZXF1ZXN0IHR5cGUgKEdFVCByZXF1ZXN0IC0+IGNvbnRlbnQgcmVzcG9uc2U7IFBPU1QgcmVxdWVzdCAtPiByZWRpcmVjdCByZXNwb25zZSkuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBmb3JjZVJlZGlyZWN0OiA/Ym9vbGVhbjtcbiAgLyogVGhlIHBhdGggdG8gdGhlIHBhZ2VzIGRpcmVjdG9yeTsgdGhpcyBhbHNvIGRlZmluZXMgd2hlcmUgdGhlIHN0YXRpYyBlbmRwb2ludCAnL2FwcHMnIHBvaW50cyB0by4gRGVmYXVsdCBpcyB0aGUgJy4vcHVibGljLycgZGlyZWN0b3J5IG9mIHRoZSBwYXJzZS1zZXJ2ZXIgbW9kdWxlLiAqL1xuICBwYWdlc1BhdGg6ID9zdHJpbmc7XG4gIC8qIFRoZSBBUEkgZW5kcG9pbnQgZm9yIHRoZSBwYWdlcy4gRGVmYXVsdCBpcyAnYXBwcycuXG4gIDpERUZBVUxUOiBhcHBzICovXG4gIHBhZ2VzRW5kcG9pbnQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkxzIHRvIHRoZSBjdXN0b20gcGFnZXMuXG4gIDpERUZBVUxUOiB7fSAqL1xuICBjdXN0b21VcmxzOiA/UGFnZXNDdXN0b21VcmxzT3B0aW9ucztcbiAgLyogVGhlIGN1c3RvbSByb3V0ZXMuXG4gIDpERUZBVUxUOiBbXSAqL1xuICBjdXN0b21Sb3V0ZXM6ID8oUGFnZXNSb3V0ZVtdKTtcbiAgLyogSXMgYHRydWVgIGlmIHRoZSBwYWdlIHBhcmFtZXRlciBoZWFkZXJzIHNob3VsZCBiZSBVUkktZW5jb2RlZC4gVGhpcyBpcyByZXF1aXJlZCBpZiBhbnkgcGFnZSBwYXJhbWV0ZXIgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIHN1Y2ggYXMgdGhlIGFwcCBuYW1lLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5jb2RlUGFnZVBhcmFtSGVhZGVyczogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXNSb3V0ZSB7XG4gIC8qIFRoZSByb3V0ZSBwYXRoLiAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qIFRoZSByb3V0ZSBtZXRob2QsIGUuZy4gJ0dFVCcgb3IgJ1BPU1QnLiAqL1xuICBtZXRob2Q6IHN0cmluZztcbiAgLyogVGhlIHJvdXRlIGhhbmRsZXIgdGhhdCBpcyBhbiBhc3luYyBmdW5jdGlvbi4gKi9cbiAgaGFuZGxlcjogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlc0N1c3RvbVVybHNPcHRpb25zIHtcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0LiAqL1xuICBwYXNzd29yZFJlc2V0OiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gbGluayBpbnZhbGlkLiAqL1xuICBwYXNzd29yZFJlc2V0TGlua0ludmFsaWQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBzdWNjZXNzLiAqL1xuICBwYXNzd29yZFJlc2V0U3VjY2VzczogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBzdWNjZXNzLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvblN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBzZW5kIGZhaWwuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uU2VuZEZhaWw6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gcmVzZW5kIGxpbmsgLT4gc3VjY2Vzcy4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25TZW5kU3VjY2VzczogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGludmFsaWQuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0ludmFsaWQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBleHBpcmVkLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvbkxpbmtFeHBpcmVkOiA/c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVBhZ2VzT3B0aW9ucyB7XG4gIC8qIGludmFsaWQgbGluayBwYWdlIHBhdGggKi9cbiAgaW52YWxpZExpbms6ID9zdHJpbmc7XG4gIC8qIHZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgZmFpbCBwYWdlIHBhdGggKi9cbiAgbGlua1NlbmRGYWlsOiA/c3RyaW5nO1xuICAvKiBjaG9vc2UgcGFzc3dvcmQgcGFnZSBwYXRoICovXG4gIGNob29zZVBhc3N3b3JkOiA/c3RyaW5nO1xuICAvKiB2ZXJpZmljYXRpb24gbGluayBzZW5kIHN1Y2Nlc3MgcGFnZSBwYXRoICovXG4gIGxpbmtTZW5kU3VjY2VzczogP3N0cmluZztcbiAgLyogdmVyaWZ5IGVtYWlsIHN1Y2Nlc3MgcGFnZSBwYXRoICovXG4gIHZlcmlmeUVtYWlsU3VjY2VzczogP3N0cmluZztcbiAgLyogcGFzc3dvcmQgcmVzZXQgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgcGFzc3dvcmRSZXNldFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIGludmFsaWQgdmVyaWZpY2F0aW9uIGxpbmsgcGFnZSBwYXRoICovXG4gIGludmFsaWRWZXJpZmljYXRpb25MaW5rOiA/c3RyaW5nO1xuICAvKiBleHBpcmVkIHZlcmlmaWNhdGlvbiBsaW5rIHBhZ2UgcGF0aCAqL1xuICBleHBpcmVkVmVyaWZpY2F0aW9uTGluazogP3N0cmluZztcbiAgLyogaW52YWxpZCBwYXNzd29yZCByZXNldCBsaW5rIHBhZ2UgcGF0aCAqL1xuICBpbnZhbGlkUGFzc3dvcmRSZXNldExpbms6ID9zdHJpbmc7XG4gIC8qIGZvciBtYXNraW5nIHVzZXItZmFjaW5nIHBhZ2VzICovXG4gIHBhcnNlRnJhbWVVUkw6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZVF1ZXJ5T3B0aW9ucyB7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSBjbGFzc05hbWVzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9MSVZFUVVFUllfQ0xBU1NOQU1FUyAqL1xuICBjbGFzc05hbWVzOiA/KHN0cmluZ1tdKTtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzT3B0aW9ucyAqL1xuICByZWRpc09wdGlvbnM6ID9hbnk7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTCAqL1xuICByZWRpc1VSTDogP3N0cmluZztcbiAgLyogTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyICovXG4gIHB1YlN1YkFkYXB0ZXI6ID9BZGFwdGVyPFB1YlN1YkFkYXB0ZXI+O1xuICAvKiBTZXRzIHRoZSBtYXhpbXVtIGV4ZWN1dGlvbiB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gbWF0Y2hpbmcgaW4gTGl2ZVF1ZXJ5LiBUaGlzIHByb3RlY3RzIGFnYWluc3QgUmVndWxhciBFeHByZXNzaW9uIERlbmlhbCBvZiBTZXJ2aWNlIChSZURvUykgYXR0YWNrcyB3aGVyZSBhIG1hbGljaW91cyByZWdleCBwYXR0ZXJuIGNvdWxkIGJsb2NrIHRoZSBldmVudCBsb29wLiBBIHJlZ2V4IHRoYXQgZXhjZWVkcyB0aGUgdGltZW91dCB3aWxsIGJlIHRyZWF0ZWQgYXMgbm9uLW1hdGNoaW5nLjxicj48YnI+VGhlIHByb3RlY3Rpb24gcnVucyBlYWNoIHJlZ2V4IGV2YWx1YXRpb24gaW4gYW4gaXNvbGF0ZWQgVk0gY29udGV4dCB3aXRoIGEgdGltZW91dC4gVGhpcyBhZGRzIGFwcHJveGltYXRlbHkgNTAgbWljcm9zZWNvbmRzIG9mIG92ZXJoZWFkIHBlciByZWdleCBldmFsdWF0aW9uLiBGb3IgbW9zdCBhcHBsaWNhdGlvbnMgdGhpcyBpcyBuZWdsaWdpYmxlLCBidXQgaXQgY2FuIGFkZCB1cCBpZiB5b3UgaGF2ZSBhIHZlcnkgbGFyZ2UgbnVtYmVyIG9mIExpdmVRdWVyeSBzdWJzY3JpcHRpb25zIHRoYXQgdXNlIGAkcmVnZXhgIG9uIHRoZSBzYW1lIGNsYXNzLiBGb3IgZXhhbXBsZSwgMTAsMDAwIGNvbmN1cnJlbnQgcmVnZXggc3Vic2NyaXB0aW9ucyB3b3VsZCBhZGQgYXBwcm94aW1hdGVseSA1MDBtcyBvZiBwcm9jZXNzaW5nIHRpbWUgcGVyIG9iamVjdCBzYXZlIGV2ZW50IG9uIHRoYXQgY2xhc3MuPGJyPjxicj5TZXQgdG8gYDBgIHRvIGRpc2FibGUgdGhlIHRpbWVvdXQgYW5kIHVzZSBuYXRpdmUgcmVnZXggZXZhbHVhdGlvbiB3aXRob3V0IHByb3RlY3Rpb24uIERlZmF1bHRzIHRvIGAxMDBgLlxuICA6REVGQVVMVDogMTAwICovXG4gIHJlZ2V4VGltZW91dDogP251bWJlcjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBXZWJTb2NrZXRTZXJ2ZXIgKi9cbiAgd3NzQWRhcHRlcjogP0FkYXB0ZXI8V1NTQWRhcHRlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyB7XG4gIC8qIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgYXBwSWQgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBhcHBJZC4qL1xuICBhcHBJZDogP3N0cmluZztcbiAgLyogVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBtYXN0ZXJLZXkgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBtYXN0ZXJLZXkuKi9cbiAgbWFzdGVyS2V5OiA/c3RyaW5nO1xuICAvKiBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIHNlcnZlclVSTCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIHNlcnZlclVSTC4qL1xuICBzZXJ2ZXJVUkw6ID9zdHJpbmc7XG4gIC8qIEEgSlNPTiBvYmplY3QgdGhhdCBzZXJ2ZXMgYXMgYSB3aGl0ZWxpc3Qgb2Yga2V5cy4gSXQgaXMgdXNlZCBmb3IgdmFsaWRhdGluZyBjbGllbnRzIHdoZW4gdGhleSB0cnkgdG8gY29ubmVjdCB0byB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscy4qL1xuICBrZXlQYWlyczogP2FueTtcbiAgLyogTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHBpbmcvcG9uZyBmcmFtZXMuIFRoZSBXZWJTb2NrZXQgc2VydmVyIHNlbmRzIHBpbmcvcG9uZyBmcmFtZXMgdG8gdGhlIGNsaWVudHMgdG8ga2VlcCB0aGUgV2ViU29ja2V0IGFsaXZlLiBUaGlzIHZhbHVlIGRlZmluZXMgdGhlIGludGVydmFsIG9mIHRoZSBwaW5nL3BvbmcgZnJhbWUgZnJvbSB0aGUgc2VydmVyIHRvIGNsaWVudHMsIGRlZmF1bHRzIHRvIDEwICogMTAwMCBtcyAoMTAgcykuKi9cbiAgd2Vic29ja2V0VGltZW91dDogP251bWJlcjtcbiAgLyogTnVtYmVyIGluIG1pbGxpc2Vjb25kcy4gV2hlbiBjbGllbnRzIHByb3ZpZGUgdGhlIHNlc3Npb25Ub2tlbiB0byB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gZmV0Y2ggaXRzIFBhcnNlVXNlcidzIG9iamVjdElkIGZyb20gcGFyc2Ugc2VydmVyIGFuZCBzdG9yZSBpdCBpbiB0aGUgY2FjaGUuIFRoZSB2YWx1ZSBkZWZpbmVzIHRoZSBkdXJhdGlvbiBvZiB0aGUgY2FjaGUuIENoZWNrIHRoZSBmb2xsb3dpbmcgU2VjdXJpdHkgc2VjdGlvbiBhbmQgb3VyIHByb3RvY29sIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMsIGRlZmF1bHRzIHRvIDUgKiAxMDAwIG1zICg1IHNlY29uZHMpLiovXG4gIGNhY2hlVGltZW91dDogP251bWJlcjtcbiAgLyogVGhpcyBzdHJpbmcgZGVmaW5lcyB0aGUgbG9nIGxldmVsIG9mIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBXZSBzdXBwb3J0IFZFUkJPU0UsIElORk8sIEVSUk9SLCBOT05FLCBkZWZhdWx0cyB0byBJTkZPLiovXG4gIGxvZ0xldmVsOiA/c3RyaW5nO1xuICAvKiBUaGUgcG9ydCB0byBydW4gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuXG4gIDpERUZBVUxUOiAxMzM3ICovXG4gIHBvcnQ6ID9udW1iZXI7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc09wdGlvbnMgKi9cbiAgcmVkaXNPcHRpb25zOiA/YW55O1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkwgKi9cbiAgcmVkaXNVUkw6ID9zdHJpbmc7XG4gIC8qIExpdmVRdWVyeSBwdWJzdWIgYWRhcHRlciAqL1xuICBwdWJTdWJBZGFwdGVyOiA/QWRhcHRlcjxQdWJTdWJBZGFwdGVyPjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBXZWJTb2NrZXRTZXJ2ZXIgKi9cbiAgd3NzQWRhcHRlcjogP0FkYXB0ZXI8V1NTQWRhcHRlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbXBvdGVuY3lPcHRpb25zIHtcbiAgLyogQW4gYXJyYXkgb2YgcGF0aHMgZm9yIHdoaWNoIHRoZSBmZWF0dXJlIHNob3VsZCBiZSBlbmFibGVkLiBUaGUgbW91bnQgcGF0aCBtdXN0IG5vdCBiZSBpbmNsdWRlZCwgZm9yIGV4YW1wbGUgaW5zdGVhZCBvZiBgL3BhcnNlL2Z1bmN0aW9ucy9teUZ1bmN0aW9uYCBzcGVjaWZpeSBgZnVuY3Rpb25zL215RnVuY3Rpb25gLiBUaGUgZW50cmllcyBhcmUgaW50ZXJwcmV0ZWQgYXMgcmVndWxhciBleHByZXNzaW9uLCBmb3IgZXhhbXBsZSBgZnVuY3Rpb25zLy4qYCBtYXRjaGVzIGFsbCBmdW5jdGlvbnMsIGBqb2JzLy4qYCBtYXRjaGVzIGFsbCBqb2JzLCBgY2xhc3Nlcy8uKmAgbWF0Y2hlcyBhbGwgY2xhc3NlcywgYC4qYCBtYXRjaGVzIGFsbCBwYXRocy5cbiAgOkRFRkFVTFQ6IFtdICovXG4gIHBhdGhzOiA/KHN0cmluZ1tdKTtcbiAgLyogVGhlIGR1cmF0aW9uIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggYSByZXF1ZXN0IHJlY29yZCBpcyBkaXNjYXJkZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIDMwMHMuXG4gIDpERUZBVUxUOiAzMDAgKi9cbiAgdHRsOiA/bnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRMb2Nrb3V0T3B0aW9ucyB7XG4gIC8qIFNldCB0aGUgZHVyYXRpb24gaW4gbWludXRlcyB0aGF0IGEgbG9ja2VkLW91dCBhY2NvdW50IHJlbWFpbnMgbG9ja2VkIG91dCBiZWZvcmUgYXV0b21hdGljYWxseSBiZWNvbWluZyB1bmxvY2tlZC5cbiAgPGJyPjxicj5cbiAgVmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDAwMGAuICovXG4gIGR1cmF0aW9uOiA/bnVtYmVyO1xuICAvKiBTZXQgdGhlIG51bWJlciBvZiBmYWlsZWQgc2lnbi1pbiBhdHRlbXB0cyB0aGF0IHdpbGwgY2F1c2UgYSB1c2VyIGFjY291bnQgdG8gYmUgbG9ja2VkLiBJZiB0aGUgYWNjb3VudCBpcyBsb2NrZWQuIFRoZSBhY2NvdW50IHdpbGwgdW5sb2NrIGFmdGVyIHRoZSBkdXJhdGlvbiBzZXQgaW4gdGhlIGBkdXJhdGlvbmAgb3B0aW9uIGhhcyBwYXNzZWQgYW5kIG5vIGZ1cnRoZXIgbG9naW4gYXR0ZW1wdHMgaGF2ZSBiZWVuIG1hZGUuXG4gIDxicj48YnI+XG4gIFZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwYC4gKi9cbiAgdGhyZXNob2xkOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgICBpZiB0aGUgYWNjb3VudCBzaG91bGQgYmUgdW5sb2NrZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIHBhc3N3b3JkIHJlc2V0LlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9ucyBgZHVyYXRpb25gIGFuZCBgdGhyZXNob2xkYCB0byBiZSBzZXQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICB1bmxvY2tPblBhc3N3b3JkUmVzZXQ6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3N3b3JkUG9saWN5T3B0aW9ucyB7XG4gIC8qIFNldCB0aGUgcmVndWxhciBleHByZXNzaW9uIHZhbGlkYXRpb24gcGF0dGVybiBhIHBhc3N3b3JkIG11c3QgbWF0Y2ggdG8gYmUgYWNjZXB0ZWQuXG4gIDxicj48YnI+XG4gIElmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yQ2FsbGJhY2tgLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuICovXG4gIHZhbGlkYXRvclBhdHRlcm46ID9zdHJpbmc7XG4gIC8qICAgKi9cbiAgLyogU2V0IGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYSBwYXNzd29yZCB0byBiZSBhY2NlcHRlZC5cbiAgPGJyPjxicj5cbiAgSWYgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGB2YWxpZGF0b3JQYXR0ZXJuYCwgdGhlIHBhc3N3b3JkIG11c3QgcGFzcyBib3RoIHRvIGJlIGFjY2VwdGVkLiAqL1xuICB2YWxpZGF0b3JDYWxsYmFjazogPygpID0+IHZvaWQ7XG4gIC8qIFNldCB0aGUgZXJyb3IgbWVzc2FnZSB0byBiZSBzZW50LlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBQYXNzd29yZCBkb2VzIG5vdCBtZWV0IHRoZSBQYXNzd29yZCBQb2xpY3kgcmVxdWlyZW1lbnRzLmAgKi9cbiAgdmFsaWRhdGlvbkVycm9yOiA/c3RyaW5nO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGRpc2FsbG93IHRoZSB1c2VybmFtZSBhcyBwYXJ0IG9mIHRoZSBwYXNzd29yZC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZG9Ob3RBbGxvd1VzZXJuYW1lOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCBhIHBhc3N3b3JkIGV4cGlyZXMuIExvZ2luIGF0dGVtcHRzIGZhaWwgaWYgdGhlIHVzZXIgZG9lcyBub3QgcmVzZXQgdGhlIHBhc3N3b3JkIGJlZm9yZSBleHBpcmF0aW9uLiAqL1xuICBtYXhQYXNzd29yZEFnZTogP251bWJlcjtcbiAgLyogU2V0IHRoZSBudW1iZXIgb2YgcHJldmlvdXMgcGFzc3dvcmQgdGhhdCB3aWxsIG5vdCBiZSBhbGxvd2VkIHRvIGJlIHNldCBhcyBuZXcgcGFzc3dvcmQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYDBgLCBubyBwcmV2aW91cyBwYXNzd29yZHMgd2lsbCBiZSBjb25zaWRlcmVkLlxuICA8YnI+PGJyPlxuICBWYWxpZCB2YWx1ZXMgYXJlID49IGAwYCBhbmQgPD0gYDIwYC5cbiAgPGJyPlxuICBEZWZhdWx0IGlzIGAwYC5cbiAgKi9cbiAgbWF4UGFzc3dvcmRIaXN0b3J5OiA/bnVtYmVyO1xuICAvKiBTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBwYXNzd29yZCByZXNldCB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuXG4gIDxicj48YnI+XG4gIEZvciBleGFtcGxlLCB0byBleHBpcmUgdGhlIHRva2VuIGFmdGVyIDIgaG91cnMsIHNldCBhIHZhbHVlIG9mIDcyMDAgc2Vjb25kcyAoPSA2MCBzZWNvbmRzICogNjAgbWludXRlcyAqIDIgaG91cnMpLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGB1bmRlZmluZWRgLlxuICAqL1xuICByZXNldFRva2VuVmFsaWRpdHlEdXJhdGlvbjogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIHBhc3N3b3JkIHJlc2V0IHRva2VuIHNob3VsZCBiZSByZXVzZWQgaW4gY2FzZSBhbm90aGVyIHRva2VuIGlzIHJlcXVlc3RlZCBidXQgdGhlcmUgaXMgYSB0b2tlbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpLmUuIGhhcyBub3QgZXhwaXJlZC4gVGhpcyBhdm9pZHMgdGhlIG9mdGVuIG9ic2VydmVkIGlzc3VlIHRoYXQgYSB1c2VyIHJlcXVlc3RzIG11bHRpcGxlIGVtYWlscyBhbmQgZG9lcyBub3Qga25vdyB3aGljaCBsaW5rIGNvbnRhaW5zIGEgdmFsaWQgdG9rZW4gYmVjYXVzZSBlYWNoIG5ld2x5IGdlbmVyYXRlZCB0b2tlbiB3b3VsZCBpbnZhbGlkYXRlIHRoZSBwcmV2aW91cyB0b2tlbi5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcmVzZXRUb2tlblJldXNlSWZWYWxpZDogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgYSByZXF1ZXN0IHRvIHJlc2V0IHRoZSBwYXNzd29yZCBzaG91bGQgcmV0dXJuIGEgc3VjY2VzcyByZXNwb25zZSBldmVuIGlmIHRoZSBwcm92aWRlZCBlbWFpbCBhZGRyZXNzIGlzIGludmFsaWQsIG9yIGBmYWxzZWAgaWYgdGhlIHJlcXVlc3Qgc2hvdWxkIHJldHVybiBhbiBlcnJvciByZXNwb25zZSBpZiB0aGUgZW1haWwgYWRkcmVzcyBpcyBpbnZhbGlkLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgcmVzZXRQYXNzd29yZFN1Y2Nlc3NPbkludmFsaWRFbWFpbDogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVVwbG9hZE9wdGlvbnMge1xuICAvKiBTZXRzIHRoZSBhbGxvd2VkIGZpbGUgZXh0ZW5zaW9ucyBmb3IgdXBsb2FkaW5nIGZpbGVzLiBUaGUgZXh0ZW5zaW9uIGlzIGRlZmluZWQgYXMgYW4gYXJyYXkgb2YgZmlsZSBleHRlbnNpb25zLCBvciBhIHJlZ2V4IHBhdHRlcm4uPGJyPjxicj5JdCBpcyByZWNvbW1lbmRlZCB0byBvbmx5IGFsbG93IHRoZSBmaWxlIGV4dGVuc2lvbnMgdGhhdCB5b3VyIGFwcCBhY3R1YWxseSBuZWVkcywgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBibG9ja2luZyBkYW5nZXJvdXMgZXh0ZW5zaW9ucy4gVGhpcyBhbGxvd2xpc3QgYXBwcm9hY2ggaXMgbW9yZSBzZWN1cmUgYmVjYXVzZSBuZXcgZGFuZ2Vyb3VzIGZpbGUgZXh0ZW5zaW9ucyBtYXkgZW1lcmdlIHRoYXQgYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoZSBkZWZhdWx0IGJsb2NrbGlzdC48YnI+PGJyPlRoZSBkZWZhdWx0IGJsb2NrcyB0aGUgbW9zdCBjb21tb24gZmlsZSBleHRlbnNpb25zIHRoYXQgYXJlIGtub3duIHRvIGJlIHJlbmRlcmVkIGFzIGFjdGl2ZSBjb250ZW50IGJ5IHdlYiBicm93c2Vycywgc3VjaCBhcyBIVE1MLCBTVkcsIGFuZCBYTUwgZmlsZXMsIHdoaWNoIG1heSBiZSB1c2VkIGJ5IGFuIGF0dGFja2VyIHRvIGNvbXByb21pc2UgdGhlIHNlc3Npb24gdG9rZW4gb2YgYW5vdGhlciB1c2VyIHZpYSBhY2Nlc3NpbmcgdGhlIGJyb3dzZXIncyBsb2NhbCBzdG9yYWdlLiBUaGUgYmxvY2tlZCBleHRlbnNpb25zIGFyZTogYGh0bWxgLCBgaHRtYCwgYHNodG1sYCwgYHhodG1sYCwgYHhodG1sK3htbGAsIGB4aHRgLCBgc3ZnYCwgYHN2Z3pgLCBgc3ZnK3htbGAsIGB4bWxgLCBgeHNsYCwgYHhzbHRgLCBgeHNsdCt4bWxgLCBgeHNkYCwgYHJuZ2AsIGByZGZgLCBgcmRmK3htbGAsIGBvd2xgLCBgbWF0aG1sYCwgYG1hdGhtbCt4bWxgLjxicj48YnI+RGVmYXVsdHMgdG8gYFtcIl4oPyEoW3hYc1NdP1toSF1bdFRdW21NXVtsTF0/KFxcXFwrW3hYXVttTV1bbExdKT98W3hYXVtoSF1bdFRdfFtzU11bdlZdW2dHXShbelpdfFxcXFwrW3hYXVttTV1bbExdKT98W3hYXVttTV1bbExdfFt4WF1bc1NdW2xMXVt0VF0/KFxcXFwrW3hYXVttTV1bbExdKT98W3hYXVtzU11bZERdfFtyUl1bbk5dW2dHXXxbclJdW2REXVtmRl0oXFxcXCtbeFhdW21NXVtsTF0pP3xbb09dW3dXXVtsTF18W21NXVthQV1bdFRdW2hIXVttTV1bbExdKFxcXFwrW3hYXVttTV1bbExdKT8pJClcIl1gLlxuICA6REVGQVVMVDogW1wiXig/IShbeFhzU10/W2hIXVt0VF1bbU1dW2xMXT8oXFxcXCtbeFhdW21NXVtsTF0pP3xbeFhdW2hIXVt0VF18W3NTXVt2Vl1bZ0ddKFt6Wl18XFxcXCtbeFhdW21NXVtsTF0pP3xbeFhdW21NXVtsTF18W3hYXVtzU11bbExdW3RUXT8oXFxcXCtbeFhdW21NXVtsTF0pP3xbeFhdW3NTXVtkRF18W3JSXVtuTl1bZ0ddfFtyUl1bZERdW2ZGXShcXFxcK1t4WF1bbU1dW2xMXSk/fFtvT11bd1ddW2xMXXxbbU1dW2FBXVt0VF1baEhdW21NXVtsTF0oXFxcXCtbeFhdW21NXVtsTF0pPykkKVwiXSAqL1xuICBmaWxlRXh0ZW5zaW9uczogPyhzdHJpbmdbXSk7XG4gIC8qICBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhbm9ueW1vdXMgdXNlcnMuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVGb3JBbm9ueW1vdXNVc2VyOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYXV0aGVudGljYXRlZCB1c2Vycy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXI6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhbnlvbmUsIHJlZ2FyZGxlc3Mgb2YgdXNlciBhdXRoZW50aWNhdGlvbi5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUZvclB1YmxpYzogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIGFsbG93ZWQgaG9zdG5hbWVzIGZvciBmaWxlIFVSTHMgcmVmZXJlbmNlZCBpbiBQYXJzZSBvYmplY3RzLiBXaGVuIGEgRmlsZSBvYmplY3QgaW5jbHVkZXMgYSBVUkwsIGl0cyBob3N0bmFtZSBtdXN0IG1hdGNoIG9uZSBvZiB0aGVzZSBlbnRyaWVzIHRvIGJlIGFjY2VwdGVkLiBTdXBwb3J0cyBleGFjdCBob3N0bmFtZXMgKGUuZy4sIGAnY2RuLmV4YW1wbGUuY29tJ2ApIGFuZCB3aWxkY2FyZCBzdWJkb21haW5zIChlLmcuLCBgJyouZXhhbXBsZS5jb20nYCkuIFVzZSBgWycqJ11gIHRvIGFsbG93IGFueSBkb21haW4uIFVzZSBgW11gIHRvIGJsb2NrIGFsbCBmaWxlIFVSTHMgKG9ubHkgbmFtZS1iYXNlZCBmaWxlcyBhbGxvd2VkKS48YnI+PGJyPklmIHRoaXMgb3B0aW9uIGlzIG5vdCBzZXQsIGl0IGRlZmF1bHRzIHRvIHRoZSBob3N0bmFtZXMgb2YgYHB1YmxpY1NlcnZlclVSTGAgYW5kIGBzZXJ2ZXJVUkxgLCBzbyBmaWxlcyBob3N0ZWQgYnkgUGFyc2UgU2VydmVyIGFyZSBhbGxvd2VkIHdpdGhvdXQgb3BlbmluZyBhcmJpdHJhcnkgZG9tYWlucy4gKi9cbiAgYWxsb3dlZEZpbGVVcmxEb21haW5zOiA/KHN0cmluZ1tdKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlRG93bmxvYWRPcHRpb25zIHtcbiAgLyogSXMgdHJ1ZSBpZiBmaWxlIGRvd25sb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhbm9ueW1vdXMgdXNlcnMuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuYWJsZUZvckFub255bW91c1VzZXI6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgZG93bmxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlcnMuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBmaWxlIGRvd25sb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhbnlvbmUsIHJlZ2FyZGxlc3Mgb2YgdXNlciBhdXRoZW50aWNhdGlvbi5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgZW5hYmxlRm9yUHVibGljOiA/Ym9vbGVhbjtcbn1cblxuLyogVGhlIGF2YWlsYWJsZSBsb2cgbGV2ZWxzIGZvciBQYXJzZSBTZXJ2ZXIgbG9nZ2luZy4gVmFsaWQgdmFsdWVzIGFyZTo8YnI+LSBgJ2Vycm9yJ2AgLSBFcnJvciBsZXZlbCAoaGlnaGVzdCBwcmlvcml0eSk8YnI+LSBgJ3dhcm4nYCAtIFdhcm5pbmcgbGV2ZWw8YnI+LSBgJ2luZm8nYCAtIEluZm8gbGV2ZWwgKGRlZmF1bHQpPGJyPi0gYCd2ZXJib3NlJ2AgLSBWZXJib3NlIGxldmVsPGJyPi0gYCdkZWJ1ZydgIC0gRGVidWcgbGV2ZWw8YnI+LSBgJ3NpbGx5J2AgLSBTaWxseSBsZXZlbCAobG93ZXN0IHByaW9yaXR5KSAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dMZXZlbCB7XG4gIC8qIEVycm9yIGxldmVsIC0gaGlnaGVzdCBwcmlvcml0eSAqL1xuICBlcnJvcjogJ2Vycm9yJztcbiAgLyogV2FybmluZyBsZXZlbCAqL1xuICB3YXJuOiAnd2Fybic7XG4gIC8qIEluZm8gbGV2ZWwgLSBkZWZhdWx0ICovXG4gIGluZm86ICdpbmZvJztcbiAgLyogVmVyYm9zZSBsZXZlbCAqL1xuICB2ZXJib3NlOiAndmVyYm9zZSc7XG4gIC8qIERlYnVnIGxldmVsICovXG4gIGRlYnVnOiAnZGVidWcnO1xuICAvKiBTaWxseSBsZXZlbCAtIGxvd2VzdCBwcmlvcml0eSAqL1xuICBzaWxseTogJ3NpbGx5Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dDbGllbnRFdmVudCB7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBldmVudCBuYW1lIHRvIGxpc3RlbiBmb3IuIFNlZSB0aGUgW01vbmdvREIgZHJpdmVyIGV2ZW50cyBkb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5tb25nb2RiLmNvbS9kb2NzL2RyaXZlcnMvbm9kZS9jdXJyZW50L2Z1bmRhbWVudGFscy9tb25pdG9yaW5nLykgZm9yIGF2YWlsYWJsZSBldmVudHMuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyogT3B0aW9uYWwgYXJyYXkgb2YgZG90LW5vdGF0aW9uIHBhdGhzIHRvIGV4dHJhY3Qgc3BlY2lmaWMgZGF0YSBmcm9tIHRoZSBldmVudCBvYmplY3QuIElmIG5vdCBwcm92aWRlZCBvciBlbXB0eSwgdGhlIGVudGlyZSBldmVudCBvYmplY3Qgd2lsbCBiZSBsb2dnZWQuICovXG4gIGtleXM6ID8oc3RyaW5nW10pO1xuICAvKiBUaGUgbG9nIGxldmVsIHRvIHVzZSBmb3IgdGhpcyBldmVudC4gU2VlIFtMb2dMZXZlbF0oTG9nTGV2ZWwuaHRtbCkgZm9yIGF2YWlsYWJsZSB2YWx1ZXMuIERlZmF1bHRzIHRvIGAnaW5mbydgLlxuICA6REVGQVVMVDogaW5mbyAqL1xuICBsb2dMZXZlbDogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZU9wdGlvbnMge1xuICAvKiBFbmFibGVzIGRhdGFiYXNlIHJlYWwtdGltZSBob29rcyB0byB1cGRhdGUgc2luZ2xlIHNjaGVtYSBjYWNoZS4gU2V0IHRvIGB0cnVlYCBpZiB1c2luZyBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXJzIGluc3RhbmNlcyBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgZGF0YWJhc2UuIEZhaWxpbmcgdG8gZG8gc28gd2lsbCBjYXVzZSBhIHNjaGVtYSBjaGFuZ2UgdG8gbm90IHByb3BhZ2F0ZSB0byBhbGwgaW5zdGFuY2VzIGFuZCByZS1zeW5jaW5nIHdpbGwgb25seSBoYXBwZW4gd2hlbiB0aGUgaW5zdGFuY2VzIHJlc3RhcnQuIFRvIHVzZSB0aGlzIGZlYXR1cmUgd2l0aCBNb25nb0RCLCBhIHJlcGxpY2Egc2V0IGNsdXN0ZXIgd2l0aCBbY2hhbmdlIHN0cmVhbV0oaHR0cHM6Ly9kb2NzLm1vbmdvZGIuY29tL21hbnVhbC9jaGFuZ2VTdHJlYW1zLyNhdmFpbGFiaWxpdHkpIHN1cHBvcnQgaXMgcmVxdWlyZWQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVTY2hlbWFIb29rczogP2Jvb2xlYW47XG4gIC8qIFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSBzY2hlbWEgY2FjaGUgZXhwaXJlcyBhbmQgd2lsbCBiZSByZWZldGNoZWQgZnJvbSB0aGUgZGF0YWJhc2UuIFVzZSB0aGlzIG9wdGlvbiBpZiB1c2luZyBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXJzIGluc3RhbmNlcyBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgZGF0YWJhc2UuIEEgbG93IGR1cmF0aW9uIHdpbGwgY2F1c2UgdGhlIHNjaGVtYSBjYWNoZSB0byBiZSB1cGRhdGVkIHRvbyBvZnRlbiwgY2F1c2luZyB1bm5lY2Vzc2FyeSBkYXRhYmFzZSByZWFkcy4gQSBoaWdoIGR1cmF0aW9uIHdpbGwgY2F1c2UgdGhlIHNjaGVtYSB0byBiZSB1cGRhdGVkIHRvbyByYXJlbHksIGluY3JlYXNpbmcgdGhlIHRpbWUgcmVxdWlyZWQgdW50aWwgc2NoZW1hIGNoYW5nZXMgcHJvcGFnYXRlIHRvIGFsbCBzZXJ2ZXIgaW5zdGFuY2VzLiBUaGlzIGZlYXR1cmUgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgb3IgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgb3B0aW9uIGBlbmFibGVTY2hlbWFIb29rc2AuIERlZmF1bHQgaXMgaW5maW5pdGUgd2hpY2ggbWVhbnMgdGhlIHNjaGVtYSBjYWNoZSBuZXZlciBleHBpcmVzLiAqL1xuICBzY2hlbWFDYWNoZVR0bDogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzZXQgd2hldGhlciB0byByZXRyeSBmYWlsZWQgd3JpdGVzLiAqL1xuICByZXRyeVdyaXRlczogP2Jvb2xlYW47XG4gIC8qIFRoZSBudW1iZXIgb2YgZG9jdW1lbnRzIHBlciBiYXRjaCBmb3IgTW9uZ29EQiBjdXJzb3IgYGdldE1vcmVgIG9wZXJhdGlvbnMuIEEgbG93ZXIgdmFsdWUgcmVkdWNlcyBtZW1vcnkgdXNhZ2UgcGVyIGJhdGNoOyBhIGhpZ2hlciB2YWx1ZSByZWR1Y2VzIHRoZSBudW1iZXIgb2YgbmV0d29yayByb3VuZC10cmlwcy5cbiAgOkRFRkFVTFQ6IDEwMDAgKi9cbiAgYmF0Y2hTaXplOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCBhIGN1bXVsYXRpdmUgdGltZSBsaW1pdCBpbiBtaWxsaXNlY29uZHMgZm9yIHByb2Nlc3Npbmcgb3BlcmF0aW9ucyBvbiBhIGN1cnNvci4gKi9cbiAgbWF4VGltZU1TOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNldCB0aGUgbWF4aW11bSByZXBsaWNhdGlvbiBsYWcgZm9yIHJlYWRzIGZyb20gc2Vjb25kYXJ5IG5vZGVzLiovXG4gIG1heFN0YWxlbmVzc1NlY29uZHM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IHRoZSBtaW5pbXVtIG51bWJlciBvZiBvcGVuZWQsIGNhY2hlZCwgcmVhZHktdG8tdXNlIGRhdGFiYXNlIGNvbm5lY3Rpb25zIG1haW50YWluZWQgYnkgdGhlIGRyaXZlci4gKi9cbiAgbWluUG9vbFNpemU6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVuZWQsIGNhY2hlZCwgcmVhZHktdG8tdXNlIGRhdGFiYXNlIGNvbm5lY3Rpb25zIG1haW50YWluZWQgYnkgdGhlIGRyaXZlci4gKi9cbiAgbWF4UG9vbFNpemU6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZvciBhIHNlcnZlciB0byBiZSBjb25zaWRlcmVkIHN1aXRhYmxlIGZvciBzZWxlY3Rpb24uICovXG4gIHNlcnZlclNlbGVjdGlvblRpbWVvdXRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhbW91bnQgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCBhIGNvbm5lY3Rpb24gY2FuIHJlbWFpbiBpZGxlIGluIHRoZSBjb25uZWN0aW9uIHBvb2wgYmVmb3JlIGJlaW5nIHJlbW92ZWQgYW5kIGNsb3NlZC4gKi9cbiAgbWF4SWRsZVRpbWVNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBmcmVxdWVuY3kgaW4gbWlsbGlzZWNvbmRzIGF0IHdoaWNoIHRoZSBkcml2ZXIgY2hlY2tzIHRoZSBzdGF0ZSBvZiB0aGUgTW9uZ29EQiBkZXBsb3ltZW50LiAqL1xuICBoZWFydGJlYXRGcmVxdWVuY3lNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBhbW91bnQgb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0byB3YWl0IHRvIGVzdGFibGlzaCBhIHNpbmdsZSBUQ1Agc29ja2V0IGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBiZWZvcmUgcmFpc2luZyBhbiBlcnJvci4gU3BlY2lmeWluZyAwIGRpc2FibGVzIHRoZSBjb25uZWN0aW9uIHRpbWVvdXQuICovXG4gIGNvbm5lY3RUaW1lb3V0TVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgYW1vdW50IG9mIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgc3BlbnQgYXR0ZW1wdGluZyB0byBzZW5kIG9yIHJlY2VpdmUgb24gYSBzb2NrZXQgYmVmb3JlIHRpbWluZyBvdXQuIFNwZWNpZnlpbmcgMCBtZWFucyBubyB0aW1lb3V0LiAqL1xuICBzb2NrZXRUaW1lb3V0TVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc2V0IHdoZXRoZXIgdGhlIHNvY2tldCBhdHRlbXB0cyB0byBjb25uZWN0IHRvIElQdjYgYW5kIElQdjQgYWRkcmVzc2VzIHVudGlsIGEgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4gSWYgYXZhaWxhYmxlLCB0aGUgZHJpdmVyIHdpbGwgc2VsZWN0IHRoZSBmaXJzdCBJUHY2IGFkZHJlc3MuICovXG4gIGF1dG9TZWxlY3RGYW1pbHk6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciBhIGNvbm5lY3Rpb24gYXR0ZW1wdCB0byBmaW5pc2ggYmVmb3JlIHRyeWluZyB0aGUgbmV4dCBhZGRyZXNzIHdoZW4gdXNpbmcgdGhlIGF1dG9TZWxlY3RGYW1pbHkgb3B0aW9uLiBJZiBzZXQgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhbiAxMCwgdGhlIHZhbHVlIDEwIGlzIHVzZWQgaW5zdGVhZC4gKi9cbiAgYXV0b1NlbGVjdEZhbWlseUF0dGVtcHRUaW1lb3V0OiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRoYXQgbWF5IGJlIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGVzdGFibGlzaGVkIGNvbmN1cnJlbnRseSBieSB0aGUgY29ubmVjdGlvbiBwb29sLiAqL1xuICBtYXhDb25uZWN0aW5nOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCBhIHRocmVhZCBjYW4gd2FpdCBmb3IgYSBjb25uZWN0aW9uIHRvIGJlY29tZSBhdmFpbGFibGUuICovXG4gIHdhaXRRdWV1ZVRpbWVvdXRNUzogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSByZXBsaWNhIHNldCwgaWYgdGhlIG1vbmdvZCBpcyBhIG1lbWJlciBvZiBhIHJlcGxpY2Egc2V0LiAqL1xuICByZXBsaWNhU2V0OiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGZvcmNlIGEgU2luZ2xlIHRvcG9sb2d5IHR5cGUgd2l0aCBhIGNvbm5lY3Rpb24gc3RyaW5nIGNvbnRhaW5pbmcgb25lIGhvc3QuICovXG4gIGRpcmVjdENvbm5lY3Rpb246ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGluc3RydWN0IHRoZSBkcml2ZXIgaXQgaXMgY29ubmVjdGluZyB0byBhIGxvYWQgYmFsYW5jZXIgZnJvbnRpbmcgYSBtb25nb3MgbGlrZSBzZXJ2aWNlLiAqL1xuICBsb2FkQmFsYW5jZWQ6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHNpemUgKGluIG1pbGxpc2Vjb25kcykgb2YgdGhlIGxhdGVuY3kgd2luZG93IGZvciBzZWxlY3RpbmcgYW1vbmcgbXVsdGlwbGUgc3VpdGFibGUgTW9uZ29EQiBpbnN0YW5jZXMuICovXG4gIGxvY2FsVGhyZXNob2xkTVM6ID9udW1iZXI7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbWF4aW11bSBudW1iZXIgb2YgaG9zdHMgdG8gY29ubmVjdCB0byB3aGVuIHVzaW5nIGFuIHNydiBjb25uZWN0aW9uIHN0cmluZywgYSBzZXR0aW5nIG9mIDAgbWVhbnMgdW5saW1pdGVkIGhvc3RzLiAqL1xuICBzcnZNYXhIb3N0czogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBtb2RpZnkgdGhlIHNydiBVUkkgc2VydmljZSBuYW1lLiAqL1xuICBzcnZTZXJ2aWNlTmFtZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBlbmFibGUgb3IgZGlzYWJsZSBUTFMvU1NMIGZvciB0aGUgY29ubmVjdGlvbi4gKi9cbiAgdGxzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBlbmFibGUgb3IgZGlzYWJsZSBUTFMvU1NMIGZvciB0aGUgY29ubmVjdGlvbiAoZXF1aXZhbGVudCB0byB0bHMgb3B0aW9uKS4gKi9cbiAgc3NsOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiBhIGxvY2FsIC5wZW0gZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBjbGllbnQncyBUTFMvU1NMIGNlcnRpZmljYXRlIGFuZCBrZXkuICovXG4gIHRsc0NlcnRpZmljYXRlS2V5RmlsZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBwYXNzd29yZCB0byBkZWNyeXB0IHRoZSB0bHNDZXJ0aWZpY2F0ZUtleUZpbGUuICovXG4gIHRsc0NlcnRpZmljYXRlS2V5RmlsZVBhc3N3b3JkOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIGEgbG9jYWwgLnBlbSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHJvb3QgY2VydGlmaWNhdGUgY2hhaW4gZnJvbSB0aGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5LiAqL1xuICB0bHNDQUZpbGU6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gYnlwYXNzIHZhbGlkYXRpb24gb2YgdGhlIGNlcnRpZmljYXRlcyBwcmVzZW50ZWQgYnkgdGhlIG1vbmdvZC9tb25nb3MgaW5zdGFuY2UuICovXG4gIHRsc0FsbG93SW52YWxpZENlcnRpZmljYXRlczogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gZGlzYWJsZSBob3N0bmFtZSB2YWxpZGF0aW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZSBwcmVzZW50ZWQgYnkgdGhlIG1vbmdvZC9tb25nb3MgaW5zdGFuY2UuICovXG4gIHRsc0FsbG93SW52YWxpZEhvc3RuYW1lczogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gZGlzYWJsZSB2YXJpb3VzIGNlcnRpZmljYXRlIHZhbGlkYXRpb25zLiAqL1xuICB0bHNJbnNlY3VyZTogP2Jvb2xlYW47XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSBhbiBhcnJheSBvciBjb21tYS1kZWxpbWl0ZWQgc3RyaW5nIG9mIGNvbXByZXNzb3JzIHRvIGVuYWJsZSBuZXR3b3JrIGNvbXByZXNzaW9uIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhpcyBjbGllbnQgYW5kIGEgbW9uZ29kL21vbmdvcyBpbnN0YW5jZS4gKi9cbiAgY29tcHJlc3NvcnM6ID8oc3RyaW5nW10gfCBzdHJpbmcpO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGNvbXByZXNzaW9uIGxldmVsIGlmIHVzaW5nIHpsaWIgZm9yIG5ldHdvcmsgY29tcHJlc3Npb24gKDAtOSkuICovXG4gIHpsaWJDb21wcmVzc2lvbkxldmVsOiA/bnVtYmVyO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHJlYWQgcHJlZmVyZW5jZXMgZm9yIHRoaXMgY29ubmVjdGlvbi4gKi9cbiAgcmVhZFByZWZlcmVuY2U6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgdGFncyBkb2N1bWVudCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbG9uLXNlcGFyYXRlZCBrZXktdmFsdWUgcGFpcnMuICovXG4gIHJlYWRQcmVmZXJlbmNlVGFnczogPyhhbnlbXSk7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbGV2ZWwgb2YgaXNvbGF0aW9uLiAqL1xuICByZWFkQ29uY2VybkxldmVsOiA/c3RyaW5nO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIGRhdGFiYXNlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyJ3MgY3JlZGVudGlhbHMuICovXG4gIGF1dGhTb3VyY2U6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSB0aGUgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtIHRoYXQgTW9uZ29EQiB3aWxsIHVzZSB0byBhdXRoZW50aWNhdGUgdGhlIGNvbm5lY3Rpb24uICovXG4gIGF1dGhNZWNoYW5pc206ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gc3BlY2lmeSBwcm9wZXJ0aWVzIGZvciB0aGUgc3BlY2lmaWVkIGF1dGhNZWNoYW5pc20gYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb2xvbi1zZXBhcmF0ZWQga2V5LXZhbHVlIHBhaXJzLiAqL1xuICBhdXRoTWVjaGFuaXNtUHJvcGVydGllczogP2FueTtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGNyZWF0ZWQgdGhpcyBNb25nb0NsaWVudCBpbnN0YW5jZS4gKi9cbiAgYXBwTmFtZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBlbmFibGUgcmV0cnlhYmxlIHJlYWRzLiAqL1xuICByZXRyeVJlYWRzOiA/Ym9vbGVhbjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBmb3JjZSBzZXJ2ZXIgdG8gYXNzaWduIF9pZCB2YWx1ZXMgaW5zdGVhZCBvZiBkcml2ZXIuICovXG4gIGZvcmNlU2VydmVyT2JqZWN0SWQ6ID9ib29sZWFuO1xuICAvKiBUaGUgTW9uZ29EQiBkcml2ZXIgb3B0aW9uIHRvIGluc3RydWN0IHRoZSBkcml2ZXIgbW9uaXRvcnMgdG8gdXNlIGEgc3BlY2lmaWMgbW9uaXRvcmluZyBtb2RlLiAqL1xuICBzZXJ2ZXJNb25pdG9yaW5nTW9kZTogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBjb25maWd1cmUgYSBTb2NrczUgcHJveHkgaG9zdCB1c2VkIGZvciBjcmVhdGluZyBUQ1AgY29ubmVjdGlvbnMuICovXG4gIHByb3h5SG9zdDogP3N0cmluZztcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBjb25maWd1cmUgYSBTb2NrczUgcHJveHkgcG9ydCB1c2VkIGZvciBjcmVhdGluZyBUQ1AgY29ubmVjdGlvbnMuICovXG4gIHByb3h5UG9ydDogP251bWJlcjtcbiAgLyogVGhlIE1vbmdvREIgZHJpdmVyIG9wdGlvbiB0byBjb25maWd1cmUgYSBTb2NrczUgcHJveHkgdXNlcm5hbWUgd2hlbiB0aGUgcHJveHkgcmVxdWlyZXMgdXNlcm5hbWUvcGFzc3dvcmQgYXV0aGVudGljYXRpb24uICovXG4gIHByb3h5VXNlcm5hbWU6ID9zdHJpbmc7XG4gIC8qIFRoZSBNb25nb0RCIGRyaXZlciBvcHRpb24gdG8gY29uZmlndXJlIGEgU29ja3M1IHByb3h5IHBhc3N3b3JkIHdoZW4gdGhlIHByb3h5IHJlcXVpcmVzIHVzZXJuYW1lL3Bhc3N3b3JkIGF1dGhlbnRpY2F0aW9uLiAqL1xuICBwcm94eVBhc3N3b3JkOiA/c3RyaW5nO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGluZGV4ZXMgb24gdGhlIGVtYWlsIGZpZWxkIG9mIHRoZSBfVXNlciBjb2xsZWN0aW9uIG9uIHNlcnZlciBzdGFydC4gU2V0IHRvIGBmYWxzZWAgdG8gc2tpcCBpbmRleCBjcmVhdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuPGJyPjxicj7imqDvuI8gV2hlbiBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIGBmYWxzZWAgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSBpbmRleCwga2VlcCBpbiBtaW5kIHRoYXQgdGhlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5kZXggbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlIHRvIGJlIG9wdGltaXplZCBmb3IgdGhlIGludGVybmFsIHVzYWdlIGJ5IFBhcnNlIFNlcnZlci5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgY3JlYXRlSW5kZXhVc2VyRW1haWw6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgY2FzZS1pbnNlbnNpdGl2ZSBpbmRleCBvbiB0aGUgZW1haWwgZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJFbWFpbENhc2VJbnNlbnNpdGl2ZTogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYW4gaW5kZXggb24gdGhlIF9lbWFpbF92ZXJpZnlfdG9rZW4gZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJFbWFpbFZlcmlmeVRva2VuOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhbiBpbmRleCBvbiB0aGUgX3BlcmlzaGFibGVfdG9rZW4gZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJQYXNzd29yZFJlc2V0VG9rZW46ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGluZGV4ZXMgb24gdGhlIHVzZXJuYW1lIGZpZWxkIG9mIHRoZSBfVXNlciBjb2xsZWN0aW9uIG9uIHNlcnZlciBzdGFydC4gU2V0IHRvIGBmYWxzZWAgdG8gc2tpcCBpbmRleCBjcmVhdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuPGJyPjxicj7imqDvuI8gV2hlbiBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIGBmYWxzZWAgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSBpbmRleCwga2VlcCBpbiBtaW5kIHRoYXQgdGhlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5kZXggbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlIHRvIGJlIG9wdGltaXplZCBmb3IgdGhlIGludGVybmFsIHVzYWdlIGJ5IFBhcnNlIFNlcnZlci5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgY3JlYXRlSW5kZXhVc2VyVXNlcm5hbWU6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgY2FzZS1pbnNlbnNpdGl2ZSBpbmRleCBvbiB0aGUgdXNlcm5hbWUgZmllbGQgb2YgdGhlIF9Vc2VyIGNvbGxlY3Rpb24gb24gc2VydmVyIHN0YXJ0LiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4LCBrZWVwIGluIG1pbmQgdGhhdCB0aGUgb3RoZXJ3aXNlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbmRleCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gYmUgb3B0aW1pemVkIGZvciB0aGUgaW50ZXJuYWwgdXNhZ2UgYnkgUGFyc2UgU2VydmVyLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBjcmVhdGVJbmRleFVzZXJVc2VybmFtZUNhc2VJbnNlbnNpdGl2ZTogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgdW5pcXVlIGluZGV4ZXMgb24gdGhlIGF1dGhEYXRhIGZpZWxkcyBvZiB0aGUgX1VzZXIgY29sbGVjdGlvbiBmb3IgZWFjaCBjb25maWd1cmVkIGF1dGggcHJvdmlkZXIgb24gc2VydmVyIHN0YXJ0LCBpbmNsdWRpbmcgYGFub255bW91c2Agd2hlbiBhbm9ueW1vdXMgdXNlcnMgYXJlIGVuYWJsZWQuIFRoZXNlIGluZGV4ZXMgcHJldmVudCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGNvbmN1cnJlbnQgc2lnbnVwcyB3aXRoIHRoZSBzYW1lIGF1dGhEYXRhLiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGluZGV4IGNyZWF0aW9uLiBEZWZhdWx0IGlzIGB0cnVlYC48YnI+PGJyPuKaoO+4jyBXaGVuIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gYGZhbHNlYCB0byBtYW51YWxseSBjcmVhdGUgdGhlIGluZGV4ZXMsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBjcmVhdGVkIGluZGV4ZXMgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlIHRvIGJlIG9wdGltaXplZCBmb3IgdGhlIGludGVybmFsIHVzYWdlIGJ5IFBhcnNlIFNlcnZlci5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgY3JlYXRlSW5kZXhBdXRoRGF0YVVuaXF1ZW5lc3M6ID9ib29sZWFuO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgdW5pcXVlIGluZGV4IG9uIHRoZSBuYW1lIGZpZWxkIG9mIHRoZSBfUm9sZSBjb2xsZWN0aW9uIG9uIHNlcnZlciBzdGFydC4gU2V0IHRvIGBmYWxzZWAgdG8gc2tpcCBpbmRleCBjcmVhdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuPGJyPjxicj7imqDvuI8gV2hlbiBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIGBmYWxzZWAgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSBpbmRleCwga2VlcCBpbiBtaW5kIHRoYXQgdGhlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5kZXggbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlIHRvIGJlIG9wdGltaXplZCBmb3IgdGhlIGludGVybmFsIHVzYWdlIGJ5IFBhcnNlIFNlcnZlci5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgY3JlYXRlSW5kZXhSb2xlTmFtZTogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWJsZSB2YWxpZGF0aW9uIG9mIGluZGV4IGZpZWxkcy4gV2hlbiBkaXNhYmxlZCwgaW5kZXhlcyBjYW4gYmUgY3JlYXRlZCBldmVuIGlmIHRoZSBmaWVsZHMgZG8gbm90IGV4aXN0IGluIHRoZSBzY2hlbWEuIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIGNyZWF0aW5nIGluZGV4ZXMgb24gZmllbGRzIHRoYXQgd2lsbCBiZSBhZGRlZCBsYXRlci4gKi9cbiAgZGlzYWJsZUluZGV4RmllbGRWYWxpZGF0aW9uOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBhbGxvdyBgUGFyc2UuUXVlcnkuZXhwbGFpbmAgd2l0aG91dCBtYXN0ZXIga2V5Ljxicj48YnI+4pqg77iPIEVuYWJsaW5nIHRoaXMgb3B0aW9uIG1heSBleHBvc2Ugc2Vuc2l0aXZlIHF1ZXJ5IHBlcmZvcm1hbmNlIGRhdGEgdG8gdW5hdXRob3JpemVkIHVzZXJzIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBiZSBleHBsb2l0ZWQgZm9yIG1hbGljaW91cyBwdXJwb3Nlcy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFsbG93UHVibGljRXhwbGFpbjogP2Jvb2xlYW47XG4gIC8qIEFuIGFycmF5IG9mIE1vbmdvREIgY2xpZW50IGV2ZW50IGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZSBsb2dnaW5nIG9mIHNwZWNpZmljIGV2ZW50cy4gKi9cbiAgbG9nQ2xpZW50RXZlbnRzOiA/KExvZ0NsaWVudEV2ZW50W10pO1xuICAvKiBDdXN0b20gbWV0YWRhdGEgdG8gYXBwZW5kIHRvIGRhdGFiYXNlIGNsaWVudCBjb25uZWN0aW9ucyBmb3IgaWRlbnRpZnlpbmcgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBpbiBkYXRhYmFzZSBsb2dzLiBJZiBzZXQsIHRoaXMgbWV0YWRhdGEgd2lsbCBiZSB2aXNpYmxlIGluIGRhdGFiYXNlIGxvZ3MgZHVyaW5nIGNvbm5lY3Rpb24gaGFuZHNoYWtlcy4gVGhpcyBjYW4gaGVscCB3aXRoIGRlYnVnZ2luZyBhbmQgbW9uaXRvcmluZyBpbiBkZXBsb3ltZW50cyB3aXRoIG11bHRpcGxlIGRhdGFiYXNlIGNsaWVudHMuIFNldCBgbmFtZWAgdG8gaWRlbnRpZnkgeW91ciBhcHBsaWNhdGlvbiAoZS5nLiwgJ015QXBwJykgYW5kIGB2ZXJzaW9uYCB0byB5b3VyIGFwcGxpY2F0aW9uJ3MgdmVyc2lvbi4gTGVhdmUgdW5kZWZpbmVkIChkZWZhdWx0KSB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZSBhbmQgYXZvaWQgdGhlIGFkZGl0aW9uYWwgZGF0YSB0cmFuc2ZlciBvdmVyaGVhZC4gKi9cbiAgY2xpZW50TWV0YWRhdGE6ID9EYXRhYmFzZU9wdGlvbnNDbGllbnRNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZU9wdGlvbnNDbGllbnRNZXRhZGF0YSB7XG4gIC8qIFRoZSBuYW1lIHRvIGlkZW50aWZ5IHlvdXIgYXBwbGljYXRpb24gaW4gZGF0YWJhc2UgbG9ncyAoZS5nLiwgJ015QXBwJykuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyogVGhlIHZlcnNpb24gb2YgeW91ciBhcHBsaWNhdGlvbiAoZS5nLiwgJzEuMC4wJykuICovXG4gIHZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoQWRhcHRlciB7XG4gIC8qIElzIGB0cnVlYCBpZiB0aGUgYXV0aCBhZGFwdGVyIGlzIGVuYWJsZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICA6REVGQVVMVDogZmFsc2VcbiAgOkVOVjpcbiAgKi9cbiAgZW5hYmxlZDogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nTGV2ZWxzIHtcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgVHJpZ2dlcnMgYGFmdGVyU2F2ZWAsIGBhZnRlckRlbGV0ZWAsIGBhZnRlckZpbmRgLCBgYWZ0ZXJMb2dvdXRgLiBEZWZhdWx0IGlzIGBpbmZvYC4gU2VlIFtMb2dMZXZlbF0oTG9nTGV2ZWwuaHRtbCkgZm9yIGF2YWlsYWJsZSB2YWx1ZXMuXG4gIDpERUZBVUxUOiBpbmZvXG4gICovXG4gIHRyaWdnZXJBZnRlcjogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgVHJpZ2dlcnMgYGJlZm9yZVNhdmVgLCBgYmVmb3JlRGVsZXRlYCwgYGJlZm9yZUZpbmRgLCBgYmVmb3JlTG9naW5gIG9uIHN1Y2Nlc3MuIERlZmF1bHQgaXMgYGluZm9gLiBTZWUgW0xvZ0xldmVsXShMb2dMZXZlbC5odG1sKSBmb3IgYXZhaWxhYmxlIHZhbHVlcy5cbiAgOkRFRkFVTFQ6IGluZm9cbiAgKi9cbiAgdHJpZ2dlckJlZm9yZVN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIFRyaWdnZXJzIGBiZWZvcmVTYXZlYCwgYGJlZm9yZURlbGV0ZWAsIGBiZWZvcmVGaW5kYCwgYGJlZm9yZUxvZ2luYCBvbiBlcnJvci4gRGVmYXVsdCBpcyBgZXJyb3JgLiBTZWUgW0xvZ0xldmVsXShMb2dMZXZlbC5odG1sKSBmb3IgYXZhaWxhYmxlIHZhbHVlcy5cbiAgOkRFRkFVTFQ6IGVycm9yXG4gICovXG4gIHRyaWdnZXJCZWZvcmVFcnJvcjogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgYnkgdGhlIENsb3VkIENvZGUgRnVuY3Rpb25zIG9uIHN1Y2Nlc3MuIERlZmF1bHQgaXMgYGluZm9gLiBTZWUgW0xvZ0xldmVsXShMb2dMZXZlbC5odG1sKSBmb3IgYXZhaWxhYmxlIHZhbHVlcy5cbiAgOkRFRkFVTFQ6IGluZm9cbiAgKi9cbiAgY2xvdWRGdW5jdGlvblN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIExvZyBsZXZlbCB1c2VkIGJ5IHRoZSBDbG91ZCBDb2RlIEZ1bmN0aW9ucyBvbiBlcnJvci4gRGVmYXVsdCBpcyBgZXJyb3JgLiBTZWUgW0xvZ0xldmVsXShMb2dMZXZlbC5odG1sKSBmb3IgYXZhaWxhYmxlIHZhbHVlcy5cbiAgOkRFRkFVTFQ6IGVycm9yXG4gICovXG4gIGNsb3VkRnVuY3Rpb25FcnJvcjogP3N0cmluZztcbiAgLyogTG9nIGxldmVsIHVzZWQgd2hlbiBhIHNpZ24tdXAgZmFpbHMgYmVjYXVzZSB0aGUgdXNlcm5hbWUgYWxyZWFkeSBleGlzdHMuIERlZmF1bHQgaXMgYGluZm9gLiBTZWUgW0xvZ0xldmVsXShMb2dMZXZlbC5odG1sKSBmb3IgYXZhaWxhYmxlIHZhbHVlcy5cbiAgOkRFRkFVTFQ6IGluZm9cbiAgKi9cbiAgc2lnbnVwVXNlcm5hbWVUYWtlbjogP3N0cmluZztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxpQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBUixPQUFBIiwiaWdub3JlTGlzdCI6W119