diff --git a/lightspeed-catalog-4.16/bundle-v1.0.9.yaml b/lightspeed-catalog-4.16/bundle-v1.0.9.yaml new file mode 100644 index 000000000..229fb74d2 --- /dev/null +++ b/lightspeed-catalog-4.16/bundle-v1.0.9.yaml @@ -0,0 +1,75 @@ +--- +image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 +name: lightspeed-operator.v1.0.9 +package: lightspeed-operator +properties: + - type: olm.gvk + value: + group: ols.openshift.io + kind: OLSConfig + version: v1alpha1 + - type: olm.package + value: + packageName: lightspeed-operator + version: 1.0.9 + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiY29udHJvbGxlci1nZW4ua3ViZWJ1aWxkZXIuaW8vdmVyc2lvbiI6InYwLjE2LjUifSwiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsIm5hbWUiOiJvbHNjb25maWdzLm9scy5vcGVuc2hpZnQuaW8ifSwic3BlYyI6eyJncm91cCI6Im9scy5vcGVuc2hpZnQuaW8iLCJuYW1lcyI6eyJraW5kIjoiT0xTQ29uZmlnIiwibGlzdEtpbmQiOiJPTFNDb25maWdMaXN0IiwicGx1cmFsIjoib2xzY29uZmlncyIsInNpbmd1bGFyIjoib2xzY29uZmlnIn0sInNjb3BlIjoiQ2x1c3RlciIsInZlcnNpb25zIjpbeyJuYW1lIjoidjFhbHBoYTEiLCJzY2hlbWEiOnsib3BlbkFQSVYzU2NoZW1hIjp7ImRlc2NyaXB0aW9uIjoiUmVkIEhhdCBPcGVuU2hpZnQgTGlnaHRzcGVlZCBpbnN0YW5jZS4gT0xTQ29uZmlnIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBvbHNjb25maWdzIEFQSSIsInByb3BlcnRpZXMiOnsiYXBpVmVyc2lvbiI6eyJkZXNjcmlwdGlvbiI6IkFQSVZlcnNpb24gZGVmaW5lcyB0aGUgdmVyc2lvbmVkIHNjaGVtYSBvZiB0aGlzIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC5cblNlcnZlcnMgc2hvdWxkIGNvbnZlcnQgcmVjb2duaXplZCBzY2hlbWFzIHRvIHRoZSBsYXRlc3QgaW50ZXJuYWwgdmFsdWUsIGFuZFxubWF5IHJlamVjdCB1bnJlY29nbml6ZWQgdmFsdWVzLlxuTW9yZSBpbmZvOiBodHRwczovL2dpdC5rOHMuaW8vY29tbXVuaXR5L2NvbnRyaWJ1dG9ycy9kZXZlbC9zaWctYXJjaGl0ZWN0dXJlL2FwaS1jb252ZW50aW9ucy5tZCNyZXNvdXJjZXMiLCJ0eXBlIjoic3RyaW5nIn0sImtpbmQiOnsiZGVzY3JpcHRpb24iOiJLaW5kIGlzIGEgc3RyaW5nIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgUkVTVCByZXNvdXJjZSB0aGlzIG9iamVjdCByZXByZXNlbnRzLlxuU2VydmVycyBtYXkgaW5mZXIgdGhpcyBmcm9tIHRoZSBlbmRwb2ludCB0aGUgY2xpZW50IHN1Ym1pdHMgcmVxdWVzdHMgdG8uXG5DYW5ub3QgYmUgdXBkYXRlZC5cbkluIENhbWVsQ2FzZS5cbk1vcmUgaW5mbzogaHR0cHM6Ly9naXQuazhzLmlvL2NvbW11bml0eS9jb250cmlidXRvcnMvZGV2ZWwvc2lnLWFyY2hpdGVjdHVyZS9hcGktY29udmVudGlvbnMubWQjdHlwZXMta2luZHMiLCJ0eXBlIjoic3RyaW5nIn0sIm1ldGFkYXRhIjp7InR5cGUiOiJvYmplY3QifSwic3BlYyI6eyJkZXNjcmlwdGlvbiI6Ik9MU0NvbmZpZ1NwZWMgZGVmaW5lcyB0aGUgZGVzaXJlZCBzdGF0ZSBvZiBPTFNDb25maWciLCJwcm9wZXJ0aWVzIjp7ImZlYXR1cmVHYXRlcyI6eyJkZXNjcmlwdGlvbiI6IkZlYXR1cmUgR2F0ZXMgaG9sZHMgbGlzdCBvZiBmZWF0dXJlcyB0byBiZSBlbmFibGVkIGV4cGxpY2l0bHksIG90aGVyd2lzZSB0aGV5IGFyZSBkaXNhYmxlZCBieSBkZWZhdWx0LlxucG9zc2libGUgdmFsdWVzOiBNQ1BTZXJ2ZXIiLCJpdGVtcyI6eyJlbnVtIjpbIk1DUFNlcnZlciJdLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSJ9LCJsbG0iOnsiZGVzY3JpcHRpb24iOiJMTE1TcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgdGhlIGxhcmdlIGxhbmd1YWdlIG1vZGVsIChMTE0pLiIsInByb3BlcnRpZXMiOnsicHJvdmlkZXJzIjp7Iml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiUHJvdmlkZXJTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgTExNIHByb3ZpZGVyLiIsInByb3BlcnRpZXMiOnsiYXBpVmVyc2lvbiI6eyJkZXNjcmlwdGlvbiI6IkFQSSBWZXJzaW9uIGZvciBBenVyZSBPcGVuQUkgcHJvdmlkZXIiLCJ0eXBlIjoic3RyaW5nIn0sImNyZWRlbnRpYWxzU2VjcmV0UmVmIjp7ImRlc2NyaXB0aW9uIjoiVGhlIG5hbWUgb2YgdGhlIHNlY3JldCBvYmplY3QgdGhhdCBzdG9yZXMgQVBJIHByb3ZpZGVyIGNyZWRlbnRpYWxzIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIHJlZmVyZW50LlxuVGhpcyBmaWVsZCBpcyBlZmZlY3RpdmVseSByZXF1aXJlZCwgYnV0IGR1ZSB0byBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBpc1xuYWxsb3dlZCB0byBiZSBlbXB0eS4gSW5zdGFuY2VzIG9mIHRoaXMgdHlwZSB3aXRoIGFuIGVtcHR5IHZhbHVlIGhlcmUgYXJlXG5hbG1vc3QgY2VydGFpbmx5IHdyb25nLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9vdmVydmlldy93b3JraW5nLXdpdGgtb2JqZWN0cy9uYW1lcy8jbmFtZXMiLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sImRlcGxveW1lbnROYW1lIjp7ImRlc2NyaXB0aW9uIjoiQXp1cmUgT3BlbkFJIGRlcGxveW1lbnQgbmFtZSIsInR5cGUiOiJzdHJpbmcifSwibW9kZWxzIjp7ImRlc2NyaXB0aW9uIjoiTGlzdCBvZiBtb2RlbHMgZnJvbSB0aGUgcHJvdmlkZXIiLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6Ik1vZGVsU3BlYyBkZWZpbmVzIHRoZSBMTE0gbW9kZWwgdG8gdXNlIGFuZCBpdHMgcGFyYW1ldGVycy4iLCJwcm9wZXJ0aWVzIjp7ImNvbnRleHRXaW5kb3dTaXplIjp7ImRlc2NyaXB0aW9uIjoiRGVmaW5lcyB0aGUgbW9kZWwncyBjb250ZXh0IHdpbmRvdyBzaXplLCBpbiB0b2tlbnMuIFRoZSBkZWZhdWx0IGlzIDEyOGsgdG9rZW5zLiIsIm1pbmltdW0iOjEwMjQsInR5cGUiOiJpbnRlZ2VyIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJNb2RlbCBuYW1lIiwidHlwZSI6InN0cmluZyJ9LCJwYXJhbWV0ZXJzIjp7ImRlc2NyaXB0aW9uIjoiTW9kZWwgQVBJIHBhcmFtZXRlcnMiLCJwcm9wZXJ0aWVzIjp7Im1heFRva2Vuc0ZvclJlc3BvbnNlIjp7ImRlc2NyaXB0aW9uIjoiTWF4IHRva2VucyBmb3IgcmVzcG9uc2UuIFRoZSBkZWZhdWx0IGlzIDIwNDggdG9rZW5zLiIsInR5cGUiOiJpbnRlZ2VyIn19LCJ0eXBlIjoib2JqZWN0In0sInVybCI6eyJkZXNjcmlwdGlvbiI6Ik1vZGVsIEFQSSBVUkwiLCJwYXR0ZXJuIjoiXmh0dHBzPzovLy4qJCIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6IlByb3ZpZGVyIG5hbWUiLCJ0eXBlIjoic3RyaW5nIn0sInByb2plY3RJRCI6eyJkZXNjcmlwdGlvbiI6IldhdHNvbnggUHJvamVjdCBJRCIsInR5cGUiOiJzdHJpbmcifSwidGxzU2VjdXJpdHlQcm9maWxlIjp7ImRlc2NyaXB0aW9uIjoiVExTIFNlY3VyaXR5IFByb2ZpbGUgdXNlZCBieSBjb25uZWN0aW9uIHRvIHByb3ZpZGVyIiwicHJvcGVydGllcyI6eyJjdXN0b20iOnsiZGVzY3JpcHRpb24iOiJjdXN0b20gaXMgYSB1c2VyLWRlZmluZWQgVExTIHNlY3VyaXR5IHByb2ZpbGUuIEJlIGV4dHJlbWVseSBjYXJlZnVsIHVzaW5nIGEgY3VzdG9tXG5wcm9maWxlIGFzIGludmFsaWQgY29uZmlndXJhdGlvbnMgY2FuIGJlIGNhdGFzdHJvcGhpYy4gQW4gZXhhbXBsZSBjdXN0b20gcHJvZmlsZVxubG9va3MgbGlrZSB0aGlzOlxuXG4gIGNpcGhlcnM6XG5cbiAgICAtIEVDREhFLUVDRFNBLUNIQUNIQTIwLVBPTFkxMzA1XG5cbiAgICAtIEVDREhFLVJTQS1DSEFDSEEyMC1QT0xZMTMwNVxuXG4gICAgLSBFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTZcblxuICAgIC0gRUNESEUtRUNEU0EtQUVTMTI4LUdDTS1TSEEyNTZcblxuICBtaW5UTFNWZXJzaW9uOiBWZXJzaW9uVExTMTEiLCJudWxsYWJsZSI6dHJ1ZSwicHJvcGVydGllcyI6eyJjaXBoZXJzIjp7ImRlc2NyaXB0aW9uIjoiY2lwaGVycyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNpcGhlciBhbGdvcml0aG1zIHRoYXQgYXJlIG5lZ290aWF0ZWRcbmR1cmluZyB0aGUgVExTIGhhbmRzaGFrZS4gIE9wZXJhdG9ycyBtYXkgcmVtb3ZlIGVudHJpZXMgdGhlaXIgb3BlcmFuZHNcbmRvIG5vdCBzdXBwb3J0LiAgRm9yIGV4YW1wbGUsIHRvIHVzZSBERVMtQ0JDMy1TSEEgICh5YW1sKTpcblxuICBjaXBoZXJzOlxuICAgIC0gREVTLUNCQzMtU0hBIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1pblRMU1ZlcnNpb24iOnsiZGVzY3JpcHRpb24iOiJtaW5UTFNWZXJzaW9uIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbWluaW1hbCB2ZXJzaW9uIG9mIHRoZSBUTFMgcHJvdG9jb2xcbnRoYXQgaXMgbmVnb3RpYXRlZCBkdXJpbmcgdGhlIFRMUyBoYW5kc2hha2UuIEZvciBleGFtcGxlLCB0byB1c2UgVExTXG52ZXJzaW9ucyAxLjEsIDEuMiBhbmQgMS4zICh5YW1sKTpcblxuICBtaW5UTFNWZXJzaW9uOiBWZXJzaW9uVExTMTFcblxuTk9URTogY3VycmVudGx5IHRoZSBoaWdoZXN0IG1pblRMU1ZlcnNpb24gYWxsb3dlZCBpcyBWZXJzaW9uVExTMTIiLCJlbnVtIjpbIlZlcnNpb25UTFMxMCIsIlZlcnNpb25UTFMxMSIsIlZlcnNpb25UTFMxMiIsIlZlcnNpb25UTFMxMyJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sImludGVybWVkaWF0ZSI6eyJkZXNjcmlwdGlvbiI6ImludGVybWVkaWF0ZSBpcyBhIFRMUyBzZWN1cml0eSBwcm9maWxlIGJhc2VkIG9uOlxuXG5odHRwczovL3dpa2kubW96aWxsYS5vcmcvU2VjdXJpdHkvU2VydmVyX1NpZGVfVExTI0ludGVybWVkaWF0ZV9jb21wYXRpYmlsaXR5Xy4yOHJlY29tbWVuZGVkLjI5XG5cbmFuZCBsb29rcyBsaWtlIHRoaXMgKHlhbWwpOlxuXG4gIGNpcGhlcnM6XG5cbiAgICAtIFRMU19BRVNfMTI4X0dDTV9TSEEyNTZcblxuICAgIC0gVExTX0FFU18yNTZfR0NNX1NIQTM4NFxuXG4gICAgLSBUTFNfQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2XG5cbiAgICAtIEVDREhFLUVDRFNBLUFFUzEyOC1HQ00tU0hBMjU2XG5cbiAgICAtIEVDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NlxuXG4gICAgLSBFQ0RIRS1FQ0RTQS1BRVMyNTYtR0NNLVNIQTM4NFxuXG4gICAgLSBFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODRcblxuICAgIC0gRUNESEUtRUNEU0EtQ0hBQ0hBMjAtUE9MWTEzMDVcblxuICAgIC0gRUNESEUtUlNBLUNIQUNIQTIwLVBPTFkxMzA1XG5cbiAgICAtIERIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTZcblxuICAgIC0gREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NFxuXG4gIG1pblRMU1ZlcnNpb246IFZlcnNpb25UTFMxMiIsIm51bGxhYmxlIjp0cnVlLCJ0eXBlIjoib2JqZWN0In0sIm1vZGVybiI6eyJkZXNjcmlwdGlvbiI6Im1vZGVybiBpcyBhIFRMUyBzZWN1cml0eSBwcm9maWxlIGJhc2VkIG9uOlxuXG5odHRwczovL3dpa2kubW96aWxsYS5vcmcvU2VjdXJpdHkvU2VydmVyX1NpZGVfVExTI01vZGVybl9jb21wYXRpYmlsaXR5XG5cbmFuZCBsb29rcyBsaWtlIHRoaXMgKHlhbWwpOlxuXG4gIGNpcGhlcnM6XG5cbiAgICAtIFRMU19BRVNfMTI4X0dDTV9TSEEyNTZcblxuICAgIC0gVExTX0FFU18yNTZfR0NNX1NIQTM4NFxuXG4gICAgLSBUTFNfQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2XG5cbiAgbWluVExTVmVyc2lvbjogVmVyc2lvblRMUzEzIiwibnVsbGFibGUiOnRydWUsInR5cGUiOiJvYmplY3QifSwib2xkIjp7ImRlc2NyaXB0aW9uIjoib2xkIGlzIGEgVExTIHNlY3VyaXR5IHByb2ZpbGUgYmFzZWQgb246XG5cbmh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9TZWN1cml0eS9TZXJ2ZXJfU2lkZV9UTFMjT2xkX2JhY2t3YXJkX2NvbXBhdGliaWxpdHlcblxuYW5kIGxvb2tzIGxpa2UgdGhpcyAoeWFtbCk6XG5cbiAgY2lwaGVyczpcblxuICAgIC0gVExTX0FFU18xMjhfR0NNX1NIQTI1NlxuXG4gICAgLSBUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0XG5cbiAgICAtIFRMU19DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTZcblxuICAgIC0gRUNESEUtRUNEU0EtQUVTMTI4LUdDTS1TSEEyNTZcblxuICAgIC0gRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2XG5cbiAgICAtIEVDREhFLUVDRFNBLUFFUzI1Ni1HQ00tU0hBMzg0XG5cbiAgICAtIEVDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NFxuXG4gICAgLSBFQ0RIRS1FQ0RTQS1DSEFDSEEyMC1QT0xZMTMwNVxuXG4gICAgLSBFQ0RIRS1SU0EtQ0hBQ0hBMjAtUE9MWTEzMDVcblxuICAgIC0gREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NlxuXG4gICAgLSBESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0XG5cbiAgICAtIERIRS1SU0EtQ0hBQ0hBMjAtUE9MWTEzMDVcblxuICAgIC0gRUNESEUtRUNEU0EtQUVTMTI4LVNIQTI1NlxuXG4gICAgLSBFQ0RIRS1SU0EtQUVTMTI4LVNIQTI1NlxuXG4gICAgLSBFQ0RIRS1FQ0RTQS1BRVMxMjgtU0hBXG5cbiAgICAtIEVDREhFLVJTQS1BRVMxMjgtU0hBXG5cbiAgICAtIEVDREhFLUVDRFNBLUFFUzI1Ni1TSEEzODRcblxuICAgIC0gRUNESEUtUlNBLUFFUzI1Ni1TSEEzODRcblxuICAgIC0gRUNESEUtRUNEU0EtQUVTMjU2LVNIQVxuXG4gICAgLSBFQ0RIRS1SU0EtQUVTMjU2LVNIQVxuXG4gICAgLSBESEUtUlNBLUFFUzEyOC1TSEEyNTZcblxuICAgIC0gREhFLVJTQS1BRVMyNTYtU0hBMjU2XG5cbiAgICAtIEFFUzEyOC1HQ00tU0hBMjU2XG5cbiAgICAtIEFFUzI1Ni1HQ00tU0hBMzg0XG5cbiAgICAtIEFFUzEyOC1TSEEyNTZcblxuICAgIC0gQUVTMjU2LVNIQTI1NlxuXG4gICAgLSBBRVMxMjgtU0hBXG5cbiAgICAtIEFFUzI1Ni1TSEFcblxuICAgIC0gREVTLUNCQzMtU0hBXG5cbiAgbWluVExTVmVyc2lvbjogVmVyc2lvblRMUzEwIiwibnVsbGFibGUiOnRydWUsInR5cGUiOiJvYmplY3QifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6InR5cGUgaXMgb25lIG9mIE9sZCwgSW50ZXJtZWRpYXRlLCBNb2Rlcm4gb3IgQ3VzdG9tLiBDdXN0b20gcHJvdmlkZXNcbnRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgaW5kaXZpZHVhbCBUTFMgc2VjdXJpdHkgcHJvZmlsZSBwYXJhbWV0ZXJzLlxuT2xkLCBJbnRlcm1lZGlhdGUgYW5kIE1vZGVybiBhcmUgVExTIHNlY3VyaXR5IHByb2ZpbGVzIGJhc2VkIG9uOlxuXG5odHRwczovL3dpa2kubW96aWxsYS5vcmcvU2VjdXJpdHkvU2VydmVyX1NpZGVfVExTI1JlY29tbWVuZGVkX2NvbmZpZ3VyYXRpb25zXG5cblRoZSBwcm9maWxlcyBhcmUgaW50ZW50IGJhc2VkLCBzbyB0aGV5IG1heSBjaGFuZ2Ugb3ZlciB0aW1lIGFzIG5ldyBjaXBoZXJzIGFyZSBkZXZlbG9wZWQgYW5kIGV4aXN0aW5nIGNpcGhlcnNcbmFyZSBmb3VuZCB0byBiZSBpbnNlY3VyZS4gIERlcGVuZGluZyBvbiBwcmVjaXNlbHkgd2hpY2ggY2lwaGVycyBhcmUgYXZhaWxhYmxlIHRvIGEgcHJvY2VzcywgdGhlIGxpc3QgbWF5IGJlXG5yZWR1Y2VkLlxuXG5Ob3RlIHRoYXQgdGhlIE1vZGVybiBwcm9maWxlIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgaXQgaXMgbm90XG55ZXQgd2VsbCBhZG9wdGVkIGJ5IGNvbW1vbiBzb2Z0d2FyZSBsaWJyYXJpZXMuIiwiZW51bSI6WyJPbGQiLCJJbnRlcm1lZGlhdGUiLCJNb2Rlcm4iLCJDdXN0b20iXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiUHJvdmlkZXIgdHlwZSIsImVudW0iOlsiYXp1cmVfb3BlbmFpIiwiYmFtIiwib3BlbmFpIiwid2F0c29ueCIsInJob2FpX3ZsbG0iLCJyaGVsYWlfdmxsbSIsImZha2VfcHJvdmlkZXIiXSwidHlwZSI6InN0cmluZyJ9LCJ1cmwiOnsiZGVzY3JpcHRpb24iOiJQcm92aWRlciBBUEkgVVJMIiwicGF0dGVybiI6Il5odHRwcz86Ly8uKiQiLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJjcmVkZW50aWFsc1NlY3JldFJlZiIsIm1vZGVscyIsIm5hbWUiLCJ0eXBlIl0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtdmFsaWRhdGlvbnMiOlt7Im1lc3NhZ2UiOiInZGVwbG95bWVudE5hbWUnIG11c3QgYmUgc3BlY2lmaWVkIGZvciAnYXp1cmVfb3BlbmFpJyBwcm92aWRlciIsInJ1bGUiOiJzZWxmLnR5cGUgIT0gXCJhenVyZV9vcGVuYWlcIiB8fCBzZWxmLmRlcGxveW1lbnROYW1lICE9IFwiXCIifSx7Im1lc3NhZ2UiOiIncHJvamVjdElEJyBtdXN0IGJlIHNwZWNpZmllZCBmb3IgJ3dhdHNvbngnIHByb3ZpZGVyIiwicnVsZSI6InNlbGYudHlwZSAhPSBcIndhdHNvbnhcIiB8fCBzZWxmLnByb2plY3RJRCAhPSBcIlwiIn1dfSwidHlwZSI6ImFycmF5In19LCJyZXF1aXJlZCI6WyJwcm92aWRlcnMiXSwidHlwZSI6Im9iamVjdCJ9LCJtY3BTZXJ2ZXJzIjp7ImRlc2NyaXB0aW9uIjoiTUNQIFNlcnZlciBzZXR0aW5ncyIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiTUNQU2VydmVyIGRlZmluZXMgdGhlIHNldHRpbmdzIGZvciBhIHNpbmdsZSBNQ1Agc2VydmVyLiIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIE1DUCBzZXJ2ZXIiLCJ0eXBlIjoic3RyaW5nIn0sInN0cmVhbWFibGVIVFRQIjp7ImRlc2NyaXB0aW9uIjoiU3RyZWFtYWJsZSBIVFRQIFRyYW5zcG9ydCBzZXR0aW5ncyIsInByb3BlcnRpZXMiOnsiZW5hYmxlU1NFIjp7ImRlZmF1bHQiOmZhbHNlLCJkZXNjcmlwdGlvbiI6IkVuYWJsZSBTZXJ2ZXIgU2VudCBFdmVudHMiLCJ0eXBlIjoiYm9vbGVhbiJ9LCJoZWFkZXJzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJIZWFkZXJzIHRvIHNlbmQgdG8gdGhlIE1DUCBzZXJ2ZXJcbnRoZSBtYXAgY29udGFpbnMgdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgbmFtZSBvZiB0aGUgc2VjcmV0IHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlIGhlYWRlci4gVGhpcyBzZWNyZXRcbnNob3VsZCBjb250YWluIGEgaGVhZGVyIHBhdGggaW4gdGhlIGRhdGEgY29udGFpbmluZyBhIGhlYWRlciB2YWx1ZS5cbkEgc3BlY2lhbCBjYXNlIGlzIHVzYWdlIG9mIHRoZSBrdWJlcm5ldGVzIHRva2VuIGluIHRoZSBoZWFkZXIuIHRvIHNwZWNpZnkgdGhpcyB1c2VcbmEgc3RyaW5nIFwia3ViZXJuZXRlc1wiIGluc3RlYWQgb2YgdGhlIHNlY3JldCBuYW1lIiwidHlwZSI6Im9iamVjdCJ9LCJzc2VSZWFkVGltZW91dCI6eyJkZWZhdWx0IjoxMCwiZGVzY3JpcHRpb24iOiJTU0UgUmVhZCBUaW1lb3V0LCBkZWZhdWx0IGlzIDEwIHNlY29uZHMiLCJ0eXBlIjoiaW50ZWdlciJ9LCJ0aW1lb3V0Ijp7ImRlZmF1bHQiOjUsImRlc2NyaXB0aW9uIjoiVGltZW91dCBmb3IgdGhlIE1DUCBzZXJ2ZXIsIGRlZmF1bHQgaXMgNSBzZWNvbmRzIiwidHlwZSI6ImludGVnZXIifSwidXJsIjp7ImRlc2NyaXB0aW9uIjoiVVJMIG9mIHRoZSBNQ1Agc2VydmVyIiwicGF0dGVybiI6Il5odHRwcz86Ly8uKiQiLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ1cmwiXSwidHlwZSI6Im9iamVjdCJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJvbHMiOnsiZGVzY3JpcHRpb24iOiJPTFNTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgT0xTIGRlcGxveW1lbnQuIiwicHJvcGVydGllcyI6eyJhZGRpdGlvbmFsQ0FDb25maWdNYXBSZWYiOnsiZGVzY3JpcHRpb24iOiJBZGRpdGlvbmFsIENBIGNlcnRpZmljYXRlcyBmb3IgVExTIGNvbW11bmljYXRpb24gYmV0d2VlbiBPTFMgc2VydmljZSBhbmQgTExNIFByb3ZpZGVyIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIHJlZmVyZW50LlxuVGhpcyBmaWVsZCBpcyBlZmZlY3RpdmVseSByZXF1aXJlZCwgYnV0IGR1ZSB0byBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBpc1xuYWxsb3dlZCB0byBiZSBlbXB0eS4gSW5zdGFuY2VzIG9mIHRoaXMgdHlwZSB3aXRoIGFuIGVtcHR5IHZhbHVlIGhlcmUgYXJlXG5hbG1vc3QgY2VydGFpbmx5IHdyb25nLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9vdmVydmlldy93b3JraW5nLXdpdGgtb2JqZWN0cy9uYW1lcy8jbmFtZXMiLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sImJ5b2tSQUdPbmx5Ijp7ImRlc2NyaXB0aW9uIjoiT25seSB1c2UgQllPSyBSQUcgc291cmNlcywgaWdub3JlIHRoZSBPcGVuU2hpZnQgZG9jdW1lbnRhdGlvbiBSQUciLCJ0eXBlIjoiYm9vbGVhbiJ9LCJjb252ZXJzYXRpb25DYWNoZSI6eyJkZXNjcmlwdGlvbiI6IkNvbnZlcnNhdGlvbiBjYWNoZSBzZXR0aW5ncyIsInByb3BlcnRpZXMiOnsicG9zdGdyZXMiOnsiZGVzY3JpcHRpb24iOiJQb3N0Z3Jlc1NwZWMgZGVmaW5lcyB0aGUgZGVzaXJlZCBzdGF0ZSBvZiBQb3N0Z3Jlcy4iLCJwcm9wZXJ0aWVzIjp7Im1heENvbm5lY3Rpb25zIjp7ImRlZmF1bHQiOjIwMDAsImRlc2NyaXB0aW9uIjoiUG9zdGdyZXMgbWF4Y29ubmVjdGlvbnMuIERlZmF1bHQ6IFwiMjAwMFwiIiwibWF4aW11bSI6MjYyMTQzLCJtaW5pbXVtIjoxLCJ0eXBlIjoiaW50ZWdlciJ9LCJzaGFyZWRCdWZmZXJzIjp7ImRlZmF1bHQiOiIyNTZNQiIsImRlc2NyaXB0aW9uIjoiUG9zdGdyZXMgc2hhcmVkYnVmZmVycyIsInR5cGUiOiJzdHJpbmciLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX19LCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOnsiZGVmYXVsdCI6InBvc3RncmVzIiwiZGVzY3JpcHRpb24iOiJDb252ZXJzYXRpb24gY2FjaGUgdHlwZS4gRGVmYXVsdDogXCJwb3N0Z3Jlc1wiIiwiZW51bSI6WyJwb3N0Z3JlcyJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sImRlZmF1bHRNb2RlbCI6eyJkZXNjcmlwdGlvbiI6IkRlZmF1bHQgbW9kZWwgZm9yIHVzYWdlIiwidHlwZSI6InN0cmluZyJ9LCJkZWZhdWx0UHJvdmlkZXIiOnsiZGVzY3JpcHRpb24iOiJEZWZhdWx0IHByb3ZpZGVyIGZvciB1c2FnZSIsInR5cGUiOiJzdHJpbmcifSwiZGVwbG95bWVudCI6eyJkZXNjcmlwdGlvbiI6Ik9MUyBkZXBsb3ltZW50IHNldHRpbmdzIiwicHJvcGVydGllcyI6eyJhcGkiOnsiZGVzY3JpcHRpb24iOiJBUEkgY29udGFpbmVyIHNldHRpbmdzLiIsInByb3BlcnRpZXMiOnsiYWZmaW5pdHkiOnsiZGVzY3JpcHRpb24iOiJBZmZpbml0eSBydWxlcyAoY2FuIGJlIGFkZGVkIHdpdGhvdXQgQVBJIHZlcnNpb24gYnVtcClcblVzZXMgc3RhbmRhcmQgY29yZXYxLkFmZmluaXR5IiwicHJvcGVydGllcyI6eyJub2RlQWZmaW5pdHkiOnsiZGVzY3JpcHRpb24iOiJEZXNjcmliZXMgbm9kZSBhZmZpbml0eSBzY2hlZHVsaW5nIHJ1bGVzIGZvciB0aGUgcG9kLiIsInByb3BlcnRpZXMiOnsicHJlZmVycmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJUaGUgc2NoZWR1bGVyIHdpbGwgcHJlZmVyIHRvIHNjaGVkdWxlIHBvZHMgdG8gbm9kZXMgdGhhdCBzYXRpc2Z5XG50aGUgYWZmaW5pdHkgZXhwcmVzc2lvbnMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQsIGJ1dCBpdCBtYXkgY2hvb3NlXG5hIG5vZGUgdGhhdCB2aW9sYXRlcyBvbmUgb3IgbW9yZSBvZiB0aGUgZXhwcmVzc2lvbnMuIFRoZSBub2RlIHRoYXQgaXNcbm1vc3QgcHJlZmVycmVkIGlzIHRoZSBvbmUgd2l0aCB0aGUgZ3JlYXRlc3Qgc3VtIG9mIHdlaWdodHMsIGkuZS5cbmZvciBlYWNoIG5vZGUgdGhhdCBtZWV0cyBhbGwgb2YgdGhlIHNjaGVkdWxpbmcgcmVxdWlyZW1lbnRzIChyZXNvdXJjZVxucmVxdWVzdCwgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nIGFmZmluaXR5IGV4cHJlc3Npb25zLCBldGMuKSxcbmNvbXB1dGUgYSBzdW0gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGVsZW1lbnRzIG9mIHRoaXMgZmllbGQgYW5kIGFkZGluZ1xuXCJ3ZWlnaHRcIiB0byB0aGUgc3VtIGlmIHRoZSBub2RlIG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgbWF0Y2hFeHByZXNzaW9uczsgdGhlXG5ub2RlKHMpIHdpdGggdGhlIGhpZ2hlc3Qgc3VtIGFyZSB0aGUgbW9zdCBwcmVmZXJyZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBbiBlbXB0eSBwcmVmZXJyZWQgc2NoZWR1bGluZyB0ZXJtIG1hdGNoZXMgYWxsIG9iamVjdHMgd2l0aCBpbXBsaWNpdCB3ZWlnaHQgMFxuKGkuZS4gaXQncyBhIG5vLW9wKS4gQSBudWxsIHByZWZlcnJlZCBzY2hlZHVsaW5nIHRlcm0gbWF0Y2hlcyBubyBvYmplY3RzIChpLmUuIGlzIGFsc28gYSBuby1vcCkuIiwicHJvcGVydGllcyI6eyJwcmVmZXJlbmNlIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHRlcm0sIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB3ZWlnaHQuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnRzIGJ5IG5vZGUncyBsYWJlbHMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvclxudGhhdCByZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiUmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzLCBEb2VzTm90RXhpc3QuIEd0LCBhbmQgTHQuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEd0IG9yIEx0LCB0aGUgdmFsdWVzXG5hcnJheSBtdXN0IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyLlxuVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWMgbWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hGaWVsZHMiOnsiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2Ygbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudHMgYnkgbm9kZSdzIGZpZWxkcy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yXG50aGF0IHJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJSZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMsIERvZXNOb3RFeGlzdC4gR3QsIGFuZCBMdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6IkFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgR3Qgb3IgTHQsIHRoZSB2YWx1ZXNcbmFycmF5IG11c3QgaGF2ZSBhIHNpbmdsZSBlbGVtZW50LCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIGludGVnZXIuXG5UaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpYyBtZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJ3ZWlnaHQiOnsiZGVzY3JpcHRpb24iOiJXZWlnaHQgYXNzb2NpYXRlZCB3aXRoIG1hdGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIG5vZGVTZWxlY3RvclRlcm0sIGluIHRoZSByYW5nZSAxLTEwMC4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn19LCJyZXF1aXJlZCI6WyJwcmVmZXJlbmNlIiwid2VpZ2h0Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJyZXF1aXJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBhcmUgbm90IG1ldCBhdFxuc2NoZWR1bGluZyB0aW1lLCB0aGUgcG9kIHdpbGwgbm90IGJlIHNjaGVkdWxlZCBvbnRvIHRoZSBub2RlLlxuSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBjZWFzZSB0byBiZSBtZXRcbmF0IHNvbWUgcG9pbnQgZHVyaW5nIHBvZCBleGVjdXRpb24gKGUuZy4gZHVlIHRvIGFuIHVwZGF0ZSksIHRoZSBzeXN0ZW1cbm1heSBvciBtYXkgbm90IHRyeSB0byBldmVudHVhbGx5IGV2aWN0IHRoZSBwb2QgZnJvbSBpdHMgbm9kZS4iLCJwcm9wZXJ0aWVzIjp7Im5vZGVTZWxlY3RvclRlcm1zIjp7ImRlc2NyaXB0aW9uIjoiUmVxdWlyZWQuIEEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHRlcm1zLiBUaGUgdGVybXMgYXJlIE9SZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG51bGwgb3IgZW1wdHkgbm9kZSBzZWxlY3RvciB0ZXJtIG1hdGNoZXMgbm8gb2JqZWN0cy4gVGhlIHJlcXVpcmVtZW50cyBvZlxudGhlbSBhcmUgQU5EZWQuXG5UaGUgVG9wb2xvZ3lTZWxlY3RvclRlcm0gdHlwZSBpbXBsZW1lbnRzIGEgc3Vic2V0IG9mIHRoZSBOb2RlU2VsZWN0b3JUZXJtLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6IkEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50cyBieSBub2RlJ3MgbGFiZWxzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3JcbnRoYXQgcmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJUaGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6IlJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cywgRG9lc05vdEV4aXN0LiBHdCwgYW5kIEx0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoiQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBHdCBvciBMdCwgdGhlIHZhbHVlc1xuYXJyYXkgbXVzdCBoYXZlIGEgc2luZ2xlIGVsZW1lbnQsIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlci5cblRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljIG1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoRmllbGRzIjp7ImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnRzIGJ5IG5vZGUncyBmaWVsZHMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvclxudGhhdCByZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiUmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzLCBEb2VzTm90RXhpc3QuIEd0LCBhbmQgTHQuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEd0IG9yIEx0LCB0aGUgdmFsdWVzXG5hcnJheSBtdXN0IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyLlxuVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWMgbWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsibm9kZVNlbGVjdG9yVGVybXMiXSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJwb2RBZmZpbml0eSI6eyJkZXNjcmlwdGlvbiI6IkRlc2NyaWJlcyBwb2QgYWZmaW5pdHkgc2NoZWR1bGluZyBydWxlcyAoZS5nLiBjby1sb2NhdGUgdGhpcyBwb2QgaW4gdGhlIHNhbWUgbm9kZSwgem9uZSwgZXRjLiBhcyBzb21lIG90aGVyIHBvZChzKSkuIiwicHJvcGVydGllcyI6eyJwcmVmZXJyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IlRoZSBzY2hlZHVsZXIgd2lsbCBwcmVmZXIgdG8gc2NoZWR1bGUgcG9kcyB0byBub2RlcyB0aGF0IHNhdGlzZnlcbnRoZSBhZmZpbml0eSBleHByZXNzaW9ucyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCwgYnV0IGl0IG1heSBjaG9vc2VcbmEgbm9kZSB0aGF0IHZpb2xhdGVzIG9uZSBvciBtb3JlIG9mIHRoZSBleHByZXNzaW9ucy4gVGhlIG5vZGUgdGhhdCBpc1xubW9zdCBwcmVmZXJyZWQgaXMgdGhlIG9uZSB3aXRoIHRoZSBncmVhdGVzdCBzdW0gb2Ygd2VpZ2h0cywgaS5lLlxuZm9yIGVhY2ggbm9kZSB0aGF0IG1lZXRzIGFsbCBvZiB0aGUgc2NoZWR1bGluZyByZXF1aXJlbWVudHMgKHJlc291cmNlXG5yZXF1ZXN0LCByZXF1aXJlZER1cmluZ1NjaGVkdWxpbmcgYWZmaW5pdHkgZXhwcmVzc2lvbnMsIGV0Yy4pLFxuY29tcHV0ZSBhIHN1bSBieSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZWxlbWVudHMgb2YgdGhpcyBmaWVsZCBhbmQgYWRkaW5nXG5cIndlaWdodFwiIHRvIHRoZSBzdW0gaWYgdGhlIG5vZGUgaGFzIHBvZHMgd2hpY2ggbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBwb2RBZmZpbml0eVRlcm07IHRoZVxubm9kZShzKSB3aXRoIHRoZSBoaWdoZXN0IHN1bSBhcmUgdGhlIG1vc3QgcHJlZmVycmVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHdlaWdodHMgb2YgYWxsIG9mIHRoZSBtYXRjaGVkIFdlaWdodGVkUG9kQWZmaW5pdHlUZXJtIGZpZWxkcyBhcmUgYWRkZWQgcGVyLW5vZGUgdG8gZmluZCB0aGUgbW9zdCBwcmVmZXJyZWQgbm9kZShzKSIsInByb3BlcnRpZXMiOnsicG9kQWZmaW5pdHlUZXJtIjp7ImRlc2NyaXB0aW9uIjoiUmVxdWlyZWQuIEEgcG9kIGFmZmluaXR5IHRlcm0sIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB3ZWlnaHQuIiwicHJvcGVydGllcyI6eyJsYWJlbFNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIGEgc2V0IG9mIHJlc291cmNlcywgaW4gdGhpcyBjYXNlIHBvZHMuXG5JZiBpdCdzIG51bGwsIHRoaXMgUG9kQWZmaW5pdHlUZXJtIG1hdGNoZXMgd2l0aCBubyBQb2RzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1pc21hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWlzbWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBub3RpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1pc21hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWlzbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciB0aGUgc2V0IG9mIG5hbWVzcGFjZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgc2VsZWN0ZWQgYnkgdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIGxpc3RlZCBpbiB0aGUgbmFtZXNwYWNlcyBmaWVsZC5cbm51bGwgc2VsZWN0b3IgYW5kIG51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi5cbkFuIGVtcHR5IHNlbGVjdG9yICh7fSkgbWF0Y2hlcyBhbGwgbmFtZXNwYWNlcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZXMiOnsiZGVzY3JpcHRpb24iOiJuYW1lc3BhY2VzIHNwZWNpZmllcyBhIHN0YXRpYyBsaXN0IG9mIG5hbWVzcGFjZSBuYW1lcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIHNlbGVjdGVkIGJ5IG5hbWVzcGFjZVNlbGVjdG9yLlxubnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgYW5kIG51bGwgbmFtZXNwYWNlU2VsZWN0b3IgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJ0b3BvbG9neUtleSI6eyJkZXNjcmlwdGlvbiI6IlRoaXMgcG9kIHNob3VsZCBiZSBjby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGggdGhlIHBvZHMgbWF0Y2hpbmdcbnRoZSBsYWJlbFNlbGVjdG9yIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlcywgd2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlXG53aG9zZSB2YWx1ZSBvZiB0aGUgbGFiZWwgd2l0aCBrZXkgdG9wb2xvZ3lLZXkgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoIGFueSBvZiB0aGVcbnNlbGVjdGVkIHBvZHMgaXMgcnVubmluZy5cbkVtcHR5IHRvcG9sb2d5S2V5IGlzIG5vdCBhbGxvd2VkLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInRvcG9sb2d5S2V5Il0sInR5cGUiOiJvYmplY3QifSwid2VpZ2h0Ijp7ImRlc2NyaXB0aW9uIjoid2VpZ2h0IGFzc29jaWF0ZWQgd2l0aCBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBwb2RBZmZpbml0eVRlcm0sXG5pbiB0aGUgcmFuZ2UgMS0xMDAuIiwiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9fSwicmVxdWlyZWQiOlsicG9kQWZmaW5pdHlUZXJtIiwid2VpZ2h0Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJyZXF1aXJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBhcmUgbm90IG1ldCBhdFxuc2NoZWR1bGluZyB0aW1lLCB0aGUgcG9kIHdpbGwgbm90IGJlIHNjaGVkdWxlZCBvbnRvIHRoZSBub2RlLlxuSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBjZWFzZSB0byBiZSBtZXRcbmF0IHNvbWUgcG9pbnQgZHVyaW5nIHBvZCBleGVjdXRpb24gKGUuZy4gZHVlIHRvIGEgcG9kIGxhYmVsIHVwZGF0ZSksIHRoZVxuc3lzdGVtIG1heSBvciBtYXkgbm90IHRyeSB0byBldmVudHVhbGx5IGV2aWN0IHRoZSBwb2QgZnJvbSBpdHMgbm9kZS5cbldoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzLCB0aGUgbGlzdHMgb2Ygbm9kZXMgY29ycmVzcG9uZGluZyB0byBlYWNoXG5wb2RBZmZpbml0eVRlcm0gYXJlIGludGVyc2VjdGVkLCBpLmUuIGFsbCB0ZXJtcyBtdXN0IGJlIHNhdGlzZmllZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgYSBzZXQgb2YgcG9kcyAobmFtZWx5IHRob3NlIG1hdGNoaW5nIHRoZSBsYWJlbFNlbGVjdG9yXG5yZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbmFtZXNwYWNlKHMpKSB0aGF0IHRoaXMgcG9kIHNob3VsZCBiZVxuY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoLFxud2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlIHdob3NlIHZhbHVlIG9mXG50aGUgbGFiZWwgd2l0aCBrZXkgXHUwMDNjdG9wb2xvZ3lLZXlcdTAwM2UgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoXG5hIHBvZCBvZiB0aGUgc2V0IG9mIHBvZHMgaXMgcnVubmluZyIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QifSwicG9kQW50aUFmZmluaXR5Ijp7ImRlc2NyaXB0aW9uIjoiRGVzY3JpYmVzIHBvZCBhbnRpLWFmZmluaXR5IHNjaGVkdWxpbmcgcnVsZXMgKGUuZy4gYXZvaWQgcHV0dGluZyB0aGlzIHBvZCBpbiB0aGUgc2FtZSBub2RlLCB6b25lLCBldGMuIGFzIHNvbWUgb3RoZXIgcG9kKHMpKS4iLCJwcm9wZXJ0aWVzIjp7InByZWZlcnJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHNjaGVkdWxlciB3aWxsIHByZWZlciB0byBzY2hlZHVsZSBwb2RzIHRvIG5vZGVzIHRoYXQgc2F0aXNmeVxudGhlIGFudGktYWZmaW5pdHkgZXhwcmVzc2lvbnMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQsIGJ1dCBpdCBtYXkgY2hvb3NlXG5hIG5vZGUgdGhhdCB2aW9sYXRlcyBvbmUgb3IgbW9yZSBvZiB0aGUgZXhwcmVzc2lvbnMuIFRoZSBub2RlIHRoYXQgaXNcbm1vc3QgcHJlZmVycmVkIGlzIHRoZSBvbmUgd2l0aCB0aGUgZ3JlYXRlc3Qgc3VtIG9mIHdlaWdodHMsIGkuZS5cbmZvciBlYWNoIG5vZGUgdGhhdCBtZWV0cyBhbGwgb2YgdGhlIHNjaGVkdWxpbmcgcmVxdWlyZW1lbnRzIChyZXNvdXJjZVxucmVxdWVzdCwgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nIGFudGktYWZmaW5pdHkgZXhwcmVzc2lvbnMsIGV0Yy4pLFxuY29tcHV0ZSBhIHN1bSBieSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZWxlbWVudHMgb2YgdGhpcyBmaWVsZCBhbmQgYWRkaW5nXG5cIndlaWdodFwiIHRvIHRoZSBzdW0gaWYgdGhlIG5vZGUgaGFzIHBvZHMgd2hpY2ggbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBwb2RBZmZpbml0eVRlcm07IHRoZVxubm9kZShzKSB3aXRoIHRoZSBoaWdoZXN0IHN1bSBhcmUgdGhlIG1vc3QgcHJlZmVycmVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHdlaWdodHMgb2YgYWxsIG9mIHRoZSBtYXRjaGVkIFdlaWdodGVkUG9kQWZmaW5pdHlUZXJtIGZpZWxkcyBhcmUgYWRkZWQgcGVyLW5vZGUgdG8gZmluZCB0aGUgbW9zdCBwcmVmZXJyZWQgbm9kZShzKSIsInByb3BlcnRpZXMiOnsicG9kQWZmaW5pdHlUZXJtIjp7ImRlc2NyaXB0aW9uIjoiUmVxdWlyZWQuIEEgcG9kIGFmZmluaXR5IHRlcm0sIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB3ZWlnaHQuIiwicHJvcGVydGllcyI6eyJsYWJlbFNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIGEgc2V0IG9mIHJlc291cmNlcywgaW4gdGhpcyBjYXNlIHBvZHMuXG5JZiBpdCdzIG51bGwsIHRoaXMgUG9kQWZmaW5pdHlUZXJtIG1hdGNoZXMgd2l0aCBubyBQb2RzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1pc21hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWlzbWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBub3RpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1pc21hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWlzbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciB0aGUgc2V0IG9mIG5hbWVzcGFjZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgc2VsZWN0ZWQgYnkgdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIGxpc3RlZCBpbiB0aGUgbmFtZXNwYWNlcyBmaWVsZC5cbm51bGwgc2VsZWN0b3IgYW5kIG51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi5cbkFuIGVtcHR5IHNlbGVjdG9yICh7fSkgbWF0Y2hlcyBhbGwgbmFtZXNwYWNlcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZXMiOnsiZGVzY3JpcHRpb24iOiJuYW1lc3BhY2VzIHNwZWNpZmllcyBhIHN0YXRpYyBsaXN0IG9mIG5hbWVzcGFjZSBuYW1lcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIHNlbGVjdGVkIGJ5IG5hbWVzcGFjZVNlbGVjdG9yLlxubnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgYW5kIG51bGwgbmFtZXNwYWNlU2VsZWN0b3IgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJ0b3BvbG9neUtleSI6eyJkZXNjcmlwdGlvbiI6IlRoaXMgcG9kIHNob3VsZCBiZSBjby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGggdGhlIHBvZHMgbWF0Y2hpbmdcbnRoZSBsYWJlbFNlbGVjdG9yIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlcywgd2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlXG53aG9zZSB2YWx1ZSBvZiB0aGUgbGFiZWwgd2l0aCBrZXkgdG9wb2xvZ3lLZXkgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoIGFueSBvZiB0aGVcbnNlbGVjdGVkIHBvZHMgaXMgcnVubmluZy5cbkVtcHR5IHRvcG9sb2d5S2V5IGlzIG5vdCBhbGxvd2VkLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInRvcG9sb2d5S2V5Il0sInR5cGUiOiJvYmplY3QifSwid2VpZ2h0Ijp7ImRlc2NyaXB0aW9uIjoid2VpZ2h0IGFzc29jaWF0ZWQgd2l0aCBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBwb2RBZmZpbml0eVRlcm0sXG5pbiB0aGUgcmFuZ2UgMS0xMDAuIiwiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9fSwicmVxdWlyZWQiOlsicG9kQWZmaW5pdHlUZXJtIiwid2VpZ2h0Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJyZXF1aXJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiSWYgdGhlIGFudGktYWZmaW5pdHkgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkIGFyZSBub3QgbWV0IGF0XG5zY2hlZHVsaW5nIHRpbWUsIHRoZSBwb2Qgd2lsbCBub3QgYmUgc2NoZWR1bGVkIG9udG8gdGhlIG5vZGUuXG5JZiB0aGUgYW50aS1hZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgY2Vhc2UgdG8gYmUgbWV0XG5hdCBzb21lIHBvaW50IGR1cmluZyBwb2QgZXhlY3V0aW9uIChlLmcuIGR1ZSB0byBhIHBvZCBsYWJlbCB1cGRhdGUpLCB0aGVcbnN5c3RlbSBtYXkgb3IgbWF5IG5vdCB0cnkgdG8gZXZlbnR1YWxseSBldmljdCB0aGUgcG9kIGZyb20gaXRzIG5vZGUuXG5XaGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cywgdGhlIGxpc3RzIG9mIG5vZGVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaFxucG9kQWZmaW5pdHlUZXJtIGFyZSBpbnRlcnNlY3RlZCwgaS5lLiBhbGwgdGVybXMgbXVzdCBiZSBzYXRpc2ZpZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJEZWZpbmVzIGEgc2V0IG9mIHBvZHMgKG5hbWVseSB0aG9zZSBtYXRjaGluZyB0aGUgbGFiZWxTZWxlY3RvclxucmVsYXRpdmUgdG8gdGhlIGdpdmVuIG5hbWVzcGFjZShzKSkgdGhhdCB0aGlzIHBvZCBzaG91bGQgYmVcbmNvLWxvY2F0ZWQgKGFmZmluaXR5KSBvciBub3QgY28tbG9jYXRlZCAoYW50aS1hZmZpbml0eSkgd2l0aCxcbndoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZSB3aG9zZSB2YWx1ZSBvZlxudGhlIGxhYmVsIHdpdGgga2V5IFx1MDAzY3RvcG9sb2d5S2V5XHUwMDNlIG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaFxuYSBwb2Qgb2YgdGhlIHNldCBvZiBwb2RzIGlzIHJ1bm5pbmciLCJwcm9wZXJ0aWVzIjp7ImxhYmVsU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgYSBzZXQgb2YgcmVzb3VyY2VzLCBpbiB0aGlzIGNhc2UgcG9kcy5cbklmIGl0J3MgbnVsbCwgdGhpcyBQb2RBZmZpbml0eVRlcm0gbWF0Y2hlcyB3aXRoIG5vIFBvZHMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgaW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWlzbWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNaXNtYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IG5vdGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWlzbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtaXNtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZVNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIHRoZSBzZXQgb2YgbmFtZXNwYWNlcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBzZWxlY3RlZCBieSB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgbGlzdGVkIGluIHRoZSBuYW1lc3BhY2VzIGZpZWxkLlxubnVsbCBzZWxlY3RvciBhbmQgbnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLlxuQW4gZW1wdHkgc2VsZWN0b3IgKHt9KSBtYXRjaGVzIGFsbCBuYW1lc3BhY2VzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlcyI6eyJkZXNjcmlwdGlvbiI6Im5hbWVzcGFjZXMgc3BlY2lmaWVzIGEgc3RhdGljIGxpc3Qgb2YgbmFtZXNwYWNlIG5hbWVzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIGxpc3RlZCBpbiB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgc2VsZWN0ZWQgYnkgbmFtZXNwYWNlU2VsZWN0b3IuXG5udWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBhbmQgbnVsbCBuYW1lc3BhY2VTZWxlY3RvciBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInRvcG9sb2d5S2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhpcyBwb2Qgc2hvdWxkIGJlIGNvLWxvY2F0ZWQgKGFmZmluaXR5KSBvciBub3QgY28tbG9jYXRlZCAoYW50aS1hZmZpbml0eSkgd2l0aCB0aGUgcG9kcyBtYXRjaGluZ1xudGhlIGxhYmVsU2VsZWN0b3IgaW4gdGhlIHNwZWNpZmllZCBuYW1lc3BhY2VzLCB3aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGVcbndob3NlIHZhbHVlIG9mIHRoZSBsYWJlbCB3aXRoIGtleSB0b3BvbG9neUtleSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2ggYW55IG9mIHRoZVxuc2VsZWN0ZWQgcG9kcyBpcyBydW5uaW5nLlxuRW1wdHkgdG9wb2xvZ3lLZXkgaXMgbm90IGFsbG93ZWQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidG9wb2xvZ3lLZXkiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In0sIm5vZGVTZWxlY3RvciI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoiTm9kZSBzZWxlY3RvciBjb25zdHJhaW50cyIsInR5cGUiOiJvYmplY3QifSwicmVwbGljYXMiOnsiZGVmYXVsdCI6MSwiZGVzY3JpcHRpb24iOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgZGVzaXJlZCBPTFMgcG9kcy4gRGVmYXVsdDogXCIxXCJcbk5vdGU6IFJlcGxpY2FzIGNhbiBvbmx5IGJlIGNoYW5nZWQgZm9yIEFQSUNvbnRhaW5lci4gRm9yIFBvc3RncmVTUUwgYW5kIENvbnNvbGUgY29udGFpbmVycyxcbnRoZSBudW1iZXIgb2YgcmVwbGljYXMgd2lsbCBhbHdheXMgYmUgc2V0IHRvIDEuIiwiZm9ybWF0IjoiaW50MzIiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9LCJyZXNvdXJjZXMiOnsiZGVzY3JpcHRpb24iOiJSZXNvdXJjZSByZXF1aXJlbWVudHMgKENQVSwgbWVtb3J5KVxuVXNlcyBzdGFuZGFyZCBjb3JldjEuUmVzb3VyY2VSZXF1aXJlbWVudHMiLCJwcm9wZXJ0aWVzIjp7ImNsYWltcyI6eyJkZXNjcmlwdGlvbiI6IkNsYWltcyBsaXN0cyB0aGUgbmFtZXMgb2YgcmVzb3VyY2VzLCBkZWZpbmVkIGluIHNwZWMucmVzb3VyY2VDbGFpbXMsXG50aGF0IGFyZSB1c2VkIGJ5IHRoaXMgY29udGFpbmVyLlxuXG5UaGlzIGlzIGFuIGFscGhhIGZpZWxkIGFuZCByZXF1aXJlcyBlbmFibGluZyB0aGVcbkR5bmFtaWNSZXNvdXJjZUFsbG9jYXRpb24gZmVhdHVyZSBnYXRlLlxuXG5UaGlzIGZpZWxkIGlzIGltbXV0YWJsZS4gSXQgY2FuIG9ubHkgYmUgc2V0IGZvciBjb250YWluZXJzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiUmVzb3VyY2VDbGFpbSByZWZlcmVuY2VzIG9uZSBlbnRyeSBpbiBQb2RTcGVjLlJlc291cmNlQ2xhaW1zLiIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiBvbmUgZW50cnkgaW4gcG9kLnNwZWMucmVzb3VyY2VDbGFpbXMgb2ZcbnRoZSBQb2Qgd2hlcmUgdGhpcyBmaWVsZCBpcyB1c2VkLiBJdCBtYWtlcyB0aGF0IHJlc291cmNlIGF2YWlsYWJsZVxuaW5zaWRlIGEgY29udGFpbmVyLiIsInR5cGUiOiJzdHJpbmcifSwicmVxdWVzdCI6eyJkZXNjcmlwdGlvbiI6IlJlcXVlc3QgaXMgdGhlIG5hbWUgY2hvc2VuIGZvciBhIHJlcXVlc3QgaW4gdGhlIHJlZmVyZW5jZWQgY2xhaW0uXG5JZiBlbXB0eSwgZXZlcnl0aGluZyBmcm9tIHRoZSBjbGFpbSBpcyBtYWRlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlXG5vbmx5IHRoZSByZXN1bHQgb2YgdGhpcyByZXF1ZXN0LiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC1tYXAta2V5cyI6WyJuYW1lIl0sIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJtYXAifSwibGltaXRzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJkZXNjcmlwdGlvbiI6IkxpbWl0cyBkZXNjcmliZXMgdGhlIG1heGltdW0gYW1vdW50IG9mIGNvbXB1dGUgcmVzb3VyY2VzIGFsbG93ZWQuXG5Nb3JlIGluZm86IGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbmZpZ3VyYXRpb24vbWFuYWdlLXJlc291cmNlcy1jb250YWluZXJzLyIsInR5cGUiOiJvYmplY3QifSwicmVxdWVzdHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX0sImRlc2NyaXB0aW9uIjoiUmVxdWVzdHMgZGVzY3JpYmVzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21wdXRlIHJlc291cmNlcyByZXF1aXJlZC5cbklmIFJlcXVlc3RzIGlzIG9taXR0ZWQgZm9yIGEgY29udGFpbmVyLCBpdCBkZWZhdWx0cyB0byBMaW1pdHMgaWYgdGhhdCBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCxcbm90aGVyd2lzZSB0byBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHZhbHVlLiBSZXF1ZXN0cyBjYW5ub3QgZXhjZWVkIExpbWl0cy5cbk1vcmUgaW5mbzogaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvY29uZmlndXJhdGlvbi9tYW5hZ2UtcmVzb3VyY2VzLWNvbnRhaW5lcnMvIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJ0b2xlcmF0aW9ucyI6eyJkZXNjcmlwdGlvbiI6IlRvbGVyYXRpb25zIGZvciBwb2Qgc2NoZWR1bGluZ1xuVXNlcyBzdGFuZGFyZCBjb3JldjEuVG9sZXJhdGlvbiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHBvZCB0aGlzIFRvbGVyYXRpb24gaXMgYXR0YWNoZWQgdG8gdG9sZXJhdGVzIGFueSB0YWludCB0aGF0IG1hdGNoZXNcbnRoZSB0cmlwbGUgXHUwMDNja2V5LHZhbHVlLGVmZmVjdFx1MDAzZSB1c2luZyB0aGUgbWF0Y2hpbmcgb3BlcmF0b3IgXHUwMDNjb3BlcmF0b3JcdTAwM2UuIiwicHJvcGVydGllcyI6eyJlZmZlY3QiOnsiZGVzY3JpcHRpb24iOiJFZmZlY3QgaW5kaWNhdGVzIHRoZSB0YWludCBlZmZlY3QgdG8gbWF0Y2guIEVtcHR5IG1lYW5zIG1hdGNoIGFsbCB0YWludCBlZmZlY3RzLlxuV2hlbiBzcGVjaWZpZWQsIGFsbG93ZWQgdmFsdWVzIGFyZSBOb1NjaGVkdWxlLCBQcmVmZXJOb1NjaGVkdWxlIGFuZCBOb0V4ZWN1dGUuIiwidHlwZSI6InN0cmluZyJ9LCJrZXkiOnsiZGVzY3JpcHRpb24iOiJLZXkgaXMgdGhlIHRhaW50IGtleSB0aGF0IHRoZSB0b2xlcmF0aW9uIGFwcGxpZXMgdG8uIEVtcHR5IG1lYW5zIG1hdGNoIGFsbCB0YWludCBrZXlzLlxuSWYgdGhlIGtleSBpcyBlbXB0eSwgb3BlcmF0b3IgbXVzdCBiZSBFeGlzdHM7IHRoaXMgY29tYmluYXRpb24gbWVhbnMgdG8gbWF0Y2ggYWxsIHZhbHVlcyBhbmQgYWxsIGtleXMuIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Ik9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gdGhlIHZhbHVlLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBFeGlzdHMgYW5kIEVxdWFsLiBEZWZhdWx0cyB0byBFcXVhbC5cbkV4aXN0cyBpcyBlcXVpdmFsZW50IHRvIHdpbGRjYXJkIGZvciB2YWx1ZSwgc28gdGhhdCBhIHBvZCBjYW5cbnRvbGVyYXRlIGFsbCB0YWludHMgb2YgYSBwYXJ0aWN1bGFyIGNhdGVnb3J5LiIsInR5cGUiOiJzdHJpbmcifSwidG9sZXJhdGlvblNlY29uZHMiOnsiZGVzY3JpcHRpb24iOiJUb2xlcmF0aW9uU2Vjb25kcyByZXByZXNlbnRzIHRoZSBwZXJpb2Qgb2YgdGltZSB0aGUgdG9sZXJhdGlvbiAod2hpY2ggbXVzdCBiZVxub2YgZWZmZWN0IE5vRXhlY3V0ZSwgb3RoZXJ3aXNlIHRoaXMgZmllbGQgaXMgaWdub3JlZCkgdG9sZXJhdGVzIHRoZSB0YWludC4gQnkgZGVmYXVsdCxcbml0IGlzIG5vdCBzZXQsIHdoaWNoIG1lYW5zIHRvbGVyYXRlIHRoZSB0YWludCBmb3JldmVyIChkbyBub3QgZXZpY3QpLiBaZXJvIGFuZFxubmVnYXRpdmUgdmFsdWVzIHdpbGwgYmUgdHJlYXRlZCBhcyAwIChldmljdCBpbW1lZGlhdGVseSkgYnkgdGhlIHN5c3RlbS4iLCJmb3JtYXQiOiJpbnQ2NCIsInR5cGUiOiJpbnRlZ2VyIn0sInZhbHVlIjp7ImRlc2NyaXB0aW9uIjoiVmFsdWUgaXMgdGhlIHRhaW50IHZhbHVlIHRoZSB0b2xlcmF0aW9uIG1hdGNoZXMgdG8uXG5JZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzLCB0aGUgdmFsdWUgc2hvdWxkIGJlIGVtcHR5LCBvdGhlcndpc2UganVzdCBhIHJlZ3VsYXIgc3RyaW5nLiIsInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sInRvcG9sb2d5U3ByZWFkQ29uc3RyYWludHMiOnsiZGVzY3JpcHRpb24iOiJUb3BvbG9neSBzcHJlYWQgY29uc3RyYWludHMgKGNhbiBiZSBhZGRlZCB3aXRob3V0IEFQSSB2ZXJzaW9uIGJ1bXApXG5Vc2VzIHN0YW5kYXJkIGNvcmV2MS5Ub3BvbG9neVNwcmVhZENvbnN0cmFpbnQiLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlRvcG9sb2d5U3ByZWFkQ29uc3RyYWludCBzcGVjaWZpZXMgaG93IHRvIHNwcmVhZCBtYXRjaGluZyBwb2RzIGFtb25nIHRoZSBnaXZlbiB0b3BvbG9neS4iLCJwcm9wZXJ0aWVzIjp7ImxhYmVsU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJMYWJlbFNlbGVjdG9yIGlzIHVzZWQgdG8gZmluZCBtYXRjaGluZyBwb2RzLlxuUG9kcyB0aGF0IG1hdGNoIHRoaXMgbGFiZWwgc2VsZWN0b3IgYXJlIGNvdW50ZWQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcG9kc1xuaW4gdGhlaXIgY29ycmVzcG9uZGluZyB0b3BvbG9neSBkb21haW4uIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB0aGUgcG9kcyBvdmVyIHdoaWNoXG5zcHJlYWRpbmcgd2lsbCBiZSBjYWxjdWxhdGVkLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBBTkRlZCB3aXRoIGxhYmVsU2VsZWN0b3JcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyBvdmVyIHdoaWNoIHNwcmVhZGluZyB3aWxsIGJlIGNhbGN1bGF0ZWRcbmZvciB0aGUgaW5jb21pbmcgcG9kLiBUaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggTWF0Y2hMYWJlbEtleXMgYW5kIExhYmVsU2VsZWN0b3IuXG5NYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gTGFiZWxTZWxlY3RvciBpc24ndCBzZXQuXG5LZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nIHBvZCBsYWJlbHMgd2lsbFxuYmUgaWdub3JlZC4gQSBudWxsIG9yIGVtcHR5IGxpc3QgbWVhbnMgb25seSBtYXRjaCBhZ2FpbnN0IGxhYmVsU2VsZWN0b3IuXG5cblRoaXMgaXMgYSBiZXRhIGZpZWxkIGFuZCByZXF1aXJlcyB0aGUgTWF0Y2hMYWJlbEtleXNJblBvZFRvcG9sb2d5U3ByZWFkIGZlYXR1cmUgZ2F0ZSB0byBiZSBlbmFibGVkIChlbmFibGVkIGJ5IGRlZmF1bHQpLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXhTa2V3Ijp7ImRlc2NyaXB0aW9uIjoiTWF4U2tldyBkZXNjcmliZXMgdGhlIGRlZ3JlZSB0byB3aGljaCBwb2RzIG1heSBiZSB1bmV2ZW5seSBkaXN0cmlidXRlZC5cbldoZW4gYHdoZW5VbnNhdGlzZmlhYmxlPURvTm90U2NoZWR1bGVgLCBpdCBpcyB0aGUgbWF4aW11bSBwZXJtaXR0ZWQgZGlmZmVyZW5jZVxuYmV0d2VlbiB0aGUgbnVtYmVyIG9mIG1hdGNoaW5nIHBvZHMgaW4gdGhlIHRhcmdldCB0b3BvbG9neSBhbmQgdGhlIGdsb2JhbCBtaW5pbXVtLlxuVGhlIGdsb2JhbCBtaW5pbXVtIGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBtYXRjaGluZyBwb2RzIGluIGFuIGVsaWdpYmxlIGRvbWFpblxub3IgemVybyBpZiB0aGUgbnVtYmVyIG9mIGVsaWdpYmxlIGRvbWFpbnMgaXMgbGVzcyB0aGFuIE1pbkRvbWFpbnMuXG5Gb3IgZXhhbXBsZSwgaW4gYSAzLXpvbmUgY2x1c3RlciwgTWF4U2tldyBpcyBzZXQgdG8gMSwgYW5kIHBvZHMgd2l0aCB0aGUgc2FtZVxubGFiZWxTZWxlY3RvciBzcHJlYWQgYXMgMi8yLzE6XG5JbiB0aGlzIGNhc2UsIHRoZSBnbG9iYWwgbWluaW11bSBpcyAxLlxufCB6b25lMSB8IHpvbmUyIHwgem9uZTMgfFxufCAgUCBQICB8ICBQIFAgIHwgICBQICAgfFxuLSBpZiBNYXhTa2V3IGlzIDEsIGluY29taW5nIHBvZCBjYW4gb25seSBiZSBzY2hlZHVsZWQgdG8gem9uZTMgdG8gYmVjb21lIDIvMi8yO1xuc2NoZWR1bGluZyBpdCBvbnRvIHpvbmUxKHpvbmUyKSB3b3VsZCBtYWtlIHRoZSBBY3R1YWxTa2V3KDMtMSkgb24gem9uZTEoem9uZTIpXG52aW9sYXRlIE1heFNrZXcoMSkuXG4tIGlmIE1heFNrZXcgaXMgMiwgaW5jb21pbmcgcG9kIGNhbiBiZSBzY2hlZHVsZWQgb250byBhbnkgem9uZS5cbldoZW4gYHdoZW5VbnNhdGlzZmlhYmxlPVNjaGVkdWxlQW55d2F5YCwgaXQgaXMgdXNlZCB0byBnaXZlIGhpZ2hlciBwcmVjZWRlbmNlXG50byB0b3BvbG9naWVzIHRoYXQgc2F0aXNmeSBpdC5cbkl0J3MgYSByZXF1aXJlZCBmaWVsZC4gRGVmYXVsdCB2YWx1ZSBpcyAxIGFuZCAwIGlzIG5vdCBhbGxvd2VkLiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifSwibWluRG9tYWlucyI6eyJkZXNjcmlwdGlvbiI6Ik1pbkRvbWFpbnMgaW5kaWNhdGVzIGEgbWluaW11bSBudW1iZXIgb2YgZWxpZ2libGUgZG9tYWlucy5cbldoZW4gdGhlIG51bWJlciBvZiBlbGlnaWJsZSBkb21haW5zIHdpdGggbWF0Y2hpbmcgdG9wb2xvZ3kga2V5cyBpcyBsZXNzIHRoYW4gbWluRG9tYWlucyxcblBvZCBUb3BvbG9neSBTcHJlYWQgdHJlYXRzIFwiZ2xvYmFsIG1pbmltdW1cIiBhcyAwLCBhbmQgdGhlbiB0aGUgY2FsY3VsYXRpb24gb2YgU2tldyBpcyBwZXJmb3JtZWQuXG5BbmQgd2hlbiB0aGUgbnVtYmVyIG9mIGVsaWdpYmxlIGRvbWFpbnMgd2l0aCBtYXRjaGluZyB0b3BvbG9neSBrZXlzIGVxdWFscyBvciBncmVhdGVyIHRoYW4gbWluRG9tYWlucyxcbnRoaXMgdmFsdWUgaGFzIG5vIGVmZmVjdCBvbiBzY2hlZHVsaW5nLlxuQXMgYSByZXN1bHQsIHdoZW4gdGhlIG51bWJlciBvZiBlbGlnaWJsZSBkb21haW5zIGlzIGxlc3MgdGhhbiBtaW5Eb21haW5zLFxuc2NoZWR1bGVyIHdvbid0IHNjaGVkdWxlIG1vcmUgdGhhbiBtYXhTa2V3IFBvZHMgdG8gdGhvc2UgZG9tYWlucy5cbklmIHZhbHVlIGlzIG5pbCwgdGhlIGNvbnN0cmFpbnQgYmVoYXZlcyBhcyBpZiBNaW5Eb21haW5zIGlzIGVxdWFsIHRvIDEuXG5WYWxpZCB2YWx1ZXMgYXJlIGludGVnZXJzIGdyZWF0ZXIgdGhhbiAwLlxuV2hlbiB2YWx1ZSBpcyBub3QgbmlsLCBXaGVuVW5zYXRpc2ZpYWJsZSBtdXN0IGJlIERvTm90U2NoZWR1bGUuXG5cbkZvciBleGFtcGxlLCBpbiBhIDMtem9uZSBjbHVzdGVyLCBNYXhTa2V3IGlzIHNldCB0byAyLCBNaW5Eb21haW5zIGlzIHNldCB0byA1IGFuZCBwb2RzIHdpdGggdGhlIHNhbWVcbmxhYmVsU2VsZWN0b3Igc3ByZWFkIGFzIDIvMi8yOlxufCB6b25lMSB8IHpvbmUyIHwgem9uZTMgfFxufCAgUCBQICB8ICBQIFAgIHwgIFAgUCAgfFxuVGhlIG51bWJlciBvZiBkb21haW5zIGlzIGxlc3MgdGhhbiA1KE1pbkRvbWFpbnMpLCBzbyBcImdsb2JhbCBtaW5pbXVtXCIgaXMgdHJlYXRlZCBhcyAwLlxuSW4gdGhpcyBzaXR1YXRpb24sIG5ldyBwb2Qgd2l0aCB0aGUgc2FtZSBsYWJlbFNlbGVjdG9yIGNhbm5vdCBiZSBzY2hlZHVsZWQsXG5iZWNhdXNlIGNvbXB1dGVkIHNrZXcgd2lsbCBiZSAzKDMgLSAwKSBpZiBuZXcgUG9kIGlzIHNjaGVkdWxlZCB0byBhbnkgb2YgdGhlIHRocmVlIHpvbmVzLFxuaXQgd2lsbCB2aW9sYXRlIE1heFNrZXcuIiwiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9LCJub2RlQWZmaW5pdHlQb2xpY3kiOnsiZGVzY3JpcHRpb24iOiJOb2RlQWZmaW5pdHlQb2xpY3kgaW5kaWNhdGVzIGhvdyB3ZSB3aWxsIHRyZWF0IFBvZCdzIG5vZGVBZmZpbml0eS9ub2RlU2VsZWN0b3JcbndoZW4gY2FsY3VsYXRpbmcgcG9kIHRvcG9sb2d5IHNwcmVhZCBza2V3LiBPcHRpb25zIGFyZTpcbi0gSG9ub3I6IG9ubHkgbm9kZXMgbWF0Y2hpbmcgbm9kZUFmZmluaXR5L25vZGVTZWxlY3RvciBhcmUgaW5jbHVkZWQgaW4gdGhlIGNhbGN1bGF0aW9ucy5cbi0gSWdub3JlOiBub2RlQWZmaW5pdHkvbm9kZVNlbGVjdG9yIGFyZSBpZ25vcmVkLiBBbGwgbm9kZXMgYXJlIGluY2x1ZGVkIGluIHRoZSBjYWxjdWxhdGlvbnMuXG5cbklmIHRoaXMgdmFsdWUgaXMgbmlsLCB0aGUgYmVoYXZpb3IgaXMgZXF1aXZhbGVudCB0byB0aGUgSG9ub3IgcG9saWN5LiIsInR5cGUiOiJzdHJpbmcifSwibm9kZVRhaW50c1BvbGljeSI6eyJkZXNjcmlwdGlvbiI6Ik5vZGVUYWludHNQb2xpY3kgaW5kaWNhdGVzIGhvdyB3ZSB3aWxsIHRyZWF0IG5vZGUgdGFpbnRzIHdoZW4gY2FsY3VsYXRpbmdcbnBvZCB0b3BvbG9neSBzcHJlYWQgc2tldy4gT3B0aW9ucyBhcmU6XG4tIEhvbm9yOiBub2RlcyB3aXRob3V0IHRhaW50cywgYWxvbmcgd2l0aCB0YWludGVkIG5vZGVzIGZvciB3aGljaCB0aGUgaW5jb21pbmcgcG9kXG5oYXMgYSB0b2xlcmF0aW9uLCBhcmUgaW5jbHVkZWQuXG4tIElnbm9yZTogbm9kZSB0YWludHMgYXJlIGlnbm9yZWQuIEFsbCBub2RlcyBhcmUgaW5jbHVkZWQuXG5cbklmIHRoaXMgdmFsdWUgaXMgbmlsLCB0aGUgYmVoYXZpb3IgaXMgZXF1aXZhbGVudCB0byB0aGUgSWdub3JlIHBvbGljeS4iLCJ0eXBlIjoic3RyaW5nIn0sInRvcG9sb2d5S2V5Ijp7ImRlc2NyaXB0aW9uIjoiVG9wb2xvZ3lLZXkgaXMgdGhlIGtleSBvZiBub2RlIGxhYmVscy4gTm9kZXMgdGhhdCBoYXZlIGEgbGFiZWwgd2l0aCB0aGlzIGtleVxuYW5kIGlkZW50aWNhbCB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW4gdGhlIHNhbWUgdG9wb2xvZ3kuXG5XZSBjb25zaWRlciBlYWNoIFx1MDAzY2tleSwgdmFsdWVcdTAwM2UgYXMgYSBcImJ1Y2tldFwiLCBhbmQgdHJ5IHRvIHB1dCBiYWxhbmNlZCBudW1iZXJcbm9mIHBvZHMgaW50byBlYWNoIGJ1Y2tldC5cbldlIGRlZmluZSBhIGRvbWFpbiBhcyBhIHBhcnRpY3VsYXIgaW5zdGFuY2Ugb2YgYSB0b3BvbG9neS5cbkFsc28sIHdlIGRlZmluZSBhbiBlbGlnaWJsZSBkb21haW4gYXMgYSBkb21haW4gd2hvc2Ugbm9kZXMgbWVldCB0aGUgcmVxdWlyZW1lbnRzIG9mXG5ub2RlQWZmaW5pdHlQb2xpY3kgYW5kIG5vZGVUYWludHNQb2xpY3kuXG5lLmcuIElmIFRvcG9sb2d5S2V5IGlzIFwia3ViZXJuZXRlcy5pby9ob3N0bmFtZVwiLCBlYWNoIE5vZGUgaXMgYSBkb21haW4gb2YgdGhhdCB0b3BvbG9neS5cbkFuZCwgaWYgVG9wb2xvZ3lLZXkgaXMgXCJ0b3BvbG9neS5rdWJlcm5ldGVzLmlvL3pvbmVcIiwgZWFjaCB6b25lIGlzIGEgZG9tYWluIG9mIHRoYXQgdG9wb2xvZ3kuXG5JdCdzIGEgcmVxdWlyZWQgZmllbGQuIiwidHlwZSI6InN0cmluZyJ9LCJ3aGVuVW5zYXRpc2ZpYWJsZSI6eyJkZXNjcmlwdGlvbiI6IldoZW5VbnNhdGlzZmlhYmxlIGluZGljYXRlcyBob3cgdG8gZGVhbCB3aXRoIGEgcG9kIGlmIGl0IGRvZXNuJ3Qgc2F0aXNmeVxudGhlIHNwcmVhZCBjb25zdHJhaW50LlxuLSBEb05vdFNjaGVkdWxlIChkZWZhdWx0KSB0ZWxscyB0aGUgc2NoZWR1bGVyIG5vdCB0byBzY2hlZHVsZSBpdC5cbi0gU2NoZWR1bGVBbnl3YXkgdGVsbHMgdGhlIHNjaGVkdWxlciB0byBzY2hlZHVsZSB0aGUgcG9kIGluIGFueSBsb2NhdGlvbixcbiAgYnV0IGdpdmluZyBoaWdoZXIgcHJlY2VkZW5jZSB0byB0b3BvbG9naWVzIHRoYXQgd291bGQgaGVscCByZWR1Y2UgdGhlXG4gIHNrZXcuXG5BIGNvbnN0cmFpbnQgaXMgY29uc2lkZXJlZCBcIlVuc2F0aXNmaWFibGVcIiBmb3IgYW4gaW5jb21pbmcgcG9kXG5pZiBhbmQgb25seSBpZiBldmVyeSBwb3NzaWJsZSBub2RlIGFzc2lnbm1lbnQgZm9yIHRoYXQgcG9kIHdvdWxkIHZpb2xhdGVcblwiTWF4U2tld1wiIG9uIHNvbWUgdG9wb2xvZ3kuXG5Gb3IgZXhhbXBsZSwgaW4gYSAzLXpvbmUgY2x1c3RlciwgTWF4U2tldyBpcyBzZXQgdG8gMSwgYW5kIHBvZHMgd2l0aCB0aGUgc2FtZVxubGFiZWxTZWxlY3RvciBzcHJlYWQgYXMgMy8xLzE6XG58IHpvbmUxIHwgem9uZTIgfCB6b25lMyB8XG58IFAgUCBQIHwgICBQICAgfCAgIFAgICB8XG5JZiBXaGVuVW5zYXRpc2ZpYWJsZSBpcyBzZXQgdG8gRG9Ob3RTY2hlZHVsZSwgaW5jb21pbmcgcG9kIGNhbiBvbmx5IGJlIHNjaGVkdWxlZFxudG8gem9uZTIoem9uZTMpIHRvIGJlY29tZSAzLzIvMSgzLzEvMikgYXMgQWN0dWFsU2tldygyLTEpIG9uIHpvbmUyKHpvbmUzKSBzYXRpc2ZpZXNcbk1heFNrZXcoMSkuIEluIG90aGVyIHdvcmRzLCB0aGUgY2x1c3RlciBjYW4gc3RpbGwgYmUgaW1iYWxhbmNlZCwgYnV0IHNjaGVkdWxlclxud29uJ3QgbWFrZSBpdCAqbW9yZSogaW1iYWxhbmNlZC5cbkl0J3MgYSByZXF1aXJlZCBmaWVsZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJtYXhTa2V3IiwidG9wb2xvZ3lLZXkiLCJ3aGVuVW5zYXRpc2ZpYWJsZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9fSwidHlwZSI6Im9iamVjdCJ9LCJjb25zb2xlIjp7ImRlc2NyaXB0aW9uIjoiQ29uc29sZSBjb250YWluZXIgc2V0dGluZ3MuIiwicHJvcGVydGllcyI6eyJhZmZpbml0eSI6eyJkZXNjcmlwdGlvbiI6IkFmZmluaXR5IHJ1bGVzIChjYW4gYmUgYWRkZWQgd2l0aG91dCBBUEkgdmVyc2lvbiBidW1wKVxuVXNlcyBzdGFuZGFyZCBjb3JldjEuQWZmaW5pdHkiLCJwcm9wZXJ0aWVzIjp7Im5vZGVBZmZpbml0eSI6eyJkZXNjcmlwdGlvbiI6IkRlc2NyaWJlcyBub2RlIGFmZmluaXR5IHNjaGVkdWxpbmcgcnVsZXMgZm9yIHRoZSBwb2QuIiwicHJvcGVydGllcyI6eyJwcmVmZXJyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IlRoZSBzY2hlZHVsZXIgd2lsbCBwcmVmZXIgdG8gc2NoZWR1bGUgcG9kcyB0byBub2RlcyB0aGF0IHNhdGlzZnlcbnRoZSBhZmZpbml0eSBleHByZXNzaW9ucyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCwgYnV0IGl0IG1heSBjaG9vc2VcbmEgbm9kZSB0aGF0IHZpb2xhdGVzIG9uZSBvciBtb3JlIG9mIHRoZSBleHByZXNzaW9ucy4gVGhlIG5vZGUgdGhhdCBpc1xubW9zdCBwcmVmZXJyZWQgaXMgdGhlIG9uZSB3aXRoIHRoZSBncmVhdGVzdCBzdW0gb2Ygd2VpZ2h0cywgaS5lLlxuZm9yIGVhY2ggbm9kZSB0aGF0IG1lZXRzIGFsbCBvZiB0aGUgc2NoZWR1bGluZyByZXF1aXJlbWVudHMgKHJlc291cmNlXG5yZXF1ZXN0LCByZXF1aXJlZER1cmluZ1NjaGVkdWxpbmcgYWZmaW5pdHkgZXhwcmVzc2lvbnMsIGV0Yy4pLFxuY29tcHV0ZSBhIHN1bSBieSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZWxlbWVudHMgb2YgdGhpcyBmaWVsZCBhbmQgYWRkaW5nXG5cIndlaWdodFwiIHRvIHRoZSBzdW0gaWYgdGhlIG5vZGUgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBtYXRjaEV4cHJlc3Npb25zOyB0aGVcbm5vZGUocykgd2l0aCB0aGUgaGlnaGVzdCBzdW0gYXJlIHRoZSBtb3N0IHByZWZlcnJlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkFuIGVtcHR5IHByZWZlcnJlZCBzY2hlZHVsaW5nIHRlcm0gbWF0Y2hlcyBhbGwgb2JqZWN0cyB3aXRoIGltcGxpY2l0IHdlaWdodCAwXG4oaS5lLiBpdCdzIGEgbm8tb3ApLiBBIG51bGwgcHJlZmVycmVkIHNjaGVkdWxpbmcgdGVybSBtYXRjaGVzIG5vIG9iamVjdHMgKGkuZS4gaXMgYWxzbyBhIG5vLW9wKS4iLCJwcm9wZXJ0aWVzIjp7InByZWZlcmVuY2UiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgdGVybSwgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHdlaWdodC4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2Ygbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudHMgYnkgbm9kZSdzIGxhYmVscy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yXG50aGF0IHJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJSZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMsIERvZXNOb3RFeGlzdC4gR3QsIGFuZCBMdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6IkFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgR3Qgb3IgTHQsIHRoZSB2YWx1ZXNcbmFycmF5IG11c3QgaGF2ZSBhIHNpbmdsZSBlbGVtZW50LCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIGludGVnZXIuXG5UaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpYyBtZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaEZpZWxkcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50cyBieSBub2RlJ3MgZmllbGRzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3JcbnRoYXQgcmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJUaGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6IlJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cywgRG9lc05vdEV4aXN0LiBHdCwgYW5kIEx0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoiQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBHdCBvciBMdCwgdGhlIHZhbHVlc1xuYXJyYXkgbXVzdCBoYXZlIGEgc2luZ2xlIGVsZW1lbnQsIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlci5cblRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljIG1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIndlaWdodCI6eyJkZXNjcmlwdGlvbiI6IldlaWdodCBhc3NvY2lhdGVkIHdpdGggbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbm9kZVNlbGVjdG9yVGVybSwgaW4gdGhlIHJhbmdlIDEtMTAwLiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifX0sInJlcXVpcmVkIjpbInByZWZlcmVuY2UiLCJ3ZWlnaHQiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJJZiB0aGUgYWZmaW5pdHkgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkIGFyZSBub3QgbWV0IGF0XG5zY2hlZHVsaW5nIHRpbWUsIHRoZSBwb2Qgd2lsbCBub3QgYmUgc2NoZWR1bGVkIG9udG8gdGhlIG5vZGUuXG5JZiB0aGUgYWZmaW5pdHkgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkIGNlYXNlIHRvIGJlIG1ldFxuYXQgc29tZSBwb2ludCBkdXJpbmcgcG9kIGV4ZWN1dGlvbiAoZS5nLiBkdWUgdG8gYW4gdXBkYXRlKSwgdGhlIHN5c3RlbVxubWF5IG9yIG1heSBub3QgdHJ5IHRvIGV2ZW50dWFsbHkgZXZpY3QgdGhlIHBvZCBmcm9tIGl0cyBub2RlLiIsInByb3BlcnRpZXMiOnsibm9kZVNlbGVjdG9yVGVybXMiOnsiZGVzY3JpcHRpb24iOiJSZXF1aXJlZC4gQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgdGVybXMuIFRoZSB0ZXJtcyBhcmUgT1JlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbnVsbCBvciBlbXB0eSBub2RlIHNlbGVjdG9yIHRlcm0gbWF0Y2hlcyBubyBvYmplY3RzLiBUaGUgcmVxdWlyZW1lbnRzIG9mXG50aGVtIGFyZSBBTkRlZC5cblRoZSBUb3BvbG9neVNlbGVjdG9yVGVybSB0eXBlIGltcGxlbWVudHMgYSBzdWJzZXQgb2YgdGhlIE5vZGVTZWxlY3RvclRlcm0uIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnRzIGJ5IG5vZGUncyBsYWJlbHMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvclxudGhhdCByZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiUmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzLCBEb2VzTm90RXhpc3QuIEd0LCBhbmQgTHQuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEd0IG9yIEx0LCB0aGUgdmFsdWVzXG5hcnJheSBtdXN0IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyLlxuVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWMgbWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hGaWVsZHMiOnsiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2Ygbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudHMgYnkgbm9kZSdzIGZpZWxkcy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yXG50aGF0IHJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJSZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMsIERvZXNOb3RFeGlzdC4gR3QsIGFuZCBMdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6IkFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgR3Qgb3IgTHQsIHRoZSB2YWx1ZXNcbmFycmF5IG11c3QgaGF2ZSBhIHNpbmdsZSBlbGVtZW50LCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIGludGVnZXIuXG5UaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpYyBtZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJub2RlU2VsZWN0b3JUZXJtcyJdLCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn19LCJ0eXBlIjoib2JqZWN0In0sInBvZEFmZmluaXR5Ijp7ImRlc2NyaXB0aW9uIjoiRGVzY3JpYmVzIHBvZCBhZmZpbml0eSBzY2hlZHVsaW5nIHJ1bGVzIChlLmcuIGNvLWxvY2F0ZSB0aGlzIHBvZCBpbiB0aGUgc2FtZSBub2RlLCB6b25lLCBldGMuIGFzIHNvbWUgb3RoZXIgcG9kKHMpKS4iLCJwcm9wZXJ0aWVzIjp7InByZWZlcnJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHNjaGVkdWxlciB3aWxsIHByZWZlciB0byBzY2hlZHVsZSBwb2RzIHRvIG5vZGVzIHRoYXQgc2F0aXNmeVxudGhlIGFmZmluaXR5IGV4cHJlc3Npb25zIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkLCBidXQgaXQgbWF5IGNob29zZVxuYSBub2RlIHRoYXQgdmlvbGF0ZXMgb25lIG9yIG1vcmUgb2YgdGhlIGV4cHJlc3Npb25zLiBUaGUgbm9kZSB0aGF0IGlzXG5tb3N0IHByZWZlcnJlZCBpcyB0aGUgb25lIHdpdGggdGhlIGdyZWF0ZXN0IHN1bSBvZiB3ZWlnaHRzLCBpLmUuXG5mb3IgZWFjaCBub2RlIHRoYXQgbWVldHMgYWxsIG9mIHRoZSBzY2hlZHVsaW5nIHJlcXVpcmVtZW50cyAocmVzb3VyY2VcbnJlcXVlc3QsIHJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZyBhZmZpbml0eSBleHByZXNzaW9ucywgZXRjLiksXG5jb21wdXRlIGEgc3VtIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBlbGVtZW50cyBvZiB0aGlzIGZpZWxkIGFuZCBhZGRpbmdcblwid2VpZ2h0XCIgdG8gdGhlIHN1bSBpZiB0aGUgbm9kZSBoYXMgcG9kcyB3aGljaCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIHBvZEFmZmluaXR5VGVybTsgdGhlXG5ub2RlKHMpIHdpdGggdGhlIGhpZ2hlc3Qgc3VtIGFyZSB0aGUgbW9zdCBwcmVmZXJyZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJUaGUgd2VpZ2h0cyBvZiBhbGwgb2YgdGhlIG1hdGNoZWQgV2VpZ2h0ZWRQb2RBZmZpbml0eVRlcm0gZmllbGRzIGFyZSBhZGRlZCBwZXItbm9kZSB0byBmaW5kIHRoZSBtb3N0IHByZWZlcnJlZCBub2RlKHMpIiwicHJvcGVydGllcyI6eyJwb2RBZmZpbml0eVRlcm0iOnsiZGVzY3JpcHRpb24iOiJSZXF1aXJlZC4gQSBwb2QgYWZmaW5pdHkgdGVybSwgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHdlaWdodC4iLCJwcm9wZXJ0aWVzIjp7ImxhYmVsU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgYSBzZXQgb2YgcmVzb3VyY2VzLCBpbiB0aGlzIGNhc2UgcG9kcy5cbklmIGl0J3MgbnVsbCwgdGhpcyBQb2RBZmZpbml0eVRlcm0gbWF0Y2hlcyB3aXRoIG5vIFBvZHMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgaW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWlzbWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNaXNtYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IG5vdGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWlzbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtaXNtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZVNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIHRoZSBzZXQgb2YgbmFtZXNwYWNlcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBzZWxlY3RlZCBieSB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgbGlzdGVkIGluIHRoZSBuYW1lc3BhY2VzIGZpZWxkLlxubnVsbCBzZWxlY3RvciBhbmQgbnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLlxuQW4gZW1wdHkgc2VsZWN0b3IgKHt9KSBtYXRjaGVzIGFsbCBuYW1lc3BhY2VzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlcyI6eyJkZXNjcmlwdGlvbiI6Im5hbWVzcGFjZXMgc3BlY2lmaWVzIGEgc3RhdGljIGxpc3Qgb2YgbmFtZXNwYWNlIG5hbWVzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIGxpc3RlZCBpbiB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgc2VsZWN0ZWQgYnkgbmFtZXNwYWNlU2VsZWN0b3IuXG5udWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBhbmQgbnVsbCBuYW1lc3BhY2VTZWxlY3RvciBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInRvcG9sb2d5S2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhpcyBwb2Qgc2hvdWxkIGJlIGNvLWxvY2F0ZWQgKGFmZmluaXR5KSBvciBub3QgY28tbG9jYXRlZCAoYW50aS1hZmZpbml0eSkgd2l0aCB0aGUgcG9kcyBtYXRjaGluZ1xudGhlIGxhYmVsU2VsZWN0b3IgaW4gdGhlIHNwZWNpZmllZCBuYW1lc3BhY2VzLCB3aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGVcbndob3NlIHZhbHVlIG9mIHRoZSBsYWJlbCB3aXRoIGtleSB0b3BvbG9neUtleSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2ggYW55IG9mIHRoZVxuc2VsZWN0ZWQgcG9kcyBpcyBydW5uaW5nLlxuRW1wdHkgdG9wb2xvZ3lLZXkgaXMgbm90IGFsbG93ZWQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidG9wb2xvZ3lLZXkiXSwidHlwZSI6Im9iamVjdCJ9LCJ3ZWlnaHQiOnsiZGVzY3JpcHRpb24iOiJ3ZWlnaHQgYXNzb2NpYXRlZCB3aXRoIG1hdGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIHBvZEFmZmluaXR5VGVybSxcbmluIHRoZSByYW5nZSAxLTEwMC4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn19LCJyZXF1aXJlZCI6WyJwb2RBZmZpbml0eVRlcm0iLCJ3ZWlnaHQiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJJZiB0aGUgYWZmaW5pdHkgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkIGFyZSBub3QgbWV0IGF0XG5zY2hlZHVsaW5nIHRpbWUsIHRoZSBwb2Qgd2lsbCBub3QgYmUgc2NoZWR1bGVkIG9udG8gdGhlIG5vZGUuXG5JZiB0aGUgYWZmaW5pdHkgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkIGNlYXNlIHRvIGJlIG1ldFxuYXQgc29tZSBwb2ludCBkdXJpbmcgcG9kIGV4ZWN1dGlvbiAoZS5nLiBkdWUgdG8gYSBwb2QgbGFiZWwgdXBkYXRlKSwgdGhlXG5zeXN0ZW0gbWF5IG9yIG1heSBub3QgdHJ5IHRvIGV2ZW50dWFsbHkgZXZpY3QgdGhlIHBvZCBmcm9tIGl0cyBub2RlLlxuV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMsIHRoZSBsaXN0cyBvZiBub2RlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2hcbnBvZEFmZmluaXR5VGVybSBhcmUgaW50ZXJzZWN0ZWQsIGkuZS4gYWxsIHRlcm1zIG11c3QgYmUgc2F0aXNmaWVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiRGVmaW5lcyBhIHNldCBvZiBwb2RzIChuYW1lbHkgdGhvc2UgbWF0Y2hpbmcgdGhlIGxhYmVsU2VsZWN0b3JcbnJlbGF0aXZlIHRvIHRoZSBnaXZlbiBuYW1lc3BhY2UocykpIHRoYXQgdGhpcyBwb2Qgc2hvdWxkIGJlXG5jby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGgsXG53aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGUgd2hvc2UgdmFsdWUgb2ZcbnRoZSBsYWJlbCB3aXRoIGtleSBcdTAwM2N0b3BvbG9neUtleVx1MDAzZSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2hcbmEgcG9kIG9mIHRoZSBzZXQgb2YgcG9kcyBpcyBydW5uaW5nIiwicHJvcGVydGllcyI6eyJsYWJlbFNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIGEgc2V0IG9mIHJlc291cmNlcywgaW4gdGhpcyBjYXNlIHBvZHMuXG5JZiBpdCdzIG51bGwsIHRoaXMgUG9kQWZmaW5pdHlUZXJtIG1hdGNoZXMgd2l0aCBubyBQb2RzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1pc21hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWlzbWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBub3RpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1pc21hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWlzbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciB0aGUgc2V0IG9mIG5hbWVzcGFjZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgc2VsZWN0ZWQgYnkgdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIGxpc3RlZCBpbiB0aGUgbmFtZXNwYWNlcyBmaWVsZC5cbm51bGwgc2VsZWN0b3IgYW5kIG51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi5cbkFuIGVtcHR5IHNlbGVjdG9yICh7fSkgbWF0Y2hlcyBhbGwgbmFtZXNwYWNlcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZXMiOnsiZGVzY3JpcHRpb24iOiJuYW1lc3BhY2VzIHNwZWNpZmllcyBhIHN0YXRpYyBsaXN0IG9mIG5hbWVzcGFjZSBuYW1lcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIHNlbGVjdGVkIGJ5IG5hbWVzcGFjZVNlbGVjdG9yLlxubnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgYW5kIG51bGwgbmFtZXNwYWNlU2VsZWN0b3IgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJ0b3BvbG9neUtleSI6eyJkZXNjcmlwdGlvbiI6IlRoaXMgcG9kIHNob3VsZCBiZSBjby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGggdGhlIHBvZHMgbWF0Y2hpbmdcbnRoZSBsYWJlbFNlbGVjdG9yIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlcywgd2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlXG53aG9zZSB2YWx1ZSBvZiB0aGUgbGFiZWwgd2l0aCBrZXkgdG9wb2xvZ3lLZXkgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoIGFueSBvZiB0aGVcbnNlbGVjdGVkIHBvZHMgaXMgcnVubmluZy5cbkVtcHR5IHRvcG9sb2d5S2V5IGlzIG5vdCBhbGxvd2VkLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInRvcG9sb2d5S2V5Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJwb2RBbnRpQWZmaW5pdHkiOnsiZGVzY3JpcHRpb24iOiJEZXNjcmliZXMgcG9kIGFudGktYWZmaW5pdHkgc2NoZWR1bGluZyBydWxlcyAoZS5nLiBhdm9pZCBwdXR0aW5nIHRoaXMgcG9kIGluIHRoZSBzYW1lIG5vZGUsIHpvbmUsIGV0Yy4gYXMgc29tZSBvdGhlciBwb2QocykpLiIsInByb3BlcnRpZXMiOnsicHJlZmVycmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJUaGUgc2NoZWR1bGVyIHdpbGwgcHJlZmVyIHRvIHNjaGVkdWxlIHBvZHMgdG8gbm9kZXMgdGhhdCBzYXRpc2Z5XG50aGUgYW50aS1hZmZpbml0eSBleHByZXNzaW9ucyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCwgYnV0IGl0IG1heSBjaG9vc2VcbmEgbm9kZSB0aGF0IHZpb2xhdGVzIG9uZSBvciBtb3JlIG9mIHRoZSBleHByZXNzaW9ucy4gVGhlIG5vZGUgdGhhdCBpc1xubW9zdCBwcmVmZXJyZWQgaXMgdGhlIG9uZSB3aXRoIHRoZSBncmVhdGVzdCBzdW0gb2Ygd2VpZ2h0cywgaS5lLlxuZm9yIGVhY2ggbm9kZSB0aGF0IG1lZXRzIGFsbCBvZiB0aGUgc2NoZWR1bGluZyByZXF1aXJlbWVudHMgKHJlc291cmNlXG5yZXF1ZXN0LCByZXF1aXJlZER1cmluZ1NjaGVkdWxpbmcgYW50aS1hZmZpbml0eSBleHByZXNzaW9ucywgZXRjLiksXG5jb21wdXRlIGEgc3VtIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBlbGVtZW50cyBvZiB0aGlzIGZpZWxkIGFuZCBhZGRpbmdcblwid2VpZ2h0XCIgdG8gdGhlIHN1bSBpZiB0aGUgbm9kZSBoYXMgcG9kcyB3aGljaCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIHBvZEFmZmluaXR5VGVybTsgdGhlXG5ub2RlKHMpIHdpdGggdGhlIGhpZ2hlc3Qgc3VtIGFyZSB0aGUgbW9zdCBwcmVmZXJyZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJUaGUgd2VpZ2h0cyBvZiBhbGwgb2YgdGhlIG1hdGNoZWQgV2VpZ2h0ZWRQb2RBZmZpbml0eVRlcm0gZmllbGRzIGFyZSBhZGRlZCBwZXItbm9kZSB0byBmaW5kIHRoZSBtb3N0IHByZWZlcnJlZCBub2RlKHMpIiwicHJvcGVydGllcyI6eyJwb2RBZmZpbml0eVRlcm0iOnsiZGVzY3JpcHRpb24iOiJSZXF1aXJlZC4gQSBwb2QgYWZmaW5pdHkgdGVybSwgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHdlaWdodC4iLCJwcm9wZXJ0aWVzIjp7ImxhYmVsU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgYSBzZXQgb2YgcmVzb3VyY2VzLCBpbiB0aGlzIGNhc2UgcG9kcy5cbklmIGl0J3MgbnVsbCwgdGhpcyBQb2RBZmZpbml0eVRlcm0gbWF0Y2hlcyB3aXRoIG5vIFBvZHMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgaW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWlzbWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNaXNtYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IG5vdGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWlzbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtaXNtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZVNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIHRoZSBzZXQgb2YgbmFtZXNwYWNlcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBzZWxlY3RlZCBieSB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgbGlzdGVkIGluIHRoZSBuYW1lc3BhY2VzIGZpZWxkLlxubnVsbCBzZWxlY3RvciBhbmQgbnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLlxuQW4gZW1wdHkgc2VsZWN0b3IgKHt9KSBtYXRjaGVzIGFsbCBuYW1lc3BhY2VzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlcyI6eyJkZXNjcmlwdGlvbiI6Im5hbWVzcGFjZXMgc3BlY2lmaWVzIGEgc3RhdGljIGxpc3Qgb2YgbmFtZXNwYWNlIG5hbWVzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIGxpc3RlZCBpbiB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgc2VsZWN0ZWQgYnkgbmFtZXNwYWNlU2VsZWN0b3IuXG5udWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBhbmQgbnVsbCBuYW1lc3BhY2VTZWxlY3RvciBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInRvcG9sb2d5S2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhpcyBwb2Qgc2hvdWxkIGJlIGNvLWxvY2F0ZWQgKGFmZmluaXR5KSBvciBub3QgY28tbG9jYXRlZCAoYW50aS1hZmZpbml0eSkgd2l0aCB0aGUgcG9kcyBtYXRjaGluZ1xudGhlIGxhYmVsU2VsZWN0b3IgaW4gdGhlIHNwZWNpZmllZCBuYW1lc3BhY2VzLCB3aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGVcbndob3NlIHZhbHVlIG9mIHRoZSBsYWJlbCB3aXRoIGtleSB0b3BvbG9neUtleSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2ggYW55IG9mIHRoZVxuc2VsZWN0ZWQgcG9kcyBpcyBydW5uaW5nLlxuRW1wdHkgdG9wb2xvZ3lLZXkgaXMgbm90IGFsbG93ZWQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidG9wb2xvZ3lLZXkiXSwidHlwZSI6Im9iamVjdCJ9LCJ3ZWlnaHQiOnsiZGVzY3JpcHRpb24iOiJ3ZWlnaHQgYXNzb2NpYXRlZCB3aXRoIG1hdGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIHBvZEFmZmluaXR5VGVybSxcbmluIHRoZSByYW5nZSAxLTEwMC4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn19LCJyZXF1aXJlZCI6WyJwb2RBZmZpbml0eVRlcm0iLCJ3ZWlnaHQiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJJZiB0aGUgYW50aS1hZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgYXJlIG5vdCBtZXQgYXRcbnNjaGVkdWxpbmcgdGltZSwgdGhlIHBvZCB3aWxsIG5vdCBiZSBzY2hlZHVsZWQgb250byB0aGUgbm9kZS5cbklmIHRoZSBhbnRpLWFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBjZWFzZSB0byBiZSBtZXRcbmF0IHNvbWUgcG9pbnQgZHVyaW5nIHBvZCBleGVjdXRpb24gKGUuZy4gZHVlIHRvIGEgcG9kIGxhYmVsIHVwZGF0ZSksIHRoZVxuc3lzdGVtIG1heSBvciBtYXkgbm90IHRyeSB0byBldmVudHVhbGx5IGV2aWN0IHRoZSBwb2QgZnJvbSBpdHMgbm9kZS5cbldoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzLCB0aGUgbGlzdHMgb2Ygbm9kZXMgY29ycmVzcG9uZGluZyB0byBlYWNoXG5wb2RBZmZpbml0eVRlcm0gYXJlIGludGVyc2VjdGVkLCBpLmUuIGFsbCB0ZXJtcyBtdXN0IGJlIHNhdGlzZmllZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgYSBzZXQgb2YgcG9kcyAobmFtZWx5IHRob3NlIG1hdGNoaW5nIHRoZSBsYWJlbFNlbGVjdG9yXG5yZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbmFtZXNwYWNlKHMpKSB0aGF0IHRoaXMgcG9kIHNob3VsZCBiZVxuY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoLFxud2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlIHdob3NlIHZhbHVlIG9mXG50aGUgbGFiZWwgd2l0aCBrZXkgXHUwMDNjdG9wb2xvZ3lLZXlcdTAwM2UgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoXG5hIHBvZCBvZiB0aGUgc2V0IG9mIHBvZHMgaXMgcnVubmluZyIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwibm9kZVNlbGVjdG9yIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJOb2RlIHNlbGVjdG9yIGNvbnN0cmFpbnRzIiwidHlwZSI6Im9iamVjdCJ9LCJyZXBsaWNhcyI6eyJkZWZhdWx0IjoxLCJkZXNjcmlwdGlvbiI6IkRlZmluZXMgdGhlIG51bWJlciBvZiBkZXNpcmVkIE9MUyBwb2RzLiBEZWZhdWx0OiBcIjFcIlxuTm90ZTogUmVwbGljYXMgY2FuIG9ubHkgYmUgY2hhbmdlZCBmb3IgQVBJQ29udGFpbmVyLiBGb3IgUG9zdGdyZVNRTCBhbmQgQ29uc29sZSBjb250YWluZXJzLFxudGhlIG51bWJlciBvZiByZXBsaWNhcyB3aWxsIGFsd2F5cyBiZSBzZXQgdG8gMS4iLCJmb3JtYXQiOiJpbnQzMiIsIm1pbmltdW0iOjAsInR5cGUiOiJpbnRlZ2VyIn0sInJlc291cmNlcyI6eyJkZXNjcmlwdGlvbiI6IlJlc291cmNlIHJlcXVpcmVtZW50cyAoQ1BVLCBtZW1vcnkpXG5Vc2VzIHN0YW5kYXJkIGNvcmV2MS5SZXNvdXJjZVJlcXVpcmVtZW50cyIsInByb3BlcnRpZXMiOnsiY2xhaW1zIjp7ImRlc2NyaXB0aW9uIjoiQ2xhaW1zIGxpc3RzIHRoZSBuYW1lcyBvZiByZXNvdXJjZXMsIGRlZmluZWQgaW4gc3BlYy5yZXNvdXJjZUNsYWltcyxcbnRoYXQgYXJlIHVzZWQgYnkgdGhpcyBjb250YWluZXIuXG5cblRoaXMgaXMgYW4gYWxwaGEgZmllbGQgYW5kIHJlcXVpcmVzIGVuYWJsaW5nIHRoZVxuRHluYW1pY1Jlc291cmNlQWxsb2NhdGlvbiBmZWF0dXJlIGdhdGUuXG5cblRoaXMgZmllbGQgaXMgaW1tdXRhYmxlLiBJdCBjYW4gb25seSBiZSBzZXQgZm9yIGNvbnRhaW5lcnMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJSZXNvdXJjZUNsYWltIHJlZmVyZW5jZXMgb25lIGVudHJ5IGluIFBvZFNwZWMuUmVzb3VyY2VDbGFpbXMuIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIG9uZSBlbnRyeSBpbiBwb2Quc3BlYy5yZXNvdXJjZUNsYWltcyBvZlxudGhlIFBvZCB3aGVyZSB0aGlzIGZpZWxkIGlzIHVzZWQuIEl0IG1ha2VzIHRoYXQgcmVzb3VyY2UgYXZhaWxhYmxlXG5pbnNpZGUgYSBjb250YWluZXIuIiwidHlwZSI6InN0cmluZyJ9LCJyZXF1ZXN0Ijp7ImRlc2NyaXB0aW9uIjoiUmVxdWVzdCBpcyB0aGUgbmFtZSBjaG9zZW4gZm9yIGEgcmVxdWVzdCBpbiB0aGUgcmVmZXJlbmNlZCBjbGFpbS5cbklmIGVtcHR5LCBldmVyeXRoaW5nIGZyb20gdGhlIGNsYWltIGlzIG1hZGUgYXZhaWxhYmxlLCBvdGhlcndpc2Vcbm9ubHkgdGhlIHJlc3VsdCBvZiB0aGlzIHJlcXVlc3QuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LW1hcC1rZXlzIjpbIm5hbWUiXSwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6Im1hcCJ9LCJsaW1pdHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX0sImRlc2NyaXB0aW9uIjoiTGltaXRzIGRlc2NyaWJlcyB0aGUgbWF4aW11bSBhbW91bnQgb2YgY29tcHV0ZSByZXNvdXJjZXMgYWxsb3dlZC5cbk1vcmUgaW5mbzogaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvY29uZmlndXJhdGlvbi9tYW5hZ2UtcmVzb3VyY2VzLWNvbnRhaW5lcnMvIiwidHlwZSI6Im9iamVjdCJ9LCJyZXF1ZXN0cyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwiZGVzY3JpcHRpb24iOiJSZXF1ZXN0cyBkZXNjcmliZXMgdGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbXB1dGUgcmVzb3VyY2VzIHJlcXVpcmVkLlxuSWYgUmVxdWVzdHMgaXMgb21pdHRlZCBmb3IgYSBjb250YWluZXIsIGl0IGRlZmF1bHRzIHRvIExpbWl0cyBpZiB0aGF0IGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLFxub3RoZXJ3aXNlIHRvIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdmFsdWUuIFJlcXVlc3RzIGNhbm5vdCBleGNlZWQgTGltaXRzLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL21hbmFnZS1yZXNvdXJjZXMtY29udGFpbmVycy8iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In0sInRvbGVyYXRpb25zIjp7ImRlc2NyaXB0aW9uIjoiVG9sZXJhdGlvbnMgZm9yIHBvZCBzY2hlZHVsaW5nXG5Vc2VzIHN0YW5kYXJkIGNvcmV2MS5Ub2xlcmF0aW9uIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJUaGUgcG9kIHRoaXMgVG9sZXJhdGlvbiBpcyBhdHRhY2hlZCB0byB0b2xlcmF0ZXMgYW55IHRhaW50IHRoYXQgbWF0Y2hlc1xudGhlIHRyaXBsZSBcdTAwM2NrZXksdmFsdWUsZWZmZWN0XHUwMDNlIHVzaW5nIHRoZSBtYXRjaGluZyBvcGVyYXRvciBcdTAwM2NvcGVyYXRvclx1MDAzZS4iLCJwcm9wZXJ0aWVzIjp7ImVmZmVjdCI6eyJkZXNjcmlwdGlvbiI6IkVmZmVjdCBpbmRpY2F0ZXMgdGhlIHRhaW50IGVmZmVjdCB0byBtYXRjaC4gRW1wdHkgbWVhbnMgbWF0Y2ggYWxsIHRhaW50IGVmZmVjdHMuXG5XaGVuIHNwZWNpZmllZCwgYWxsb3dlZCB2YWx1ZXMgYXJlIE5vU2NoZWR1bGUsIFByZWZlck5vU2NoZWR1bGUgYW5kIE5vRXhlY3V0ZS4iLCJ0eXBlIjoic3RyaW5nIn0sImtleSI6eyJkZXNjcmlwdGlvbiI6IktleSBpcyB0aGUgdGFpbnQga2V5IHRoYXQgdGhlIHRvbGVyYXRpb24gYXBwbGllcyB0by4gRW1wdHkgbWVhbnMgbWF0Y2ggYWxsIHRhaW50IGtleXMuXG5JZiB0aGUga2V5IGlzIGVtcHR5LCBvcGVyYXRvciBtdXN0IGJlIEV4aXN0czsgdGhpcyBjb21iaW5hdGlvbiBtZWFucyB0byBtYXRjaCBhbGwgdmFsdWVzIGFuZCBhbGwga2V5cy4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiT3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byB0aGUgdmFsdWUuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEV4aXN0cyBhbmQgRXF1YWwuIERlZmF1bHRzIHRvIEVxdWFsLlxuRXhpc3RzIGlzIGVxdWl2YWxlbnQgdG8gd2lsZGNhcmQgZm9yIHZhbHVlLCBzbyB0aGF0IGEgcG9kIGNhblxudG9sZXJhdGUgYWxsIHRhaW50cyBvZiBhIHBhcnRpY3VsYXIgY2F0ZWdvcnkuIiwidHlwZSI6InN0cmluZyJ9LCJ0b2xlcmF0aW9uU2Vjb25kcyI6eyJkZXNjcmlwdGlvbiI6IlRvbGVyYXRpb25TZWNvbmRzIHJlcHJlc2VudHMgdGhlIHBlcmlvZCBvZiB0aW1lIHRoZSB0b2xlcmF0aW9uICh3aGljaCBtdXN0IGJlXG5vZiBlZmZlY3QgTm9FeGVjdXRlLCBvdGhlcndpc2UgdGhpcyBmaWVsZCBpcyBpZ25vcmVkKSB0b2xlcmF0ZXMgdGhlIHRhaW50LiBCeSBkZWZhdWx0LFxuaXQgaXMgbm90IHNldCwgd2hpY2ggbWVhbnMgdG9sZXJhdGUgdGhlIHRhaW50IGZvcmV2ZXIgKGRvIG5vdCBldmljdCkuIFplcm8gYW5kXG5uZWdhdGl2ZSB2YWx1ZXMgd2lsbCBiZSB0cmVhdGVkIGFzIDAgKGV2aWN0IGltbWVkaWF0ZWx5KSBieSB0aGUgc3lzdGVtLiIsImZvcm1hdCI6ImludDY0IiwidHlwZSI6ImludGVnZXIifSwidmFsdWUiOnsiZGVzY3JpcHRpb24iOiJWYWx1ZSBpcyB0aGUgdGFpbnQgdmFsdWUgdGhlIHRvbGVyYXRpb24gbWF0Y2hlcyB0by5cbklmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMsIHRoZSB2YWx1ZSBzaG91bGQgYmUgZW1wdHksIG90aGVyd2lzZSBqdXN0IGEgcmVndWxhciBzdHJpbmcuIiwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifSwidG9wb2xvZ3lTcHJlYWRDb25zdHJhaW50cyI6eyJkZXNjcmlwdGlvbiI6IlRvcG9sb2d5IHNwcmVhZCBjb25zdHJhaW50cyAoY2FuIGJlIGFkZGVkIHdpdGhvdXQgQVBJIHZlcnNpb24gYnVtcClcblVzZXMgc3RhbmRhcmQgY29yZXYxLlRvcG9sb2d5U3ByZWFkQ29uc3RyYWludCIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiVG9wb2xvZ3lTcHJlYWRDb25zdHJhaW50IHNwZWNpZmllcyBob3cgdG8gc3ByZWFkIG1hdGNoaW5nIHBvZHMgYW1vbmcgdGhlIGdpdmVuIHRvcG9sb2d5LiIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkxhYmVsU2VsZWN0b3IgaXMgdXNlZCB0byBmaW5kIG1hdGNoaW5nIHBvZHMuXG5Qb2RzIHRoYXQgbWF0Y2ggdGhpcyBsYWJlbCBzZWxlY3RvciBhcmUgY291bnRlZCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBwb2RzXG5pbiB0aGVpciBjb3JyZXNwb25kaW5nIHRvcG9sb2d5IGRvbWFpbi4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHRoZSBwb2RzIG92ZXIgd2hpY2hcbnNwcmVhZGluZyB3aWxsIGJlIGNhbGN1bGF0ZWQuIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIEFORGVkIHdpdGggbGFiZWxTZWxlY3RvclxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIG92ZXIgd2hpY2ggc3ByZWFkaW5nIHdpbGwgYmUgY2FsY3VsYXRlZFxuZm9yIHRoZSBpbmNvbWluZyBwb2QuIFRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBNYXRjaExhYmVsS2V5cyBhbmQgTGFiZWxTZWxlY3Rvci5cbk1hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBMYWJlbFNlbGVjdG9yIGlzbid0IHNldC5cbktleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmcgcG9kIGxhYmVscyB3aWxsXG5iZSBpZ25vcmVkLiBBIG51bGwgb3IgZW1wdHkgbGlzdCBtZWFucyBvbmx5IG1hdGNoIGFnYWluc3QgbGFiZWxTZWxlY3Rvci5cblxuVGhpcyBpcyBhIGJldGEgZmllbGQgYW5kIHJlcXVpcmVzIHRoZSBNYXRjaExhYmVsS2V5c0luUG9kVG9wb2xvZ3lTcHJlYWQgZmVhdHVyZSBnYXRlIHRvIGJlIGVuYWJsZWQgKGVuYWJsZWQgYnkgZGVmYXVsdCkuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1heFNrZXciOnsiZGVzY3JpcHRpb24iOiJNYXhTa2V3IGRlc2NyaWJlcyB0aGUgZGVncmVlIHRvIHdoaWNoIHBvZHMgbWF5IGJlIHVuZXZlbmx5IGRpc3RyaWJ1dGVkLlxuV2hlbiBgd2hlblVuc2F0aXNmaWFibGU9RG9Ob3RTY2hlZHVsZWAsIGl0IGlzIHRoZSBtYXhpbXVtIHBlcm1pdHRlZCBkaWZmZXJlbmNlXG5iZXR3ZWVuIHRoZSBudW1iZXIgb2YgbWF0Y2hpbmcgcG9kcyBpbiB0aGUgdGFyZ2V0IHRvcG9sb2d5IGFuZCB0aGUgZ2xvYmFsIG1pbmltdW0uXG5UaGUgZ2xvYmFsIG1pbmltdW0gaXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1hdGNoaW5nIHBvZHMgaW4gYW4gZWxpZ2libGUgZG9tYWluXG5vciB6ZXJvIGlmIHRoZSBudW1iZXIgb2YgZWxpZ2libGUgZG9tYWlucyBpcyBsZXNzIHRoYW4gTWluRG9tYWlucy5cbkZvciBleGFtcGxlLCBpbiBhIDMtem9uZSBjbHVzdGVyLCBNYXhTa2V3IGlzIHNldCB0byAxLCBhbmQgcG9kcyB3aXRoIHRoZSBzYW1lXG5sYWJlbFNlbGVjdG9yIHNwcmVhZCBhcyAyLzIvMTpcbkluIHRoaXMgY2FzZSwgdGhlIGdsb2JhbCBtaW5pbXVtIGlzIDEuXG58IHpvbmUxIHwgem9uZTIgfCB6b25lMyB8XG58ICBQIFAgIHwgIFAgUCAgfCAgIFAgICB8XG4tIGlmIE1heFNrZXcgaXMgMSwgaW5jb21pbmcgcG9kIGNhbiBvbmx5IGJlIHNjaGVkdWxlZCB0byB6b25lMyB0byBiZWNvbWUgMi8yLzI7XG5zY2hlZHVsaW5nIGl0IG9udG8gem9uZTEoem9uZTIpIHdvdWxkIG1ha2UgdGhlIEFjdHVhbFNrZXcoMy0xKSBvbiB6b25lMSh6b25lMilcbnZpb2xhdGUgTWF4U2tldygxKS5cbi0gaWYgTWF4U2tldyBpcyAyLCBpbmNvbWluZyBwb2QgY2FuIGJlIHNjaGVkdWxlZCBvbnRvIGFueSB6b25lLlxuV2hlbiBgd2hlblVuc2F0aXNmaWFibGU9U2NoZWR1bGVBbnl3YXlgLCBpdCBpcyB1c2VkIHRvIGdpdmUgaGlnaGVyIHByZWNlZGVuY2VcbnRvIHRvcG9sb2dpZXMgdGhhdCBzYXRpc2Z5IGl0LlxuSXQncyBhIHJlcXVpcmVkIGZpZWxkLiBEZWZhdWx0IHZhbHVlIGlzIDEgYW5kIDAgaXMgbm90IGFsbG93ZWQuIiwiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9LCJtaW5Eb21haW5zIjp7ImRlc2NyaXB0aW9uIjoiTWluRG9tYWlucyBpbmRpY2F0ZXMgYSBtaW5pbXVtIG51bWJlciBvZiBlbGlnaWJsZSBkb21haW5zLlxuV2hlbiB0aGUgbnVtYmVyIG9mIGVsaWdpYmxlIGRvbWFpbnMgd2l0aCBtYXRjaGluZyB0b3BvbG9neSBrZXlzIGlzIGxlc3MgdGhhbiBtaW5Eb21haW5zLFxuUG9kIFRvcG9sb2d5IFNwcmVhZCB0cmVhdHMgXCJnbG9iYWwgbWluaW11bVwiIGFzIDAsIGFuZCB0aGVuIHRoZSBjYWxjdWxhdGlvbiBvZiBTa2V3IGlzIHBlcmZvcm1lZC5cbkFuZCB3aGVuIHRoZSBudW1iZXIgb2YgZWxpZ2libGUgZG9tYWlucyB3aXRoIG1hdGNoaW5nIHRvcG9sb2d5IGtleXMgZXF1YWxzIG9yIGdyZWF0ZXIgdGhhbiBtaW5Eb21haW5zLFxudGhpcyB2YWx1ZSBoYXMgbm8gZWZmZWN0IG9uIHNjaGVkdWxpbmcuXG5BcyBhIHJlc3VsdCwgd2hlbiB0aGUgbnVtYmVyIG9mIGVsaWdpYmxlIGRvbWFpbnMgaXMgbGVzcyB0aGFuIG1pbkRvbWFpbnMsXG5zY2hlZHVsZXIgd29uJ3Qgc2NoZWR1bGUgbW9yZSB0aGFuIG1heFNrZXcgUG9kcyB0byB0aG9zZSBkb21haW5zLlxuSWYgdmFsdWUgaXMgbmlsLCB0aGUgY29uc3RyYWludCBiZWhhdmVzIGFzIGlmIE1pbkRvbWFpbnMgaXMgZXF1YWwgdG8gMS5cblZhbGlkIHZhbHVlcyBhcmUgaW50ZWdlcnMgZ3JlYXRlciB0aGFuIDAuXG5XaGVuIHZhbHVlIGlzIG5vdCBuaWwsIFdoZW5VbnNhdGlzZmlhYmxlIG11c3QgYmUgRG9Ob3RTY2hlZHVsZS5cblxuRm9yIGV4YW1wbGUsIGluIGEgMy16b25lIGNsdXN0ZXIsIE1heFNrZXcgaXMgc2V0IHRvIDIsIE1pbkRvbWFpbnMgaXMgc2V0IHRvIDUgYW5kIHBvZHMgd2l0aCB0aGUgc2FtZVxubGFiZWxTZWxlY3RvciBzcHJlYWQgYXMgMi8yLzI6XG58IHpvbmUxIHwgem9uZTIgfCB6b25lMyB8XG58ICBQIFAgIHwgIFAgUCAgfCAgUCBQICB8XG5UaGUgbnVtYmVyIG9mIGRvbWFpbnMgaXMgbGVzcyB0aGFuIDUoTWluRG9tYWlucyksIHNvIFwiZ2xvYmFsIG1pbmltdW1cIiBpcyB0cmVhdGVkIGFzIDAuXG5JbiB0aGlzIHNpdHVhdGlvbiwgbmV3IHBvZCB3aXRoIHRoZSBzYW1lIGxhYmVsU2VsZWN0b3IgY2Fubm90IGJlIHNjaGVkdWxlZCxcbmJlY2F1c2UgY29tcHV0ZWQgc2tldyB3aWxsIGJlIDMoMyAtIDApIGlmIG5ldyBQb2QgaXMgc2NoZWR1bGVkIHRvIGFueSBvZiB0aGUgdGhyZWUgem9uZXMsXG5pdCB3aWxsIHZpb2xhdGUgTWF4U2tldy4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn0sIm5vZGVBZmZpbml0eVBvbGljeSI6eyJkZXNjcmlwdGlvbiI6Ik5vZGVBZmZpbml0eVBvbGljeSBpbmRpY2F0ZXMgaG93IHdlIHdpbGwgdHJlYXQgUG9kJ3Mgbm9kZUFmZmluaXR5L25vZGVTZWxlY3Rvclxud2hlbiBjYWxjdWxhdGluZyBwb2QgdG9wb2xvZ3kgc3ByZWFkIHNrZXcuIE9wdGlvbnMgYXJlOlxuLSBIb25vcjogb25seSBub2RlcyBtYXRjaGluZyBub2RlQWZmaW5pdHkvbm9kZVNlbGVjdG9yIGFyZSBpbmNsdWRlZCBpbiB0aGUgY2FsY3VsYXRpb25zLlxuLSBJZ25vcmU6IG5vZGVBZmZpbml0eS9ub2RlU2VsZWN0b3IgYXJlIGlnbm9yZWQuIEFsbCBub2RlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGNhbGN1bGF0aW9ucy5cblxuSWYgdGhpcyB2YWx1ZSBpcyBuaWwsIHRoZSBiZWhhdmlvciBpcyBlcXVpdmFsZW50IHRvIHRoZSBIb25vciBwb2xpY3kuIiwidHlwZSI6InN0cmluZyJ9LCJub2RlVGFpbnRzUG9saWN5Ijp7ImRlc2NyaXB0aW9uIjoiTm9kZVRhaW50c1BvbGljeSBpbmRpY2F0ZXMgaG93IHdlIHdpbGwgdHJlYXQgbm9kZSB0YWludHMgd2hlbiBjYWxjdWxhdGluZ1xucG9kIHRvcG9sb2d5IHNwcmVhZCBza2V3LiBPcHRpb25zIGFyZTpcbi0gSG9ub3I6IG5vZGVzIHdpdGhvdXQgdGFpbnRzLCBhbG9uZyB3aXRoIHRhaW50ZWQgbm9kZXMgZm9yIHdoaWNoIHRoZSBpbmNvbWluZyBwb2RcbmhhcyBhIHRvbGVyYXRpb24sIGFyZSBpbmNsdWRlZC5cbi0gSWdub3JlOiBub2RlIHRhaW50cyBhcmUgaWdub3JlZC4gQWxsIG5vZGVzIGFyZSBpbmNsdWRlZC5cblxuSWYgdGhpcyB2YWx1ZSBpcyBuaWwsIHRoZSBiZWhhdmlvciBpcyBlcXVpdmFsZW50IHRvIHRoZSBJZ25vcmUgcG9saWN5LiIsInR5cGUiOiJzdHJpbmcifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUb3BvbG9neUtleSBpcyB0aGUga2V5IG9mIG5vZGUgbGFiZWxzLiBOb2RlcyB0aGF0IGhhdmUgYSBsYWJlbCB3aXRoIHRoaXMga2V5XG5hbmQgaWRlbnRpY2FsIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0byBiZSBpbiB0aGUgc2FtZSB0b3BvbG9neS5cbldlIGNvbnNpZGVyIGVhY2ggXHUwMDNja2V5LCB2YWx1ZVx1MDAzZSBhcyBhIFwiYnVja2V0XCIsIGFuZCB0cnkgdG8gcHV0IGJhbGFuY2VkIG51bWJlclxub2YgcG9kcyBpbnRvIGVhY2ggYnVja2V0LlxuV2UgZGVmaW5lIGEgZG9tYWluIGFzIGEgcGFydGljdWxhciBpbnN0YW5jZSBvZiBhIHRvcG9sb2d5LlxuQWxzbywgd2UgZGVmaW5lIGFuIGVsaWdpYmxlIGRvbWFpbiBhcyBhIGRvbWFpbiB3aG9zZSBub2RlcyBtZWV0IHRoZSByZXF1aXJlbWVudHMgb2Zcbm5vZGVBZmZpbml0eVBvbGljeSBhbmQgbm9kZVRhaW50c1BvbGljeS5cbmUuZy4gSWYgVG9wb2xvZ3lLZXkgaXMgXCJrdWJlcm5ldGVzLmlvL2hvc3RuYW1lXCIsIGVhY2ggTm9kZSBpcyBhIGRvbWFpbiBvZiB0aGF0IHRvcG9sb2d5LlxuQW5kLCBpZiBUb3BvbG9neUtleSBpcyBcInRvcG9sb2d5Lmt1YmVybmV0ZXMuaW8vem9uZVwiLCBlYWNoIHpvbmUgaXMgYSBkb21haW4gb2YgdGhhdCB0b3BvbG9neS5cbkl0J3MgYSByZXF1aXJlZCBmaWVsZC4iLCJ0eXBlIjoic3RyaW5nIn0sIndoZW5VbnNhdGlzZmlhYmxlIjp7ImRlc2NyaXB0aW9uIjoiV2hlblVuc2F0aXNmaWFibGUgaW5kaWNhdGVzIGhvdyB0byBkZWFsIHdpdGggYSBwb2QgaWYgaXQgZG9lc24ndCBzYXRpc2Z5XG50aGUgc3ByZWFkIGNvbnN0cmFpbnQuXG4tIERvTm90U2NoZWR1bGUgKGRlZmF1bHQpIHRlbGxzIHRoZSBzY2hlZHVsZXIgbm90IHRvIHNjaGVkdWxlIGl0LlxuLSBTY2hlZHVsZUFueXdheSB0ZWxscyB0aGUgc2NoZWR1bGVyIHRvIHNjaGVkdWxlIHRoZSBwb2QgaW4gYW55IGxvY2F0aW9uLFxuICBidXQgZ2l2aW5nIGhpZ2hlciBwcmVjZWRlbmNlIHRvIHRvcG9sb2dpZXMgdGhhdCB3b3VsZCBoZWxwIHJlZHVjZSB0aGVcbiAgc2tldy5cbkEgY29uc3RyYWludCBpcyBjb25zaWRlcmVkIFwiVW5zYXRpc2ZpYWJsZVwiIGZvciBhbiBpbmNvbWluZyBwb2RcbmlmIGFuZCBvbmx5IGlmIGV2ZXJ5IHBvc3NpYmxlIG5vZGUgYXNzaWdubWVudCBmb3IgdGhhdCBwb2Qgd291bGQgdmlvbGF0ZVxuXCJNYXhTa2V3XCIgb24gc29tZSB0b3BvbG9neS5cbkZvciBleGFtcGxlLCBpbiBhIDMtem9uZSBjbHVzdGVyLCBNYXhTa2V3IGlzIHNldCB0byAxLCBhbmQgcG9kcyB3aXRoIHRoZSBzYW1lXG5sYWJlbFNlbGVjdG9yIHNwcmVhZCBhcyAzLzEvMTpcbnwgem9uZTEgfCB6b25lMiB8IHpvbmUzIHxcbnwgUCBQIFAgfCAgIFAgICB8ICAgUCAgIHxcbklmIFdoZW5VbnNhdGlzZmlhYmxlIGlzIHNldCB0byBEb05vdFNjaGVkdWxlLCBpbmNvbWluZyBwb2QgY2FuIG9ubHkgYmUgc2NoZWR1bGVkXG50byB6b25lMih6b25lMykgdG8gYmVjb21lIDMvMi8xKDMvMS8yKSBhcyBBY3R1YWxTa2V3KDItMSkgb24gem9uZTIoem9uZTMpIHNhdGlzZmllc1xuTWF4U2tldygxKS4gSW4gb3RoZXIgd29yZHMsIHRoZSBjbHVzdGVyIGNhbiBzdGlsbCBiZSBpbWJhbGFuY2VkLCBidXQgc2NoZWR1bGVyXG53b24ndCBtYWtlIGl0ICptb3JlKiBpbWJhbGFuY2VkLlxuSXQncyBhIHJlcXVpcmVkIGZpZWxkLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbIm1heFNrZXciLCJ0b3BvbG9neUtleSIsIndoZW5VbnNhdGlzZmlhYmxlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In19LCJ0eXBlIjoib2JqZWN0In0sImRhdGFDb2xsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJEYXRhIENvbGxlY3RvciBjb250YWluZXIgc2V0dGluZ3MuIiwicHJvcGVydGllcyI6eyJyZXNvdXJjZXMiOnsiZGVzY3JpcHRpb24iOiJSZXNvdXJjZSByZXF1aXJlbWVudHMgKENQVSwgbWVtb3J5KVxuVXNlcyBzdGFuZGFyZCBjb3JldjEuUmVzb3VyY2VSZXF1aXJlbWVudHMiLCJwcm9wZXJ0aWVzIjp7ImNsYWltcyI6eyJkZXNjcmlwdGlvbiI6IkNsYWltcyBsaXN0cyB0aGUgbmFtZXMgb2YgcmVzb3VyY2VzLCBkZWZpbmVkIGluIHNwZWMucmVzb3VyY2VDbGFpbXMsXG50aGF0IGFyZSB1c2VkIGJ5IHRoaXMgY29udGFpbmVyLlxuXG5UaGlzIGlzIGFuIGFscGhhIGZpZWxkIGFuZCByZXF1aXJlcyBlbmFibGluZyB0aGVcbkR5bmFtaWNSZXNvdXJjZUFsbG9jYXRpb24gZmVhdHVyZSBnYXRlLlxuXG5UaGlzIGZpZWxkIGlzIGltbXV0YWJsZS4gSXQgY2FuIG9ubHkgYmUgc2V0IGZvciBjb250YWluZXJzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiUmVzb3VyY2VDbGFpbSByZWZlcmVuY2VzIG9uZSBlbnRyeSBpbiBQb2RTcGVjLlJlc291cmNlQ2xhaW1zLiIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiBvbmUgZW50cnkgaW4gcG9kLnNwZWMucmVzb3VyY2VDbGFpbXMgb2ZcbnRoZSBQb2Qgd2hlcmUgdGhpcyBmaWVsZCBpcyB1c2VkLiBJdCBtYWtlcyB0aGF0IHJlc291cmNlIGF2YWlsYWJsZVxuaW5zaWRlIGEgY29udGFpbmVyLiIsInR5cGUiOiJzdHJpbmcifSwicmVxdWVzdCI6eyJkZXNjcmlwdGlvbiI6IlJlcXVlc3QgaXMgdGhlIG5hbWUgY2hvc2VuIGZvciBhIHJlcXVlc3QgaW4gdGhlIHJlZmVyZW5jZWQgY2xhaW0uXG5JZiBlbXB0eSwgZXZlcnl0aGluZyBmcm9tIHRoZSBjbGFpbSBpcyBtYWRlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlXG5vbmx5IHRoZSByZXN1bHQgb2YgdGhpcyByZXF1ZXN0LiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC1tYXAta2V5cyI6WyJuYW1lIl0sIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJtYXAifSwibGltaXRzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJkZXNjcmlwdGlvbiI6IkxpbWl0cyBkZXNjcmliZXMgdGhlIG1heGltdW0gYW1vdW50IG9mIGNvbXB1dGUgcmVzb3VyY2VzIGFsbG93ZWQuXG5Nb3JlIGluZm86IGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbmZpZ3VyYXRpb24vbWFuYWdlLXJlc291cmNlcy1jb250YWluZXJzLyIsInR5cGUiOiJvYmplY3QifSwicmVxdWVzdHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX0sImRlc2NyaXB0aW9uIjoiUmVxdWVzdHMgZGVzY3JpYmVzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21wdXRlIHJlc291cmNlcyByZXF1aXJlZC5cbklmIFJlcXVlc3RzIGlzIG9taXR0ZWQgZm9yIGEgY29udGFpbmVyLCBpdCBkZWZhdWx0cyB0byBMaW1pdHMgaWYgdGhhdCBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCxcbm90aGVyd2lzZSB0byBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHZhbHVlLiBSZXF1ZXN0cyBjYW5ub3QgZXhjZWVkIExpbWl0cy5cbk1vcmUgaW5mbzogaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvY29uZmlndXJhdGlvbi9tYW5hZ2UtcmVzb3VyY2VzLWNvbnRhaW5lcnMvIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJkYXRhYmFzZSI6eyJkZXNjcmlwdGlvbiI6IkRhdGFiYXNlIGNvbnRhaW5lciBzZXR0aW5ncy4iLCJwcm9wZXJ0aWVzIjp7ImFmZmluaXR5Ijp7ImRlc2NyaXB0aW9uIjoiQWZmaW5pdHkgcnVsZXMgKGNhbiBiZSBhZGRlZCB3aXRob3V0IEFQSSB2ZXJzaW9uIGJ1bXApXG5Vc2VzIHN0YW5kYXJkIGNvcmV2MS5BZmZpbml0eSIsInByb3BlcnRpZXMiOnsibm9kZUFmZmluaXR5Ijp7ImRlc2NyaXB0aW9uIjoiRGVzY3JpYmVzIG5vZGUgYWZmaW5pdHkgc2NoZWR1bGluZyBydWxlcyBmb3IgdGhlIHBvZC4iLCJwcm9wZXJ0aWVzIjp7InByZWZlcnJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHNjaGVkdWxlciB3aWxsIHByZWZlciB0byBzY2hlZHVsZSBwb2RzIHRvIG5vZGVzIHRoYXQgc2F0aXNmeVxudGhlIGFmZmluaXR5IGV4cHJlc3Npb25zIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkLCBidXQgaXQgbWF5IGNob29zZVxuYSBub2RlIHRoYXQgdmlvbGF0ZXMgb25lIG9yIG1vcmUgb2YgdGhlIGV4cHJlc3Npb25zLiBUaGUgbm9kZSB0aGF0IGlzXG5tb3N0IHByZWZlcnJlZCBpcyB0aGUgb25lIHdpdGggdGhlIGdyZWF0ZXN0IHN1bSBvZiB3ZWlnaHRzLCBpLmUuXG5mb3IgZWFjaCBub2RlIHRoYXQgbWVldHMgYWxsIG9mIHRoZSBzY2hlZHVsaW5nIHJlcXVpcmVtZW50cyAocmVzb3VyY2VcbnJlcXVlc3QsIHJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZyBhZmZpbml0eSBleHByZXNzaW9ucywgZXRjLiksXG5jb21wdXRlIGEgc3VtIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBlbGVtZW50cyBvZiB0aGlzIGZpZWxkIGFuZCBhZGRpbmdcblwid2VpZ2h0XCIgdG8gdGhlIHN1bSBpZiB0aGUgbm9kZSBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIG1hdGNoRXhwcmVzc2lvbnM7IHRoZVxubm9kZShzKSB3aXRoIHRoZSBoaWdoZXN0IHN1bSBhcmUgdGhlIG1vc3QgcHJlZmVycmVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQW4gZW1wdHkgcHJlZmVycmVkIHNjaGVkdWxpbmcgdGVybSBtYXRjaGVzIGFsbCBvYmplY3RzIHdpdGggaW1wbGljaXQgd2VpZ2h0IDBcbihpLmUuIGl0J3MgYSBuby1vcCkuIEEgbnVsbCBwcmVmZXJyZWQgc2NoZWR1bGluZyB0ZXJtIG1hdGNoZXMgbm8gb2JqZWN0cyAoaS5lLiBpcyBhbHNvIGEgbm8tb3ApLiIsInByb3BlcnRpZXMiOnsicHJlZmVyZW5jZSI6eyJkZXNjcmlwdGlvbiI6IkEgbm9kZSBzZWxlY3RvciB0ZXJtLCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgd2VpZ2h0LiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6IkEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50cyBieSBub2RlJ3MgbGFiZWxzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3JcbnRoYXQgcmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJUaGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6IlJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cywgRG9lc05vdEV4aXN0LiBHdCwgYW5kIEx0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoiQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBHdCBvciBMdCwgdGhlIHZhbHVlc1xuYXJyYXkgbXVzdCBoYXZlIGEgc2luZ2xlIGVsZW1lbnQsIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlci5cblRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljIG1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoRmllbGRzIjp7ImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnRzIGJ5IG5vZGUncyBmaWVsZHMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvclxudGhhdCByZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiUmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzLCBEb2VzTm90RXhpc3QuIEd0LCBhbmQgTHQuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEd0IG9yIEx0LCB0aGUgdmFsdWVzXG5hcnJheSBtdXN0IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyLlxuVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWMgbWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwid2VpZ2h0Ijp7ImRlc2NyaXB0aW9uIjoiV2VpZ2h0IGFzc29jaWF0ZWQgd2l0aCBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBub2RlU2VsZWN0b3JUZXJtLCBpbiB0aGUgcmFuZ2UgMS0xMDAuIiwiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9fSwicmVxdWlyZWQiOlsicHJlZmVyZW5jZSIsIndlaWdodCJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwicmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IklmIHRoZSBhZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgYXJlIG5vdCBtZXQgYXRcbnNjaGVkdWxpbmcgdGltZSwgdGhlIHBvZCB3aWxsIG5vdCBiZSBzY2hlZHVsZWQgb250byB0aGUgbm9kZS5cbklmIHRoZSBhZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgY2Vhc2UgdG8gYmUgbWV0XG5hdCBzb21lIHBvaW50IGR1cmluZyBwb2QgZXhlY3V0aW9uIChlLmcuIGR1ZSB0byBhbiB1cGRhdGUpLCB0aGUgc3lzdGVtXG5tYXkgb3IgbWF5IG5vdCB0cnkgdG8gZXZlbnR1YWxseSBldmljdCB0aGUgcG9kIGZyb20gaXRzIG5vZGUuIiwicHJvcGVydGllcyI6eyJub2RlU2VsZWN0b3JUZXJtcyI6eyJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBBIGxpc3Qgb2Ygbm9kZSBzZWxlY3RvciB0ZXJtcy4gVGhlIHRlcm1zIGFyZSBPUmVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBudWxsIG9yIGVtcHR5IG5vZGUgc2VsZWN0b3IgdGVybSBtYXRjaGVzIG5vIG9iamVjdHMuIFRoZSByZXF1aXJlbWVudHMgb2ZcbnRoZW0gYXJlIEFORGVkLlxuVGhlIFRvcG9sb2d5U2VsZWN0b3JUZXJtIHR5cGUgaW1wbGVtZW50cyBhIHN1YnNldCBvZiB0aGUgTm9kZVNlbGVjdG9yVGVybS4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2Ygbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudHMgYnkgbm9kZSdzIGxhYmVscy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yXG50aGF0IHJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJSZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMsIERvZXNOb3RFeGlzdC4gR3QsIGFuZCBMdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6IkFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgR3Qgb3IgTHQsIHRoZSB2YWx1ZXNcbmFycmF5IG11c3QgaGF2ZSBhIHNpbmdsZSBlbGVtZW50LCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIGludGVnZXIuXG5UaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpYyBtZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaEZpZWxkcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50cyBieSBub2RlJ3MgZmllbGRzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3JcbnRoYXQgcmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJUaGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6IlJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cywgRG9lc05vdEV4aXN0LiBHdCwgYW5kIEx0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoiQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBHdCBvciBMdCwgdGhlIHZhbHVlc1xuYXJyYXkgbXVzdCBoYXZlIGEgc2luZ2xlIGVsZW1lbnQsIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlci5cblRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljIG1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbIm5vZGVTZWxlY3RvclRlcm1zIl0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QifSwicG9kQWZmaW5pdHkiOnsiZGVzY3JpcHRpb24iOiJEZXNjcmliZXMgcG9kIGFmZmluaXR5IHNjaGVkdWxpbmcgcnVsZXMgKGUuZy4gY28tbG9jYXRlIHRoaXMgcG9kIGluIHRoZSBzYW1lIG5vZGUsIHpvbmUsIGV0Yy4gYXMgc29tZSBvdGhlciBwb2QocykpLiIsInByb3BlcnRpZXMiOnsicHJlZmVycmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJUaGUgc2NoZWR1bGVyIHdpbGwgcHJlZmVyIHRvIHNjaGVkdWxlIHBvZHMgdG8gbm9kZXMgdGhhdCBzYXRpc2Z5XG50aGUgYWZmaW5pdHkgZXhwcmVzc2lvbnMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQsIGJ1dCBpdCBtYXkgY2hvb3NlXG5hIG5vZGUgdGhhdCB2aW9sYXRlcyBvbmUgb3IgbW9yZSBvZiB0aGUgZXhwcmVzc2lvbnMuIFRoZSBub2RlIHRoYXQgaXNcbm1vc3QgcHJlZmVycmVkIGlzIHRoZSBvbmUgd2l0aCB0aGUgZ3JlYXRlc3Qgc3VtIG9mIHdlaWdodHMsIGkuZS5cbmZvciBlYWNoIG5vZGUgdGhhdCBtZWV0cyBhbGwgb2YgdGhlIHNjaGVkdWxpbmcgcmVxdWlyZW1lbnRzIChyZXNvdXJjZVxucmVxdWVzdCwgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nIGFmZmluaXR5IGV4cHJlc3Npb25zLCBldGMuKSxcbmNvbXB1dGUgYSBzdW0gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGVsZW1lbnRzIG9mIHRoaXMgZmllbGQgYW5kIGFkZGluZ1xuXCJ3ZWlnaHRcIiB0byB0aGUgc3VtIGlmIHRoZSBub2RlIGhhcyBwb2RzIHdoaWNoIG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtOyB0aGVcbm5vZGUocykgd2l0aCB0aGUgaGlnaGVzdCBzdW0gYXJlIHRoZSBtb3N0IHByZWZlcnJlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlRoZSB3ZWlnaHRzIG9mIGFsbCBvZiB0aGUgbWF0Y2hlZCBXZWlnaHRlZFBvZEFmZmluaXR5VGVybSBmaWVsZHMgYXJlIGFkZGVkIHBlci1ub2RlIHRvIGZpbmQgdGhlIG1vc3QgcHJlZmVycmVkIG5vZGUocykiLCJwcm9wZXJ0aWVzIjp7InBvZEFmZmluaXR5VGVybSI6eyJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBBIHBvZCBhZmZpbml0eSB0ZXJtLCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgd2VpZ2h0LiIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sIndlaWdodCI6eyJkZXNjcmlwdGlvbiI6IndlaWdodCBhc3NvY2lhdGVkIHdpdGggbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtLFxuaW4gdGhlIHJhbmdlIDEtMTAwLiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifX0sInJlcXVpcmVkIjpbInBvZEFmZmluaXR5VGVybSIsIndlaWdodCJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwicmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IklmIHRoZSBhZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgYXJlIG5vdCBtZXQgYXRcbnNjaGVkdWxpbmcgdGltZSwgdGhlIHBvZCB3aWxsIG5vdCBiZSBzY2hlZHVsZWQgb250byB0aGUgbm9kZS5cbklmIHRoZSBhZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgY2Vhc2UgdG8gYmUgbWV0XG5hdCBzb21lIHBvaW50IGR1cmluZyBwb2QgZXhlY3V0aW9uIChlLmcuIGR1ZSB0byBhIHBvZCBsYWJlbCB1cGRhdGUpLCB0aGVcbnN5c3RlbSBtYXkgb3IgbWF5IG5vdCB0cnkgdG8gZXZlbnR1YWxseSBldmljdCB0aGUgcG9kIGZyb20gaXRzIG5vZGUuXG5XaGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cywgdGhlIGxpc3RzIG9mIG5vZGVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaFxucG9kQWZmaW5pdHlUZXJtIGFyZSBpbnRlcnNlY3RlZCwgaS5lLiBhbGwgdGVybXMgbXVzdCBiZSBzYXRpc2ZpZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJEZWZpbmVzIGEgc2V0IG9mIHBvZHMgKG5hbWVseSB0aG9zZSBtYXRjaGluZyB0aGUgbGFiZWxTZWxlY3RvclxucmVsYXRpdmUgdG8gdGhlIGdpdmVuIG5hbWVzcGFjZShzKSkgdGhhdCB0aGlzIHBvZCBzaG91bGQgYmVcbmNvLWxvY2F0ZWQgKGFmZmluaXR5KSBvciBub3QgY28tbG9jYXRlZCAoYW50aS1hZmZpbml0eSkgd2l0aCxcbndoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZSB3aG9zZSB2YWx1ZSBvZlxudGhlIGxhYmVsIHdpdGgga2V5IFx1MDAzY3RvcG9sb2d5S2V5XHUwMDNlIG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaFxuYSBwb2Qgb2YgdGhlIHNldCBvZiBwb2RzIGlzIHJ1bm5pbmciLCJwcm9wZXJ0aWVzIjp7ImxhYmVsU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgYSBzZXQgb2YgcmVzb3VyY2VzLCBpbiB0aGlzIGNhc2UgcG9kcy5cbklmIGl0J3MgbnVsbCwgdGhpcyBQb2RBZmZpbml0eVRlcm0gbWF0Y2hlcyB3aXRoIG5vIFBvZHMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgaW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWlzbWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNaXNtYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IG5vdGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWlzbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtaXNtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZVNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIHRoZSBzZXQgb2YgbmFtZXNwYWNlcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBzZWxlY3RlZCBieSB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgbGlzdGVkIGluIHRoZSBuYW1lc3BhY2VzIGZpZWxkLlxubnVsbCBzZWxlY3RvciBhbmQgbnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLlxuQW4gZW1wdHkgc2VsZWN0b3IgKHt9KSBtYXRjaGVzIGFsbCBuYW1lc3BhY2VzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlcyI6eyJkZXNjcmlwdGlvbiI6Im5hbWVzcGFjZXMgc3BlY2lmaWVzIGEgc3RhdGljIGxpc3Qgb2YgbmFtZXNwYWNlIG5hbWVzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIGxpc3RlZCBpbiB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgc2VsZWN0ZWQgYnkgbmFtZXNwYWNlU2VsZWN0b3IuXG5udWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBhbmQgbnVsbCBuYW1lc3BhY2VTZWxlY3RvciBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInRvcG9sb2d5S2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhpcyBwb2Qgc2hvdWxkIGJlIGNvLWxvY2F0ZWQgKGFmZmluaXR5KSBvciBub3QgY28tbG9jYXRlZCAoYW50aS1hZmZpbml0eSkgd2l0aCB0aGUgcG9kcyBtYXRjaGluZ1xudGhlIGxhYmVsU2VsZWN0b3IgaW4gdGhlIHNwZWNpZmllZCBuYW1lc3BhY2VzLCB3aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGVcbndob3NlIHZhbHVlIG9mIHRoZSBsYWJlbCB3aXRoIGtleSB0b3BvbG9neUtleSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2ggYW55IG9mIHRoZVxuc2VsZWN0ZWQgcG9kcyBpcyBydW5uaW5nLlxuRW1wdHkgdG9wb2xvZ3lLZXkgaXMgbm90IGFsbG93ZWQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidG9wb2xvZ3lLZXkiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJ0eXBlIjoib2JqZWN0In0sInBvZEFudGlBZmZpbml0eSI6eyJkZXNjcmlwdGlvbiI6IkRlc2NyaWJlcyBwb2QgYW50aS1hZmZpbml0eSBzY2hlZHVsaW5nIHJ1bGVzIChlLmcuIGF2b2lkIHB1dHRpbmcgdGhpcyBwb2QgaW4gdGhlIHNhbWUgbm9kZSwgem9uZSwgZXRjLiBhcyBzb21lIG90aGVyIHBvZChzKSkuIiwicHJvcGVydGllcyI6eyJwcmVmZXJyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IlRoZSBzY2hlZHVsZXIgd2lsbCBwcmVmZXIgdG8gc2NoZWR1bGUgcG9kcyB0byBub2RlcyB0aGF0IHNhdGlzZnlcbnRoZSBhbnRpLWFmZmluaXR5IGV4cHJlc3Npb25zIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkLCBidXQgaXQgbWF5IGNob29zZVxuYSBub2RlIHRoYXQgdmlvbGF0ZXMgb25lIG9yIG1vcmUgb2YgdGhlIGV4cHJlc3Npb25zLiBUaGUgbm9kZSB0aGF0IGlzXG5tb3N0IHByZWZlcnJlZCBpcyB0aGUgb25lIHdpdGggdGhlIGdyZWF0ZXN0IHN1bSBvZiB3ZWlnaHRzLCBpLmUuXG5mb3IgZWFjaCBub2RlIHRoYXQgbWVldHMgYWxsIG9mIHRoZSBzY2hlZHVsaW5nIHJlcXVpcmVtZW50cyAocmVzb3VyY2VcbnJlcXVlc3QsIHJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZyBhbnRpLWFmZmluaXR5IGV4cHJlc3Npb25zLCBldGMuKSxcbmNvbXB1dGUgYSBzdW0gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGVsZW1lbnRzIG9mIHRoaXMgZmllbGQgYW5kIGFkZGluZ1xuXCJ3ZWlnaHRcIiB0byB0aGUgc3VtIGlmIHRoZSBub2RlIGhhcyBwb2RzIHdoaWNoIG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtOyB0aGVcbm5vZGUocykgd2l0aCB0aGUgaGlnaGVzdCBzdW0gYXJlIHRoZSBtb3N0IHByZWZlcnJlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlRoZSB3ZWlnaHRzIG9mIGFsbCBvZiB0aGUgbWF0Y2hlZCBXZWlnaHRlZFBvZEFmZmluaXR5VGVybSBmaWVsZHMgYXJlIGFkZGVkIHBlci1ub2RlIHRvIGZpbmQgdGhlIG1vc3QgcHJlZmVycmVkIG5vZGUocykiLCJwcm9wZXJ0aWVzIjp7InBvZEFmZmluaXR5VGVybSI6eyJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBBIHBvZCBhZmZpbml0eSB0ZXJtLCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgd2VpZ2h0LiIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sIndlaWdodCI6eyJkZXNjcmlwdGlvbiI6IndlaWdodCBhc3NvY2lhdGVkIHdpdGggbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtLFxuaW4gdGhlIHJhbmdlIDEtMTAwLiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifX0sInJlcXVpcmVkIjpbInBvZEFmZmluaXR5VGVybSIsIndlaWdodCJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwicmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IklmIHRoZSBhbnRpLWFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBhcmUgbm90IG1ldCBhdFxuc2NoZWR1bGluZyB0aW1lLCB0aGUgcG9kIHdpbGwgbm90IGJlIHNjaGVkdWxlZCBvbnRvIHRoZSBub2RlLlxuSWYgdGhlIGFudGktYWZmaW5pdHkgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkIGNlYXNlIHRvIGJlIG1ldFxuYXQgc29tZSBwb2ludCBkdXJpbmcgcG9kIGV4ZWN1dGlvbiAoZS5nLiBkdWUgdG8gYSBwb2QgbGFiZWwgdXBkYXRlKSwgdGhlXG5zeXN0ZW0gbWF5IG9yIG1heSBub3QgdHJ5IHRvIGV2ZW50dWFsbHkgZXZpY3QgdGhlIHBvZCBmcm9tIGl0cyBub2RlLlxuV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMsIHRoZSBsaXN0cyBvZiBub2RlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2hcbnBvZEFmZmluaXR5VGVybSBhcmUgaW50ZXJzZWN0ZWQsIGkuZS4gYWxsIHRlcm1zIG11c3QgYmUgc2F0aXNmaWVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiRGVmaW5lcyBhIHNldCBvZiBwb2RzIChuYW1lbHkgdGhvc2UgbWF0Y2hpbmcgdGhlIGxhYmVsU2VsZWN0b3JcbnJlbGF0aXZlIHRvIHRoZSBnaXZlbiBuYW1lc3BhY2UocykpIHRoYXQgdGhpcyBwb2Qgc2hvdWxkIGJlXG5jby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGgsXG53aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGUgd2hvc2UgdmFsdWUgb2ZcbnRoZSBsYWJlbCB3aXRoIGtleSBcdTAwM2N0b3BvbG9neUtleVx1MDAzZSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2hcbmEgcG9kIG9mIHRoZSBzZXQgb2YgcG9kcyBpcyBydW5uaW5nIiwicHJvcGVydGllcyI6eyJsYWJlbFNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIGEgc2V0IG9mIHJlc291cmNlcywgaW4gdGhpcyBjYXNlIHBvZHMuXG5JZiBpdCdzIG51bGwsIHRoaXMgUG9kQWZmaW5pdHlUZXJtIG1hdGNoZXMgd2l0aCBubyBQb2RzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1pc21hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWlzbWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBub3RpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1pc21hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWlzbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciB0aGUgc2V0IG9mIG5hbWVzcGFjZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgc2VsZWN0ZWQgYnkgdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIGxpc3RlZCBpbiB0aGUgbmFtZXNwYWNlcyBmaWVsZC5cbm51bGwgc2VsZWN0b3IgYW5kIG51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi5cbkFuIGVtcHR5IHNlbGVjdG9yICh7fSkgbWF0Y2hlcyBhbGwgbmFtZXNwYWNlcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZXMiOnsiZGVzY3JpcHRpb24iOiJuYW1lc3BhY2VzIHNwZWNpZmllcyBhIHN0YXRpYyBsaXN0IG9mIG5hbWVzcGFjZSBuYW1lcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIHNlbGVjdGVkIGJ5IG5hbWVzcGFjZVNlbGVjdG9yLlxubnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgYW5kIG51bGwgbmFtZXNwYWNlU2VsZWN0b3IgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJ0b3BvbG9neUtleSI6eyJkZXNjcmlwdGlvbiI6IlRoaXMgcG9kIHNob3VsZCBiZSBjby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGggdGhlIHBvZHMgbWF0Y2hpbmdcbnRoZSBsYWJlbFNlbGVjdG9yIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlcywgd2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlXG53aG9zZSB2YWx1ZSBvZiB0aGUgbGFiZWwgd2l0aCBrZXkgdG9wb2xvZ3lLZXkgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoIGFueSBvZiB0aGVcbnNlbGVjdGVkIHBvZHMgaXMgcnVubmluZy5cbkVtcHR5IHRvcG9sb2d5S2V5IGlzIG5vdCBhbGxvd2VkLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInRvcG9sb2d5S2V5Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJub2RlU2VsZWN0b3IiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Ik5vZGUgc2VsZWN0b3IgY29uc3RyYWludHMiLCJ0eXBlIjoib2JqZWN0In0sInJlcGxpY2FzIjp7ImRlZmF1bHQiOjEsImRlc2NyaXB0aW9uIjoiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGRlc2lyZWQgT0xTIHBvZHMuIERlZmF1bHQ6IFwiMVwiXG5Ob3RlOiBSZXBsaWNhcyBjYW4gb25seSBiZSBjaGFuZ2VkIGZvciBBUElDb250YWluZXIuIEZvciBQb3N0Z3JlU1FMIGFuZCBDb25zb2xlIGNvbnRhaW5lcnMsXG50aGUgbnVtYmVyIG9mIHJlcGxpY2FzIHdpbGwgYWx3YXlzIGJlIHNldCB0byAxLiIsImZvcm1hdCI6ImludDMyIiwibWluaW11bSI6MCwidHlwZSI6ImludGVnZXIifSwicmVzb3VyY2VzIjp7ImRlc2NyaXB0aW9uIjoiUmVzb3VyY2UgcmVxdWlyZW1lbnRzIChDUFUsIG1lbW9yeSlcblVzZXMgc3RhbmRhcmQgY29yZXYxLlJlc291cmNlUmVxdWlyZW1lbnRzIiwicHJvcGVydGllcyI6eyJjbGFpbXMiOnsiZGVzY3JpcHRpb24iOiJDbGFpbXMgbGlzdHMgdGhlIG5hbWVzIG9mIHJlc291cmNlcywgZGVmaW5lZCBpbiBzcGVjLnJlc291cmNlQ2xhaW1zLFxudGhhdCBhcmUgdXNlZCBieSB0aGlzIGNvbnRhaW5lci5cblxuVGhpcyBpcyBhbiBhbHBoYSBmaWVsZCBhbmQgcmVxdWlyZXMgZW5hYmxpbmcgdGhlXG5EeW5hbWljUmVzb3VyY2VBbGxvY2F0aW9uIGZlYXR1cmUgZ2F0ZS5cblxuVGhpcyBmaWVsZCBpcyBpbW11dGFibGUuIEl0IGNhbiBvbmx5IGJlIHNldCBmb3IgY29udGFpbmVycy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlJlc291cmNlQ2xhaW0gcmVmZXJlbmNlcyBvbmUgZW50cnkgaW4gUG9kU3BlYy5SZXNvdXJjZUNsYWltcy4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG11c3QgbWF0Y2ggdGhlIG5hbWUgb2Ygb25lIGVudHJ5IGluIHBvZC5zcGVjLnJlc291cmNlQ2xhaW1zIG9mXG50aGUgUG9kIHdoZXJlIHRoaXMgZmllbGQgaXMgdXNlZC4gSXQgbWFrZXMgdGhhdCByZXNvdXJjZSBhdmFpbGFibGVcbmluc2lkZSBhIGNvbnRhaW5lci4iLCJ0eXBlIjoic3RyaW5nIn0sInJlcXVlc3QiOnsiZGVzY3JpcHRpb24iOiJSZXF1ZXN0IGlzIHRoZSBuYW1lIGNob3NlbiBmb3IgYSByZXF1ZXN0IGluIHRoZSByZWZlcmVuY2VkIGNsYWltLlxuSWYgZW1wdHksIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgY2xhaW0gaXMgbWFkZSBhdmFpbGFibGUsIG90aGVyd2lzZVxub25seSB0aGUgcmVzdWx0IG9mIHRoaXMgcmVxdWVzdC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtbWFwLWtleXMiOlsibmFtZSJdLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoibWFwIn0sImxpbWl0cyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwiZGVzY3JpcHRpb24iOiJMaW1pdHMgZGVzY3JpYmVzIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBjb21wdXRlIHJlc291cmNlcyBhbGxvd2VkLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL21hbmFnZS1yZXNvdXJjZXMtY29udGFpbmVycy8iLCJ0eXBlIjoib2JqZWN0In0sInJlcXVlc3RzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJkZXNjcmlwdGlvbiI6IlJlcXVlc3RzIGRlc2NyaWJlcyB0aGUgbWluaW11bSBhbW91bnQgb2YgY29tcHV0ZSByZXNvdXJjZXMgcmVxdWlyZWQuXG5JZiBSZXF1ZXN0cyBpcyBvbWl0dGVkIGZvciBhIGNvbnRhaW5lciwgaXQgZGVmYXVsdHMgdG8gTGltaXRzIGlmIHRoYXQgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQsXG5vdGhlcndpc2UgdG8gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCB2YWx1ZS4gUmVxdWVzdHMgY2Fubm90IGV4Y2VlZCBMaW1pdHMuXG5Nb3JlIGluZm86IGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbmZpZ3VyYXRpb24vbWFuYWdlLXJlc291cmNlcy1jb250YWluZXJzLyIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwidG9sZXJhdGlvbnMiOnsiZGVzY3JpcHRpb24iOiJUb2xlcmF0aW9ucyBmb3IgcG9kIHNjaGVkdWxpbmdcblVzZXMgc3RhbmRhcmQgY29yZXYxLlRvbGVyYXRpb24iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlRoZSBwb2QgdGhpcyBUb2xlcmF0aW9uIGlzIGF0dGFjaGVkIHRvIHRvbGVyYXRlcyBhbnkgdGFpbnQgdGhhdCBtYXRjaGVzXG50aGUgdHJpcGxlIFx1MDAzY2tleSx2YWx1ZSxlZmZlY3RcdTAwM2UgdXNpbmcgdGhlIG1hdGNoaW5nIG9wZXJhdG9yIFx1MDAzY29wZXJhdG9yXHUwMDNlLiIsInByb3BlcnRpZXMiOnsiZWZmZWN0Ijp7ImRlc2NyaXB0aW9uIjoiRWZmZWN0IGluZGljYXRlcyB0aGUgdGFpbnQgZWZmZWN0IHRvIG1hdGNoLiBFbXB0eSBtZWFucyBtYXRjaCBhbGwgdGFpbnQgZWZmZWN0cy5cbldoZW4gc3BlY2lmaWVkLCBhbGxvd2VkIHZhbHVlcyBhcmUgTm9TY2hlZHVsZSwgUHJlZmVyTm9TY2hlZHVsZSBhbmQgTm9FeGVjdXRlLiIsInR5cGUiOiJzdHJpbmcifSwia2V5Ijp7ImRlc2NyaXB0aW9uIjoiS2V5IGlzIHRoZSB0YWludCBrZXkgdGhhdCB0aGUgdG9sZXJhdGlvbiBhcHBsaWVzIHRvLiBFbXB0eSBtZWFucyBtYXRjaCBhbGwgdGFpbnQga2V5cy5cbklmIHRoZSBrZXkgaXMgZW1wdHksIG9wZXJhdG9yIG11c3QgYmUgRXhpc3RzOyB0aGlzIGNvbWJpbmF0aW9uIG1lYW5zIHRvIG1hdGNoIGFsbCB2YWx1ZXMgYW5kIGFsbCBrZXlzLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJPcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIHRoZSB2YWx1ZS5cblZhbGlkIG9wZXJhdG9ycyBhcmUgRXhpc3RzIGFuZCBFcXVhbC4gRGVmYXVsdHMgdG8gRXF1YWwuXG5FeGlzdHMgaXMgZXF1aXZhbGVudCB0byB3aWxkY2FyZCBmb3IgdmFsdWUsIHNvIHRoYXQgYSBwb2QgY2FuXG50b2xlcmF0ZSBhbGwgdGFpbnRzIG9mIGEgcGFydGljdWxhciBjYXRlZ29yeS4iLCJ0eXBlIjoic3RyaW5nIn0sInRvbGVyYXRpb25TZWNvbmRzIjp7ImRlc2NyaXB0aW9uIjoiVG9sZXJhdGlvblNlY29uZHMgcmVwcmVzZW50cyB0aGUgcGVyaW9kIG9mIHRpbWUgdGhlIHRvbGVyYXRpb24gKHdoaWNoIG11c3QgYmVcbm9mIGVmZmVjdCBOb0V4ZWN1dGUsIG90aGVyd2lzZSB0aGlzIGZpZWxkIGlzIGlnbm9yZWQpIHRvbGVyYXRlcyB0aGUgdGFpbnQuIEJ5IGRlZmF1bHQsXG5pdCBpcyBub3Qgc2V0LCB3aGljaCBtZWFucyB0b2xlcmF0ZSB0aGUgdGFpbnQgZm9yZXZlciAoZG8gbm90IGV2aWN0KS4gWmVybyBhbmRcbm5lZ2F0aXZlIHZhbHVlcyB3aWxsIGJlIHRyZWF0ZWQgYXMgMCAoZXZpY3QgaW1tZWRpYXRlbHkpIGJ5IHRoZSBzeXN0ZW0uIiwiZm9ybWF0IjoiaW50NjQiLCJ0eXBlIjoiaW50ZWdlciJ9LCJ2YWx1ZSI6eyJkZXNjcmlwdGlvbiI6IlZhbHVlIGlzIHRoZSB0YWludCB2YWx1ZSB0aGUgdG9sZXJhdGlvbiBtYXRjaGVzIHRvLlxuSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cywgdGhlIHZhbHVlIHNob3VsZCBiZSBlbXB0eSwgb3RoZXJ3aXNlIGp1c3QgYSByZWd1bGFyIHN0cmluZy4iLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJ0b3BvbG9neVNwcmVhZENvbnN0cmFpbnRzIjp7ImRlc2NyaXB0aW9uIjoiVG9wb2xvZ3kgc3ByZWFkIGNvbnN0cmFpbnRzIChjYW4gYmUgYWRkZWQgd2l0aG91dCBBUEkgdmVyc2lvbiBidW1wKVxuVXNlcyBzdGFuZGFyZCBjb3JldjEuVG9wb2xvZ3lTcHJlYWRDb25zdHJhaW50IiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJUb3BvbG9neVNwcmVhZENvbnN0cmFpbnQgc3BlY2lmaWVzIGhvdyB0byBzcHJlYWQgbWF0Y2hpbmcgcG9kcyBhbW9uZyB0aGUgZ2l2ZW4gdG9wb2xvZ3kuIiwicHJvcGVydGllcyI6eyJsYWJlbFNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiTGFiZWxTZWxlY3RvciBpcyB1c2VkIHRvIGZpbmQgbWF0Y2hpbmcgcG9kcy5cblBvZHMgdGhhdCBtYXRjaCB0aGlzIGxhYmVsIHNlbGVjdG9yIGFyZSBjb3VudGVkIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvZHNcbmluIHRoZWlyIGNvcnJlc3BvbmRpbmcgdG9wb2xvZ3kgZG9tYWluLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3QgdGhlIHBvZHMgb3ZlciB3aGljaFxuc3ByZWFkaW5nIHdpbGwgYmUgY2FsY3VsYXRlZC4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgQU5EZWQgd2l0aCBsYWJlbFNlbGVjdG9yXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgb3ZlciB3aGljaCBzcHJlYWRpbmcgd2lsbCBiZSBjYWxjdWxhdGVkXG5mb3IgdGhlIGluY29taW5nIHBvZC4gVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIE1hdGNoTGFiZWxLZXlzIGFuZCBMYWJlbFNlbGVjdG9yLlxuTWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIExhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LlxuS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZyBwb2QgbGFiZWxzIHdpbGxcbmJlIGlnbm9yZWQuIEEgbnVsbCBvciBlbXB0eSBsaXN0IG1lYW5zIG9ubHkgbWF0Y2ggYWdhaW5zdCBsYWJlbFNlbGVjdG9yLlxuXG5UaGlzIGlzIGEgYmV0YSBmaWVsZCBhbmQgcmVxdWlyZXMgdGhlIE1hdGNoTGFiZWxLZXlzSW5Qb2RUb3BvbG9neVNwcmVhZCBmZWF0dXJlIGdhdGUgdG8gYmUgZW5hYmxlZCAoZW5hYmxlZCBieSBkZWZhdWx0KS4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF4U2tldyI6eyJkZXNjcmlwdGlvbiI6Ik1heFNrZXcgZGVzY3JpYmVzIHRoZSBkZWdyZWUgdG8gd2hpY2ggcG9kcyBtYXkgYmUgdW5ldmVubHkgZGlzdHJpYnV0ZWQuXG5XaGVuIGB3aGVuVW5zYXRpc2ZpYWJsZT1Eb05vdFNjaGVkdWxlYCwgaXQgaXMgdGhlIG1heGltdW0gcGVybWl0dGVkIGRpZmZlcmVuY2VcbmJldHdlZW4gdGhlIG51bWJlciBvZiBtYXRjaGluZyBwb2RzIGluIHRoZSB0YXJnZXQgdG9wb2xvZ3kgYW5kIHRoZSBnbG9iYWwgbWluaW11bS5cblRoZSBnbG9iYWwgbWluaW11bSBpcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWF0Y2hpbmcgcG9kcyBpbiBhbiBlbGlnaWJsZSBkb21haW5cbm9yIHplcm8gaWYgdGhlIG51bWJlciBvZiBlbGlnaWJsZSBkb21haW5zIGlzIGxlc3MgdGhhbiBNaW5Eb21haW5zLlxuRm9yIGV4YW1wbGUsIGluIGEgMy16b25lIGNsdXN0ZXIsIE1heFNrZXcgaXMgc2V0IHRvIDEsIGFuZCBwb2RzIHdpdGggdGhlIHNhbWVcbmxhYmVsU2VsZWN0b3Igc3ByZWFkIGFzIDIvMi8xOlxuSW4gdGhpcyBjYXNlLCB0aGUgZ2xvYmFsIG1pbmltdW0gaXMgMS5cbnwgem9uZTEgfCB6b25lMiB8IHpvbmUzIHxcbnwgIFAgUCAgfCAgUCBQICB8ICAgUCAgIHxcbi0gaWYgTWF4U2tldyBpcyAxLCBpbmNvbWluZyBwb2QgY2FuIG9ubHkgYmUgc2NoZWR1bGVkIHRvIHpvbmUzIHRvIGJlY29tZSAyLzIvMjtcbnNjaGVkdWxpbmcgaXQgb250byB6b25lMSh6b25lMikgd291bGQgbWFrZSB0aGUgQWN0dWFsU2tldygzLTEpIG9uIHpvbmUxKHpvbmUyKVxudmlvbGF0ZSBNYXhTa2V3KDEpLlxuLSBpZiBNYXhTa2V3IGlzIDIsIGluY29taW5nIHBvZCBjYW4gYmUgc2NoZWR1bGVkIG9udG8gYW55IHpvbmUuXG5XaGVuIGB3aGVuVW5zYXRpc2ZpYWJsZT1TY2hlZHVsZUFueXdheWAsIGl0IGlzIHVzZWQgdG8gZ2l2ZSBoaWdoZXIgcHJlY2VkZW5jZVxudG8gdG9wb2xvZ2llcyB0aGF0IHNhdGlzZnkgaXQuXG5JdCdzIGEgcmVxdWlyZWQgZmllbGQuIERlZmF1bHQgdmFsdWUgaXMgMSBhbmQgMCBpcyBub3QgYWxsb3dlZC4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn0sIm1pbkRvbWFpbnMiOnsiZGVzY3JpcHRpb24iOiJNaW5Eb21haW5zIGluZGljYXRlcyBhIG1pbmltdW0gbnVtYmVyIG9mIGVsaWdpYmxlIGRvbWFpbnMuXG5XaGVuIHRoZSBudW1iZXIgb2YgZWxpZ2libGUgZG9tYWlucyB3aXRoIG1hdGNoaW5nIHRvcG9sb2d5IGtleXMgaXMgbGVzcyB0aGFuIG1pbkRvbWFpbnMsXG5Qb2QgVG9wb2xvZ3kgU3ByZWFkIHRyZWF0cyBcImdsb2JhbCBtaW5pbXVtXCIgYXMgMCwgYW5kIHRoZW4gdGhlIGNhbGN1bGF0aW9uIG9mIFNrZXcgaXMgcGVyZm9ybWVkLlxuQW5kIHdoZW4gdGhlIG51bWJlciBvZiBlbGlnaWJsZSBkb21haW5zIHdpdGggbWF0Y2hpbmcgdG9wb2xvZ3kga2V5cyBlcXVhbHMgb3IgZ3JlYXRlciB0aGFuIG1pbkRvbWFpbnMsXG50aGlzIHZhbHVlIGhhcyBubyBlZmZlY3Qgb24gc2NoZWR1bGluZy5cbkFzIGEgcmVzdWx0LCB3aGVuIHRoZSBudW1iZXIgb2YgZWxpZ2libGUgZG9tYWlucyBpcyBsZXNzIHRoYW4gbWluRG9tYWlucyxcbnNjaGVkdWxlciB3b24ndCBzY2hlZHVsZSBtb3JlIHRoYW4gbWF4U2tldyBQb2RzIHRvIHRob3NlIGRvbWFpbnMuXG5JZiB2YWx1ZSBpcyBuaWwsIHRoZSBjb25zdHJhaW50IGJlaGF2ZXMgYXMgaWYgTWluRG9tYWlucyBpcyBlcXVhbCB0byAxLlxuVmFsaWQgdmFsdWVzIGFyZSBpbnRlZ2VycyBncmVhdGVyIHRoYW4gMC5cbldoZW4gdmFsdWUgaXMgbm90IG5pbCwgV2hlblVuc2F0aXNmaWFibGUgbXVzdCBiZSBEb05vdFNjaGVkdWxlLlxuXG5Gb3IgZXhhbXBsZSwgaW4gYSAzLXpvbmUgY2x1c3RlciwgTWF4U2tldyBpcyBzZXQgdG8gMiwgTWluRG9tYWlucyBpcyBzZXQgdG8gNSBhbmQgcG9kcyB3aXRoIHRoZSBzYW1lXG5sYWJlbFNlbGVjdG9yIHNwcmVhZCBhcyAyLzIvMjpcbnwgem9uZTEgfCB6b25lMiB8IHpvbmUzIHxcbnwgIFAgUCAgfCAgUCBQICB8ICBQIFAgIHxcblRoZSBudW1iZXIgb2YgZG9tYWlucyBpcyBsZXNzIHRoYW4gNShNaW5Eb21haW5zKSwgc28gXCJnbG9iYWwgbWluaW11bVwiIGlzIHRyZWF0ZWQgYXMgMC5cbkluIHRoaXMgc2l0dWF0aW9uLCBuZXcgcG9kIHdpdGggdGhlIHNhbWUgbGFiZWxTZWxlY3RvciBjYW5ub3QgYmUgc2NoZWR1bGVkLFxuYmVjYXVzZSBjb21wdXRlZCBza2V3IHdpbGwgYmUgMygzIC0gMCkgaWYgbmV3IFBvZCBpcyBzY2hlZHVsZWQgdG8gYW55IG9mIHRoZSB0aHJlZSB6b25lcyxcbml0IHdpbGwgdmlvbGF0ZSBNYXhTa2V3LiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifSwibm9kZUFmZmluaXR5UG9saWN5Ijp7ImRlc2NyaXB0aW9uIjoiTm9kZUFmZmluaXR5UG9saWN5IGluZGljYXRlcyBob3cgd2Ugd2lsbCB0cmVhdCBQb2QncyBub2RlQWZmaW5pdHkvbm9kZVNlbGVjdG9yXG53aGVuIGNhbGN1bGF0aW5nIHBvZCB0b3BvbG9neSBzcHJlYWQgc2tldy4gT3B0aW9ucyBhcmU6XG4tIEhvbm9yOiBvbmx5IG5vZGVzIG1hdGNoaW5nIG5vZGVBZmZpbml0eS9ub2RlU2VsZWN0b3IgYXJlIGluY2x1ZGVkIGluIHRoZSBjYWxjdWxhdGlvbnMuXG4tIElnbm9yZTogbm9kZUFmZmluaXR5L25vZGVTZWxlY3RvciBhcmUgaWdub3JlZC4gQWxsIG5vZGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgY2FsY3VsYXRpb25zLlxuXG5JZiB0aGlzIHZhbHVlIGlzIG5pbCwgdGhlIGJlaGF2aW9yIGlzIGVxdWl2YWxlbnQgdG8gdGhlIEhvbm9yIHBvbGljeS4iLCJ0eXBlIjoic3RyaW5nIn0sIm5vZGVUYWludHNQb2xpY3kiOnsiZGVzY3JpcHRpb24iOiJOb2RlVGFpbnRzUG9saWN5IGluZGljYXRlcyBob3cgd2Ugd2lsbCB0cmVhdCBub2RlIHRhaW50cyB3aGVuIGNhbGN1bGF0aW5nXG5wb2QgdG9wb2xvZ3kgc3ByZWFkIHNrZXcuIE9wdGlvbnMgYXJlOlxuLSBIb25vcjogbm9kZXMgd2l0aG91dCB0YWludHMsIGFsb25nIHdpdGggdGFpbnRlZCBub2RlcyBmb3Igd2hpY2ggdGhlIGluY29taW5nIHBvZFxuaGFzIGEgdG9sZXJhdGlvbiwgYXJlIGluY2x1ZGVkLlxuLSBJZ25vcmU6IG5vZGUgdGFpbnRzIGFyZSBpZ25vcmVkLiBBbGwgbm9kZXMgYXJlIGluY2x1ZGVkLlxuXG5JZiB0aGlzIHZhbHVlIGlzIG5pbCwgdGhlIGJlaGF2aW9yIGlzIGVxdWl2YWxlbnQgdG8gdGhlIElnbm9yZSBwb2xpY3kuIiwidHlwZSI6InN0cmluZyJ9LCJ0b3BvbG9neUtleSI6eyJkZXNjcmlwdGlvbiI6IlRvcG9sb2d5S2V5IGlzIHRoZSBrZXkgb2Ygbm9kZSBsYWJlbHMuIE5vZGVzIHRoYXQgaGF2ZSBhIGxhYmVsIHdpdGggdGhpcyBrZXlcbmFuZCBpZGVudGljYWwgdmFsdWVzIGFyZSBjb25zaWRlcmVkIHRvIGJlIGluIHRoZSBzYW1lIHRvcG9sb2d5LlxuV2UgY29uc2lkZXIgZWFjaCBcdTAwM2NrZXksIHZhbHVlXHUwMDNlIGFzIGEgXCJidWNrZXRcIiwgYW5kIHRyeSB0byBwdXQgYmFsYW5jZWQgbnVtYmVyXG5vZiBwb2RzIGludG8gZWFjaCBidWNrZXQuXG5XZSBkZWZpbmUgYSBkb21haW4gYXMgYSBwYXJ0aWN1bGFyIGluc3RhbmNlIG9mIGEgdG9wb2xvZ3kuXG5BbHNvLCB3ZSBkZWZpbmUgYW4gZWxpZ2libGUgZG9tYWluIGFzIGEgZG9tYWluIHdob3NlIG5vZGVzIG1lZXQgdGhlIHJlcXVpcmVtZW50cyBvZlxubm9kZUFmZmluaXR5UG9saWN5IGFuZCBub2RlVGFpbnRzUG9saWN5LlxuZS5nLiBJZiBUb3BvbG9neUtleSBpcyBcImt1YmVybmV0ZXMuaW8vaG9zdG5hbWVcIiwgZWFjaCBOb2RlIGlzIGEgZG9tYWluIG9mIHRoYXQgdG9wb2xvZ3kuXG5BbmQsIGlmIFRvcG9sb2d5S2V5IGlzIFwidG9wb2xvZ3kua3ViZXJuZXRlcy5pby96b25lXCIsIGVhY2ggem9uZSBpcyBhIGRvbWFpbiBvZiB0aGF0IHRvcG9sb2d5LlxuSXQncyBhIHJlcXVpcmVkIGZpZWxkLiIsInR5cGUiOiJzdHJpbmcifSwid2hlblVuc2F0aXNmaWFibGUiOnsiZGVzY3JpcHRpb24iOiJXaGVuVW5zYXRpc2ZpYWJsZSBpbmRpY2F0ZXMgaG93IHRvIGRlYWwgd2l0aCBhIHBvZCBpZiBpdCBkb2Vzbid0IHNhdGlzZnlcbnRoZSBzcHJlYWQgY29uc3RyYWludC5cbi0gRG9Ob3RTY2hlZHVsZSAoZGVmYXVsdCkgdGVsbHMgdGhlIHNjaGVkdWxlciBub3QgdG8gc2NoZWR1bGUgaXQuXG4tIFNjaGVkdWxlQW55d2F5IHRlbGxzIHRoZSBzY2hlZHVsZXIgdG8gc2NoZWR1bGUgdGhlIHBvZCBpbiBhbnkgbG9jYXRpb24sXG4gIGJ1dCBnaXZpbmcgaGlnaGVyIHByZWNlZGVuY2UgdG8gdG9wb2xvZ2llcyB0aGF0IHdvdWxkIGhlbHAgcmVkdWNlIHRoZVxuICBza2V3LlxuQSBjb25zdHJhaW50IGlzIGNvbnNpZGVyZWQgXCJVbnNhdGlzZmlhYmxlXCIgZm9yIGFuIGluY29taW5nIHBvZFxuaWYgYW5kIG9ubHkgaWYgZXZlcnkgcG9zc2libGUgbm9kZSBhc3NpZ25tZW50IGZvciB0aGF0IHBvZCB3b3VsZCB2aW9sYXRlXG5cIk1heFNrZXdcIiBvbiBzb21lIHRvcG9sb2d5LlxuRm9yIGV4YW1wbGUsIGluIGEgMy16b25lIGNsdXN0ZXIsIE1heFNrZXcgaXMgc2V0IHRvIDEsIGFuZCBwb2RzIHdpdGggdGhlIHNhbWVcbmxhYmVsU2VsZWN0b3Igc3ByZWFkIGFzIDMvMS8xOlxufCB6b25lMSB8IHpvbmUyIHwgem9uZTMgfFxufCBQIFAgUCB8ICAgUCAgIHwgICBQICAgfFxuSWYgV2hlblVuc2F0aXNmaWFibGUgaXMgc2V0IHRvIERvTm90U2NoZWR1bGUsIGluY29taW5nIHBvZCBjYW4gb25seSBiZSBzY2hlZHVsZWRcbnRvIHpvbmUyKHpvbmUzKSB0byBiZWNvbWUgMy8yLzEoMy8xLzIpIGFzIEFjdHVhbFNrZXcoMi0xKSBvbiB6b25lMih6b25lMykgc2F0aXNmaWVzXG5NYXhTa2V3KDEpLiBJbiBvdGhlciB3b3JkcywgdGhlIGNsdXN0ZXIgY2FuIHN0aWxsIGJlIGltYmFsYW5jZWQsIGJ1dCBzY2hlZHVsZXJcbndvbid0IG1ha2UgaXQgKm1vcmUqIGltYmFsYW5jZWQuXG5JdCdzIGEgcmVxdWlyZWQgZmllbGQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibWF4U2tldyIsInRvcG9sb2d5S2V5Iiwid2hlblVuc2F0aXNmaWFibGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifX0sInR5cGUiOiJvYmplY3QifSwibGxhbWFTdGFjayI6eyJkZXNjcmlwdGlvbiI6IkxsYW1hIFN0YWNrIGNvbnRhaW5lciBzZXR0aW5ncy4iLCJwcm9wZXJ0aWVzIjp7InJlc291cmNlcyI6eyJkZXNjcmlwdGlvbiI6IlJlc291cmNlIHJlcXVpcmVtZW50cyAoQ1BVLCBtZW1vcnkpXG5Vc2VzIHN0YW5kYXJkIGNvcmV2MS5SZXNvdXJjZVJlcXVpcmVtZW50cyIsInByb3BlcnRpZXMiOnsiY2xhaW1zIjp7ImRlc2NyaXB0aW9uIjoiQ2xhaW1zIGxpc3RzIHRoZSBuYW1lcyBvZiByZXNvdXJjZXMsIGRlZmluZWQgaW4gc3BlYy5yZXNvdXJjZUNsYWltcyxcbnRoYXQgYXJlIHVzZWQgYnkgdGhpcyBjb250YWluZXIuXG5cblRoaXMgaXMgYW4gYWxwaGEgZmllbGQgYW5kIHJlcXVpcmVzIGVuYWJsaW5nIHRoZVxuRHluYW1pY1Jlc291cmNlQWxsb2NhdGlvbiBmZWF0dXJlIGdhdGUuXG5cblRoaXMgZmllbGQgaXMgaW1tdXRhYmxlLiBJdCBjYW4gb25seSBiZSBzZXQgZm9yIGNvbnRhaW5lcnMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJSZXNvdXJjZUNsYWltIHJlZmVyZW5jZXMgb25lIGVudHJ5IGluIFBvZFNwZWMuUmVzb3VyY2VDbGFpbXMuIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIG9uZSBlbnRyeSBpbiBwb2Quc3BlYy5yZXNvdXJjZUNsYWltcyBvZlxudGhlIFBvZCB3aGVyZSB0aGlzIGZpZWxkIGlzIHVzZWQuIEl0IG1ha2VzIHRoYXQgcmVzb3VyY2UgYXZhaWxhYmxlXG5pbnNpZGUgYSBjb250YWluZXIuIiwidHlwZSI6InN0cmluZyJ9LCJyZXF1ZXN0Ijp7ImRlc2NyaXB0aW9uIjoiUmVxdWVzdCBpcyB0aGUgbmFtZSBjaG9zZW4gZm9yIGEgcmVxdWVzdCBpbiB0aGUgcmVmZXJlbmNlZCBjbGFpbS5cbklmIGVtcHR5LCBldmVyeXRoaW5nIGZyb20gdGhlIGNsYWltIGlzIG1hZGUgYXZhaWxhYmxlLCBvdGhlcndpc2Vcbm9ubHkgdGhlIHJlc3VsdCBvZiB0aGlzIHJlcXVlc3QuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LW1hcC1rZXlzIjpbIm5hbWUiXSwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6Im1hcCJ9LCJsaW1pdHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX0sImRlc2NyaXB0aW9uIjoiTGltaXRzIGRlc2NyaWJlcyB0aGUgbWF4aW11bSBhbW91bnQgb2YgY29tcHV0ZSByZXNvdXJjZXMgYWxsb3dlZC5cbk1vcmUgaW5mbzogaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvY29uZmlndXJhdGlvbi9tYW5hZ2UtcmVzb3VyY2VzLWNvbnRhaW5lcnMvIiwidHlwZSI6Im9iamVjdCJ9LCJyZXF1ZXN0cyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwiZGVzY3JpcHRpb24iOiJSZXF1ZXN0cyBkZXNjcmliZXMgdGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbXB1dGUgcmVzb3VyY2VzIHJlcXVpcmVkLlxuSWYgUmVxdWVzdHMgaXMgb21pdHRlZCBmb3IgYSBjb250YWluZXIsIGl0IGRlZmF1bHRzIHRvIExpbWl0cyBpZiB0aGF0IGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLFxub3RoZXJ3aXNlIHRvIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdmFsdWUuIFJlcXVlc3RzIGNhbm5vdCBleGNlZWQgTGltaXRzLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL21hbmFnZS1yZXNvdXJjZXMtY29udGFpbmVycy8iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In0sIm1jcFNlcnZlciI6eyJkZXNjcmlwdGlvbiI6Ik1DUCBzZXJ2ZXIgY29udGFpbmVyIHNldHRpbmdzLiIsInByb3BlcnRpZXMiOnsicmVzb3VyY2VzIjp7ImRlc2NyaXB0aW9uIjoiUmVzb3VyY2UgcmVxdWlyZW1lbnRzIChDUFUsIG1lbW9yeSlcblVzZXMgc3RhbmRhcmQgY29yZXYxLlJlc291cmNlUmVxdWlyZW1lbnRzIiwicHJvcGVydGllcyI6eyJjbGFpbXMiOnsiZGVzY3JpcHRpb24iOiJDbGFpbXMgbGlzdHMgdGhlIG5hbWVzIG9mIHJlc291cmNlcywgZGVmaW5lZCBpbiBzcGVjLnJlc291cmNlQ2xhaW1zLFxudGhhdCBhcmUgdXNlZCBieSB0aGlzIGNvbnRhaW5lci5cblxuVGhpcyBpcyBhbiBhbHBoYSBmaWVsZCBhbmQgcmVxdWlyZXMgZW5hYmxpbmcgdGhlXG5EeW5hbWljUmVzb3VyY2VBbGxvY2F0aW9uIGZlYXR1cmUgZ2F0ZS5cblxuVGhpcyBmaWVsZCBpcyBpbW11dGFibGUuIEl0IGNhbiBvbmx5IGJlIHNldCBmb3IgY29udGFpbmVycy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlJlc291cmNlQ2xhaW0gcmVmZXJlbmNlcyBvbmUgZW50cnkgaW4gUG9kU3BlYy5SZXNvdXJjZUNsYWltcy4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG11c3QgbWF0Y2ggdGhlIG5hbWUgb2Ygb25lIGVudHJ5IGluIHBvZC5zcGVjLnJlc291cmNlQ2xhaW1zIG9mXG50aGUgUG9kIHdoZXJlIHRoaXMgZmllbGQgaXMgdXNlZC4gSXQgbWFrZXMgdGhhdCByZXNvdXJjZSBhdmFpbGFibGVcbmluc2lkZSBhIGNvbnRhaW5lci4iLCJ0eXBlIjoic3RyaW5nIn0sInJlcXVlc3QiOnsiZGVzY3JpcHRpb24iOiJSZXF1ZXN0IGlzIHRoZSBuYW1lIGNob3NlbiBmb3IgYSByZXF1ZXN0IGluIHRoZSByZWZlcmVuY2VkIGNsYWltLlxuSWYgZW1wdHksIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgY2xhaW0gaXMgbWFkZSBhdmFpbGFibGUsIG90aGVyd2lzZVxub25seSB0aGUgcmVzdWx0IG9mIHRoaXMgcmVxdWVzdC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtbWFwLWtleXMiOlsibmFtZSJdLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoibWFwIn0sImxpbWl0cyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwiZGVzY3JpcHRpb24iOiJMaW1pdHMgZGVzY3JpYmVzIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBjb21wdXRlIHJlc291cmNlcyBhbGxvd2VkLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL21hbmFnZS1yZXNvdXJjZXMtY29udGFpbmVycy8iLCJ0eXBlIjoib2JqZWN0In0sInJlcXVlc3RzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJkZXNjcmlwdGlvbiI6IlJlcXVlc3RzIGRlc2NyaWJlcyB0aGUgbWluaW11bSBhbW91bnQgb2YgY29tcHV0ZSByZXNvdXJjZXMgcmVxdWlyZWQuXG5JZiBSZXF1ZXN0cyBpcyBvbWl0dGVkIGZvciBhIGNvbnRhaW5lciwgaXQgZGVmYXVsdHMgdG8gTGltaXRzIGlmIHRoYXQgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQsXG5vdGhlcndpc2UgdG8gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCB2YWx1ZS4gUmVxdWVzdHMgY2Fubm90IGV4Y2VlZCBMaW1pdHMuXG5Nb3JlIGluZm86IGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbmZpZ3VyYXRpb24vbWFuYWdlLXJlc291cmNlcy1jb250YWluZXJzLyIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwiaW50cm9zcGVjdGlvbkVuYWJsZWQiOnsiZGVzY3JpcHRpb24iOiJFbmFibGUgaW50cm9zcGVjdGlvbiBmZWF0dXJlcyIsInR5cGUiOiJib29sZWFuIn0sImxvZ0xldmVsIjp7ImRlZmF1bHQiOiJJTkZPIiwiZGVzY3JpcHRpb24iOiJMb2cgbGV2ZWwuIFZhbGlkIG9wdGlvbnMgYXJlIERFQlVHLCBJTkZPLCBXQVJOSU5HLCBFUlJPUiBhbmQgQ1JJVElDQUwuIERlZmF1bHQ6IFwiSU5GT1wiLiIsImVudW0iOlsiREVCVUciLCJJTkZPIiwiV0FSTklORyIsIkVSUk9SIiwiQ1JJVElDQUwiXSwidHlwZSI6InN0cmluZyJ9LCJwcm94eUNvbmZpZyI6eyJkZXNjcmlwdGlvbiI6IlByb3h5IHNldHRpbmdzIGZvciBjb25uZWN0aW5nIHRvIGV4dGVybmFsIHNlcnZlcnMsIHN1Y2ggYXMgTExNIHByb3ZpZGVycy4iLCJwcm9wZXJ0aWVzIjp7InByb3h5Q0FDZXJ0aWZpY2F0ZSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBjb25maWdtYXAgaG9sZGluZyBwcm94eSBDQSBjZXJ0aWZpY2F0ZSIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSByZWZlcmVudC5cblRoaXMgZmllbGQgaXMgZWZmZWN0aXZlbHkgcmVxdWlyZWQsIGJ1dCBkdWUgdG8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaXNcbmFsbG93ZWQgdG8gYmUgZW1wdHkuIEluc3RhbmNlcyBvZiB0aGlzIHR5cGUgd2l0aCBhbiBlbXB0eSB2YWx1ZSBoZXJlIGFyZVxuYWxtb3N0IGNlcnRhaW5seSB3cm9uZy5cbk1vcmUgaW5mbzogaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvb3ZlcnZpZXcvd29ya2luZy13aXRoLW9iamVjdHMvbmFtZXMvI25hbWVzIiwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJwcm94eVVSTCI6eyJkZXNjcmlwdGlvbiI6IlByb3h5IFVSTCwgZS5nLiBodHRwczovL3Byb3h5LmV4YW1wbGUuY29tOjgwODBcbklmIG5vdCBzcGVjaWZpZWQsIHRoZSBjbHVzdGVyIHdpZGUgcHJveHkgd2lsbCBiZSB1c2VkLCB0aG91Z2ggZW52IHZhciBcImh0dHBzX3Byb3h5XCIuIiwicGF0dGVybiI6Il5odHRwcz86Ly8uKiQiLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sInF1ZXJ5RmlsdGVycyI6eyJkZXNjcmlwdGlvbiI6IlF1ZXJ5IGZpbHRlcnMiLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlF1ZXJ5RmlsdGVyc1NwZWMgZGVmaW5lcyBmaWx0ZXJzIHRvIG1hbmlwdWxhdGUgcXVlc3Rpb25zL3F1ZXJpZXMuIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiRmlsdGVyIG5hbWUuIiwidHlwZSI6InN0cmluZyJ9LCJwYXR0ZXJuIjp7ImRlc2NyaXB0aW9uIjoiRmlsdGVyIHBhdHRlcm4uIiwidHlwZSI6InN0cmluZyJ9LCJyZXBsYWNlV2l0aCI6eyJkZXNjcmlwdGlvbiI6IlJlcGxhY2VtZW50IGZvciB0aGUgbWF0Y2hlZCBwYXR0ZXJuLiIsInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sInF1ZXJ5U3lzdGVtUHJvbXB0Ijp7ImRlc2NyaXB0aW9uIjoiQ3VzdG9tIHN5c3RlbSBwcm9tcHQgZm9yIExMTSBxdWVyaWVzLiBJZiBub3Qgc3BlY2lmaWVkLCB1c2VzIHRoZSBkZWZhdWx0IE9wZW5TaGlmdCBMaWdodHNwZWVkIHByb21wdC4iLCJ0eXBlIjoic3RyaW5nIn0sInF1b3RhSGFuZGxlcnNDb25maWciOnsiZGVzY3JpcHRpb24iOiJMTE0gVG9rZW4gUXVvdGEgQ29uZmlndXJhdGlvbiIsInByb3BlcnRpZXMiOnsiZW5hYmxlVG9rZW5IaXN0b3J5Ijp7ImRlc2NyaXB0aW9uIjoiRW5hYmxlIHRva2VuIGhpc3RvcnkiLCJ0eXBlIjoiYm9vbGVhbiJ9LCJsaW1pdGVyc0NvbmZpZyI6eyJkZXNjcmlwdGlvbiI6IlRva2VuIHF1b3RhIGxpbWl0ZXJzIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJMaW1pdGVyQ29uZmlnIGRlZmluZXMgc2V0dGluZ3MgZm9yIGEgdG9rZW4gcXVvdGEgbGltaXRlciIsInByb3BlcnRpZXMiOnsiaW5pdGlhbFF1b3RhIjp7ImRlc2NyaXB0aW9uIjoiSW5pdGlhbCB2YWx1ZSBvZiB0aGUgdG9rZW4gcXVvdGEiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBvZiB0aGUgbGltaXRlciIsInR5cGUiOiJzdHJpbmcifSwicGVyaW9kIjp7ImRlc2NyaXB0aW9uIjoiUGVyaW9kIG9mIHRpbWUgdGhlIHRva2VuIHF1b3RhIGlzIGZvciIsInBhdHRlcm4iOiJeKDFcXHMrKHNlY29uZHxtaW51dGV8aG91cnxkYXl8bW9udGh8eWVhcnxzfG1pbnxofGR8bXx5KXwoWzItOV1bMC05XSp8WzEtOV1bMC05XXsyLH0pXFxzKyhzZWNvbmRzfG1pbnV0ZXN8aG91cnN8ZGF5c3xtb250aHN8eWVhcnN8c3xtaW58aHxkfG18eSkpJCIsInR5cGUiOiJzdHJpbmcifSwicXVvdGFJbmNyZWFzZSI6eyJkZXNjcmlwdGlvbiI6IlRva2VuIHF1b3RhIGluY3JlYXNlIHN0ZXAiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiVHlwZSBvZiB0aGUgbGltaXRlciIsImVudW0iOlsiY2x1c3Rlcl9saW1pdGVyIiwidXNlcl9saW1pdGVyIl0sInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImluaXRpYWxRdW90YSIsIm5hbWUiLCJwZXJpb2QiLCJxdW90YUluY3JlYXNlIiwidHlwZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9fSwidHlwZSI6Im9iamVjdCJ9LCJyYWciOnsiZGVzY3JpcHRpb24iOiJSQUcgZGF0YWJhc2VzIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJSQUdTcGVjIGRlZmluZXMgaG93IHRvIHJldHJpZXZlIGEgUkFHIGRhdGFiYXNlcy4iLCJwcm9wZXJ0aWVzIjp7ImltYWdlIjp7ImRlc2NyaXB0aW9uIjoiVGhlIFVSTCBvZiB0aGUgY29udGFpbmVyIGltYWdlIHRvIHVzZSBhcyBhIFJBRyBzb3VyY2UiLCJ0eXBlIjoic3RyaW5nIn0sImluZGV4SUQiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiVGhlIEluZGV4IElEIG9mIHRoZSBSQUcgZGF0YWJhc2UuIE9ubHkgbmVlZGVkIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBpbmRpY2VzIGluIHRoZSBkYXRhYmFzZS4iLCJ0eXBlIjoic3RyaW5nIn0sImluZGV4UGF0aCI6eyJkZWZhdWx0IjoiL3JhZy92ZWN0b3JfZGIiLCJkZXNjcmlwdGlvbiI6IlRoZSBwYXRoIHRvIHRoZSBSQUcgZGF0YWJhc2UgaW5zaWRlIG9mIHRoZSBjb250YWluZXIgaW1hZ2UiLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJpbWFnZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJzdG9yYWdlIjp7ImRlc2NyaXB0aW9uIjoiUGVyc2lzdGVudCBTdG9yYWdlIENvbmZpZ3VyYXRpb24iLCJwcm9wZXJ0aWVzIjp7ImNsYXNzIjp7ImRlc2NyaXB0aW9uIjoiU3RvcmFnZSBjbGFzcyBvZiB0aGUgcmVxdWVzdGVkIHZvbHVtZSIsInR5cGUiOiJzdHJpbmcifSwic2l6ZSI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sImRlc2NyaXB0aW9uIjoiU2l6ZSBvZiB0aGUgcmVxdWVzdGVkIHZvbHVtZSIsInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfX0sInR5cGUiOiJvYmplY3QifSwidGxzQ29uZmlnIjp7ImRlc2NyaXB0aW9uIjoiVExTIGNvbmZpZ3VyYXRpb24gb2YgdGhlIExpZ2h0c3BlZWQgYmFja2VuZCdzIEhUVFBTIGVuZHBvaW50IiwicHJvcGVydGllcyI6eyJrZXlDZXJ0U2VjcmV0UmVmIjp7ImRlc2NyaXB0aW9uIjoiS2V5Q2VydFNlY3JldFJlZiByZWZlcmVuY2VzIGEgU2VjcmV0IGNvbnRhaW5pbmcgVExTIGNlcnRpZmljYXRlIGFuZCBrZXkuXG5UaGUgU2VjcmV0IG11c3QgY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6XG4gIC0gdGxzLmNydDogU2VydmVyIGNlcnRpZmljYXRlIChQRU0gZm9ybWF0KSAtIFJFUVVJUkVEXG4gIC0gdGxzLmtleTogUHJpdmF0ZSBrZXkgKFBFTSBmb3JtYXQpIC0gUkVRVUlSRURcbiAgLSBjYS5jcnQ6IENBIGNlcnRpZmljYXRlIGZvciBjb25zb2xlIHByb3h5IHRydXN0IChQRU0gZm9ybWF0KSAtIE9QVElPTkFMXG5cbklmIGNhLmNydCBpcyBub3QgcHJvdmlkZWQsIHRoZSBPcGVuU2hpZnQgQ29uc29sZSBwcm94eSB3aWxsIHVzZSB0aGUgZGVmYXVsdCBzeXN0ZW0gdHJ1c3Qgc3RvcmUuIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIHJlZmVyZW50LlxuVGhpcyBmaWVsZCBpcyBlZmZlY3RpdmVseSByZXF1aXJlZCwgYnV0IGR1ZSB0byBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBpc1xuYWxsb3dlZCB0byBiZSBlbXB0eS4gSW5zdGFuY2VzIG9mIHRoaXMgdHlwZSB3aXRoIGFuIGVtcHR5IHZhbHVlIGhlcmUgYXJlXG5hbG1vc3QgY2VydGFpbmx5IHdyb25nLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9vdmVydmlldy93b3JraW5nLXdpdGgtb2JqZWN0cy9uYW1lcy8jbmFtZXMiLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn19LCJ0eXBlIjoib2JqZWN0In0sInRsc1NlY3VyaXR5UHJvZmlsZSI6eyJkZXNjcmlwdGlvbiI6IlRMUyBTZWN1cml0eSBQcm9maWxlIHVzZWQgYnkgQVBJIGVuZHBvaW50cyIsInByb3BlcnRpZXMiOnsiY3VzdG9tIjp7ImRlc2NyaXB0aW9uIjoiY3VzdG9tIGlzIGEgdXNlci1kZWZpbmVkIFRMUyBzZWN1cml0eSBwcm9maWxlLiBCZSBleHRyZW1lbHkgY2FyZWZ1bCB1c2luZyBhIGN1c3RvbVxucHJvZmlsZSBhcyBpbnZhbGlkIGNvbmZpZ3VyYXRpb25zIGNhbiBiZSBjYXRhc3Ryb3BoaWMuIEFuIGV4YW1wbGUgY3VzdG9tIHByb2ZpbGVcbmxvb2tzIGxpa2UgdGhpczpcblxuICBjaXBoZXJzOlxuXG4gICAgLSBFQ0RIRS1FQ0RTQS1DSEFDSEEyMC1QT0xZMTMwNVxuXG4gICAgLSBFQ0RIRS1SU0EtQ0hBQ0hBMjAtUE9MWTEzMDVcblxuICAgIC0gRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2XG5cbiAgICAtIEVDREhFLUVDRFNBLUFFUzEyOC1HQ00tU0hBMjU2XG5cbiAgbWluVExTVmVyc2lvbjogVmVyc2lvblRMUzExIiwibnVsbGFibGUiOnRydWUsInByb3BlcnRpZXMiOnsiY2lwaGVycyI6eyJkZXNjcmlwdGlvbiI6ImNpcGhlcnMgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjaXBoZXIgYWxnb3JpdGhtcyB0aGF0IGFyZSBuZWdvdGlhdGVkXG5kdXJpbmcgdGhlIFRMUyBoYW5kc2hha2UuICBPcGVyYXRvcnMgbWF5IHJlbW92ZSBlbnRyaWVzIHRoZWlyIG9wZXJhbmRzXG5kbyBub3Qgc3VwcG9ydC4gIEZvciBleGFtcGxlLCB0byB1c2UgREVTLUNCQzMtU0hBICAoeWFtbCk6XG5cbiAgY2lwaGVyczpcbiAgICAtIERFUy1DQkMzLVNIQSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaW5UTFNWZXJzaW9uIjp7ImRlc2NyaXB0aW9uIjoibWluVExTVmVyc2lvbiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG1pbmltYWwgdmVyc2lvbiBvZiB0aGUgVExTIHByb3RvY29sXG50aGF0IGlzIG5lZ290aWF0ZWQgZHVyaW5nIHRoZSBUTFMgaGFuZHNoYWtlLiBGb3IgZXhhbXBsZSwgdG8gdXNlIFRMU1xudmVyc2lvbnMgMS4xLCAxLjIgYW5kIDEuMyAoeWFtbCk6XG5cbiAgbWluVExTVmVyc2lvbjogVmVyc2lvblRMUzExXG5cbk5PVEU6IGN1cnJlbnRseSB0aGUgaGlnaGVzdCBtaW5UTFNWZXJzaW9uIGFsbG93ZWQgaXMgVmVyc2lvblRMUzEyIiwiZW51bSI6WyJWZXJzaW9uVExTMTAiLCJWZXJzaW9uVExTMTEiLCJWZXJzaW9uVExTMTIiLCJWZXJzaW9uVExTMTMiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJpbnRlcm1lZGlhdGUiOnsiZGVzY3JpcHRpb24iOiJpbnRlcm1lZGlhdGUgaXMgYSBUTFMgc2VjdXJpdHkgcHJvZmlsZSBiYXNlZCBvbjpcblxuaHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL1NlY3VyaXR5L1NlcnZlcl9TaWRlX1RMUyNJbnRlcm1lZGlhdGVfY29tcGF0aWJpbGl0eV8uMjhyZWNvbW1lbmRlZC4yOVxuXG5hbmQgbG9va3MgbGlrZSB0aGlzICh5YW1sKTpcblxuICBjaXBoZXJzOlxuXG4gICAgLSBUTFNfQUVTXzEyOF9HQ01fU0hBMjU2XG5cbiAgICAtIFRMU19BRVNfMjU2X0dDTV9TSEEzODRcblxuICAgIC0gVExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NlxuXG4gICAgLSBFQ0RIRS1FQ0RTQS1BRVMxMjgtR0NNLVNIQTI1NlxuXG4gICAgLSBFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTZcblxuICAgIC0gRUNESEUtRUNEU0EtQUVTMjU2LUdDTS1TSEEzODRcblxuICAgIC0gRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0XG5cbiAgICAtIEVDREhFLUVDRFNBLUNIQUNIQTIwLVBPTFkxMzA1XG5cbiAgICAtIEVDREhFLVJTQS1DSEFDSEEyMC1QT0xZMTMwNVxuXG4gICAgLSBESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2XG5cbiAgICAtIERIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODRcblxuICBtaW5UTFNWZXJzaW9uOiBWZXJzaW9uVExTMTIiLCJudWxsYWJsZSI6dHJ1ZSwidHlwZSI6Im9iamVjdCJ9LCJtb2Rlcm4iOnsiZGVzY3JpcHRpb24iOiJtb2Rlcm4gaXMgYSBUTFMgc2VjdXJpdHkgcHJvZmlsZSBiYXNlZCBvbjpcblxuaHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL1NlY3VyaXR5L1NlcnZlcl9TaWRlX1RMUyNNb2Rlcm5fY29tcGF0aWJpbGl0eVxuXG5hbmQgbG9va3MgbGlrZSB0aGlzICh5YW1sKTpcblxuICBjaXBoZXJzOlxuXG4gICAgLSBUTFNfQUVTXzEyOF9HQ01fU0hBMjU2XG5cbiAgICAtIFRMU19BRVNfMjU2X0dDTV9TSEEzODRcblxuICAgIC0gVExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NlxuXG4gIG1pblRMU1ZlcnNpb246IFZlcnNpb25UTFMxMyIsIm51bGxhYmxlIjp0cnVlLCJ0eXBlIjoib2JqZWN0In0sIm9sZCI6eyJkZXNjcmlwdGlvbiI6Im9sZCBpcyBhIFRMUyBzZWN1cml0eSBwcm9maWxlIGJhc2VkIG9uOlxuXG5odHRwczovL3dpa2kubW96aWxsYS5vcmcvU2VjdXJpdHkvU2VydmVyX1NpZGVfVExTI09sZF9iYWNrd2FyZF9jb21wYXRpYmlsaXR5XG5cbmFuZCBsb29rcyBsaWtlIHRoaXMgKHlhbWwpOlxuXG4gIGNpcGhlcnM6XG5cbiAgICAtIFRMU19BRVNfMTI4X0dDTV9TSEEyNTZcblxuICAgIC0gVExTX0FFU18yNTZfR0NNX1NIQTM4NFxuXG4gICAgLSBUTFNfQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2XG5cbiAgICAtIEVDREhFLUVDRFNBLUFFUzEyOC1HQ00tU0hBMjU2XG5cbiAgICAtIEVDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NlxuXG4gICAgLSBFQ0RIRS1FQ0RTQS1BRVMyNTYtR0NNLVNIQTM4NFxuXG4gICAgLSBFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODRcblxuICAgIC0gRUNESEUtRUNEU0EtQ0hBQ0hBMjAtUE9MWTEzMDVcblxuICAgIC0gRUNESEUtUlNBLUNIQUNIQTIwLVBPTFkxMzA1XG5cbiAgICAtIERIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTZcblxuICAgIC0gREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NFxuXG4gICAgLSBESEUtUlNBLUNIQUNIQTIwLVBPTFkxMzA1XG5cbiAgICAtIEVDREhFLUVDRFNBLUFFUzEyOC1TSEEyNTZcblxuICAgIC0gRUNESEUtUlNBLUFFUzEyOC1TSEEyNTZcblxuICAgIC0gRUNESEUtRUNEU0EtQUVTMTI4LVNIQVxuXG4gICAgLSBFQ0RIRS1SU0EtQUVTMTI4LVNIQVxuXG4gICAgLSBFQ0RIRS1FQ0RTQS1BRVMyNTYtU0hBMzg0XG5cbiAgICAtIEVDREhFLVJTQS1BRVMyNTYtU0hBMzg0XG5cbiAgICAtIEVDREhFLUVDRFNBLUFFUzI1Ni1TSEFcblxuICAgIC0gRUNESEUtUlNBLUFFUzI1Ni1TSEFcblxuICAgIC0gREhFLVJTQS1BRVMxMjgtU0hBMjU2XG5cbiAgICAtIERIRS1SU0EtQUVTMjU2LVNIQTI1NlxuXG4gICAgLSBBRVMxMjgtR0NNLVNIQTI1NlxuXG4gICAgLSBBRVMyNTYtR0NNLVNIQTM4NFxuXG4gICAgLSBBRVMxMjgtU0hBMjU2XG5cbiAgICAtIEFFUzI1Ni1TSEEyNTZcblxuICAgIC0gQUVTMTI4LVNIQVxuXG4gICAgLSBBRVMyNTYtU0hBXG5cbiAgICAtIERFUy1DQkMzLVNIQVxuXG4gIG1pblRMU1ZlcnNpb246IFZlcnNpb25UTFMxMCIsIm51bGxhYmxlIjp0cnVlLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJ0eXBlIGlzIG9uZSBvZiBPbGQsIEludGVybWVkaWF0ZSwgTW9kZXJuIG9yIEN1c3RvbS4gQ3VzdG9tIHByb3ZpZGVzXG50aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGluZGl2aWR1YWwgVExTIHNlY3VyaXR5IHByb2ZpbGUgcGFyYW1ldGVycy5cbk9sZCwgSW50ZXJtZWRpYXRlIGFuZCBNb2Rlcm4gYXJlIFRMUyBzZWN1cml0eSBwcm9maWxlcyBiYXNlZCBvbjpcblxuaHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL1NlY3VyaXR5L1NlcnZlcl9TaWRlX1RMUyNSZWNvbW1lbmRlZF9jb25maWd1cmF0aW9uc1xuXG5UaGUgcHJvZmlsZXMgYXJlIGludGVudCBiYXNlZCwgc28gdGhleSBtYXkgY2hhbmdlIG92ZXIgdGltZSBhcyBuZXcgY2lwaGVycyBhcmUgZGV2ZWxvcGVkIGFuZCBleGlzdGluZyBjaXBoZXJzXG5hcmUgZm91bmQgdG8gYmUgaW5zZWN1cmUuICBEZXBlbmRpbmcgb24gcHJlY2lzZWx5IHdoaWNoIGNpcGhlcnMgYXJlIGF2YWlsYWJsZSB0byBhIHByb2Nlc3MsIHRoZSBsaXN0IG1heSBiZVxucmVkdWNlZC5cblxuTm90ZSB0aGF0IHRoZSBNb2Rlcm4gcHJvZmlsZSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBiZWNhdXNlIGl0IGlzIG5vdFxueWV0IHdlbGwgYWRvcHRlZCBieSBjb21tb24gc29mdHdhcmUgbGlicmFyaWVzLiIsImVudW0iOlsiT2xkIiwiSW50ZXJtZWRpYXRlIiwiTW9kZXJuIiwiQ3VzdG9tIl0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwidXNlckRhdGFDb2xsZWN0aW9uIjp7ImRlc2NyaXB0aW9uIjoiVXNlciBkYXRhIGNvbGxlY3Rpb24gc3dpdGNoZXMiLCJwcm9wZXJ0aWVzIjp7ImZlZWRiYWNrRGlzYWJsZWQiOnsidHlwZSI6ImJvb2xlYW4ifSwidHJhbnNjcmlwdHNEaXNhYmxlZCI6eyJ0eXBlIjoiYm9vbGVhbiJ9fSwidHlwZSI6Im9iamVjdCJ9fSwicmVxdWlyZWQiOlsiZGVmYXVsdE1vZGVsIiwiZGVmYXVsdFByb3ZpZGVyIl0sInR5cGUiOiJvYmplY3QifSwib2xzRGF0YUNvbGxlY3RvciI6eyJkZXNjcmlwdGlvbiI6Ik9MU0RhdGFDb2xsZWN0b3JTcGVjIGRlZmluZXMgYWxsb3dlZCBPTFMgZGF0YSBjb2xsZWN0b3IgY29uZmlndXJhdGlvbi4iLCJwcm9wZXJ0aWVzIjp7ImxvZ0xldmVsIjp7ImRlZmF1bHQiOiJJTkZPIiwiZGVzY3JpcHRpb24iOiJMb2cgbGV2ZWwuIFZhbGlkIG9wdGlvbnMgYXJlIERFQlVHLCBJTkZPLCBXQVJOSU5HLCBFUlJPUiBhbmQgQ1JJVElDQUwuIERlZmF1bHQ6IFwiSU5GT1wiLiIsImVudW0iOlsiREVCVUciLCJJTkZPIiwiV0FSTklORyIsIkVSUk9SIiwiQ1JJVElDQUwiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9fSwicmVxdWlyZWQiOlsibGxtIiwib2xzIl0sInR5cGUiOiJvYmplY3QifSwic3RhdHVzIjp7ImRlc2NyaXB0aW9uIjoiT0xTQ29uZmlnU3RhdHVzIGRlZmluZXMgdGhlIG9ic2VydmVkIHN0YXRlIG9mIE9MUyBkZXBsb3ltZW50LiIsInByb3BlcnRpZXMiOnsiY29uZGl0aW9ucyI6eyJkZXNjcmlwdGlvbiI6IkNvbmRpdGlvbnMgcmVwcmVzZW50IHRoZSBzdGF0ZSBvZiBpbmRpdmlkdWFsIGNvbXBvbmVudHNcbkFsd2F5cyBwb3B1bGF0ZWQgYWZ0ZXIgZmlyc3QgcmVjb25jaWxpYXRpb24iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkNvbmRpdGlvbiBjb250YWlucyBkZXRhaWxzIGZvciBvbmUgYXNwZWN0IG9mIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaXMgQVBJIFJlc291cmNlLiIsInByb3BlcnRpZXMiOnsibGFzdFRyYW5zaXRpb25UaW1lIjp7ImRlc2NyaXB0aW9uIjoibGFzdFRyYW5zaXRpb25UaW1lIGlzIHRoZSBsYXN0IHRpbWUgdGhlIGNvbmRpdGlvbiB0cmFuc2l0aW9uZWQgZnJvbSBvbmUgc3RhdHVzIHRvIGFub3RoZXIuXG5UaGlzIHNob3VsZCBiZSB3aGVuIHRoZSB1bmRlcmx5aW5nIGNvbmRpdGlvbiBjaGFuZ2VkLiAgSWYgdGhhdCBpcyBub3Qga25vd24sIHRoZW4gdXNpbmcgdGhlIHRpbWUgd2hlbiB0aGUgQVBJIGZpZWxkIGNoYW5nZWQgaXMgYWNjZXB0YWJsZS4iLCJmb3JtYXQiOiJkYXRlLXRpbWUiLCJ0eXBlIjoic3RyaW5nIn0sIm1lc3NhZ2UiOnsiZGVzY3JpcHRpb24iOiJtZXNzYWdlIGlzIGEgaHVtYW4gcmVhZGFibGUgbWVzc2FnZSBpbmRpY2F0aW5nIGRldGFpbHMgYWJvdXQgdGhlIHRyYW5zaXRpb24uXG5UaGlzIG1heSBiZSBhbiBlbXB0eSBzdHJpbmcuIiwibWF4TGVuZ3RoIjozMjc2OCwidHlwZSI6InN0cmluZyJ9LCJvYnNlcnZlZEdlbmVyYXRpb24iOnsiZGVzY3JpcHRpb24iOiJvYnNlcnZlZEdlbmVyYXRpb24gcmVwcmVzZW50cyB0aGUgLm1ldGFkYXRhLmdlbmVyYXRpb24gdGhhdCB0aGUgY29uZGl0aW9uIHdhcyBzZXQgYmFzZWQgdXBvbi5cbkZvciBpbnN0YW5jZSwgaWYgLm1ldGFkYXRhLmdlbmVyYXRpb24gaXMgY3VycmVudGx5IDEyLCBidXQgdGhlIC5zdGF0dXMuY29uZGl0aW9uc1t4XS5vYnNlcnZlZEdlbmVyYXRpb24gaXMgOSwgdGhlIGNvbmRpdGlvbiBpcyBvdXQgb2YgZGF0ZVxud2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBpbnN0YW5jZS4iLCJmb3JtYXQiOiJpbnQ2NCIsIm1pbmltdW0iOjAsInR5cGUiOiJpbnRlZ2VyIn0sInJlYXNvbiI6eyJkZXNjcmlwdGlvbiI6InJlYXNvbiBjb250YWlucyBhIHByb2dyYW1tYXRpYyBpZGVudGlmaWVyIGluZGljYXRpbmcgdGhlIHJlYXNvbiBmb3IgdGhlIGNvbmRpdGlvbidzIGxhc3QgdHJhbnNpdGlvbi5cblByb2R1Y2VycyBvZiBzcGVjaWZpYyBjb25kaXRpb24gdHlwZXMgbWF5IGRlZmluZSBleHBlY3RlZCB2YWx1ZXMgYW5kIG1lYW5pbmdzIGZvciB0aGlzIGZpZWxkLFxuYW5kIHdoZXRoZXIgdGhlIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBhIGd1YXJhbnRlZWQgQVBJLlxuVGhlIHZhbHVlIHNob3VsZCBiZSBhIENhbWVsQ2FzZSBzdHJpbmcuXG5UaGlzIGZpZWxkIG1heSBub3QgYmUgZW1wdHkuIiwibWF4TGVuZ3RoIjoxMDI0LCJtaW5MZW5ndGgiOjEsInBhdHRlcm4iOiJeW0EtWmEtel0oW0EtWmEtejAtOV8sOl0qW0EtWmEtejAtOV9dKT8kIiwidHlwZSI6InN0cmluZyJ9LCJzdGF0dXMiOnsiZGVzY3JpcHRpb24iOiJzdGF0dXMgb2YgdGhlIGNvbmRpdGlvbiwgb25lIG9mIFRydWUsIEZhbHNlLCBVbmtub3duLiIsImVudW0iOlsiVHJ1ZSIsIkZhbHNlIiwiVW5rbm93biJdLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJ0eXBlIG9mIGNvbmRpdGlvbiBpbiBDYW1lbENhc2Ugb3IgaW4gZm9vLmV4YW1wbGUuY29tL0NhbWVsQ2FzZS4iLCJtYXhMZW5ndGgiOjMxNiwicGF0dGVybiI6Il4oW2EtejAtOV0oWy1hLXowLTldKlthLXowLTldKT8oXFwuW2EtejAtOV0oWy1hLXowLTldKlthLXowLTldKT8pKi8pPygoW0EtWmEtejAtOV1bLUEtWmEtejAtOV8uXSopP1tBLVphLXowLTldKSQiLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJsYXN0VHJhbnNpdGlvblRpbWUiLCJtZXNzYWdlIiwicmVhc29uIiwic3RhdHVzIiwidHlwZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJkaWFnbm9zdGljSW5mbyI6eyJkZXNjcmlwdGlvbiI6IkRpYWdub3N0aWNJbmZvIHByb3ZpZGVzIGRldGFpbGVkIHRyb3VibGVzaG9vdGluZyBpbmZvcm1hdGlvbiB3aGVuIGRlcGxveW1lbnRzIGZhaWwuXG5FYWNoIGVudHJ5IGNvbnRhaW5zIHBvZC1sZXZlbCBlcnJvciBkZXRhaWxzIGZvciBhIHNwZWNpZmljIGNvbXBvbmVudC5cblRoaXMgYXJyYXkgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgd2hlbiBkZXBsb3ltZW50cyBmYWlsIGFuZCBjbGVhcmVkIHdoZW4gdGhleSByZWNvdmVyLlxuT25seSBwcmVzZW50IGR1cmluZyBkZXBsb3ltZW50IGZhaWx1cmVzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiUG9kRGlhZ25vc3RpYyBkZXNjcmliZXMgYSBwb2QtbGV2ZWwgaXNzdWUiLCJwcm9wZXJ0aWVzIjp7ImNvbnRhaW5lck5hbWUiOnsiZGVzY3JpcHRpb24iOiJDb250YWluZXJOYW1lIGlzIHRoZSBjb250YWluZXIgd2l0aGluIHRoZSBwb2QgdGhhdCBmYWlsZWRcbkVtcHR5IGlmIHRoZSBpc3N1ZSBpcyBhdCB0aGUgcG9kIGxldmVsIChlLmcuLCBzY2hlZHVsaW5nKSIsInR5cGUiOiJzdHJpbmcifSwiZXhpdENvZGUiOnsiZGVzY3JpcHRpb24iOiJFeGl0Q29kZSBmb3IgdGVybWluYXRlZCBjb250YWluZXJzIChvbmx5IHNldCBmb3IgY29udGFpbmVyIGZhaWx1cmVzKSIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifSwiZmFpbGVkQ29tcG9uZW50Ijp7ImRlc2NyaXB0aW9uIjoiRmFpbGVkQ29tcG9uZW50IGlkZW50aWZpZXMgd2hpY2ggY29tcG9uZW50IHRoaXMgZGlhZ25vc3RpYyByZWxhdGVzIHRvLFxudXNpbmcgdGhlIHNhbWUgdHlwZSBhcyB0aGUgQ29uZGl0aW9ucyBmaWVsZCAoZS5nLiwgXCJBcGlSZWFkeVwiLCBcIkNhY2hlUmVhZHlcIilcblRoaXMgYWxsb3dzIGVhc3kgY29ycmVsYXRpb24gYmV0d2VlbiBjb25kaXRpb24gc3RhdHVzIGFuZCBkaWFnbm9zdGljIGRldGFpbHMuIiwidHlwZSI6InN0cmluZyJ9LCJsYXN0VXBkYXRlZCI6eyJkZXNjcmlwdGlvbiI6Ikxhc3RVcGRhdGVkIGlzIHRoZSB0aW1lc3RhbXAgd2hlbiB0aGlzIGRpYWdub3N0aWMgd2FzIGNvbGxlY3RlZCIsImZvcm1hdCI6ImRhdGUtdGltZSIsInR5cGUiOiJzdHJpbmcifSwibWVzc2FnZSI6eyJkZXNjcmlwdGlvbiI6Ik1lc3NhZ2UgcHJvdmlkZXMgZGV0YWlsZWQgZXJyb3IgaW5mb3JtYXRpb24gZnJvbSBLdWJlcm5ldGVzIiwidHlwZSI6InN0cmluZyJ9LCJwb2ROYW1lIjp7ImRlc2NyaXB0aW9uIjoiUG9kTmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgcG9kIHdpdGggaXNzdWVzIiwidHlwZSI6InN0cmluZyJ9LCJyZWFzb24iOnsiZGVzY3JpcHRpb24iOiJSZWFzb24gaXMgdGhlIGZhaWx1cmUgcmVhc29uXG5FeGFtcGxlczogSW1hZ2VQdWxsQmFja09mZiwgQ3Jhc2hMb29wQmFja09mZiwgVW5zY2hlZHVsYWJsZSwgT09NS2lsbGVkIiwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImFsbE9mIjpbeyJlbnVtIjpbIkNvbnRhaW5lcldhaXRpbmciLCJDb250YWluZXJUZXJtaW5hdGVkIiwiUG9kU2NoZWR1bGluZyIsIlBvZENvbmRpdGlvbiJdfSx7ImVudW0iOlsiQ29udGFpbmVyV2FpdGluZyIsIkNvbnRhaW5lclRlcm1pbmF0ZWQiLCJQb2RTY2hlZHVsaW5nIiwiUG9kQ29uZGl0aW9uIl19XSwiZGVzY3JpcHRpb24iOiJUeXBlIGluZGljYXRlcyB0aGUgZGlhZ25vc3RpYyB0eXBlIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiZmFpbGVkQ29tcG9uZW50IiwibGFzdFVwZGF0ZWQiLCJtZXNzYWdlIiwicG9kTmFtZSIsInJlYXNvbiIsInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifSwib3ZlcmFsbFN0YXR1cyI6eyJkZXNjcmlwdGlvbiI6Ik92ZXJhbGxTdGF0dXMgcHJvdmlkZXMgYSBoaWdoLWxldmVsIHN1bW1hcnkgb2YgdGhlIGVudGlyZSBzeXN0ZW0ncyBoZWFsdGguXG5BZ2dyZWdhdGVzIGFsbCBjb21wb25lbnQgY29uZGl0aW9ucyBpbnRvIGEgc2luZ2xlIHN0YXR1cyB2YWx1ZS5cbi0gUmVhZHk6IEFsbCBjb21wb25lbnRzIGFyZSBoZWFsdGh5XG4tIE5vdFJlYWR5OiBBdCBsZWFzdCBvbmUgY29tcG9uZW50IGlzIG5vdCByZWFkeSAoY2hlY2sgY29uZGl0aW9ucyBmb3IgZGV0YWlscylcbkFsd2F5cyBzZXQgYWZ0ZXIgZmlyc3QgcmVjb25jaWxpYXRpb24iLCJlbnVtIjpbIlJlYWR5IiwiTm90UmVhZHkiXSwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiY29uZGl0aW9ucyIsIm92ZXJhbGxTdGF0dXMiXSwidHlwZSI6Im9iamVjdCJ9fSwicmVxdWlyZWQiOlsic3BlYyJdLCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLXZhbGlkYXRpb25zIjpbeyJtZXNzYWdlIjoiLm1ldGFkYXRhLm5hbWUgbXVzdCBiZSAnY2x1c3RlciciLCJydWxlIjoic2VsZi5tZXRhZGF0YS5uYW1lID09ICdjbHVzdGVyJyJ9XX19LCJzZXJ2ZWQiOnRydWUsInN0b3JhZ2UiOnRydWUsInN1YnJlc291cmNlcyI6eyJzdGF0dXMiOnt9fX1dfSwic3RhdHVzIjp7ImFjY2VwdGVkTmFtZXMiOnsia2luZCI6IiIsInBsdXJhbCI6IiJ9LCJjb25kaXRpb25zIjpudWxsLCJzdG9yZWRWZXJzaW9ucyI6bnVsbH19 + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiYWxtLWV4YW1wbGVzIjoiW1xuICB7XG4gICAgXCJhcGlWZXJzaW9uXCI6IFwib2xzLm9wZW5zaGlmdC5pby92MWFscGhhMVwiLFxuICAgIFwia2luZFwiOiBcIk9MU0NvbmZpZ1wiLFxuICAgIFwibWV0YWRhdGFcIjoge1xuICAgICAgXCJsYWJlbHNcIjoge1xuICAgICAgICBcImFwcC5rdWJlcm5ldGVzLmlvL2NyZWF0ZWQtYnlcIjogXCJsaWdodHNwZWVkLW9wZXJhdG9yXCIsXG4gICAgICAgIFwiYXBwLmt1YmVybmV0ZXMuaW8vaW5zdGFuY2VcIjogXCJvbHNjb25maWctc2FtcGxlXCIsXG4gICAgICAgIFwiYXBwLmt1YmVybmV0ZXMuaW8vbWFuYWdlZC1ieVwiOiBcImt1c3RvbWl6ZVwiLFxuICAgICAgICBcImFwcC5rdWJlcm5ldGVzLmlvL25hbWVcIjogXCJvbHNjb25maWdcIixcbiAgICAgICAgXCJhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mXCI6IFwibGlnaHRzcGVlZC1vcGVyYXRvclwiXG4gICAgICB9LFxuICAgICAgXCJuYW1lXCI6IFwiY2x1c3RlclwiXG4gICAgfSxcbiAgICBcInNwZWNcIjoge1xuICAgICAgXCJsbG1cIjoge1xuICAgICAgICBcInByb3ZpZGVyc1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJjcmVkZW50aWFsc1NlY3JldFJlZlwiOiB7XG4gICAgICAgICAgICAgIFwibmFtZVwiOiBcImNyZWRlbnRpYWxzXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1vZGVsc1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJncHQtMy41LXR1cmJvLTExMDZcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiT3BlbkFJXCJcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIH1cbl0iLCJjYXBhYmlsaXRpZXMiOiJCYXNpYyBJbnN0YWxsIiwiY29uc29sZS5vcGVuc2hpZnQuaW8vb3BlcmF0b3ItbW9uaXRvcmluZy1kZWZhdWx0IjoidHJ1ZSIsImNyZWF0ZWRBdCI6IjIwMjUtMTItMThUMTA6MzA6NTVaIiwiZmVhdHVyZXMub3BlcmF0b3JzLm9wZW5zaGlmdC5pby9jbmYiOiJmYWxzZSIsImZlYXR1cmVzLm9wZXJhdG9ycy5vcGVuc2hpZnQuaW8vY25pIjoiZmFsc2UiLCJmZWF0dXJlcy5vcGVyYXRvcnMub3BlbnNoaWZ0LmlvL2NzaSI6ImZhbHNlIiwiZmVhdHVyZXMub3BlcmF0b3JzLm9wZW5zaGlmdC5pby9kaXNjb25uZWN0ZWQiOiJ0cnVlIiwiZmVhdHVyZXMub3BlcmF0b3JzLm9wZW5zaGlmdC5pby9maXBzLWNvbXBsaWFudCI6InRydWUiLCJmZWF0dXJlcy5vcGVyYXRvcnMub3BlbnNoaWZ0LmlvL3Byb3h5LWF3YXJlIjoiZmFsc2UiLCJmZWF0dXJlcy5vcGVyYXRvcnMub3BlbnNoaWZ0LmlvL3Rscy1wcm9maWxlcyI6ImZhbHNlIiwiZmVhdHVyZXMub3BlcmF0b3JzLm9wZW5zaGlmdC5pby90b2tlbi1hdXRoLWF3cyI6ImZhbHNlIiwiZmVhdHVyZXMub3BlcmF0b3JzLm9wZW5zaGlmdC5pby90b2tlbi1hdXRoLWF6dXJlIjoiZmFsc2UiLCJmZWF0dXJlcy5vcGVyYXRvcnMub3BlbnNoaWZ0LmlvL3Rva2VuLWF1dGgtZ2NwIjoiZmFsc2UiLCJvcGVyYXRvcmZyYW1ld29yay5pby9jbHVzdGVyLW1vbml0b3JpbmciOiJ0cnVlIiwib3BlcmF0b3JmcmFtZXdvcmsuaW8vc3VnZ2VzdGVkLW5hbWVzcGFjZSI6Im9wZW5zaGlmdC1saWdodHNwZWVkIiwib3BlcmF0b3JzLm9wZW5zaGlmdC5pby92YWxpZC1zdWJzY3JpcHRpb24iOiJbXCJPcGVuU2hpZnQgQ29udGFpbmVyIFBsYXRmb3JtXCIsIFwiT3BlblNoaWZ0IFBsYXRmb3JtIFBsdXNcIiwgXCJPcGVuU2hpZnQgS3ViZXJuZXRlcyBFbmdpbmVcIiwgXCJPcGVuU2hpZnQgVmlydHVhbGl6YXRpb24gRW5naW5lXCJdIiwib3BlcmF0b3JzLm9wZXJhdG9yZnJhbWV3b3JrLmlvL2J1aWxkZXIiOiJvcGVyYXRvci1zZGstdjEuMzMuMCIsIm9wZXJhdG9ycy5vcGVyYXRvcmZyYW1ld29yay5pby9wcm9qZWN0X2xheW91dCI6ImdvLmt1YmVidWlsZGVyLmlvL3Y0IiwicmVwb3NpdG9yeSI6Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc2hpZnQvbGlnaHRzcGVlZC1vcGVyYXRvciJ9LCJuYW1lIjoibGlnaHRzcGVlZC1vcGVyYXRvci52MS4wLjkiLCJuYW1lc3BhY2UiOiJvcGVuc2hpZnQtbGlnaHRzcGVlZCJ9LCJzcGVjIjp7ImFwaXNlcnZpY2VkZWZpbml0aW9ucyI6e30sImN1c3RvbXJlc291cmNlZGVmaW5pdGlvbnMiOnsib3duZWQiOlt7ImRlc2NyaXB0aW9uIjoiUmVkIEhhdCBPcGVuU2hpZnQgTGlnaHRzcGVlZCBpbnN0YW5jZS4gT0xTQ29uZmlnIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBvbHNjb25maWdzIEFQSSIsImRpc3BsYXlOYW1lIjoiT0xTQ29uZmlnIiwia2luZCI6Ik9MU0NvbmZpZyIsIm5hbWUiOiJvbHNjb25maWdzLm9scy5vcGVuc2hpZnQuaW8iLCJzcGVjRGVzY3JpcHRvcnMiOlt7ImRlc2NyaXB0aW9uIjoiUHJvdmlkZXIgbmFtZSIsImRpc3BsYXlOYW1lIjoiTmFtZSIsInBhdGgiOiJsbG0ucHJvdmlkZXJzWzBdLm5hbWUifSx7ImRlc2NyaXB0aW9uIjoiT0xTIGRlcGxveW1lbnQgc2V0dGluZ3MiLCJkaXNwbGF5TmFtZSI6IkRlcGxveW1lbnQiLCJwYXRoIjoib2xzLmRlcGxveW1lbnQifSx7ImRlc2NyaXB0aW9uIjoiUHJvdmlkZXIgQVBJIFVSTCIsImRpc3BsYXlOYW1lIjoiVVJMIiwicGF0aCI6ImxsbS5wcm92aWRlcnNbMF0udXJsIn0seyJkZXNjcmlwdGlvbiI6IkNvbnZlcnNhdGlvbiBjYWNoZSBzZXR0aW5ncyIsImRpc3BsYXlOYW1lIjoiQ29udmVyc2F0aW9uIENhY2hlIiwicGF0aCI6Im9scy5jb252ZXJzYXRpb25DYWNoZSJ9LHsiZGVzY3JpcHRpb24iOiJUaGUgbmFtZSBvZiB0aGUgc2VjcmV0IG9iamVjdCB0aGF0IHN0b3JlcyBBUEkgcHJvdmlkZXIgY3JlZGVudGlhbHMiLCJkaXNwbGF5TmFtZSI6IkNyZWRlbnRpYWwgU2VjcmV0IiwicGF0aCI6ImxsbS5wcm92aWRlcnNbMF0uY3JlZGVudGlhbHNTZWNyZXRSZWYifSx7ImRlc2NyaXB0aW9uIjoiRmVhdHVyZSBHYXRlcyBob2xkcyBsaXN0IG9mIGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQgZXhwbGljaXRseSwgb3RoZXJ3aXNlIHRoZXkgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQuXG5wb3NzaWJsZSB2YWx1ZXM6IE1DUFNlcnZlciIsImRpc3BsYXlOYW1lIjoiRmVhdHVyZSBHYXRlcyIsInBhdGgiOiJmZWF0dXJlR2F0ZXMifSx7ImRpc3BsYXlOYW1lIjoiTExNIFNldHRpbmdzIiwicGF0aCI6ImxsbSJ9LHsiZGlzcGxheU5hbWUiOiJQcm92aWRlcnMiLCJwYXRoIjoibGxtLnByb3ZpZGVycyJ9LHsiZGVzY3JpcHRpb24iOiJBUEkgVmVyc2lvbiBmb3IgQXp1cmUgT3BlbkFJIHByb3ZpZGVyIiwiZGlzcGxheU5hbWUiOiJBenVyZSBPcGVuQUkgQVBJIFZlcnNpb24iLCJwYXRoIjoibGxtLnByb3ZpZGVyc1swXS5hcGlWZXJzaW9uIn0seyJkZXNjcmlwdGlvbiI6IkF6dXJlIE9wZW5BSSBkZXBsb3ltZW50IG5hbWUiLCJkaXNwbGF5TmFtZSI6IkF6dXJlIE9wZW5BSSBkZXBsb3ltZW50IG5hbWUiLCJwYXRoIjoibGxtLnByb3ZpZGVyc1swXS5kZXBsb3ltZW50TmFtZSJ9LHsiZGVzY3JpcHRpb24iOiJMaXN0IG9mIG1vZGVscyBmcm9tIHRoZSBwcm92aWRlciIsImRpc3BsYXlOYW1lIjoiTW9kZWxzIiwicGF0aCI6ImxsbS5wcm92aWRlcnNbMF0ubW9kZWxzIn0seyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgdGhlIG1vZGVsJ3MgY29udGV4dCB3aW5kb3cgc2l6ZSwgaW4gdG9rZW5zLiBUaGUgZGVmYXVsdCBpcyAxMjhrIHRva2Vucy4iLCJkaXNwbGF5TmFtZSI6IkNvbnRleHQgV2luZG93IFNpemUiLCJwYXRoIjoibGxtLnByb3ZpZGVyc1swXS5tb2RlbHNbMF0uY29udGV4dFdpbmRvd1NpemUifSx7ImRlc2NyaXB0aW9uIjoiTW9kZWwgbmFtZSIsImRpc3BsYXlOYW1lIjoiTmFtZSIsInBhdGgiOiJsbG0ucHJvdmlkZXJzWzBdLm1vZGVsc1swXS5uYW1lIn0seyJkZXNjcmlwdGlvbiI6Ik1vZGVsIEFQSSBwYXJhbWV0ZXJzIiwiZGlzcGxheU5hbWUiOiJQYXJhbWV0ZXJzIiwicGF0aCI6ImxsbS5wcm92aWRlcnNbMF0ubW9kZWxzWzBdLnBhcmFtZXRlcnMifSx7ImRlc2NyaXB0aW9uIjoiTWF4IHRva2VucyBmb3IgcmVzcG9uc2UuIFRoZSBkZWZhdWx0IGlzIDIwNDggdG9rZW5zLiIsImRpc3BsYXlOYW1lIjoiTWF4IFRva2VucyBGb3IgUmVzcG9uc2UiLCJwYXRoIjoibGxtLnByb3ZpZGVyc1swXS5tb2RlbHNbMF0ucGFyYW1ldGVycy5tYXhUb2tlbnNGb3JSZXNwb25zZSJ9LHsiZGVzY3JpcHRpb24iOiJNb2RlbCBBUEkgVVJMIiwiZGlzcGxheU5hbWUiOiJVUkwiLCJwYXRoIjoibGxtLnByb3ZpZGVyc1swXS5tb2RlbHNbMF0udXJsIn0seyJkZXNjcmlwdGlvbiI6IldhdHNvbnggUHJvamVjdCBJRCIsImRpc3BsYXlOYW1lIjoiV2F0c29ueCBQcm9qZWN0IElEIiwicGF0aCI6ImxsbS5wcm92aWRlcnNbMF0ucHJvamVjdElEIn0seyJkZXNjcmlwdGlvbiI6IlRMUyBTZWN1cml0eSBQcm9maWxlIHVzZWQgYnkgY29ubmVjdGlvbiB0byBwcm92aWRlciIsImRpc3BsYXlOYW1lIjoiVExTIFNlY3VyaXR5IFByb2ZpbGUiLCJwYXRoIjoibGxtLnByb3ZpZGVyc1swXS50bHNTZWN1cml0eVByb2ZpbGUiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6YWR2YW5jZWQiXX0seyJkZXNjcmlwdGlvbiI6IlByb3ZpZGVyIHR5cGUiLCJkaXNwbGF5TmFtZSI6IlByb3ZpZGVyIFR5cGUiLCJwYXRoIjoibGxtLnByb3ZpZGVyc1swXS50eXBlIn0seyJkZXNjcmlwdGlvbiI6Ik1DUCBTZXJ2ZXIgc2V0dGluZ3MiLCJkaXNwbGF5TmFtZSI6Ik1DUCBTZXJ2ZXIgU2V0dGluZ3MiLCJwYXRoIjoibWNwU2VydmVycyJ9LHsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBNQ1Agc2VydmVyIiwiZGlzcGxheU5hbWUiOiJOYW1lIiwicGF0aCI6Im1jcFNlcnZlcnNbMF0ubmFtZSJ9LHsiZGVzY3JpcHRpb24iOiJTdHJlYW1hYmxlIEhUVFAgVHJhbnNwb3J0IHNldHRpbmdzIiwiZGlzcGxheU5hbWUiOiJTdHJlYW1hYmxlIEhUVFAgVHJhbnNwb3J0IiwicGF0aCI6Im1jcFNlcnZlcnNbMF0uc3RyZWFtYWJsZUhUVFAifSx7ImRlc2NyaXB0aW9uIjoiRW5hYmxlIFNlcnZlciBTZW50IEV2ZW50cyIsImRpc3BsYXlOYW1lIjoiRW5hYmxlIFNlcnZlciBTZW50IEV2ZW50cyIsInBhdGgiOiJtY3BTZXJ2ZXJzWzBdLnN0cmVhbWFibGVIVFRQLmVuYWJsZVNTRSJ9LHsiZGVzY3JpcHRpb24iOiJIZWFkZXJzIHRvIHNlbmQgdG8gdGhlIE1DUCBzZXJ2ZXJcbnRoZSBtYXAgY29udGFpbnMgdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgbmFtZSBvZiB0aGUgc2VjcmV0IHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlIGhlYWRlci4gVGhpcyBzZWNyZXRcbnNob3VsZCBjb250YWluIGEgaGVhZGVyIHBhdGggaW4gdGhlIGRhdGEgY29udGFpbmluZyBhIGhlYWRlciB2YWx1ZS5cbkEgc3BlY2lhbCBjYXNlIGlzIHVzYWdlIG9mIHRoZSBrdWJlcm5ldGVzIHRva2VuIGluIHRoZSBoZWFkZXIuIHRvIHNwZWNpZnkgdGhpcyB1c2VcbmEgc3RyaW5nIFwia3ViZXJuZXRlc1wiIGluc3RlYWQgb2YgdGhlIHNlY3JldCBuYW1lIiwiZGlzcGxheU5hbWUiOiJIZWFkZXJzIiwicGF0aCI6Im1jcFNlcnZlcnNbMF0uc3RyZWFtYWJsZUhUVFAuaGVhZGVycyIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTprZXlWYWx1ZSJdfSx7ImRlc2NyaXB0aW9uIjoiU1NFIFJlYWQgVGltZW91dCwgZGVmYXVsdCBpcyAxMCBzZWNvbmRzIiwiZGlzcGxheU5hbWUiOiJTU0UgUmVhZCBUaW1lb3V0IGluIHNlY29uZHMiLCJwYXRoIjoibWNwU2VydmVyc1swXS5zdHJlYW1hYmxlSFRUUC5zc2VSZWFkVGltZW91dCJ9LHsiZGVzY3JpcHRpb24iOiJUaW1lb3V0IGZvciB0aGUgTUNQIHNlcnZlciwgZGVmYXVsdCBpcyA1IHNlY29uZHMiLCJkaXNwbGF5TmFtZSI6IlRpbWVvdXQgaW4gc2Vjb25kcyIsInBhdGgiOiJtY3BTZXJ2ZXJzWzBdLnN0cmVhbWFibGVIVFRQLnRpbWVvdXQifSx7ImRlc2NyaXB0aW9uIjoiVVJMIG9mIHRoZSBNQ1Agc2VydmVyIiwiZGlzcGxheU5hbWUiOiJVUkwiLCJwYXRoIjoibWNwU2VydmVyc1swXS5zdHJlYW1hYmxlSFRUUC51cmwifSx7ImRpc3BsYXlOYW1lIjoiT0xTIFNldHRpbmdzIiwicGF0aCI6Im9scyJ9LHsiZGVzY3JpcHRpb24iOiJBZGRpdGlvbmFsIENBIGNlcnRpZmljYXRlcyBmb3IgVExTIGNvbW11bmljYXRpb24gYmV0d2VlbiBPTFMgc2VydmljZSBhbmQgTExNIFByb3ZpZGVyIiwiZGlzcGxheU5hbWUiOiJBZGRpdGlvbmFsIENBIENvbmZpZ21hcCIsInBhdGgiOiJvbHMuYWRkaXRpb25hbENBQ29uZmlnTWFwUmVmIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmFkdmFuY2VkIl19LHsiZGVzY3JpcHRpb24iOiJPbmx5IHVzZSBCWU9LIFJBRyBzb3VyY2VzLCBpZ25vcmUgdGhlIE9wZW5TaGlmdCBkb2N1bWVudGF0aW9uIFJBRyIsImRpc3BsYXlOYW1lIjoiT25seSB1c2UgQllPSyBSQUcgc291cmNlcyIsInBhdGgiOiJvbHMuYnlva1JBR09ubHkiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6Ym9vbGVhblN3aXRjaCJdfSx7ImRpc3BsYXlOYW1lIjoiUG9zdGdyZVNRTCBTZXR0aW5ncyIsInBhdGgiOiJvbHMuY29udmVyc2F0aW9uQ2FjaGUucG9zdGdyZXMifSx7ImRlc2NyaXB0aW9uIjoiUG9zdGdyZXMgbWF4Y29ubmVjdGlvbnMuIERlZmF1bHQ6IFwiMjAwMFwiIiwiZGlzcGxheU5hbWUiOiJNYXhpbXVtIENvbm5lY3Rpb25zIiwicGF0aCI6Im9scy5jb252ZXJzYXRpb25DYWNoZS5wb3N0Z3Jlcy5tYXhDb25uZWN0aW9ucyJ9LHsiZGVzY3JpcHRpb24iOiJQb3N0Z3JlcyBzaGFyZWRidWZmZXJzIiwiZGlzcGxheU5hbWUiOiJTaGFyZWQgQnVmZmVyIFNpemUiLCJwYXRoIjoib2xzLmNvbnZlcnNhdGlvbkNhY2hlLnBvc3RncmVzLnNoYXJlZEJ1ZmZlcnMifSx7ImRlc2NyaXB0aW9uIjoiQ29udmVyc2F0aW9uIGNhY2hlIHR5cGUuIERlZmF1bHQ6IFwicG9zdGdyZXNcIiIsImRpc3BsYXlOYW1lIjoiQ2FjaGUgVHlwZSIsInBhdGgiOiJvbHMuY29udmVyc2F0aW9uQ2FjaGUudHlwZSJ9LHsiZGVzY3JpcHRpb24iOiJEZWZhdWx0IG1vZGVsIGZvciB1c2FnZSIsImRpc3BsYXlOYW1lIjoiRGVmYXVsdCBNb2RlbCIsInBhdGgiOiJvbHMuZGVmYXVsdE1vZGVsIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOnRleHQiXX0seyJkZXNjcmlwdGlvbiI6IkRlZmF1bHQgcHJvdmlkZXIgZm9yIHVzYWdlIiwiZGlzcGxheU5hbWUiOiJEZWZhdWx0IFByb3ZpZGVyIiwicGF0aCI6Im9scy5kZWZhdWx0UHJvdmlkZXIiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6dGV4dCJdfSx7ImRlc2NyaXB0aW9uIjoiQVBJIGNvbnRhaW5lciBzZXR0aW5ncy4iLCJkaXNwbGF5TmFtZSI6IkFQSSBEZXBsb3ltZW50IiwicGF0aCI6Im9scy5kZXBsb3ltZW50LmFwaSJ9LHsiZGVzY3JpcHRpb24iOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgZGVzaXJlZCBPTFMgcG9kcy4gRGVmYXVsdDogXCIxXCJcbk5vdGU6IFJlcGxpY2FzIGNhbiBvbmx5IGJlIGNoYW5nZWQgZm9yIEFQSUNvbnRhaW5lci4gRm9yIFBvc3RncmVTUUwgYW5kIENvbnNvbGUgY29udGFpbmVycyxcbnRoZSBudW1iZXIgb2YgcmVwbGljYXMgd2lsbCBhbHdheXMgYmUgc2V0IHRvIDEuIiwiZGlzcGxheU5hbWUiOiJOdW1iZXIgb2YgcmVwbGljYXMiLCJwYXRoIjoib2xzLmRlcGxveW1lbnQuYXBpLnJlcGxpY2FzIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOnBvZENvdW50Il19LHsiZGVzY3JpcHRpb24iOiJDb25zb2xlIGNvbnRhaW5lciBzZXR0aW5ncy4iLCJkaXNwbGF5TmFtZSI6IkNvbnNvbGUgRGVwbG95bWVudCIsInBhdGgiOiJvbHMuZGVwbG95bWVudC5jb25zb2xlIn0seyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgdGhlIG51bWJlciBvZiBkZXNpcmVkIE9MUyBwb2RzLiBEZWZhdWx0OiBcIjFcIlxuTm90ZTogUmVwbGljYXMgY2FuIG9ubHkgYmUgY2hhbmdlZCBmb3IgQVBJQ29udGFpbmVyLiBGb3IgUG9zdGdyZVNRTCBhbmQgQ29uc29sZSBjb250YWluZXJzLFxudGhlIG51bWJlciBvZiByZXBsaWNhcyB3aWxsIGFsd2F5cyBiZSBzZXQgdG8gMS4iLCJkaXNwbGF5TmFtZSI6Ik51bWJlciBvZiByZXBsaWNhcyIsInBhdGgiOiJvbHMuZGVwbG95bWVudC5jb25zb2xlLnJlcGxpY2FzIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOnBvZENvdW50Il19LHsiZGVzY3JpcHRpb24iOiJEYXRhIENvbGxlY3RvciBjb250YWluZXIgc2V0dGluZ3MuIiwiZGlzcGxheU5hbWUiOiJEYXRhIENvbGxlY3RvciBDb250YWluZXIiLCJwYXRoIjoib2xzLmRlcGxveW1lbnQuZGF0YUNvbGxlY3RvciJ9LHsiZGVzY3JpcHRpb24iOiJEYXRhYmFzZSBjb250YWluZXIgc2V0dGluZ3MuIiwiZGlzcGxheU5hbWUiOiJEYXRhYmFzZSBEZXBsb3ltZW50IiwicGF0aCI6Im9scy5kZXBsb3ltZW50LmRhdGFiYXNlIn0seyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgdGhlIG51bWJlciBvZiBkZXNpcmVkIE9MUyBwb2RzLiBEZWZhdWx0OiBcIjFcIlxuTm90ZTogUmVwbGljYXMgY2FuIG9ubHkgYmUgY2hhbmdlZCBmb3IgQVBJQ29udGFpbmVyLiBGb3IgUG9zdGdyZVNRTCBhbmQgQ29uc29sZSBjb250YWluZXJzLFxudGhlIG51bWJlciBvZiByZXBsaWNhcyB3aWxsIGFsd2F5cyBiZSBzZXQgdG8gMS4iLCJkaXNwbGF5TmFtZSI6Ik51bWJlciBvZiByZXBsaWNhcyIsInBhdGgiOiJvbHMuZGVwbG95bWVudC5kYXRhYmFzZS5yZXBsaWNhcyIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpwb2RDb3VudCJdfSx7ImRlc2NyaXB0aW9uIjoiTGxhbWEgU3RhY2sgY29udGFpbmVyIHNldHRpbmdzLiIsImRpc3BsYXlOYW1lIjoiTGxhbWEgU3RhY2sgQ29udGFpbmVyIiwicGF0aCI6Im9scy5kZXBsb3ltZW50LmxsYW1hU3RhY2sifSx7ImRlc2NyaXB0aW9uIjoiTUNQIHNlcnZlciBjb250YWluZXIgc2V0dGluZ3MuIiwiZGlzcGxheU5hbWUiOiJNQ1AgU2VydmVyIENvbnRhaW5lciIsInBhdGgiOiJvbHMuZGVwbG95bWVudC5tY3BTZXJ2ZXIifSx7ImRlc2NyaXB0aW9uIjoiRW5hYmxlIGludHJvc3BlY3Rpb24gZmVhdHVyZXMiLCJkaXNwbGF5TmFtZSI6IkludHJvc3BlY3Rpb24gRW5hYmxlZCIsInBhdGgiOiJvbHMuaW50cm9zcGVjdGlvbkVuYWJsZWQiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6Ym9vbGVhblN3aXRjaCJdfSx7ImRlc2NyaXB0aW9uIjoiTG9nIGxldmVsLiBWYWxpZCBvcHRpb25zIGFyZSBERUJVRywgSU5GTywgV0FSTklORywgRVJST1IgYW5kIENSSVRJQ0FMLiBEZWZhdWx0OiBcIklORk9cIi4iLCJkaXNwbGF5TmFtZSI6IkxvZyBsZXZlbCIsInBhdGgiOiJvbHMubG9nTGV2ZWwifSx7ImRlc2NyaXB0aW9uIjoiUHJveHkgc2V0dGluZ3MgZm9yIGNvbm5lY3RpbmcgdG8gZXh0ZXJuYWwgc2VydmVycywgc3VjaCBhcyBMTE0gcHJvdmlkZXJzLiIsImRpc3BsYXlOYW1lIjoiUHJveHkgU2V0dGluZ3MiLCJwYXRoIjoib2xzLnByb3h5Q29uZmlnIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmFkdmFuY2VkIl19LHsiZGVzY3JpcHRpb24iOiJUaGUgY29uZmlnbWFwIGhvbGRpbmcgcHJveHkgQ0EgY2VydGlmaWNhdGUiLCJkaXNwbGF5TmFtZSI6IlByb3h5IENBIENlcnRpZmljYXRlIiwicGF0aCI6Im9scy5wcm94eUNvbmZpZy5wcm94eUNBQ2VydGlmaWNhdGUifSx7ImRlc2NyaXB0aW9uIjoiUHJveHkgVVJMLCBlLmcuIGh0dHBzOi8vcHJveHkuZXhhbXBsZS5jb206ODA4MFxuSWYgbm90IHNwZWNpZmllZCwgdGhlIGNsdXN0ZXIgd2lkZSBwcm94eSB3aWxsIGJlIHVzZWQsIHRob3VnaCBlbnYgdmFyIFwiaHR0cHNfcHJveHlcIi4iLCJkaXNwbGF5TmFtZSI6IlByb3h5IFVSTCIsInBhdGgiOiJvbHMucHJveHlDb25maWcucHJveHlVUkwifSx7ImRlc2NyaXB0aW9uIjoiUXVlcnkgZmlsdGVycyIsImRpc3BsYXlOYW1lIjoiUXVlcnkgRmlsdGVycyIsInBhdGgiOiJvbHMucXVlcnlGaWx0ZXJzIn0seyJkZXNjcmlwdGlvbiI6IkZpbHRlciBuYW1lLiIsImRpc3BsYXlOYW1lIjoiRmlsdGVyIE5hbWUiLCJwYXRoIjoib2xzLnF1ZXJ5RmlsdGVyc1swXS5uYW1lIn0seyJkZXNjcmlwdGlvbiI6IkZpbHRlciBwYXR0ZXJuLiIsImRpc3BsYXlOYW1lIjoiVGhlIHBhdHRlcm4gdG8gcmVwbGFjZSIsInBhdGgiOiJvbHMucXVlcnlGaWx0ZXJzWzBdLnBhdHRlcm4ifSx7ImRlc2NyaXB0aW9uIjoiUmVwbGFjZW1lbnQgZm9yIHRoZSBtYXRjaGVkIHBhdHRlcm4uIiwiZGlzcGxheU5hbWUiOiJSZXBsYWNlIFdpdGgiLCJwYXRoIjoib2xzLnF1ZXJ5RmlsdGVyc1swXS5yZXBsYWNlV2l0aCJ9LHsiZGVzY3JpcHRpb24iOiJDdXN0b20gc3lzdGVtIHByb21wdCBmb3IgTExNIHF1ZXJpZXMuIElmIG5vdCBzcGVjaWZpZWQsIHVzZXMgdGhlIGRlZmF1bHQgT3BlblNoaWZ0IExpZ2h0c3BlZWQgcHJvbXB0LiIsImRpc3BsYXlOYW1lIjoiUXVlcnkgU3lzdGVtIFByb21wdCIsInBhdGgiOiJvbHMucXVlcnlTeXN0ZW1Qcm9tcHQiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6YWR2YW5jZWQiXX0seyJkZXNjcmlwdGlvbiI6IkxMTSBUb2tlbiBRdW90YSBDb25maWd1cmF0aW9uIiwiZGlzcGxheU5hbWUiOiJMTE0gVG9rZW4gUXVvdGEgQ29uZmlndXJhdGlvbiIsInBhdGgiOiJvbHMucXVvdGFIYW5kbGVyc0NvbmZpZyJ9LHsiZGVzY3JpcHRpb24iOiJFbmFibGUgdG9rZW4gaGlzdG9yeSIsImRpc3BsYXlOYW1lIjoiRW5hYmxlIFRva2VuIEhpc3RvcnkiLCJwYXRoIjoib2xzLnF1b3RhSGFuZGxlcnNDb25maWcuZW5hYmxlVG9rZW5IaXN0b3J5IiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmJvb2xlYW5Td2l0Y2giXX0seyJkZXNjcmlwdGlvbiI6IlRva2VuIHF1b3RhIGxpbWl0ZXJzIiwiZGlzcGxheU5hbWUiOiJUb2tlbiBRdW90YSBMaW1pdGVycyIsInBhdGgiOiJvbHMucXVvdGFIYW5kbGVyc0NvbmZpZy5saW1pdGVyc0NvbmZpZyIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7ImRlc2NyaXB0aW9uIjoiSW5pdGlhbCB2YWx1ZSBvZiB0aGUgdG9rZW4gcXVvdGEiLCJkaXNwbGF5TmFtZSI6IkluaXRpYWwgVG9rZW4gUXVvdGEiLCJwYXRoIjoib2xzLnF1b3RhSGFuZGxlcnNDb25maWcubGltaXRlcnNDb25maWdbMF0uaW5pdGlhbFF1b3RhIn0seyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGxpbWl0ZXIiLCJkaXNwbGF5TmFtZSI6IkxpbWl0ZXIgTmFtZSIsInBhdGgiOiJvbHMucXVvdGFIYW5kbGVyc0NvbmZpZy5saW1pdGVyc0NvbmZpZ1swXS5uYW1lIn0seyJkZXNjcmlwdGlvbiI6IlBlcmlvZCBvZiB0aW1lIHRoZSB0b2tlbiBxdW90YSBpcyBmb3IiLCJkaXNwbGF5TmFtZSI6IlBlcmlvZCBvZiBUaW1lIHRoZSBUb2tlbiBRdW90YSBJcyBGb3IiLCJwYXRoIjoib2xzLnF1b3RhSGFuZGxlcnNDb25maWcubGltaXRlcnNDb25maWdbMF0ucGVyaW9kIn0seyJkZXNjcmlwdGlvbiI6IlRva2VuIHF1b3RhIGluY3JlYXNlIHN0ZXAiLCJkaXNwbGF5TmFtZSI6IlRva2VuIFF1b3RhIEluY3JlYXNlIFN0ZXAiLCJwYXRoIjoib2xzLnF1b3RhSGFuZGxlcnNDb25maWcubGltaXRlcnNDb25maWdbMF0ucXVvdGFJbmNyZWFzZSJ9LHsiZGVzY3JpcHRpb24iOiJUeXBlIG9mIHRoZSBsaW1pdGVyIiwiZGlzcGxheU5hbWUiOiJMaW1pdGVyIFR5cGUuIEFjY2VwdGVkIFZhbHVlczogY2x1c3Rlcl9saW1pdGVyLCB1c2VyX2xpbWl0ZXIuIiwicGF0aCI6Im9scy5xdW90YUhhbmRsZXJzQ29uZmlnLmxpbWl0ZXJzQ29uZmlnWzBdLnR5cGUifSx7ImRlc2NyaXB0aW9uIjoiUkFHIGRhdGFiYXNlcyIsImRpc3BsYXlOYW1lIjoiUkFHIERhdGFiYXNlcyIsInBhdGgiOiJvbHMucmFnIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmFkdmFuY2VkIl19LHsiZGVzY3JpcHRpb24iOiJUaGUgVVJMIG9mIHRoZSBjb250YWluZXIgaW1hZ2UgdG8gdXNlIGFzIGEgUkFHIHNvdXJjZSIsImRpc3BsYXlOYW1lIjoiSW1hZ2UiLCJwYXRoIjoib2xzLnJhZ1swXS5pbWFnZSJ9LHsiZGVzY3JpcHRpb24iOiJUaGUgSW5kZXggSUQgb2YgdGhlIFJBRyBkYXRhYmFzZS4gT25seSBuZWVkZWQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGluZGljZXMgaW4gdGhlIGRhdGFiYXNlLiIsImRpc3BsYXlOYW1lIjoiSW5kZXggSUQiLCJwYXRoIjoib2xzLnJhZ1swXS5pbmRleElEIn0seyJkZXNjcmlwdGlvbiI6IlRoZSBwYXRoIHRvIHRoZSBSQUcgZGF0YWJhc2UgaW5zaWRlIG9mIHRoZSBjb250YWluZXIgaW1hZ2UiLCJkaXNwbGF5TmFtZSI6IkluZGV4IFBhdGggaW4gdGhlIEltYWdlIiwicGF0aCI6Im9scy5yYWdbMF0uaW5kZXhQYXRoIn0seyJkZXNjcmlwdGlvbiI6IlBlcnNpc3RlbnQgU3RvcmFnZSBDb25maWd1cmF0aW9uIiwiZGlzcGxheU5hbWUiOiJQZXJzaXN0ZW50IFN0b3JhZ2UgQ29uZmlndXJhdGlvbiIsInBhdGgiOiJvbHMuc3RvcmFnZSIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7ImRlc2NyaXB0aW9uIjoiU3RvcmFnZSBjbGFzcyBvZiB0aGUgcmVxdWVzdGVkIHZvbHVtZSIsImRpc3BsYXlOYW1lIjoiU3RvcmFnZSBDbGFzcyBvZiB0aGUgUmVxdWVzdGVkIFZvbHVtZSIsInBhdGgiOiJvbHMuc3RvcmFnZS5jbGFzcyJ9LHsiZGVzY3JpcHRpb24iOiJTaXplIG9mIHRoZSByZXF1ZXN0ZWQgdm9sdW1lIiwiZGlzcGxheU5hbWUiOiJTaXplIG9mIHRoZSBSZXF1ZXN0ZWQgVm9sdW1lIiwicGF0aCI6Im9scy5zdG9yYWdlLnNpemUifSx7ImRlc2NyaXB0aW9uIjoiVExTIGNvbmZpZ3VyYXRpb24gb2YgdGhlIExpZ2h0c3BlZWQgYmFja2VuZCdzIEhUVFBTIGVuZHBvaW50IiwiZGlzcGxheU5hbWUiOiJUTFMgQ29uZmlndXJhdGlvbiIsInBhdGgiOiJvbHMudGxzQ29uZmlnIn0seyJkZXNjcmlwdGlvbiI6IktleUNlcnRTZWNyZXRSZWYgcmVmZXJlbmNlcyBhIFNlY3JldCBjb250YWluaW5nIFRMUyBjZXJ0aWZpY2F0ZSBhbmQga2V5LlxuVGhlIFNlY3JldCBtdXN0IGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOlxuICAtIHRscy5jcnQ6IFNlcnZlciBjZXJ0aWZpY2F0ZSAoUEVNIGZvcm1hdCkgLSBSRVFVSVJFRFxuICAtIHRscy5rZXk6IFByaXZhdGUga2V5IChQRU0gZm9ybWF0KSAtIFJFUVVJUkVEXG4gIC0gY2EuY3J0OiBDQSBjZXJ0aWZpY2F0ZSBmb3IgY29uc29sZSBwcm94eSB0cnVzdCAoUEVNIGZvcm1hdCkgLSBPUFRJT05BTFxuXG5JZiBjYS5jcnQgaXMgbm90IHByb3ZpZGVkLCB0aGUgT3BlblNoaWZ0IENvbnNvbGUgcHJveHkgd2lsbCB1c2UgdGhlIGRlZmF1bHQgc3lzdGVtIHRydXN0IHN0b3JlLiIsImRpc3BsYXlOYW1lIjoiVExTIENlcnRpZmljYXRlIFNlY3JldCBSZWZlcmVuY2UiLCJwYXRoIjoib2xzLnRsc0NvbmZpZy5rZXlDZXJ0U2VjcmV0UmVmIn0seyJkZXNjcmlwdGlvbiI6IlRMUyBTZWN1cml0eSBQcm9maWxlIHVzZWQgYnkgQVBJIGVuZHBvaW50cyIsImRpc3BsYXlOYW1lIjoiVExTIFNlY3VyaXR5IFByb2ZpbGUiLCJwYXRoIjoib2xzLnRsc1NlY3VyaXR5UHJvZmlsZSIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7ImRlc2NyaXB0aW9uIjoiVXNlciBkYXRhIGNvbGxlY3Rpb24gc3dpdGNoZXMiLCJkaXNwbGF5TmFtZSI6IlVzZXIgRGF0YSBDb2xsZWN0aW9uIiwicGF0aCI6Im9scy51c2VyRGF0YUNvbGxlY3Rpb24ifSx7ImRpc3BsYXlOYW1lIjoiRG8gTm90IENvbGxlY3QgVXNlciBGZWVkYmFjayIsInBhdGgiOiJvbHMudXNlckRhdGFDb2xsZWN0aW9uLmZlZWRiYWNrRGlzYWJsZWQifSx7ImRpc3BsYXlOYW1lIjoiRG8gTm90IENvbGxlY3QgVHJhbnNjcmlwdHMiLCJwYXRoIjoib2xzLnVzZXJEYXRhQ29sbGVjdGlvbi50cmFuc2NyaXB0c0Rpc2FibGVkIn0seyJkaXNwbGF5TmFtZSI6Ik9MUyBEYXRhIENvbGxlY3RvciBTZXR0aW5ncyIsInBhdGgiOiJvbHNEYXRhQ29sbGVjdG9yIn0seyJkZXNjcmlwdGlvbiI6IkxvZyBsZXZlbC4gVmFsaWQgb3B0aW9ucyBhcmUgREVCVUcsIElORk8sIFdBUk5JTkcsIEVSUk9SIGFuZCBDUklUSUNBTC4gRGVmYXVsdDogXCJJTkZPXCIuIiwiZGlzcGxheU5hbWUiOiJMb2cgbGV2ZWwiLCJwYXRoIjoib2xzRGF0YUNvbGxlY3Rvci5sb2dMZXZlbCJ9XSwic3RhdHVzRGVzY3JpcHRvcnMiOlt7ImRlc2NyaXB0aW9uIjoiQ29uZGl0aW9ucyByZXByZXNlbnQgdGhlIHN0YXRlIG9mIGluZGl2aWR1YWwgY29tcG9uZW50c1xuQWx3YXlzIHBvcHVsYXRlZCBhZnRlciBmaXJzdCByZWNvbmNpbGlhdGlvbiIsImRpc3BsYXlOYW1lIjoiQ29uZGl0aW9ucyIsInBhdGgiOiJjb25kaXRpb25zIn0seyJkZXNjcmlwdGlvbiI6IkRpYWdub3N0aWNJbmZvIHByb3ZpZGVzIGRldGFpbGVkIHRyb3VibGVzaG9vdGluZyBpbmZvcm1hdGlvbiB3aGVuIGRlcGxveW1lbnRzIGZhaWwuXG5FYWNoIGVudHJ5IGNvbnRhaW5zIHBvZC1sZXZlbCBlcnJvciBkZXRhaWxzIGZvciBhIHNwZWNpZmljIGNvbXBvbmVudC5cblRoaXMgYXJyYXkgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgd2hlbiBkZXBsb3ltZW50cyBmYWlsIGFuZCBjbGVhcmVkIHdoZW4gdGhleSByZWNvdmVyLlxuT25seSBwcmVzZW50IGR1cmluZyBkZXBsb3ltZW50IGZhaWx1cmVzLiIsImRpc3BsYXlOYW1lIjoiRGlhZ25vc3RpYyBJbmZvIiwicGF0aCI6ImRpYWdub3N0aWNJbmZvIn0seyJkZXNjcmlwdGlvbiI6Ik92ZXJhbGxTdGF0dXMgcHJvdmlkZXMgYSBoaWdoLWxldmVsIHN1bW1hcnkgb2YgdGhlIGVudGlyZSBzeXN0ZW0ncyBoZWFsdGguXG5BZ2dyZWdhdGVzIGFsbCBjb21wb25lbnQgY29uZGl0aW9ucyBpbnRvIGEgc2luZ2xlIHN0YXR1cyB2YWx1ZS5cbi0gUmVhZHk6IEFsbCBjb21wb25lbnRzIGFyZSBoZWFsdGh5XG4tIE5vdFJlYWR5OiBBdCBsZWFzdCBvbmUgY29tcG9uZW50IGlzIG5vdCByZWFkeSAoY2hlY2sgY29uZGl0aW9ucyBmb3IgZGV0YWlscylcbkFsd2F5cyBzZXQgYWZ0ZXIgZmlyc3QgcmVjb25jaWxpYXRpb24iLCJkaXNwbGF5TmFtZSI6Ik92ZXJhbGwgU3RhdHVzIiwicGF0aCI6Im92ZXJhbGxTdGF0dXMifV0sInZlcnNpb24iOiJ2MWFscGhhMSJ9XX0sImRlc2NyaXB0aW9uIjoiT3BlblNoaWZ0IExpZ2h0c3BlZWQgT3BlcmF0b3IgcHJvdmlkZXMgZ2VuZXJhdGl2ZSBBSS1iYXNlZCB2aXJ0dWFsIGFzc2lzdGFudCB3aGljaCBpbnRlZ3JhdGVzIGludG8gdGhlIE9wZW5TaGlmdCB3ZWIgY29uc29sZS4gT3BlblNoaWZ0IExpZ2h0c3BlZWQgY2FuIGFuc3dlciBuYXR1cmFsIGxhbmd1YWdlIHF1ZXN0aW9ucyByZWxhdGVkIHRvIE9wZW5TaGlmdCBDb250YWluZXIgUGxhdGZvcm0uXG5cblRvIGNvbmZpZ3VyZSB0aGUgT3BlblNoaWZ0IExpZ2h0c3BlZWQgT3BlcmF0b3IsIHlvdSBuZWVkIGEgTGFyZ2UgTGFuZ3VhZ2UgTW9kZWwgKExMTSkgLiBZb3UgY2FuIGhvc3QgdGhlIExMTSB1c2luZyBSSEVMQUkgb3IgUkhPQUkgb3IgdXNlIG9uZSBvZiB0aGUgbW9kZWxzIGZyb20gdGhlIGZvbGxvd2luZyBTb2Z0d2FyZS1hcy1hLVNlcnZpY2UgcHJvdmlkZXJzOlxuXG4tIE9wZW5BSVxuLSBNaWNyb3NvZnQgQXp1cmUgT3BlbkFJXG4tIElCTSBXYXRzb25YXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0Fib3V0IE9wZW5TaGlmdCBMaWdodHNwZWVkXShodHRwczovL2RvY3MucmVkaGF0LmNvbS9lbi9kb2N1bWVudGF0aW9uL3JlZF9oYXRfb3BlbnNoaWZ0X2xpZ2h0c3BlZWQvMS4wdHAxL2h0bWwvYWJvdXQvb2xzLWFib3V0LW9wZW5zaGlmdC1saWdodHNwZWVkKSBpbiB0aGUgb2ZmaWNpYWwgcHJvZHVjdCBkb2N1bWVudGF0aW9uLlxuXG5RdWVzdGlvbnMsIGNvbW1lbnRzLCBjb25jZXJucywgb3IganVzdCB3YW50IHRvIHRhbGsgdG8gdGhlIE9wZW5TaGlmdCBMaWdodHNwZWVkIHRlYW0/IFtFbWFpbCB1c10obWFpbHRvOm9wZW5zaGlmdC1saWdodHNwZWVkLWNvbnRhY3QtcmVxdWVzdHNAcmVkaGF0LmNvbSkhIiwiZGlzcGxheU5hbWUiOiJPcGVuU2hpZnQgTGlnaHRzcGVlZCBPcGVyYXRvciIsImljb24iOlt7ImJhc2U2NGRhdGEiOiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBWHdBQUFGOENBWUFBQURNNXdES0FBQUFDWEJJV1hNQUFHNjZBQUJ1dWdIVzNyRVhBQUFnQUVsRVFWUjRuTzNkVDJnamVYNzM4YTlLVmFVL2xsdFNlM3RtT2htUWhnMHNnWVQyUUFnTGFaNVdYNWJjMWswTzgrUmtHWEpJRG1HY1EwZ0NnZlZDWUxQazRpR0g1TEJnK1pSbkQ4SGFXOGhsMVE4YldFTGdVWk5BV05obExkaWtkN3JibHR5VzlhZFVLajBIVzQ2NzIyNnJmbFVsbGFyZUwyaDZwbHUvcWgvajRlT2Z2NzkvaWNsa0lnQ0E2Tk1XM1FFQXdId1ErQUFRRXdRK0FNUUVnUThBTVVIZ0EwQk1FUGdBRUJNRVBnREVCSUVQQURGQjRBTkFUT2lMN2tCVXRkdnRoNVBKNUxjY3gzazBtVXlLNC9INGE1UEpKQzBpWWxsV1lkSDlBeGJOTk0yT2lFZ2lrUmdrazhtZkpCS0p0cVpwVHhPSnhMOFZpOFVmTGJwL1VaVGdhQVh2am8rUHR4M0hlZVE0em0vYXR2MHJvOUVvcytnK0Fjdk9NSXkrcnV2L3JXbmF2MnVhOXZUdTNidTdpKzdUc2lQd1hlcDBPaVhIY2Y3UXR1M2Z0VzM3YTRRN01EOFgzd1Irb3V2NlAybWE5dmVGUXFHMTZENHRFd0ovQnUxMit6UGJ0djlvTkJyOU5nRVBoSWRoR0gzRE1QNVYxL1cvS3hhTDMxOTBmOEtPd0w5QnU5MytiRFFhL2JsbFdiOHhIbytaNndCQ0xwbE0ycVpwL29kaEdIOU4rRitQd0wraTNXNC90RzM3cjRiRDRlOFE4c0R5U2lhVGRpcVYraGRkMS8rU0NlRC9RZUNMeU5IUjBmY3N5L285VnM4QTBXT2Fac2Mwelg5Y1cxdjdnMFgzWmRGaUcvaWRUcWMwR28zMkdjMEQ4VEFkOVJ1R3NSblh5ZDdZQlg2NzNYNDRHbzMrZGpnY1BuQWNKN0hvL2dDWUwwM1RKcWxVNnBsaEdIOGN0M0pQYkFML0l1aHIvWDcvcTR2dUM0Qnd5R1F5UHpNTW94cVg0STk4NEU5TE43MWU3OUdpK3dJZ25MTFo3Tk00bEhvaUhmaXZYcjA2NlBmNzM2UjBBK0EybXFaTk1wbk1ENzd5bGE4OFdYUmZnaExKd0Q4K1B0N3U5WHAvRTliSldFM1R4RFROYS84dWxVck51VGRBY0liRDRiVi9ibG1XT0k0ejU5N01KcGxNMnRsczlrK2plSlJEcEFLLzArbVVCb1BCajRmRDRVZUw3b3RwbXFMcnVoaUdJYVpwWG9hOHBuRkFLVERsT001bCtGdVdKYVBSU0d6YkZzdXlGdDAxU2FWU3YweW4wMStQVXBrbk1vRy95UEtOcnV1U1RxY3Z3ejJkVHMrN0MwRGtEQWFEeTI4Q2c4RkFiTnVlZXgraVZ1Wlorc0R2ZERxbGZyL2ZuUGVtcVd3Mks2bFVTckxack9oNktDdEhRS1RZdGkyOVhrK0d3NkgwZXIyNXZ0czB6VTRtazFsZjl0SCtVZ2YrOGZIeGQ4N096djVzSHFONlRkTWttODFLSnBPUmJEWWI5T3NBM0tMWDYwbS8zNWRlcnplWCtRQk4weVlyS3l2ZnZYdjM3bDhFL3JLQUxHWGdkenFka21WWjlYNi92eDcwdTZZaG44dmxnbjRWQUVYZGJ2Y3kvSU9XeVdTYXBtbHVMT05vZitrQ3Y5MXVQK3ozKy84YzVESEZtcWJKNnVxcTVISTV5alhBRXJGdFc3cmRycHllbmdZNjZqY01vNS9KWkw2eGJCdTJsaXJ3Z3k3aDZMb3UrWHllMFR3UUFkMXVWMDVPVGdLYjdGM0dFcy9TQlA2clY2OE96czdPTm9KNGRqcWRsdFhWVldyelFBVDFlajA1UFQyVndXQVF5UE5YVmxicXk3S0taeWtDLzhXTEZ6OE40Z3djWGRkbGJXMk5aWlJBREF3R0F6azZPZ3BreEovSlpINzJ3UWNmL0pydkQvWlpxQU0vcUNXWG1xWkpzVmlrZEFQRVVMZmJsWGE3N1h1TmZ4bVdib1kyOER1ZFRxblg2LzJuMzVPeitYeGU3dHk1dzQ1WElNWWN4NUhYcjEvTHljbUpyODgxREtPZnpXWi9QYXloSDhyQUQySWxUanFkbG1LeGVPTVpOZ0RpeDdJc2FiZmJ2dGIzd3h6Nm9RdjhkcnY5V2JmYi9RZS9WdUpvbW5ZNXFnZUE2MHhIKzM2VmVUUk5tK1J5dWQ4UDIyWHFvUXA4djhQZU5FMjVkKzhlYStrQjNNcTJiWG41OHFWdkI3ZUZNZlJERS9pZFRxZDBlbnI2YzcvQ1BwL1BTNkhBbmVRQTNPbDBPcjdWOWpWTm02eXVybjRTbHZKT0tBTGZ6d2xhVGRQazNyMTdMTFVFb0d3d0dNakxseTk5S2ZHRXFhYS84TUQzTSt4TjA1UVBQL3lRRlRnQVBITWNSNzc4OGt0ZlNqeGhDZjJGSjJPLzMyLzZFZmE1WEU3dTM3OVAyQVB3aGFacGN2LytmVi8yNjR4R28weS8zMi82MEMxUEZwcU9MMTY4K0trZm02cnkrYnlzcmEzNTBTVUFlTVBhMnByazgzblB6N0VzcS9EaXhZdWYrdEFsWlFzTC9Jc2JxandmbDdDMnRzYmtMSUJBRlFvRlh3YVYvWDcvcTY5ZXZUcndvVXRLRmhMNEY2ZGVlam9JVGRNMFdWdGI0M2dFQUhPUnkrVmtiVzNOYzluNDdPeHM0L2o0K0RzK2RjdVZ1VS9hdHR2dGg5MXU5Lzk2V1g2cGFacDgrT0dIN0pvRk1IZVdaY21YWDM3cGFRWFB4UnI5L3pYdjgvVG5Hdmgrck1naDdBRXNtaCtodjRpVk8zTXQ2VmlXVlNmc0FTdzdQNWFBajBhampHVlpkUis3ZGF1NUJmN3g4ZkYzdk41QnkrRm5BTUxDTkUwcEZvdWVudEh2OTlmbldjK2ZTMG5IajJNVG1LQUZFRWJkYmxlT2pvNlUyOC96K0lXNWpQRDcvWDdUUzloenp5eUFzTXJsY3A3VzZUdU9rNWpYcHF6QUEvL1ZxMWNIWGpaWDVYSTUxdGtEQ0xWQ29lQnBVR3BaVm1FZTYvTURMZWw0TGVXWXBpbjM3OS8zdTFzQUVJam56NThybjcwemo5Sk9vQ1A4d1dEd1k5V3duNjdJQVlCbDRXWGxqdU00aWNGZzhHT2Z1L1NHd0FMLytQaDRlemdjZnFUYS90NjlleHlFQm1DcFRJOW5WelVjRGo4NlBqN2U5ckZMYndpc3BQT0xYL3hpTkI2UGxhNmE0dklTQU12TXl5VXF5V1RTL3Zqamp3MmZ1eVFpQVkzd1g3MTZkYUFhOXFacEV2WUFsbHFoVUZEZU16UWVqL1dnSm5COUgrRjdtYWlkbmovTkhiUUFscDF0Mi9MOCtYT2w0eGVDbXNEMWZZUS9HbzMyVlNkcTgvazhZUThnRW5SZFYxNmY3emhPWWpRYTdmdmNKWDhEdjkxdVArejFlbzlVMnFiVGFibHo1NDZmM1FHQWhicHo1NDd5L2RxOVh1OVJ1OTErNkdkL2ZBMzgwV2hVVTIzcjlVd0tBQWdqTDlubUpWT3Y0MXZndDl2dGg2bzNXT1h6ZVE1RkF4QkpwbWtxbDNiNi9mNVgvUnpsK3hiNG85SG9iNVU2b0dtVWNnQkUycDA3ZDVUM0ZhbG02M1Y4Q2Z4T3AxTWFEb2NQVk5vV2kwVTJXQUdJTkUzVGxFczd3K0h3UWFmVEtmblNEejhlb3JveVI5ZDFUc0VFRUF1NVhFNXBGYUtmSzNaOENmemhjUGc3S3UzOHVBVWVBSmFGYXVhcFp1emJQQWYrMGRIUjkxUjIxYWJUYWVYbFNnQ3dqRlJ6Ynp3ZTYwZEhSOS96K243UGdXOVoxdStwdEZ0ZFhmWDZhZ0JZT3FyWnA1cTFWM2tLL0hhNy9WRGxjaE5kMXlXYnpYcDVOUUFzcFd3MnExVEx0eXlyNEhXSnBxZkF0MjM3cjFUYWVia09EQUNXbldvR3FtYnVsS2ZBVjVsSTBEU05sVGtBWWkyWHl5a3RSL2M2ZWFzYytPMTIrek9WeVZwcTl3Q2dsb1hqOFZodnQ5dWZxYjVUT2ZCSG85R2ZxN1JqZEE4QTZsbW9tcjBpSGdMZnNxemZjTnRHZGJJQ0FLSkdkZkdLU3ZaZXZsT2xrV281SjVQSnFMd09tRHU3MGJqODUwU2hJTW4xOWNWMUJwR1Z5V1NrMSt1NWFqTXQ2eFNMeGUrN2ZaL1NDTisyN1Q5eS9TSW1hN0VFUnZXNm5KVExjdnI0OGVXdjE1OStLaWZsc296cTlVVjNEeEdqT25tcmtzRWlpb0UvR28xKzIyMGIxdDBqN002cVZlaytlU0pPNjkxYjVaeFdTN3BQbnNoWnRUci9qaUhTVkxKUkpZTkZGQUsvMCttVVJxT1I2OW9NNVJ5RTJhaGVGMnYvOXZPcHJQMTlSdnJ3bFVvMmprYWpqTW9KbXE0RDMzR2NQM1RiUm9RUlBzS3R0NzBkeUdlQjI2aG1vMG9XdXc1ODI3Wi8xMjBid2g1aE5tNDJyeTNqM01ScHRkNlkxQVc4VXNsSWxTeFdDZnl2dVcyVFNxWGNOZ0htWnRMcExMb0xpRG1WakZUSll0ZUJyMUsvWjRRUEFEZFRuTGgxbmNXdUF2LzQrTmgxOFZMWGRUWmJBY0I3cU9hazIweDJGZmpqOFhqRFhYZUVTMDRBWUFZcVdlazR6aU0zbjNjVitKUEo1R04zM1JFeERNTnRFd0NJSFpXc2RCem5OOTE4M2xYZzI3YjlLKzY2STJLYXB0c21BQkE3S2xucE5wTmRCYjdLSkFFbEhRQzRuVXBXdXMza21RTmY1V290UnZjQU1EdVZ6SFNUelRNSC9tUXkrUzIzSFdGMURnRE1UaVV6M1dUenpJSHZkalpZaEFsYkFIQkRjZUoyNW14Mk04SXZ1dTBJSlIwQW1KMUtacnJKNXBrRGZ6d2V1OS9HcTNET013REVsVXBtdXNsbU55TjgxMVBJalBBQllIYUtJL3lac3puUUlUZ2pmQUNZWGRDWk9mUFRMY3NxdUhvd1lROEFycm5OVGpmWkhGZ3FVODRCQVBlQ3pFNkc0UUFRRXdRK0FNUUVnUThBTVVIZ0EwQk16QlQ0S2dlbnNVb0hBTUpscGxRdUZvcy9jdnRnenRFQkFQZUN6RTZHNFFBUUlrRldSd2g4QUlnSkRxeEhxTm1OaGppSGh5SWlvcFhMb2xjcUMrMFBzTXdJZklTU1ZhdEpmMmRIbkZicmpUL1hTaVZKYjI5TGFudDdRVDBEbGhjbEhZVE9XYlVxWjF0Yjc0UzlpSWpUYWtudlQvNUV6cXJWK1hjTVdISUVQa0xGcXRYRTJ0Ky8vWFA3KzJMVmFzRjNDSWdRQWgraDB0L1pDZVN6QUFoOGhJamRhRnhieHJtSjAycUozV2dFMXlFZ1lnaDhMTFZ4czdub0xnQkxnOERIVXJNSmZHQm1CRDZXR2lVZFlIWUVQa0pEWlZPVjAyckpwTlB4dnpOQUJMSHhLdVlhallZY1h1eGtMWmZMVWxud1R0Ymtnd2N5ZnZiTVZadHhzOGtPWEdBR2pQQmpxbGFyU2JsY2xzZVBIOHZXMXBac2JXM0o0OGVQcFZ3dVMyMkI2OXRWZ250RVdRZVlDWUVmUTlWcVZiYTJ0cVIxelJMSVZxc2xXMXRiVWwzUVRsWjlmZDExRytyNHdHd0kvSmlwMVdxeVA4Tk8xdjM5L1lXRWZsSWg4Rm1hQ2N5R3dJK1pIUmU3VXhjUitzbjFkVW5rODY3YVRFNU9May9VQkhBekFqOUdtczNtdFdXYzkxbFU2THZGS0IrNEhZRWZJeDNGNVl2ekRuMG1ib0ZnRVBpWXlUeERYMlhpbGhFK2NEc0NQMFlLaFlLbjl2TUtmWlVSdnYzMHFmOGRBU0tHd0krUjlmVjFLWlZLbnA0eGo5QlBGQXFpS2ZTVFVUN3dmZ1IrekxoWnBYT1RlWVMreXNRdDYvR0I5eVB3WTZaYXJjcm01cWJuNXdRZCtrcUJ6d2dmZUM4Q1A0WnF0VnJvUTk5UXFPTlQwZ0hlajhDUHFiQ0h2c3JFcmR0RDE0QzRJZkJqTE95aG4zend3SFViNnZqQXpRajhtQXR6Nkt2VThkbUFCZHlNd0Vkb1ExK2xqZy9nWmdRK1JDU2NvYTh5d2dkd013SWZsOElXK2lxQnIzbmNUUXhFR1lHUE40UXQ5RTJYZlRFMk5qeS9FNGdxQWgvdkNGUG9aMXpzREU1OS9ybG81YktuOXdGUlJ1RGpXbUVKZmExY2xwVzl2VnMvbDN6d3dOVTNCeUNPQ0h6Y0tDeWhiMWFyc3ZyREg0cis2TkU3ZjVmSTV5WDlyVy9KYXFNaENlcjN3SHZwaSs0QXdxMVdxNG1JekhRUDd2dE0yMCtmNTVaZXFjaHFveUhPNGVFYjF4a20xOWNKZW1CR0JENXVGWmJRRnprdjhWQ25COVJRMHNGTXdsTGVBYUNPd01mTUNIMWd1Ukg0Y0lYUUI1WVhnUS9YQ0gxZ09SSDRVRUxvQTh1SFZUb0JPenc4bE1PTFpZU0ZRa0hXSTNRZ1dKaFc3d0M0SFNQOGdOVHJkU21YeS9MSko1L0k0OGVQNWZIangvTHBwNTlLdVZ5V2VyMis2Tzc1aHBFK3NEd0kvQUJVcTFWNTh1U0p0RnF0ZC82dTFXckpreWRQSWhWdWhENndIQWg4bjlYcjlabEtIUHY3KzR6MHIwSG9BOEVoOEgyMnZiMGR5R2VYQWFFUGhCdUI3Nk5HbzNGdEdlY21yVlpMR2hHN2c1WFFCOEtMd1BkUnM5bDAzU1pxZ1M5QzZBTmhSZUQ3cUt4d3FGZVVsbWxlUmVnRDRVUGcrMGdsdktNYStDTFJEbjJPWk1ZeUl2QjlWQzZYcFZRcXpmejVVcW1rOUZQQk1sbUcwTmNyRmRGY2ZOMjBVa25wZ25WZzBRaDhuN25aTFJya3psSzcwWkRoN3E1WXRacllDNTRuV0liUXorN3VCdkpaSUV3NFdzRm5sVXBGUHYvOGMvbmlpeS9lKzdsdmZldGJVcWxVZkgvL2NIZFgranM3TWprNWVlZnZrZzhlaUY2cGlMNitMc21MWC9NUzltTVlqSTBOTVRjM3hicWxmK2JtcGhnYkc3NitHNWlYeEdReW1lbURyVlpydGc5ZXlPZnpVb2h4bmJOZXI4djI5dlk3eXpSTHBaTHM3dTdLUmdDaGNWYXQzaHBZVnlYeWVVbXVyMTkrRTlBcmxjQnIwOVZxMVhQb2k0aHNibTRHOGhQU3FGNlgzdmEyT0c5OTNiUlNTYks3dTRROUF0ZnBkT1RrbWdIYis1UktwY1FzbnlQd0E5Wm9OS1RaYkVxbjA1RktwUkxJcUY1RXhLclY1R3hyeS9OenB2WHA1UHE2R0pXSzZBSDAxNi9RMzl2YkM2ekVNMjQyWmRMcFhQNTdFUDhkZ09zUStMalZTYm44enFqVUw4a0hEeTYvQWZoVkN2SWo5RXVsMHVWSnBFQlVCQm40VE5wR3dMalpEQ3pzUlVUR3o1Nkp0Yjh2WjF0Yjh2clRUNldkU01oWnRTcU9oN0QxWXlLMzFXb3BiWFlENG9yQWo0RHhBa0xQMnQrWGswOCtFY3RESGQyUDBPOWNLYnNBZUQ4Q0g1NmNiVzE1V3ZicDE1Sk5BTGNqOENOQVcvRG1yZjdPanFmMlhrS2ZlU0pnZGdSK0JMamRLZW8zKytsVHoyVWxsZEF2bFVxUlBwb0M4QnNicnlJaXU3c3IzU2RQRnZaKzUvRFE4K29kdDV1emRqeitaSUhnTkJxTnl4VlU1WEk1c09YSWNJZkFqNGhaZDRvR3hjdUtuYXRtRGYzTnpjM1FIYWlHODYvZnpzN090UnNPZDNaMitKb3RHQ1dkQ0ZtcDFXUmxiMjhoNVIwL2oybW8xV3F5dDdkMzdVRjBwVkpKOXZiMkFqMkhDR3FxMWFwc2JXM2RlSmZ6MXRZV2diOWdiTHlLcUhHektYYWpJZmJGNzBHdTAwL2s4MUlJYUhuazJ4ZkVVQm9JcDFxdEpsc3o3dlFPNmxpTXFBaHk0eFVsbllpYTdvaE5YZno3cE5PUmNiTXBvMFpEN0Viai9PZ0FsLzlUM1NRVjROMjhCUHh5Y0RPZkV0UUJlTGdkSS93WWN3NFBMNzhKakp0TnNaOCtkZjJNNUlNSGNvZmRyckhXYkRibDAwOC9kZDJPa2Y3MUdPRWpFRnE1TEZxNS9NWUprRmRMUWVObVU4YlBudDNZUHZYNTU1SmhwVXpzcWU1MlpxUS9md1ErM3ZCMktVamsvREtWMFpWYXVsWW9pTEd4c2ZBTlgxaCtoUDU4RWZpNGxSN1FNY21JQnErbFcwSi9mbGlXQ2NDVDlmVjFWM2M1WHllTUY5VkhFWUVQd0RNL2RqMFQrc0VqOEFGNFZxMVdRMzlSUFFoOEFEN3g2NmhyUWo4NEJENEEzeEQ2NFViZ0EvQVZvUjllQkQ0QTN4SDY0VVRnQXdnRW9SOCtCRDZBd0JENjRVTGdBd2dVb1I4ZUJENkF3Qkg2NGNCWk9nR3ozN3JBQSs5S0ZBcSszcGoxUHMxbVUvbDBSM2hUclZhbDJXektzL2Vjd0RvTHp0NVJSK0FIWkZTdlMyOTdPOUNicHFKRUs1VWt1N3Y3eGxITmZxclg2N0s5dlgzdDlYdFlQb1MrR2tvNkFUaXJWcVg3NUFsaDc0TFRha24zeVJNNUMrREg5V3ExS2srZVBDSHNJMlovZjErMkE3eHRMWW9JZkorTjZuV3hMa1lmY00vYTM1ZFJ2ZTdiOCtyMSt1Vm9FTkh6eFJkZnZIUHZNVzdHRlljK095bVhHZGw3cEpWS2tqODg5T1ZaNVhLWmtYM0VsVW9sT2ZUcC81Y3dDUEtLUTBiNFBobzNtNFM5RDV4V3k1Zko3a2FqUWRqSFFLdlZZaUorUmdTK2p5YjhUeGNxaEVCOE5Kdk5SWGRoS1JENEFCQVRCRDVDS2VIRC9FK1pTOVpqWTMxTyt6aVdIWUh2STcxU0VjM2ozWjQ0bjdUMVl5T1dIM2V0SXZ4S3BWSXNGNGlvSVBCOWx0M2RYWFFYbHA2Zi93MTMrWHBFSHB1dlprZmcrOHpZMkJEVGh6TkQ0c3JjM1BSMXQrM0d4b1l2WjdnZ25ENy8vSE9wVkNxTDdzYlNJUEFEc0ZLclNlN2dnUEtPQzFxcEpMbURBMWtKWUxSV3E5WGs0T0NBOGs3RWJHNXU4aE9jUzJ5OEN0aTQyV1M1NWd6ME9ZM1MySlc1V052YjI1NFBUeE01RC91b2xuS0MzSGpGNFdrQm05Y3BrSmdOUC80dlRyVmFKZXdYakpJT2dNQlZxMVZmempRaTdMMGg4QUVFaXJBUER3SWZRR0FJKzNBaDhBRUVnckFQSHdJZmdPOEkrM0FpOEFINGlyQVBMd0lmZ0c4SSszQWo4QUg0Z3JBUFB3SWZnR2UxV28yd1h3SUVQZ0RQZG5aMlBEK0RzQThlZ1EvQWsyYXo2Zm51WU1KK1BqaExCN2V5R3cwWk5ScmlIQjZLaUloV0xvdTVzY0U1UVJBUjczY0hFL2J6UStEakRlTm1VK3hHUSt4bVU4Yk5wb3h2T094cThPMXZpL0hOYjhwS3JlYkxkWVNJSjhKK3ZnajhHSE1PRDJYY2JNcW8wVGdQK3FkUFhiVWYvZUFIY2xxcHlHcWpRZWpIbU9veDZJVDkvQkg0TVRIcGRDN0QzYjRJK0luTE03ZXZNMzcyVEFhN3U1THhZZElPeTJsNmQ3Q2JPajVodnhoY2dCSlIwMUMzTDBvMGpzZEp0ZmRKNVBPU1B6d01aSlRmYURUazhHTHVvRnd1YzU1OVNOVnFOZG5hMnBycHM0VDkrM0VCQ21abTFXclMzOWtKTk9EZk5qazVrWEd6NmV1dFZiVmFUWFoyZHQ0Wk5aWktKZG5aMlpGcXRlcmJ1K0JkdFZxVlJxTng2MXA4d242eFdKWVpJV2ZWcXB4dGJjMDE3SU5RclZabGEydnIyaEpCcTlXU3JhMHRBaitFYXJXYTdPM3RYWHQzY0tsVWtyMjlQY0ord1NqcFJJUlZxOG5aakQ5U0IySDFoei8wWllUdlpudiszdDRld1I5U2I5OGRUQ2x1ZGtHV2RBajhpRGdwbHhjNnNzLy8vT2VpbGN1ZW51SDJMSlpTcVhSWjN3ZWlJc2pBcDZRVEFVRlB5dDVHZi9SbzdtRXZjbDdlYVRhYm50NEx4QW1CRDgrOExzbjBjc3FpMTEyZVFKd1ErUEJrWlcvUFUrM2VyeU4xQWR5T3dJY1NjM05UOGovL3VaZ2VKazM5Q0h2bWlZRFpzUTQvQXZSS1JiUlNLYkE2ZnZMQkEwbXVyNHRScVVoeWZkMlhROVA4Q1B0U3FTVHJIT0FHekl6QUQ5amg0ZUViTzBYTEhpYzNiNUxkM1pYdWt5ZWVuNk9WU3BlaGJsUXF2bTZtbXZLcmpPUEhHZXczc2E4c0swd1VDcHdNaWtnZzhBTlNyOWRsZTN2NzJwMml1N3U3c3JHeDRldjdqSTBOTVRjM3hYSVJwSWw4WHBMcjY2SlhLcUpmL0I3MElXaCtYb01YeEJyOFViMHV2ZTN0ZDM1YTBrb2x5ZTd1aXVIejF3MllKOWJoQjJDV1VBdHFpL2xOZ1NWeVhwcVpocnRmcFJrM3duN242Vm0xZXVzM1RITnpVMWJZTFlvQXNmRnFpZFRyZFhreVkybmw0T0RBOTVIKzFMalpsTW1WSll0QmxHYmNDSHZZaityMW1VdGl1WU1EUnZvSURJRy9STXJsOHN6SHhNWmxwMmpZdzE3RTNVNWxyVlNTZkF5K2JsZ01kdG91aVVhajRlcE04RmFyOWM2WkkxR3pER0UvYmpaZHJYQnlXcTAzSm5XQlpVSGcrMGhsbTMrVUEzOFp3bDVFM2loOUFWRkc0UHRJWlp0L1ZNdGV5eEwyUUp3UStENVNPUUkyaWh1SENIc2duQWg4SDFVcUZjbm44ek4vdmxRcVJlNmNjTUllQ0M4QzMyZHVkbi91N3U0RzE1RUZJT3lCY0NQd2ZiYTl2UzJibTV1M2ZtNXpjek93TmZpTFFOZ0Q0VWZnQjZCV3E4bkJ3Y0dOZDNzZUhCeEVLdFFJZTJBNWNKWk9RRFkyTm1SalkwTWFqWVkwbTAzcGREcFNxVlNvMmQrQXNBZUNSK0FITElvaFAwWFlBOHVGa2c2VUVQYkE4aUh3NFJwaER5d25BaCt1RVBiQThpTHdNVFBDSGxodUJENW1RdGdEeTQ5Vk9yaFZtTUorM0d5S2MzZ296dUhoNWZXTUFHWkQ0T085d2hMMmRxTWgvWjBkc1o4K2ZlUFBFL204cExhM0piMjlIZmg5dk1DeW82U0RHNFVsN0sxYVRVNGZQMzRuN0VWRUppY25NdmoydCtXMFV1RmNlK0FXQkQ2dUZaYXdkdzRQNVd4cjY5YlBqWjg5azc2TGcrdUFPQ0x3OFk2d2hMMkl1QXJ4NFJkZmlNTmRzOENOQ0h5OElVeGhMeUppdWV6THFGNzMvRTRncWdoOFhBcGIySThWN2dnZU04SUhia1RnUTBUQ0YvWWlhb0hQeEMxd013SWZvUXg3RVpGUm8rRzZqVll1Ky9aK0lHb0kvSmdMYTlpTHFJM3dEVFppQVRjaThHTXN6R0V2Y3I3VTBpMTIzZ0kzSS9Cakt1eGhieXVVYzVJUEh2amVEeUJLQ1B3WUNudllpNmpWNzVQcjYvNTNCSWdRQWo5bWFyVmE2TU5lUksxK3J4UDR3SHNSK0RHejQ4UHhBL000NGxncDhLbmZBKzlGNE1kSXM5bVVWcXZsNlJuekNQdEpweU9PUWo4cDZRRHZSK0RIU01manBxUjVYVjZpTW1HclAzcmtmMGVBaUNId01aTjUzbFJsSzVSekdOMER0eVB3WTZTZ2VFSEl2SzhsVkJuaHMrRUt1QjJCSHlQcjYrdFNLcFZjdFZuRUhiUXFFN2FNOElIYkVmZ3g0MmFWenFMQ2ZuSnk0cXBOSXAvbkRCMWdCZ1IrekZTclZkbmMzTHoxYzRzSWV4Rkc5MENRQ1B3WXF0VnFzcmUzZDIxNXAxUXF5ZDdlM2tMQ1hrUnR3cGIxOThCczlFVjNBSXRSclZhbFdxMUs0NjBKMHNxQ3c1TUpXeUE0Qkg3TUxUcmczNlp5UWlZbEhXQTJsSFFRR2lxamU2MVVrb1RpY2xNZ2JnaDhoSWFqY0I4dDlYdGdkZ1ErbGhvblpBS3pJL0FSR2lwcjZSbmhBN01qOEJFYWVxVWltb3Vkd0ZxcHhJUXQ0QUtCajFESjd1NEc4bGtBQkQ1Q3h0allFSE9HbmNEbTVxWVlHeHR6NkJFUUhRUStRbWVsVnBPVnZiMXJ5enRhcVNTNWd3TlpXZEJPWUdDWnNmRUtvV1JXcTJKV3ErZUhxVjFjM0pJb0ZLalpBeDRRK0FnMUFoN3dEeVVkQUlnSkFoOEFZaUt3d0IrTlJrRTlHZ0FpYXpnY3VtN1RicmNmenZLNXdBTGZjWnlnSGcwQXVLSllMUDVvbHM5UjBnR0FtQ0R3QVNBbUNId0FpQWtDSHdCaUlyREF0eXdycUVjRFFHUUZtWjB6Qjc1cG1oMDNEMmFWRGdDNDV6WTczV1J6b0NVZFFoOEFaaGQwWnM0YytJbEVZdUQyNFpSMUFHQjJLcG5wSnB0bkR2eGtNdmtUdHgxaGhBOEFzMVBKVERmWjdHYUUzM2JiRVViNEFEQTd4Ukgrek5rOGMrQnJtdmJVYlVjNFR3Y0FacWVTbVc2eTJjMEkvOS9jZHNTMmJiZE5BQ0MyVkRMVFRUYlBIUGl6SHM1ekZTVWRBSmlkU21hNnlXWlh5eklOdytpNzdjeGc0SHB4RHdERWprcFd1czFrVjRHdjYvcC91K3NPbzN3QW1JVktWcnJOWkZlQnIybmF2N3ZyRGhPM0FEQUx4UWxiVjVuc052QmRyOVNocEFNQXQxUEpTcmVaN0Nydzc5Njl1K3V1TytlenpxeldBWUNicWVhazIweDJmWmFPeXNSdHI5ZHoyd1FBWWtNbEkxV3kySFhnNjdydStvZ0ZsVXQ1Z1RCTEZBcUw3Z0lpUkNValZiSllKZkQveVcwYlJ2Z0lNNzFTRWExVW12bnpXcWtreWZYMUFIdUV1RkhKU0pVc2RoMzRtcWI5dmRzMklvUSt3aTI3TzNzcDFNMW5nZHVvWnFOS0Zyc08vRUtoMEZLcEhmWDdycHNBYzJOc2JJaTV1WG5yNTh6TlRURTJOdWJRSThTRlNqWWFodEV2RkFvdHQrMlVMa0F4RE9OZjNiWmhoSSt3VzZuVkpIZHdjRzE1Unl1VkpIZHdJQ3UxMnZ3N2hraFRuTEIxbmNFaUlvbkpaT0s2VWJ2ZC91ejE2OWYveDIyN3RiVTF5ZVZ5cnQ4SHpOdTQyWlJKNTM5dWp0TXJsY1YxQnBIVjdYYmw2T2pJZGJzN2QrNzg3Mkt4K0gyMzdaUUNYMFRrRjcvNHhXZzhIdXR1Mm1TeldibDM3NTdTK3dBZ2FsNitmT2w2aEo5TUp1MlBQLzdZVUhtZjhwMjJwbW4raDlzMnZWNlBUVmdBSU9lYnJWVEtPU3JaTzZVYytJWmgvTFZLdTI2M3EvcEtBSWdNMVN4VXpWNFJENEZmTEJhL24wd21YUS9YVDA5UFZWOEpBSkdoa29YSlpOSldxZDFQS1FlK2lFZ3FsZm9YdDIwY3gyR1VEeURXdXQydTBvWGxLcGw3bGFmQTEzWDlMMVhhblp5Y2VIa3RBQ3cxMVF4VXpkd3BUNEZmTEJaL1pKcG01L1pQdmtsMXNnSUFscDNxNGhYVE5Ec3FWODFlNVNud0x6cnhqeXJ0cU9VRGlDUFY3RlBOMnF1VTErRmZwYkltWDBUa3d3OC9sSFE2N2ZuOUFMQU1Cb09CZlBubGw2N2JlVmw3ZjVYbkViNkkra1NDeWc0ekFGaFdxcG5uZGJKMnlwZkFOd3hqVTlNMDF6OHEyTGJOaWgwQXNkRHRkcFZxOTVxbVRRekR1UDFrdjFtZTVjZERDb1ZDSzVWS1BWTnAyMjYzbFpZbkFjQ3ljQnhIMnUyMlV0dFVLdlZNNVdUTTYvZ1MrQ0lpaG1IOHNVbzd4M0hrOWV2WGZuVURBRUxuOWV2WHlnTmIxV3k5am0rQlh5d1dmNVRKWkg2bTB2Yms1RVFzeS9Lckt3QVFHcFpsS2ErN3oyUXlQL082RlBNcTN3SmZSTVF3aktwcVc5VWZkd0Fnekx4a201ZE12WTZ2Z1Y4c0ZuK1V6V2FmcXJRZERBYVVkZ0JFeXV2WHIyVXdHQ2kxeldhelQvMGMzWXY0SFBnaTZpdDJSTTVMT3h5ZkRDQUtiTnRXTHVYNHVUTG5qZWY2L2NCQ29kREtaREkvVUduck9JNjhmUG5TN3k0QndOeTlmUGxTZWFJMms4bjh3Tm1tRDBFQUFBY1BTVVJCVksrVk9WZjVzdFAyT3FxN2IwVkU4dm04RkFvRnY3c0VBSFBSNlhTVVIvZCs3YXE5anU4ai9LbHNOdnVucW0xUFRrNlU2MTRBc0VpRHdjRFRpY0Jlc3ZNMmdZM3dSVVIrK2N0ZlBoOE9oeCtwdE5VMFRYNzFWMzlWTkMydzcwa0E0Q3ZIY2VTLy91dS9sRXM1cVZUcWx4OTk5TkY5bjd0MUtkQTBUYWZUWDFlZHdIVWNSK21RSVFCWWxDKy8vRkk1N0RWTm02VFQ2YS83M0tVMzN4SGt3NzFNNElxY2IxamdnRFVBeStEbzZNalRCdEtnSm1xdkNyU2tNL1g4K2ZPMlpWbktzN0JNNGdJSU15K1R0Q0xubDV2Y3YzKy82R09YcmpXWEFua21rMWxYTGUySW5FL2ljcW9tZ0REcWRydWV3bDdUdEVrbWsxbjNzVXMzdjJzZUx5a1VDcTJWbFpYdmVubkcwZEVSb1E4Z1ZMcmRydWV5ODhyS3luZURMdVZNemFXa00vWGl4WXYvMSsvM2xiK1RhWm9tSDM3NG9aaW02V2UzQU1BMXk3SThUZEtLaUdReW1lWUhIM3p3cVkvZGVxKzVybmswVFhQRE1JeSthdnZweWgxTzFnU3dTSDZFdldFWWZkTTBOM3pzMXEzbUd2Z1hxM2ErNGFXZVQrZ0RXQ1Evd3Y2aWJ2K05lWlZ5THQ4N3o1ZUpuSitvNmJXZVB3MTlhdm9BNXFuYjdYb09lNUh6dXIzZkoySE9ZcTQxL0t0ZXZYcDFjSFoyNXZuSG1iVzFOY25sY241MENRQnU1TWNFcllqSXlzcEsvU3RmK2NvVEg3cmsyc0lDWDBUa3hZc1hQKzMzKzEvMStoelc2UU1Ja3RkMTlsT1pUT1puSDN6d3dhLzUwQ1VsQ3cxOEVlK2JzcVp5dVp5c3JhMzUwU1VBdU9UWGt2QjViYTU2bjRXZlRKYkpaTmE5ck55WjZuYTc4dno1YzgrMU5RQVFPWjhyZlA3OHVTOWhieGhHZjE2YnE5NW40U044RVpGT3AxUHE5WHIvT1JxTk1sNmZwV21hM0x0M1Q5THB0QjlkQXhCRGc4SEEwd1VtVnhtRzBjOW1zNzgrN3hVNTF3bEY0SXVjaC83cDZlblBIY2RKK1BFODZ2b0FWUGhWcnhjNVgzNjV1cnI2U1JqQ1hpUUVKWjJwUXFIUXl1Vnl2KzlsamY1Vkp5Y244dno1Yys3SUJUQVQyN2JsK2ZQbnZvWjlMcGY3L2JDRXZVaUlSdmhUN1hiN3MyNjMrdzkramZRMVRaTjhQaTkzN3R6eDQzRUFJdWoxNjlkeWNuTGkyeHpnTk95THhlTDNmWG1nVDBJWCtDTCsxdlNuMHVtMEZJdEZ6dUVCY01teUxHbTMyNzVlcVJxbW12M2JRaG40SXNHRXZvaGNqdmE1T2hHSUw4ZHhMa2YxZmdwejJJdUVPUEJGemtPLzMrODMvVmluZjVXbWFWSXNGdG1oQzhSUXQ5dVZkcnZ0K3hKdTB6UTdtVXhtUGF4aEx4THl3Si95YTBmdTIzUmRsN1cxTlpad0FqRXdHQXprNk9nb2tJVWNpOTVCTzZ1bENId1IvODdldVU0Nm5aYlYxVlhKWnJOQlBCN0FBdlY2UFRrOVBmVzFUbi9WSXMvR2NXdHBBbDlFNVBqNCtEdG5aMmQvNXRjS25yZnB1aTc1Zko1U0R4QUIwNnNIZzFxYXJXbmFaR1ZsNWJ0Mzc5NzlpMEJlRUlDbENud1JrWGE3L2JEZjcvK3ozNU81VjJtYUpxdXJxNUxMNVVUWDlhQmVBOEJudG0xTHQ5dVYwOVBUUUk5WnVUZ3E0UnVMT09MWWk2VUxmSkh6eVZ6THN1cGVya3VjVlRhYmxVd213NmdmQ0xGdXR5djlmbDk2dlY3Zzc4cGtNazNUTkRmQ1BEbDdrNlVNL0ttZ1N6eFhhWnAyR2Y3VStvSEY2L1Y2bHlFL2owTVRsN0dFODdhbERueVI0Slp1M2lhYnpVb3FsWkpzTmt2WkI1Z0QyN2FsMSt2SmNEaWN5MGorcW1WWWNqbUxwUS84cVZldlhoMzArLzF2em1PMC96WmQxeVdkVG90aEdHS2FKc3M4QVI4TUJnT3hMRXRHbzVFTUJvT0ZuSXQxY2Zmc0Q1WmxGYzV0SWhQNEl1ZWovY0ZnOE9QaGNQalJvdnRpbXFib3VuNzVUVURUdE12ZkFaeHpIRWNzeTdyOGZUUWFpVzNiWWxuV29yc21xVlRxbCtsMCt1dkxQcXEvS2xLQlAzVjhmTHpkNi9YK1pqd2VoN2JXY3ROUEFhbFVhczQ5QVlJekhBNnYvZk5weUlkUk1wbTBzOW5zbjk2OWUzZDMwWDN4V3lRRGYycVJaUjRBeXlWcTVadnJSRHJ3UmM3TFBLUFJhTC9YNnoxYWRGOEFoRk0ybTMxcUdNWm1sTW8zMTRsODRFKzEyKzJIbzlHb0ZzU1pQQUNXVXlhVCtabGhHTlZsMjBDbEtqYUJQM1VSL0g4N0hBNGZVT29CNGtmVHRFa3FsWHBtR01ZZnh5WG9wMklYK0ZQVFVzOXdPUHlkTUUvdUF2QkhNcG0wVTZuVXY4U2hkSE9UMkFiK1ZVZEhSOSt6TE92MzVyMTVDMER3VE5Qc21LYjVqMnRyYTMrdzZMNHNHb0YvUmJ2ZGZtamI5bDh4NmdlVzIzUTByK3Y2WDhhdGJQTStCUDROMnUzMlo2UFI2TTh0eS9vTndoOEl2MlF5YVp1bStSK0dZZngxMkM0UER3c0Nmd2J0ZHZzejI3Yi9hRFFhL1hhUXh6SURjTWN3akw1aEdQK3E2L3JmRWZLM0kvQmQ2blE2SmNkeC90QzI3ZCsxYmZ0cmZBTUE1c2N3akw2dTZ6L1JkZjJmTkUzNys3aE92cW9pOEgxd2ZIeTg3VGpPSThkeGZ0TzI3Vi9obXdEZzNVVzQvN2VtYWYrdWFkclRLQjUxTUc4RWZrRGE3ZmJEeVdUeVc0N2pQSnBNSnNYeGVQeTF5V1NTRmhGaE5SQnd2bnBHUkNTUlNBeVN5ZVJQRW9sRVc5TzBwNGxFNHQrWWFBMEdnUjh1NVl0ZlFGUTBSYVN6NkU3Z0hJRVBBREhCNGV3QUVCTUVQZ0RFQklFUEFERkI0QU5BVEJENEFCQVRCRDRBeEFTQkR3QXhRZUFEUUV6OGYrb2tmZHRsOURvakFBQUFBRWxGVGtTdVFtQ0MiLCJtZWRpYXR5cGUiOiJpbWFnZS9wbmcifV0sImluc3RhbGwiOnsic3BlYyI6eyJjbHVzdGVyUGVybWlzc2lvbnMiOlt7InJ1bGVzIjpbeyJub25SZXNvdXJjZVVSTHMiOlsiL2xzLWFjY2VzcyIsIi9vbHMtbWV0cmljcy1hY2Nlc3MiXSwidmVyYnMiOlsiZ2V0Il19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsiY29uZmlnbWFwcyIsInBlcnNpc3RlbnR2b2x1bWVjbGFpbXMiLCJzZXJ2aWNlYWNjb3VudHMiLCJzZXJ2aWNlcyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyIiXSwicmVzb3VyY2VzIjpbInBvZHMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsic2VjcmV0cyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJkZWxldGVjb2xsZWN0aW9uIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlTmFtZXMiOlsicHVsbC1zZWNyZXQiXSwicmVzb3VyY2VzIjpbInNlY3JldHMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImFwcHMiXSwicmVzb3VyY2VzIjpbImRlcGxveW1lbnRzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImF1dGhlbnRpY2F0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsidG9rZW5yZXZpZXdzIl0sInZlcmJzIjpbImNyZWF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJhdXRob3JpemF0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsic3ViamVjdGFjY2Vzc3Jldmlld3MiXSwidmVyYnMiOlsiY3JlYXRlIl19LHsiYXBpR3JvdXBzIjpbImNvbmZpZy5vcGVuc2hpZnQuaW8iXSwicmVzb3VyY2VzIjpbImFwaXNlcnZlcnMiLCJjbHVzdGVydmVyc2lvbnMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImNvbnNvbGUub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJjb25zb2xlZXh0ZXJuYWxsb2dsaW5rcyIsImNvbnNvbGVsaW5rcyIsImNvbnNvbGVwbHVnaW5zIiwiY29uc29sZXBsdWdpbnMvZmluYWxpemVycyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsibW9uaXRvcmluZy5jb3Jlb3MuY29tIl0sInJlc291cmNlcyI6WyJwcm9tZXRoZXVzcnVsZXMiLCJzZXJ2aWNlbW9uaXRvcnMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsibmV0d29ya2luZy5rOHMuaW8iXSwicmVzb3VyY2VzIjpbIm5ldHdvcmtwb2xpY2llcyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJvbHMub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJvbHNjb25maWdzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIm9scy5vcGVuc2hpZnQuaW8iXSwicmVzb3VyY2VzIjpbIm9sc2NvbmZpZ3MvZmluYWxpemVycyJdLCJ2ZXJicyI6WyJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsib2xzLm9wZW5zaGlmdC5pbyJdLCJyZXNvdXJjZXMiOlsib2xzY29uZmlncy9zdGF0dXMiXSwidmVyYnMiOlsiZ2V0IiwicGF0Y2giLCJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsib3BlcmF0b3Iub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJjb25zb2xlcyJdLCJ2ZXJicyI6WyJnZXQiLCJsaXN0IiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsicmJhYy5hdXRob3JpemF0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsiY2x1c3RlcnJvbGViaW5kaW5ncyIsImNsdXN0ZXJyb2xlcyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJzdG9yYWdlLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsic3RvcmFnZWNsYXNzZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19XSwic2VydmljZUFjY291bnROYW1lIjoibGlnaHRzcGVlZC1vcGVyYXRvci1jb250cm9sbGVyLW1hbmFnZXIifV0sImRlcGxveW1lbnRzIjpbeyJsYWJlbCI6eyJhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQiOiJtYW5hZ2VyIiwiYXBwLmt1YmVybmV0ZXMuaW8vY3JlYXRlZC1ieSI6ImxpZ2h0c3BlZWQtb3BlcmF0b3IiLCJhcHAua3ViZXJuZXRlcy5pby9pbnN0YW5jZSI6ImNvbnRyb2xsZXItbWFuYWdlciIsImFwcC5rdWJlcm5ldGVzLmlvL21hbmFnZWQtYnkiOiJrdXN0b21pemUiLCJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjoiZGVwbG95bWVudCIsImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YiOiJsaWdodHNwZWVkLW9wZXJhdG9yIiwiY29udHJvbC1wbGFuZSI6ImNvbnRyb2xsZXItbWFuYWdlciJ9LCJuYW1lIjoibGlnaHRzcGVlZC1vcGVyYXRvci1jb250cm9sbGVyLW1hbmFnZXIiLCJzcGVjIjp7InJlcGxpY2FzIjoxLCJzZWxlY3RvciI6eyJtYXRjaExhYmVscyI6eyJjb250cm9sLXBsYW5lIjoiY29udHJvbGxlci1tYW5hZ2VyIn19LCJzdHJhdGVneSI6e30sInRlbXBsYXRlIjp7Im1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7Imt1YmVjdGwua3ViZXJuZXRlcy5pby9kZWZhdWx0LWNvbnRhaW5lciI6Im1hbmFnZXIifSwibGFiZWxzIjp7ImNvbnRyb2wtcGxhbmUiOiJjb250cm9sbGVyLW1hbmFnZXIifX0sInNwZWMiOnsiY29udGFpbmVycyI6W3siYXJncyI6WyItLWxlYWRlci1lbGVjdCIsIi0taGVhbHRoLXByb2JlLWJpbmQtYWRkcmVzcz06ODA4MSIsIi0tbWV0cmljcy1iaW5kLWFkZHJlc3M9Ojg0NDMiLCItLXNlY3VyZS1tZXRyaWNzLXNlcnZlciIsIi0tY2VydC1kaXI9L2V0Yy90bHMvcHJpdmF0ZSIsIi0tbGNvcmUtaW1hZ2U9cXVheS5pby9saWdodHNwZWVkLWNvcmUvbGlnaHRzcGVlZC1zdGFjazpkZXYtbGF0ZXN0IiwiLS11c2UtbGNvcmU9ZmFsc2UiLCItLXNlcnZpY2UtaW1hZ2U9cmVnaXN0cnkucmVkaGF0LmlvL29wZW5zaGlmdC1saWdodHNwZWVkL2xpZ2h0c3BlZWQtc2VydmljZS1hcGktcmhlbDlAc2hhMjU2OmNkZDgxOTI1MTkzNmYxYTZhYTA3ZDQxNmVmMzNjNTE5YjMzZjdlNjlmYjVjNjE4YTcxNjU2M2JjMWRiNzg4NGUiLCItLWNvbnNvbGUtaW1hZ2U9cmVnaXN0cnkucmVkaGF0LmlvL29wZW5zaGlmdC1saWdodHNwZWVkL2xpZ2h0c3BlZWQtY29uc29sZS1wbHVnaW4tcmhlbDlAc2hhMjU2OjQ0YTU2NDdmMjA2NmZlMzQ4ZjRjODJkNzg0ZTMwMzhkZDI3ZTY0YTEyYjQzNWNiZjhiMmIzMTU2MTM4NDEzMGYiLCItLWNvbnNvbGUtaW1hZ2UtcGY1PXJlZ2lzdHJ5LnJlZGhhdC5pby9vcGVuc2hpZnQtbGlnaHRzcGVlZC9saWdodHNwZWVkLWNvbnNvbGUtcGx1Z2luLXBmNS1yaGVsOUBzaGEyNTY6OTU3Mzk0MmE2ZDE2MjhmYjY1OGIyMGZlNDg3YmUwYzU0OWNjNDNjZDJhMGE0YTJiOGM1ODYyYjM5OTljNTIxYiIsIi0tcG9zdGdyZXMtaW1hZ2U9cmVnaXN0cnkucmVkaGF0LmlvL3JoZWw5L3Bvc3RncmVzcWwtMTZAc2hhMjU2OjQyZjM4NWFjM2M5Yjg5MTM0MjZkYTdjNTdlNzBiYzY2MTdjZDIzN2FhZjY5N2M2NjdmNjM4NWE4YzBiMDExOGIiLCItLW9wZW5zaGlmdC1tY3Atc2VydmVyLWltYWdlPXJlZ2lzdHJ5LnJlZGhhdC5pby9vcGVuc2hpZnQtbGlnaHRzcGVlZC9vcGVuc2hpZnQtbWNwLXNlcnZlci1yaGVsOUBzaGEyNTY6NjM4ZGNlZjYyYzRjN2U1NjE3MDdiOTQxOWJjZTJkNjFkYjg4NWMwYThlYTE5YmI1MTJlNDE0MzhmYTE5ZGM2ZCIsIi0tZGF0YXZlcnNlLWV4cG9ydGVyLWltYWdlPXJlZ2lzdHJ5LnJlZGhhdC5pby9vcGVuc2hpZnQtbGlnaHRzcGVlZC9saWdodHNwZWVkLXRvLWRhdGF2ZXJzZS1leHBvcnRlci1yaGVsOUBzaGEyNTY6YTM3ZWFkMjE2ZjJjYzY5ODEzYTgxYjlkNTFmNTJkYTE0ZWZkMzU5ZjEzM2Q5ODBlOWQxYjJhZTk5MzVkZmRiZCIsIi0tb2NwLXJhZy1pbWFnZT1yZWdpc3RyeS5yZWRoYXQuaW8vb3BlbnNoaWZ0LWxpZ2h0c3BlZWQvbGlnaHRzcGVlZC1vY3AtcmFnLXJoZWw5QHNoYTI1Njo1OWM1YTM0NTc1OGIzMzZkODcxZGFjMDU0NTQyOTE1MDQ4OTNiZmY5NmMzYzljMjg2MGIzNmI1YmE5NTUxNzQzIl0sImNvbW1hbmQiOlsiL21hbmFnZXIiXSwiZW52IjpbeyJuYW1lIjoiV0FUQ0hfTkFNRVNQQUNFIiwidmFsdWVGcm9tIjp7ImZpZWxkUmVmIjp7ImZpZWxkUGF0aCI6Im1ldGFkYXRhLmFubm90YXRpb25zWydvbG0udGFyZ2V0TmFtZXNwYWNlcyddIn19fV0sImltYWdlIjoicmVnaXN0cnkucmVkaGF0LmlvL29wZW5zaGlmdC1saWdodHNwZWVkL2xpZ2h0c3BlZWQtcmhlbDktb3BlcmF0b3JAc2hhMjU2OjU1YWFhZWFkYzhiZTBhNzAzZDRkZDM2ZmRlYjdjZjk5NmE0NjhlOWM4MTI4OGU4ODMzNzM4ZTBkMjE4YWExMTAiLCJpbWFnZVB1bGxQb2xpY3kiOiJBbHdheXMiLCJsaXZlbmVzc1Byb2JlIjp7Imh0dHBHZXQiOnsicGF0aCI6Ii9oZWFsdGh6IiwicG9ydCI6ODA4MX0sImluaXRpYWxEZWxheVNlY29uZHMiOjE1LCJwZXJpb2RTZWNvbmRzIjoyMH0sIm5hbWUiOiJtYW5hZ2VyIiwicG9ydHMiOlt7ImNvbnRhaW5lclBvcnQiOjg0NDMsIm5hbWUiOiJtZXRyaWNzIiwicHJvdG9jb2wiOiJUQ1AifV0sInJlYWRpbmVzc1Byb2JlIjp7Imh0dHBHZXQiOnsicGF0aCI6Ii9yZWFkeXoiLCJwb3J0Ijo4MDgxfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6NSwicGVyaW9kU2Vjb25kcyI6MTB9LCJyZXNvdXJjZXMiOnsibGltaXRzIjp7ImNwdSI6IjUwMG0iLCJtZW1vcnkiOiIyNTZNaSJ9LCJyZXF1ZXN0cyI6eyJjcHUiOiIxMG0iLCJtZW1vcnkiOiI2NE1pIn19LCJzZWN1cml0eUNvbnRleHQiOnsiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjpmYWxzZSwiY2FwYWJpbGl0aWVzIjp7ImRyb3AiOlsiQUxMIl19LCJyZWFkT25seVJvb3RGaWxlc3lzdGVtIjp0cnVlfSwidm9sdW1lTW91bnRzIjpbeyJtb3VudFBhdGgiOiIvZXRjL3Rscy9wcml2YXRlIiwibmFtZSI6ImNvbnRyb2xsZXItbWFuYWdlci10bHMiLCJyZWFkT25seSI6dHJ1ZX1dfV0sInNlY3VyaXR5Q29udGV4dCI6eyJydW5Bc05vblJvb3QiOnRydWV9LCJzZXJ2aWNlQWNjb3VudE5hbWUiOiJsaWdodHNwZWVkLW9wZXJhdG9yLWNvbnRyb2xsZXItbWFuYWdlciIsInRlcm1pbmF0aW9uR3JhY2VQZXJpb2RTZWNvbmRzIjoxMCwidm9sdW1lcyI6W3sibmFtZSI6ImNvbnRyb2xsZXItbWFuYWdlci10bHMiLCJzZWNyZXQiOnsic2VjcmV0TmFtZSI6ImNvbnRyb2xsZXItbWFuYWdlci10bHMifX1dfX19fV0sInBlcm1pc3Npb25zIjpbeyJydWxlcyI6W3siYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsiY29uZmlnbWFwcyJdLCJ2ZXJicyI6WyJnZXQiLCJsaXN0Iiwid2F0Y2giLCJjcmVhdGUiLCJ1cGRhdGUiLCJwYXRjaCIsImRlbGV0ZSJdfSx7ImFwaUdyb3VwcyI6WyJjb29yZGluYXRpb24uazhzLmlvIl0sInJlc291cmNlcyI6WyJsZWFzZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIiwiY3JlYXRlIiwidXBkYXRlIiwicGF0Y2giLCJkZWxldGUiXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJldmVudHMiXSwidmVyYnMiOlsiY3JlYXRlIiwicGF0Y2giXX0seyJhcGlHcm91cHMiOlsicmJhYy5hdXRob3JpemF0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsicm9sZWJpbmRpbmdzIiwicm9sZXMiXSwidmVyYnMiOlsiKiJdfV0sInNlcnZpY2VBY2NvdW50TmFtZSI6ImxpZ2h0c3BlZWQtb3BlcmF0b3ItY29udHJvbGxlci1tYW5hZ2VyIn1dfSwic3RyYXRlZ3kiOiJkZXBsb3ltZW50In0sImluc3RhbGxNb2RlcyI6W3sic3VwcG9ydGVkIjp0cnVlLCJ0eXBlIjoiT3duTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOmZhbHNlLCJ0eXBlIjoiU2luZ2xlTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOmZhbHNlLCJ0eXBlIjoiTXVsdGlOYW1lc3BhY2UifSx7InN1cHBvcnRlZCI6ZmFsc2UsInR5cGUiOiJBbGxOYW1lc3BhY2VzIn1dLCJrZXl3b3JkcyI6WyJhaSIsImFzc2lzdGFudCIsIm9wZW5zaGlmdCIsImxsbSJdLCJsaW5rcyI6W3sibmFtZSI6IkxpZ2h0c3BlZWQgT3BlcmF0b3IiLCJ1cmwiOiJodHRwczovL2dpdGh1Yi5jb20vb3BlbnNoaWZ0L2xpZ2h0c3BlZWQtb3BlcmF0b3IifV0sIm1hdHVyaXR5IjoiYWxwaGEiLCJtaW5LdWJlVmVyc2lvbiI6IjEuMjguMCIsInByb3ZpZGVyIjp7Im5hbWUiOiJSZWQgSGF0LCBJbmMiLCJ1cmwiOiJodHRwczovL2dpdGh1Yi5jb20vb3BlbnNoaWZ0L2xpZ2h0c3BlZWQtc2VydmljZSJ9LCJyZWxhdGVkSW1hZ2VzIjpbeyJpbWFnZSI6InJlZ2lzdHJ5LnJlZGhhdC5pby9vcGVuc2hpZnQtbGlnaHRzcGVlZC9saWdodHNwZWVkLXNlcnZpY2UtYXBpLXJoZWw5QHNoYTI1NjpjZGQ4MTkyNTE5MzZmMWE2YWEwN2Q0MTZlZjMzYzUxOWIzM2Y3ZTY5ZmI1YzYxOGE3MTY1NjNiYzFkYjc4ODRlIiwibmFtZSI6ImxpZ2h0c3BlZWQtc2VydmljZS1hcGkifSx7ImltYWdlIjoicmVnaXN0cnkucmVkaGF0LmlvL29wZW5zaGlmdC1saWdodHNwZWVkL2xpZ2h0c3BlZWQtY29uc29sZS1wbHVnaW4tcmhlbDlAc2hhMjU2OjQ0YTU2NDdmMjA2NmZlMzQ4ZjRjODJkNzg0ZTMwMzhkZDI3ZTY0YTEyYjQzNWNiZjhiMmIzMTU2MTM4NDEzMGYiLCJuYW1lIjoibGlnaHRzcGVlZC1jb25zb2xlLXBsdWdpbiJ9LHsiaW1hZ2UiOiJyZWdpc3RyeS5yZWRoYXQuaW8vb3BlbnNoaWZ0LWxpZ2h0c3BlZWQvbGlnaHRzcGVlZC1jb25zb2xlLXBsdWdpbi1wZjUtcmhlbDlAc2hhMjU2Ojk1NzM5NDJhNmQxNjI4ZmI2NThiMjBmZTQ4N2JlMGM1NDljYzQzY2QyYTBhNGEyYjhjNTg2MmIzOTk5YzUyMWIiLCJuYW1lIjoibGlnaHRzcGVlZC1jb25zb2xlLXBsdWdpbi1wZjUifSx7ImltYWdlIjoicmVnaXN0cnkucmVkaGF0LmlvL29wZW5zaGlmdC1saWdodHNwZWVkL2xpZ2h0c3BlZWQtcmhlbDktb3BlcmF0b3JAc2hhMjU2OjU1YWFhZWFkYzhiZTBhNzAzZDRkZDM2ZmRlYjdjZjk5NmE0NjhlOWM4MTI4OGU4ODMzNzM4ZTBkMjE4YWExMTAiLCJuYW1lIjoibGlnaHRzcGVlZC1vcGVyYXRvciJ9LHsiaW1hZ2UiOiJyZWdpc3RyeS5yZWRoYXQuaW8vb3BlbnNoaWZ0LWxpZ2h0c3BlZWQvb3BlbnNoaWZ0LW1jcC1zZXJ2ZXItcmhlbDlAc2hhMjU2OjYzOGRjZWY2MmM0YzdlNTYxNzA3Yjk0MTliY2UyZDYxZGI4ODVjMGE4ZWExOWJiNTEyZTQxNDM4ZmExOWRjNmQiLCJuYW1lIjoib3BlbnNoaWZ0LW1jcC1zZXJ2ZXIifSx7ImltYWdlIjoicmVnaXN0cnkucmVkaGF0LmlvL29wZW5zaGlmdC1saWdodHNwZWVkL2xpZ2h0c3BlZWQtdG8tZGF0YXZlcnNlLWV4cG9ydGVyLXJoZWw5QHNoYTI1NjphMzdlYWQyMTZmMmNjNjk4MTNhODFiOWQ1MWY1MmRhMTRlZmQzNTlmMTMzZDk4MGU5ZDFiMmFlOTkzNWRmZGJkIiwibmFtZSI6ImxpZ2h0c3BlZWQtdG8tZGF0YXZlcnNlLWV4cG9ydGVyIn0seyJpbWFnZSI6InJlZ2lzdHJ5LnJlZGhhdC5pby9vcGVuc2hpZnQtbGlnaHRzcGVlZC9saWdodHNwZWVkLW9jcC1yYWctcmhlbDlAc2hhMjU2OjU5YzVhMzQ1NzU4YjMzNmQ4NzFkYWMwNTQ1NDI5MTUwNDg5M2JmZjk2YzNjOWMyODYwYjM2YjViYTk1NTE3NDMiLCJuYW1lIjoibGlnaHRzcGVlZC1vY3AtcmFnIn0seyJpbWFnZSI6InJlZ2lzdHJ5LnJlZGhhdC5pby9yaGVsOS9wb3N0Z3Jlc3FsLTE2QHNoYTI1Njo0MmYzODVhYzNjOWI4OTEzNDI2ZGE3YzU3ZTcwYmM2NjE3Y2QyMzdhYWY2OTdjNjY3ZjYzODVhOGMwYjAxMThiIiwibmFtZSI6ImxpZ2h0c3BlZWQtcG9zdGdyZXNxbCJ9XSwidmVyc2lvbiI6IjEuMC45In19 + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJsYWJlbHMiOnsiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjoibWV0cmljcyIsImFwcC5rdWJlcm5ldGVzLmlvL25hbWUiOiJjbHVzdGVycm9sZSIsImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YiOiJsaWdodHNwZWVkLW9wZXJhdG9yIn0sIm5hbWUiOiJsaWdodHNwZWVkLW9wZXJhdG9yLW9scy1tZXRyaWNzLXJlYWRlciJ9LCJydWxlcyI6W3sibm9uUmVzb3VyY2VVUkxzIjpbIi9vbHMtbWV0cmljcy1hY2Nlc3MiXSwidmVyYnMiOlsiZ2V0Il19LHsibm9uUmVzb3VyY2VVUkxzIjpbIi9scy1hY2Nlc3MiXSwidmVyYnMiOlsiZ2V0Il19XX0= + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJsYWJlbHMiOnsiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjoidXNlci1hY2Nlc3MiLCJhcHAua3ViZXJuZXRlcy5pby9jcmVhdGVkLWJ5IjoibGlnaHRzcGVlZC1vcGVyYXRvciIsImFwcC5rdWJlcm5ldGVzLmlvL2luc3RhbmNlIjoicXVlcnktYWNjZXNzIiwiYXBwLmt1YmVybmV0ZXMuaW8vbWFuYWdlZC1ieSI6Imt1c3RvbWl6ZSIsImFwcC5rdWJlcm5ldGVzLmlvL25hbWUiOiJjbHVzdGVycm9sZSIsImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YiOiJsaWdodHNwZWVkLW9wZXJhdG9yIn0sIm5hbWUiOiJsaWdodHNwZWVkLW9wZXJhdG9yLXF1ZXJ5LWFjY2VzcyJ9LCJydWxlcyI6W3sibm9uUmVzb3VyY2VVUkxzIjpbIi9vbHMtYWNjZXNzIl0sInZlcmJzIjpbImdldCJdfSx7Im5vblJlc291cmNlVVJMcyI6WyIvbHMtYWNjZXNzIl0sInZlcmJzIjpbImdldCJdfV19 + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZUJpbmRpbmciLCJtZXRhZGF0YSI6eyJjcmVhdGlvblRpbWVzdGFtcCI6bnVsbCwibGFiZWxzIjp7ImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCI6Im1ldHJpY3MiLCJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjoiY2x1c3RlcnJvbGViaW5kaW5nIiwiYXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZiI6ImxpZ2h0c3BlZWQtb3BlcmF0b3IifSwibmFtZSI6ImxpZ2h0c3BlZWQtb3BlcmF0b3Itb2xzLW1ldHJpY3MtcmVhZGVyIn0sInJvbGVSZWYiOnsiYXBpR3JvdXAiOiJyYmFjLmF1dGhvcml6YXRpb24uazhzLmlvIiwia2luZCI6IkNsdXN0ZXJSb2xlIiwibmFtZSI6ImxpZ2h0c3BlZWQtb3BlcmF0b3Itb2xzLW1ldHJpY3MtcmVhZGVyIn0sInN1YmplY3RzIjpbeyJraW5kIjoiU2VydmljZUFjY291bnQiLCJuYW1lIjoibGlnaHRzcGVlZC1vcGVyYXRvci1tZXRyaWNzLXJlYWRlciIsIm5hbWVzcGFjZSI6Im9wZW5zaGlmdC1saWdodHNwZWVkIn1dfQ== + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJSb2xlIiwibWV0YWRhdGEiOnsiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsImxhYmVscyI6eyJhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQiOiJtZXRyaWNzIiwiYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSI6InJvbGUiLCJhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mIjoibGlnaHRzcGVlZC1vcGVyYXRvciJ9LCJuYW1lIjoibGlnaHRzcGVlZC1vcGVyYXRvci1wcm9tZXRoZXVzLW9wZXJhdG9yIn0sInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlTmFtZXMiOlsibWV0cmljcy1yZWFkZXItdG9rZW4iXSwicmVzb3VyY2VzIjpbInNlY3JldHMiXSwidmVyYnMiOlsiZ2V0Iiwid2F0Y2giLCJsaXN0Il19XX0= + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJSb2xlIiwibWV0YWRhdGEiOnsiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsImxhYmVscyI6eyJhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQiOiJtZXRyaWNzIiwiYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSI6InJvbGUiLCJhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mIjoibGlnaHRzcGVlZC1vcGVyYXRvciJ9LCJuYW1lIjoibGlnaHRzcGVlZC1vcGVyYXRvci1wcm9tZXRoZXVzLWs4cyJ9LCJydWxlcyI6W3siYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsic2VydmljZXMiLCJlbmRwb2ludHMiLCJwb2RzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJleHRlbnNpb25zIl0sInJlc291cmNlcyI6WyJpbmdyZXNzZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIm5ldHdvcmtpbmcuazhzLmlvIl0sInJlc291cmNlcyI6WyJpbmdyZXNzZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19XX0= + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJSb2xlQmluZGluZyIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJsYWJlbHMiOnsiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjoibWV0cmljcyIsImFwcC5rdWJlcm5ldGVzLmlvL25hbWUiOiJyb2xlYmluZGluZyIsImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YiOiJsaWdodHNwZWVkLW9wZXJhdG9yIn0sIm5hbWUiOiJsaWdodHNwZWVkLW9wZXJhdG9yLXByb21ldGhldXMtazhzIn0sInJvbGVSZWYiOnsiYXBpR3JvdXAiOiJyYmFjLmF1dGhvcml6YXRpb24uazhzLmlvIiwia2luZCI6IlJvbGUiLCJuYW1lIjoibGlnaHRzcGVlZC1vcGVyYXRvci1wcm9tZXRoZXVzLWs4cyJ9LCJzdWJqZWN0cyI6W3sia2luZCI6IlNlcnZpY2VBY2NvdW50IiwibmFtZSI6InByb21ldGhldXMtazhzIiwibmFtZXNwYWNlIjoib3BlbnNoaWZ0LW1vbml0b3JpbmcifV19 + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJSb2xlQmluZGluZyIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJsYWJlbHMiOnsiYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50IjoibWV0cmljcyIsImFwcC5rdWJlcm5ldGVzLmlvL25hbWUiOiJyb2xlYmluZGluZyIsImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YiOiJsaWdodHNwZWVkLW9wZXJhdG9yIn0sIm5hbWUiOiJsaWdodHNwZWVkLW9wZXJhdG9yLXByb21ldGhldXMtb3BlcmF0b3IifSwicm9sZVJlZiI6eyJhcGlHcm91cCI6InJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8iLCJraW5kIjoiUm9sZSIsIm5hbWUiOiJsaWdodHNwZWVkLW9wZXJhdG9yLXByb21ldGhldXMtb3BlcmF0b3IifSwic3ViamVjdHMiOlt7ImtpbmQiOiJTZXJ2aWNlQWNjb3VudCIsIm5hbWUiOiJwcm9tZXRoZXVzLW9wZXJhdG9yIiwibmFtZXNwYWNlIjoib3BlbnNoaWZ0LW1vbml0b3JpbmcifV19 + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoidjEiLCJraW5kIjoiU2VydmljZSIsIm1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InNlcnZpY2UuYmV0YS5vcGVuc2hpZnQuaW8vc2VydmluZy1jZXJ0LXNlY3JldC1uYW1lIjoiY29udHJvbGxlci1tYW5hZ2VyLXRscyJ9LCJjcmVhdGlvblRpbWVzdGFtcCI6bnVsbCwibGFiZWxzIjp7ImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCI6Im1hbmFnZXIiLCJhcHAua3ViZXJuZXRlcy5pby9jcmVhdGVkLWJ5IjoibGlnaHRzcGVlZC1vcGVyYXRvciIsImFwcC5rdWJlcm5ldGVzLmlvL2luc3RhbmNlIjoiY29udHJvbGxlci1tYW5hZ2VyLXNlcnZpY2UiLCJhcHAua3ViZXJuZXRlcy5pby9tYW5hZ2VkLWJ5Ijoia3VzdG9taXplIiwiYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSI6InNlcnZpY2UiLCJhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mIjoibGlnaHRzcGVlZC1vcGVyYXRvciIsImNvbnRyb2wtcGxhbmUiOiJjb250cm9sbGVyLW1hbmFnZXIifSwibmFtZSI6ImxpZ2h0c3BlZWQtb3BlcmF0b3ItY29udHJvbGxlci1tYW5hZ2VyLXNlcnZpY2UifSwic3BlYyI6eyJwb3J0cyI6W3sibmFtZSI6Im1ldHJpY3MiLCJwb3J0Ijo4NDQzLCJwcm90b2NvbCI6IlRDUCIsInRhcmdldFBvcnQiOiJtZXRyaWNzIn1dLCJzZWxlY3RvciI6eyJjb250cm9sLXBsYW5lIjoiY29udHJvbGxlci1tYW5hZ2VyIn19LCJzdGF0dXMiOnsibG9hZEJhbGFuY2VyIjp7fX19 + - type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoidjEiLCJraW5kIjoiU2VydmljZUFjY291bnQiLCJtZXRhZGF0YSI6eyJjcmVhdGlvblRpbWVzdGFtcCI6bnVsbCwibGFiZWxzIjp7ImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCI6Im1ldHJpY3MiLCJhcHAua3ViZXJuZXRlcy5pby9uYW1lIjoic2VydmljZS1hY2NvdW50IiwiYXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZiI6ImxpZ2h0c3BlZWQtb3BlcmF0b3IifSwibmFtZSI6ImxpZ2h0c3BlZWQtb3BlcmF0b3ItbWV0cmljcy1yZWFkZXIifX0= +relatedImages: + - name: lightspeed-service-api + image: registry.redhat.io/openshift-lightspeed/lightspeed-service-api-rhel9@sha256:cdd819251936f1a6aa07d416ef33c519b33f7e69fb5c618a716563bc1db7884e + revision: 456957bb997bfdcf26c1de403418af5eb9c9d3a5 + - name: lightspeed-console-plugin + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-rhel9@sha256:44a5647f2066fe348f4c82d784e3038dd27e64a12b435cbf8b2b31561384130f + revision: 1599c2c74a25be8d35902ee818aaeff53917142f + - name: lightspeed-console-plugin-pf5 + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-pf5-rhel9@sha256:9573942a6d1628fb658b20fe487be0c549cc43cd2a0a4a2b8c5862b3999c521b + revision: 2816bf8732cbdc8d1a5da16d39fa63ba290d0a8a + - name: lightspeed-operator + image: registry.redhat.io/openshift-lightspeed/lightspeed-rhel9-operator@sha256:55aaaeadc8be0a703d4dd36fdeb7cf996a468e9c81288e8833738e0d218aa110 + revision: c32b7bb1ffa8375657b42ebcebbe5ec3091d11eb + - name: openshift-mcp-server + image: registry.redhat.io/openshift-lightspeed/openshift-mcp-server-rhel9@sha256:638dcef62c4c7e561707b9419bce2d61db885c0a8ea19bb512e41438fa19dc6d + revision: 18af0e1b8ead1aaf7c8467bceb2bdba37de2bd39 + - name: lightspeed-to-dataverse-exporter + image: registry.redhat.io/openshift-lightspeed/lightspeed-to-dataverse-exporter-rhel9@sha256:a37ead216f2cc69813a81b9d51f52da14efd359f133d980e9d1b2ae9935dfdbd + revision: 68622c76d8df8c2da2447d850f2a26c569d0d37f + - name: lightspeed-ocp-rag + image: registry.redhat.io/openshift-lightspeed/lightspeed-ocp-rag-rhel9@sha256:59c5a345758b336d871dac05454291504893bff96c3c9c2860b36b5ba9551743 + revision: 0e9ff9bed737d7afc4f39ca8e813d232a0e494bb + - name: lightspeed-postgresql + image: registry.redhat.io/rhel9/postgresql-16@sha256:42f385ac3c9b8913426da7c57e70bc6617cd237aaf697c667f6385a8c0b0118b + - name: lightspeed-operator-bundle + image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 + revision: 07253f9ffb66f4df41a70b13a4c5ecfe6a591c16 +schema: olm.bundle diff --git a/lightspeed-catalog-4.16/index.yaml b/lightspeed-catalog-4.16/index.yaml index 556ce9539..5508a3098 100644 --- a/lightspeed-catalog-4.16/index.yaml +++ b/lightspeed-catalog-4.16/index.yaml @@ -12,6 +12,8 @@ name: stable entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8 --- schema: olm.channel package: lightspeed-operator @@ -19,3 +21,5 @@ name: alpha entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8 diff --git a/lightspeed-catalog-4.17/bundle-v1.0.9.yaml b/lightspeed-catalog-4.17/bundle-v1.0.9.yaml new file mode 100644 index 000000000..c5f9273a6 --- /dev/null +++ b/lightspeed-catalog-4.17/bundle-v1.0.9.yaml @@ -0,0 +1,449 @@ +--- +image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 +name: lightspeed-operator.v1.0.9 +package: lightspeed-operator +properties: + - type: olm.gvk + value: + group: ols.openshift.io + kind: OLSConfig + version: v1alpha1 + - type: olm.package + value: + packageName: lightspeed-operator + version: 1.0.9 + - type: olm.csv.metadata + value: + annotations: + alm-examples: |- + [ + { + "apiVersion": "ols.openshift.io/v1alpha1", + "kind": "OLSConfig", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "lightspeed-operator", + "app.kubernetes.io/instance": "olsconfig-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "olsconfig", + "app.kubernetes.io/part-of": "lightspeed-operator" + }, + "name": "cluster" + }, + "spec": { + "llm": { + "providers": [ + { + "credentialsSecretRef": { + "name": "credentials" + }, + "models": [ + { + "name": "gpt-3.5-turbo-1106" + } + ], + "name": "OpenAI" + } + ] + } + } + } + ] + capabilities: Basic Install + console.openshift.io/operator-monitoring-default: "true" + createdAt: "2025-12-18T10:30:55Z" + features.operators.openshift.io/cnf: "false" + features.operators.openshift.io/cni: "false" + features.operators.openshift.io/csi: "false" + features.operators.openshift.io/disconnected: "true" + features.operators.openshift.io/fips-compliant: "true" + features.operators.openshift.io/proxy-aware: "false" + features.operators.openshift.io/tls-profiles: "false" + features.operators.openshift.io/token-auth-aws: "false" + features.operators.openshift.io/token-auth-azure: "false" + features.operators.openshift.io/token-auth-gcp: "false" + operatorframework.io/cluster-monitoring: "true" + operatorframework.io/suggested-namespace: openshift-lightspeed + operators.openshift.io/valid-subscription: '["OpenShift Container Platform", "OpenShift Platform Plus", "OpenShift Kubernetes Engine", "OpenShift Virtualization Engine"]' + operators.operatorframework.io/builder: operator-sdk-v1.33.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + repository: https://github.com/openshift/lightspeed-operator + apiServiceDefinitions: {} + crdDescriptions: + owned: + - description: Red Hat OpenShift Lightspeed instance. OLSConfig is the Schema for the olsconfigs API + displayName: OLSConfig + kind: OLSConfig + name: olsconfigs.ols.openshift.io + specDescriptors: + - description: Provider name + displayName: Name + path: llm.providers[0].name + - description: OLS deployment settings + displayName: Deployment + path: ols.deployment + - description: Provider API URL + displayName: URL + path: llm.providers[0].url + - description: Conversation cache settings + displayName: Conversation Cache + path: ols.conversationCache + - description: The name of the secret object that stores API provider credentials + displayName: Credential Secret + path: llm.providers[0].credentialsSecretRef + - description: |- + Feature Gates holds list of features to be enabled explicitly, otherwise they are disabled by default. + possible values: MCPServer + displayName: Feature Gates + path: featureGates + - displayName: LLM Settings + path: llm + - displayName: Providers + path: llm.providers + - description: API Version for Azure OpenAI provider + displayName: Azure OpenAI API Version + path: llm.providers[0].apiVersion + - description: Azure OpenAI deployment name + displayName: Azure OpenAI deployment name + path: llm.providers[0].deploymentName + - description: List of models from the provider + displayName: Models + path: llm.providers[0].models + - description: Defines the model's context window size, in tokens. The default is 128k tokens. + displayName: Context Window Size + path: llm.providers[0].models[0].contextWindowSize + - description: Model name + displayName: Name + path: llm.providers[0].models[0].name + - description: Model API parameters + displayName: Parameters + path: llm.providers[0].models[0].parameters + - description: Max tokens for response. The default is 2048 tokens. + displayName: Max Tokens For Response + path: llm.providers[0].models[0].parameters.maxTokensForResponse + - description: Model API URL + displayName: URL + path: llm.providers[0].models[0].url + - description: Watsonx Project ID + displayName: Watsonx Project ID + path: llm.providers[0].projectID + - description: TLS Security Profile used by connection to provider + displayName: TLS Security Profile + path: llm.providers[0].tlsSecurityProfile + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Provider type + displayName: Provider Type + path: llm.providers[0].type + - description: MCP Server settings + displayName: MCP Server Settings + path: mcpServers + - description: Name of the MCP server + displayName: Name + path: mcpServers[0].name + - description: Streamable HTTP Transport settings + displayName: Streamable HTTP Transport + path: mcpServers[0].streamableHTTP + - description: Enable Server Sent Events + displayName: Enable Server Sent Events + path: mcpServers[0].streamableHTTP.enableSSE + - description: |- + Headers to send to the MCP server + the map contains the header name and the name of the secret with the content of the header. This secret + should contain a header path in the data containing a header value. + A special case is usage of the kubernetes token in the header. to specify this use + a string "kubernetes" instead of the secret name + displayName: Headers + path: mcpServers[0].streamableHTTP.headers + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:keyValue + - description: SSE Read Timeout, default is 10 seconds + displayName: SSE Read Timeout in seconds + path: mcpServers[0].streamableHTTP.sseReadTimeout + - description: Timeout for the MCP server, default is 5 seconds + displayName: Timeout in seconds + path: mcpServers[0].streamableHTTP.timeout + - description: URL of the MCP server + displayName: URL + path: mcpServers[0].streamableHTTP.url + - displayName: OLS Settings + path: ols + - description: Additional CA certificates for TLS communication between OLS service and LLM Provider + displayName: Additional CA Configmap + path: ols.additionalCAConfigMapRef + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Only use BYOK RAG sources, ignore the OpenShift documentation RAG + displayName: Only use BYOK RAG sources + path: ols.byokRAGOnly + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - displayName: PostgreSQL Settings + path: ols.conversationCache.postgres + - description: 'Postgres maxconnections. Default: "2000"' + displayName: Maximum Connections + path: ols.conversationCache.postgres.maxConnections + - description: Postgres sharedbuffers + displayName: Shared Buffer Size + path: ols.conversationCache.postgres.sharedBuffers + - description: 'Conversation cache type. Default: "postgres"' + displayName: Cache Type + path: ols.conversationCache.type + - description: Default model for usage + displayName: Default Model + path: ols.defaultModel + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:text + - description: Default provider for usage + displayName: Default Provider + path: ols.defaultProvider + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:text + - description: API container settings. + displayName: API Deployment + path: ols.deployment.api + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.api.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Console container settings. + displayName: Console Deployment + path: ols.deployment.console + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.console.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Data Collector container settings. + displayName: Data Collector Container + path: ols.deployment.dataCollector + - description: Database container settings. + displayName: Database Deployment + path: ols.deployment.database + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.database.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Llama Stack container settings. + displayName: Llama Stack Container + path: ols.deployment.llamaStack + - description: MCP server container settings. + displayName: MCP Server Container + path: ols.deployment.mcpServer + - description: Enable introspection features + displayName: Introspection Enabled + path: ols.introspectionEnabled + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - description: 'Log level. Valid options are DEBUG, INFO, WARNING, ERROR and CRITICAL. Default: "INFO".' + displayName: Log level + path: ols.logLevel + - description: Proxy settings for connecting to external servers, such as LLM providers. + displayName: Proxy Settings + path: ols.proxyConfig + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: The configmap holding proxy CA certificate + displayName: Proxy CA Certificate + path: ols.proxyConfig.proxyCACertificate + - description: |- + Proxy URL, e.g. https://proxy.example.com:8080 + If not specified, the cluster wide proxy will be used, though env var "https_proxy". + displayName: Proxy URL + path: ols.proxyConfig.proxyURL + - description: Query filters + displayName: Query Filters + path: ols.queryFilters + - description: Filter name. + displayName: Filter Name + path: ols.queryFilters[0].name + - description: Filter pattern. + displayName: The pattern to replace + path: ols.queryFilters[0].pattern + - description: Replacement for the matched pattern. + displayName: Replace With + path: ols.queryFilters[0].replaceWith + - description: Custom system prompt for LLM queries. If not specified, uses the default OpenShift Lightspeed prompt. + displayName: Query System Prompt + path: ols.querySystemPrompt + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: LLM Token Quota Configuration + displayName: LLM Token Quota Configuration + path: ols.quotaHandlersConfig + - description: Enable token history + displayName: Enable Token History + path: ols.quotaHandlersConfig.enableTokenHistory + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - description: Token quota limiters + displayName: Token Quota Limiters + path: ols.quotaHandlersConfig.limitersConfig + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Initial value of the token quota + displayName: Initial Token Quota + path: ols.quotaHandlersConfig.limitersConfig[0].initialQuota + - description: Name of the limiter + displayName: Limiter Name + path: ols.quotaHandlersConfig.limitersConfig[0].name + - description: Period of time the token quota is for + displayName: Period of Time the Token Quota Is For + path: ols.quotaHandlersConfig.limitersConfig[0].period + - description: Token quota increase step + displayName: Token Quota Increase Step + path: ols.quotaHandlersConfig.limitersConfig[0].quotaIncrease + - description: Type of the limiter + displayName: 'Limiter Type. Accepted Values: cluster_limiter, user_limiter.' + path: ols.quotaHandlersConfig.limitersConfig[0].type + - description: RAG databases + displayName: RAG Databases + path: ols.rag + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: The URL of the container image to use as a RAG source + displayName: Image + path: ols.rag[0].image + - description: The Index ID of the RAG database. Only needed if there are multiple indices in the database. + displayName: Index ID + path: ols.rag[0].indexID + - description: The path to the RAG database inside of the container image + displayName: Index Path in the Image + path: ols.rag[0].indexPath + - description: Persistent Storage Configuration + displayName: Persistent Storage Configuration + path: ols.storage + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Storage class of the requested volume + displayName: Storage Class of the Requested Volume + path: ols.storage.class + - description: Size of the requested volume + displayName: Size of the Requested Volume + path: ols.storage.size + - description: TLS configuration of the Lightspeed backend's HTTPS endpoint + displayName: TLS Configuration + path: ols.tlsConfig + - description: |- + KeyCertSecretRef references a Secret containing TLS certificate and key. + The Secret must contain the following keys: + - tls.crt: Server certificate (PEM format) - REQUIRED + - tls.key: Private key (PEM format) - REQUIRED + - ca.crt: CA certificate for console proxy trust (PEM format) - OPTIONAL + + If ca.crt is not provided, the OpenShift Console proxy will use the default system trust store. + displayName: TLS Certificate Secret Reference + path: ols.tlsConfig.keyCertSecretRef + - description: TLS Security Profile used by API endpoints + displayName: TLS Security Profile + path: ols.tlsSecurityProfile + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: User data collection switches + displayName: User Data Collection + path: ols.userDataCollection + - displayName: Do Not Collect User Feedback + path: ols.userDataCollection.feedbackDisabled + - displayName: Do Not Collect Transcripts + path: ols.userDataCollection.transcriptsDisabled + - displayName: OLS Data Collector Settings + path: olsDataCollector + - description: 'Log level. Valid options are DEBUG, INFO, WARNING, ERROR and CRITICAL. Default: "INFO".' + displayName: Log level + path: olsDataCollector.logLevel + statusDescriptors: + - description: |- + Conditions represent the state of individual components + Always populated after first reconciliation + displayName: Conditions + path: conditions + - description: |- + DiagnosticInfo provides detailed troubleshooting information when deployments fail. + Each entry contains pod-level error details for a specific component. + This array is automatically populated when deployments fail and cleared when they recover. + Only present during deployment failures. + displayName: Diagnostic Info + path: diagnosticInfo + - description: |- + OverallStatus provides a high-level summary of the entire system's health. + Aggregates all component conditions into a single status value. + - Ready: All components are healthy + - NotReady: At least one component is not ready (check conditions for details) + Always set after first reconciliation + displayName: Overall Status + path: overallStatus + version: v1alpha1 + description: |- + OpenShift Lightspeed Operator provides generative AI-based virtual assistant which integrates into the OpenShift web console. OpenShift Lightspeed can answer natural language questions related to OpenShift Container Platform. + + To configure the OpenShift Lightspeed Operator, you need a Large Language Model (LLM) . You can host the LLM using RHELAI or RHOAI or use one of the models from the following Software-as-a-Service providers: + + - OpenAI + - Microsoft Azure OpenAI + - IBM WatsonX + + For more information, see [About OpenShift Lightspeed](https://docs.redhat.com/en/documentation/red_hat_openshift_lightspeed/1.0tp1/html/about/ols-about-openshift-lightspeed) in the official product documentation. + + Questions, comments, concerns, or just want to talk to the OpenShift Lightspeed team? [Email us](mailto:openshift-lightspeed-contact-requests@redhat.com)! + displayName: OpenShift Lightspeed Operator + installModes: + - supported: true + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: false + type: AllNamespaces + keywords: + - ai + - assistant + - openshift + - llm + links: + - name: Lightspeed Operator + url: https://github.com/openshift/lightspeed-operator + maturity: alpha + minKubeVersion: 1.28.0 + provider: + name: Red Hat, Inc + url: https://github.com/openshift/lightspeed-service +relatedImages: + - name: lightspeed-service-api + image: registry.redhat.io/openshift-lightspeed/lightspeed-service-api-rhel9@sha256:cdd819251936f1a6aa07d416ef33c519b33f7e69fb5c618a716563bc1db7884e + revision: 456957bb997bfdcf26c1de403418af5eb9c9d3a5 + - name: lightspeed-console-plugin + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-rhel9@sha256:44a5647f2066fe348f4c82d784e3038dd27e64a12b435cbf8b2b31561384130f + revision: 1599c2c74a25be8d35902ee818aaeff53917142f + - name: lightspeed-console-plugin-pf5 + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-pf5-rhel9@sha256:9573942a6d1628fb658b20fe487be0c549cc43cd2a0a4a2b8c5862b3999c521b + revision: 2816bf8732cbdc8d1a5da16d39fa63ba290d0a8a + - name: lightspeed-operator + image: registry.redhat.io/openshift-lightspeed/lightspeed-rhel9-operator@sha256:55aaaeadc8be0a703d4dd36fdeb7cf996a468e9c81288e8833738e0d218aa110 + revision: c32b7bb1ffa8375657b42ebcebbe5ec3091d11eb + - name: openshift-mcp-server + image: registry.redhat.io/openshift-lightspeed/openshift-mcp-server-rhel9@sha256:638dcef62c4c7e561707b9419bce2d61db885c0a8ea19bb512e41438fa19dc6d + revision: 18af0e1b8ead1aaf7c8467bceb2bdba37de2bd39 + - name: lightspeed-to-dataverse-exporter + image: registry.redhat.io/openshift-lightspeed/lightspeed-to-dataverse-exporter-rhel9@sha256:a37ead216f2cc69813a81b9d51f52da14efd359f133d980e9d1b2ae9935dfdbd + revision: 68622c76d8df8c2da2447d850f2a26c569d0d37f + - name: lightspeed-ocp-rag + image: registry.redhat.io/openshift-lightspeed/lightspeed-ocp-rag-rhel9@sha256:59c5a345758b336d871dac05454291504893bff96c3c9c2860b36b5ba9551743 + revision: 0e9ff9bed737d7afc4f39ca8e813d232a0e494bb + - name: lightspeed-postgresql + image: registry.redhat.io/rhel9/postgresql-16@sha256:42f385ac3c9b8913426da7c57e70bc6617cd237aaf697c667f6385a8c0b0118b + - name: lightspeed-operator-bundle + image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 + revision: 07253f9ffb66f4df41a70b13a4c5ecfe6a591c16 +schema: olm.bundle diff --git a/lightspeed-catalog-4.17/index.yaml b/lightspeed-catalog-4.17/index.yaml index 556ce9539..5508a3098 100644 --- a/lightspeed-catalog-4.17/index.yaml +++ b/lightspeed-catalog-4.17/index.yaml @@ -12,6 +12,8 @@ name: stable entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8 --- schema: olm.channel package: lightspeed-operator @@ -19,3 +21,5 @@ name: alpha entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8 diff --git a/lightspeed-catalog-4.18/bundle-v1.0.9.yaml b/lightspeed-catalog-4.18/bundle-v1.0.9.yaml new file mode 100644 index 000000000..c5f9273a6 --- /dev/null +++ b/lightspeed-catalog-4.18/bundle-v1.0.9.yaml @@ -0,0 +1,449 @@ +--- +image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 +name: lightspeed-operator.v1.0.9 +package: lightspeed-operator +properties: + - type: olm.gvk + value: + group: ols.openshift.io + kind: OLSConfig + version: v1alpha1 + - type: olm.package + value: + packageName: lightspeed-operator + version: 1.0.9 + - type: olm.csv.metadata + value: + annotations: + alm-examples: |- + [ + { + "apiVersion": "ols.openshift.io/v1alpha1", + "kind": "OLSConfig", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "lightspeed-operator", + "app.kubernetes.io/instance": "olsconfig-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "olsconfig", + "app.kubernetes.io/part-of": "lightspeed-operator" + }, + "name": "cluster" + }, + "spec": { + "llm": { + "providers": [ + { + "credentialsSecretRef": { + "name": "credentials" + }, + "models": [ + { + "name": "gpt-3.5-turbo-1106" + } + ], + "name": "OpenAI" + } + ] + } + } + } + ] + capabilities: Basic Install + console.openshift.io/operator-monitoring-default: "true" + createdAt: "2025-12-18T10:30:55Z" + features.operators.openshift.io/cnf: "false" + features.operators.openshift.io/cni: "false" + features.operators.openshift.io/csi: "false" + features.operators.openshift.io/disconnected: "true" + features.operators.openshift.io/fips-compliant: "true" + features.operators.openshift.io/proxy-aware: "false" + features.operators.openshift.io/tls-profiles: "false" + features.operators.openshift.io/token-auth-aws: "false" + features.operators.openshift.io/token-auth-azure: "false" + features.operators.openshift.io/token-auth-gcp: "false" + operatorframework.io/cluster-monitoring: "true" + operatorframework.io/suggested-namespace: openshift-lightspeed + operators.openshift.io/valid-subscription: '["OpenShift Container Platform", "OpenShift Platform Plus", "OpenShift Kubernetes Engine", "OpenShift Virtualization Engine"]' + operators.operatorframework.io/builder: operator-sdk-v1.33.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + repository: https://github.com/openshift/lightspeed-operator + apiServiceDefinitions: {} + crdDescriptions: + owned: + - description: Red Hat OpenShift Lightspeed instance. OLSConfig is the Schema for the olsconfigs API + displayName: OLSConfig + kind: OLSConfig + name: olsconfigs.ols.openshift.io + specDescriptors: + - description: Provider name + displayName: Name + path: llm.providers[0].name + - description: OLS deployment settings + displayName: Deployment + path: ols.deployment + - description: Provider API URL + displayName: URL + path: llm.providers[0].url + - description: Conversation cache settings + displayName: Conversation Cache + path: ols.conversationCache + - description: The name of the secret object that stores API provider credentials + displayName: Credential Secret + path: llm.providers[0].credentialsSecretRef + - description: |- + Feature Gates holds list of features to be enabled explicitly, otherwise they are disabled by default. + possible values: MCPServer + displayName: Feature Gates + path: featureGates + - displayName: LLM Settings + path: llm + - displayName: Providers + path: llm.providers + - description: API Version for Azure OpenAI provider + displayName: Azure OpenAI API Version + path: llm.providers[0].apiVersion + - description: Azure OpenAI deployment name + displayName: Azure OpenAI deployment name + path: llm.providers[0].deploymentName + - description: List of models from the provider + displayName: Models + path: llm.providers[0].models + - description: Defines the model's context window size, in tokens. The default is 128k tokens. + displayName: Context Window Size + path: llm.providers[0].models[0].contextWindowSize + - description: Model name + displayName: Name + path: llm.providers[0].models[0].name + - description: Model API parameters + displayName: Parameters + path: llm.providers[0].models[0].parameters + - description: Max tokens for response. The default is 2048 tokens. + displayName: Max Tokens For Response + path: llm.providers[0].models[0].parameters.maxTokensForResponse + - description: Model API URL + displayName: URL + path: llm.providers[0].models[0].url + - description: Watsonx Project ID + displayName: Watsonx Project ID + path: llm.providers[0].projectID + - description: TLS Security Profile used by connection to provider + displayName: TLS Security Profile + path: llm.providers[0].tlsSecurityProfile + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Provider type + displayName: Provider Type + path: llm.providers[0].type + - description: MCP Server settings + displayName: MCP Server Settings + path: mcpServers + - description: Name of the MCP server + displayName: Name + path: mcpServers[0].name + - description: Streamable HTTP Transport settings + displayName: Streamable HTTP Transport + path: mcpServers[0].streamableHTTP + - description: Enable Server Sent Events + displayName: Enable Server Sent Events + path: mcpServers[0].streamableHTTP.enableSSE + - description: |- + Headers to send to the MCP server + the map contains the header name and the name of the secret with the content of the header. This secret + should contain a header path in the data containing a header value. + A special case is usage of the kubernetes token in the header. to specify this use + a string "kubernetes" instead of the secret name + displayName: Headers + path: mcpServers[0].streamableHTTP.headers + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:keyValue + - description: SSE Read Timeout, default is 10 seconds + displayName: SSE Read Timeout in seconds + path: mcpServers[0].streamableHTTP.sseReadTimeout + - description: Timeout for the MCP server, default is 5 seconds + displayName: Timeout in seconds + path: mcpServers[0].streamableHTTP.timeout + - description: URL of the MCP server + displayName: URL + path: mcpServers[0].streamableHTTP.url + - displayName: OLS Settings + path: ols + - description: Additional CA certificates for TLS communication between OLS service and LLM Provider + displayName: Additional CA Configmap + path: ols.additionalCAConfigMapRef + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Only use BYOK RAG sources, ignore the OpenShift documentation RAG + displayName: Only use BYOK RAG sources + path: ols.byokRAGOnly + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - displayName: PostgreSQL Settings + path: ols.conversationCache.postgres + - description: 'Postgres maxconnections. Default: "2000"' + displayName: Maximum Connections + path: ols.conversationCache.postgres.maxConnections + - description: Postgres sharedbuffers + displayName: Shared Buffer Size + path: ols.conversationCache.postgres.sharedBuffers + - description: 'Conversation cache type. Default: "postgres"' + displayName: Cache Type + path: ols.conversationCache.type + - description: Default model for usage + displayName: Default Model + path: ols.defaultModel + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:text + - description: Default provider for usage + displayName: Default Provider + path: ols.defaultProvider + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:text + - description: API container settings. + displayName: API Deployment + path: ols.deployment.api + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.api.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Console container settings. + displayName: Console Deployment + path: ols.deployment.console + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.console.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Data Collector container settings. + displayName: Data Collector Container + path: ols.deployment.dataCollector + - description: Database container settings. + displayName: Database Deployment + path: ols.deployment.database + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.database.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Llama Stack container settings. + displayName: Llama Stack Container + path: ols.deployment.llamaStack + - description: MCP server container settings. + displayName: MCP Server Container + path: ols.deployment.mcpServer + - description: Enable introspection features + displayName: Introspection Enabled + path: ols.introspectionEnabled + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - description: 'Log level. Valid options are DEBUG, INFO, WARNING, ERROR and CRITICAL. Default: "INFO".' + displayName: Log level + path: ols.logLevel + - description: Proxy settings for connecting to external servers, such as LLM providers. + displayName: Proxy Settings + path: ols.proxyConfig + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: The configmap holding proxy CA certificate + displayName: Proxy CA Certificate + path: ols.proxyConfig.proxyCACertificate + - description: |- + Proxy URL, e.g. https://proxy.example.com:8080 + If not specified, the cluster wide proxy will be used, though env var "https_proxy". + displayName: Proxy URL + path: ols.proxyConfig.proxyURL + - description: Query filters + displayName: Query Filters + path: ols.queryFilters + - description: Filter name. + displayName: Filter Name + path: ols.queryFilters[0].name + - description: Filter pattern. + displayName: The pattern to replace + path: ols.queryFilters[0].pattern + - description: Replacement for the matched pattern. + displayName: Replace With + path: ols.queryFilters[0].replaceWith + - description: Custom system prompt for LLM queries. If not specified, uses the default OpenShift Lightspeed prompt. + displayName: Query System Prompt + path: ols.querySystemPrompt + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: LLM Token Quota Configuration + displayName: LLM Token Quota Configuration + path: ols.quotaHandlersConfig + - description: Enable token history + displayName: Enable Token History + path: ols.quotaHandlersConfig.enableTokenHistory + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - description: Token quota limiters + displayName: Token Quota Limiters + path: ols.quotaHandlersConfig.limitersConfig + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Initial value of the token quota + displayName: Initial Token Quota + path: ols.quotaHandlersConfig.limitersConfig[0].initialQuota + - description: Name of the limiter + displayName: Limiter Name + path: ols.quotaHandlersConfig.limitersConfig[0].name + - description: Period of time the token quota is for + displayName: Period of Time the Token Quota Is For + path: ols.quotaHandlersConfig.limitersConfig[0].period + - description: Token quota increase step + displayName: Token Quota Increase Step + path: ols.quotaHandlersConfig.limitersConfig[0].quotaIncrease + - description: Type of the limiter + displayName: 'Limiter Type. Accepted Values: cluster_limiter, user_limiter.' + path: ols.quotaHandlersConfig.limitersConfig[0].type + - description: RAG databases + displayName: RAG Databases + path: ols.rag + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: The URL of the container image to use as a RAG source + displayName: Image + path: ols.rag[0].image + - description: The Index ID of the RAG database. Only needed if there are multiple indices in the database. + displayName: Index ID + path: ols.rag[0].indexID + - description: The path to the RAG database inside of the container image + displayName: Index Path in the Image + path: ols.rag[0].indexPath + - description: Persistent Storage Configuration + displayName: Persistent Storage Configuration + path: ols.storage + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Storage class of the requested volume + displayName: Storage Class of the Requested Volume + path: ols.storage.class + - description: Size of the requested volume + displayName: Size of the Requested Volume + path: ols.storage.size + - description: TLS configuration of the Lightspeed backend's HTTPS endpoint + displayName: TLS Configuration + path: ols.tlsConfig + - description: |- + KeyCertSecretRef references a Secret containing TLS certificate and key. + The Secret must contain the following keys: + - tls.crt: Server certificate (PEM format) - REQUIRED + - tls.key: Private key (PEM format) - REQUIRED + - ca.crt: CA certificate for console proxy trust (PEM format) - OPTIONAL + + If ca.crt is not provided, the OpenShift Console proxy will use the default system trust store. + displayName: TLS Certificate Secret Reference + path: ols.tlsConfig.keyCertSecretRef + - description: TLS Security Profile used by API endpoints + displayName: TLS Security Profile + path: ols.tlsSecurityProfile + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: User data collection switches + displayName: User Data Collection + path: ols.userDataCollection + - displayName: Do Not Collect User Feedback + path: ols.userDataCollection.feedbackDisabled + - displayName: Do Not Collect Transcripts + path: ols.userDataCollection.transcriptsDisabled + - displayName: OLS Data Collector Settings + path: olsDataCollector + - description: 'Log level. Valid options are DEBUG, INFO, WARNING, ERROR and CRITICAL. Default: "INFO".' + displayName: Log level + path: olsDataCollector.logLevel + statusDescriptors: + - description: |- + Conditions represent the state of individual components + Always populated after first reconciliation + displayName: Conditions + path: conditions + - description: |- + DiagnosticInfo provides detailed troubleshooting information when deployments fail. + Each entry contains pod-level error details for a specific component. + This array is automatically populated when deployments fail and cleared when they recover. + Only present during deployment failures. + displayName: Diagnostic Info + path: diagnosticInfo + - description: |- + OverallStatus provides a high-level summary of the entire system's health. + Aggregates all component conditions into a single status value. + - Ready: All components are healthy + - NotReady: At least one component is not ready (check conditions for details) + Always set after first reconciliation + displayName: Overall Status + path: overallStatus + version: v1alpha1 + description: |- + OpenShift Lightspeed Operator provides generative AI-based virtual assistant which integrates into the OpenShift web console. OpenShift Lightspeed can answer natural language questions related to OpenShift Container Platform. + + To configure the OpenShift Lightspeed Operator, you need a Large Language Model (LLM) . You can host the LLM using RHELAI or RHOAI or use one of the models from the following Software-as-a-Service providers: + + - OpenAI + - Microsoft Azure OpenAI + - IBM WatsonX + + For more information, see [About OpenShift Lightspeed](https://docs.redhat.com/en/documentation/red_hat_openshift_lightspeed/1.0tp1/html/about/ols-about-openshift-lightspeed) in the official product documentation. + + Questions, comments, concerns, or just want to talk to the OpenShift Lightspeed team? [Email us](mailto:openshift-lightspeed-contact-requests@redhat.com)! + displayName: OpenShift Lightspeed Operator + installModes: + - supported: true + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: false + type: AllNamespaces + keywords: + - ai + - assistant + - openshift + - llm + links: + - name: Lightspeed Operator + url: https://github.com/openshift/lightspeed-operator + maturity: alpha + minKubeVersion: 1.28.0 + provider: + name: Red Hat, Inc + url: https://github.com/openshift/lightspeed-service +relatedImages: + - name: lightspeed-service-api + image: registry.redhat.io/openshift-lightspeed/lightspeed-service-api-rhel9@sha256:cdd819251936f1a6aa07d416ef33c519b33f7e69fb5c618a716563bc1db7884e + revision: 456957bb997bfdcf26c1de403418af5eb9c9d3a5 + - name: lightspeed-console-plugin + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-rhel9@sha256:44a5647f2066fe348f4c82d784e3038dd27e64a12b435cbf8b2b31561384130f + revision: 1599c2c74a25be8d35902ee818aaeff53917142f + - name: lightspeed-console-plugin-pf5 + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-pf5-rhel9@sha256:9573942a6d1628fb658b20fe487be0c549cc43cd2a0a4a2b8c5862b3999c521b + revision: 2816bf8732cbdc8d1a5da16d39fa63ba290d0a8a + - name: lightspeed-operator + image: registry.redhat.io/openshift-lightspeed/lightspeed-rhel9-operator@sha256:55aaaeadc8be0a703d4dd36fdeb7cf996a468e9c81288e8833738e0d218aa110 + revision: c32b7bb1ffa8375657b42ebcebbe5ec3091d11eb + - name: openshift-mcp-server + image: registry.redhat.io/openshift-lightspeed/openshift-mcp-server-rhel9@sha256:638dcef62c4c7e561707b9419bce2d61db885c0a8ea19bb512e41438fa19dc6d + revision: 18af0e1b8ead1aaf7c8467bceb2bdba37de2bd39 + - name: lightspeed-to-dataverse-exporter + image: registry.redhat.io/openshift-lightspeed/lightspeed-to-dataverse-exporter-rhel9@sha256:a37ead216f2cc69813a81b9d51f52da14efd359f133d980e9d1b2ae9935dfdbd + revision: 68622c76d8df8c2da2447d850f2a26c569d0d37f + - name: lightspeed-ocp-rag + image: registry.redhat.io/openshift-lightspeed/lightspeed-ocp-rag-rhel9@sha256:59c5a345758b336d871dac05454291504893bff96c3c9c2860b36b5ba9551743 + revision: 0e9ff9bed737d7afc4f39ca8e813d232a0e494bb + - name: lightspeed-postgresql + image: registry.redhat.io/rhel9/postgresql-16@sha256:42f385ac3c9b8913426da7c57e70bc6617cd237aaf697c667f6385a8c0b0118b + - name: lightspeed-operator-bundle + image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 + revision: 07253f9ffb66f4df41a70b13a4c5ecfe6a591c16 +schema: olm.bundle diff --git a/lightspeed-catalog-4.18/index.yaml b/lightspeed-catalog-4.18/index.yaml index 556ce9539..5508a3098 100644 --- a/lightspeed-catalog-4.18/index.yaml +++ b/lightspeed-catalog-4.18/index.yaml @@ -12,6 +12,8 @@ name: stable entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8 --- schema: olm.channel package: lightspeed-operator @@ -19,3 +21,5 @@ name: alpha entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8 diff --git a/lightspeed-catalog-4.19/bundle-v1.0.9.yaml b/lightspeed-catalog-4.19/bundle-v1.0.9.yaml new file mode 100644 index 000000000..c5f9273a6 --- /dev/null +++ b/lightspeed-catalog-4.19/bundle-v1.0.9.yaml @@ -0,0 +1,449 @@ +--- +image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 +name: lightspeed-operator.v1.0.9 +package: lightspeed-operator +properties: + - type: olm.gvk + value: + group: ols.openshift.io + kind: OLSConfig + version: v1alpha1 + - type: olm.package + value: + packageName: lightspeed-operator + version: 1.0.9 + - type: olm.csv.metadata + value: + annotations: + alm-examples: |- + [ + { + "apiVersion": "ols.openshift.io/v1alpha1", + "kind": "OLSConfig", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "lightspeed-operator", + "app.kubernetes.io/instance": "olsconfig-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "olsconfig", + "app.kubernetes.io/part-of": "lightspeed-operator" + }, + "name": "cluster" + }, + "spec": { + "llm": { + "providers": [ + { + "credentialsSecretRef": { + "name": "credentials" + }, + "models": [ + { + "name": "gpt-3.5-turbo-1106" + } + ], + "name": "OpenAI" + } + ] + } + } + } + ] + capabilities: Basic Install + console.openshift.io/operator-monitoring-default: "true" + createdAt: "2025-12-18T10:30:55Z" + features.operators.openshift.io/cnf: "false" + features.operators.openshift.io/cni: "false" + features.operators.openshift.io/csi: "false" + features.operators.openshift.io/disconnected: "true" + features.operators.openshift.io/fips-compliant: "true" + features.operators.openshift.io/proxy-aware: "false" + features.operators.openshift.io/tls-profiles: "false" + features.operators.openshift.io/token-auth-aws: "false" + features.operators.openshift.io/token-auth-azure: "false" + features.operators.openshift.io/token-auth-gcp: "false" + operatorframework.io/cluster-monitoring: "true" + operatorframework.io/suggested-namespace: openshift-lightspeed + operators.openshift.io/valid-subscription: '["OpenShift Container Platform", "OpenShift Platform Plus", "OpenShift Kubernetes Engine", "OpenShift Virtualization Engine"]' + operators.operatorframework.io/builder: operator-sdk-v1.33.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + repository: https://github.com/openshift/lightspeed-operator + apiServiceDefinitions: {} + crdDescriptions: + owned: + - description: Red Hat OpenShift Lightspeed instance. OLSConfig is the Schema for the olsconfigs API + displayName: OLSConfig + kind: OLSConfig + name: olsconfigs.ols.openshift.io + specDescriptors: + - description: Provider name + displayName: Name + path: llm.providers[0].name + - description: OLS deployment settings + displayName: Deployment + path: ols.deployment + - description: Provider API URL + displayName: URL + path: llm.providers[0].url + - description: Conversation cache settings + displayName: Conversation Cache + path: ols.conversationCache + - description: The name of the secret object that stores API provider credentials + displayName: Credential Secret + path: llm.providers[0].credentialsSecretRef + - description: |- + Feature Gates holds list of features to be enabled explicitly, otherwise they are disabled by default. + possible values: MCPServer + displayName: Feature Gates + path: featureGates + - displayName: LLM Settings + path: llm + - displayName: Providers + path: llm.providers + - description: API Version for Azure OpenAI provider + displayName: Azure OpenAI API Version + path: llm.providers[0].apiVersion + - description: Azure OpenAI deployment name + displayName: Azure OpenAI deployment name + path: llm.providers[0].deploymentName + - description: List of models from the provider + displayName: Models + path: llm.providers[0].models + - description: Defines the model's context window size, in tokens. The default is 128k tokens. + displayName: Context Window Size + path: llm.providers[0].models[0].contextWindowSize + - description: Model name + displayName: Name + path: llm.providers[0].models[0].name + - description: Model API parameters + displayName: Parameters + path: llm.providers[0].models[0].parameters + - description: Max tokens for response. The default is 2048 tokens. + displayName: Max Tokens For Response + path: llm.providers[0].models[0].parameters.maxTokensForResponse + - description: Model API URL + displayName: URL + path: llm.providers[0].models[0].url + - description: Watsonx Project ID + displayName: Watsonx Project ID + path: llm.providers[0].projectID + - description: TLS Security Profile used by connection to provider + displayName: TLS Security Profile + path: llm.providers[0].tlsSecurityProfile + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Provider type + displayName: Provider Type + path: llm.providers[0].type + - description: MCP Server settings + displayName: MCP Server Settings + path: mcpServers + - description: Name of the MCP server + displayName: Name + path: mcpServers[0].name + - description: Streamable HTTP Transport settings + displayName: Streamable HTTP Transport + path: mcpServers[0].streamableHTTP + - description: Enable Server Sent Events + displayName: Enable Server Sent Events + path: mcpServers[0].streamableHTTP.enableSSE + - description: |- + Headers to send to the MCP server + the map contains the header name and the name of the secret with the content of the header. This secret + should contain a header path in the data containing a header value. + A special case is usage of the kubernetes token in the header. to specify this use + a string "kubernetes" instead of the secret name + displayName: Headers + path: mcpServers[0].streamableHTTP.headers + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:keyValue + - description: SSE Read Timeout, default is 10 seconds + displayName: SSE Read Timeout in seconds + path: mcpServers[0].streamableHTTP.sseReadTimeout + - description: Timeout for the MCP server, default is 5 seconds + displayName: Timeout in seconds + path: mcpServers[0].streamableHTTP.timeout + - description: URL of the MCP server + displayName: URL + path: mcpServers[0].streamableHTTP.url + - displayName: OLS Settings + path: ols + - description: Additional CA certificates for TLS communication between OLS service and LLM Provider + displayName: Additional CA Configmap + path: ols.additionalCAConfigMapRef + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Only use BYOK RAG sources, ignore the OpenShift documentation RAG + displayName: Only use BYOK RAG sources + path: ols.byokRAGOnly + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - displayName: PostgreSQL Settings + path: ols.conversationCache.postgres + - description: 'Postgres maxconnections. Default: "2000"' + displayName: Maximum Connections + path: ols.conversationCache.postgres.maxConnections + - description: Postgres sharedbuffers + displayName: Shared Buffer Size + path: ols.conversationCache.postgres.sharedBuffers + - description: 'Conversation cache type. Default: "postgres"' + displayName: Cache Type + path: ols.conversationCache.type + - description: Default model for usage + displayName: Default Model + path: ols.defaultModel + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:text + - description: Default provider for usage + displayName: Default Provider + path: ols.defaultProvider + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:text + - description: API container settings. + displayName: API Deployment + path: ols.deployment.api + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.api.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Console container settings. + displayName: Console Deployment + path: ols.deployment.console + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.console.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Data Collector container settings. + displayName: Data Collector Container + path: ols.deployment.dataCollector + - description: Database container settings. + displayName: Database Deployment + path: ols.deployment.database + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.database.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Llama Stack container settings. + displayName: Llama Stack Container + path: ols.deployment.llamaStack + - description: MCP server container settings. + displayName: MCP Server Container + path: ols.deployment.mcpServer + - description: Enable introspection features + displayName: Introspection Enabled + path: ols.introspectionEnabled + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - description: 'Log level. Valid options are DEBUG, INFO, WARNING, ERROR and CRITICAL. Default: "INFO".' + displayName: Log level + path: ols.logLevel + - description: Proxy settings for connecting to external servers, such as LLM providers. + displayName: Proxy Settings + path: ols.proxyConfig + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: The configmap holding proxy CA certificate + displayName: Proxy CA Certificate + path: ols.proxyConfig.proxyCACertificate + - description: |- + Proxy URL, e.g. https://proxy.example.com:8080 + If not specified, the cluster wide proxy will be used, though env var "https_proxy". + displayName: Proxy URL + path: ols.proxyConfig.proxyURL + - description: Query filters + displayName: Query Filters + path: ols.queryFilters + - description: Filter name. + displayName: Filter Name + path: ols.queryFilters[0].name + - description: Filter pattern. + displayName: The pattern to replace + path: ols.queryFilters[0].pattern + - description: Replacement for the matched pattern. + displayName: Replace With + path: ols.queryFilters[0].replaceWith + - description: Custom system prompt for LLM queries. If not specified, uses the default OpenShift Lightspeed prompt. + displayName: Query System Prompt + path: ols.querySystemPrompt + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: LLM Token Quota Configuration + displayName: LLM Token Quota Configuration + path: ols.quotaHandlersConfig + - description: Enable token history + displayName: Enable Token History + path: ols.quotaHandlersConfig.enableTokenHistory + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - description: Token quota limiters + displayName: Token Quota Limiters + path: ols.quotaHandlersConfig.limitersConfig + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Initial value of the token quota + displayName: Initial Token Quota + path: ols.quotaHandlersConfig.limitersConfig[0].initialQuota + - description: Name of the limiter + displayName: Limiter Name + path: ols.quotaHandlersConfig.limitersConfig[0].name + - description: Period of time the token quota is for + displayName: Period of Time the Token Quota Is For + path: ols.quotaHandlersConfig.limitersConfig[0].period + - description: Token quota increase step + displayName: Token Quota Increase Step + path: ols.quotaHandlersConfig.limitersConfig[0].quotaIncrease + - description: Type of the limiter + displayName: 'Limiter Type. Accepted Values: cluster_limiter, user_limiter.' + path: ols.quotaHandlersConfig.limitersConfig[0].type + - description: RAG databases + displayName: RAG Databases + path: ols.rag + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: The URL of the container image to use as a RAG source + displayName: Image + path: ols.rag[0].image + - description: The Index ID of the RAG database. Only needed if there are multiple indices in the database. + displayName: Index ID + path: ols.rag[0].indexID + - description: The path to the RAG database inside of the container image + displayName: Index Path in the Image + path: ols.rag[0].indexPath + - description: Persistent Storage Configuration + displayName: Persistent Storage Configuration + path: ols.storage + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Storage class of the requested volume + displayName: Storage Class of the Requested Volume + path: ols.storage.class + - description: Size of the requested volume + displayName: Size of the Requested Volume + path: ols.storage.size + - description: TLS configuration of the Lightspeed backend's HTTPS endpoint + displayName: TLS Configuration + path: ols.tlsConfig + - description: |- + KeyCertSecretRef references a Secret containing TLS certificate and key. + The Secret must contain the following keys: + - tls.crt: Server certificate (PEM format) - REQUIRED + - tls.key: Private key (PEM format) - REQUIRED + - ca.crt: CA certificate for console proxy trust (PEM format) - OPTIONAL + + If ca.crt is not provided, the OpenShift Console proxy will use the default system trust store. + displayName: TLS Certificate Secret Reference + path: ols.tlsConfig.keyCertSecretRef + - description: TLS Security Profile used by API endpoints + displayName: TLS Security Profile + path: ols.tlsSecurityProfile + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: User data collection switches + displayName: User Data Collection + path: ols.userDataCollection + - displayName: Do Not Collect User Feedback + path: ols.userDataCollection.feedbackDisabled + - displayName: Do Not Collect Transcripts + path: ols.userDataCollection.transcriptsDisabled + - displayName: OLS Data Collector Settings + path: olsDataCollector + - description: 'Log level. Valid options are DEBUG, INFO, WARNING, ERROR and CRITICAL. Default: "INFO".' + displayName: Log level + path: olsDataCollector.logLevel + statusDescriptors: + - description: |- + Conditions represent the state of individual components + Always populated after first reconciliation + displayName: Conditions + path: conditions + - description: |- + DiagnosticInfo provides detailed troubleshooting information when deployments fail. + Each entry contains pod-level error details for a specific component. + This array is automatically populated when deployments fail and cleared when they recover. + Only present during deployment failures. + displayName: Diagnostic Info + path: diagnosticInfo + - description: |- + OverallStatus provides a high-level summary of the entire system's health. + Aggregates all component conditions into a single status value. + - Ready: All components are healthy + - NotReady: At least one component is not ready (check conditions for details) + Always set after first reconciliation + displayName: Overall Status + path: overallStatus + version: v1alpha1 + description: |- + OpenShift Lightspeed Operator provides generative AI-based virtual assistant which integrates into the OpenShift web console. OpenShift Lightspeed can answer natural language questions related to OpenShift Container Platform. + + To configure the OpenShift Lightspeed Operator, you need a Large Language Model (LLM) . You can host the LLM using RHELAI or RHOAI or use one of the models from the following Software-as-a-Service providers: + + - OpenAI + - Microsoft Azure OpenAI + - IBM WatsonX + + For more information, see [About OpenShift Lightspeed](https://docs.redhat.com/en/documentation/red_hat_openshift_lightspeed/1.0tp1/html/about/ols-about-openshift-lightspeed) in the official product documentation. + + Questions, comments, concerns, or just want to talk to the OpenShift Lightspeed team? [Email us](mailto:openshift-lightspeed-contact-requests@redhat.com)! + displayName: OpenShift Lightspeed Operator + installModes: + - supported: true + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: false + type: AllNamespaces + keywords: + - ai + - assistant + - openshift + - llm + links: + - name: Lightspeed Operator + url: https://github.com/openshift/lightspeed-operator + maturity: alpha + minKubeVersion: 1.28.0 + provider: + name: Red Hat, Inc + url: https://github.com/openshift/lightspeed-service +relatedImages: + - name: lightspeed-service-api + image: registry.redhat.io/openshift-lightspeed/lightspeed-service-api-rhel9@sha256:cdd819251936f1a6aa07d416ef33c519b33f7e69fb5c618a716563bc1db7884e + revision: 456957bb997bfdcf26c1de403418af5eb9c9d3a5 + - name: lightspeed-console-plugin + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-rhel9@sha256:44a5647f2066fe348f4c82d784e3038dd27e64a12b435cbf8b2b31561384130f + revision: 1599c2c74a25be8d35902ee818aaeff53917142f + - name: lightspeed-console-plugin-pf5 + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-pf5-rhel9@sha256:9573942a6d1628fb658b20fe487be0c549cc43cd2a0a4a2b8c5862b3999c521b + revision: 2816bf8732cbdc8d1a5da16d39fa63ba290d0a8a + - name: lightspeed-operator + image: registry.redhat.io/openshift-lightspeed/lightspeed-rhel9-operator@sha256:55aaaeadc8be0a703d4dd36fdeb7cf996a468e9c81288e8833738e0d218aa110 + revision: c32b7bb1ffa8375657b42ebcebbe5ec3091d11eb + - name: openshift-mcp-server + image: registry.redhat.io/openshift-lightspeed/openshift-mcp-server-rhel9@sha256:638dcef62c4c7e561707b9419bce2d61db885c0a8ea19bb512e41438fa19dc6d + revision: 18af0e1b8ead1aaf7c8467bceb2bdba37de2bd39 + - name: lightspeed-to-dataverse-exporter + image: registry.redhat.io/openshift-lightspeed/lightspeed-to-dataverse-exporter-rhel9@sha256:a37ead216f2cc69813a81b9d51f52da14efd359f133d980e9d1b2ae9935dfdbd + revision: 68622c76d8df8c2da2447d850f2a26c569d0d37f + - name: lightspeed-ocp-rag + image: registry.redhat.io/openshift-lightspeed/lightspeed-ocp-rag-rhel9@sha256:59c5a345758b336d871dac05454291504893bff96c3c9c2860b36b5ba9551743 + revision: 0e9ff9bed737d7afc4f39ca8e813d232a0e494bb + - name: lightspeed-postgresql + image: registry.redhat.io/rhel9/postgresql-16@sha256:42f385ac3c9b8913426da7c57e70bc6617cd237aaf697c667f6385a8c0b0118b + - name: lightspeed-operator-bundle + image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 + revision: 07253f9ffb66f4df41a70b13a4c5ecfe6a591c16 +schema: olm.bundle diff --git a/lightspeed-catalog-4.19/index.yaml b/lightspeed-catalog-4.19/index.yaml index 556ce9539..5508a3098 100644 --- a/lightspeed-catalog-4.19/index.yaml +++ b/lightspeed-catalog-4.19/index.yaml @@ -12,6 +12,8 @@ name: stable entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8 --- schema: olm.channel package: lightspeed-operator @@ -19,3 +21,5 @@ name: alpha entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8 diff --git a/lightspeed-catalog-4.20/bundle-v1.0.9.yaml b/lightspeed-catalog-4.20/bundle-v1.0.9.yaml new file mode 100644 index 000000000..c5f9273a6 --- /dev/null +++ b/lightspeed-catalog-4.20/bundle-v1.0.9.yaml @@ -0,0 +1,449 @@ +--- +image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 +name: lightspeed-operator.v1.0.9 +package: lightspeed-operator +properties: + - type: olm.gvk + value: + group: ols.openshift.io + kind: OLSConfig + version: v1alpha1 + - type: olm.package + value: + packageName: lightspeed-operator + version: 1.0.9 + - type: olm.csv.metadata + value: + annotations: + alm-examples: |- + [ + { + "apiVersion": "ols.openshift.io/v1alpha1", + "kind": "OLSConfig", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "lightspeed-operator", + "app.kubernetes.io/instance": "olsconfig-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "olsconfig", + "app.kubernetes.io/part-of": "lightspeed-operator" + }, + "name": "cluster" + }, + "spec": { + "llm": { + "providers": [ + { + "credentialsSecretRef": { + "name": "credentials" + }, + "models": [ + { + "name": "gpt-3.5-turbo-1106" + } + ], + "name": "OpenAI" + } + ] + } + } + } + ] + capabilities: Basic Install + console.openshift.io/operator-monitoring-default: "true" + createdAt: "2025-12-18T10:30:55Z" + features.operators.openshift.io/cnf: "false" + features.operators.openshift.io/cni: "false" + features.operators.openshift.io/csi: "false" + features.operators.openshift.io/disconnected: "true" + features.operators.openshift.io/fips-compliant: "true" + features.operators.openshift.io/proxy-aware: "false" + features.operators.openshift.io/tls-profiles: "false" + features.operators.openshift.io/token-auth-aws: "false" + features.operators.openshift.io/token-auth-azure: "false" + features.operators.openshift.io/token-auth-gcp: "false" + operatorframework.io/cluster-monitoring: "true" + operatorframework.io/suggested-namespace: openshift-lightspeed + operators.openshift.io/valid-subscription: '["OpenShift Container Platform", "OpenShift Platform Plus", "OpenShift Kubernetes Engine", "OpenShift Virtualization Engine"]' + operators.operatorframework.io/builder: operator-sdk-v1.33.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + repository: https://github.com/openshift/lightspeed-operator + apiServiceDefinitions: {} + crdDescriptions: + owned: + - description: Red Hat OpenShift Lightspeed instance. OLSConfig is the Schema for the olsconfigs API + displayName: OLSConfig + kind: OLSConfig + name: olsconfigs.ols.openshift.io + specDescriptors: + - description: Provider name + displayName: Name + path: llm.providers[0].name + - description: OLS deployment settings + displayName: Deployment + path: ols.deployment + - description: Provider API URL + displayName: URL + path: llm.providers[0].url + - description: Conversation cache settings + displayName: Conversation Cache + path: ols.conversationCache + - description: The name of the secret object that stores API provider credentials + displayName: Credential Secret + path: llm.providers[0].credentialsSecretRef + - description: |- + Feature Gates holds list of features to be enabled explicitly, otherwise they are disabled by default. + possible values: MCPServer + displayName: Feature Gates + path: featureGates + - displayName: LLM Settings + path: llm + - displayName: Providers + path: llm.providers + - description: API Version for Azure OpenAI provider + displayName: Azure OpenAI API Version + path: llm.providers[0].apiVersion + - description: Azure OpenAI deployment name + displayName: Azure OpenAI deployment name + path: llm.providers[0].deploymentName + - description: List of models from the provider + displayName: Models + path: llm.providers[0].models + - description: Defines the model's context window size, in tokens. The default is 128k tokens. + displayName: Context Window Size + path: llm.providers[0].models[0].contextWindowSize + - description: Model name + displayName: Name + path: llm.providers[0].models[0].name + - description: Model API parameters + displayName: Parameters + path: llm.providers[0].models[0].parameters + - description: Max tokens for response. The default is 2048 tokens. + displayName: Max Tokens For Response + path: llm.providers[0].models[0].parameters.maxTokensForResponse + - description: Model API URL + displayName: URL + path: llm.providers[0].models[0].url + - description: Watsonx Project ID + displayName: Watsonx Project ID + path: llm.providers[0].projectID + - description: TLS Security Profile used by connection to provider + displayName: TLS Security Profile + path: llm.providers[0].tlsSecurityProfile + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Provider type + displayName: Provider Type + path: llm.providers[0].type + - description: MCP Server settings + displayName: MCP Server Settings + path: mcpServers + - description: Name of the MCP server + displayName: Name + path: mcpServers[0].name + - description: Streamable HTTP Transport settings + displayName: Streamable HTTP Transport + path: mcpServers[0].streamableHTTP + - description: Enable Server Sent Events + displayName: Enable Server Sent Events + path: mcpServers[0].streamableHTTP.enableSSE + - description: |- + Headers to send to the MCP server + the map contains the header name and the name of the secret with the content of the header. This secret + should contain a header path in the data containing a header value. + A special case is usage of the kubernetes token in the header. to specify this use + a string "kubernetes" instead of the secret name + displayName: Headers + path: mcpServers[0].streamableHTTP.headers + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:keyValue + - description: SSE Read Timeout, default is 10 seconds + displayName: SSE Read Timeout in seconds + path: mcpServers[0].streamableHTTP.sseReadTimeout + - description: Timeout for the MCP server, default is 5 seconds + displayName: Timeout in seconds + path: mcpServers[0].streamableHTTP.timeout + - description: URL of the MCP server + displayName: URL + path: mcpServers[0].streamableHTTP.url + - displayName: OLS Settings + path: ols + - description: Additional CA certificates for TLS communication between OLS service and LLM Provider + displayName: Additional CA Configmap + path: ols.additionalCAConfigMapRef + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Only use BYOK RAG sources, ignore the OpenShift documentation RAG + displayName: Only use BYOK RAG sources + path: ols.byokRAGOnly + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - displayName: PostgreSQL Settings + path: ols.conversationCache.postgres + - description: 'Postgres maxconnections. Default: "2000"' + displayName: Maximum Connections + path: ols.conversationCache.postgres.maxConnections + - description: Postgres sharedbuffers + displayName: Shared Buffer Size + path: ols.conversationCache.postgres.sharedBuffers + - description: 'Conversation cache type. Default: "postgres"' + displayName: Cache Type + path: ols.conversationCache.type + - description: Default model for usage + displayName: Default Model + path: ols.defaultModel + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:text + - description: Default provider for usage + displayName: Default Provider + path: ols.defaultProvider + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:text + - description: API container settings. + displayName: API Deployment + path: ols.deployment.api + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.api.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Console container settings. + displayName: Console Deployment + path: ols.deployment.console + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.console.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Data Collector container settings. + displayName: Data Collector Container + path: ols.deployment.dataCollector + - description: Database container settings. + displayName: Database Deployment + path: ols.deployment.database + - description: |- + Defines the number of desired OLS pods. Default: "1" + Note: Replicas can only be changed for APIContainer. For PostgreSQL and Console containers, + the number of replicas will always be set to 1. + displayName: Number of replicas + path: ols.deployment.database.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:podCount + - description: Llama Stack container settings. + displayName: Llama Stack Container + path: ols.deployment.llamaStack + - description: MCP server container settings. + displayName: MCP Server Container + path: ols.deployment.mcpServer + - description: Enable introspection features + displayName: Introspection Enabled + path: ols.introspectionEnabled + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - description: 'Log level. Valid options are DEBUG, INFO, WARNING, ERROR and CRITICAL. Default: "INFO".' + displayName: Log level + path: ols.logLevel + - description: Proxy settings for connecting to external servers, such as LLM providers. + displayName: Proxy Settings + path: ols.proxyConfig + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: The configmap holding proxy CA certificate + displayName: Proxy CA Certificate + path: ols.proxyConfig.proxyCACertificate + - description: |- + Proxy URL, e.g. https://proxy.example.com:8080 + If not specified, the cluster wide proxy will be used, though env var "https_proxy". + displayName: Proxy URL + path: ols.proxyConfig.proxyURL + - description: Query filters + displayName: Query Filters + path: ols.queryFilters + - description: Filter name. + displayName: Filter Name + path: ols.queryFilters[0].name + - description: Filter pattern. + displayName: The pattern to replace + path: ols.queryFilters[0].pattern + - description: Replacement for the matched pattern. + displayName: Replace With + path: ols.queryFilters[0].replaceWith + - description: Custom system prompt for LLM queries. If not specified, uses the default OpenShift Lightspeed prompt. + displayName: Query System Prompt + path: ols.querySystemPrompt + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: LLM Token Quota Configuration + displayName: LLM Token Quota Configuration + path: ols.quotaHandlersConfig + - description: Enable token history + displayName: Enable Token History + path: ols.quotaHandlersConfig.enableTokenHistory + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - description: Token quota limiters + displayName: Token Quota Limiters + path: ols.quotaHandlersConfig.limitersConfig + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Initial value of the token quota + displayName: Initial Token Quota + path: ols.quotaHandlersConfig.limitersConfig[0].initialQuota + - description: Name of the limiter + displayName: Limiter Name + path: ols.quotaHandlersConfig.limitersConfig[0].name + - description: Period of time the token quota is for + displayName: Period of Time the Token Quota Is For + path: ols.quotaHandlersConfig.limitersConfig[0].period + - description: Token quota increase step + displayName: Token Quota Increase Step + path: ols.quotaHandlersConfig.limitersConfig[0].quotaIncrease + - description: Type of the limiter + displayName: 'Limiter Type. Accepted Values: cluster_limiter, user_limiter.' + path: ols.quotaHandlersConfig.limitersConfig[0].type + - description: RAG databases + displayName: RAG Databases + path: ols.rag + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: The URL of the container image to use as a RAG source + displayName: Image + path: ols.rag[0].image + - description: The Index ID of the RAG database. Only needed if there are multiple indices in the database. + displayName: Index ID + path: ols.rag[0].indexID + - description: The path to the RAG database inside of the container image + displayName: Index Path in the Image + path: ols.rag[0].indexPath + - description: Persistent Storage Configuration + displayName: Persistent Storage Configuration + path: ols.storage + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: Storage class of the requested volume + displayName: Storage Class of the Requested Volume + path: ols.storage.class + - description: Size of the requested volume + displayName: Size of the Requested Volume + path: ols.storage.size + - description: TLS configuration of the Lightspeed backend's HTTPS endpoint + displayName: TLS Configuration + path: ols.tlsConfig + - description: |- + KeyCertSecretRef references a Secret containing TLS certificate and key. + The Secret must contain the following keys: + - tls.crt: Server certificate (PEM format) - REQUIRED + - tls.key: Private key (PEM format) - REQUIRED + - ca.crt: CA certificate for console proxy trust (PEM format) - OPTIONAL + + If ca.crt is not provided, the OpenShift Console proxy will use the default system trust store. + displayName: TLS Certificate Secret Reference + path: ols.tlsConfig.keyCertSecretRef + - description: TLS Security Profile used by API endpoints + displayName: TLS Security Profile + path: ols.tlsSecurityProfile + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - description: User data collection switches + displayName: User Data Collection + path: ols.userDataCollection + - displayName: Do Not Collect User Feedback + path: ols.userDataCollection.feedbackDisabled + - displayName: Do Not Collect Transcripts + path: ols.userDataCollection.transcriptsDisabled + - displayName: OLS Data Collector Settings + path: olsDataCollector + - description: 'Log level. Valid options are DEBUG, INFO, WARNING, ERROR and CRITICAL. Default: "INFO".' + displayName: Log level + path: olsDataCollector.logLevel + statusDescriptors: + - description: |- + Conditions represent the state of individual components + Always populated after first reconciliation + displayName: Conditions + path: conditions + - description: |- + DiagnosticInfo provides detailed troubleshooting information when deployments fail. + Each entry contains pod-level error details for a specific component. + This array is automatically populated when deployments fail and cleared when they recover. + Only present during deployment failures. + displayName: Diagnostic Info + path: diagnosticInfo + - description: |- + OverallStatus provides a high-level summary of the entire system's health. + Aggregates all component conditions into a single status value. + - Ready: All components are healthy + - NotReady: At least one component is not ready (check conditions for details) + Always set after first reconciliation + displayName: Overall Status + path: overallStatus + version: v1alpha1 + description: |- + OpenShift Lightspeed Operator provides generative AI-based virtual assistant which integrates into the OpenShift web console. OpenShift Lightspeed can answer natural language questions related to OpenShift Container Platform. + + To configure the OpenShift Lightspeed Operator, you need a Large Language Model (LLM) . You can host the LLM using RHELAI or RHOAI or use one of the models from the following Software-as-a-Service providers: + + - OpenAI + - Microsoft Azure OpenAI + - IBM WatsonX + + For more information, see [About OpenShift Lightspeed](https://docs.redhat.com/en/documentation/red_hat_openshift_lightspeed/1.0tp1/html/about/ols-about-openshift-lightspeed) in the official product documentation. + + Questions, comments, concerns, or just want to talk to the OpenShift Lightspeed team? [Email us](mailto:openshift-lightspeed-contact-requests@redhat.com)! + displayName: OpenShift Lightspeed Operator + installModes: + - supported: true + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: false + type: AllNamespaces + keywords: + - ai + - assistant + - openshift + - llm + links: + - name: Lightspeed Operator + url: https://github.com/openshift/lightspeed-operator + maturity: alpha + minKubeVersion: 1.28.0 + provider: + name: Red Hat, Inc + url: https://github.com/openshift/lightspeed-service +relatedImages: + - name: lightspeed-service-api + image: registry.redhat.io/openshift-lightspeed/lightspeed-service-api-rhel9@sha256:cdd819251936f1a6aa07d416ef33c519b33f7e69fb5c618a716563bc1db7884e + revision: 456957bb997bfdcf26c1de403418af5eb9c9d3a5 + - name: lightspeed-console-plugin + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-rhel9@sha256:44a5647f2066fe348f4c82d784e3038dd27e64a12b435cbf8b2b31561384130f + revision: 1599c2c74a25be8d35902ee818aaeff53917142f + - name: lightspeed-console-plugin-pf5 + image: registry.redhat.io/openshift-lightspeed/lightspeed-console-plugin-pf5-rhel9@sha256:9573942a6d1628fb658b20fe487be0c549cc43cd2a0a4a2b8c5862b3999c521b + revision: 2816bf8732cbdc8d1a5da16d39fa63ba290d0a8a + - name: lightspeed-operator + image: registry.redhat.io/openshift-lightspeed/lightspeed-rhel9-operator@sha256:55aaaeadc8be0a703d4dd36fdeb7cf996a468e9c81288e8833738e0d218aa110 + revision: c32b7bb1ffa8375657b42ebcebbe5ec3091d11eb + - name: openshift-mcp-server + image: registry.redhat.io/openshift-lightspeed/openshift-mcp-server-rhel9@sha256:638dcef62c4c7e561707b9419bce2d61db885c0a8ea19bb512e41438fa19dc6d + revision: 18af0e1b8ead1aaf7c8467bceb2bdba37de2bd39 + - name: lightspeed-to-dataverse-exporter + image: registry.redhat.io/openshift-lightspeed/lightspeed-to-dataverse-exporter-rhel9@sha256:a37ead216f2cc69813a81b9d51f52da14efd359f133d980e9d1b2ae9935dfdbd + revision: 68622c76d8df8c2da2447d850f2a26c569d0d37f + - name: lightspeed-ocp-rag + image: registry.redhat.io/openshift-lightspeed/lightspeed-ocp-rag-rhel9@sha256:59c5a345758b336d871dac05454291504893bff96c3c9c2860b36b5ba9551743 + revision: 0e9ff9bed737d7afc4f39ca8e813d232a0e494bb + - name: lightspeed-postgresql + image: registry.redhat.io/rhel9/postgresql-16@sha256:42f385ac3c9b8913426da7c57e70bc6617cd237aaf697c667f6385a8c0b0118b + - name: lightspeed-operator-bundle + image: registry.redhat.io/openshift-lightspeed/lightspeed-operator-bundle@sha256:ce36810a7453f4d45285a9566cd9ca2f78dd648013636c4a9cd0b0d3e234b462 + revision: 07253f9ffb66f4df41a70b13a4c5ecfe6a591c16 +schema: olm.bundle diff --git a/lightspeed-catalog-4.20/index.yaml b/lightspeed-catalog-4.20/index.yaml index 556ce9539..5508a3098 100644 --- a/lightspeed-catalog-4.20/index.yaml +++ b/lightspeed-catalog-4.20/index.yaml @@ -12,6 +12,8 @@ name: stable entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8 --- schema: olm.channel package: lightspeed-operator @@ -19,3 +21,5 @@ name: alpha entries: - name: lightspeed-operator.v1.0.8 skipRange: ">=0.1.0 <1.0.8" + - name: lightspeed-operator.v1.0.9 + replaces: lightspeed-operator.v1.0.8