@eide/foir-cli 0.54.0 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +1937 -560
- package/dist/lib/config-helpers.d.ts +39 -4
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -305,7 +305,7 @@ async function findAvailablePort(start, end) {
|
|
|
305
305
|
for (let port = start; port <= end; port++) {
|
|
306
306
|
const available = await new Promise((resolve9) => {
|
|
307
307
|
const server = http.createServer();
|
|
308
|
-
server.listen(port, () => {
|
|
308
|
+
server.listen(port, "127.0.0.1", () => {
|
|
309
309
|
server.close();
|
|
310
310
|
resolve9(true);
|
|
311
311
|
});
|
|
@@ -365,6 +365,15 @@ async function loginAction(globalOpts) {
|
|
|
365
365
|
reject(new Error(`Authentication failed: ${error}`));
|
|
366
366
|
return;
|
|
367
367
|
}
|
|
368
|
+
if (!code) {
|
|
369
|
+
res.writeHead(400, { "Content-Type": "text/html" });
|
|
370
|
+
res.end(
|
|
371
|
+
`<html><body style="font-family:system-ui;text-align:center;padding:50px"><h1>Authentication failed</h1><p>No authorization code returned. Please try again.</p></body></html>`
|
|
372
|
+
);
|
|
373
|
+
server.close();
|
|
374
|
+
reject(new Error("No authorization code in callback"));
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
368
377
|
if (returnedState !== state) {
|
|
369
378
|
res.writeHead(400, { "Content-Type": "text/html" });
|
|
370
379
|
res.end(
|
|
@@ -389,7 +398,7 @@ async function loginAction(globalOpts) {
|
|
|
389
398
|
resolve9(code);
|
|
390
399
|
}
|
|
391
400
|
});
|
|
392
|
-
server.listen(port);
|
|
401
|
+
server.listen(port, "127.0.0.1");
|
|
393
402
|
timeoutId = setTimeout(
|
|
394
403
|
() => {
|
|
395
404
|
server.close();
|
|
@@ -478,7 +487,7 @@ import { fileDesc as fileDesc2, messageDesc as messageDesc2 } from "@bufbuild/pr
|
|
|
478
487
|
var file_common_v1_pagination = /* @__PURE__ */ fileDesc2("Chpjb21tb24vdjEvcGFnaW5hdGlvbi5wcm90bxIJY29tbW9uLnYxIpABCghQYWdlSW5mbxIVCg1oYXNfbmV4dF9wYWdlGAEgASgIEhkKEWhhc19wcmV2aW91c19wYWdlGAIgASgIEhkKDHN0YXJ0X2N1cnNvchgDIAEoCUgAiAEBEhcKCmVuZF9jdXJzb3IYBCABKAlIAYgBAUIPCg1fc3RhcnRfY3Vyc29yQg0KC19lbmRfY3Vyc29yQjlaN2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw");
|
|
479
488
|
|
|
480
489
|
// ../../packages/proto-ts/src/identity/v1/identity_pb.js
|
|
481
|
-
var file_identity_v1_identity = /* @__PURE__ */ fileDesc3("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLuAQoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIuCgpncmFudGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GDMgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2dyYW50ZWRfYnki9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IvQCCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0IuAHCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGRpc3BsYXlfbmFtZRg8IAEoCUgEiAEBEhUKCGxvZ29fdXJsGD0gASgJSAWIAQESGgoNcHJpbWFyeV9jb2xvchg+IAEoCUgGiAEBEhYKCWZyb21fbmFtZRg/IAEoCUgHiAEBEhUKCHJlcGx5X3RvGEAgASgJSAiIAQESGgoNc3VwcG9ydF9lbWFpbBhBIAEoCUgJiAEBEhkKDGFwcF9iYXNlX3VybBhCIAEoCUgKiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBhGIAEoCEgLiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGFAgASgISAyIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBhRIAEoCEgNiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGFIgASgISA6IAQFCDgoMX2Rlc2NyaXB0aW9uQhgKFl9kZWxldGlvbl9zY2hlZHVsZWRfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQirwMKCkludml0YXRpb24SCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhMKC3Byb2plY3RfaWRzGAQgAygJEiUKBHJvbGUYBSABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlEiwKC2ludml0ZV90eXBlGAYgASgOMhcuaWRlbnRpdHkudjEuSW52aXRlVHlwZRISCgppbnZpdGVkX2J5GAcgASgJEhQKB21lc3NhZ2UYCCABKAlIAIgBARItCgZzdGF0dXMYFCABKA4yHS5pZGVudGl0eS52MS5JbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9tZXNzYWdlQg4KDF9hY2NlcHRlZF9hdCLpAwoSQ3VzdG9tZXJJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhcKCmludml0ZWRfYnkYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESNQoGc3RhdHVzGBQgASgOMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEiEKFGFjY2VwdGVkX2N1c3RvbWVyX2lkGCAgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0QhcKFV9hY2NlcHRlZF9jdXN0b21lcl9pZCLZBAoGQXBpS2V5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgwKBG5hbWUYBCABKAkSEgoKa2V5X3ByZWZpeBgFIAEoCRIpCghrZXlfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFwaUtleVR5cGUSFAoHcmF3X2tleRgKIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgUIAEoCBIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGBUgASgFSAGIAQESMwoKZXhwaXJlc19hdBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIOCgZzY29wZXMYFyADKAkSLgoIbWV0YWRhdGEYGCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESNQoMbGFzdF91c2VkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhMKC3VzYWdlX2NvdW50GB8gASgFEhIKCmNyZWF0ZWRfYnkYKCABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX3Jhd19rZXlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCCwoJX21ldGFkYXRhQg8KDV9sYXN0X3VzZWRfYXQilgIKDlNlc3Npb25Db250ZXh0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAiABKAlIAYgBARIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEhsKDmVmZmVjdGl2ZV9yb2xlGAQgASgJSAKIAQESLgoRYXZhaWxhYmxlX3RlbmFudHMYBSADKAsyEy5pZGVudGl0eS52MS5UZW5hbnQSMAoSYXZhaWxhYmxlX3Byb2plY3RzGAYgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhEKD19lZmZlY3RpdmVfcm9sZSJ9CgxMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiXwoNTG9naW5SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIn8KE0xvZ2luV2l0aE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSCwoDb3RwGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkImYKFExvZ2luV2l0aE9UUFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIicAoRUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiJQoSUmVxdWVzdE9UUFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiDwoNTG9nb3V0UmVxdWVzdCIhCg5Mb2dvdXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIrUBCg9SZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBEioKBHJvbGUYBSABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlSAKIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIHCgVfcm9sZSI4ChBSZWdpc3RlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiIwoSVmVyaWZ5RW1haWxSZXF1ZXN0Eg0KBXRva2VuGAEgASgJIiYKE1ZlcmlmeUVtYWlsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIgCh5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QiMgofUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjEKIFNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjQKIVNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjUKFlZlcmlmeUVtYWlsQ29kZVJlcXVlc3QSDQoFZW1haWwYASABKAkSDAoEY29kZRgCIAEoCSI8ChdWZXJpZnlFbWFpbENvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhAKCHZlcmlmaWVkGAIgASgIIiwKG1JlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIvChxSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiOwoUUmVzZXRQYXNzd29yZFJlcXVlc3QSDQoFdG9rZW4YASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIigKFVJlc2V0UGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkcKFVVwZGF0ZVBhc3N3b3JkUmVxdWVzdBIYChBjdXJyZW50X3Bhc3N3b3JkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIpChZVcGRhdGVQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoTUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIkMKFFJlZnJlc2hUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJIhoKGEdldFNlc3Npb25Db250ZXh0UmVxdWVzdCJJChlHZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIoChNTd2l0Y2hUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJEChRTd2l0Y2hUZW5hbnRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKgoUU3dpdGNoUHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJFChVTd2l0Y2hQcm9qZWN0UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IhwKGkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0Ii4KG0NsZWFyU2Vzc2lvbkNvbnRleHRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIg4KDEdldE1lUmVxdWVzdCI1Cg1HZXRNZVJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi1wEKFkNyZWF0ZUFkbWluVXNlclJlcXVlc3QSDQoFZW1haWwYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgEIAEoCRIXCgpwcm9qZWN0X2lkGAUgASgJSAKIAQESJQoEcm9sZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGVCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfcHJvamVjdF9pZCI/ChdDcmVhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIiEKE0dldEFkbWluVXNlclJlcXVlc3QSCgoCaWQYASABKAkiPAoUR2V0QWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLYAQoWVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgpmaXJzdF9uYW1lGAIgASgJSACIAQESFgoJbGFzdF9uYW1lGAMgASgJSAGIAQESFwoKYXZhdGFyX3VybBgEIAEoCUgCiAEBEjEKBnN0YXR1cxgFIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1c0gDiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmxCCQoHX3N0YXR1cyI/ChdVcGRhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIsYBChVMaXN0QWRtaW5Vc2Vyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpoBChZMaXN0QWRtaW5Vc2Vyc1Jlc3BvbnNlEiUKBWl0ZW1zGAEgAygLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKNAQoSR3JhbnRBY2Nlc3NSZXF1ZXN0EhUKDWFkbWluX3VzZXJfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUINCgtfcHJvamVjdF9pZCJDChNHcmFudEFjY2Vzc1Jlc3BvbnNlEiwKBmFjY2VzcxgBIAEoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcyIoChNSZXZva2VBY2Nlc3NSZXF1ZXN0EhEKCWFjY2Vzc19pZBgBIAEoCSInChRSZXZva2VBY2Nlc3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkoKFUNyZWF0ZUN1c3RvbWVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJBChZDcmVhdGVDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiIAoSR2V0Q3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIj4KE0dldEN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ+ChVVcGRhdGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkSEgoFZW1haWwYAiABKAlIAIgBARIwCgZzdGF0dXMYAyABKA4yGy5pZGVudGl0eS52MS5DdXN0b21lclN0YXR1c0gBiAEBQggKBl9lbWFpbEIJCgdfc3RhdHVzIkEKFlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIjChVEZWxldGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiKQoWRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIsUBChRMaXN0Q3VzdG9tZXJzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QimAEKFUxpc3RDdXN0b21lcnNSZXNwb25zZRIkCgVpdGVtcxgBIAMoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZTdXNwZW5kQ3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkIKF1N1c3BlbmRDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiUwoVTWVyZ2VDdXN0b21lcnNSZXF1ZXN0EhMKC3N1cnZpdm9yX2lkGAEgASgJEhQKDGR1cGxpY2F0ZV9pZBgCIAEoCRIPCgdkcnlfcnVuGAMgASgIImgKFk1lcmdlQ3VzdG9tZXJzUmVzcG9uc2USDwoHcmV0aXJlZBgBIAEoCBIMCgRub29wGAIgASgIEi8KBW1vdmVkGAMgASgLMiAuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNNb3ZlZCLLAQoTTWVyZ2VDdXN0b21lcnNNb3ZlZBIPCgdyZWNvcmRzGAEgASgFEg0KBWZpbGVzGAIgASgFEhsKE3Byb3ZpZGVyX2lkZW50aXRpZXMYAyABKAUSEAoIcHJvZmlsZXMYBCABKAUSDgoGc2hhcmVzGAUgASgFEhsKE3NlZ21lbnRfbWVtYmVyc2hpcHMYBiABKAUSGAoQcm9sZV9hc3NpZ25tZW50cxgHIAEoBRIeChZyZWZyZXNoX3Rva2Vuc19yZXZva2VkGAggASgFIj4KGlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIuChtTZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcAQofQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgppbnZpdGVkX2J5GAIgASgJSACIAQESFAoHbWVzc2FnZRgDIAEoCUgBiAEBEhcKCnNlbmRfZW1haWwYBCABKAhIAogBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAUgASgJSAOIAQFCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIs8BCh5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqwBCh9MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIqChxHZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlQKHUdldEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24iLQofUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIzCiBSZXZva2VDdXN0b21lckludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIo8BCh9SZXNlbmRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhcKCnNlbmRfZW1haWwYAiABKAhIAIgBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAMgASgJSAGIAQFCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIjIKIVZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKHAQoiVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEiwKCXByb3ZpZGVycxgCIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciJUCh9BY2NlcHRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIngKIEFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkiIwoTQ3JlYXRlVGVuYW50UmVxdWVzdBIMCgRuYW1lGAEgASgJIjsKFENyZWF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIeChBHZXRUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJIjgKEUdldFRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCJ4ChNVcGRhdGVUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIuCgZzdGF0dXMYAyABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXNIAYgBAUIHCgVfbmFtZUIJCgdfc3RhdHVzIjsKFFVwZGF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCLDAQoSTGlzdFRlbmFudHNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKUAQoTTGlzdFRlbmFudHNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLlRlbmFudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iIQoTRGVsZXRlVGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVUZW5hbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqEHChRDcmVhdGVQcm9qZWN0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEQoJdGVuYW50X2lkGAMgASgJEiAKE2RlZmF1bHRfbG9jYWxlX2NvZGUYBCABKAlIAYgBARIoChtkZWZhdWx0X2xvY2FsZV9kaXNwbGF5X25hbWUYBSABKAlIAogBARInChpkZWZhdWx0X2xvY2FsZV9uYXRpdmVfbmFtZRgGIAEoCUgDiAEBEiIKFWRlZmF1bHRfbG9jYWxlX2lzX3J0bBgHIAEoCEgEiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgFiAEBEhUKCGxvZ29fdXJsGAsgASgJSAaIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgHiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgIiAEBEhUKCHJlcGx5X3RvGA4gASgJSAmIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgKiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgLiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgMiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISA2IAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgOiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA+IAQFCDgoMX2Rlc2NyaXB0aW9uQhYKFF9kZWZhdWx0X2xvY2FsZV9jb2RlQh4KHF9kZWZhdWx0X2xvY2FsZV9kaXNwbGF5X25hbWVCHQobX2RlZmF1bHRfbG9jYWxlX25hdGl2ZV9uYW1lQhgKFl9kZWZhdWx0X2xvY2FsZV9pc19ydGxCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQiPgoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIjsKEkdldFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCLaBQoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLwoGc3RhdHVzGAQgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gCiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgDiAEBEhUKCGxvZ29fdXJsGAsgASgJSASIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgFiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgGiAEBEhUKCHJlcGx5X3RvGA4gASgJSAeIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgIiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgJiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgKiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISAuIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgMiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA2IAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19zdGF0dXNCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQiPgoVVXBkYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0ItcBChNMaXN0UHJvamVjdHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIrCgV3aGVyZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilgEKFExpc3RQcm9qZWN0c1Jlc3BvbnNlEiMKBWl0ZW1zGAEgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiKAoVRGVsZXRlUHJvamVjdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLQoYR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJCChlHZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ii4KGFNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIkIKGVNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QixwEKF0NyZWF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRITCgtwcm9qZWN0X2lkcxgDIAMoCRIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIsCgtpbnZpdGVfdHlwZRgFIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSFAoHbWVzc2FnZRgGIAEoCUgAiAEBQgoKCF9tZXNzYWdlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiLaAQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpwBChdMaXN0SW52aXRhdGlvbnNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjAKF1Jldm9rZUludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiTAoXQWNjZXB0SW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQiVAoYQWNjZXB0SW52aXRhdGlvblJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISEgoKc2Vzc2lvbl9pZBgCIAEoCSIqChlWYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIkkKGlZhbGlkYXRlSW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIrYCChNDcmVhdGVBcGlLZXlSZXF1ZXN0EgwKBG5hbWUYASABKAkSKQoIa2V5X3R5cGUYAiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEg4KBnNjb3BlcxgDIAMoCRIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAQgASgFSACIAQESMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCg5hbGxvd2VkX21vZGVscxgGIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYByADKAkSFgoJY29uZmlnX2lkGAggASgJSAKIAQFCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCDAoKX2NvbmZpZ19pZCI8ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5Ih4KEEdldEFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiOQoRR2V0QXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSLDAQoSTGlzdEFwaUtleXNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKUAQoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ixAEKE1VwZGF0ZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgDIAEoCEgBiAEBEg4KBnNjb3BlcxgEIAMoCRIVCg11cGRhdGVfc2NvcGVzGAYgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBSABKAVIAogBAUIHCgVfbmFtZUIMCgpfaXNfYWN0aXZlQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyIjwKFFVwZGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUm90YXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRSb3RhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IiEKE1Jldm9rZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiJwoUUmV2b2tlQXBpS2V5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKxBQoMQXV0aFByb3ZpZGVyEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHR5cGUYBCABKAkSJwoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdlbmFibGVkGAYgASgIEhIKCmlzX2RlZmF1bHQYByABKAgSEAoIcHJpb3JpdHkYCCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgAiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChBwdWJsaXNoZWRfY29uZmlnGDwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh4KEXB1Ymxpc2hlZF9lbmFibGVkGD0gASgISAOIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBAUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUITChFfcHVibGlzaGVkX2NvbmZpZ0IUChJfcHVibGlzaGVkX2VuYWJsZWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IskBChhMaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqQBChlMaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlEiwKCXByb3ZpZGVycxgBIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJAoWR2V0QXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJGChdHZXRBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciKBAgoZQ3JlYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEicKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoHZW5hYmxlZBgFIAEoCEgAiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIAYgBARIVCghwcmlvcml0eRgHIAEoBUgCiAEBEhYKCWNvbmZpZ19pZBgIIAEoCUgDiAEBQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eUIMCgpfY29uZmlnX2lkIkkKGkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIuoBChlVcGRhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIsCgZjb25maWcYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESFAoHZW5hYmxlZBgEIAEoCEgCiAEBEhcKCmlzX2RlZmF1bHQYBSABKAhIA4gBARIVCghwcmlvcml0eRgGIAEoBUgEiAEBQgcKBV9uYW1lQgkKB19jb25maWdCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5IkkKGlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIicKGURlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiLQoaRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIoChpQdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSKAAQobUHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIioKHFVucHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiTAodVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiMQojR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiUQokR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyLaAgoTQXV0aFByb3ZpZGVyVmVyc2lvbhIKCgJpZBgBIAEoCRIYChBhdXRoX3Byb3ZpZGVyX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiKwodR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiUwoeR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEjEKB3ZlcnNpb24YASABKAsyIC5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXJWZXJzaW9uIrMBCh9MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0EhgKEGF1dGhfcHJvdmlkZXJfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QisQEKIExpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1Jlc3BvbnNlEjIKCHZlcnNpb25zGAEgAygLMiAuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ibwohUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKIAQoiUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchI1CgtuZXdfdmVyc2lvbhgCIAEoCzIgLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlclZlcnNpb24iqAEKIlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiUgojU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiNwopQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiWQoqQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIh4KHEVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QiMgodRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USEQoJcHJvdmlkZXJzGAEgAygJIioKF01pbnRTZXJ2aWNlVG9rZW5SZXF1ZXN0Eg8KB3B1cnBvc2UYASABKAkiTgoYTWludFNlcnZpY2VUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEg8KB3B1cnBvc2UYAiABKAkSEgoKZXhwaXJlc19hdBgDIAEoCSKOAQoWVXBkYXRlTXlQcm9maWxlUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFwoKYXZhdGFyX3VybBgDIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmwiPwoXVXBkYXRlTXlQcm9maWxlUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLOAQodTGlzdE15T0F1dGhDb25uZWN0aW9uc1JlcXVlc3QSEgoFZmlyc3QYASABKAVIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhEKBGxhc3QYAyABKAVIAogBARITCgZiZWZvcmUYBCABKAlIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmVCCAoGX3doZXJlIo0BCg9PQXV0aENvbm5lY3Rpb24SEAoIcHJvdmlkZXIYASABKAkSGAoQcHJvdmlkZXJfdXNlcl9pZBgCIAEoCRISCgVlbWFpbBgDIAEoCUgAiAEBEjAKDGNvbm5lY3RlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX2VtYWlsIq4BCh5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USMQoLY29ubmVjdGlvbnMYASADKAsyHC5pZGVudGl0eS52MS5PQXV0aENvbm5lY3Rpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIi4KGlVubGlua09BdXRoUHJvdmlkZXJSZXF1ZXN0EhAKCHByb3ZpZGVyGAEgASgJIi4KG1VubGlua09BdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi4KHUNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjMKHkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXNwb25zZRIRCglhdmFpbGFibGUYASABKAgijwEKG0NvbXBsZXRlQWNjb3VudFNldHVwUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFQoIcGFzc3dvcmQYAyABKAlIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQgsKCV9wYXNzd29yZCJbChxDb21wbGV0ZUFjY291bnRTZXR1cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSGQoMcmVkaXJlY3RfdXJsGAIgASgJSACIAQFCDwoNX3JlZGlyZWN0X3VybCItChpDcmVhdGVTaWdudXBTZXNzaW9uUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJIi4KG0NyZWF0ZVNpZ251cFNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKF1Jlc2VuZEludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIgoUR2V0SW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiRAoVR2V0SW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIioKFUFjdGl2YXRlVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiPQoWQWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiMAobU3VzcGVuZFRlbmFudEFjY291bnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJDChxTdXNwZW5kVGVuYW50QWNjb3VudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIoChNDYW5jZWxUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI7ChRDYW5jZWxUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiLAoXUmVhY3RpdmF0ZVRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIj8KGFJlYWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiLQoYTWFya1RlbmFudFBhc3REdWVSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJAChlNYXJrVGVuYW50UGFzdER1ZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCInChJDaHVyblRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIjoKE0NodXJuVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ih4KHEdldEN1c3RvbWVyQXV0aENvbmZpZ1JlcXVlc3QimgIKEkN1c3RvbWVyQXV0aENvbmZpZxIRCglhbGdvcml0aG0YASABKAkSEwoGaXNzdWVyGAIgASgJSACIAQESFQoIYXVkaWVuY2UYAyABKAlIAYgBARI3Cg5rZXlfcm90YXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIYCgtzaWduaW5nX2tleRgFIAEoCUgDiAEBEiwKBmNsYWltcxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIJCgdfaXNzdWVyQgsKCV9hdWRpZW5jZUIRCg9fa2V5X3JvdGF0ZWRfYXRCDgoMX3NpZ25pbmdfa2V5QgkKB19jbGFpbXMiUAodR2V0Q3VzdG9tZXJBdXRoQ29uZmlnUmVzcG9uc2USLwoGY29uZmlnGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJBdXRoQ29uZmlnIrEBCh9VcGRhdGVDdXN0b21lckF1dGhDb25maWdSZXF1ZXN0EhEKCWFsZ29yaXRobRgBIAEoCRITCgZpc3N1ZXIYAiABKAlIAIgBARIVCghhdWRpZW5jZRgDIAEoCUgBiAEBEiwKBmNsYWltcxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBAUIJCgdfaXNzdWVyQgsKCV9hdWRpZW5jZUIJCgdfY2xhaW1zIlMKIFVwZGF0ZUN1c3RvbWVyQXV0aENvbmZpZ1Jlc3BvbnNlEi8KBmNvbmZpZxgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVyQXV0aENvbmZpZyIlCiNSb3RhdGVDdXN0b21lckF1dGhTaWduaW5nS2V5UmVxdWVzdCJvCiRSb3RhdGVDdXN0b21lckF1dGhTaWduaW5nS2V5UmVzcG9uc2USEwoLc2lnbmluZ19rZXkYASABKAkSMgoOa2V5X3JvdGF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIisKGlZlcmlmeUN1c3RvbWVyVG9rZW5SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIrMCChtWZXJpZnlDdXN0b21lclRva2VuUmVzcG9uc2USDQoFdmFsaWQYASABKAgSEgoFZXJyb3IYAiABKAlIAIgBARIYCgtjdXN0b21lcl9pZBgDIAEoCUgBiAEBEhIKBWVtYWlsGAQgASgJSAKIAQESFgoJdGVuYW50X2lkGAUgASgJSAOIAQESFwoKcHJvamVjdF9pZBgGIAEoCUgEiAEBEg0KBXJvbGVzGAcgAygJEjMKCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQFCCAoGX2Vycm9yQg4KDF9jdXN0b21lcl9pZEIICgZfZW1haWxCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEINCgtfZXhwaXJlc19hdCIkCiJHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXF1ZXN0ItsBChhDdXN0b21lck1hbmFnZW1lbnRTdGF0dXMSIQoZbmF0aXZlX21hbmFnZW1lbnRfZW5hYmxlZBgBIAEoCBIiChVleHRlcm5hbF9wcm92aWRlcl91cmwYAiABKAlIAIgBARIjChZleHRlcm5hbF9wcm92aWRlcl9uYW1lGAMgASgJSAGIAQESEwoGcmVhc29uGAQgASgJSAKIAQFCGAoWX2V4dGVybmFsX3Byb3ZpZGVyX3VybEIZChdfZXh0ZXJuYWxfcHJvdmlkZXJfbmFtZUIJCgdfcmVhc29uIlwKI0dldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1Jlc3BvbnNlEjUKBnN0YXR1cxgBIAEoCzIlLmlkZW50aXR5LnYxLkN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cyIoChVWYWxpZGF0ZUFwaUtleVJlcXVlc3QSDwoHYXBpX2tleRgBIAEoCSLMAQoWVmFsaWRhdGVBcGlLZXlSZXNwb25zZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhAKCGtleV90eXBlGAUgASgJEg4KBnNjb3BlcxgGIAMoCRIWCg5hbGxvd2VkX21vZGVscxgHIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYCCADKAkSGwoTcmF0ZV9saW1pdF9wZXJfaG91chgJIAEoBSI3ChRDdXN0b21lckxvZ2luUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCSJtChVDdXN0b21lckxvZ2luUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ/ChdDdXN0b21lclJlZ2lzdGVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIyCgxwcm9maWxlX2RhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCDwoNX3Byb2ZpbGVfZGF0YSJwChhDdXN0b21lclJlZ2lzdGVyUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciI0ChtDdXN0b21lclJlZnJlc2hUb2tlblJlcXVlc3QSFQoNcmVmcmVzaF90b2tlbhgBIAEoCSJLChxDdXN0b21lclJlZnJlc2hUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJIioKGUN1c3RvbWVyUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkiKgoaQ3VzdG9tZXJSZXF1ZXN0T1RQUmVzcG9uc2USDAoEc2VudBgBIAEoCCI7ChhDdXN0b21lclZlcmlmeU9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIb3RwX2NvZGUYAiABKAkicQoZQ3VzdG9tZXJWZXJpZnlPVFBSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIjQKI0N1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjQKJEN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRIMCgRzZW50GAEgASgIIkMKHEN1c3RvbWVyUmVzZXRQYXNzd29yZFJlcXVlc3QSDQoFdG9rZW4YASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIjAKHUN1c3RvbWVyUmVzZXRQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi2QEKGVN0b3JlUHJvdmlkZXJUb2tlblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSFAoMcHJvdmlkZXJfa2V5GAIgASgJEhQKDGFjY2Vzc190b2tlbhgDIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAQgASgJEhAKCGlkX3Rva2VuGAUgASgJEg4KBnNjb3BlcxgGIAEoCRIzCgpleHBpcmVzX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19leHBpcmVzX2F0IhwKGlN0b3JlUHJvdmlkZXJUb2tlblJlc3BvbnNlIoMBChlTdGFydFByb3ZpZGVyTG9naW5SZXF1ZXN0EhQKDHByb3ZpZGVyX2tleRgBIAEoCRIWCglyZXR1cm5fdG8YAiABKAlIAIgBARIZCgxyZWRpcmVjdF91cmkYAyABKAlIAYgBAUIMCgpfcmV0dXJuX3RvQg8KDV9yZWRpcmVjdF91cmkiMgoaU3RhcnRQcm92aWRlckxvZ2luUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJIk8KGkZpbmlzaFByb3ZpZGVyTG9naW5SZXF1ZXN0EhQKDHByb3ZpZGVyX2tleRgBIAEoCRIMCgRjb2RlGAIgASgJEg0KBXN0YXRlGAMgASgJIm4KG0ZpbmlzaFByb3ZpZGVyTG9naW5SZXNwb25zZRITCgtjdXN0b21lcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCSKCAQohU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRIUCgxyZWRpcmVjdF91cmkYAiABKAkSDgoGc2NvcGVzGAMgAygJEhYKCXJldHVybl90bxgEIAEoCUgAiAEBQgwKCl9yZXR1cm5fdG8iOgoiU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRIUCgxyZWRpcmVjdF91cmwYASABKAkiQwokQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0EgwKBGNvZGUYASABKAkSDQoFc3RhdGUYAiABKAkingEKJUNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2USEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFZW1haWwYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkSFgoJcmV0dXJuX3RvGAUgASgJSACIAQFCDAoKX3JldHVybl90byJ/Ch5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhQKDHJlZGlyZWN0X3VyaRgCIAEoCRIOCgZzY29wZXMYAyADKAkSFgoJcmV0dXJuX3RvGAQgASgJSACIAQFCDAoKX3JldHVybl90byI3Ch9TdGFydEFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEhQKDHJlZGlyZWN0X3VybBgBIAEoCSJACiFDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QSDAoEY29kZRgBIAEoCRINCgVzdGF0ZRgCIAEoCSK9AQoiQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRIVCg1hZG1pbl91c2VyX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAMgASgJEg4KBnNjb3BlcxgEIAMoCRIdChVpc19maXJzdF9wYXJ0eV9jbGllbnQYBSABKAgSFgoJcmV0dXJuX3RvGAYgASgJSACIAQFCDAoKX3JldHVybl90byJEChdHZXRQcm92aWRlclRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIUCgxwcm92aWRlcl9rZXkYAiABKAkirQEKGEdldFByb3ZpZGVyVG9rZW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRIQCghpZF90b2tlbhgDIAEoCRIOCgZzY29wZXMYBCABKAkSMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUINCgtfZXhwaXJlc19hdCIyChtEZWxldGVQcm92aWRlclRva2Vuc1JlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiHgocRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXNwb25zZSJ0ChhSZWx5aW5nUGFydHlMb2dpbk1ldGhvZHMSFQoIcGFzc3dvcmQYASABKAhIAIgBARIQCgNvdHAYAiABKAhIAYgBARIaChJkaXNhYmxlZF9wcm92aWRlcnMYAyADKAlCCwoJX3Bhc3N3b3JkQgYKBF9vdHAi0QQKDFJlbHlpbmdQYXJ0eRIKCgJpZBgBIAEoCRIWCg5wcmluY2lwYWxfa2luZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQESEQoJY2xpZW50X2lkGAUgASgJEgwKBG5hbWUYBiABKAkSFQoNcmVkaXJlY3RfdXJpcxgHIAMoCRIWCg5hbGxvd2VkX3Njb3BlcxgIIAMoCRIWCg5pc19maXJzdF9wYXJ0eRgJIAEoCBIUCgxyZXF1aXJlc19tZmEYCiABKAgSQQoNbG9naW5fbWV0aG9kcxgLIAEoCzIlLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUxvZ2luTWV0aG9kc0gCiAEBEhcKCmNyZWF0ZWRfYnkYDCABKAlIA4gBARIuCgpjcmVhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgtkaXNhYmxlZF9hdBgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIbCg5wb3N0X2xvZ2luX3VybBgQIAEoCUgFiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEAoOX2xvZ2luX21ldGhvZHNCDQoLX2NyZWF0ZWRfYnlCDgoMX2Rpc2FibGVkX2F0QhEKD19wb3N0X2xvZ2luX3VybCKBAQoZTGlzdFJlbHlpbmdQYXJ0aWVzUmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAMgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCJVChpMaXN0UmVseWluZ1BhcnRpZXNSZXNwb25zZRIoCgVpdGVtcxgBIAMoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eRINCgV0b3RhbBgCIAEoBSJDChZHZXRSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCSJLChdHZXRSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IoQDChlDcmVhdGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAyABKAlIAYgBARIRCgljbGllbnRfaWQYBCABKAkSDAoEbmFtZRgFIAEoCRIVCg1yZWRpcmVjdF91cmlzGAYgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAcgAygJEhYKDmlzX2ZpcnN0X3BhcnR5GAggASgIEhQKDHJlcXVpcmVzX21mYRgJIAEoCBJBCg1sb2dpbl9tZXRob2RzGAogASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESGwoOcG9zdF9sb2dpbl91cmwYCyABKAlIA4gBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhAKDl9sb2dpbl9tZXRob2RzQhEKD19wb3N0X2xvZ2luX3VybCJOChpDcmVhdGVSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IsICChlVcGRhdGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIRCgRuYW1lGAMgASgJSACIAQESFQoNcmVkaXJlY3RfdXJpcxgEIAMoCRIWCg5hbGxvd2VkX3Njb3BlcxgFIAMoCRIZCgxyZXF1aXJlc19tZmEYBiABKAhIAYgBARJBCg1sb2dpbl9tZXRob2RzGAcgASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESGwoOcG9zdF9sb2dpbl91cmwYCCABKAlIA4gBAUIHCgVfbmFtZUIPCg1fcmVxdWlyZXNfbWZhQhAKDl9sb2dpbl9tZXRob2RzQhEKD19wb3N0X2xvZ2luX3VybCJOChpVcGRhdGVSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IkcKGkRpc2FibGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCSIdChtEaXNhYmxlUmVseWluZ1BhcnR5UmVzcG9uc2Ui7AIKDEN1c3RvbURvbWFpbhIKCgJpZBgBIAEoCRIYChByZWx5aW5nX3BhcnR5X2lkGAIgASgJEgwKBGtpbmQYAyABKAkSEQoJdGVuYW50X2lkGAQgASgJEhIKCnByb2plY3RfaWQYBSABKAkSEAoIaG9zdG5hbWUYBiABKAkSDgoGc3RhdHVzGAcgASgJEhEKCXR4dF90b2tlbhgIIAEoCRI0Cgt2ZXJpZmllZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIXCgpjcmVhdGVkX2J5GAogASgJSAGIAQESLgoKY3JlYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX3ZlcmlmaWVkX2F0Qg0KC19jcmVhdGVkX2J5IlcKG1JlZ2lzdGVyQ3VzdG9tRG9tYWluUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJEhAKCGhvc3RuYW1lGAIgASgJEgwKBGtpbmQYAyABKAkiUAocUmVnaXN0ZXJDdXN0b21Eb21haW5SZXNwb25zZRIwCg1jdXN0b21fZG9tYWluGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tRG9tYWluIicKGVZlcmlmeUN1c3RvbURvbWFpblJlcXVlc3QSCgoCaWQYASABKAkiYAoaVmVyaWZ5Q3VzdG9tRG9tYWluUmVzcG9uc2USMAoNY3VzdG9tX2RvbWFpbhgBIAEoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbhIQCgh2ZXJpZmllZBgCIAEoCCInChlEZWxldGVDdXN0b21Eb21haW5SZXF1ZXN0EgoKAmlkGAEgASgJIhwKGkRlbGV0ZUN1c3RvbURvbWFpblJlc3BvbnNlIjQKGExpc3RDdXN0b21Eb21haW5zUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJIkUKGUxpc3RDdXN0b21Eb21haW5zUmVzcG9uc2USKAoFaXRlbXMYASADKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4i4gIKD0N1c3RvbWVyU2Vzc2lvbhIKCgJpZBgBIAEoCRITCgtjdXN0b21lcl9pZBgCIAEoCRIYChByZWx5aW5nX3BhcnR5X2lkGAMgASgJEhEKCXRlbmFudF9pZBgEIAEoCRISCgpwcm9qZWN0X2lkGAUgASgJEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3Rfc2Vlbl9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKaXBfYWRkcmVzcxgJIAEoCUgAiAEBEhcKCnVzZXJfYWdlbnQYCiABKAlIAYgBARILCgNhbXIYCyADKAlCDQoLX2lwX2FkZHJlc3NCDQoLX3VzZXJfYWdlbnQiNwobTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXF1ZXN0EhgKEHJlbHlpbmdfcGFydHlfaWQYASABKAkiSwocTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXNwb25zZRIrCgVpdGVtcxgBIAMoCzIcLmlkZW50aXR5LnYxLkN1c3RvbWVyU2Vzc2lvbiIqChxSZXZva2VDdXN0b21lclNlc3Npb25SZXF1ZXN0EgoKAmlkGAEgASgJIh8KHVJldm9rZUN1c3RvbWVyU2Vzc2lvblJlc3BvbnNlIp0CChFSZWx5aW5nUGFydHlHcmFudBIKCgJpZBgBIAEoCRIVCg1hZG1pbl91c2VyX2lkGAIgASgJEhEKCWNsaWVudF9pZBgDIAEoCRIOCgZzY29wZXMYBCADKAkSFwoKZ3JhbnRlZF9ieRgFIAEoCUgAiAEBEi4KCmdyYW50ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCnJldm9rZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESFwoKcmV2b2tlZF9ieRgIIAEoCUgCiAEBQg0KC19ncmFudGVkX2J5Qg0KC19yZXZva2VkX2F0Qg0KC19yZXZva2VkX2J5Ik0KHUxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXF1ZXN0EhoKDWFkbWluX3VzZXJfaWQYASABKAlIAIgBAUIQCg5fYWRtaW5fdXNlcl9pZCJeCh5MaXN0UmVseWluZ1BhcnR5R3JhbnRzUmVzcG9uc2USLQoFaXRlbXMYASADKAsyHi5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlHcmFudBINCgV0b3RhbBgCIAEoBSJUChhHcmFudFJlbHlpbmdQYXJ0eVJlcXVlc3QSFQoNYWRtaW5fdXNlcl9pZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkSDgoGc2NvcGVzGAMgAygJIkoKGUdyYW50UmVseWluZ1BhcnR5UmVzcG9uc2USLQoFZ3JhbnQYASABKAsyHi5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlHcmFudCIsCh5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlcXVlc3QSCgoCaWQYASABKAkiIQofUmV2b2tlUmVseWluZ1BhcnR5R3JhbnRSZXNwb25zZSKrAgoMQ3VzdG9tZXJSb2xlEgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgsKA2tleRgEIAEoCRIMCgRuYW1lGAUgASgJEhMKC3Blcm1pc3Npb25zGAYgAygJEhIKCmlzX2RlZmF1bHQYByABKAgSLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLZGlzYWJsZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDgoMX2Rpc2FibGVkX2F0IskBChhMaXN0Q3VzdG9tZXJSb2xlc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFZmlyc3QYAiABKAVIAYgBARISCgVhZnRlchgDIAEoCUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARITCgZiZWZvcmUYBSABKAlIBIgBAUIICgZfd2hlcmVCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIqABChlMaXN0Q3VzdG9tZXJSb2xlc1Jlc3BvbnNlEigKBWl0ZW1zGAEgAygLMhkuaWRlbnRpdHkudjEuQ3VzdG9tZXJSb2xlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZHZXRDdXN0b21lclJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJIkIKF0dldEN1c3RvbWVyUm9sZVJlc3BvbnNlEicKBHJvbGUYASABKAsyGS5pZGVudGl0eS52MS5DdXN0b21lclJvbGUihgEKGUNyZWF0ZUN1c3RvbWVyUm9sZVJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSCwoDa2V5GAMgASgJEgwKBG5hbWUYBCABKAkSEwoLcGVybWlzc2lvbnMYBSADKAkSEgoKaXNfZGVmYXVsdBgGIAEoCCJFChpDcmVhdGVDdXN0b21lclJvbGVSZXNwb25zZRInCgRyb2xlGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tZXJSb2xlIoABChlVcGRhdGVDdXN0b21lclJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARITCgtwZXJtaXNzaW9ucxgDIAMoCRIXCgppc19kZWZhdWx0GAQgASgISAGIAQFCBwoFX25hbWVCDQoLX2lzX2RlZmF1bHQiRQoaVXBkYXRlQ3VzdG9tZXJSb2xlUmVzcG9uc2USJwoEcm9sZRgBIAEoCzIZLmlkZW50aXR5LnYxLkN1c3RvbWVyUm9sZSIoChpEaXNhYmxlQ3VzdG9tZXJSb2xlUmVxdWVzdBIKCgJpZBgBIAEoCSIdChtEaXNhYmxlQ3VzdG9tZXJSb2xlUmVzcG9uc2UijgIKFkN1c3RvbWVyUm9sZUFzc2lnbm1lbnQSCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDwoHcm9sZV9pZBgDIAEoCRIuCgpncmFudGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GAUgASgJSACIAQESMwoKcmV2b2tlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpyZXZva2VkX2J5GAcgASgJSAKIAQFCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkiQQoZQXNzaWduQ3VzdG9tZXJSb2xlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIPCgdyb2xlX2lkGAIgASgJIlUKGkFzc2lnbkN1c3RvbWVyUm9sZVJlc3BvbnNlEjcKCmFzc2lnbm1lbnQYASABKAsyIy5pZGVudGl0eS52MS5DdXN0b21lclJvbGVBc3NpZ25tZW50IjEKI1Jldm9rZUN1c3RvbWVyUm9sZUFzc2lnbm1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIiYKJFJldm9rZUN1c3RvbWVyUm9sZUFzc2lnbm1lbnRSZXNwb25zZSLTAQoiTGlzdEN1c3RvbWVyUm9sZUFzc2lnbm1lbnRzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVmaXJzdBgCIAEoBUgBiAEBEhIKBWFmdGVyGAMgASgJSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBEhMKBmJlZm9yZRgFIAEoCUgEiAEBQggKBl93aGVyZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUitAEKI0xpc3RDdXN0b21lclJvbGVBc3NpZ25tZW50c1Jlc3BvbnNlEjIKBWl0ZW1zGAEgAygLMiMuaWRlbnRpdHkudjEuQ3VzdG9tZXJSb2xlQXNzaWdubWVudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8qsQEKD0FkbWluVXNlclN0YXR1cxIhCh1BRE1JTl9VU0VSX1NUQVRVU19VTlNQRUNJRklFRBAAEhwKGEFETUlOX1VTRVJfU1RBVFVTX0FDVElWRRABEh0KGUFETUlOX1VTRVJfU1RBVFVTX1BFTkRJTkcQAhIfChtBRE1JTl9VU0VSX1NUQVRVU19TVVNQRU5ERUQQAxIdChlBRE1JTl9VU0VSX1NUQVRVU19ERUxFVEVEEAQqiQEKDkN1c3RvbWVyU3RhdHVzEh8KG0NVU1RPTUVSX1NUQVRVU19VTlNQRUNJRklFRBAAEhoKFkNVU1RPTUVSX1NUQVRVU19BQ1RJVkUQARIbChdDVVNUT01FUl9TVEFUVVNfUEVORElORxACEh0KGUNVU1RPTUVSX1NUQVRVU19TVVNQRU5ERUQQAyrZAQoMVGVuYW50U3RhdHVzEh0KGVRFTkFOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtURU5BTlRfU1RBVFVTX1BFTkRJTkdfU0VUVVAQARIYChRURU5BTlRfU1RBVFVTX0FDVElWRRACEhoKFlRFTkFOVF9TVEFUVVNfUEFTVF9EVUUQAxIbChdURU5BTlRfU1RBVFVTX1NVU1BFTkRFRBAEEhsKF1RFTkFOVF9TVEFUVVNfQ0FOQ0VMTEVEEAUSGQoVVEVOQU5UX1NUQVRVU19DSFVSTkVEEAYqZgoNUHJvamVjdFN0YXR1cxIeChpQUk9KRUNUX1NUQVRVU19VTlNQRUNJRklFRBAAEhkKFVBST0pFQ1RfU1RBVFVTX0FDVElWRRABEhoKFlBST0pFQ1RfU1RBVFVTX0RFTEVURUQQAiqmAQoKQWNjZXNzUm9sZRIbChdBQ0NFU1NfUk9MRV9VTlNQRUNJRklFRBAAEhwKGEFDQ0VTU19ST0xFX1RFTkFOVF9PV05FUhABEh0KGUFDQ0VTU19ST0xFX1BST0pFQ1RfQURNSU4QAhIeChpBQ0NFU1NfUk9MRV9QUk9KRUNUX0VESVRPUhADEh4KGkFDQ0VTU19ST0xFX1BST0pFQ1RfVklFV0VSEAQqZAoKSW52aXRlVHlwZRIbChdJTlZJVEVfVFlQRV9VTlNQRUNJRklFRBAAEhwKGElOVklURV9UWVBFX1RFTkFOVF9PV05FUhABEhsKF0lOVklURV9UWVBFX1RFQU1fTUVNQkVSEAIqsgEKEEludml0YXRpb25TdGF0dXMSIQodSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIdChlJTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESHgoaSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhIdChlJTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSHQoZSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKucBChhDdXN0b21lckludml0YXRpb25TdGF0dXMSKgomQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESJwojQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSJgoiQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKlwKCkFwaUtleVR5cGUSHAoYQVBJX0tFWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQVBJX0tFWV9UWVBFX1BVQkxJQxABEhcKE0FQSV9LRVlfVFlQRV9TRUNSRVQQAjLpagoPSWRlbnRpdHlTZXJ2aWNlEj4KBUxvZ2luEhkuaWRlbnRpdHkudjEuTG9naW5SZXF1ZXN0GhouaWRlbnRpdHkudjEuTG9naW5SZXNwb25zZRJTCgxMb2dpbldpdGhPVFASIC5pZGVudGl0eS52MS5Mb2dpbldpdGhPVFBSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVzcG9uc2USTQoKUmVxdWVzdE9UUBIeLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuUmVxdWVzdE9UUFJlc3BvbnNlEkEKBkxvZ291dBIaLmlkZW50aXR5LnYxLkxvZ291dFJlcXVlc3QaGy5pZGVudGl0eS52MS5Mb2dvdXRSZXNwb25zZRJHCghSZWdpc3RlchIcLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVxdWVzdBodLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVzcG9uc2USUAoLVmVyaWZ5RW1haWwSHy5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlcXVlc3QaIC5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlc3BvbnNlEnQKF1Jlc2VuZFZlcmlmaWNhdGlvbkVtYWlsEisuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0GiwuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRJ6ChlTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlEi0uaWRlbnRpdHkudjEuU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QaLi5pZGVudGl0eS52MS5TZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVzcG9uc2USXAoPVmVyaWZ5RW1haWxDb2RlEiMuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxDb2RlUmVxdWVzdBokLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsQ29kZVJlc3BvbnNlEmsKFFJlcXVlc3RQYXNzd29yZFJlc2V0EiguaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0GikuaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRJWCg1SZXNldFBhc3N3b3JkEiEuaWRlbnRpdHkudjEuUmVzZXRQYXNzd29yZFJlcXVlc3QaIi5pZGVudGl0eS52MS5SZXNldFBhc3N3b3JkUmVzcG9uc2USWQoOVXBkYXRlUGFzc3dvcmQSIi5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlc3BvbnNlElMKDFJlZnJlc2hUb2tlbhIgLmlkZW50aXR5LnYxLlJlZnJlc2hUb2tlblJlcXVlc3QaIS5pZGVudGl0eS52MS5SZWZyZXNoVG9rZW5SZXNwb25zZRJiChFHZXRTZXNzaW9uQ29udGV4dBIlLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVzcG9uc2USUwoMU3dpdGNoVGVuYW50EiAuaWRlbnRpdHkudjEuU3dpdGNoVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlc3BvbnNlElYKDVN3aXRjaFByb2plY3QSIS5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlN3aXRjaFByb2plY3RSZXNwb25zZRJoChNDbGVhclNlc3Npb25Db250ZXh0EicuaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlcXVlc3QaKC5pZGVudGl0eS52MS5DbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USPgoFR2V0TWUSGS5pZGVudGl0eS52MS5HZXRNZVJlcXVlc3QaGi5pZGVudGl0eS52MS5HZXRNZVJlc3BvbnNlElwKD0NyZWF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLkNyZWF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXNwb25zZRJTCgxHZXRBZG1pblVzZXISIC5pZGVudGl0eS52MS5HZXRBZG1pblVzZXJSZXF1ZXN0GiEuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVzcG9uc2USXAoPVXBkYXRlQWRtaW5Vc2VyEiMuaWRlbnRpdHkudjEuVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlc3BvbnNlElkKDkxpc3RBZG1pblVzZXJzEiIuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXNwb25zZRJQCgtHcmFudEFjY2VzcxIfLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVxdWVzdBogLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVzcG9uc2USUwoMUmV2b2tlQWNjZXNzEiAuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFjY2Vzc1Jlc3BvbnNlElkKDkNyZWF0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXNwb25zZRJQCgtHZXRDdXN0b21lchIfLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVxdWVzdBogLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVzcG9uc2USWQoOVXBkYXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlc3BvbnNlElkKDkRlbGV0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRJWCg1MaXN0Q3VzdG9tZXJzEiEuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyc1JlcXVlc3QaIi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJzUmVzcG9uc2USXAoPU3VzcGVuZEN1c3RvbWVyEiMuaWRlbnRpdHkudjEuU3VzcGVuZEN1c3RvbWVyUmVxdWVzdBokLmlkZW50aXR5LnYxLlN1c3BlbmRDdXN0b21lclJlc3BvbnNlElkKDk1lcmdlQ3VzdG9tZXJzEiIuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNSZXNwb25zZRJoChNTZXRDdXN0b21lclBhc3N3b3JkEicuaWRlbnRpdHkudjEuU2V0Q3VzdG9tZXJQYXNzd29yZFJlcXVlc3QaKC5pZGVudGl0eS52MS5TZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USdwoYQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEnQKF0xpc3RDdXN0b21lckludml0YXRpb25zEisuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXF1ZXN0GiwuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXNwb25zZRJuChVHZXRDdXN0b21lckludml0YXRpb24SKS5pZGVudGl0eS52MS5HZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGFJlc2VuZEN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLlJlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5SZXNlbmRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ9ChpWYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvbhIuLmlkZW50aXR5LnYxLlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBovLmlkZW50aXR5LnYxLlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLkFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlElMKDENyZWF0ZVRlbmFudBIgLmlkZW50aXR5LnYxLkNyZWF0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5DcmVhdGVUZW5hbnRSZXNwb25zZRJKCglHZXRUZW5hbnQSHS5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0VGVuYW50UmVzcG9uc2USUwoMVXBkYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZVRlbmFudFJlc3BvbnNlElAKC0xpc3RUZW5hbnRzEh8uaWRlbnRpdHkudjEuTGlzdFRlbmFudHNSZXF1ZXN0GiAuaWRlbnRpdHkudjEuTGlzdFRlbmFudHNSZXNwb25zZRJTCgxEZWxldGVUZW5hbnQSIC5pZGVudGl0eS52MS5EZWxldGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuRGVsZXRlVGVuYW50UmVzcG9uc2USVgoNQ3JlYXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdFJlc3BvbnNlEk0KCkdldFByb2plY3QSHi5pZGVudGl0eS52MS5HZXRQcm9qZWN0UmVxdWVzdBofLmlkZW50aXR5LnYxLkdldFByb2plY3RSZXNwb25zZRJWCg1VcGRhdGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USUwoMTGlzdFByb2plY3RzEiAuaWRlbnRpdHkudjEuTGlzdFByb2plY3RzUmVxdWVzdBohLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0c1Jlc3BvbnNlElYKDURlbGV0ZVByb2plY3QSIS5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRJiChFHZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USYgoRU2V0RGVmYXVsdFByb2plY3QSJS5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlcXVlc3QaJi5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEl8KEENyZWF0ZUludml0YXRpb24SJC5pZGVudGl0eS52MS5DcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXNwb25zZRJcCg9MaXN0SW52aXRhdGlvbnMSIy5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXF1ZXN0GiQuaWRlbnRpdHkudjEuTGlzdEludml0YXRpb25zUmVzcG9uc2USXwoQUmV2b2tlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEl8KEEFjY2VwdEludml0YXRpb24SJC5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkFjY2VwdEludml0YXRpb25SZXNwb25zZRJlChJWYWxpZGF0ZUludml0YXRpb24SJi5pZGVudGl0eS52MS5WYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USUwoMQ3JlYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuQ3JlYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlc3BvbnNlEkoKCUdldEFwaUtleRIdLmlkZW50aXR5LnYxLkdldEFwaUtleVJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXNwb25zZRJQCgtMaXN0QXBpS2V5cxIfLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVzcG9uc2USUwoMVXBkYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuVXBkYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlc3BvbnNlElMKDFJvdGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlJvdGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXNwb25zZRJTCgxSZXZva2VBcGlLZXkSIC5pZGVudGl0eS52MS5SZXZva2VBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVzcG9uc2USYgoRTGlzdEF1dGhQcm92aWRlcnMSJS5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlElwKD0dldEF1dGhQcm92aWRlchIjLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJDcmVhdGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5DcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSVXBkYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuVXBkYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKEkRlbGV0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLkRlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRJoChNQdWJsaXNoQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuUHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5QdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USbgoVVW5wdWJsaXNoQXV0aFByb3ZpZGVyEikuaWRlbnRpdHkudjEuVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBoqLmlkZW50aXR5LnYxLlVucHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEoMBChxHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzEjAuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QaMS5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USgAEKG1NjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaBIvLmlkZW50aXR5LnYxLlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QaMC5pZGVudGl0eS52MS5TY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRKVAQoiQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaBI2LmlkZW50aXR5LnYxLkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2hSZXF1ZXN0GjcuaWRlbnRpdHkudjEuQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEnEKFkdldEF1dGhQcm92aWRlclZlcnNpb24SKi5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBorLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRJ3ChhMaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnMSLC5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USfQoaUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb24SLi5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QaLy5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEm4KFUVuYWJsZWRPQXV0aFByb3ZpZGVycxIpLmlkZW50aXR5LnYxLkVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QaKi5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRJfChBNaW50U2VydmljZVRva2VuEiQuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuUmVzcG9uc2USXAoPVXBkYXRlTXlQcm9maWxlEiMuaWRlbnRpdHkudjEuVXBkYXRlTXlQcm9maWxlUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlc3BvbnNlEnEKFkxpc3RNeU9BdXRoQ29ubmVjdGlvbnMSKi5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRJoChNVbmxpbmtPQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5VbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2UScQoWQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eRIqLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0GisuaWRlbnRpdHkudjEuQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlc3BvbnNlEmsKFENvbXBsZXRlQWNjb3VudFNldHVwEiguaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXF1ZXN0GikuaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRJoChNDcmVhdGVTaWdudXBTZXNzaW9uEicuaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QaKC5pZGVudGl0eS52MS5DcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USXwoQUmVzZW5kSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlElYKDUdldEludml0YXRpb24SIS5pZGVudGl0eS52MS5HZXRJbnZpdGF0aW9uUmVxdWVzdBoiLmlkZW50aXR5LnYxLkdldEludml0YXRpb25SZXNwb25zZRJZCg5BY3RpdmF0ZVRlbmFudBIiLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVxdWVzdBojLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVzcG9uc2USawoUU3VzcGVuZFRlbmFudEFjY291bnQSKC5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlcXVlc3QaKS5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlc3BvbnNlElMKDENhbmNlbFRlbmFudBIgLmlkZW50aXR5LnYxLkNhbmNlbFRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5DYW5jZWxUZW5hbnRSZXNwb25zZRJfChBSZWFjdGl2YXRlVGVuYW50EiQuaWRlbnRpdHkudjEuUmVhY3RpdmF0ZVRlbmFudFJlcXVlc3QaJS5pZGVudGl0eS52MS5SZWFjdGl2YXRlVGVuYW50UmVzcG9uc2USYgoRTWFya1RlbmFudFBhc3REdWUSJS5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlcXVlc3QaJi5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlc3BvbnNlElAKC0NodXJuVGVuYW50Eh8uaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXF1ZXN0GiAuaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXNwb25zZRJuChVHZXRDdXN0b21lckF1dGhDb25maWcSKS5pZGVudGl0eS52MS5HZXRDdXN0b21lckF1dGhDb25maWdSZXF1ZXN0GiouaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJBdXRoQ29uZmlnUmVzcG9uc2USdwoYVXBkYXRlQ3VzdG9tZXJBdXRoQ29uZmlnEiwuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJBdXRoQ29uZmlnUmVxdWVzdBotLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyQXV0aENvbmZpZ1Jlc3BvbnNlEoMBChxSb3RhdGVDdXN0b21lckF1dGhTaWduaW5nS2V5EjAuaWRlbnRpdHkudjEuUm90YXRlQ3VzdG9tZXJBdXRoU2lnbmluZ0tleVJlcXVlc3QaMS5pZGVudGl0eS52MS5Sb3RhdGVDdXN0b21lckF1dGhTaWduaW5nS2V5UmVzcG9uc2USaAoTVmVyaWZ5Q3VzdG9tZXJUb2tlbhInLmlkZW50aXR5LnYxLlZlcmlmeUN1c3RvbWVyVG9rZW5SZXF1ZXN0GiguaWRlbnRpdHkudjEuVmVyaWZ5Q3VzdG9tZXJUb2tlblJlc3BvbnNlEoABChtHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXMSLy5pZGVudGl0eS52MS5HZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXF1ZXN0GjAuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVzcG9uc2USWQoOVmFsaWRhdGVBcGlLZXkSIi5pZGVudGl0eS52MS5WYWxpZGF0ZUFwaUtleVJlcXVlc3QaIy5pZGVudGl0eS52MS5WYWxpZGF0ZUFwaUtleVJlc3BvbnNlElYKDUN1c3RvbWVyTG9naW4SIS5pZGVudGl0eS52MS5DdXN0b21lckxvZ2luUmVxdWVzdBoiLmlkZW50aXR5LnYxLkN1c3RvbWVyTG9naW5SZXNwb25zZRJfChBDdXN0b21lclJlZ2lzdGVyEiQuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWdpc3RlclJlcXVlc3QaJS5pZGVudGl0eS52MS5DdXN0b21lclJlZ2lzdGVyUmVzcG9uc2USawoUQ3VzdG9tZXJSZWZyZXNoVG9rZW4SKC5pZGVudGl0eS52MS5DdXN0b21lclJlZnJlc2hUb2tlblJlcXVlc3QaKS5pZGVudGl0eS52MS5DdXN0b21lclJlZnJlc2hUb2tlblJlc3BvbnNlEmUKEkN1c3RvbWVyUmVxdWVzdE9UUBImLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdE9UUFJlcXVlc3QaJy5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RPVFBSZXNwb25zZRJiChFDdXN0b21lclZlcmlmeU9UUBIlLmlkZW50aXR5LnYxLkN1c3RvbWVyVmVyaWZ5T1RQUmVxdWVzdBomLmlkZW50aXR5LnYxLkN1c3RvbWVyVmVyaWZ5T1RQUmVzcG9uc2USgwEKHEN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXQSMC5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBoxLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRJuChVDdXN0b21lclJlc2V0UGFzc3dvcmQSKS5pZGVudGl0eS52MS5DdXN0b21lclJlc2V0UGFzc3dvcmRSZXF1ZXN0GiouaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVzcG9uc2USZQoSU3RvcmVQcm92aWRlclRva2VuEiYuaWRlbnRpdHkudjEuU3RvcmVQcm92aWRlclRva2VuUmVxdWVzdBonLmlkZW50aXR5LnYxLlN0b3JlUHJvdmlkZXJUb2tlblJlc3BvbnNlEl8KEEdldFByb3ZpZGVyVG9rZW4SJC5pZGVudGl0eS52MS5HZXRQcm92aWRlclRva2VuUmVxdWVzdBolLmlkZW50aXR5LnYxLkdldFByb3ZpZGVyVG9rZW5SZXNwb25zZRJrChREZWxldGVQcm92aWRlclRva2VucxIoLmlkZW50aXR5LnYxLkRlbGV0ZVByb3ZpZGVyVG9rZW5zUmVxdWVzdBopLmlkZW50aXR5LnYxLkRlbGV0ZVByb3ZpZGVyVG9rZW5zUmVzcG9uc2USZQoSU3RhcnRQcm92aWRlckxvZ2luEiYuaWRlbnRpdHkudjEuU3RhcnRQcm92aWRlckxvZ2luUmVxdWVzdBonLmlkZW50aXR5LnYxLlN0YXJ0UHJvdmlkZXJMb2dpblJlc3BvbnNlEmgKE0ZpbmlzaFByb3ZpZGVyTG9naW4SJy5pZGVudGl0eS52MS5GaW5pc2hQcm92aWRlckxvZ2luUmVxdWVzdBooLmlkZW50aXR5LnYxLkZpbmlzaFByb3ZpZGVyTG9naW5SZXNwb25zZRJ9ChpTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pchIuLmlkZW50aXR5LnYxLlN0YXJ0Q3VzdG9tZXJMb2dpbldpdGhGb2lyUmVxdWVzdBovLmlkZW50aXR5LnYxLlN0YXJ0Q3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2UShgEKHUNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyEjEuaWRlbnRpdHkudjEuQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0GjIuaWRlbnRpdHkudjEuQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRJ0ChdTdGFydEFkbWluTG9naW5XaXRoRm9pchIrLmlkZW50aXR5LnYxLlN0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBosLmlkZW50aXR5LnYxLlN0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVzcG9uc2USfQoaQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXISLi5pZGVudGl0eS52MS5Db21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QaLy5pZGVudGl0eS52MS5Db21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEmUKEkxpc3RSZWx5aW5nUGFydGllcxImLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydGllc1JlcXVlc3QaJy5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnRpZXNSZXNwb25zZRJcCg9HZXRSZWx5aW5nUGFydHkSIy5pZGVudGl0eS52MS5HZXRSZWx5aW5nUGFydHlSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0UmVseWluZ1BhcnR5UmVzcG9uc2USZQoSQ3JlYXRlUmVseWluZ1BhcnR5EiYuaWRlbnRpdHkudjEuQ3JlYXRlUmVseWluZ1BhcnR5UmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEmUKElVwZGF0ZVJlbHlpbmdQYXJ0eRImLmlkZW50aXR5LnYxLlVwZGF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVSZWx5aW5nUGFydHlSZXNwb25zZRJoChNEaXNhYmxlUmVseWluZ1BhcnR5EicuaWRlbnRpdHkudjEuRGlzYWJsZVJlbHlpbmdQYXJ0eVJlcXVlc3QaKC5pZGVudGl0eS52MS5EaXNhYmxlUmVseWluZ1BhcnR5UmVzcG9uc2USawoUUmVnaXN0ZXJDdXN0b21Eb21haW4SKC5pZGVudGl0eS52MS5SZWdpc3RlckN1c3RvbURvbWFpblJlcXVlc3QaKS5pZGVudGl0eS52MS5SZWdpc3RlckN1c3RvbURvbWFpblJlc3BvbnNlEmUKElZlcmlmeUN1c3RvbURvbWFpbhImLmlkZW50aXR5LnYxLlZlcmlmeUN1c3RvbURvbWFpblJlcXVlc3QaJy5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21Eb21haW5SZXNwb25zZRJlChJEZWxldGVDdXN0b21Eb21haW4SJi5pZGVudGl0eS52MS5EZWxldGVDdXN0b21Eb21haW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tRG9tYWluUmVzcG9uc2USYgoRTGlzdEN1c3RvbURvbWFpbnMSJS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tRG9tYWluc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tRG9tYWluc1Jlc3BvbnNlEmsKFExpc3RDdXN0b21lclNlc3Npb25zEiguaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXF1ZXN0GikuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXNwb25zZRJuChVSZXZva2VDdXN0b21lclNlc3Npb24SKS5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lclNlc3Npb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVzcG9uc2UScQoWTGlzdFJlbHlpbmdQYXJ0eUdyYW50cxIqLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXF1ZXN0GisuaWRlbnRpdHkudjEuTGlzdFJlbHlpbmdQYXJ0eUdyYW50c1Jlc3BvbnNlEmIKEUdyYW50UmVseWluZ1BhcnR5EiUuaWRlbnRpdHkudjEuR3JhbnRSZWx5aW5nUGFydHlSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR3JhbnRSZWx5aW5nUGFydHlSZXNwb25zZRJ0ChdSZXZva2VSZWx5aW5nUGFydHlHcmFudBIrLmlkZW50aXR5LnYxLlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVxdWVzdBosLmlkZW50aXR5LnYxLlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVzcG9uc2USYgoRTGlzdEN1c3RvbWVyUm9sZXMSJS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJSb2xlc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJSb2xlc1Jlc3BvbnNlElwKD0dldEN1c3RvbWVyUm9sZRIjLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUm9sZVJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRDdXN0b21lclJvbGVSZXNwb25zZRJlChJDcmVhdGVDdXN0b21lclJvbGUSJi5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJvbGVSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSb2xlUmVzcG9uc2USZQoSVXBkYXRlQ3VzdG9tZXJSb2xlEiYuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJSb2xlUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUm9sZVJlc3BvbnNlEmgKE0Rpc2FibGVDdXN0b21lclJvbGUSJy5pZGVudGl0eS52MS5EaXNhYmxlQ3VzdG9tZXJSb2xlUmVxdWVzdBooLmlkZW50aXR5LnYxLkRpc2FibGVDdXN0b21lclJvbGVSZXNwb25zZRJlChJBc3NpZ25DdXN0b21lclJvbGUSJi5pZGVudGl0eS52MS5Bc3NpZ25DdXN0b21lclJvbGVSZXF1ZXN0GicuaWRlbnRpdHkudjEuQXNzaWduQ3VzdG9tZXJSb2xlUmVzcG9uc2USgwEKHFJldm9rZUN1c3RvbWVyUm9sZUFzc2lnbm1lbnQSMC5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lclJvbGVBc3NpZ25tZW50UmVxdWVzdBoxLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVyUm9sZUFzc2lnbm1lbnRSZXNwb25zZRKAAQobTGlzdEN1c3RvbWVyUm9sZUFzc2lnbm1lbnRzEi8uaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyUm9sZUFzc2lnbm1lbnRzUmVxdWVzdBowLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclJvbGVBc3NpZ25tZW50c1Jlc3BvbnNlQj1aO2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9pZGVudGl0eS92MTtpZGVudGl0eXYxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp2, file_publish_v1_publish, file_common_v1_pagination]);
|
|
490
|
+
var file_identity_v1_identity = /* @__PURE__ */ fileDesc3("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLuAQoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIuCgpncmFudGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GDMgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2dyYW50ZWRfYnki9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IvQCCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0IuAHCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGRpc3BsYXlfbmFtZRg8IAEoCUgEiAEBEhUKCGxvZ29fdXJsGD0gASgJSAWIAQESGgoNcHJpbWFyeV9jb2xvchg+IAEoCUgGiAEBEhYKCWZyb21fbmFtZRg/IAEoCUgHiAEBEhUKCHJlcGx5X3RvGEAgASgJSAiIAQESGgoNc3VwcG9ydF9lbWFpbBhBIAEoCUgJiAEBEhkKDGFwcF9iYXNlX3VybBhCIAEoCUgKiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBhGIAEoCEgLiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGFAgASgISAyIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBhRIAEoCEgNiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGFIgASgISA6IAQFCDgoMX2Rlc2NyaXB0aW9uQhgKFl9kZWxldGlvbl9zY2hlZHVsZWRfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQirwMKCkludml0YXRpb24SCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhMKC3Byb2plY3RfaWRzGAQgAygJEiUKBHJvbGUYBSABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlEiwKC2ludml0ZV90eXBlGAYgASgOMhcuaWRlbnRpdHkudjEuSW52aXRlVHlwZRISCgppbnZpdGVkX2J5GAcgASgJEhQKB21lc3NhZ2UYCCABKAlIAIgBARItCgZzdGF0dXMYFCABKA4yHS5pZGVudGl0eS52MS5JbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9tZXNzYWdlQg4KDF9hY2NlcHRlZF9hdCLpAwoSQ3VzdG9tZXJJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhcKCmludml0ZWRfYnkYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESNQoGc3RhdHVzGBQgASgOMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEiEKFGFjY2VwdGVkX2N1c3RvbWVyX2lkGCAgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0QhcKFV9hY2NlcHRlZF9jdXN0b21lcl9pZCLZBAoGQXBpS2V5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgwKBG5hbWUYBCABKAkSEgoKa2V5X3ByZWZpeBgFIAEoCRIpCghrZXlfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFwaUtleVR5cGUSFAoHcmF3X2tleRgKIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgUIAEoCBIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGBUgASgFSAGIAQESMwoKZXhwaXJlc19hdBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIOCgZzY29wZXMYFyADKAkSLgoIbWV0YWRhdGEYGCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESNQoMbGFzdF91c2VkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhMKC3VzYWdlX2NvdW50GB8gASgFEhIKCmNyZWF0ZWRfYnkYKCABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX3Jhd19rZXlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCCwoJX21ldGFkYXRhQg8KDV9sYXN0X3VzZWRfYXQilgIKDlNlc3Npb25Db250ZXh0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAiABKAlIAYgBARIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEhsKDmVmZmVjdGl2ZV9yb2xlGAQgASgJSAKIAQESLgoRYXZhaWxhYmxlX3RlbmFudHMYBSADKAsyEy5pZGVudGl0eS52MS5UZW5hbnQSMAoSYXZhaWxhYmxlX3Byb2plY3RzGAYgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhEKD19lZmZlY3RpdmVfcm9sZSJ9CgxMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiXwoNTG9naW5SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIn8KE0xvZ2luV2l0aE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSCwoDb3RwGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkImYKFExvZ2luV2l0aE9UUFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIicAoRUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiJQoSUmVxdWVzdE9UUFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiDwoNTG9nb3V0UmVxdWVzdCIhCg5Mb2dvdXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIrUBCg9SZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBEioKBHJvbGUYBSABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlSAKIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIHCgVfcm9sZSI4ChBSZWdpc3RlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiIwoSVmVyaWZ5RW1haWxSZXF1ZXN0Eg0KBXRva2VuGAEgASgJIiYKE1ZlcmlmeUVtYWlsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIgCh5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QiMgofUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjEKIFNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjQKIVNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjUKFlZlcmlmeUVtYWlsQ29kZVJlcXVlc3QSDQoFZW1haWwYASABKAkSDAoEY29kZRgCIAEoCSI8ChdWZXJpZnlFbWFpbENvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhAKCHZlcmlmaWVkGAIgASgIIiwKG1JlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIvChxSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiOwoUUmVzZXRQYXNzd29yZFJlcXVlc3QSDQoFdG9rZW4YASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIigKFVJlc2V0UGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkcKFVVwZGF0ZVBhc3N3b3JkUmVxdWVzdBIYChBjdXJyZW50X3Bhc3N3b3JkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIpChZVcGRhdGVQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoTUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIkMKFFJlZnJlc2hUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJIhoKGEdldFNlc3Npb25Db250ZXh0UmVxdWVzdCJJChlHZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIoChNTd2l0Y2hUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJEChRTd2l0Y2hUZW5hbnRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKgoUU3dpdGNoUHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJFChVTd2l0Y2hQcm9qZWN0UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IhwKGkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0Ii4KG0NsZWFyU2Vzc2lvbkNvbnRleHRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIg4KDEdldE1lUmVxdWVzdCI1Cg1HZXRNZVJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi1wEKFkNyZWF0ZUFkbWluVXNlclJlcXVlc3QSDQoFZW1haWwYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgEIAEoCRIXCgpwcm9qZWN0X2lkGAUgASgJSAKIAQESJQoEcm9sZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGVCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfcHJvamVjdF9pZCI/ChdDcmVhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIiEKE0dldEFkbWluVXNlclJlcXVlc3QSCgoCaWQYASABKAkiPAoUR2V0QWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLYAQoWVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgpmaXJzdF9uYW1lGAIgASgJSACIAQESFgoJbGFzdF9uYW1lGAMgASgJSAGIAQESFwoKYXZhdGFyX3VybBgEIAEoCUgCiAEBEjEKBnN0YXR1cxgFIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1c0gDiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmxCCQoHX3N0YXR1cyI/ChdVcGRhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIsYBChVMaXN0QWRtaW5Vc2Vyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpoBChZMaXN0QWRtaW5Vc2Vyc1Jlc3BvbnNlEiUKBWl0ZW1zGAEgAygLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKNAQoSR3JhbnRBY2Nlc3NSZXF1ZXN0EhUKDWFkbWluX3VzZXJfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUINCgtfcHJvamVjdF9pZCJDChNHcmFudEFjY2Vzc1Jlc3BvbnNlEiwKBmFjY2VzcxgBIAEoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcyIoChNSZXZva2VBY2Nlc3NSZXF1ZXN0EhEKCWFjY2Vzc19pZBgBIAEoCSInChRSZXZva2VBY2Nlc3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkoKFUNyZWF0ZUN1c3RvbWVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJBChZDcmVhdGVDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiIAoSR2V0Q3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIj4KE0dldEN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ+ChVVcGRhdGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkSEgoFZW1haWwYAiABKAlIAIgBARIwCgZzdGF0dXMYAyABKA4yGy5pZGVudGl0eS52MS5DdXN0b21lclN0YXR1c0gBiAEBQggKBl9lbWFpbEIJCgdfc3RhdHVzIkEKFlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIjChVEZWxldGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiKQoWRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIsUBChRMaXN0Q3VzdG9tZXJzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QimAEKFUxpc3RDdXN0b21lcnNSZXNwb25zZRIkCgVpdGVtcxgBIAMoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZTdXNwZW5kQ3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkIKF1N1c3BlbmRDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiUwoVTWVyZ2VDdXN0b21lcnNSZXF1ZXN0EhMKC3N1cnZpdm9yX2lkGAEgASgJEhQKDGR1cGxpY2F0ZV9pZBgCIAEoCRIPCgdkcnlfcnVuGAMgASgIImgKFk1lcmdlQ3VzdG9tZXJzUmVzcG9uc2USDwoHcmV0aXJlZBgBIAEoCBIMCgRub29wGAIgASgIEi8KBW1vdmVkGAMgASgLMiAuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNNb3ZlZCLLAQoTTWVyZ2VDdXN0b21lcnNNb3ZlZBIPCgdyZWNvcmRzGAEgASgFEg0KBWZpbGVzGAIgASgFEhsKE3Byb3ZpZGVyX2lkZW50aXRpZXMYAyABKAUSEAoIcHJvZmlsZXMYBCABKAUSDgoGc2hhcmVzGAUgASgFEhsKE3NlZ21lbnRfbWVtYmVyc2hpcHMYBiABKAUSGAoQcm9sZV9hc3NpZ25tZW50cxgHIAEoBRIeChZyZWZyZXNoX3Rva2Vuc19yZXZva2VkGAggASgFIj4KGlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIuChtTZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcAQofQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgppbnZpdGVkX2J5GAIgASgJSACIAQESFAoHbWVzc2FnZRgDIAEoCUgBiAEBEhcKCnNlbmRfZW1haWwYBCABKAhIAogBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAUgASgJSAOIAQFCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIs8BCh5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqwBCh9MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIqChxHZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlQKHUdldEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24iLQofUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIzCiBSZXZva2VDdXN0b21lckludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIo8BCh9SZXNlbmRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhcKCnNlbmRfZW1haWwYAiABKAhIAIgBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAMgASgJSAGIAQFCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIjIKIVZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKHAQoiVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEiwKCXByb3ZpZGVycxgCIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciJUCh9BY2NlcHRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIngKIEFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkiIwoTQ3JlYXRlVGVuYW50UmVxdWVzdBIMCgRuYW1lGAEgASgJIjsKFENyZWF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIeChBHZXRUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJIjgKEUdldFRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCJ4ChNVcGRhdGVUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIuCgZzdGF0dXMYAyABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXNIAYgBAUIHCgVfbmFtZUIJCgdfc3RhdHVzIjsKFFVwZGF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCLDAQoSTGlzdFRlbmFudHNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKUAQoTTGlzdFRlbmFudHNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLlRlbmFudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iIQoTRGVsZXRlVGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVUZW5hbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqEHChRDcmVhdGVQcm9qZWN0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEQoJdGVuYW50X2lkGAMgASgJEiAKE2RlZmF1bHRfbG9jYWxlX2NvZGUYBCABKAlIAYgBARIoChtkZWZhdWx0X2xvY2FsZV9kaXNwbGF5X25hbWUYBSABKAlIAogBARInChpkZWZhdWx0X2xvY2FsZV9uYXRpdmVfbmFtZRgGIAEoCUgDiAEBEiIKFWRlZmF1bHRfbG9jYWxlX2lzX3J0bBgHIAEoCEgEiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgFiAEBEhUKCGxvZ29fdXJsGAsgASgJSAaIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgHiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgIiAEBEhUKCHJlcGx5X3RvGA4gASgJSAmIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgKiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgLiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgMiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISA2IAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgOiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA+IAQFCDgoMX2Rlc2NyaXB0aW9uQhYKFF9kZWZhdWx0X2xvY2FsZV9jb2RlQh4KHF9kZWZhdWx0X2xvY2FsZV9kaXNwbGF5X25hbWVCHQobX2RlZmF1bHRfbG9jYWxlX25hdGl2ZV9uYW1lQhgKFl9kZWZhdWx0X2xvY2FsZV9pc19ydGxCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQiPgoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIjsKEkdldFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCLaBQoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLwoGc3RhdHVzGAQgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gCiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgDiAEBEhUKCGxvZ29fdXJsGAsgASgJSASIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgFiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgGiAEBEhUKCHJlcGx5X3RvGA4gASgJSAeIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgIiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgJiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgKiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISAuIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgMiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA2IAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19zdGF0dXNCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQiPgoVVXBkYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0ItcBChNMaXN0UHJvamVjdHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIrCgV3aGVyZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilgEKFExpc3RQcm9qZWN0c1Jlc3BvbnNlEiMKBWl0ZW1zGAEgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiKAoVRGVsZXRlUHJvamVjdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLQoYR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJCChlHZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ii4KGFNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIkIKGVNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QixwEKF0NyZWF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRITCgtwcm9qZWN0X2lkcxgDIAMoCRIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIsCgtpbnZpdGVfdHlwZRgFIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSFAoHbWVzc2FnZRgGIAEoCUgAiAEBQgoKCF9tZXNzYWdlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiLaAQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpwBChdMaXN0SW52aXRhdGlvbnNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjAKF1Jldm9rZUludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiTAoXQWNjZXB0SW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQiVAoYQWNjZXB0SW52aXRhdGlvblJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISEgoKc2Vzc2lvbl9pZBgCIAEoCSIqChlWYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIkkKGlZhbGlkYXRlSW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIrYCChNDcmVhdGVBcGlLZXlSZXF1ZXN0EgwKBG5hbWUYASABKAkSKQoIa2V5X3R5cGUYAiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEg4KBnNjb3BlcxgDIAMoCRIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAQgASgFSACIAQESMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCg5hbGxvd2VkX21vZGVscxgGIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYByADKAkSFgoJY29uZmlnX2lkGAggASgJSAKIAQFCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCDAoKX2NvbmZpZ19pZCI8ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5Ih4KEEdldEFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiOQoRR2V0QXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSLDAQoSTGlzdEFwaUtleXNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKUAQoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ixAEKE1VwZGF0ZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgDIAEoCEgBiAEBEg4KBnNjb3BlcxgEIAMoCRIVCg11cGRhdGVfc2NvcGVzGAYgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBSABKAVIAogBAUIHCgVfbmFtZUIMCgpfaXNfYWN0aXZlQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyIjwKFFVwZGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUm90YXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRSb3RhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IiEKE1Jldm9rZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiJwoUUmV2b2tlQXBpS2V5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKxBQoMQXV0aFByb3ZpZGVyEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHR5cGUYBCABKAkSJwoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdlbmFibGVkGAYgASgIEhIKCmlzX2RlZmF1bHQYByABKAgSEAoIcHJpb3JpdHkYCCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgAiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChBwdWJsaXNoZWRfY29uZmlnGDwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh4KEXB1Ymxpc2hlZF9lbmFibGVkGD0gASgISAOIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBAUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUITChFfcHVibGlzaGVkX2NvbmZpZ0IUChJfcHVibGlzaGVkX2VuYWJsZWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IskBChhMaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqQBChlMaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlEiwKCXByb3ZpZGVycxgBIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJAoWR2V0QXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJGChdHZXRBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciKBAgoZQ3JlYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEicKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoHZW5hYmxlZBgFIAEoCEgAiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIAYgBARIVCghwcmlvcml0eRgHIAEoBUgCiAEBEhYKCWNvbmZpZ19pZBgIIAEoCUgDiAEBQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eUIMCgpfY29uZmlnX2lkIkkKGkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIuoBChlVcGRhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIsCgZjb25maWcYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESFAoHZW5hYmxlZBgEIAEoCEgCiAEBEhcKCmlzX2RlZmF1bHQYBSABKAhIA4gBARIVCghwcmlvcml0eRgGIAEoBUgEiAEBQgcKBV9uYW1lQgkKB19jb25maWdCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5IkkKGlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIicKGURlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiLQoaRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIoChpQdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSKAAQobUHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIioKHFVucHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiTAodVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiMQojR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiUQokR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyLaAgoTQXV0aFByb3ZpZGVyVmVyc2lvbhIKCgJpZBgBIAEoCRIYChBhdXRoX3Byb3ZpZGVyX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiKwodR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiUwoeR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEjEKB3ZlcnNpb24YASABKAsyIC5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXJWZXJzaW9uIrMBCh9MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0EhgKEGF1dGhfcHJvdmlkZXJfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QisQEKIExpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1Jlc3BvbnNlEjIKCHZlcnNpb25zGAEgAygLMiAuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ibwohUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKIAQoiUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchI1CgtuZXdfdmVyc2lvbhgCIAEoCzIgLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlclZlcnNpb24iqAEKIlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiUgojU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiNwopQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiWQoqQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIh4KHEVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QiMgodRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USEQoJcHJvdmlkZXJzGAEgAygJIioKF01pbnRTZXJ2aWNlVG9rZW5SZXF1ZXN0Eg8KB3B1cnBvc2UYASABKAkiTgoYTWludFNlcnZpY2VUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEg8KB3B1cnBvc2UYAiABKAkSEgoKZXhwaXJlc19hdBgDIAEoCSKOAQoWVXBkYXRlTXlQcm9maWxlUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFwoKYXZhdGFyX3VybBgDIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmwiPwoXVXBkYXRlTXlQcm9maWxlUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLOAQodTGlzdE15T0F1dGhDb25uZWN0aW9uc1JlcXVlc3QSEgoFZmlyc3QYASABKAVIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhEKBGxhc3QYAyABKAVIAogBARITCgZiZWZvcmUYBCABKAlIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmVCCAoGX3doZXJlIo0BCg9PQXV0aENvbm5lY3Rpb24SEAoIcHJvdmlkZXIYASABKAkSGAoQcHJvdmlkZXJfdXNlcl9pZBgCIAEoCRISCgVlbWFpbBgDIAEoCUgAiAEBEjAKDGNvbm5lY3RlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX2VtYWlsIq4BCh5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USMQoLY29ubmVjdGlvbnMYASADKAsyHC5pZGVudGl0eS52MS5PQXV0aENvbm5lY3Rpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIi4KGlVubGlua09BdXRoUHJvdmlkZXJSZXF1ZXN0EhAKCHByb3ZpZGVyGAEgASgJIi4KG1VubGlua09BdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi4KHUNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjMKHkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXNwb25zZRIRCglhdmFpbGFibGUYASABKAgijwEKG0NvbXBsZXRlQWNjb3VudFNldHVwUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFQoIcGFzc3dvcmQYAyABKAlIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQgsKCV9wYXNzd29yZCJbChxDb21wbGV0ZUFjY291bnRTZXR1cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSGQoMcmVkaXJlY3RfdXJsGAIgASgJSACIAQFCDwoNX3JlZGlyZWN0X3VybCItChpDcmVhdGVTaWdudXBTZXNzaW9uUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJIi4KG0NyZWF0ZVNpZ251cFNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKF1Jlc2VuZEludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIgoUR2V0SW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiRAoVR2V0SW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIioKFUFjdGl2YXRlVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiPQoWQWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiMAobU3VzcGVuZFRlbmFudEFjY291bnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJDChxTdXNwZW5kVGVuYW50QWNjb3VudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIoChNDYW5jZWxUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI7ChRDYW5jZWxUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiLAoXUmVhY3RpdmF0ZVRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIj8KGFJlYWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiLQoYTWFya1RlbmFudFBhc3REdWVSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJAChlNYXJrVGVuYW50UGFzdER1ZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCInChJDaHVyblRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIjoKE0NodXJuVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IiQKIkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1JlcXVlc3Qi2wEKGEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cxIhChluYXRpdmVfbWFuYWdlbWVudF9lbmFibGVkGAEgASgIEiIKFWV4dGVybmFsX3Byb3ZpZGVyX3VybBgCIAEoCUgAiAEBEiMKFmV4dGVybmFsX3Byb3ZpZGVyX25hbWUYAyABKAlIAYgBARITCgZyZWFzb24YBCABKAlIAogBAUIYChZfZXh0ZXJuYWxfcHJvdmlkZXJfdXJsQhkKF19leHRlcm5hbF9wcm92aWRlcl9uYW1lQgkKB19yZWFzb24iXAojR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVzcG9uc2USNQoGc3RhdHVzGAEgASgLMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzIigKFVZhbGlkYXRlQXBpS2V5UmVxdWVzdBIPCgdhcGlfa2V5GAEgASgJIswBChZWYWxpZGF0ZUFwaUtleVJlc3BvbnNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSEAoIa2V5X3R5cGUYBSABKAkSDgoGc2NvcGVzGAYgAygJEhYKDmFsbG93ZWRfbW9kZWxzGAcgAygJEhoKEmFsbG93ZWRfZmlsZV90eXBlcxgIIAMoCRIbChNyYXRlX2xpbWl0X3Blcl9ob3VyGAkgASgFIjcKFEN1c3RvbWVyTG9naW5SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJIm0KFUN1c3RvbWVyTG9naW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIn8KF0N1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEjIKDHByb2ZpbGVfZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIPCg1fcHJvZmlsZV9kYXRhInAKGEN1c3RvbWVyUmVnaXN0ZXJSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIjQKG0N1c3RvbWVyUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIksKHEN1c3RvbWVyUmVmcmVzaFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkiKgoZQ3VzdG9tZXJSZXF1ZXN0T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCSIqChpDdXN0b21lclJlcXVlc3RPVFBSZXNwb25zZRIMCgRzZW50GAEgASgIIjsKGEN1c3RvbWVyVmVyaWZ5T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghvdHBfY29kZRgCIAEoCSJxChlDdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiNAojQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QSDQoFZW1haWwYASABKAkiNAokQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEgwKBHNlbnQYASABKAgiQwocQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiMAodQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLZAQoZU3RvcmVQcm92aWRlclRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIUCgxwcm92aWRlcl9rZXkYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkSEAoIaWRfdG9rZW4YBSABKAkSDgoGc2NvcGVzGAYgASgJEjMKCmV4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX2V4cGlyZXNfYXQiHAoaU3RvcmVQcm92aWRlclRva2VuUmVzcG9uc2UigwEKGVN0YXJ0UHJvdmlkZXJMb2dpblJlcXVlc3QSFAoMcHJvdmlkZXJfa2V5GAEgASgJEhYKCXJldHVybl90bxgCIAEoCUgAiAEBEhkKDHJlZGlyZWN0X3VyaRgDIAEoCUgBiAEBQgwKCl9yZXR1cm5fdG9CDwoNX3JlZGlyZWN0X3VyaSIyChpTdGFydFByb3ZpZGVyTG9naW5SZXNwb25zZRIUCgxyZWRpcmVjdF91cmwYASABKAkiTwoaRmluaXNoUHJvdmlkZXJMb2dpblJlcXVlc3QSFAoMcHJvdmlkZXJfa2V5GAEgASgJEgwKBGNvZGUYAiABKAkSDQoFc3RhdGUYAyABKAkibgobRmluaXNoUHJvdmlkZXJMb2dpblJlc3BvbnNlEhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEhQKDGFjY2Vzc190b2tlbhgDIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAQgASgJIoIBCiFTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhQKDHJlZGlyZWN0X3VyaRgCIAEoCRIOCgZzY29wZXMYAyADKAkSFgoJcmV0dXJuX3RvGAQgASgJSACIAQFCDAoKX3JldHVybl90byI6CiJTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEhQKDHJlZGlyZWN0X3VybBgBIAEoCSJDCiRDb21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QSDAoEY29kZRgBIAEoCRINCgVzdGF0ZRgCIAEoCSKeAQolQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRITCgtjdXN0b21lcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCRIWCglyZXR1cm5fdG8YBSABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIn8KHlN0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSFAoMcmVkaXJlY3RfdXJpGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIWCglyZXR1cm5fdG8YBCABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIjcKH1N0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJIkAKIUNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBIMCgRjb2RlGAEgASgJEg0KBXN0YXRlGAIgASgJIr0BCiJDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEhUKDWFkbWluX3VzZXJfaWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkSDgoGc2NvcGVzGAQgAygJEh0KFWlzX2ZpcnN0X3BhcnR5X2NsaWVudBgFIAEoCBIWCglyZXR1cm5fdG8YBiABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIkQKF0dldFByb3ZpZGVyVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhQKDHByb3ZpZGVyX2tleRgCIAEoCSKtAQoYR2V0UHJvdmlkZXJUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEhAKCGlkX3Rva2VuGAMgASgJEg4KBnNjb3BlcxgEIAEoCRIzCgpleHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19leHBpcmVzX2F0IjIKG0RlbGV0ZVByb3ZpZGVyVG9rZW5zUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSIeChxEZWxldGVQcm92aWRlclRva2Vuc1Jlc3BvbnNlInQKGFJlbHlpbmdQYXJ0eUxvZ2luTWV0aG9kcxIVCghwYXNzd29yZBgBIAEoCEgAiAEBEhAKA290cBgCIAEoCEgBiAEBEhoKEmRpc2FibGVkX3Byb3ZpZGVycxgDIAMoCUILCglfcGFzc3dvcmRCBgoEX290cCLRBAoMUmVseWluZ1BhcnR5EgoKAmlkGAEgASgJEhYKDnByaW5jaXBhbF9raW5kGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBARIRCgljbGllbnRfaWQYBSABKAkSDAoEbmFtZRgGIAEoCRIVCg1yZWRpcmVjdF91cmlzGAcgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAggAygJEhYKDmlzX2ZpcnN0X3BhcnR5GAkgASgIEhQKDHJlcXVpcmVzX21mYRgKIAEoCBJBCg1sb2dpbl9tZXRob2RzGAsgASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESFwoKY3JlYXRlZF9ieRgMIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2Rpc2FibGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhsKDnBvc3RfbG9naW5fdXJsGBAgASgJSAWIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIQCg5fbG9naW5fbWV0aG9kc0INCgtfY3JlYXRlZF9ieUIOCgxfZGlzYWJsZWRfYXRCEQoPX3Bvc3RfbG9naW5fdXJsIoEBChlMaXN0UmVseWluZ1BhcnRpZXNSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAyABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkIlUKGkxpc3RSZWx5aW5nUGFydGllc1Jlc3BvbnNlEigKBWl0ZW1zGAEgAygLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5Eg0KBXRvdGFsGAIgASgFIkMKFkdldFJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSEQoJY2xpZW50X2lkGAIgASgJIksKF0dldFJlbHlpbmdQYXJ0eVJlc3BvbnNlEjAKDXJlbHlpbmdfcGFydHkYASABKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkihAMKGUNyZWF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBEhEKCWNsaWVudF9pZBgEIAEoCRIMCgRuYW1lGAUgASgJEhUKDXJlZGlyZWN0X3VyaXMYBiADKAkSFgoOYWxsb3dlZF9zY29wZXMYByADKAkSFgoOaXNfZmlyc3RfcGFydHkYCCABKAgSFAoMcmVxdWlyZXNfbWZhGAkgASgIEkEKDWxvZ2luX21ldGhvZHMYCiABKAsyJS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlMb2dpbk1ldGhvZHNIAogBARIbCg5wb3N0X2xvZ2luX3VybBgLIAEoCUgDiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEAoOX2xvZ2luX21ldGhvZHNCEQoPX3Bvc3RfbG9naW5fdXJsIk4KGkNyZWF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEjAKDXJlbHlpbmdfcGFydHkYASABKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkiwgIKGVVwZGF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEhEKBG5hbWUYAyABKAlIAIgBARIVCg1yZWRpcmVjdF91cmlzGAQgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAUgAygJEhkKDHJlcXVpcmVzX21mYRgGIAEoCEgBiAEBEkEKDWxvZ2luX21ldGhvZHMYByABKAsyJS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlMb2dpbk1ldGhvZHNIAogBARIbCg5wb3N0X2xvZ2luX3VybBgIIAEoCUgDiAEBQgcKBV9uYW1lQg8KDV9yZXF1aXJlc19tZmFCEAoOX2xvZ2luX21ldGhvZHNCEQoPX3Bvc3RfbG9naW5fdXJsIk4KGlVwZGF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEjAKDXJlbHlpbmdfcGFydHkYASABKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkiRwoaRGlzYWJsZVJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSEQoJY2xpZW50X2lkGAIgASgJIh0KG0Rpc2FibGVSZWx5aW5nUGFydHlSZXNwb25zZSLsAgoMQ3VzdG9tRG9tYWluEgoKAmlkGAEgASgJEhgKEHJlbHlpbmdfcGFydHlfaWQYAiABKAkSDAoEa2luZBgDIAEoCRIRCgl0ZW5hbnRfaWQYBCABKAkSEgoKcHJvamVjdF9pZBgFIAEoCRIQCghob3N0bmFtZRgGIAEoCRIOCgZzdGF0dXMYByABKAkSEQoJdHh0X3Rva2VuGAggASgJEjQKC3ZlcmlmaWVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEhcKCmNyZWF0ZWRfYnkYCiABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfdmVyaWZpZWRfYXRCDQoLX2NyZWF0ZWRfYnkiVwobUmVnaXN0ZXJDdXN0b21Eb21haW5SZXF1ZXN0EhgKEHJlbHlpbmdfcGFydHlfaWQYASABKAkSEAoIaG9zdG5hbWUYAiABKAkSDAoEa2luZBgDIAEoCSJQChxSZWdpc3RlckN1c3RvbURvbWFpblJlc3BvbnNlEjAKDWN1c3RvbV9kb21haW4YASABKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4iJwoZVmVyaWZ5Q3VzdG9tRG9tYWluUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpWZXJpZnlDdXN0b21Eb21haW5SZXNwb25zZRIwCg1jdXN0b21fZG9tYWluGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tRG9tYWluEhAKCHZlcmlmaWVkGAIgASgIIicKGURlbGV0ZUN1c3RvbURvbWFpblJlcXVlc3QSCgoCaWQYASABKAkiHAoaRGVsZXRlQ3VzdG9tRG9tYWluUmVzcG9uc2UiNAoYTGlzdEN1c3RvbURvbWFpbnNSZXF1ZXN0EhgKEHJlbHlpbmdfcGFydHlfaWQYASABKAkiRQoZTGlzdEN1c3RvbURvbWFpbnNSZXNwb25zZRIoCgVpdGVtcxgBIAMoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbiLiAgoPQ3VzdG9tZXJTZXNzaW9uEgoKAmlkGAEgASgJEhMKC2N1c3RvbWVyX2lkGAIgASgJEhgKEHJlbHlpbmdfcGFydHlfaWQYAyABKAkSEQoJdGVuYW50X2lkGAQgASgJEhIKCnByb2plY3RfaWQYBSABKAkSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMbGFzdF9zZWVuX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgppcF9hZGRyZXNzGAkgASgJSACIAQESFwoKdXNlcl9hZ2VudBgKIAEoCUgBiAEBEgsKA2FtchgLIAMoCUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudCI3ChtMaXN0Q3VzdG9tZXJTZXNzaW9uc1JlcXVlc3QSGAoQcmVseWluZ19wYXJ0eV9pZBgBIAEoCSJLChxMaXN0Q3VzdG9tZXJTZXNzaW9uc1Jlc3BvbnNlEisKBWl0ZW1zGAEgAygLMhwuaWRlbnRpdHkudjEuQ3VzdG9tZXJTZXNzaW9uIioKHFJldm9rZUN1c3RvbWVyU2Vzc2lvblJlcXVlc3QSCgoCaWQYASABKAkiHwodUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVzcG9uc2UinQIKEVJlbHlpbmdQYXJ0eUdyYW50EgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJY2xpZW50X2lkGAMgASgJEg4KBnNjb3BlcxgEIAMoCRIXCgpncmFudGVkX2J5GAUgASgJSACIAQESLgoKZ3JhbnRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKcmV2b2tlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpyZXZva2VkX2J5GAggASgJSAKIAQFCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkiTQodTGlzdFJlbHlpbmdQYXJ0eUdyYW50c1JlcXVlc3QSGgoNYWRtaW5fdXNlcl9pZBgBIAEoCUgAiAEBQhAKDl9hZG1pbl91c2VyX2lkIl4KHkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXNwb25zZRItCgVpdGVtcxgBIAMoCzIeLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUdyYW50Eg0KBXRvdGFsGAIgASgFIlQKGEdyYW50UmVseWluZ1BhcnR5UmVxdWVzdBIVCg1hZG1pbl91c2VyX2lkGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIOCgZzY29wZXMYAyADKAkiSgoZR3JhbnRSZWx5aW5nUGFydHlSZXNwb25zZRItCgVncmFudBgBIAEoCzIeLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUdyYW50IiwKHlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVxdWVzdBIKCgJpZBgBIAEoCSIhCh9SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlc3BvbnNlItsCCgRSb2xlEgoKAmlkGAEgASgJEjYKDnByaW5jaXBhbF9raW5kGAIgASgOMh4uaWRlbnRpdHkudjEuUm9sZVByaW5jaXBhbEtpbmQSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSCwoDa2V5GAUgASgJEgwKBG5hbWUYBiABKAkSEwoLcGVybWlzc2lvbnMYByADKAkSEgoKaXNfZGVmYXVsdBgIIAEoCBIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgtkaXNhYmxlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIOCgxfZGlzYWJsZWRfYXQi+QEKEExpc3RSb2xlc1JlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIrCgV3aGVyZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVmaXJzdBgDIAEoBUgBiAEBEhIKBWFmdGVyGAQgASgJSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBEhMKBmJlZm9yZRgGIAEoCUgEiAEBQggKBl93aGVyZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUikAEKEUxpc3RSb2xlc1Jlc3BvbnNlEiAKBWl0ZW1zGAEgAygLMhEuaWRlbnRpdHkudjEuUm9sZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHAoOR2V0Um9sZVJlcXVlc3QSCgoCaWQYASABKAkiMgoPR2V0Um9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIrYBChFDcmVhdGVSb2xlUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgsKA2tleRgEIAEoCRIMCgRuYW1lGAUgASgJEhMKC3Blcm1pc3Npb25zGAYgAygJEhIKCmlzX2RlZmF1bHQYByABKAgiNQoSQ3JlYXRlUm9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIngKEVVwZGF0ZVJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARITCgtwZXJtaXNzaW9ucxgDIAMoCRIXCgppc19kZWZhdWx0GAQgASgISAGIAQFCBwoFX25hbWVCDQoLX2lzX2RlZmF1bHQiNQoSVXBkYXRlUm9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIiAKEkRpc2FibGVSb2xlUmVxdWVzdBIKCgJpZBgBIAEoCSIVChNEaXNhYmxlUm9sZVJlc3BvbnNlIr8CCg5Sb2xlQXNzaWdubWVudBIKCgJpZBgBIAEoCRI2Cg5wcmluY2lwYWxfa2luZBgCIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhQKDHByaW5jaXBhbF9pZBgDIAEoCRIPCgdyb2xlX2lkGAQgASgJEi4KCmdyYW50ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmdyYW50ZWRfYnkYBiABKAlIAIgBARIzCgpyZXZva2VkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhcKCnJldm9rZWRfYnkYCCABKAlIAogBAUINCgtfZ3JhbnRlZF9ieUINCgtfcmV2b2tlZF9hdEINCgtfcmV2b2tlZF9ieSJyChFBc3NpZ25Sb2xlUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhQKDHByaW5jaXBhbF9pZBgCIAEoCRIPCgdyb2xlX2lkGAMgASgJIkUKEkFzc2lnblJvbGVSZXNwb25zZRIvCgphc3NpZ25tZW50GAEgASgLMhsuaWRlbnRpdHkudjEuUm9sZUFzc2lnbm1lbnQiKQobUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIh4KHFJldm9rZVJvbGVBc3NpZ25tZW50UmVzcG9uc2UigwIKGkxpc3RSb2xlQXNzaWdubWVudHNSZXF1ZXN0EjYKDnByaW5jaXBhbF9raW5kGAEgASgOMh4uaWRlbnRpdHkudjEuUm9sZVByaW5jaXBhbEtpbmQSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFZmlyc3QYAyABKAVIAYgBARISCgVhZnRlchgEIAEoCUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBARITCgZiZWZvcmUYBiABKAlIBIgBAUIICgZfd2hlcmVCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIqQBChtMaXN0Um9sZUFzc2lnbm1lbnRzUmVzcG9uc2USKgoFaXRlbXMYASADKAsyGy5pZGVudGl0eS52MS5Sb2xlQXNzaWdubWVudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8qsQEKD0FkbWluVXNlclN0YXR1cxIhCh1BRE1JTl9VU0VSX1NUQVRVU19VTlNQRUNJRklFRBAAEhwKGEFETUlOX1VTRVJfU1RBVFVTX0FDVElWRRABEh0KGUFETUlOX1VTRVJfU1RBVFVTX1BFTkRJTkcQAhIfChtBRE1JTl9VU0VSX1NUQVRVU19TVVNQRU5ERUQQAxIdChlBRE1JTl9VU0VSX1NUQVRVU19ERUxFVEVEEAQqiQEKDkN1c3RvbWVyU3RhdHVzEh8KG0NVU1RPTUVSX1NUQVRVU19VTlNQRUNJRklFRBAAEhoKFkNVU1RPTUVSX1NUQVRVU19BQ1RJVkUQARIbChdDVVNUT01FUl9TVEFUVVNfUEVORElORxACEh0KGUNVU1RPTUVSX1NUQVRVU19TVVNQRU5ERUQQAyrZAQoMVGVuYW50U3RhdHVzEh0KGVRFTkFOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtURU5BTlRfU1RBVFVTX1BFTkRJTkdfU0VUVVAQARIYChRURU5BTlRfU1RBVFVTX0FDVElWRRACEhoKFlRFTkFOVF9TVEFUVVNfUEFTVF9EVUUQAxIbChdURU5BTlRfU1RBVFVTX1NVU1BFTkRFRBAEEhsKF1RFTkFOVF9TVEFUVVNfQ0FOQ0VMTEVEEAUSGQoVVEVOQU5UX1NUQVRVU19DSFVSTkVEEAYqZgoNUHJvamVjdFN0YXR1cxIeChpQUk9KRUNUX1NUQVRVU19VTlNQRUNJRklFRBAAEhkKFVBST0pFQ1RfU1RBVFVTX0FDVElWRRABEhoKFlBST0pFQ1RfU1RBVFVTX0RFTEVURUQQAiqmAQoKQWNjZXNzUm9sZRIbChdBQ0NFU1NfUk9MRV9VTlNQRUNJRklFRBAAEhwKGEFDQ0VTU19ST0xFX1RFTkFOVF9PV05FUhABEh0KGUFDQ0VTU19ST0xFX1BST0pFQ1RfQURNSU4QAhIeChpBQ0NFU1NfUk9MRV9QUk9KRUNUX0VESVRPUhADEh4KGkFDQ0VTU19ST0xFX1BST0pFQ1RfVklFV0VSEAQqZAoKSW52aXRlVHlwZRIbChdJTlZJVEVfVFlQRV9VTlNQRUNJRklFRBAAEhwKGElOVklURV9UWVBFX1RFTkFOVF9PV05FUhABEhsKF0lOVklURV9UWVBFX1RFQU1fTUVNQkVSEAIqsgEKEEludml0YXRpb25TdGF0dXMSIQodSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIdChlJTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESHgoaSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhIdChlJTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSHQoZSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKucBChhDdXN0b21lckludml0YXRpb25TdGF0dXMSKgomQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESJwojQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSJgoiQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKlwKCkFwaUtleVR5cGUSHAoYQVBJX0tFWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQVBJX0tFWV9UWVBFX1BVQkxJQxABEhcKE0FQSV9LRVlfVFlQRV9TRUNSRVQQAip5ChFSb2xlUHJpbmNpcGFsS2luZBIjCh9ST0xFX1BSSU5DSVBBTF9LSU5EX1VOU1BFQ0lGSUVEEAASIAocUk9MRV9QUklOQ0lQQUxfS0lORF9DVVNUT01FUhABEh0KGVJPTEVfUFJJTkNJUEFMX0tJTkRfQURNSU4QAjLOZQoPSWRlbnRpdHlTZXJ2aWNlEj4KBUxvZ2luEhkuaWRlbnRpdHkudjEuTG9naW5SZXF1ZXN0GhouaWRlbnRpdHkudjEuTG9naW5SZXNwb25zZRJTCgxMb2dpbldpdGhPVFASIC5pZGVudGl0eS52MS5Mb2dpbldpdGhPVFBSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVzcG9uc2USTQoKUmVxdWVzdE9UUBIeLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuUmVxdWVzdE9UUFJlc3BvbnNlEkEKBkxvZ291dBIaLmlkZW50aXR5LnYxLkxvZ291dFJlcXVlc3QaGy5pZGVudGl0eS52MS5Mb2dvdXRSZXNwb25zZRJHCghSZWdpc3RlchIcLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVxdWVzdBodLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVzcG9uc2USUAoLVmVyaWZ5RW1haWwSHy5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlcXVlc3QaIC5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlc3BvbnNlEnQKF1Jlc2VuZFZlcmlmaWNhdGlvbkVtYWlsEisuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0GiwuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRJ6ChlTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlEi0uaWRlbnRpdHkudjEuU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QaLi5pZGVudGl0eS52MS5TZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVzcG9uc2USXAoPVmVyaWZ5RW1haWxDb2RlEiMuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxDb2RlUmVxdWVzdBokLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsQ29kZVJlc3BvbnNlEmsKFFJlcXVlc3RQYXNzd29yZFJlc2V0EiguaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0GikuaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRJWCg1SZXNldFBhc3N3b3JkEiEuaWRlbnRpdHkudjEuUmVzZXRQYXNzd29yZFJlcXVlc3QaIi5pZGVudGl0eS52MS5SZXNldFBhc3N3b3JkUmVzcG9uc2USWQoOVXBkYXRlUGFzc3dvcmQSIi5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlc3BvbnNlElMKDFJlZnJlc2hUb2tlbhIgLmlkZW50aXR5LnYxLlJlZnJlc2hUb2tlblJlcXVlc3QaIS5pZGVudGl0eS52MS5SZWZyZXNoVG9rZW5SZXNwb25zZRJiChFHZXRTZXNzaW9uQ29udGV4dBIlLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVzcG9uc2USUwoMU3dpdGNoVGVuYW50EiAuaWRlbnRpdHkudjEuU3dpdGNoVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlc3BvbnNlElYKDVN3aXRjaFByb2plY3QSIS5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlN3aXRjaFByb2plY3RSZXNwb25zZRJoChNDbGVhclNlc3Npb25Db250ZXh0EicuaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlcXVlc3QaKC5pZGVudGl0eS52MS5DbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USPgoFR2V0TWUSGS5pZGVudGl0eS52MS5HZXRNZVJlcXVlc3QaGi5pZGVudGl0eS52MS5HZXRNZVJlc3BvbnNlElwKD0NyZWF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLkNyZWF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXNwb25zZRJTCgxHZXRBZG1pblVzZXISIC5pZGVudGl0eS52MS5HZXRBZG1pblVzZXJSZXF1ZXN0GiEuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVzcG9uc2USXAoPVXBkYXRlQWRtaW5Vc2VyEiMuaWRlbnRpdHkudjEuVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlc3BvbnNlElkKDkxpc3RBZG1pblVzZXJzEiIuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXNwb25zZRJQCgtHcmFudEFjY2VzcxIfLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVxdWVzdBogLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVzcG9uc2USUwoMUmV2b2tlQWNjZXNzEiAuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFjY2Vzc1Jlc3BvbnNlElkKDkNyZWF0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXNwb25zZRJQCgtHZXRDdXN0b21lchIfLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVxdWVzdBogLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVzcG9uc2USWQoOVXBkYXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlc3BvbnNlElkKDkRlbGV0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRJWCg1MaXN0Q3VzdG9tZXJzEiEuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyc1JlcXVlc3QaIi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJzUmVzcG9uc2USXAoPU3VzcGVuZEN1c3RvbWVyEiMuaWRlbnRpdHkudjEuU3VzcGVuZEN1c3RvbWVyUmVxdWVzdBokLmlkZW50aXR5LnYxLlN1c3BlbmRDdXN0b21lclJlc3BvbnNlElkKDk1lcmdlQ3VzdG9tZXJzEiIuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNSZXNwb25zZRJoChNTZXRDdXN0b21lclBhc3N3b3JkEicuaWRlbnRpdHkudjEuU2V0Q3VzdG9tZXJQYXNzd29yZFJlcXVlc3QaKC5pZGVudGl0eS52MS5TZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USdwoYQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEnQKF0xpc3RDdXN0b21lckludml0YXRpb25zEisuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXF1ZXN0GiwuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXNwb25zZRJuChVHZXRDdXN0b21lckludml0YXRpb24SKS5pZGVudGl0eS52MS5HZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGFJlc2VuZEN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLlJlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5SZXNlbmRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ9ChpWYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvbhIuLmlkZW50aXR5LnYxLlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBovLmlkZW50aXR5LnYxLlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLkFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlElMKDENyZWF0ZVRlbmFudBIgLmlkZW50aXR5LnYxLkNyZWF0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5DcmVhdGVUZW5hbnRSZXNwb25zZRJKCglHZXRUZW5hbnQSHS5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0VGVuYW50UmVzcG9uc2USUwoMVXBkYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZVRlbmFudFJlc3BvbnNlElAKC0xpc3RUZW5hbnRzEh8uaWRlbnRpdHkudjEuTGlzdFRlbmFudHNSZXF1ZXN0GiAuaWRlbnRpdHkudjEuTGlzdFRlbmFudHNSZXNwb25zZRJTCgxEZWxldGVUZW5hbnQSIC5pZGVudGl0eS52MS5EZWxldGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuRGVsZXRlVGVuYW50UmVzcG9uc2USVgoNQ3JlYXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdFJlc3BvbnNlEk0KCkdldFByb2plY3QSHi5pZGVudGl0eS52MS5HZXRQcm9qZWN0UmVxdWVzdBofLmlkZW50aXR5LnYxLkdldFByb2plY3RSZXNwb25zZRJWCg1VcGRhdGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USUwoMTGlzdFByb2plY3RzEiAuaWRlbnRpdHkudjEuTGlzdFByb2plY3RzUmVxdWVzdBohLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0c1Jlc3BvbnNlElYKDURlbGV0ZVByb2plY3QSIS5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRJiChFHZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USYgoRU2V0RGVmYXVsdFByb2plY3QSJS5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlcXVlc3QaJi5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEl8KEENyZWF0ZUludml0YXRpb24SJC5pZGVudGl0eS52MS5DcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXNwb25zZRJcCg9MaXN0SW52aXRhdGlvbnMSIy5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXF1ZXN0GiQuaWRlbnRpdHkudjEuTGlzdEludml0YXRpb25zUmVzcG9uc2USXwoQUmV2b2tlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEl8KEEFjY2VwdEludml0YXRpb24SJC5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkFjY2VwdEludml0YXRpb25SZXNwb25zZRJlChJWYWxpZGF0ZUludml0YXRpb24SJi5pZGVudGl0eS52MS5WYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USUwoMQ3JlYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuQ3JlYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlc3BvbnNlEkoKCUdldEFwaUtleRIdLmlkZW50aXR5LnYxLkdldEFwaUtleVJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXNwb25zZRJQCgtMaXN0QXBpS2V5cxIfLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVzcG9uc2USUwoMVXBkYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuVXBkYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlc3BvbnNlElMKDFJvdGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlJvdGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXNwb25zZRJTCgxSZXZva2VBcGlLZXkSIC5pZGVudGl0eS52MS5SZXZva2VBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVzcG9uc2USYgoRTGlzdEF1dGhQcm92aWRlcnMSJS5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlElwKD0dldEF1dGhQcm92aWRlchIjLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJDcmVhdGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5DcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSVXBkYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuVXBkYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKEkRlbGV0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLkRlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRJoChNQdWJsaXNoQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuUHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5QdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USbgoVVW5wdWJsaXNoQXV0aFByb3ZpZGVyEikuaWRlbnRpdHkudjEuVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBoqLmlkZW50aXR5LnYxLlVucHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEoMBChxHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzEjAuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QaMS5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USgAEKG1NjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaBIvLmlkZW50aXR5LnYxLlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QaMC5pZGVudGl0eS52MS5TY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRKVAQoiQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaBI2LmlkZW50aXR5LnYxLkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2hSZXF1ZXN0GjcuaWRlbnRpdHkudjEuQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEnEKFkdldEF1dGhQcm92aWRlclZlcnNpb24SKi5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBorLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRJ3ChhMaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnMSLC5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USfQoaUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb24SLi5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QaLy5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEm4KFUVuYWJsZWRPQXV0aFByb3ZpZGVycxIpLmlkZW50aXR5LnYxLkVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QaKi5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRJfChBNaW50U2VydmljZVRva2VuEiQuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuUmVzcG9uc2USXAoPVXBkYXRlTXlQcm9maWxlEiMuaWRlbnRpdHkudjEuVXBkYXRlTXlQcm9maWxlUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlc3BvbnNlEnEKFkxpc3RNeU9BdXRoQ29ubmVjdGlvbnMSKi5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRJoChNVbmxpbmtPQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5VbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2UScQoWQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eRIqLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0GisuaWRlbnRpdHkudjEuQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlc3BvbnNlEmsKFENvbXBsZXRlQWNjb3VudFNldHVwEiguaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXF1ZXN0GikuaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRJoChNDcmVhdGVTaWdudXBTZXNzaW9uEicuaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QaKC5pZGVudGl0eS52MS5DcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USXwoQUmVzZW5kSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlElYKDUdldEludml0YXRpb24SIS5pZGVudGl0eS52MS5HZXRJbnZpdGF0aW9uUmVxdWVzdBoiLmlkZW50aXR5LnYxLkdldEludml0YXRpb25SZXNwb25zZRJZCg5BY3RpdmF0ZVRlbmFudBIiLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVxdWVzdBojLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVzcG9uc2USawoUU3VzcGVuZFRlbmFudEFjY291bnQSKC5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlcXVlc3QaKS5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlc3BvbnNlElMKDENhbmNlbFRlbmFudBIgLmlkZW50aXR5LnYxLkNhbmNlbFRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5DYW5jZWxUZW5hbnRSZXNwb25zZRJfChBSZWFjdGl2YXRlVGVuYW50EiQuaWRlbnRpdHkudjEuUmVhY3RpdmF0ZVRlbmFudFJlcXVlc3QaJS5pZGVudGl0eS52MS5SZWFjdGl2YXRlVGVuYW50UmVzcG9uc2USYgoRTWFya1RlbmFudFBhc3REdWUSJS5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlcXVlc3QaJi5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlc3BvbnNlElAKC0NodXJuVGVuYW50Eh8uaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXF1ZXN0GiAuaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXNwb25zZRKAAQobR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEi8uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdBowLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1Jlc3BvbnNlElkKDlZhbGlkYXRlQXBpS2V5EiIuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXNwb25zZRJWCg1DdXN0b21lckxvZ2luEiEuaWRlbnRpdHkudjEuQ3VzdG9tZXJMb2dpblJlcXVlc3QaIi5pZGVudGl0eS52MS5DdXN0b21lckxvZ2luUmVzcG9uc2USXwoQQ3VzdG9tZXJSZWdpc3RlchIkLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0GiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWdpc3RlclJlc3BvbnNlEmsKFEN1c3RvbWVyUmVmcmVzaFRva2VuEiguaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXF1ZXN0GikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXNwb25zZRJlChJDdXN0b21lclJlcXVlc3RPVFASJi5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RPVFBSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0T1RQUmVzcG9uc2USYgoRQ3VzdG9tZXJWZXJpZnlPVFASJS5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlcXVlc3QaJi5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEoMBChxDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0EjAuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QaMS5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USbgoVQ3VzdG9tZXJSZXNldFBhc3N3b3JkEikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBoqLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVzZXRQYXNzd29yZFJlc3BvbnNlEmUKElN0b3JlUHJvdmlkZXJUb2tlbhImLmlkZW50aXR5LnYxLlN0b3JlUHJvdmlkZXJUb2tlblJlcXVlc3QaJy5pZGVudGl0eS52MS5TdG9yZVByb3ZpZGVyVG9rZW5SZXNwb25zZRJfChBHZXRQcm92aWRlclRva2VuEiQuaWRlbnRpdHkudjEuR2V0UHJvdmlkZXJUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5HZXRQcm92aWRlclRva2VuUmVzcG9uc2USawoURGVsZXRlUHJvdmlkZXJUb2tlbnMSKC5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1JlcXVlc3QaKS5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1Jlc3BvbnNlEmUKElN0YXJ0UHJvdmlkZXJMb2dpbhImLmlkZW50aXR5LnYxLlN0YXJ0UHJvdmlkZXJMb2dpblJlcXVlc3QaJy5pZGVudGl0eS52MS5TdGFydFByb3ZpZGVyTG9naW5SZXNwb25zZRJoChNGaW5pc2hQcm92aWRlckxvZ2luEicuaWRlbnRpdHkudjEuRmluaXNoUHJvdmlkZXJMb2dpblJlcXVlc3QaKC5pZGVudGl0eS52MS5GaW5pc2hQcm92aWRlckxvZ2luUmVzcG9uc2USfQoaU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXISLi5pZGVudGl0eS52MS5TdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QaLy5pZGVudGl0eS52MS5TdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEoYBCh1Db21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pchIxLmlkZW50aXR5LnYxLkNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVxdWVzdBoyLmlkZW50aXR5LnYxLkNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2USdAoXU3RhcnRBZG1pbkxvZ2luV2l0aEZvaXISKy5pZGVudGl0eS52MS5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QaLC5pZGVudGl0eS52MS5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEn0KGkNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyEi4uaWRlbnRpdHkudjEuQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXF1ZXN0Gi8uaWRlbnRpdHkudjEuQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRJlChJMaXN0UmVseWluZ1BhcnRpZXMSJi5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnRpZXNSZXF1ZXN0GicuaWRlbnRpdHkudjEuTGlzdFJlbHlpbmdQYXJ0aWVzUmVzcG9uc2USXAoPR2V0UmVseWluZ1BhcnR5EiMuaWRlbnRpdHkudjEuR2V0UmVseWluZ1BhcnR5UmVxdWVzdBokLmlkZW50aXR5LnYxLkdldFJlbHlpbmdQYXJ0eVJlc3BvbnNlEmUKEkNyZWF0ZVJlbHlpbmdQYXJ0eRImLmlkZW50aXR5LnYxLkNyZWF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QaJy5pZGVudGl0eS52MS5DcmVhdGVSZWx5aW5nUGFydHlSZXNwb25zZRJlChJVcGRhdGVSZWx5aW5nUGFydHkSJi5pZGVudGl0eS52MS5VcGRhdGVSZWx5aW5nUGFydHlSZXF1ZXN0GicuaWRlbnRpdHkudjEuVXBkYXRlUmVseWluZ1BhcnR5UmVzcG9uc2USaAoTRGlzYWJsZVJlbHlpbmdQYXJ0eRInLmlkZW50aXR5LnYxLkRpc2FibGVSZWx5aW5nUGFydHlSZXF1ZXN0GiguaWRlbnRpdHkudjEuRGlzYWJsZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEmsKFFJlZ2lzdGVyQ3VzdG9tRG9tYWluEiguaWRlbnRpdHkudjEuUmVnaXN0ZXJDdXN0b21Eb21haW5SZXF1ZXN0GikuaWRlbnRpdHkudjEuUmVnaXN0ZXJDdXN0b21Eb21haW5SZXNwb25zZRJlChJWZXJpZnlDdXN0b21Eb21haW4SJi5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21Eb21haW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmVyaWZ5Q3VzdG9tRG9tYWluUmVzcG9uc2USZQoSRGVsZXRlQ3VzdG9tRG9tYWluEiYuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tRG9tYWluUmVxdWVzdBonLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbURvbWFpblJlc3BvbnNlEmIKEUxpc3RDdXN0b21Eb21haW5zEiUuaWRlbnRpdHkudjEuTGlzdEN1c3RvbURvbWFpbnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdEN1c3RvbURvbWFpbnNSZXNwb25zZRJrChRMaXN0Q3VzdG9tZXJTZXNzaW9ucxIoLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclNlc3Npb25zUmVxdWVzdBopLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclNlc3Npb25zUmVzcG9uc2USbgoVUmV2b2tlQ3VzdG9tZXJTZXNzaW9uEikuaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVxdWVzdBoqLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVyU2Vzc2lvblJlc3BvbnNlEnEKFkxpc3RSZWx5aW5nUGFydHlHcmFudHMSKi5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnR5R3JhbnRzUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXNwb25zZRJiChFHcmFudFJlbHlpbmdQYXJ0eRIlLmlkZW50aXR5LnYxLkdyYW50UmVseWluZ1BhcnR5UmVxdWVzdBomLmlkZW50aXR5LnYxLkdyYW50UmVseWluZ1BhcnR5UmVzcG9uc2USdAoXUmV2b2tlUmVseWluZ1BhcnR5R3JhbnQSKy5pZGVudGl0eS52MS5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlcXVlc3QaLC5pZGVudGl0eS52MS5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlc3BvbnNlEkoKCUxpc3RSb2xlcxIdLmlkZW50aXR5LnYxLkxpc3RSb2xlc1JlcXVlc3QaHi5pZGVudGl0eS52MS5MaXN0Um9sZXNSZXNwb25zZRJECgdHZXRSb2xlEhsuaWRlbnRpdHkudjEuR2V0Um9sZVJlcXVlc3QaHC5pZGVudGl0eS52MS5HZXRSb2xlUmVzcG9uc2USTQoKQ3JlYXRlUm9sZRIeLmlkZW50aXR5LnYxLkNyZWF0ZVJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuQ3JlYXRlUm9sZVJlc3BvbnNlEk0KClVwZGF0ZVJvbGUSHi5pZGVudGl0eS52MS5VcGRhdGVSb2xlUmVxdWVzdBofLmlkZW50aXR5LnYxLlVwZGF0ZVJvbGVSZXNwb25zZRJQCgtEaXNhYmxlUm9sZRIfLmlkZW50aXR5LnYxLkRpc2FibGVSb2xlUmVxdWVzdBogLmlkZW50aXR5LnYxLkRpc2FibGVSb2xlUmVzcG9uc2USTQoKQXNzaWduUm9sZRIeLmlkZW50aXR5LnYxLkFzc2lnblJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuQXNzaWduUm9sZVJlc3BvbnNlEmsKFFJldm9rZVJvbGVBc3NpZ25tZW50EiguaWRlbnRpdHkudjEuUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXF1ZXN0GikuaWRlbnRpdHkudjEuUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXNwb25zZRJoChNMaXN0Um9sZUFzc2lnbm1lbnRzEicuaWRlbnRpdHkudjEuTGlzdFJvbGVBc3NpZ25tZW50c1JlcXVlc3QaKC5pZGVudGl0eS52MS5MaXN0Um9sZUFzc2lnbm1lbnRzUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2lkZW50aXR5L3YxO2lkZW50aXR5djFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp2, file_publish_v1_publish, file_common_v1_pagination]);
|
|
482
491
|
var CustomerSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 2);
|
|
483
492
|
var TenantSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 3);
|
|
484
493
|
var ApiKeySchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 7);
|
|
@@ -513,6 +522,13 @@ var DeleteCustomerRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_
|
|
|
513
522
|
var ListCustomersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 65);
|
|
514
523
|
var SuspendCustomerRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 67);
|
|
515
524
|
var MergeCustomersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 69);
|
|
525
|
+
var CreateCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 74);
|
|
526
|
+
var ListCustomerInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 76);
|
|
527
|
+
var GetCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 78);
|
|
528
|
+
var RevokeCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 80);
|
|
529
|
+
var ResendCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 82);
|
|
530
|
+
var ValidateCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 84);
|
|
531
|
+
var AcceptCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 86);
|
|
516
532
|
var CreateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 88);
|
|
517
533
|
var GetTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 90);
|
|
518
534
|
var UpdateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 92);
|
|
@@ -543,6 +559,13 @@ var CreateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity
|
|
|
543
559
|
var UpdateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 141);
|
|
544
560
|
var DeleteAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 143);
|
|
545
561
|
var PublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 145);
|
|
562
|
+
var UnpublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 147);
|
|
563
|
+
var GetAuthProviderPublishStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 149);
|
|
564
|
+
var GetAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 152);
|
|
565
|
+
var ListAuthProviderVersionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 154);
|
|
566
|
+
var RestoreAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 156);
|
|
567
|
+
var ScheduleAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 158);
|
|
568
|
+
var CancelScheduledAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 160);
|
|
546
569
|
var EnabledOAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 162);
|
|
547
570
|
var MintServiceTokenRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 164);
|
|
548
571
|
var UpdateMyProfileRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 166);
|
|
@@ -552,32 +575,34 @@ var CheckEmailAvailabilityRequestSchema = /* @__PURE__ */ messageDesc3(file_iden
|
|
|
552
575
|
var CompleteAccountSetupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 175);
|
|
553
576
|
var CreateSignupSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 177);
|
|
554
577
|
var ResendInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 179);
|
|
555
|
-
var
|
|
556
|
-
var
|
|
557
|
-
var
|
|
558
|
-
var
|
|
559
|
-
var
|
|
560
|
-
var
|
|
561
|
-
var
|
|
562
|
-
var
|
|
563
|
-
var
|
|
564
|
-
var
|
|
565
|
-
var
|
|
566
|
-
var
|
|
567
|
-
var
|
|
568
|
-
var ListRelyingPartyGrantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity,
|
|
569
|
-
var GrantRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity,
|
|
570
|
-
var RevokeRelyingPartyGrantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity,
|
|
571
|
-
var
|
|
572
|
-
var
|
|
573
|
-
var
|
|
574
|
-
var
|
|
575
|
-
var
|
|
576
|
-
var
|
|
577
|
-
var
|
|
578
|
-
var
|
|
579
|
-
var
|
|
580
|
-
var
|
|
578
|
+
var ActivateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 183);
|
|
579
|
+
var GetCustomerManagementStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 195);
|
|
580
|
+
var ListRelyingPartiesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 234);
|
|
581
|
+
var GetRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 236);
|
|
582
|
+
var CreateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 238);
|
|
583
|
+
var UpdateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 240);
|
|
584
|
+
var DisableRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 242);
|
|
585
|
+
var RegisterCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 245);
|
|
586
|
+
var VerifyCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 247);
|
|
587
|
+
var DeleteCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 249);
|
|
588
|
+
var ListCustomDomainsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 251);
|
|
589
|
+
var ListCustomerSessionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 254);
|
|
590
|
+
var RevokeCustomerSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 256);
|
|
591
|
+
var ListRelyingPartyGrantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 259);
|
|
592
|
+
var GrantRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 261);
|
|
593
|
+
var RevokeRelyingPartyGrantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 263);
|
|
594
|
+
var RoleSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 265);
|
|
595
|
+
var ListRolesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 266);
|
|
596
|
+
var GetRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 268);
|
|
597
|
+
var CreateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 270);
|
|
598
|
+
var UpdateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 272);
|
|
599
|
+
var DisableRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 274);
|
|
600
|
+
var RoleAssignmentSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 276);
|
|
601
|
+
var AssignRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 277);
|
|
602
|
+
var RevokeRoleAssignmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 279);
|
|
603
|
+
var ListRoleAssignmentsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 281);
|
|
604
|
+
var RolePrincipalKindSchema = /* @__PURE__ */ enumDesc2(file_identity_v1_identity, 9);
|
|
605
|
+
var RolePrincipalKind = /* @__PURE__ */ tsEnum2(RolePrincipalKindSchema);
|
|
581
606
|
var IdentityService = /* @__PURE__ */ serviceDesc(file_identity_v1_identity, 0);
|
|
582
607
|
|
|
583
608
|
// ../../packages/proto-ts/src/models/v1/models_pb.js
|
|
@@ -589,26 +614,33 @@ import { fileDesc as fileDesc4, messageDesc as messageDesc4 } from "@bufbuild/pr
|
|
|
589
614
|
var file_common_v1_access = /* @__PURE__ */ fileDesc4("ChZjb21tb24vdjEvYWNjZXNzLnByb3RvEgljb21tb24udjEiKgoLRmllbGRBY2Nlc3MSDAoEcmVhZBgBIAMoCRINCgV3cml0ZRgCIAMoCUI5WjdnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vY29tbW9uL3YxO2NvbW1vbnYxYgZwcm90bzM");
|
|
590
615
|
|
|
591
616
|
// ../../packages/proto-ts/src/models/v1/models_pb.js
|
|
592
|
-
var file_models_v1_models = /* @__PURE__ */ fileDesc5("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEihwUKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQESFgoJcXVlcnlhYmxlGBAgASgISAmIAQESJgoGYWNjZXNzGBEgASgLMhYuY29tbW9uLnYxLkZpZWxkQWNjZXNzQgwKCl9oZWxwX3RleHRCDgoMX3BsYWNlaG9sZGVyQhAKDl9kZWZhdWx0X3ZhbHVlQgwKCl9pdGVtX3R5cGVCCgoIX3N0b3JhZ2VCEAoOX3RlbXBsYXRlX3pvbmVCDQoLX3pvbmVfb3JkZXJCEwoRX3JlZmVyZW5jZV9maWx0ZXJCDQoLX3ZhbGlkYXRpb25CDAoKX3F1ZXJ5YWJsZSI8Cg1TaGFyaW5nQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSGgoScmVxdWlyZV9hY2NlcHRhbmNlGAIgASgIIvQFCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgFIAEoCBIuCgdzaGFyaW5nGAYgASgLMhgubW9kZWxzLnYxLlNoYXJpbmdDb25maWdIAIgBARIYCgtwbHVyYWxfbmFtZRgHIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAggASgJSAKIAQESFQoIY2F0ZWdvcnkYCSABKAlIA4gBARIRCgRpY29uGAogASgJSASIAQESGgoNZGlzcGxheV9maWVsZBgLIAEoCUgFiAEBEhUKDXN5c3RlbV9lbnRpdHkYDSABKAgSFgoJZGVsZXRhYmxlGA4gASgISAaIAQESFQoIZWRpdGFibGUYDyABKAhIB4gBARI1Cg9tZXRhZGF0YV9zY2hlbWEYECABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYESABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESFwoKcGx1cmFsX2tleRgSIAEoCUgKiAEBEiwKB2xvb2t1cHMYEyADKAsyGy5tb2RlbHMudjEuTG9va3VwRGVmaW5pdGlvbhI5Cg1jYWNoZV9jb250cm9sGBQgASgLMh0ubW9kZWxzLnYxLkNhY2hlQ29udHJvbENvbmZpZ0gLiAEBQgoKCF9zaGFyaW5nQg4KDF9wbHVyYWxfbmFtZUIOCgxfZGVzY3JpcHRpb25CCwoJX2NhdGVnb3J5QgcKBV9pY29uQhAKDl9kaXNwbGF5X2ZpZWxkQgwKCl9kZWxldGFibGVCCwoJX2VkaXRhYmxlQhIKEF9tZXRhZGF0YV9zY2hlbWFCCAoGX2hvb2tzQg0KC19wbHVyYWxfa2V5QhAKDl9jYWNoZV9jb250cm9sIlIKEkNhY2hlQ29udHJvbENvbmZpZxIPCgdtYXhfYWdlGAEgASgFEisKBXNjb3BlGAIgASgOMhwubW9kZWxzLnYxLkNhY2hlQ29udHJvbFNjb3BlIj4KEExvb2t1cERlZmluaXRpb24SDgoGa2V5X2J5GAEgAygJEhEKBG5hbWUYAiABKAlIAIgBAUIHCgVfbmFtZSKJAQoRTW9kZWxDYXBhYmlsaXRpZXMSFAoMaXNfdmVyc2lvbmVkGAEgASgIEhYKDmlzX3B1Ymxpc2hhYmxlGAIgASgIEhQKDGhhc192YXJpYW50cxgDIAEoCBIXCg9jdXN0b21lcl9zY29wZWQYBCABKAgSFwoPc2hhcmluZ19lbmFibGVkGAUgASgIIo8HCgVNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIgCgZmaWVsZHMYBCADKAsyEC5tb2RlbHMudjEuRmllbGQSJgoGY29uZmlnGAUgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnEhYKCWNvbmZpZ19pZBgGIAEoCUgAiAEBEjIKDGNhcGFiaWxpdGllcxgHIAEoCzIcLm1vZGVscy52MS5Nb2RlbENhcGFiaWxpdGllcxIfChJjdXJyZW50X3ZlcnNpb25faWQYCCABKAlIAYgBARIlChhwdWJsaXNoZWRfdmVyc2lvbl9udW1iZXIYCSABKAVIAogBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAOIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKEmxhc3RfcHVzaGVkX2ZpZWxkcxgoIAMoCzIQLm1vZGVscy52MS5GaWVsZBI3Cg5sYXN0X3B1c2hlZF9hdBgpIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBgqIAEoCUgGiAEBEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GCsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYLCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAiIAQFCDAoKX2NvbmZpZ19pZEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhsKGV9wdWJsaXNoZWRfdmVyc2lvbl9udW1iZXJCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCEQoPX2xhc3RfcHVzaGVkX2F0QhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXQiwgIKDE1vZGVsVmVyc2lvbhIKCgJpZBgBIAEoCRIQCghtb2RlbF9pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIgCgZmaWVsZHMYBCADKAsyEC5tb2RlbHMudjEuRmllbGQSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5Is0BChJDcmVhdGVNb2RlbFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gAiAEBEhYKCWNvbmZpZ19pZBgFIAEoCUgBiAEBEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAYgASgIQgkKB19jb25maWdCDAoKX2NvbmZpZ19pZCI2ChNDcmVhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIh0KD0dldE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSIzChBHZXRNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIiMKFEdldE1vZGVsQnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSI4ChVHZXRNb2RlbEJ5S2V5UmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiwgEKEUxpc3RNb2RlbHNSZXF1ZXN0EhIKBWFmdGVyGAYgASgJSACIAQESEwoGYmVmb3JlGAcgASgJSAGIAQESEgoFZmlyc3QYCCABKAVIAogBARIRCgRsYXN0GAkgASgFSAOIAQESKwoFd2hlcmUYCiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKRAQoSTGlzdE1vZGVsc1Jlc3BvbnNlEiAKBm1vZGVscxgBIAMoCzIQLm1vZGVscy52MS5Nb2RlbBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iuAIKElVwZGF0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gBiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgFIAEoCUgCiAEBEhUKDXVwZGF0ZV9maWVsZHMYBiABKAgSHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYByABKAgSFQoNc25hcHNob3Rfb25seRgIIAEoCBIcChRhbGxvd19sb29rdXBfcmVidWlsZBgJIAEoCEIHCgVfbmFtZUIJCgdfY29uZmlnQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24iNgoTVXBkYXRlTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIgChJEZWxldGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiJgoTRGVsZXRlTW9kZWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkYKFUR1cGxpY2F0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIPCgduZXdfa2V5GAIgASgJEhAKCG5ld19uYW1lGAMgASgJIjkKFkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwipAEKGExpc3RNb2RlbFZlcnNpb25zUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoZTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRIpCgh2ZXJzaW9ucxgBIAMoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIj4KFkdldE1vZGVsVmVyc2lvblJlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoKdmVyc2lvbl9pZBgCIAEoCSJDChdHZXRNb2RlbFZlcnNpb25SZXNwb25zZRIoCgd2ZXJzaW9uGAEgASgLMhcubW9kZWxzLnYxLk1vZGVsVmVyc2lvbiJCChpSZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgp2ZXJzaW9uX2lkGAIgASgJIj4KG1Jlc3RvcmVNb2RlbFZlcnNpb25SZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCJjChREZXByZWNhdGVkRmllbGRUb3VjaBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIRCgltb2RlbF9rZXkYAyABKAkSEQoJZmllbGRfa2V5GAQgASgJIlYKIk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QSMAoHdG91Y2hlcxgBIAMoCzIfLm1vZGVscy52MS5EZXByZWNhdGVkRmllbGRUb3VjaCI2CiNNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXNwb25zZRIPCgd1cGRhdGVkGAEgASgFIvcBChhEZXByZWNhdGVkRmllbGRDYW5kaWRhdGUSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIbW9kZWxfaWQYAyABKAkSEQoJbW9kZWxfa2V5GAQgASgJEhEKCWZpZWxkX2tleRgFIAEoCRIuCgpkZWxldGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4Cg9sYXN0X3F1ZXJpZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCEgoQX2xhc3RfcXVlcmllZF9hdCK8AQokTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXNSZXF1ZXN0EhwKFGdyYWNlX3BlcmlvZF9zZWNvbmRzGAEgASgDEhIKBWZpcnN0GAIgASgFSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARIRCgRsYXN0GAQgASgFSAKIAQESEwoGYmVmb3JlGAUgASgJSAOIAQFCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIrsBCiVMaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEjcKCmNhbmRpZGF0ZXMYASADKAsyIy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJBChpEcm9wRGVwcmVjYXRlZEZpZWxkUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRIRCglmaWVsZF9rZXkYAiABKAkiLgobRHJvcERlcHJlY2F0ZWRGaWVsZFJlc3BvbnNlEg8KB2Ryb3BwZWQYASABKAgiIQoTUHVibGlzaE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSJtChRQdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbBI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIjChVVbnB1Ymxpc2hNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiOQoWVW5wdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIqChxHZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIkoKHUdldE1vZGVsUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyKhAQobU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0Ij8KHFNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiMAoiQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJGCiNDYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCr5AgoJRmllbGRUeXBlEhoKFkZJRUxEX1RZUEVfVU5TUEVDSUZJRUQQABITCg9GSUVMRF9UWVBFX1RFWFQQARIVChFGSUVMRF9UWVBFX05VTUJFUhACEhYKEkZJRUxEX1RZUEVfQk9PTEVBThADEhMKD0ZJRUxEX1RZUEVfREFURRAEEhUKEUZJRUxEX1RZUEVfU0VMRUNUEAUSEwoPRklFTERfVFlQRV9KU09OEAYSEwoPRklFTERfVFlQRV9MSVNUEAcSFAoQRklFTERfVFlQRV9NT0RFTBAIEhgKFEZJRUxEX1RZUEVfUkVGRVJFTkNFEAkSEwoPRklFTERfVFlQRV9GSUxFEAoSFAoQRklFTERfVFlQRV9JTUFHRRALEhQKEEZJRUxEX1RZUEVfVklERU8QDBIXChNGSUVMRF9UWVBFX0ZMRVhJQkxFEA0SEwoPRklFTERfVFlQRV9FTlVNEA4SFwoTRklFTERfVFlQRV9SSUNIVEVYVBAPKpsBChFDYWNoZUNvbnRyb2xTY29wZRIjCh9DQUNIRV9DT05UUk9MX1NDT1BFX1VOU1BFQ0lGSUVEEAASHgoaQ0FDSEVfQ09OVFJPTF9TQ09QRV9QVUJMSUMQARIfChtDQUNIRV9DT05UUk9MX1NDT1BFX1BSSVZBVEUQAhIgChxDQUNIRV9DT05UUk9MX1NDT1BFX05PX0NBQ0hFEAMyuA0KDU1vZGVsc1NlcnZpY2USQwoIR2V0TW9kZWwSGi5tb2RlbHMudjEuR2V0TW9kZWxSZXF1ZXN0GhsubW9kZWxzLnYxLkdldE1vZGVsUmVzcG9uc2USUgoNR2V0TW9kZWxCeUtleRIfLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVxdWVzdBogLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVzcG9uc2USSQoKTGlzdE1vZGVscxIcLm1vZGVscy52MS5MaXN0TW9kZWxzUmVxdWVzdBodLm1vZGVscy52MS5MaXN0TW9kZWxzUmVzcG9uc2USTAoLQ3JlYXRlTW9kZWwSHS5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkNyZWF0ZU1vZGVsUmVzcG9uc2USTAoLVXBkYXRlTW9kZWwSHS5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLlVwZGF0ZU1vZGVsUmVzcG9uc2USTAoLRGVsZXRlTW9kZWwSHS5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkRlbGV0ZU1vZGVsUmVzcG9uc2USVQoORHVwbGljYXRlTW9kZWwSIC5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USWAoPR2V0TW9kZWxWZXJzaW9uEiEubW9kZWxzLnYxLkdldE1vZGVsVmVyc2lvblJlcXVlc3QaIi5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USXgoRTGlzdE1vZGVsVmVyc2lvbnMSIy5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXF1ZXN0GiQubW9kZWxzLnYxLkxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USZAoTUmVzdG9yZU1vZGVsVmVyc2lvbhIlLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBomLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USTwoMUHVibGlzaE1vZGVsEh4ubW9kZWxzLnYxLlB1Ymxpc2hNb2RlbFJlcXVlc3QaHy5tb2RlbHMudjEuUHVibGlzaE1vZGVsUmVzcG9uc2USVQoOVW5wdWJsaXNoTW9kZWwSIC5tb2RlbHMudjEuVW5wdWJsaXNoTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLlVucHVibGlzaE1vZGVsUmVzcG9uc2USagoVR2V0TW9kZWxQdWJsaXNoU3RhdHVzEicubW9kZWxzLnYxLkdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QaKC5tb2RlbHMudjEuR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USZwoUU2NoZWR1bGVNb2RlbFB1Ymxpc2gSJi5tb2RlbHMudjEuU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0GicubW9kZWxzLnYxLlNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoEi0ubW9kZWxzLnYxLkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QaLi5tb2RlbHMudjEuQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkEi0ubW9kZWxzLnYxLk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QaLi5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2USggEKHUxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzEi8ubW9kZWxzLnYxLkxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVxdWVzdBowLm1vZGVscy52MS5MaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEmQKE0Ryb3BEZXByZWNhdGVkRmllbGQSJS5tb2RlbHMudjEuRHJvcERlcHJlY2F0ZWRGaWVsZFJlcXVlc3QaJi5tb2RlbHMudjEuRHJvcERlcHJlY2F0ZWRGaWVsZFJlc3BvbnNlQjlaN2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9tb2RlbHMvdjE7bW9kZWxzdjFiBnByb3RvMw", [file_google_protobuf_struct2, file_google_protobuf_timestamp3, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
|
|
593
|
-
var
|
|
594
|
-
var
|
|
595
|
-
var
|
|
596
|
-
var
|
|
597
|
-
var
|
|
598
|
-
var
|
|
599
|
-
var
|
|
600
|
-
var
|
|
601
|
-
var
|
|
602
|
-
var
|
|
603
|
-
var
|
|
604
|
-
var
|
|
605
|
-
var
|
|
606
|
-
var
|
|
607
|
-
var
|
|
608
|
-
var
|
|
609
|
-
var
|
|
610
|
-
var
|
|
611
|
-
var
|
|
617
|
+
var file_models_v1_models = /* @__PURE__ */ fileDesc5("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiYQoSUmVsYXRpb25zaGlwQ29uZmlnEikKBGtpbmQYASABKA4yGy5tb2RlbHMudjEuUmVsYXRpb25zaGlwS2luZBIUCgdpbnZlcnNlGAIgASgJSACIAQFCCgoIX2ludmVyc2Ui0gUKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQESFgoJcXVlcnlhYmxlGBAgASgISAmIAQESJgoGYWNjZXNzGBEgASgLMhYuY29tbW9uLnYxLkZpZWxkQWNjZXNzEjgKDHJlbGF0aW9uc2hpcBgSIAEoCzIdLm1vZGVscy52MS5SZWxhdGlvbnNoaXBDb25maWdICogBAUIMCgpfaGVscF90ZXh0Qg4KDF9wbGFjZWhvbGRlckIQCg5fZGVmYXVsdF92YWx1ZUIMCgpfaXRlbV90eXBlQgoKCF9zdG9yYWdlQhAKDl90ZW1wbGF0ZV96b25lQg0KC196b25lX29yZGVyQhMKEV9yZWZlcmVuY2VfZmlsdGVyQg0KC192YWxpZGF0aW9uQgwKCl9xdWVyeWFibGVCDwoNX3JlbGF0aW9uc2hpcCI8Cg1TaGFyaW5nQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSGgoScmVxdWlyZV9hY2NlcHRhbmNlGAIgASgIIvQFCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgFIAEoCBIuCgdzaGFyaW5nGAYgASgLMhgubW9kZWxzLnYxLlNoYXJpbmdDb25maWdIAIgBARIYCgtwbHVyYWxfbmFtZRgHIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAggASgJSAKIAQESFQoIY2F0ZWdvcnkYCSABKAlIA4gBARIRCgRpY29uGAogASgJSASIAQESGgoNZGlzcGxheV9maWVsZBgLIAEoCUgFiAEBEhUKDXN5c3RlbV9lbnRpdHkYDSABKAgSFgoJZGVsZXRhYmxlGA4gASgISAaIAQESFQoIZWRpdGFibGUYDyABKAhIB4gBARI1Cg9tZXRhZGF0YV9zY2hlbWEYECABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYESABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESFwoKcGx1cmFsX2tleRgSIAEoCUgKiAEBEiwKB2xvb2t1cHMYEyADKAsyGy5tb2RlbHMudjEuTG9va3VwRGVmaW5pdGlvbhI5Cg1jYWNoZV9jb250cm9sGBQgASgLMh0ubW9kZWxzLnYxLkNhY2hlQ29udHJvbENvbmZpZ0gLiAEBQgoKCF9zaGFyaW5nQg4KDF9wbHVyYWxfbmFtZUIOCgxfZGVzY3JpcHRpb25CCwoJX2NhdGVnb3J5QgcKBV9pY29uQhAKDl9kaXNwbGF5X2ZpZWxkQgwKCl9kZWxldGFibGVCCwoJX2VkaXRhYmxlQhIKEF9tZXRhZGF0YV9zY2hlbWFCCAoGX2hvb2tzQg0KC19wbHVyYWxfa2V5QhAKDl9jYWNoZV9jb250cm9sIlIKEkNhY2hlQ29udHJvbENvbmZpZxIPCgdtYXhfYWdlGAEgASgFEisKBXNjb3BlGAIgASgOMhwubW9kZWxzLnYxLkNhY2hlQ29udHJvbFNjb3BlIj4KEExvb2t1cERlZmluaXRpb24SDgoGa2V5X2J5GAEgAygJEhEKBG5hbWUYAiABKAlIAIgBAUIHCgVfbmFtZSKJAQoRTW9kZWxDYXBhYmlsaXRpZXMSFAoMaXNfdmVyc2lvbmVkGAEgASgIEhYKDmlzX3B1Ymxpc2hhYmxlGAIgASgIEhQKDGhhc192YXJpYW50cxgDIAEoCBIXCg9jdXN0b21lcl9zY29wZWQYBCABKAgSFwoPc2hhcmluZ19lbmFibGVkGAUgASgIIo8HCgVNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIgCgZmaWVsZHMYBCADKAsyEC5tb2RlbHMudjEuRmllbGQSJgoGY29uZmlnGAUgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnEhYKCWNvbmZpZ19pZBgGIAEoCUgAiAEBEjIKDGNhcGFiaWxpdGllcxgHIAEoCzIcLm1vZGVscy52MS5Nb2RlbENhcGFiaWxpdGllcxIfChJjdXJyZW50X3ZlcnNpb25faWQYCCABKAlIAYgBARIlChhwdWJsaXNoZWRfdmVyc2lvbl9udW1iZXIYCSABKAVIAogBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAOIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKEmxhc3RfcHVzaGVkX2ZpZWxkcxgoIAMoCzIQLm1vZGVscy52MS5GaWVsZBI3Cg5sYXN0X3B1c2hlZF9hdBgpIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBgqIAEoCUgGiAEBEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GCsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYLCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAiIAQFCDAoKX2NvbmZpZ19pZEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhsKGV9wdWJsaXNoZWRfdmVyc2lvbl9udW1iZXJCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCEQoPX2xhc3RfcHVzaGVkX2F0QhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXQiwgIKDE1vZGVsVmVyc2lvbhIKCgJpZBgBIAEoCRIQCghtb2RlbF9pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIgCgZmaWVsZHMYBCADKAsyEC5tb2RlbHMudjEuRmllbGQSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5Is0BChJDcmVhdGVNb2RlbFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gAiAEBEhYKCWNvbmZpZ19pZBgFIAEoCUgBiAEBEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAYgASgIQgkKB19jb25maWdCDAoKX2NvbmZpZ19pZCI2ChNDcmVhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIh0KD0dldE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSIzChBHZXRNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIiMKFEdldE1vZGVsQnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSI4ChVHZXRNb2RlbEJ5S2V5UmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiwgEKEUxpc3RNb2RlbHNSZXF1ZXN0EhIKBWFmdGVyGAYgASgJSACIAQESEwoGYmVmb3JlGAcgASgJSAGIAQESEgoFZmlyc3QYCCABKAVIAogBARIRCgRsYXN0GAkgASgFSAOIAQESKwoFd2hlcmUYCiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKRAQoSTGlzdE1vZGVsc1Jlc3BvbnNlEiAKBm1vZGVscxgBIAMoCzIQLm1vZGVscy52MS5Nb2RlbBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iuAIKElVwZGF0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gBiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgFIAEoCUgCiAEBEhUKDXVwZGF0ZV9maWVsZHMYBiABKAgSHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYByABKAgSFQoNc25hcHNob3Rfb25seRgIIAEoCBIcChRhbGxvd19sb29rdXBfcmVidWlsZBgJIAEoCEIHCgVfbmFtZUIJCgdfY29uZmlnQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24iNgoTVXBkYXRlTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIgChJEZWxldGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiJgoTRGVsZXRlTW9kZWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkYKFUR1cGxpY2F0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIPCgduZXdfa2V5GAIgASgJEhAKCG5ld19uYW1lGAMgASgJIjkKFkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwipAEKGExpc3RNb2RlbFZlcnNpb25zUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoZTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRIpCgh2ZXJzaW9ucxgBIAMoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIj4KFkdldE1vZGVsVmVyc2lvblJlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoKdmVyc2lvbl9pZBgCIAEoCSJDChdHZXRNb2RlbFZlcnNpb25SZXNwb25zZRIoCgd2ZXJzaW9uGAEgASgLMhcubW9kZWxzLnYxLk1vZGVsVmVyc2lvbiJCChpSZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgp2ZXJzaW9uX2lkGAIgASgJIj4KG1Jlc3RvcmVNb2RlbFZlcnNpb25SZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCJjChREZXByZWNhdGVkRmllbGRUb3VjaBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIRCgltb2RlbF9rZXkYAyABKAkSEQoJZmllbGRfa2V5GAQgASgJIlYKIk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QSMAoHdG91Y2hlcxgBIAMoCzIfLm1vZGVscy52MS5EZXByZWNhdGVkRmllbGRUb3VjaCI2CiNNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXNwb25zZRIPCgd1cGRhdGVkGAEgASgFIvcBChhEZXByZWNhdGVkRmllbGRDYW5kaWRhdGUSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIbW9kZWxfaWQYAyABKAkSEQoJbW9kZWxfa2V5GAQgASgJEhEKCWZpZWxkX2tleRgFIAEoCRIuCgpkZWxldGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4Cg9sYXN0X3F1ZXJpZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCEgoQX2xhc3RfcXVlcmllZF9hdCK8AQokTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXNSZXF1ZXN0EhwKFGdyYWNlX3BlcmlvZF9zZWNvbmRzGAEgASgDEhIKBWZpcnN0GAIgASgFSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARIRCgRsYXN0GAQgASgFSAKIAQESEwoGYmVmb3JlGAUgASgJSAOIAQFCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIrsBCiVMaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEjcKCmNhbmRpZGF0ZXMYASADKAsyIy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJBChpEcm9wRGVwcmVjYXRlZEZpZWxkUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRIRCglmaWVsZF9rZXkYAiABKAkiLgobRHJvcERlcHJlY2F0ZWRGaWVsZFJlc3BvbnNlEg8KB2Ryb3BwZWQYASABKAgiIQoTUHVibGlzaE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSJtChRQdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbBI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIjChVVbnB1Ymxpc2hNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiOQoWVW5wdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIqChxHZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIkoKHUdldE1vZGVsUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyKhAQobU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0Ij8KHFNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiMAoiQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJGCiNDYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCr5AgoJRmllbGRUeXBlEhoKFkZJRUxEX1RZUEVfVU5TUEVDSUZJRUQQABITCg9GSUVMRF9UWVBFX1RFWFQQARIVChFGSUVMRF9UWVBFX05VTUJFUhACEhYKEkZJRUxEX1RZUEVfQk9PTEVBThADEhMKD0ZJRUxEX1RZUEVfREFURRAEEhUKEUZJRUxEX1RZUEVfU0VMRUNUEAUSEwoPRklFTERfVFlQRV9KU09OEAYSEwoPRklFTERfVFlQRV9MSVNUEAcSFAoQRklFTERfVFlQRV9NT0RFTBAIEhgKFEZJRUxEX1RZUEVfUkVGRVJFTkNFEAkSEwoPRklFTERfVFlQRV9GSUxFEAoSFAoQRklFTERfVFlQRV9JTUFHRRALEhQKEEZJRUxEX1RZUEVfVklERU8QDBIXChNGSUVMRF9UWVBFX0ZMRVhJQkxFEA0SEwoPRklFTERfVFlQRV9FTlVNEA4SFwoTRklFTERfVFlQRV9SSUNIVEVYVBAPKnsKEFJlbGF0aW9uc2hpcEtpbmQSIQodUkVMQVRJT05TSElQX0tJTkRfVU5TUEVDSUZJRUQQABIhCh1SRUxBVElPTlNISVBfS0lORF9BU1NPQ0lBVElPThABEiEKHVJFTEFUSU9OU0hJUF9LSU5EX0NPTVBPU0lUSU9OEAIqmwEKEUNhY2hlQ29udHJvbFNjb3BlEiMKH0NBQ0hFX0NPTlRST0xfU0NPUEVfVU5TUEVDSUZJRUQQABIeChpDQUNIRV9DT05UUk9MX1NDT1BFX1BVQkxJQxABEh8KG0NBQ0hFX0NPTlRST0xfU0NPUEVfUFJJVkFURRACEiAKHENBQ0hFX0NPTlRST0xfU0NPUEVfTk9fQ0FDSEUQAzK4DQoNTW9kZWxzU2VydmljZRJDCghHZXRNb2RlbBIaLm1vZGVscy52MS5HZXRNb2RlbFJlcXVlc3QaGy5tb2RlbHMudjEuR2V0TW9kZWxSZXNwb25zZRJSCg1HZXRNb2RlbEJ5S2V5Eh8ubW9kZWxzLnYxLkdldE1vZGVsQnlLZXlSZXF1ZXN0GiAubW9kZWxzLnYxLkdldE1vZGVsQnlLZXlSZXNwb25zZRJJCgpMaXN0TW9kZWxzEhwubW9kZWxzLnYxLkxpc3RNb2RlbHNSZXF1ZXN0Gh0ubW9kZWxzLnYxLkxpc3RNb2RlbHNSZXNwb25zZRJMCgtDcmVhdGVNb2RlbBIdLm1vZGVscy52MS5DcmVhdGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXNwb25zZRJMCgtVcGRhdGVNb2RlbBIdLm1vZGVscy52MS5VcGRhdGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXNwb25zZRJMCgtEZWxldGVNb2RlbBIdLm1vZGVscy52MS5EZWxldGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXNwb25zZRJVCg5EdXBsaWNhdGVNb2RlbBIgLm1vZGVscy52MS5EdXBsaWNhdGVNb2RlbFJlcXVlc3QaIS5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXNwb25zZRJYCg9HZXRNb2RlbFZlcnNpb24SIS5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVxdWVzdBoiLm1vZGVscy52MS5HZXRNb2RlbFZlcnNpb25SZXNwb25zZRJeChFMaXN0TW9kZWxWZXJzaW9ucxIjLm1vZGVscy52MS5MaXN0TW9kZWxWZXJzaW9uc1JlcXVlc3QaJC5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRJkChNSZXN0b3JlTW9kZWxWZXJzaW9uEiUubW9kZWxzLnYxLlJlc3RvcmVNb2RlbFZlcnNpb25SZXF1ZXN0GiYubW9kZWxzLnYxLlJlc3RvcmVNb2RlbFZlcnNpb25SZXNwb25zZRJPCgxQdWJsaXNoTW9kZWwSHi5tb2RlbHMudjEuUHVibGlzaE1vZGVsUmVxdWVzdBofLm1vZGVscy52MS5QdWJsaXNoTW9kZWxSZXNwb25zZRJVCg5VbnB1Ymxpc2hNb2RlbBIgLm1vZGVscy52MS5VbnB1Ymxpc2hNb2RlbFJlcXVlc3QaIS5tb2RlbHMudjEuVW5wdWJsaXNoTW9kZWxSZXNwb25zZRJqChVHZXRNb2RlbFB1Ymxpc2hTdGF0dXMSJy5tb2RlbHMudjEuR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVxdWVzdBooLm1vZGVscy52MS5HZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXNwb25zZRJnChRTY2hlZHVsZU1vZGVsUHVibGlzaBImLm1vZGVscy52MS5TY2hlZHVsZU1vZGVsUHVibGlzaFJlcXVlc3QaJy5tb2RlbHMudjEuU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXNwb25zZRJ8ChtDYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2gSLS5tb2RlbHMudjEuQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVxdWVzdBouLm1vZGVscy52MS5DYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXNwb25zZRJ8ChtNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWQSLS5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVxdWVzdBouLm1vZGVscy52MS5NYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXNwb25zZRKCAQodTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXMSLy5tb2RlbHMudjEuTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXNSZXF1ZXN0GjAubW9kZWxzLnYxLkxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVzcG9uc2USZAoTRHJvcERlcHJlY2F0ZWRGaWVsZBIlLm1vZGVscy52MS5Ecm9wRGVwcmVjYXRlZEZpZWxkUmVxdWVzdBomLm1vZGVscy52MS5Ecm9wRGVwcmVjYXRlZEZpZWxkUmVzcG9uc2VCOVo3Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL21vZGVscy92MTttb2RlbHN2MWIGcHJvdG8z", [file_google_protobuf_struct2, file_google_protobuf_timestamp3, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
|
|
618
|
+
var RelationshipConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 0);
|
|
619
|
+
var FieldSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 1);
|
|
620
|
+
var SharingConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 2);
|
|
621
|
+
var ModelConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 3);
|
|
622
|
+
var CacheControlConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 4);
|
|
623
|
+
var LookupDefinitionSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 5);
|
|
624
|
+
var ModelSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 7);
|
|
625
|
+
var ModelVersionSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 8);
|
|
626
|
+
var CreateModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 9);
|
|
627
|
+
var GetModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 11);
|
|
628
|
+
var GetModelByKeyRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 13);
|
|
629
|
+
var ListModelsRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 15);
|
|
630
|
+
var UpdateModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 17);
|
|
631
|
+
var DeleteModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 19);
|
|
632
|
+
var DuplicateModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 21);
|
|
633
|
+
var ListModelVersionsRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 23);
|
|
634
|
+
var GetModelVersionRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 25);
|
|
635
|
+
var RestoreModelVersionRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 27);
|
|
636
|
+
var PublishModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 37);
|
|
637
|
+
var UnpublishModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 39);
|
|
638
|
+
var GetModelPublishStatusRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 41);
|
|
639
|
+
var ScheduleModelPublishRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 43);
|
|
640
|
+
var CancelScheduledModelPublishRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 45);
|
|
641
|
+
var RelationshipKindSchema = /* @__PURE__ */ enumDesc3(file_models_v1_models, 1);
|
|
642
|
+
var RelationshipKind = /* @__PURE__ */ tsEnum3(RelationshipKindSchema);
|
|
643
|
+
var CacheControlScopeSchema = /* @__PURE__ */ enumDesc3(file_models_v1_models, 2);
|
|
612
644
|
var CacheControlScope = /* @__PURE__ */ tsEnum3(CacheControlScopeSchema);
|
|
613
645
|
var ModelsService = /* @__PURE__ */ serviceDesc2(file_models_v1_models, 0);
|
|
614
646
|
|
|
@@ -625,6 +657,7 @@ var RuleOperandSchema = /* @__PURE__ */ messageDesc6(file_expressions_v1_express
|
|
|
625
657
|
// ../../packages/proto-ts/src/records/v1/records_pb.js
|
|
626
658
|
var file_records_v1_records = /* @__PURE__ */ fileDesc7("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEihA0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIYCgtjdXN0b21lcl9pZBgIIAEoCUgDiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEhcKCmNyZWF0ZWRfYnkYFCABKAlIBIgBARIXCgp1cGRhdGVkX2J5GBUgASgJSAWIAQESLgoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOdmVyc2lvbl9udW1iZXIYKCABKAVIBogBARIZCgxjb250ZW50X2hhc2gYKSABKAlIB4gBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YKiABKAlICIgBARIbCg5wdWJsaXNoX3N0YXR1cxgrIAEoCUgJiAEBEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GCwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYLSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAuIAQESGAoLdmFyaWFudF9rZXkYMiABKAlIDIgBARIZCgx2YXJpYW50X25hbWUYMyABKAlIDYgBARIgChN2YXJpYW50X2Rlc2NyaXB0aW9uGDQgASgJSA6IAQESFwoKY2F0YWxvZ19pZBg1IAEoCUgPiAEBEhUKCHByaW9yaXR5GDYgASgFSBCIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGDcgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IEYgBARIXCgppc19kZWZhdWx0GDggASgISBKIAQESHwoSY3VycmVudF92ZXJzaW9uX2lkGDwgASgJSBOIAQESIQoUcHVibGlzaGVkX3ZlcnNpb25faWQYPSABKAlIFIgBARIlChhwdWJsaXNoZWRfdmVyc2lvbl9udW1iZXIYPiABKAVIFYgBARI1CgxwdWJsaXNoZWRfYXQYPyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBaIAQESGQoMcHVibGlzaGVkX2J5GEAgASgJSBeIAQESEwoLY2FuX3B1Ymxpc2gYQSABKAgSFQoNY2FuX3VucHVibGlzaBhCIAEoCBIfChdoYXNfdW5wdWJsaXNoZWRfY2hhbmdlcxhDIAEoCBIdChBtb2RlbF92ZXJzaW9uX2lkGEYgASgJSBiIAQFCDgoMX25hdHVyYWxfa2V5QgwKCl9wYXJlbnRfaWRCCwoJX21ldGFkYXRhQg4KDF9jdXN0b21lcl9pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUIRCg9fdmVyc2lvbl9udW1iZXJCDwoNX2NvbnRlbnRfaGFzaEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQhEKD19wdWJsaXNoX3N0YXR1c0IXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXRCDgoMX3ZhcmlhbnRfa2V5Qg8KDV92YXJpYW50X25hbWVCFgoUX3ZhcmlhbnRfZGVzY3JpcHRpb25CDQoLX2NhdGFsb2dfaWRCCwoJX3ByaW9yaXR5QhIKEF90YXJnZXRpbmdfcnVsZXNCDQoLX2lzX2RlZmF1bHRCFQoTX2N1cnJlbnRfdmVyc2lvbl9pZEIXChVfcHVibGlzaGVkX3ZlcnNpb25faWRCGwoZX3B1Ymxpc2hlZF92ZXJzaW9uX251bWJlckIPCg1fcHVibGlzaGVkX2F0Qg8KDV9wdWJsaXNoZWRfYnlCEwoRX21vZGVsX3ZlcnNpb25faWQi9QEKD1B1Ymxpc2hTY2hlZHVsZRISCgp2ZXJzaW9uX2lkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAUgASgJSAGIAQFCDwoNX3VucHVibGlzaF9hdEINCgtfY3JlYXRlZF9ieSIuCglTb3J0RmllbGQSDQoFZmllbGQYASABKAkSEgoKZGVzY2VuZGluZxgCIAEoCCKFAgoOQmF0Y2hPcGVyYXRpb24SLAoEdHlwZRgBIAEoDjIeLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25UeXBlEg8KAmlkGAIgASgJSACIAQESFgoJbW9kZWxfa2V5GAMgASgJSAGIAQESGAoLbmF0dXJhbF9rZXkYBCABKAlIAogBARIqCgRkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhgKC2N1c3RvbWVyX2lkGAYgASgJSASIAQFCBQoDX2lkQgwKCl9tb2RlbF9rZXlCDgoMX25hdHVyYWxfa2V5QgcKBV9kYXRhQg4KDF9jdXN0b21lcl9pZCKIAQoUQmF0Y2hPcGVyYXRpb25SZXN1bHQSDQoFaW5kZXgYASABKAUSDwoHc3VjY2VzcxgCIAEoCBInCgZyZWNvcmQYAyABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgAiAEBEhIKBWVycm9yGAQgASgJSAGIAQFCCQoHX3JlY29yZEIICgZfZXJyb3IimAIKE0NyZWF0ZVJlY29yZFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhgKC25hdHVyYWxfa2V5GAIgASgJSACIAQESJQoEZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGAoLY3VzdG9tZXJfaWQYBCABKAlIAYgBARIuCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBiABKAlIA4gBAUIOCgxfbmF0dXJhbF9rZXlCDgoMX2N1c3RvbWVyX2lkQgsKCV9tZXRhZGF0YUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIqYBChRDcmVhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIoCgd2YXJpYW50GAIgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAIgBARIoCgd2ZXJzaW9uGAMgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAYgBAUIKCghfdmFyaWFudEIKCghfdmVyc2lvbiIeChBHZXRSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldFJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIj8KFUdldFJlY29yZEJ5S2V5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbmF0dXJhbF9rZXkYAiABKAkiPAoWR2V0UmVjb3JkQnlLZXlSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJCChlHZXRSZWNvcmRCeUtleU9ySWRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRISCgppZGVudGlmaWVyGAIgASgJIkAKGkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkItYCChJMaXN0UmVjb3Jkc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEiMKBHNvcnQYAiADKAsyFS5yZWNvcmRzLnYxLlNvcnRGaWVsZBIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEhMKBnNlYXJjaBgEIAEoCUgBiAEBEg8KB3ByZXZpZXcYBSABKAgSKwoFd2hlcmUYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESEgoFYWZ0ZXIYByABKAlIA4gBARITCgZiZWZvcmUYCCABKAlIBIgBARISCgVmaXJzdBgJIAEoBUgFiAEBEhEKBGxhc3QYCiABKAVIBogBAUIOCgxfY3VzdG9tZXJfaWRCCQoHX3NlYXJjaEIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpUBChNMaXN0UmVjb3Jkc1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8imwIKE1VwZGF0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSJwoGdXBkYXRlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEhgKC3ZhcmlhbnRfa2V5GAQgASgJSAGIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAUgASgJSAKIAQESMgoMcmVwbGFjZV9kYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBQg4KDF9uYXR1cmFsX2tleUIOCgxfdmFyaWFudF9rZXlCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkIPCg1fcmVwbGFjZV9kYXRhIjoKFFVwZGF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkoKFUF1dG9TYXZlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJDChZBdXRvU2F2ZVJlY29yZFJlc3BvbnNlEhEKCXBlcnNpc3RlZBgBIAEoCBIWCg5za2lwcGVkX3JlYXNvbhgCIAEoCSIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIk4KHEJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QSLgoKb3BlcmF0aW9ucxgBIAMoCzIaLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb24iUgodQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USMQoHcmVzdWx0cxgBIAMoCzIgLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25SZXN1bHQinQEKGEJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLAoGdXBkYXRlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBQggKBl93aGVyZUIJCgdfdXBkYXRlIjcKGUJ1bGtVcGRhdGVSZWNvcmRzUmVzcG9uc2USDQoFY291bnQYASABKAUSCwoDaWRzGAIgAygJIjIKHUJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSI5Ch5CYWNrZmlsbFF1ZXJ5YWJsZUluZGV4UmVzcG9uc2USFwoPcmVjb3Jkc19pbmRleGVkGAEgASgFIjAKG0JhY2tmaWxsTW9kZWxJbmRleGVzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiYQocQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXNwb25zZRIeChZsb29rdXBzX3JlY29yZHNfd2Fsa2VkGAEgASgFEiEKGXF1ZXJ5YWJsZV9yZWNvcmRzX2luZGV4ZWQYAiABKAUiVgoWRHVwbGljYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIcCg9uZXdfbmF0dXJhbF9rZXkYAiABKAlIAIgBAUISChBfbmV3X25hdHVyYWxfa2V5Ij0KF0R1cGxpY2F0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIlAKG0R1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBILCgNpZHMYASADKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQFCDAoKX21vZGVsX2tleSJDChxEdXBsaWNhdGVSZWNvcmRzQnVsa1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIrChVQdWJsaXNoVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSI8ChZQdWJsaXNoVmVyc2lvblJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIisKFlVucHVibGlzaFJlY29yZFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIioKF1VucHVibGlzaFJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoWUmV2ZXJ0VG9WZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJIj0KF1JldmVydFRvVmVyc2lvblJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIqYBChlMaXN0UmVjb3JkVmVyc2lvbnNSZXF1ZXN0EhEKCXBhcmVudF9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKdAQoaTGlzdFJlY29yZFZlcnNpb25zUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iZQoUQ3JlYXRlVmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhMKC3ZhcmlhbnRfa2V5GAIgASgJEiUKBGRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IjwKFUNyZWF0ZVZhcmlhbnRSZXNwb25zZRIjCgd2YXJpYW50GAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQimgEKFFVwZGF0ZVZhcmlhbnRSZXF1ZXN0EhIKCnZhcmlhbnRfaWQYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNAoObWV0YWRhdGFfcGF0Y2gYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCEQoPX21ldGFkYXRhX3BhdGNoIjwKFVVwZGF0ZVZhcmlhbnRSZXNwb25zZRIjCgd2YXJpYW50GAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKgoURGVsZXRlVmFyaWFudFJlcXVlc3QSEgoKdmFyaWFudF9pZBgBIAEoCSIoChVEZWxldGVWYXJpYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJBChhTZXREZWZhdWx0VmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhIKCnZhcmlhbnRfaWQYAiABKAkiPwoZU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKmAQoZTGlzdFJlY29yZFZhcmlhbnRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QinQEKGkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEiQKCHZhcmlhbnRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqoBChxTY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiRAodU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIjkKI0NhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiSwokQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEiMKB3ZlcnNpb24YASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKpAgodTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCgltb2RlbF9rZXkYAyABKAlIAogBARISCgVhZnRlchgEIAEoCUgDiAEBEhMKBmJlZm9yZRgFIAEoCUgEiAEBEhIKBWZpcnN0GAYgASgFSAWIAQESEQoEbGFzdBgHIAEoBUgGiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfbW9kZWxfa2V5QggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoeTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjAKGkdldFNjaGVkdWxlZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiTAobR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEi0KCHNjaGVkdWxlGAEgASgLMhsucmVjb3Jkcy52MS5QdWJsaXNoU2NoZWR1bGUi8gEKGExpc3REcmFmdFZlcnNpb25zUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARISCgVhZnRlchgGIAEoCUgCiAEBEhMKBmJlZm9yZRgHIAEoCUgDiAEBEhIKBWZpcnN0GAggASgFSASIAQESEQoEbGFzdBgJIAEoBUgFiAEBEhgKEGRlZHVwZV9ieV9wYXJlbnQYBSABKAhCDAoKX21vZGVsX2tleUIJCgdfc2VhcmNoQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKcAQoZTGlzdERyYWZ0VmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIyChtCYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QSEwoLdmVyc2lvbl9pZHMYASADKAkiXAocQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSFwoPcHVibGlzaGVkX2NvdW50GAIgASgFIrkBChpCYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKcmVjb3JkX2lkcxgCIAMoCRIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCEIOCgxfY3VzdG9tZXJfaWRCCgoIX2NvbnRleHQiSgobQmF0Y2hSZXNvbHZlUmVjb3Jkc1Jlc3BvbnNlEisKB3JlY29yZHMYASADKAsyGi5yZWNvcmRzLnYxLlJlc29sdmVkUmVjb3JkIs0CCg5SZXNvbHZlZFJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKQoIbWV0YWRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhcKCnZhcmlhbnRfaWQYBiABKAlIAYgBARIRCgloYXNfZHJhZnQYCCABKAgSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX25hdHVyYWxfa2V5Qg0KC192YXJpYW50X2lkIi8KGUxvb2t1cFJlY29yZE1vZGVsc1JlcXVlc3QSEgoKcmVjb3JkX2lkcxgBIAMoCSI4ChBSZWNvcmRNb2RlbEVudHJ5EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkiSwoaTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USLQoHZW50cmllcxgBIAMoCzIcLnJlY29yZHMudjEuUmVjb3JkTW9kZWxFbnRyeSKwAQoTR2xvYmFsU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAEoCRISCgptb2RlbF9rZXlzGAIgAygJEhIKBWFmdGVyGAMgASgJSACIAQESEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFZmlyc3QYBSABKAVIAogBARIRCgRsYXN0GAYgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpEBChBTZWFyY2hSZXN1bHRJdGVtEgoKAmlkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg0KBXNjb3JlGAUgASgBQg4KDF9uYXR1cmFsX2tleSKgAQoUR2xvYmFsU2VhcmNoUmVzcG9uc2USLQoHcmVjb3JkcxgBIAMoCzIcLnJlY29yZHMudjEuU2VhcmNoUmVzdWx0SXRlbRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ioQEKDkVtYmVkZGluZ1N0YXRzEhEKCW1vZGVsX2tleRgBIAEoCRIVCg10b3RhbF9yZWNvcmRzGAIgASgFEhgKEGVtYmVkZGVkX3JlY29yZHMYAyABKAUSFwoPcGVuZGluZ19yZWNvcmRzGAQgASgFEh0KEGxhc3RfZW1iZWRkZWRfYXQYBSABKAlIAIgBAUITChFfbGFzdF9lbWJlZGRlZF9hdCJ1Cg9SZWNvcmRFbWJlZGRpbmcSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRISCgpkaW1lbnNpb25zGAMgASgFEhgKC2VtYmVkZGVkX2F0GAQgASgJSACIAQFCDgoMX2VtYmVkZGVkX2F0IpMBCg1TaW1pbGFyUmVjb3JkEgoKAmlkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhIKCnNpbWlsYXJpdHkYBSABKAFCDgoMX25hdHVyYWxfa2V5IkAKGEdldEVtYmVkZGluZ1N0YXRzUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBAUIMCgpfbW9kZWxfa2V5IkYKGUdldEVtYmVkZGluZ1N0YXRzUmVzcG9uc2USKQoFc3RhdHMYASADKAsyGi5yZWNvcmRzLnYxLkVtYmVkZGluZ1N0YXRzIi8KGkdldFJlY29yZEVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSJOChtHZXRSZWNvcmRFbWJlZGRpbmdzUmVzcG9uc2USLwoKZW1iZWRkaW5ncxgBIAMoCzIbLnJlY29yZHMudjEuUmVjb3JkRW1iZWRkaW5nIswBChlGaW5kU2ltaWxhclJlY29yZHNSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIWCgltb2RlbF9rZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpQBChpGaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRIqCgdyZWNvcmRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyLhAQoWV3JpdGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSDgoGdmVjdG9yGAIgAygCEhIKCmRpbWVuc2lvbnMYAyABKAUSFQoIcHJvdmlkZXIYBCABKAlIAIgBARIXCgptb2RlbF9uYW1lGAUgASgJSAGIAQESEAoDa2V5GAYgASgJSAKIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAOIAQFCCwoJX3Byb3ZpZGVyQg0KC19tb2RlbF9uYW1lQgYKBF9rZXlCDwoNX2NvbnRlbnRfaGFzaCIqChdXcml0ZUVtYmVkZGluZ3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKF0RlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIrChhEZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJnCh9FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSEwoGc291cmNlGAMgASgJSACIAQFCCQoHX3NvdXJjZSI0CiBFbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZRIQCghlbnF1ZXVlZBgBIAEoCCLNAQoXU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QSFAoMcXVlcnlfdmVjdG9yGAEgAygCEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikgEKGFNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZRIqCgdyZXN1bHRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyKJAQoeUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIQCgNrZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQFCBgoEX2tleUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IlUKFk1pc3NpbmdFbWJlZGRpbmdSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhgKC25hdHVyYWxfa2V5GAIgASgJSACIAQFCDgoMX25hdHVyYWxfa2V5IrEBCh9SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1Jlc3BvbnNlEjMKB3JlY29yZHMYASADKAsyIi5yZWNvcmRzLnYxLk1pc3NpbmdFbWJlZGRpbmdSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvIm0KF0VtYmVkZGluZ0RpZ2VzdHNSZXF1ZXN0EhIKCnJlY29yZF9pZHMYASADKAkSEAoDa2V5GAIgASgJSACIAQESFgoJbW9kZWxfa2V5GAMgASgJSAGIAQFCBgoEX2tleUIMCgpfbW9kZWxfa2V5IlAKD0VtYmVkZGluZ0RpZ2VzdBIRCglyZWNvcmRfaWQYASABKAkSGQoMY29udGVudF9oYXNoGAIgASgJSACIAQFCDwoNX2NvbnRlbnRfaGFzaCJIChhFbWJlZGRpbmdEaWdlc3RzUmVzcG9uc2USLAoHZGlnZXN0cxgBIAMoCzIbLnJlY29yZHMudjEuRW1iZWRkaW5nRGlnZXN0Ip8CChNMb29rdXBSZWNvcmRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIYCgtjdXN0b21lcl9pZBgHIAEoCUgCiAEBEjYKEGN1c3RvbWVyX2NvbnRleHQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZUIOCgxfY3VzdG9tZXJfaWRCEwoRX2N1c3RvbWVyX2NvbnRleHQiPAoUTG9va3VwUmVjb3JkUmVzcG9uc2USFgoJcmVjb3JkX2lkGAEgASgJSACIAQFCDAoKX3JlY29yZF9pZCLpAQoeQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIeChFleGNsdWRlX3JlY29yZF9pZBgHIAEoCUgCiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGVCFAoSX2V4Y2x1ZGVfcmVjb3JkX2lkIjQKH0NoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIpcBChRMb29rdXBDb25mbGljdERldGFpbBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSDwoHY2hhbm5lbBgDIAEoCRIXCgp2YXJpYW50X2lkGAQgASgJSACIAQESEwoGbG9jYWxlGAUgASgJSAGIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZSLiAQoaTGlzdExvb2t1cENvbmZsaWN0c1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhgKC2xvb2t1cF9uYW1lGAIgASgJSACIAQESDwoHY2hhbm5lbBgDIAEoCRISCgVmaXJzdBgEIAEoBUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQESEQoEbGFzdBgGIAEoBUgDiAEBEhMKBmJlZm9yZRgHIAEoCUgEiAEBQg4KDF9sb29rdXBfbmFtZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUiowEKG0xpc3RMb29rdXBDb25mbGljdHNSZXNwb25zZRIpCgZncm91cHMYASADKAsyGS5yZWNvcmRzLnYxLkNvbmZsaWN0R3JvdXASDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIpsBCg1Db25mbGljdEdyb3VwEhMKC2VuY29kZWRfa2V5GAEgASgJEg8KB2NoYW5uZWwYAiABKAkSFwoKdmFyaWFudF9pZBgDIAEoCUgAiAEBEhgKC2N1c3RvbWVyX2lkGAQgASgJSAGIAQESEgoKcmVjb3JkX2lkcxgFIAMoCUINCgtfdmFyaWFudF9pZEIOCgxfY3VzdG9tZXJfaWQiLwoaUmVidWlsZE1vZGVsTG9va3Vwc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjUKG1JlYnVpbGRNb2RlbExvb2t1cHNSZXNwb25zZRIWCg5yZWNvcmRzX3dhbGtlZBgBIAEoBSKNAQoiTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVxdWVzdBIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhkKDHJlc291cmNlX2tleRgCIAEoCUgAiAEBEhYKCXJvd19saW1pdBgDIAEoBUgBiAEBQg8KDV9yZXNvdXJjZV9rZXlCDAoKX3Jvd19saW1pdCJZCiNMaXN0U2xvd1F1ZXJ5QWR2aXNvckVudHJpZXNSZXNwb25zZRIyCgdlbnRyaWVzGAEgAygLMiEucmVjb3Jkcy52MS5TbG93UXVlcnlBZHZpc29yRW50cnkiqwEKFVNsb3dRdWVyeUFkdmlzb3JFbnRyeRIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhQKDHJlc291cmNlX2tleRgCIAEoCRISCgpmaWVsZF9wYXRoGAMgASgJEhAKCG9wZXJhdG9yGAQgASgJEg0KBWNvdW50GAUgASgDEjAKDGxhc3Rfc2Vlbl9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiNwoeU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnlSZXF1ZXN0EhUKDXJlc291cmNlX3R5cGUYASABKAkiYQofU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnlSZXNwb25zZRI+CglyZXNvdXJjZXMYASADKAsyKy5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JSZXNvdXJjZVN1bW1hcnkiYAofU2xvd1F1ZXJ5QWR2aXNvclJlc291cmNlU3VtbWFyeRIUCgxyZXNvdXJjZV9rZXkYASABKAkSEwoLZW50cnlfY291bnQYAiABKAUSEgoKdG90YWxfaGl0cxgDIAEoAyKMAQohQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXF1ZXN0EhUKDXJlc291cmNlX3R5cGUYASABKAkSGQoMcmVzb3VyY2Vfa2V5GAIgASgJSACIAQESEgoKZmllbGRfcGF0aBgDIAEoCRIQCghvcGVyYXRvchgEIAEoCUIPCg1fcmVzb3VyY2Vfa2V5IiQKIkNsZWFyU2xvd1F1ZXJ5QWR2aXNvckVudHJ5UmVzcG9uc2UqcwoKUmVjb3JkVHlwZRIbChdSRUNPUkRfVFlQRV9VTlNQRUNJRklFRBAAEhYKElJFQ09SRF9UWVBFX1JFQ09SRBABEhcKE1JFQ09SRF9UWVBFX1ZBUklBTlQQAhIXChNSRUNPUkRfVFlQRV9WRVJTSU9OEAMqnQEKEkJhdGNoT3BlcmF0aW9uVHlwZRIkCiBCQVRDSF9PUEVSQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX0NSRUFURRABEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX1VQREFURRACEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX0RFTEVURRADMpImCg5SZWNvcmRzU2VydmljZRJRCgxDcmVhdGVSZWNvcmQSHy5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlc3BvbnNlEkgKCUdldFJlY29yZBIcLnJlY29yZHMudjEuR2V0UmVjb3JkUmVxdWVzdBodLnJlY29yZHMudjEuR2V0UmVjb3JkUmVzcG9uc2USVwoOR2V0UmVjb3JkQnlLZXkSIS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVxdWVzdBoiLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlSZXNwb25zZRJjChJHZXRSZWNvcmRCeUtleU9ySWQSJS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QaJi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEk4KC0xpc3RSZWNvcmRzEh4ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1JlcXVlc3QaHy5yZWNvcmRzLnYxLkxpc3RSZWNvcmRzUmVzcG9uc2USUQoMVXBkYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXNwb25zZRJXCg5BdXRvU2F2ZVJlY29yZBIhLnJlY29yZHMudjEuQXV0b1NhdmVSZWNvcmRSZXF1ZXN0GiIucmVjb3Jkcy52MS5BdXRvU2F2ZVJlY29yZFJlc3BvbnNlElEKDFVwc2VydFJlY29yZBIfLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVzcG9uc2USUQoMRGVsZXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXNwb25zZRJsChVCYXRjaFJlY29yZE9wZXJhdGlvbnMSKC5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QaKS5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1Jlc3BvbnNlEmAKEUJ1bGtVcGRhdGVSZWNvcmRzEiQucmVjb3Jkcy52MS5CdWxrVXBkYXRlUmVjb3Jkc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkJ1bGtVcGRhdGVSZWNvcmRzUmVzcG9uc2USbwoWQmFja2ZpbGxRdWVyeWFibGVJbmRleBIpLnJlY29yZHMudjEuQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QaKi5yZWNvcmRzLnYxLkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRJpChRCYWNrZmlsbE1vZGVsSW5kZXhlcxInLnJlY29yZHMudjEuQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0GigucmVjb3Jkcy52MS5CYWNrZmlsbE1vZGVsSW5kZXhlc1Jlc3BvbnNlEn4KG0xpc3RTbG93UXVlcnlBZHZpc29yRW50cmllcxIuLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVxdWVzdBovLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVzcG9uc2UScgoXU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnkSKi5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVxdWVzdBorLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnlSZXNwb25zZRJ7ChpDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeRItLnJlY29yZHMudjEuQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXF1ZXN0Gi4ucmVjb3Jkcy52MS5DbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlc3BvbnNlEloKD0R1cGxpY2F0ZVJlY29yZBIiLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USaQoURHVwbGljYXRlUmVjb3Jkc0J1bGsSJy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBooLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRJXCg5QdWJsaXNoVmVyc2lvbhIhLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXF1ZXN0GiIucmVjb3Jkcy52MS5QdWJsaXNoVmVyc2lvblJlc3BvbnNlEloKD1VucHVibGlzaFJlY29yZBIiLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVzcG9uc2USWgoPUmV2ZXJ0VG9WZXJzaW9uEiIucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXF1ZXN0GiMucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXNwb25zZRJjChJMaXN0UmVjb3JkVmVyc2lvbnMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1Jlc3BvbnNlElQKDUNyZWF0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkNyZWF0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVzcG9uc2USVAoNVXBkYXRlVmFyaWFudBIgLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlcXVlc3QaIS5yZWNvcmRzLnYxLlVwZGF0ZVZhcmlhbnRSZXNwb25zZRJUCg1EZWxldGVWYXJpYW50EiAucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuRGVsZXRlVmFyaWFudFJlc3BvbnNlEmAKEVNldERlZmF1bHRWYXJpYW50EiQucmVjb3Jkcy52MS5TZXREZWZhdWx0VmFyaWFudFJlcXVlc3QaJS5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVzcG9uc2USYwoSTGlzdFJlY29yZFZhcmlhbnRzEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXNwb25zZRJsChVTY2hlZHVsZVJlY29yZFB1Ymxpc2gSKC5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QaKS5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlc3BvbnNlEoEBChxDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoEi8ucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVxdWVzdBowLnJlY29yZHMudjEuQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEm8KFkxpc3RTY2hlZHVsZWRQdWJsaXNoZXMSKS5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXF1ZXN0GioucmVjb3Jkcy52MS5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USZgoTR2V0U2NoZWR1bGVkUHVibGlzaBImLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QaJy5yZWNvcmRzLnYxLkdldFNjaGVkdWxlZFB1Ymxpc2hSZXNwb25zZRJgChFMaXN0RHJhZnRWZXJzaW9ucxIkLnJlY29yZHMudjEuTGlzdERyYWZ0VmVyc2lvbnNSZXF1ZXN0GiUucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEmkKFEJhdGNoUHVibGlzaFZlcnNpb25zEicucmVjb3Jkcy52MS5CYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QaKC5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVzcG9uc2USZgoTQmF0Y2hSZXNvbHZlUmVjb3JkcxImLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1JlcXVlc3QaJy5yZWNvcmRzLnYxLkJhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRJjChJMb29rdXBSZWNvcmRNb2RlbHMSJS5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZE1vZGVsc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZE1vZGVsc1Jlc3BvbnNlElEKDEdsb2JhbFNlYXJjaBIfLnJlY29yZHMudjEuR2xvYmFsU2VhcmNoUmVxdWVzdBogLnJlY29yZHMudjEuR2xvYmFsU2VhcmNoUmVzcG9uc2USUQoMTG9va3VwUmVjb3JkEh8ucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRSZXNwb25zZRJyChdDaGVja0xvb2t1cEF2YWlsYWJpbGl0eRIqLnJlY29yZHMudjEuQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXF1ZXN0GisucmVjb3Jkcy52MS5DaGVja0xvb2t1cEF2YWlsYWJpbGl0eVJlc3BvbnNlEmYKE0xpc3RMb29rdXBDb25mbGljdHMSJi5yZWNvcmRzLnYxLkxpc3RMb29rdXBDb25mbGljdHNSZXF1ZXN0GicucmVjb3Jkcy52MS5MaXN0TG9va3VwQ29uZmxpY3RzUmVzcG9uc2USZgoTUmVidWlsZE1vZGVsTG9va3VwcxImLnJlY29yZHMudjEuUmVidWlsZE1vZGVsTG9va3Vwc1JlcXVlc3QaJy5yZWNvcmRzLnYxLlJlYnVpbGRNb2RlbExvb2t1cHNSZXNwb25zZRJgChFHZXRFbWJlZGRpbmdTdGF0cxIkLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0GiUucmVjb3Jkcy52MS5HZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEmYKE0dldFJlY29yZEVtYmVkZGluZ3MSJi5yZWNvcmRzLnYxLkdldFJlY29yZEVtYmVkZGluZ3NSZXF1ZXN0GicucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVzcG9uc2USYwoSRmluZFNpbWlsYXJSZWNvcmRzEiUucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRJaCg9Xcml0ZUVtYmVkZGluZ3MSIi5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1JlcXVlc3QaIy5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEERlbGV0ZUVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLkRlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USXQoQU2VhcmNoRW1iZWRkaW5ncxIjLnJlY29yZHMudjEuU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QaJC5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZRJyChdSZWNvcmRzTWlzc2luZ0VtYmVkZGluZxIqLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXF1ZXN0GisucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1Jlc3BvbnNlEl0KEEVtYmVkZGluZ0RpZ2VzdHMSIy5yZWNvcmRzLnYxLkVtYmVkZGluZ0RpZ2VzdHNSZXF1ZXN0GiQucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3RzUmVzcG9uc2USdQoYRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nEisucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXF1ZXN0GiwucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZUI7WjlnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vcmVjb3Jkcy92MTtyZWNvcmRzdjFiBnByb3RvMw", [file_google_protobuf_struct3, file_google_protobuf_timestamp4, file_common_v1_pagination, file_expressions_v1_expressions]);
|
|
627
659
|
var RecordSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 0);
|
|
660
|
+
var SortFieldSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 2);
|
|
628
661
|
var BatchOperationSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 3);
|
|
629
662
|
var CreateRecordRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 5);
|
|
630
663
|
var GetRecordRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 7);
|
|
@@ -660,6 +693,11 @@ var FindSimilarRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_
|
|
|
660
693
|
var WriteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 83);
|
|
661
694
|
var DeleteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 85);
|
|
662
695
|
var SearchEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 89);
|
|
696
|
+
var CheckLookupAvailabilityRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 99);
|
|
697
|
+
var ListLookupConflictsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 102);
|
|
698
|
+
var RebuildModelLookupsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 105);
|
|
699
|
+
var ListSlowQueryAdvisorEntriesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 107);
|
|
700
|
+
var ClearSlowQueryAdvisorEntryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 113);
|
|
663
701
|
var RecordsService = /* @__PURE__ */ serviceDesc3(file_records_v1_records, 0);
|
|
664
702
|
|
|
665
703
|
// ../../packages/proto-ts/src/realtime/v1/realtime_pb.js
|
|
@@ -673,18 +711,18 @@ var RealtimeService = /* @__PURE__ */ serviceDesc4(file_realtime_v1_realtime, 0)
|
|
|
673
711
|
// ../../packages/proto-ts/src/configs/v1/configs_pb.js
|
|
674
712
|
import { enumDesc as enumDesc6, fileDesc as fileDesc9, messageDesc as messageDesc9, serviceDesc as serviceDesc5, tsEnum as tsEnum6 } from "@bufbuild/protobuf/codegenv2";
|
|
675
713
|
import { file_google_protobuf_struct as file_google_protobuf_struct4, file_google_protobuf_timestamp as file_google_protobuf_timestamp5 } from "@bufbuild/protobuf/wkt";
|
|
676
|
-
var file_configs_v1_configs = /* @__PURE__ */ fileDesc9("
|
|
714
|
+
var file_configs_v1_configs = /* @__PURE__ */ fileDesc9("Chhjb25maWdzL3YxL2NvbmZpZ3MucHJvdG8SCmNvbmZpZ3MudjEivwcKBkNvbmZpZxIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLY29uZmlnX3R5cGUYAyABKAkSLgoJZGlyZWN0aW9uGAQgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgFIAEoCRIYCgtkZXNjcmlwdGlvbhgGIAEoCUgAiAEBEh4KEWNvbm5lY3Rpb25fZG9tYWluGAogASgJSAGIAQESGgoNY29ubmVjdGlvbl9pZBgLIAEoCUgCiAEBEg8KB2VuYWJsZWQYFCABKAgSEwoLZW52aXJvbm1lbnQYFSABKAkSEwoLc3luY19zdGF0dXMYFiABKAkSMwoNc3luY19tZXRhZGF0YRgXIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIxCgtjcmVkZW50aWFscxgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVvYXV0aBgfIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghmZWF0dXJlcxggIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIuCgh3ZWJob29rcxghIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIsCgZjb25maWcYIiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYIyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESEQoJdGVuYW50X2lkGCggASgJEhIKCnByb2plY3RfaWQYKSABKAkSFwoKY3JlYXRlZF9ieRgtIAEoCUgKiAEBEhcKCnVwZGF0ZWRfYnkYLiABKAlIC4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFAoSX2Nvbm5lY3Rpb25fZG9tYWluQhAKDl9jb25uZWN0aW9uX2lkQhAKDl9zeW5jX21ldGFkYXRhQg4KDF9jcmVkZW50aWFsc0IICgZfb2F1dGhCCwoJX2ZlYXR1cmVzQgsKCV93ZWJob29rc0IJCgdfY29uZmlnQggKBl9ob29rc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSIeChBHZXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldENvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiQKFUdldENvbmZpZ0J5S2V5UmVxdWVzdBILCgNrZXkYASABKAkiPAoWR2V0Q29uZmlnQnlLZXlSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZyLDAQoSTGlzdENvbmZpZ3NSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKVAQoTTGlzdENvbmZpZ3NSZXNwb25zZRIjCgdjb25maWdzGAEgAygLMhIuY29uZmlncy52MS5Db25maWcSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIuwBChJDb25maWdIaXN0b3J5RW50cnkSCgoCaWQYASABKAkSFgoJY29uZmlnX2lkGAIgASgJSACIAQESEgoKY29uZmlnX2tleRgDIAEoCRItCglwdXNoZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXB1c2hlZF9ieRgFIAEoCRIOCgZzb3VyY2UYBiABKAkSCgoCb2sYByABKAgSFgoOcmVzdWx0X3N1bW1hcnkYCCABKAkSGgoSZGlmZl9mcm9tX3ByZXZpb3VzGAkgASgJQgwKCl9jb25maWdfaWQiaQoYTGlzdENvbmZpZ0hpc3RvcnlSZXF1ZXN0EhEKCWNvbmZpZ19pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQFCCAoGX2FmdGVyQggKBl9maXJzdCKHAQoZTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4uY29uZmlncy52MS5Db25maWdIaXN0b3J5RW50cnkSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQFCDAoKX3BhZ2VfaW5mbyL6AQoTQ3JlYXRlQ29uZmlnUmVxdWVzdBILCgNrZXkYASABKAkSEwoLY29uZmlnX3R5cGUYAiABKAkSLgoJZGlyZWN0aW9uGAMgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgEIAEoCRIYCgtkZXNjcmlwdGlvbhgFIAEoCUgAiAEBEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAcgASgISAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19jb25maWdCCgoIX2VuYWJsZWQiOgoUQ3JlYXRlQ29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcitgIKE1VwZGF0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLAoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhQKB2VuYWJsZWQYBSABKAhIA4gBARIuCgh3ZWJob29rcxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVob29rcxgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEILCglfd2ViaG9va3NCCAoGX2hvb2tzIjoKFFVwZGF0ZUNvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiEKE0RlbGV0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlQ29uZmlnUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCItChhUcmlnZ2VyQ29uZmlnU3luY1JlcXVlc3QSEQoJY29uZmlnX2lkGAEgASgJIiwKGVRyaWdnZXJDb25maWdTeW5jUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJWChJBcHBseUNvbmZpZ1JlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi1wEKE0FwcGx5Q29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcSLwoHc3VtbWFyeRgCIAEoCzIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdTdW1tYXJ5EjsKFHByb3Zpc2lvbmVkX2FwaV9rZXlzGAMgAygLMh0uY29uZmlncy52MS5Qcm92aXNpb25lZEFwaUtleRIbCg53ZWJob29rX3NlY3JldBgEIAEoCUgAiAEBQhEKD193ZWJob29rX3NlY3JldCJVChFQcm92aXNpb25lZEFwaUtleRIMCgRuYW1lGAEgASgJEhAKCGtleV90eXBlGAIgASgJEg8KB2Vudl92YXIYAyABKAkSDwoHcmF3X2tleRgEIAEoCSLvAgoSQXBwbHlDb25maWdTdW1tYXJ5EhYKDm1vZGVsc19jcmVhdGVkGAEgASgFEhYKDm1vZGVsc191cGRhdGVkGAIgASgFEhoKEm9wZXJhdGlvbnNfY3JlYXRlZBgDIAEoBRIaChJvcGVyYXRpb25zX3VwZGF0ZWQYBCABKAUSFQoNaG9va3NfY3JlYXRlZBgFIAEoBRIVCg1ob29rc191cGRhdGVkGAYgASgFEhgKEHNlZ21lbnRzX2NyZWF0ZWQYByABKAUSGAoQc2VnbWVudHNfdXBkYXRlZBgIIAEoBRIZChFzY2hlZHVsZXNfY3JlYXRlZBgJIAEoBRIZChFzY2hlZHVsZXNfdXBkYXRlZBgKIAEoBRIeChZhdXRoX3Byb3ZpZGVyc19jcmVhdGVkGAsgASgFEh4KFmF1dGhfcHJvdmlkZXJzX3VwZGF0ZWQYDCABKAUSGQoRcmVzb3VyY2VzX2RlbGV0ZWQYDSABKAUiQQocV3JpdGVDb25maWdDcmVkZW50aWFsUmVxdWVzdBISCgpjb25maWdfa2V5GAEgASgJEg0KBXZhbHVlGAIgASgMIm8KHVdyaXRlQ29uZmlnQ3JlZGVudGlhbFJlc3BvbnNlEhkKEWVuY3J5cHRpb25fa2V5X2lkGAEgASgJEjMKD2xhc3Rfd3JpdHRlbl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAqjgEKD0NvbmZpZ0RpcmVjdGlvbhIgChxDT05GSUdfRElSRUNUSU9OX1VOU1BFQ0lGSUVEEAASGQoVQ09ORklHX0RJUkVDVElPTl9SRUFEEAESGgoWQ09ORklHX0RJUkVDVElPTl9XUklURRACEiIKHkNPTkZJR19ESVJFQ1RJT05fQklESVJFQ1RJT05BTBADMv4GCg5Db25maWdzU2VydmljZRJICglHZXRDb25maWcSHC5jb25maWdzLnYxLkdldENvbmZpZ1JlcXVlc3QaHS5jb25maWdzLnYxLkdldENvbmZpZ1Jlc3BvbnNlElcKDkdldENvbmZpZ0J5S2V5EiEuY29uZmlncy52MS5HZXRDb25maWdCeUtleVJlcXVlc3QaIi5jb25maWdzLnYxLkdldENvbmZpZ0J5S2V5UmVzcG9uc2USTgoLTGlzdENvbmZpZ3MSHi5jb25maWdzLnYxLkxpc3RDb25maWdzUmVxdWVzdBofLmNvbmZpZ3MudjEuTGlzdENvbmZpZ3NSZXNwb25zZRJgChFMaXN0Q29uZmlnSGlzdG9yeRIkLmNvbmZpZ3MudjEuTGlzdENvbmZpZ0hpc3RvcnlSZXF1ZXN0GiUuY29uZmlncy52MS5MaXN0Q29uZmlnSGlzdG9yeVJlc3BvbnNlElEKDENyZWF0ZUNvbmZpZxIfLmNvbmZpZ3MudjEuQ3JlYXRlQ29uZmlnUmVxdWVzdBogLmNvbmZpZ3MudjEuQ3JlYXRlQ29uZmlnUmVzcG9uc2USUQoMVXBkYXRlQ29uZmlnEh8uY29uZmlncy52MS5VcGRhdGVDb25maWdSZXF1ZXN0GiAuY29uZmlncy52MS5VcGRhdGVDb25maWdSZXNwb25zZRJRCgxEZWxldGVDb25maWcSHy5jb25maWdzLnYxLkRlbGV0ZUNvbmZpZ1JlcXVlc3QaIC5jb25maWdzLnYxLkRlbGV0ZUNvbmZpZ1Jlc3BvbnNlEmAKEVRyaWdnZXJDb25maWdTeW5jEiQuY29uZmlncy52MS5UcmlnZ2VyQ29uZmlnU3luY1JlcXVlc3QaJS5jb25maWdzLnYxLlRyaWdnZXJDb25maWdTeW5jUmVzcG9uc2USTgoLQXBwbHlDb25maWcSHi5jb25maWdzLnYxLkFwcGx5Q29uZmlnUmVxdWVzdBofLmNvbmZpZ3MudjEuQXBwbHlDb25maWdSZXNwb25zZRJsChVXcml0ZUNvbmZpZ0NyZWRlbnRpYWwSKC5jb25maWdzLnYxLldyaXRlQ29uZmlnQ3JlZGVudGlhbFJlcXVlc3QaKS5jb25maWdzLnYxLldyaXRlQ29uZmlnQ3JlZGVudGlhbFJlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb25maWdzL3YxO2NvbmZpZ3N2MWIGcHJvdG8z", [file_google_protobuf_struct4, file_google_protobuf_timestamp5, file_common_v1_pagination]);
|
|
677
715
|
var ConfigSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 0);
|
|
678
|
-
var
|
|
679
|
-
var
|
|
680
|
-
var
|
|
681
|
-
var
|
|
682
|
-
var CreateConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs,
|
|
683
|
-
var UpdateConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs,
|
|
684
|
-
var DeleteConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs,
|
|
685
|
-
var TriggerConfigSyncRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs,
|
|
686
|
-
var ApplyConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs,
|
|
687
|
-
var WriteConfigCredentialRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs,
|
|
716
|
+
var GetConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 1);
|
|
717
|
+
var GetConfigByKeyRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 3);
|
|
718
|
+
var ListConfigsRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 5);
|
|
719
|
+
var ListConfigHistoryRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 8);
|
|
720
|
+
var CreateConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 10);
|
|
721
|
+
var UpdateConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 12);
|
|
722
|
+
var DeleteConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 14);
|
|
723
|
+
var TriggerConfigSyncRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 16);
|
|
724
|
+
var ApplyConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 18);
|
|
725
|
+
var WriteConfigCredentialRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 22);
|
|
688
726
|
var ConfigDirectionSchema = /* @__PURE__ */ enumDesc6(file_configs_v1_configs, 0);
|
|
689
727
|
var ConfigDirection = /* @__PURE__ */ tsEnum6(ConfigDirectionSchema);
|
|
690
728
|
var ConfigsService = /* @__PURE__ */ serviceDesc5(file_configs_v1_configs, 0);
|
|
@@ -713,7 +751,7 @@ var SegmentsService = /* @__PURE__ */ serviceDesc6(file_segments_v1_segments, 0)
|
|
|
713
751
|
// ../../packages/proto-ts/src/settings/v1/settings_pb.js
|
|
714
752
|
import { enumDesc as enumDesc7, fileDesc as fileDesc11, messageDesc as messageDesc11, serviceDesc as serviceDesc7, tsEnum as tsEnum7 } from "@bufbuild/protobuf/codegenv2";
|
|
715
753
|
import { file_google_protobuf_struct as file_google_protobuf_struct6, file_google_protobuf_timestamp as file_google_protobuf_timestamp7 } from "@bufbuild/protobuf/wkt";
|
|
716
|
-
var file_settings_v1_settings = /* @__PURE__ */ fileDesc11("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiggMKB1NldHRpbmcSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhAKCGNhdGVnb3J5GAMgASgJEisKBXZhbHVlGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDGRpc3BsYXlfbmFtZRgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESEQoJZGF0YV90eXBlGAcgASgJEhEKCWlzX3B1YmxpYxgIIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl92YWx1ZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfcHJvamVjdF9pZCKrBAoIQXVkaXRMb2cSCgoCaWQYASABKAkSLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgd1c2VyX2lkGAMgASgJSACIAQESFgoJdGVuYW50X2lkGAQgASgJSAGIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgCiAEBEg4KBmFjdGlvbhgGIAEoCRIVCg1yZXNvdXJjZV90eXBlGAcgASgJEhgKC3Jlc291cmNlX2lkGAggASgJSAOIAQESLAoGYmVmb3JlGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEisKBWFmdGVyGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEhcKCmlwX2FkZHJlc3MYDCABKAlIB4gBARIXCgp1c2VyX2FnZW50GA0gASgJSAiIAQESFwoKcmVxdWVzdF9pZBgOIAEoCUgJiAEBQgoKCF91c2VyX2lkQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDgoMX3Jlc291cmNlX2lkQgkKB19iZWZvcmVCCAoGX2FmdGVyQgsKCV9tZXRhZGF0YUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudEINCgtfcmVxdWVzdF9pZCKdBQoETm90ZRIKCgJpZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCRIRCgllbnRpdHlfaWQYAyABKAkSHwoSZW50aXR5X25hdHVyYWxfa2V5GAQgASgJSACIAQESFwoKdmVyc2lvbl9pZBgFIAEoCUgBiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgCiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAOIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIBIgBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIVChNfZW50aXR5X25hdHVyYWxfa2V5Qg0KC192ZXJzaW9uX2lkQhUKE19jb250ZW50X3BsYWluX3RleHRCEQoPX3BhcmVudF9ub3RlX2lkQhEKD190aHJlYWRfcm9vdF9pZEIOCgxfcmVzb2x2ZWRfYXRCDgoMX3Jlc29sdmVkX2J5QgsKCV9tZXRhZGF0YUINCgtfcHJvamVjdF9pZCLkBQoFU2hhcmUSCgoCaWQYASABKAkSNQoNcmVzb3VyY2VfdHlwZRgCIAEoDjIeLnNldHRpbmdzLnYxLlNoYXJlUmVzb3VyY2VUeXBlEhYKCXJlY29yZF9pZBgDIAEoCUgAiAEBEhQKB2ZpbGVfaWQYBCABKAlIAYgBARIWCgltb2RlbF9rZXkYBSABKAlIAogBARIfChdzaGFyZWRfd2l0aF9jdXN0b21lcl9pZBgGIAEoCRIwCgpwZXJtaXNzaW9uGAcgASgOMhwuc2V0dGluZ3MudjEuU2hhcmVQZXJtaXNzaW9uEiAKE3Byb2ZpbGVfY3VzdG9tZXJfaWQYCCABKAlIA4gBARIoCgZzdGF0dXMYCiABKA4yGC5zZXR0aW5ncy52MS5TaGFyZVN0YXR1cxI0CgthY2NlcHRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIzCgpleHBpcmVzX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIBogBARIXCgpyZXZva2VkX2J5GB8gASgJSAeIAQESMwoKcmV2b2tlZF9hdBggIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBICIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIMCgpfcmVjb3JkX2lkQgoKCF9maWxlX2lkQgwKCl9tb2RlbF9rZXlCFgoUX3Byb2ZpbGVfY3VzdG9tZXJfaWRCDgoMX2FjY2VwdGVkX2F0Qg0KC19leHBpcmVzX2F0Qg0KC19jcmVhdGVkX2J5Qg0KC19yZXZva2VkX2J5Qg0KC19yZXZva2VkX2F0IlIKEkdldFNldHRpbmdzUmVxdWVzdBIVCghjYXRlZ29yeRgBIAEoCUgAiAEBEhAKA2tleRgCIAEoCUgBiAEBQgsKCV9jYXRlZ29yeUIGCgRfa2V5Ij0KE0dldFNldHRpbmdzUmVzcG9uc2USJgoIc2V0dGluZ3MYASADKAsyFC5zZXR0aW5ncy52MS5TZXR0aW5nIksKFFVwZGF0ZVNldHRpbmdSZXF1ZXN0EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPgoVVXBkYXRlU2V0dGluZ1Jlc3BvbnNlEiUKB3NldHRpbmcYASABKAsyFC5zZXR0aW5ncy52MS5TZXR0aW5nIsUBChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilwEKFUxpc3RBdWRpdExvZ3NSZXNwb25zZRIjCgRsb2dzGAEgAygLMhUuc2V0dGluZ3MudjEuQXVkaXRMb2cSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIpUBChFDcmVhdGVOb3RlUmVxdWVzdBITCgtlbnRpdHlfdHlwZRgBIAEoCRIRCgllbnRpdHlfaWQYAiABKAkSKAoHY29udGVudBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGwoOcGFyZW50X25vdGVfaWQYBCABKAlIAIgBAUIRCg9fcGFyZW50X25vdGVfaWQiNQoSQ3JlYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIhwKDkdldE5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjIKD0dldE5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSLBAQoQTGlzdE5vdGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgEIAEoCUgBiAEBEhMKBmJlZm9yZRgFIAEoCUgCiAEBEhIKBWZpcnN0GAYgASgFSAOIAQESEQoEbGFzdBgHIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikAEKEUxpc3ROb3Rlc1Jlc3BvbnNlEiAKBW5vdGVzGAEgAygLMhEuc2V0dGluZ3MudjEuTm90ZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ihAEKEVVwZGF0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJEi0KB2NvbnRlbnQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESGAoLaXNfcmVzb2x2ZWQYAyABKAhIAYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWQiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkItoBChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUixgEKFUxpc3RNeU1lbnRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QizwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cxIrCglwYWdlX2luZm8YBCABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAUgAygJQgwKCl9wYWdlX2luZm8ioAEKGlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhsKDmNvbXBsZXRlZF9ub3RlGAMgASgJSACIAQESGwoOZGlzbWlzc19yZWFzb24YBCABKAlIAYgBAUIRCg9fY29tcGxldGVkX25vdGVCEQoPX2Rpc21pc3NfcmVhc29uIkgKG1VwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24ilAIKEkNyZWF0ZVNoYXJlUmVxdWVzdBI1Cg1yZXNvdXJjZV90eXBlGAEgASgOMh4uc2V0dGluZ3MudjEuU2hhcmVSZXNvdXJjZVR5cGUSFgoJcmVjb3JkX2lkGAIgASgJSACIAQESFAoHZmlsZV9pZBgDIAEoCUgBiAEBEhMKC2N1c3RvbWVyX2lkGAQgASgJEjAKCnBlcm1pc3Npb24YBSABKA4yHC5zZXR0aW5ncy52MS5TaGFyZVBlcm1pc3Npb24SIAoTcHJvZmlsZV9jdXN0b21lcl9pZBgGIAEoCUgCiAEBQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWRCFgoUX3Byb2ZpbGVfY3VzdG9tZXJfaWQiOAoTQ3JlYXRlU2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIh0KD0dldFNoYXJlUmVxdWVzdBIKCgJpZBgBIAEoCSI1ChBHZXRTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUiwgEKEUxpc3RTaGFyZXNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAQgASgJSAGIAQESEwoGYmVmb3JlGAUgASgJSAKIAQESEgoFZmlyc3QYBiABKAVIA4gBARIRCgRsYXN0GAcgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKTAQoSTGlzdFNoYXJlc1Jlc3BvbnNlEiIKBnNoYXJlcxgBIAMoCzISLnNldHRpbmdzLnYxLlNoYXJlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKgAQoSVXBkYXRlU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJEjUKCnBlcm1pc3Npb24YAiABKA4yHC5zZXR0aW5ncy52MS5TaGFyZVBlcm1pc3Npb25IAIgBARItCgZzdGF0dXMYAyABKA4yGC5zZXR0aW5ncy52MS5TaGFyZVN0YXR1c0gBiAEBQg0KC19wZXJtaXNzaW9uQgkKB19zdGF0dXMiOAoTVXBkYXRlU2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIiAKElJldm9rZVNoYXJlUmVxdWVzdBIKCgJpZBgBIAEoCSImChNSZXZva2VTaGFyZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIAoSQWNjZXB0U2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIjgKE0FjY2VwdFNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSIhChNEZWNsaW5lU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIjkKFERlY2xpbmVTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUivwMKBkxvY2FsZRIKCgJpZBgBIAEoCRIOCgZsb2NhbGUYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhgKC25hdGl2ZV9uYW1lGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIRCglpc19hY3RpdmUYBiABKAgSDgoGaXNfcnRsGAcgASgIEhwKD2ZhbGxiYWNrX2xvY2FsZRgIIAEoCUgBiAEBEhkKEWZhbGxiYWNrX3ByaW9yaXR5GAkgASgFEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIAogBARIXCgp1cGRhdGVkX2J5GB8gASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX25hdGl2ZV9uYW1lQhIKEF9mYWxsYmFja19sb2NhbGVCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnkiwwEKEkxpc3RMb2NhbGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilgEKE0xpc3RMb2NhbGVzUmVzcG9uc2USJAoHbG9jYWxlcxgBIAMoCzITLnNldHRpbmdzLnYxLkxvY2FsZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyKTAQoZTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKYAQoaTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5SZWNlbnRseU9wZW5lZEl0ZW0SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgizwUKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJIrYBChxMaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirQEKHUxpc3RDb250ZXh0RGltZW5zaW9uc1Jlc3BvbnNlEjEKCmRpbWVuc2lvbnMYASADKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIoChpHZXRDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJPChtHZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLLAQodQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgEIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAUgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgGIAEoCUgBiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlIKHkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIv8BCh1VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIdChBzb3VyY2VfbW9kZWxfa2V5GAQgASgJSAKIAQESHwoSZGVmYXVsdF9yZWNvcmRfa2V5GAUgASgJSAOIAQESFAoHcHVibGlzaBgGIAEoCEgEiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5QgoKCF9wdWJsaXNoIlIKHlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIisKHURlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjEKHkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIItEBCiBHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVxdWVzdBIVCg1kaW1lbnNpb25fa2V5GAEgASgJEhMKBnNlYXJjaBgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QisgEKIUdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXNwb25zZRIyCgZ2YWx1ZXMYASADKAsyIi5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmFsdWUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqICChRDdXN0b21lclByb2ZpbGVGaWVsZBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEdHlwZRgDIAEoCRINCgVsYWJlbBgEIAEoCRIQCghyZXF1aXJlZBgFIAEoCBIWCgloZWxwX3RleHQYBiABKAlIAIgBARIYCgtwbGFjZWhvbGRlchgHIAEoCUgBiAEBEiwKBmNvbmZpZxgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARImCgZhY2Nlc3MYCSABKAsyFi5jb21tb24udjEuRmllbGRBY2Nlc3MSEQoJcXVlcnlhYmxlGAogASgIQgwKCl9oZWxwX3RleHRCDgoMX3BsYWNlaG9sZGVyQgkKB19jb25maWcigQEKFUN1c3RvbWVyUHJvZmlsZUxvb2t1cBIOCgZrZXlfYnkYASADKAkSEQoEbmFtZRgCIAEoCUgAiAEBEjwKCGF1ZGllbmNlGAMgASgOMiouc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlTG9va3VwQXVkaWVuY2VCBwoFX25hbWUixwMKFUN1c3RvbWVyUHJvZmlsZVNjaGVtYRIKCgJpZBgBIAEoCRIxCgZmaWVsZHMYAiADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAMgAygJEg8KB3ZlcnNpb24YBCABKAUSMwoHbG9va3VwcxgFIAMoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZUxvb2t1cBIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIhCh9HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0IlYKIEdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSLyAwoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSGAoLZmFsbGJhY2tfaWQYCiABKAlIAogBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAOIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkISChBfdGFyZ2V0aW5nX3J1bGVzQg4KDF9mYWxsYmFja19pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSLKAQoZTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiqgEKGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKGUdldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiQwoaR2V0Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiXAocQ3JlYXRlQ3VzdG9tZXJQcm9maWxlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRInCgZjcmVhdGUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkYKHUNyZWF0ZUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEiUKBGRhdGEYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IlwKHFVwZGF0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSJwoGdXBkYXRlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJGCh1VcGRhdGVDdXN0b21lclByb2ZpbGVSZXNwb25zZRIlCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKjAQoiVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBIxCgZmaWVsZHMYASADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAIgAygJEjMKB2xvb2t1cHMYAyADKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVMb29rdXAiWQojVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2USMgoGc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hIkUKHExvb2t1cEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLbG9va3VwX25hbWUYASABKAkSEAoIa2V5X2hhc2gYAiABKAwiSQodTG9va3VwQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBAUIOCgxfY3VzdG9tZXJfaWQiUwoVQ3VzdG9tZXJQcm9maWxlUmVzdWx0EhMKC2N1c3RvbWVyX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IjgKE0N1c3RvbWVyUHJvZmlsZVNvcnQSDQoFZmllbGQYASABKAkSEgoKZGVzY2VuZGluZxgCIAEoCCKCAgodU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1JlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIyCghvcmRlcl9ieRgGIAMoCzIgLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNvcnRCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKwAQoeU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1Jlc3BvbnNlEjMKB3Jlc3VsdHMYASADKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVSZXN1bHQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjMKHERlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiMAodRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI9CiZHZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJZChNSZXNvbHV0aW9uQXR0cmlidXRlEgsKA2tleRgBIAEoCRI1CgZ2YWx1ZXMYAiADKAsyJS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQXR0cmlidXRlVmFsdWUigAEKGFJlc29sdXRpb25BdHRyaWJ1dGVWYWx1ZRINCgV2YWx1ZRgBIAEoCRINCgVjb3VudBgCIAEoBRI1CgxsYXN0X3NlZW5fYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX2xhc3Rfc2Vlbl9hdCKMAgonR2V0Q3VzdG9tZXJSZXNvbHV0aW9uQXR0cmlidXRlc1Jlc3BvbnNlEhkKEXRvdGFsX3Jlc29sdXRpb25zGAEgASgFEjQKCmF0dHJpYnV0ZXMYAiADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQXR0cmlidXRlEjYKDWZpcnN0X3NlZW5fYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESNQoMbGFzdF9zZWVuX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhAKDl9maXJzdF9zZWVuX2F0Qg8KDV9sYXN0X3NlZW5fYXQiLAoXR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIsACChVFZGl0b3JDb25maWdQbGFjZW1lbnQSEQoJY29uZmlnX2lkGAEgASgJEhIKCmNvbmZpZ19rZXkYAiABKAkSEAoDdXJsGAMgASgJSACIAQESGwoOYWxsb3dlZF9vcmlnaW4YBCABKAlIAYgBARITCgZoZWlnaHQYBSABKAVIAogBARISCgVsYWJlbBgGIAEoCUgDiAEBEhQKB2FwaV9rZXkYByABKAlIBIgBARIUCgdhcGlfdXJsGAggASgJSAWIAQESHgoRY29ubmVjdGlvbl9kb21haW4YCSABKAlIBogBAUIGCgRfdXJsQhEKD19hbGxvd2VkX29yaWdpbkIJCgdfaGVpZ2h0QggKBl9sYWJlbEIKCghfYXBpX2tleUIKCghfYXBpX3VybEIUChJfY29ubmVjdGlvbl9kb21haW4iUgoYR2V0RWRpdG9yQ29uZmlnc1Jlc3BvbnNlEjYKCnBsYWNlbWVudHMYASADKAsyIi5zZXR0aW5ncy52MS5FZGl0b3JDb25maWdQbGFjZW1lbnQiIAoSUmVzb2x2ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjYKE1Jlc29sdmVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiIgoUVW5yZXNvbHZlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiOAoVVW5yZXNvbHZlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIsUBChJTZWFyY2hOb3Rlc1JlcXVlc3QSDQoFcXVlcnkYASABKAkSGAoLZW50aXR5X3R5cGUYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQg4KDF9lbnRpdHlfdHlwZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikgEKE1NlYXJjaE5vdGVzUmVzcG9uc2USIAoFbm90ZXMYASADKAsyES5zZXR0aW5ncy52MS5Ob3RlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIZChdNYXJrTWVudGlvbnNTZWVuUmVxdWVzdCIpChhNYXJrTWVudGlvbnNTZWVuUmVzcG9uc2USDQoFY291bnQYASABKAUiLgofR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5UmVxdWVzdBILCgNrZXkYASABKAkiVAogR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5UmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiIZChdHZXREZWZhdWx0TG9jYWxlUmVxdWVzdCI/ChhHZXREZWZhdWx0TG9jYWxlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIiYKFkdldExvY2FsZUJ5Q29kZVJlcXVlc3QSDAoEY29kZRgBIAEoCSI+ChdHZXRMb2NhbGVCeUNvZGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiJgokR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0IlgKJUdldERlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IiMKFERlbGV0ZVNldHRpbmdSZXF1ZXN0EgsKA2tleRgBIAEoCSIoChVEZWxldGVTZXR0aW5nUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIzCh9EZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXF1ZXN0EhAKCGNhdGVnb3J5GAEgASgJIjEKIERlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlc3BvbnNlEg0KBWNvdW50GAEgASgFIk0KFkJ1bGtTZXRTZXR0aW5nc1JlcXVlc3QSMwoIc2V0dGluZ3MYASADKAsyIS5zZXR0aW5ncy52MS5VcGRhdGVTZXR0aW5nUmVxdWVzdCIoChdCdWxrU2V0U2V0dGluZ3NSZXNwb25zZRINCgVjb3VudBgBIAEoBSIpCidFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QiWwooRW5zdXJlRGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIvCgVlbnRyeRgBIAEoCzIgLnNldHRpbmdzLnYxLlZhcmlhbnRDYXRhbG9nRW50cnki8AMKDERlc2lnblRva2VucxIpCghkb2N1bWVudBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSMwoIcmVzb2x2ZWQYAiABKAsyIS5zZXR0aW5ncy52MS5SZXNvbHZlZERlc2lnblRva2VucxIPCgd2ZXJzaW9uGAogASgFEh4KEXB1Ymxpc2hlZF92ZXJzaW9uGAsgASgFSACIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg9IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIUChJfcHVibGlzaGVkX3ZlcnNpb25CFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IvoEChRSZXNvbHZlZERlc2lnblRva2VucxIvCgZjb2xvcnMYASADKAsyHy5zZXR0aW5ncy52MS5SZXNvbHZlZENvbG9yVG9rZW4SOwoNZm9udF9mYW1pbGllcxgCIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udEZhbWlseVRva2VuEjoKDGZvbnRfd2VpZ2h0cxgDIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udFdlaWdodFRva2VuEjcKCmZvbnRfc2l6ZXMYBCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjYKDGxpbmVfaGVpZ2h0cxgFIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkTnVtYmVyVG9rZW4SPAoPbGV0dGVyX3NwYWNpbmdzGAYgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhI4Cgp0eXBvZ3JhcGh5GAcgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VG9rZW4SNQoIc3BhY2luZ3MYCCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjIKBXJhZGlpGAkgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIxCgdzaGFkb3dzGAogAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dUb2tlbhIxCgdib3JkZXJzGAsgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRCb3JkZXJUb2tlbiJpChJSZXNvbHZlZENvbG9yVG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCABKAlCDgoMX2Rlc2NyaXB0aW9uIm4KF1Jlc29sdmVkRm9udEZhbWlseVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgAygJQg4KDF9kZXNjcmlwdGlvbiJuChdSZXNvbHZlZEZvbnRXZWlnaHRUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoBUIOCgxfZGVzY3JpcHRpb24ibQoWUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoCUIOCgxfZGVzY3JpcHRpb24iagoTUmVzb2x2ZWROdW1iZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoAUIOCgxfZGVzY3JpcHRpb24izAEKF1Jlc29sdmVkVHlwb2dyYXBoeVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjMKBXZhbHVlGAQgASgLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VmFsdWUSEgoFbGFiZWwYBSABKAlIAYgBARIQCgN0YWcYBiABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2xhYmVsQgYKBF90YWcijQEKE1Jlc29sdmVkU2hhZG93VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESMAoGbGF5ZXJzGAQgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dMYXllckIOCgxfZGVzY3JpcHRpb24idQoTUmVzb2x2ZWRTaGFkb3dMYXllchIQCghvZmZzZXRfeBgBIAEoCRIQCghvZmZzZXRfeRgCIAEoCRIMCgRibHVyGAMgASgJEg4KBnNwcmVhZBgEIAEoCRINCgVjb2xvchgFIAEoCRINCgVpbnNldBgGIAEoCCKMAQoTUmVzb2x2ZWRCb3JkZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIvCgV2YWx1ZRgEIAEoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkQm9yZGVyVmFsdWVCDgoMX2Rlc2NyaXB0aW9uIkIKE1Jlc29sdmVkQm9yZGVyVmFsdWUSDQoFY29sb3IYASABKAkSDQoFd2lkdGgYAiABKAkSDQoFc3R5bGUYAyABKAkimwEKF1Jlc29sdmVkVHlwb2dyYXBoeVZhbHVlEhMKC2ZvbnRfZmFtaWx5GAEgAygJEhEKCWZvbnRfc2l6ZRgCIAEoCRITCgtmb250X3dlaWdodBgDIAEoBRITCgtsaW5lX2hlaWdodBgEIAEoARIWCg5sZXR0ZXJfc3BhY2luZxgFIAEoCRIWCg50ZXh0X3RyYW5zZm9ybRgGIAEoCSJEChZHZXREZXNpZ25Ub2tlbnNSZXF1ZXN0EioKB2NoYW5uZWwYASABKA4yGS5wdWJsaXNoLnYxLlNjaGVtYUNoYW5uZWwiRAoXR2V0RGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIkYKGVVwZGF0ZURlc2lnblRva2Vuc1JlcXVlc3QSKQoIZG9jdW1lbnQYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkcKGlVwZGF0ZURlc2lnblRva2Vuc1Jlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyIcChpQdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdCJ+ChtQdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIh4KHFVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QiSgodVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIiUKI0dldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0IlEKJEdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMinAEKIlNjaGVkdWxlRGVzaWduVG9rZW5zUHVibGlzaFJlcXVlc3QSLgoKcHVibGlzaF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiUAojU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIisKKUNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXF1ZXN0IlcKKkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiNwohQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXF1ZXN0EhIKCnRva2VuX3BhdGgYASABKAkiUwoiQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXNwb25zZRIXCg9wYXJhZ3JhcGhfY291bnQYASABKAUSFAoMcmVjb3JkX2NvdW50GAIgASgFItkCChJEZXNpZ25Ub2tlblZlcnNpb24SCgoCaWQYASABKAkSGAoQZGVzaWduX3Rva2Vuc19pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIpCghzbmFwc2hvdBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5IioKHEdldERlc2lnblRva2VuVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiUQodR2V0RGVzaWduVG9rZW5WZXJzaW9uUmVzcG9uc2USMAoHdmVyc2lvbhgBIAEoCzIfLnNldHRpbmdzLnYxLkRlc2lnblRva2VuVmVyc2lvbiKYAQoeTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Iq8BCh9MaXN0RGVzaWduVG9rZW5WZXJzaW9uc1Jlc3BvbnNlEjEKCHZlcnNpb25zGAEgAygLMh8uc2V0dGluZ3MudjEuRGVzaWduVG9rZW5WZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJuCiBSZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgCIAEoCUgAiAEBQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ihAEKIVJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMSNAoLbmV3X3ZlcnNpb24YAiABKAsyHy5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlblZlcnNpb24iRQoXR2V0UHJvamVjdFNjaGVtYVJlcXVlc3QSKgoHY2hhbm5lbBgBIAEoDjIZLnB1Ymxpc2gudjEuU2NoZW1hQ2hhbm5lbCJlChJQcm9qZWN0U2NoZW1hTW9kZWwSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZmllbGRzX2pzb24YBCABKAkSEwoLY29uZmlnX2pzb24YBSABKAkiwgEKHVByb2plY3RTY2hlbWFDb250ZXh0RGltZW5zaW9uEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEh0KEHNvdXJjZV9tb2RlbF9rZXkYBCABKAlIAIgBARIfChJkZWZhdWx0X3JlY29yZF9rZXkYBSABKAlIAYgBARIOCgZ2YWx1ZXMYBiADKAlCEwoRX3NvdXJjZV9tb2RlbF9rZXlCFQoTX2RlZmF1bHRfcmVjb3JkX2tleSKOAQoZUHJvamVjdFNjaGVtYUF1dGhQcm92aWRlchILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEg8KB2VuYWJsZWQYBCABKAgSLAoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQgkKB19jb25maWcinwMKFlByb2plY3RTY2hlbWFPcGVyYXRpb24SCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEAoIZW5kcG9pbnQYAyABKAkSEgoKdGltZW91dF9tcxgEIAEoBRIyCgxpbnB1dF9zY2hlbWEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESMwoNb3V0cHV0X3NjaGVtYRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIWCg5zdXBwb3J0c19hc3luYxgHIAEoCBIMCgRraW5kGAggASgJEh4KEWF0dGFjaGVkX3RvX21vZGVsGAkgASgJSAKIAQESFQoNcGFyZW50X2ZpZWxkcxgKIAMoCRIzCg1jYWNoZV9jb250cm9sGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBQg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWFCFAoSX2F0dGFjaGVkX3RvX21vZGVsQhAKDl9jYWNoZV9jb250cm9sIkQKFFByb2plY3RTY2hlbWFTZWdtZW50EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCWlzX2FjdGl2ZRgDIAEoCCJvChpQcm9qZWN0U2NoZW1hUHJvZmlsZVNjaGVtYRITCgtmaWVsZHNfanNvbhgBIAEoCRIVCg1wdWJsaWNfZmllbGRzGAIgAygJEg8KB3ZlcnNpb24YAyABKAUSFAoMbG9va3Vwc19qc29uGAQgASgJIpQEChhHZXRQcm9qZWN0U2NoZW1hUmVzcG9uc2USLwoGbW9kZWxzGAEgAygLMh8uc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU1vZGVsEj4KCmRpbWVuc2lvbnMYAiADKAsyKi5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hQ29udGV4dERpbWVuc2lvbhI+Cg5hdXRoX3Byb3ZpZGVycxgDIAMoCzImLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFBdXRoUHJvdmlkZXISNwoKb3BlcmF0aW9ucxgEIAMoCzIjLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFPcGVyYXRpb24SMwoIc2VnbWVudHMYBSADKAsyIS5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hU2VnbWVudBJECg5wcm9maWxlX3NjaGVtYRgHIAEoCzInLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFQcm9maWxlU2NoZW1hSACIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgIIAEoCEgBiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGAkgASgISAKIAQFCEQoPX3Byb2ZpbGVfc2NoZW1hQhwKGl9jdXN0b21lcl9wYXNzd29yZF9lbmFibGVkQhcKFV9jdXN0b21lcl9vdHBfZW5hYmxlZCIsCh5QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiiQEKH1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbhI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIuCiBVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJVCiFVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiI1CidHZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiVQooR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMi4gIKF0NvbnRleHREaW1lbnNpb25WZXJzaW9uEgoKAmlkGAEgASgJEhwKFGNvbnRleHRfZGltZW5zaW9uX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiLwohR2V0Q29udGV4dERpbWVuc2lvblZlcnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlsKIkdldENvbnRleHREaW1lbnNpb25WZXJzaW9uUmVzcG9uc2USNQoHdmVyc2lvbhgBIAEoCzIkLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WZXJzaW9uIrsBCiNMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVxdWVzdBIcChRjb250ZXh0X2RpbWVuc2lvbl9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCK5AQokTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1Jlc3BvbnNlEjYKCHZlcnNpb25zGAEgAygLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvInMKJVJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIpUBCiZSZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEjkKC25ld192ZXJzaW9uGAIgASgLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24iHQobUHVibGlzaFByb2ZpbGVTY2hlbWFSZXF1ZXN0IpABChxQdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIh8KHVVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXF1ZXN0IlwKHlVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXNwb25zZRI6Cg5wcm9maWxlX3NjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSImCiRHZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1JlcXVlc3QiUgolR2V0UHJvZmlsZVNjaGVtYVB1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMi3AIKFFByb2ZpbGVTY2hlbWFWZXJzaW9uEgoKAmlkGAEgASgJEhkKEXByb2ZpbGVfc2NoZW1hX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiLAoeR2V0UHJvZmlsZVNjaGVtYVZlcnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlUKH0dldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USMgoHdmVyc2lvbhgBIAEoCzIhLnNldHRpbmdzLnYxLlByb2ZpbGVTY2hlbWFWZXJzaW9uIpoBCiBMaXN0UHJvZmlsZVNjaGVtYVZlcnNpb25zUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKzAQohTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9uc1Jlc3BvbnNlEjMKCHZlcnNpb25zGAEgAygLMiEuc2V0dGluZ3MudjEuUHJvZmlsZVNjaGVtYVZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvInAKIlJlc3RvcmVQcm9maWxlU2NoZW1hVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIpEBCiNSZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb25SZXNwb25zZRIyCgZzY2hlbWEYASABKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVTY2hlbWESNgoLbmV3X3ZlcnNpb24YAiABKAsyIS5zZXR0aW5ncy52MS5Qcm9maWxlU2NoZW1hVmVyc2lvbiIdChtQdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3Qi9gEKHFB1Ymxpc2hQcm9qZWN0U2NoZW1hUmVzcG9uc2USGAoQbW9kZWxzX3B1Ymxpc2hlZBgBIAEoBRIcChRvcGVyYXRpb25zX3B1Ymxpc2hlZBgCIAEoBRIkChxjb250ZXh0X2RpbWVuc2lvbnNfcHVibGlzaGVkGAMgASgFEiAKGGF1dGhfcHJvdmlkZXJzX3B1Ymxpc2hlZBgEIAEoBRIgChhwcm9maWxlX3NjaGVtYV9wdWJsaXNoZWQYBSABKAgSNAoQYnJlYWtpbmdfY2hhbmdlcxgGIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiIAoeR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXNSZXF1ZXN0IoMBCh9HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1Jlc3BvbnNlEioKB3BlbmRpbmcYASADKAsyGS5wdWJsaXNoLnYxLlBlbmRpbmdFbnRpdHkSNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UirAEKJlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0IlsKJ1NjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIjsKLUNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJiCi5DYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24inQEKI1NjaGVkdWxlUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXF1ZXN0Ei4KCnB1Ymxpc2hfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0ImIKJFNjaGVkdWxlUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRI6Cg5wcm9maWxlX3NjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSIsCipDYW5jZWxTY2hlZHVsZWRQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QiaQorQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRI6Cg5wcm9maWxlX3NjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSqXAQoRU2hhcmVSZXNvdXJjZVR5cGUSIwofU0hBUkVfUkVTT1VSQ0VfVFlQRV9VTlNQRUNJRklFRBAAEh4KGlNIQVJFX1JFU09VUkNFX1RZUEVfUkVDT1JEEAESHAoYU0hBUkVfUkVTT1VSQ0VfVFlQRV9GSUxFEAISHwobU0hBUkVfUkVTT1VSQ0VfVFlQRV9QUk9GSUxFEAMqhQEKD1NoYXJlUGVybWlzc2lvbhIgChxTSEFSRV9QRVJNSVNTSU9OX1VOU1BFQ0lGSUVEEAASGQoVU0hBUkVfUEVSTUlTU0lPTl9WSUVXEAESGQoVU0hBUkVfUEVSTUlTU0lPTl9FRElUEAISGgoWU0hBUkVfUEVSTUlTU0lPTl9BRE1JThADKnsKC1NoYXJlU3RhdHVzEhwKGFNIQVJFX1NUQVRVU19VTlNQRUNJRklFRBAAEhgKFFNIQVJFX1NUQVRVU19QRU5ESU5HEAESGQoVU0hBUkVfU1RBVFVTX0FDQ0VQVEVEEAISGQoVU0hBUkVfU1RBVFVTX0RFQ0xJTkVEEAMqrQEKHUN1c3RvbWVyUHJvZmlsZUxvb2t1cEF1ZGllbmNlEjAKLENVU1RPTUVSX1BST0ZJTEVfTE9PS1VQX0FVRElFTkNFX1VOU1BFQ0lGSUVEEAASLQopQ1VTVE9NRVJfUFJPRklMRV9MT09LVVBfQVVESUVOQ0VfT1BFUkFUT1IQARIrCidDVVNUT01FUl9QUk9GSUxFX0xPT0tVUF9BVURJRU5DRV9QVUJMSUMQAjKwTQoPU2V0dGluZ3NTZXJ2aWNlElAKC0dldFNldHRpbmdzEh8uc2V0dGluZ3MudjEuR2V0U2V0dGluZ3NSZXF1ZXN0GiAuc2V0dGluZ3MudjEuR2V0U2V0dGluZ3NSZXNwb25zZRJWCg1VcGRhdGVTZXR0aW5nEiEuc2V0dGluZ3MudjEuVXBkYXRlU2V0dGluZ1JlcXVlc3QaIi5zZXR0aW5ncy52MS5VcGRhdGVTZXR0aW5nUmVzcG9uc2USVgoNRGVsZXRlU2V0dGluZxIhLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdSZXF1ZXN0GiIuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ1Jlc3BvbnNlEncKGERlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeRIsLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlcXVlc3QaLS5zZXR0aW5ncy52MS5EZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXNwb25zZRJcCg9CdWxrU2V0U2V0dGluZ3MSIy5zZXR0aW5ncy52MS5CdWxrU2V0U2V0dGluZ3NSZXF1ZXN0GiQuc2V0dGluZ3MudjEuQnVsa1NldFNldHRpbmdzUmVzcG9uc2USVgoNTGlzdEF1ZGl0TG9ncxIhLnNldHRpbmdzLnYxLkxpc3RBdWRpdExvZ3NSZXF1ZXN0GiIuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEk0KCkNyZWF0ZU5vdGUSHi5zZXR0aW5ncy52MS5DcmVhdGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXNwb25zZRJECgdHZXROb3RlEhsuc2V0dGluZ3MudjEuR2V0Tm90ZVJlcXVlc3QaHC5zZXR0aW5ncy52MS5HZXROb3RlUmVzcG9uc2USSgoJTGlzdE5vdGVzEh0uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVxdWVzdBoeLnNldHRpbmdzLnYxLkxpc3ROb3Rlc1Jlc3BvbnNlEk0KClVwZGF0ZU5vdGUSHi5zZXR0aW5ncy52MS5VcGRhdGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXNwb25zZRJNCgpEZWxldGVOb3RlEh4uc2V0dGluZ3MudjEuRGVsZXRlTm90ZVJlcXVlc3QaHy5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVzcG9uc2USUAoLUmVzb2x2ZU5vdGUSHy5zZXR0aW5ncy52MS5SZXNvbHZlTm90ZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5SZXNvbHZlTm90ZVJlc3BvbnNlElYKDVVucmVzb2x2ZU5vdGUSIS5zZXR0aW5ncy52MS5VbnJlc29sdmVOb3RlUmVxdWVzdBoiLnNldHRpbmdzLnYxLlVucmVzb2x2ZU5vdGVSZXNwb25zZRJQCgtTZWFyY2hOb3RlcxIfLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVzcG9uc2USWQoOTGlzdE15TWVudGlvbnMSIi5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1JlcXVlc3QaIy5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1Jlc3BvbnNlEmgKE1VwZGF0ZU1lbnRpb25TdGF0dXMSJy5zZXR0aW5ncy52MS5VcGRhdGVNZW50aW9uU3RhdHVzUmVxdWVzdBooLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRJfChBNYXJrTWVudGlvbnNTZWVuEiQuc2V0dGluZ3MudjEuTWFya01lbnRpb25zU2VlblJlcXVlc3QaJS5zZXR0aW5ncy52MS5NYXJrTWVudGlvbnNTZWVuUmVzcG9uc2USUAoLTGlzdExvY2FsZXMSHy5zZXR0aW5ncy52MS5MaXN0TG9jYWxlc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5MaXN0TG9jYWxlc1Jlc3BvbnNlEkoKCUdldExvY2FsZRIdLnNldHRpbmdzLnYxLkdldExvY2FsZVJlcXVlc3QaHi5zZXR0aW5ncy52MS5HZXRMb2NhbGVSZXNwb25zZRJfChBHZXREZWZhdWx0TG9jYWxlEiQuc2V0dGluZ3MudjEuR2V0RGVmYXVsdExvY2FsZVJlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVzcG9uc2USXAoPR2V0TG9jYWxlQnlDb2RlEiMuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVxdWVzdBokLnNldHRpbmdzLnYxLkdldExvY2FsZUJ5Q29kZVJlc3BvbnNlElMKDENyZWF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5DcmVhdGVMb2NhbGVSZXNwb25zZRJTCgxVcGRhdGVMb2NhbGUSIC5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuVXBkYXRlTG9jYWxlUmVzcG9uc2USUwoMRGVsZXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkRlbGV0ZUxvY2FsZVJlc3BvbnNlEmIKEUdldE5hdlByZWZlcmVuY2VzEiUuc2V0dGluZ3MudjEuR2V0TmF2UHJlZmVyZW5jZXNSZXF1ZXN0GiYuc2V0dGluZ3MudjEuR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRJrChRVcGRhdGVOYXZQcmVmZXJlbmNlcxIoLnNldHRpbmdzLnYxLlVwZGF0ZU5hdlByZWZlcmVuY2VzUmVxdWVzdBopLnNldHRpbmdzLnYxLlVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USZQoSTGlzdFJlY2VudGx5T3BlbmVkEiYuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmgKE1RyYWNrUmVjZW50bHlPcGVuZWQSJy5zZXR0aW5ncy52MS5UcmFja1JlY2VudGx5T3BlbmVkUmVxdWVzdBooLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXNwb25zZRJrChRSZW1vdmVSZWNlbnRseU9wZW5lZBIoLnNldHRpbmdzLnYxLlJlbW92ZVJlY2VudGx5T3BlbmVkUmVxdWVzdBopLnNldHRpbmdzLnYxLlJlbW92ZVJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTQ2xlYXJSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLkNsZWFyUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlElAKC0NyZWF0ZVNoYXJlEh8uc2V0dGluZ3MudjEuQ3JlYXRlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuQ3JlYXRlU2hhcmVSZXNwb25zZRJHCghHZXRTaGFyZRIcLnNldHRpbmdzLnYxLkdldFNoYXJlUmVxdWVzdBodLnNldHRpbmdzLnYxLkdldFNoYXJlUmVzcG9uc2USTQoKTGlzdFNoYXJlcxIeLnNldHRpbmdzLnYxLkxpc3RTaGFyZXNSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuTGlzdFNoYXJlc1Jlc3BvbnNlElAKC1VwZGF0ZVNoYXJlEh8uc2V0dGluZ3MudjEuVXBkYXRlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuVXBkYXRlU2hhcmVSZXNwb25zZRJQCgtSZXZva2VTaGFyZRIfLnNldHRpbmdzLnYxLlJldm9rZVNoYXJlUmVxdWVzdBogLnNldHRpbmdzLnYxLlJldm9rZVNoYXJlUmVzcG9uc2USUAoLQWNjZXB0U2hhcmUSHy5zZXR0aW5ncy52MS5BY2NlcHRTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5BY2NlcHRTaGFyZVJlc3BvbnNlElMKDERlY2xpbmVTaGFyZRIgLnNldHRpbmdzLnYxLkRlY2xpbmVTaGFyZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5EZWNsaW5lU2hhcmVSZXNwb25zZRJuChVMaXN0Q29udGV4dERpbWVuc2lvbnMSKS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0Giouc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USaAoTR2V0Q29udGV4dERpbWVuc2lvbhInLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giguc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblJlc3BvbnNlEncKGEdldENvbnRleHREaW1lbnNpb25CeUtleRIsLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25CeUtleVJlcXVlc3QaLS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uQnlLZXlSZXNwb25zZRJxChZDcmVhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWVXBkYXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnEKFkRlbGV0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5EZWxldGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzEi0uc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1JlcXVlc3QaLi5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVzcG9uc2USdwoYR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hEiwuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBotLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEmUKEkdldEN1c3RvbWVyUHJvZmlsZRImLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaJy5zZXR0aW5ncy52MS5HZXRDdXN0b21lclByb2ZpbGVSZXNwb25zZRJuChVDcmVhdGVDdXN0b21lclByb2ZpbGUSKS5zZXR0aW5ncy52MS5DcmVhdGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0Giouc2V0dGluZ3MudjEuQ3JlYXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USbgoVVXBkYXRlQ3VzdG9tZXJQcm9maWxlEikuc2V0dGluZ3MudjEuVXBkYXRlQ3VzdG9tZXJQcm9maWxlUmVxdWVzdBoqLnNldHRpbmdzLnYxLlVwZGF0ZUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEoABChtVcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWESLy5zZXR0aW5ncy52MS5VcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0GjAuc2V0dGluZ3MudjEuVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2UScQoWU2VhcmNoQ3VzdG9tZXJQcm9maWxlcxIqLnNldHRpbmdzLnYxLlNlYXJjaEN1c3RvbWVyUHJvZmlsZXNSZXF1ZXN0Gisuc2V0dGluZ3MudjEuU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1Jlc3BvbnNlEm4KFUxvb2t1cEN1c3RvbWVyUHJvZmlsZRIpLnNldHRpbmdzLnYxLkxvb2t1cEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaKi5zZXR0aW5ncy52MS5Mb29rdXBDdXN0b21lclByb2ZpbGVSZXNwb25zZRJuChVEZWxldGVDdXN0b21lclByb2ZpbGUSKS5zZXR0aW5ncy52MS5EZWxldGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0Giouc2V0dGluZ3MudjEuRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USjAEKH0dldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXMSMy5zZXR0aW5ncy52MS5HZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzUmVxdWVzdBo0LnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXNSZXNwb25zZRJfChBHZXRFZGl0b3JDb25maWdzEiQuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRFZGl0b3JDb25maWdzUmVzcG9uc2USZQoSTGlzdFZhcmlhbnRDYXRhbG9nEiYuc2V0dGluZ3MudjEuTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEnEKFkdldFZhcmlhbnRDYXRhbG9nRW50cnkSKi5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBorLnNldHRpbmdzLnYxLkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5DcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLkRlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRKGAQodR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnkSMS5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEo8BCiBFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeRI0LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBo1LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USXwoQR2V0UHJvamVjdFNjaGVtYRIkLnNldHRpbmdzLnYxLkdldFByb2plY3RTY2hlbWFSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0UHJvamVjdFNjaGVtYVJlc3BvbnNlEnQKF1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uEisuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giwuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uEi0uc2V0dGluZ3MudjEuVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USjwEKIEdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzEjQuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXF1ZXN0GjUuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRKMAQofU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaBIzLnNldHRpbmdzLnYxLlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0GjQuc2V0dGluZ3MudjEuU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEqEBCiZDYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaBI6LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBo7LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USfQoaR2V0Q29udGV4dERpbWVuc2lvblZlcnNpb24SLi5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaLy5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlc3BvbnNlEoMBChxMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zEjAuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1JlcXVlc3QaMS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVzcG9uc2USiQEKHlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvbhIyLnNldHRpbmdzLnYxLlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaMy5zZXR0aW5ncy52MS5SZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRJ0ChdHZXRQcm9maWxlU2NoZW1hVmVyc2lvbhIrLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USegoZTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9ucxItLnNldHRpbmdzLnYxLkxpc3RQcm9maWxlU2NoZW1hVmVyc2lvbnNSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9uc1Jlc3BvbnNlEoABChtSZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb24SLy5zZXR0aW5ncy52MS5SZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb25SZXF1ZXN0GjAuc2V0dGluZ3MudjEuUmVzdG9yZVByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USawoUUHVibGlzaFByb2ZpbGVTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEnEKFlVucHVibGlzaFByb2ZpbGVTY2hlbWESKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hQcm9maWxlU2NoZW1hUmVxdWVzdBorLnNldHRpbmdzLnYxLlVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXNwb25zZRKGAQodR2V0UHJvZmlsZVNjaGVtYVB1Ymxpc2hTdGF0dXMSMS5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1JlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoMBChxTY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoEjAuc2V0dGluZ3MudjEuU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QaMS5zZXR0aW5ncy52MS5TY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoUmVzcG9uc2USmAEKI0NhbmNlbFNjaGVkdWxlZFByb2ZpbGVTY2hlbWFQdWJsaXNoEjcuc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXF1ZXN0Gjguc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRJ0ChdHZXRQcm9qZWN0UHVibGlzaFN0YXR1cxIrLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USawoUUHVibGlzaFByb2plY3RTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlElwKD0dldERlc2lnblRva2VucxIjLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNSZXNwb25zZRJlChJVcGRhdGVEZXNpZ25Ub2tlbnMSJi5zZXR0aW5ncy52MS5VcGRhdGVEZXNpZ25Ub2tlbnNSZXF1ZXN0Gicuc2V0dGluZ3MudjEuVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USaAoTUHVibGlzaERlc2lnblRva2VucxInLnNldHRpbmdzLnYxLlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0Giguc2V0dGluZ3MudjEuUHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEm4KFVVucHVibGlzaERlc2lnblRva2VucxIpLnNldHRpbmdzLnYxLlVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRKDAQocR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1cxIwLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoABChtTY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2gSLy5zZXR0aW5ncy52MS5TY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXF1ZXN0GjAuc2V0dGluZ3MudjEuU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVzcG9uc2USlQEKIkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2gSNi5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWREZXNpZ25Ub2tlbnNQdWJsaXNoUmVxdWVzdBo3LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRJ9ChpDb3VudERlc2lnblRva2VuUmVmZXJlbmNlcxIuLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVxdWVzdBovLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVzcG9uc2USbgoVR2V0RGVzaWduVG9rZW5WZXJzaW9uEikuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5WZXJzaW9uUmVxdWVzdBoqLnNldHRpbmdzLnYxLkdldERlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlEnQKF0xpc3REZXNpZ25Ub2tlblZlcnNpb25zEisuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXF1ZXN0Giwuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXNwb25zZRJ6ChlSZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uEi0uc2V0dGluZ3MudjEuUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5SZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3NldHRpbmdzL3YxO3NldHRpbmdzdjFiBnByb3RvMw", [file_google_protobuf_struct6, file_google_protobuf_timestamp7, file_expressions_v1_expressions, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
|
|
754
|
+
var file_settings_v1_settings = /* @__PURE__ */ fileDesc11("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiggMKB1NldHRpbmcSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhAKCGNhdGVnb3J5GAMgASgJEisKBXZhbHVlGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDGRpc3BsYXlfbmFtZRgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESEQoJZGF0YV90eXBlGAcgASgJEhEKCWlzX3B1YmxpYxgIIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl92YWx1ZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfcHJvamVjdF9pZCKrBAoIQXVkaXRMb2cSCgoCaWQYASABKAkSLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgd1c2VyX2lkGAMgASgJSACIAQESFgoJdGVuYW50X2lkGAQgASgJSAGIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgCiAEBEg4KBmFjdGlvbhgGIAEoCRIVCg1yZXNvdXJjZV90eXBlGAcgASgJEhgKC3Jlc291cmNlX2lkGAggASgJSAOIAQESLAoGYmVmb3JlGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEisKBWFmdGVyGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEhcKCmlwX2FkZHJlc3MYDCABKAlIB4gBARIXCgp1c2VyX2FnZW50GA0gASgJSAiIAQESFwoKcmVxdWVzdF9pZBgOIAEoCUgJiAEBQgoKCF91c2VyX2lkQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDgoMX3Jlc291cmNlX2lkQgkKB19iZWZvcmVCCAoGX2FmdGVyQgsKCV9tZXRhZGF0YUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudEINCgtfcmVxdWVzdF9pZCKdBQoETm90ZRIKCgJpZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCRIRCgllbnRpdHlfaWQYAyABKAkSHwoSZW50aXR5X25hdHVyYWxfa2V5GAQgASgJSACIAQESFwoKdmVyc2lvbl9pZBgFIAEoCUgBiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgCiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAOIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIBIgBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIVChNfZW50aXR5X25hdHVyYWxfa2V5Qg0KC192ZXJzaW9uX2lkQhUKE19jb250ZW50X3BsYWluX3RleHRCEQoPX3BhcmVudF9ub3RlX2lkQhEKD190aHJlYWRfcm9vdF9pZEIOCgxfcmVzb2x2ZWRfYXRCDgoMX3Jlc29sdmVkX2J5QgsKCV9tZXRhZGF0YUINCgtfcHJvamVjdF9pZCLkBQoFU2hhcmUSCgoCaWQYASABKAkSNQoNcmVzb3VyY2VfdHlwZRgCIAEoDjIeLnNldHRpbmdzLnYxLlNoYXJlUmVzb3VyY2VUeXBlEhYKCXJlY29yZF9pZBgDIAEoCUgAiAEBEhQKB2ZpbGVfaWQYBCABKAlIAYgBARIWCgltb2RlbF9rZXkYBSABKAlIAogBARIfChdzaGFyZWRfd2l0aF9jdXN0b21lcl9pZBgGIAEoCRIwCgpwZXJtaXNzaW9uGAcgASgOMhwuc2V0dGluZ3MudjEuU2hhcmVQZXJtaXNzaW9uEiAKE3Byb2ZpbGVfY3VzdG9tZXJfaWQYCCABKAlIA4gBARIoCgZzdGF0dXMYCiABKA4yGC5zZXR0aW5ncy52MS5TaGFyZVN0YXR1cxI0CgthY2NlcHRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIzCgpleHBpcmVzX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIBogBARIXCgpyZXZva2VkX2J5GB8gASgJSAeIAQESMwoKcmV2b2tlZF9hdBggIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBICIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIMCgpfcmVjb3JkX2lkQgoKCF9maWxlX2lkQgwKCl9tb2RlbF9rZXlCFgoUX3Byb2ZpbGVfY3VzdG9tZXJfaWRCDgoMX2FjY2VwdGVkX2F0Qg0KC19leHBpcmVzX2F0Qg0KC19jcmVhdGVkX2J5Qg0KC19yZXZva2VkX2J5Qg0KC19yZXZva2VkX2F0IlIKEkdldFNldHRpbmdzUmVxdWVzdBIVCghjYXRlZ29yeRgBIAEoCUgAiAEBEhAKA2tleRgCIAEoCUgBiAEBQgsKCV9jYXRlZ29yeUIGCgRfa2V5Ij0KE0dldFNldHRpbmdzUmVzcG9uc2USJgoIc2V0dGluZ3MYASADKAsyFC5zZXR0aW5ncy52MS5TZXR0aW5nIksKFFVwZGF0ZVNldHRpbmdSZXF1ZXN0EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPgoVVXBkYXRlU2V0dGluZ1Jlc3BvbnNlEiUKB3NldHRpbmcYASABKAsyFC5zZXR0aW5ncy52MS5TZXR0aW5nIsUBChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilwEKFUxpc3RBdWRpdExvZ3NSZXNwb25zZRIjCgRsb2dzGAEgAygLMhUuc2V0dGluZ3MudjEuQXVkaXRMb2cSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIpUBChFDcmVhdGVOb3RlUmVxdWVzdBITCgtlbnRpdHlfdHlwZRgBIAEoCRIRCgllbnRpdHlfaWQYAiABKAkSKAoHY29udGVudBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGwoOcGFyZW50X25vdGVfaWQYBCABKAlIAIgBAUIRCg9fcGFyZW50X25vdGVfaWQiNQoSQ3JlYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIhwKDkdldE5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjIKD0dldE5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSLBAQoQTGlzdE5vdGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgEIAEoCUgBiAEBEhMKBmJlZm9yZRgFIAEoCUgCiAEBEhIKBWZpcnN0GAYgASgFSAOIAQESEQoEbGFzdBgHIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikAEKEUxpc3ROb3Rlc1Jlc3BvbnNlEiAKBW5vdGVzGAEgAygLMhEuc2V0dGluZ3MudjEuTm90ZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ihAEKEVVwZGF0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJEi0KB2NvbnRlbnQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESGAoLaXNfcmVzb2x2ZWQYAyABKAhIAYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWQiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkItoBChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUixgEKFUxpc3RNeU1lbnRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QizwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cxIrCglwYWdlX2luZm8YBCABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAUgAygJQgwKCl9wYWdlX2luZm8ioAEKGlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhsKDmNvbXBsZXRlZF9ub3RlGAMgASgJSACIAQESGwoOZGlzbWlzc19yZWFzb24YBCABKAlIAYgBAUIRCg9fY29tcGxldGVkX25vdGVCEQoPX2Rpc21pc3NfcmVhc29uIkgKG1VwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24ilAIKEkNyZWF0ZVNoYXJlUmVxdWVzdBI1Cg1yZXNvdXJjZV90eXBlGAEgASgOMh4uc2V0dGluZ3MudjEuU2hhcmVSZXNvdXJjZVR5cGUSFgoJcmVjb3JkX2lkGAIgASgJSACIAQESFAoHZmlsZV9pZBgDIAEoCUgBiAEBEhMKC2N1c3RvbWVyX2lkGAQgASgJEjAKCnBlcm1pc3Npb24YBSABKA4yHC5zZXR0aW5ncy52MS5TaGFyZVBlcm1pc3Npb24SIAoTcHJvZmlsZV9jdXN0b21lcl9pZBgGIAEoCUgCiAEBQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWRCFgoUX3Byb2ZpbGVfY3VzdG9tZXJfaWQiOAoTQ3JlYXRlU2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIh0KD0dldFNoYXJlUmVxdWVzdBIKCgJpZBgBIAEoCSI1ChBHZXRTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUiwgEKEUxpc3RTaGFyZXNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAQgASgJSAGIAQESEwoGYmVmb3JlGAUgASgJSAKIAQESEgoFZmlyc3QYBiABKAVIA4gBARIRCgRsYXN0GAcgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKTAQoSTGlzdFNoYXJlc1Jlc3BvbnNlEiIKBnNoYXJlcxgBIAMoCzISLnNldHRpbmdzLnYxLlNoYXJlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKgAQoSVXBkYXRlU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJEjUKCnBlcm1pc3Npb24YAiABKA4yHC5zZXR0aW5ncy52MS5TaGFyZVBlcm1pc3Npb25IAIgBARItCgZzdGF0dXMYAyABKA4yGC5zZXR0aW5ncy52MS5TaGFyZVN0YXR1c0gBiAEBQg0KC19wZXJtaXNzaW9uQgkKB19zdGF0dXMiOAoTVXBkYXRlU2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIiAKElJldm9rZVNoYXJlUmVxdWVzdBIKCgJpZBgBIAEoCSImChNSZXZva2VTaGFyZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIAoSQWNjZXB0U2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIjgKE0FjY2VwdFNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSIhChNEZWNsaW5lU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIjkKFERlY2xpbmVTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUivwMKBkxvY2FsZRIKCgJpZBgBIAEoCRIOCgZsb2NhbGUYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhgKC25hdGl2ZV9uYW1lGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIRCglpc19hY3RpdmUYBiABKAgSDgoGaXNfcnRsGAcgASgIEhwKD2ZhbGxiYWNrX2xvY2FsZRgIIAEoCUgBiAEBEhkKEWZhbGxiYWNrX3ByaW9yaXR5GAkgASgFEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIAogBARIXCgp1cGRhdGVkX2J5GB8gASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX25hdGl2ZV9uYW1lQhIKEF9mYWxsYmFja19sb2NhbGVCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnkiwwEKEkxpc3RMb2NhbGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilgEKE0xpc3RMb2NhbGVzUmVzcG9uc2USJAoHbG9jYWxlcxgBIAMoCzITLnNldHRpbmdzLnYxLkxvY2FsZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyKTAQoZTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKYAQoaTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5SZWNlbnRseU9wZW5lZEl0ZW0SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgizwUKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJIrYBChxMaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirQEKHUxpc3RDb250ZXh0RGltZW5zaW9uc1Jlc3BvbnNlEjEKCmRpbWVuc2lvbnMYASADKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIoChpHZXRDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJPChtHZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLLAQodQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgEIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAUgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgGIAEoCUgBiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlIKHkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIv8BCh1VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIdChBzb3VyY2VfbW9kZWxfa2V5GAQgASgJSAKIAQESHwoSZGVmYXVsdF9yZWNvcmRfa2V5GAUgASgJSAOIAQESFAoHcHVibGlzaBgGIAEoCEgEiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5QgoKCF9wdWJsaXNoIlIKHlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIisKHURlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjEKHkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIItEBCiBHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVxdWVzdBIVCg1kaW1lbnNpb25fa2V5GAEgASgJEhMKBnNlYXJjaBgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QisgEKIUdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXNwb25zZRIyCgZ2YWx1ZXMYASADKAsyIi5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmFsdWUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqICChRDdXN0b21lclByb2ZpbGVGaWVsZBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEdHlwZRgDIAEoCRINCgVsYWJlbBgEIAEoCRIQCghyZXF1aXJlZBgFIAEoCBIWCgloZWxwX3RleHQYBiABKAlIAIgBARIYCgtwbGFjZWhvbGRlchgHIAEoCUgBiAEBEiwKBmNvbmZpZxgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARImCgZhY2Nlc3MYCSABKAsyFi5jb21tb24udjEuRmllbGRBY2Nlc3MSEQoJcXVlcnlhYmxlGAogASgIQgwKCl9oZWxwX3RleHRCDgoMX3BsYWNlaG9sZGVyQgkKB19jb25maWcigQEKFUN1c3RvbWVyUHJvZmlsZUxvb2t1cBIOCgZrZXlfYnkYASADKAkSEQoEbmFtZRgCIAEoCUgAiAEBEjwKCGF1ZGllbmNlGAMgASgOMiouc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlTG9va3VwQXVkaWVuY2VCBwoFX25hbWUixwMKFUN1c3RvbWVyUHJvZmlsZVNjaGVtYRIKCgJpZBgBIAEoCRIxCgZmaWVsZHMYAiADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAMgAygJEg8KB3ZlcnNpb24YBCABKAUSMwoHbG9va3VwcxgFIAMoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZUxvb2t1cBIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIhCh9HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0IlYKIEdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSLyAwoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSGAoLZmFsbGJhY2tfaWQYCiABKAlIAogBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAOIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkISChBfdGFyZ2V0aW5nX3J1bGVzQg4KDF9mYWxsYmFja19pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSLKAQoZTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiqgEKGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKGUdldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiQwoaR2V0Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiXAocQ3JlYXRlQ3VzdG9tZXJQcm9maWxlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRInCgZjcmVhdGUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkYKHUNyZWF0ZUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEiUKBGRhdGEYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IlwKHFVwZGF0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSJwoGdXBkYXRlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJGCh1VcGRhdGVDdXN0b21lclByb2ZpbGVSZXNwb25zZRIlCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKjAQoiVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBIxCgZmaWVsZHMYASADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAIgAygJEjMKB2xvb2t1cHMYAyADKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVMb29rdXAiWQojVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2USMgoGc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hIkUKHExvb2t1cEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLbG9va3VwX25hbWUYASABKAkSEAoIa2V5X2hhc2gYAiABKAwiSQodTG9va3VwQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBAUIOCgxfY3VzdG9tZXJfaWQiUwoVQ3VzdG9tZXJQcm9maWxlUmVzdWx0EhMKC2N1c3RvbWVyX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IjgKE0N1c3RvbWVyUHJvZmlsZVNvcnQSDQoFZmllbGQYASABKAkSEgoKZGVzY2VuZGluZxgCIAEoCCKCAgodU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1JlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIyCghvcmRlcl9ieRgGIAMoCzIgLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNvcnRCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKwAQoeU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1Jlc3BvbnNlEjMKB3Jlc3VsdHMYASADKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVSZXN1bHQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjMKHERlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiMAodRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChdHZXRFZGl0b3JDb25maWdzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiwAIKFUVkaXRvckNvbmZpZ1BsYWNlbWVudBIRCgljb25maWdfaWQYASABKAkSEgoKY29uZmlnX2tleRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIbCg5hbGxvd2VkX29yaWdpbhgEIAEoCUgBiAEBEhMKBmhlaWdodBgFIAEoBUgCiAEBEhIKBWxhYmVsGAYgASgJSAOIAQESFAoHYXBpX2tleRgHIAEoCUgEiAEBEhQKB2FwaV91cmwYCCABKAlIBYgBARIeChFjb25uZWN0aW9uX2RvbWFpbhgJIAEoCUgGiAEBQgYKBF91cmxCEQoPX2FsbG93ZWRfb3JpZ2luQgkKB19oZWlnaHRCCAoGX2xhYmVsQgoKCF9hcGlfa2V5QgoKCF9hcGlfdXJsQhQKEl9jb25uZWN0aW9uX2RvbWFpbiJSChhHZXRFZGl0b3JDb25maWdzUmVzcG9uc2USNgoKcGxhY2VtZW50cxgBIAMoCzIiLnNldHRpbmdzLnYxLkVkaXRvckNvbmZpZ1BsYWNlbWVudCIgChJSZXNvbHZlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiNgoTUmVzb2x2ZU5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSIiChRVbnJlc29sdmVOb3RlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChVVbnJlc29sdmVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUixQEKElNlYXJjaE5vdGVzUmVxdWVzdBINCgVxdWVyeRgBIAEoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCDgoMX2VudGl0eV90eXBlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKSAQoTU2VhcmNoTm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIhkKF01hcmtNZW50aW9uc1NlZW5SZXF1ZXN0IikKGE1hcmtNZW50aW9uc1NlZW5SZXNwb25zZRINCgVjb3VudBgBIAEoBSIuCh9HZXRDb250ZXh0RGltZW5zaW9uQnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSJUCiBHZXRDb250ZXh0RGltZW5zaW9uQnlLZXlSZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIhkKF0dldERlZmF1bHRMb2NhbGVSZXF1ZXN0Ij8KGEdldERlZmF1bHRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiJgoWR2V0TG9jYWxlQnlDb2RlUmVxdWVzdBIMCgRjb2RlGAEgASgJIj4KF0dldExvY2FsZUJ5Q29kZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSImCiRHZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QiWAolR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIvCgVlbnRyeRgBIAEoCzIgLnNldHRpbmdzLnYxLlZhcmlhbnRDYXRhbG9nRW50cnkiIwoURGVsZXRlU2V0dGluZ1JlcXVlc3QSCwoDa2V5GAEgASgJIigKFURlbGV0ZVNldHRpbmdSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjMKH0RlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlcXVlc3QSEAoIY2F0ZWdvcnkYASABKAkiMQogRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVzcG9uc2USDQoFY291bnQYASABKAUiTQoWQnVsa1NldFNldHRpbmdzUmVxdWVzdBIzCghzZXR0aW5ncxgBIAMoCzIhLnNldHRpbmdzLnYxLlVwZGF0ZVNldHRpbmdSZXF1ZXN0IigKF0J1bGtTZXRTZXR0aW5nc1Jlc3BvbnNlEg0KBWNvdW50GAEgASgFIikKJ0Vuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdCJbCihFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSLwAwoMRGVzaWduVG9rZW5zEikKCGRvY3VtZW50GAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIzCghyZXNvbHZlZBgCIAEoCzIhLnNldHRpbmdzLnYxLlJlc29sdmVkRGVzaWduVG9rZW5zEg8KB3ZlcnNpb24YCiABKAUSHgoRcHVibGlzaGVkX3ZlcnNpb24YCyABKAVIAIgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQhQKEl9wdWJsaXNoZWRfdmVyc2lvbkIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXQi+gQKFFJlc29sdmVkRGVzaWduVG9rZW5zEi8KBmNvbG9ycxgBIAMoCzIfLnNldHRpbmdzLnYxLlJlc29sdmVkQ29sb3JUb2tlbhI7Cg1mb250X2ZhbWlsaWVzGAIgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRGb250RmFtaWx5VG9rZW4SOgoMZm9udF93ZWlnaHRzGAMgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRGb250V2VpZ2h0VG9rZW4SNwoKZm9udF9zaXplcxgEIAMoCzIjLnNldHRpbmdzLnYxLlJlc29sdmVkRGltZW5zaW9uVG9rZW4SNgoMbGluZV9oZWlnaHRzGAUgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWROdW1iZXJUb2tlbhI8Cg9sZXR0ZXJfc3BhY2luZ3MYBiADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjgKCnR5cG9ncmFwaHkYByADKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZFR5cG9ncmFwaHlUb2tlbhI1CghzcGFjaW5ncxgIIAMoCzIjLnNldHRpbmdzLnYxLlJlc29sdmVkRGltZW5zaW9uVG9rZW4SMgoFcmFkaWkYCSADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjEKB3NoYWRvd3MYCiADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZFNoYWRvd1Rva2VuEjEKB2JvcmRlcnMYCyADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZEJvcmRlclRva2VuImkKElJlc29sdmVkQ29sb3JUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoCUIOCgxfZGVzY3JpcHRpb24ibgoXUmVzb2x2ZWRGb250RmFtaWx5VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCADKAlCDgoMX2Rlc2NyaXB0aW9uIm4KF1Jlc29sdmVkRm9udFdlaWdodFRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgFQg4KDF9kZXNjcmlwdGlvbiJtChZSZXNvbHZlZERpbWVuc2lvblRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgJQg4KDF9kZXNjcmlwdGlvbiJqChNSZXNvbHZlZE51bWJlclRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgBQg4KDF9kZXNjcmlwdGlvbiLMAQoXUmVzb2x2ZWRUeXBvZ3JhcGh5VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESMwoFdmFsdWUYBCABKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZFR5cG9ncmFwaHlWYWx1ZRISCgVsYWJlbBgFIAEoCUgBiAEBEhAKA3RhZxgGIAEoCUgCiAEBQg4KDF9kZXNjcmlwdGlvbkIICgZfbGFiZWxCBgoEX3RhZyKNAQoTUmVzb2x2ZWRTaGFkb3dUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIwCgZsYXllcnMYBCADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZFNoYWRvd0xheWVyQg4KDF9kZXNjcmlwdGlvbiJ1ChNSZXNvbHZlZFNoYWRvd0xheWVyEhAKCG9mZnNldF94GAEgASgJEhAKCG9mZnNldF95GAIgASgJEgwKBGJsdXIYAyABKAkSDgoGc3ByZWFkGAQgASgJEg0KBWNvbG9yGAUgASgJEg0KBWluc2V0GAYgASgIIowBChNSZXNvbHZlZEJvcmRlclRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEi8KBXZhbHVlGAQgASgLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRCb3JkZXJWYWx1ZUIOCgxfZGVzY3JpcHRpb24iQgoTUmVzb2x2ZWRCb3JkZXJWYWx1ZRINCgVjb2xvchgBIAEoCRINCgV3aWR0aBgCIAEoCRINCgVzdHlsZRgDIAEoCSKbAQoXUmVzb2x2ZWRUeXBvZ3JhcGh5VmFsdWUSEwoLZm9udF9mYW1pbHkYASADKAkSEQoJZm9udF9zaXplGAIgASgJEhMKC2ZvbnRfd2VpZ2h0GAMgASgFEhMKC2xpbmVfaGVpZ2h0GAQgASgBEhYKDmxldHRlcl9zcGFjaW5nGAUgASgJEhYKDnRleHRfdHJhbnNmb3JtGAYgASgJIkQKFkdldERlc2lnblRva2Vuc1JlcXVlc3QSKgoHY2hhbm5lbBgBIAEoDjIZLnB1Ymxpc2gudjEuU2NoZW1hQ2hhbm5lbCJEChdHZXREZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiRgoZVXBkYXRlRGVzaWduVG9rZW5zUmVxdWVzdBIpCghkb2N1bWVudBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiRwoaVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIhwKGlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0In4KG1B1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMSNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiHgocVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdCJKCh1VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiJQojR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1JlcXVlc3QiUQokR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyKcAQoiU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVxdWVzdBIuCgpwdWJsaXNoX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJQCiNTY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiKwopQ2FuY2VsU2NoZWR1bGVkRGVzaWduVG9rZW5zUHVibGlzaFJlcXVlc3QiVwoqQ2FuY2VsU2NoZWR1bGVkRGVzaWduVG9rZW5zUHVibGlzaFJlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyI3CiFDb3VudERlc2lnblRva2VuUmVmZXJlbmNlc1JlcXVlc3QSEgoKdG9rZW5fcGF0aBgBIAEoCSJTCiJDb3VudERlc2lnblRva2VuUmVmZXJlbmNlc1Jlc3BvbnNlEhcKD3BhcmFncmFwaF9jb3VudBgBIAEoBRIUCgxyZWNvcmRfY291bnQYAiABKAUi2QIKEkRlc2lnblRva2VuVmVyc2lvbhIKCgJpZBgBIAEoCRIYChBkZXNpZ25fdG9rZW5zX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiKgocR2V0RGVzaWduVG9rZW5WZXJzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJRCh1HZXREZXNpZ25Ub2tlblZlcnNpb25SZXNwb25zZRIwCgd2ZXJzaW9uGAEgASgLMh8uc2V0dGluZ3MudjEuRGVzaWduVG9rZW5WZXJzaW9uIpgBCh5MaXN0RGVzaWduVG9rZW5WZXJzaW9uc1JlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirwEKH0xpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVzcG9uc2USMQoIdmVyc2lvbnMYASADKAsyHy5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlblZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIm4KIFJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKEAQohUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucxI0CgtuZXdfdmVyc2lvbhgCIAEoCzIfLnNldHRpbmdzLnYxLkRlc2lnblRva2VuVmVyc2lvbiJFChdHZXRQcm9qZWN0U2NoZW1hUmVxdWVzdBIqCgdjaGFubmVsGAEgASgOMhkucHVibGlzaC52MS5TY2hlbWFDaGFubmVsImUKElByb2plY3RTY2hlbWFNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtmaWVsZHNfanNvbhgEIAEoCRITCgtjb25maWdfanNvbhgFIAEoCSLCAQodUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgAiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgBiAEBEg4KBnZhbHVlcxgGIAMoCUITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Io4BChlQcm9qZWN0U2NoZW1hQXV0aFByb3ZpZGVyEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBIsCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCQoHX2NvbmZpZyKfAwoWUHJvamVjdFNjaGVtYU9wZXJhdGlvbhILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIQCghlbmRwb2ludBgDIAEoCRISCgp0aW1lb3V0X21zGAQgASgFEjIKDGlucHV0X3NjaGVtYRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIzCg1vdXRwdXRfc2NoZW1hGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhYKDnN1cHBvcnRzX2FzeW5jGAcgASgIEgwKBGtpbmQYCCABKAkSHgoRYXR0YWNoZWRfdG9fbW9kZWwYCSABKAlIAogBARIVCg1wYXJlbnRfZmllbGRzGAogAygJEjMKDWNhY2hlX2NvbnRyb2wYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDwoNX2lucHV0X3NjaGVtYUIQCg5fb3V0cHV0X3NjaGVtYUIUChJfYXR0YWNoZWRfdG9fbW9kZWxCEAoOX2NhY2hlX2NvbnRyb2wiRAoUUHJvamVjdFNjaGVtYVNlZ21lbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJaXNfYWN0aXZlGAMgASgIIm8KGlByb2plY3RTY2hlbWFQcm9maWxlU2NoZW1hEhMKC2ZpZWxkc19qc29uGAEgASgJEhUKDXB1YmxpY19maWVsZHMYAiADKAkSDwoHdmVyc2lvbhgDIAEoBRIUCgxsb29rdXBzX2pzb24YBCABKAkilAQKGEdldFByb2plY3RTY2hlbWFSZXNwb25zZRIvCgZtb2RlbHMYASADKAsyHy5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hTW9kZWwSPgoKZGltZW5zaW9ucxgCIAMoCzIqLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFDb250ZXh0RGltZW5zaW9uEj4KDmF1dGhfcHJvdmlkZXJzGAMgAygLMiYuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYUF1dGhQcm92aWRlchI3CgpvcGVyYXRpb25zGAQgAygLMiMuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU9wZXJhdGlvbhIzCghzZWdtZW50cxgFIAMoCzIhLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFTZWdtZW50EkQKDnByb2ZpbGVfc2NoZW1hGAcgASgLMicuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYVByb2ZpbGVTY2hlbWFIAIgBARImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGAggASgISAGIAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYCSABKAhIAogBAUIRCg9fcHJvZmlsZV9zY2hlbWFCHAoaX2N1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWRCFwoVX2N1c3RvbWVyX290cF9lbmFibGVkIiwKHlB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSKJAQofUHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIi4KIFVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlUKIVVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIjUKJ0dldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVxdWVzdBIKCgJpZBgBIAEoCSJVCihHZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyLiAgoXQ29udGV4dERpbWVuc2lvblZlcnNpb24SCgoCaWQYASABKAkSHAoUY29udGV4dF9kaW1lbnNpb25faWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSKQoIc25hcHNob3QYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSIvCiFHZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiWwoiR2V0Q29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRI1Cgd2ZXJzaW9uGAEgASgLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24iuwEKI0xpc3RDb250ZXh0RGltZW5zaW9uVmVyc2lvbnNSZXF1ZXN0EhwKFGNvbnRleHRfZGltZW5zaW9uX2lkGAEgASgJEhIKBWFmdGVyGAIgASgJSACIAQESEwoGYmVmb3JlGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBARIRCgRsYXN0GAUgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IrkBCiRMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVzcG9uc2USNgoIdmVyc2lvbnMYASADKAsyJC5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8icwolUmVzdG9yZUNvbnRleHREaW1lbnNpb25WZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgCIAEoCUgAiAEBQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ilQEKJlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SOQoLbmV3X3ZlcnNpb24YAiABKAsyJC5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmVyc2lvbiIdChtQdWJsaXNoUHJvZmlsZVNjaGVtYVJlcXVlc3QikAEKHFB1Ymxpc2hQcm9maWxlU2NoZW1hUmVzcG9uc2USOgoOcHJvZmlsZV9zY2hlbWEYASABKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVTY2hlbWESNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiHwodVW5wdWJsaXNoUHJvZmlsZVNjaGVtYVJlcXVlc3QiXAoeVW5wdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hIiYKJEdldFByb2ZpbGVTY2hlbWFQdWJsaXNoU3RhdHVzUmVxdWVzdCJSCiVHZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyLcAgoUUHJvZmlsZVNjaGVtYVZlcnNpb24SCgoCaWQYASABKAkSGQoRcHJvZmlsZV9zY2hlbWFfaWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSKQoIc25hcHNob3QYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSIsCh5HZXRQcm9maWxlU2NoZW1hVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiVQofR2V0UHJvZmlsZVNjaGVtYVZlcnNpb25SZXNwb25zZRIyCgd2ZXJzaW9uGAEgASgLMiEuc2V0dGluZ3MudjEuUHJvZmlsZVNjaGVtYVZlcnNpb24imgEKIExpc3RQcm9maWxlU2NoZW1hVmVyc2lvbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IrMBCiFMaXN0UHJvZmlsZVNjaGVtYVZlcnNpb25zUmVzcG9uc2USMwoIdmVyc2lvbnMYASADKAsyIS5zZXR0aW5ncy52MS5Qcm9maWxlU2NoZW1hVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8icAoiUmVzdG9yZVByb2ZpbGVTY2hlbWFWZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgCIAEoCUgAiAEBQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ikQEKI1Jlc3RvcmVQcm9maWxlU2NoZW1hVmVyc2lvblJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYRI2CgtuZXdfdmVyc2lvbhgCIAEoCzIhLnNldHRpbmdzLnYxLlByb2ZpbGVTY2hlbWFWZXJzaW9uIh0KG1B1Ymxpc2hQcm9qZWN0U2NoZW1hUmVxdWVzdCL2AQocUHVibGlzaFByb2plY3RTY2hlbWFSZXNwb25zZRIYChBtb2RlbHNfcHVibGlzaGVkGAEgASgFEhwKFG9wZXJhdGlvbnNfcHVibGlzaGVkGAIgASgFEiQKHGNvbnRleHRfZGltZW5zaW9uc19wdWJsaXNoZWQYAyABKAUSIAoYYXV0aF9wcm92aWRlcnNfcHVibGlzaGVkGAQgASgFEiAKGHByb2ZpbGVfc2NoZW1hX3B1Ymxpc2hlZBgFIAEoCBI0ChBicmVha2luZ19jaGFuZ2VzGAYgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIgCh5HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1JlcXVlc3QigwEKH0dldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USKgoHcGVuZGluZxgBIAMoCzIZLnB1Ymxpc2gudjEuUGVuZGluZ0VudGl0eRI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSKsAQomU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiWwonU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iOwotQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJImIKLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiKdAQojU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QSLgoKcHVibGlzaF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiYgokU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hIiwKKkNhbmNlbFNjaGVkdWxlZFByb2ZpbGVTY2hlbWFQdWJsaXNoUmVxdWVzdCJpCitDYW5jZWxTY2hlZHVsZWRQcm9maWxlU2NoZW1hUHVibGlzaFJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hKpcBChFTaGFyZVJlc291cmNlVHlwZRIjCh9TSEFSRV9SRVNPVVJDRV9UWVBFX1VOU1BFQ0lGSUVEEAASHgoaU0hBUkVfUkVTT1VSQ0VfVFlQRV9SRUNPUkQQARIcChhTSEFSRV9SRVNPVVJDRV9UWVBFX0ZJTEUQAhIfChtTSEFSRV9SRVNPVVJDRV9UWVBFX1BST0ZJTEUQAyqFAQoPU2hhcmVQZXJtaXNzaW9uEiAKHFNIQVJFX1BFUk1JU1NJT05fVU5TUEVDSUZJRUQQABIZChVTSEFSRV9QRVJNSVNTSU9OX1ZJRVcQARIZChVTSEFSRV9QRVJNSVNTSU9OX0VESVQQAhIaChZTSEFSRV9QRVJNSVNTSU9OX0FETUlOEAMqewoLU2hhcmVTdGF0dXMSHAoYU0hBUkVfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGAoUU0hBUkVfU1RBVFVTX1BFTkRJTkcQARIZChVTSEFSRV9TVEFUVVNfQUNDRVBURUQQAhIZChVTSEFSRV9TVEFUVVNfREVDTElORUQQAyqtAQodQ3VzdG9tZXJQcm9maWxlTG9va3VwQXVkaWVuY2USMAosQ1VTVE9NRVJfUFJPRklMRV9MT09LVVBfQVVESUVOQ0VfVU5TUEVDSUZJRUQQABItCilDVVNUT01FUl9QUk9GSUxFX0xPT0tVUF9BVURJRU5DRV9PUEVSQVRPUhABEisKJ0NVU1RPTUVSX1BST0ZJTEVfTE9PS1VQX0FVRElFTkNFX1BVQkxJQxACMqFMCg9TZXR0aW5nc1NlcnZpY2USUAoLR2V0U2V0dGluZ3MSHy5zZXR0aW5ncy52MS5HZXRTZXR0aW5nc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5HZXRTZXR0aW5nc1Jlc3BvbnNlElYKDVVwZGF0ZVNldHRpbmcSIS5zZXR0aW5ncy52MS5VcGRhdGVTZXR0aW5nUmVxdWVzdBoiLnNldHRpbmdzLnYxLlVwZGF0ZVNldHRpbmdSZXNwb25zZRJWCg1EZWxldGVTZXR0aW5nEiEuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ1JlcXVlc3QaIi5zZXR0aW5ncy52MS5EZWxldGVTZXR0aW5nUmVzcG9uc2USdwoYRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5Eiwuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVxdWVzdBotLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlc3BvbnNlElwKD0J1bGtTZXRTZXR0aW5ncxIjLnNldHRpbmdzLnYxLkJ1bGtTZXRTZXR0aW5nc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5CdWxrU2V0U2V0dGluZ3NSZXNwb25zZRJWCg1MaXN0QXVkaXRMb2dzEiEuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1JlcXVlc3QaIi5zZXR0aW5ncy52MS5MaXN0QXVkaXRMb2dzUmVzcG9uc2USTQoKQ3JlYXRlTm90ZRIeLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuQ3JlYXRlTm90ZVJlc3BvbnNlEkQKB0dldE5vdGUSGy5zZXR0aW5ncy52MS5HZXROb3RlUmVxdWVzdBocLnNldHRpbmdzLnYxLkdldE5vdGVSZXNwb25zZRJKCglMaXN0Tm90ZXMSHS5zZXR0aW5ncy52MS5MaXN0Tm90ZXNSZXF1ZXN0Gh4uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVzcG9uc2USTQoKVXBkYXRlTm90ZRIeLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuVXBkYXRlTm90ZVJlc3BvbnNlEk0KCkRlbGV0ZU5vdGUSHi5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGVSZXNwb25zZRJQCgtSZXNvbHZlTm90ZRIfLnNldHRpbmdzLnYxLlJlc29sdmVOb3RlUmVxdWVzdBogLnNldHRpbmdzLnYxLlJlc29sdmVOb3RlUmVzcG9uc2USVgoNVW5yZXNvbHZlTm90ZRIhLnNldHRpbmdzLnYxLlVucmVzb2x2ZU5vdGVSZXF1ZXN0GiIuc2V0dGluZ3MudjEuVW5yZXNvbHZlTm90ZVJlc3BvbnNlElAKC1NlYXJjaE5vdGVzEh8uc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXF1ZXN0GiAuc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXNwb25zZRJZCg5MaXN0TXlNZW50aW9ucxIiLnNldHRpbmdzLnYxLkxpc3RNeU1lbnRpb25zUmVxdWVzdBojLnNldHRpbmdzLnYxLkxpc3RNeU1lbnRpb25zUmVzcG9uc2USaAoTVXBkYXRlTWVudGlvblN0YXR1cxInLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0Giguc2V0dGluZ3MudjEuVXBkYXRlTWVudGlvblN0YXR1c1Jlc3BvbnNlEl8KEE1hcmtNZW50aW9uc1NlZW4SJC5zZXR0aW5ncy52MS5NYXJrTWVudGlvbnNTZWVuUmVxdWVzdBolLnNldHRpbmdzLnYxLk1hcmtNZW50aW9uc1NlZW5SZXNwb25zZRJQCgtMaXN0TG9jYWxlcxIfLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVzcG9uc2USSgoJR2V0TG9jYWxlEh0uc2V0dGluZ3MudjEuR2V0TG9jYWxlUmVxdWVzdBoeLnNldHRpbmdzLnYxLkdldExvY2FsZVJlc3BvbnNlEl8KEEdldERlZmF1bHRMb2NhbGUSJC5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldERlZmF1bHRMb2NhbGVSZXNwb25zZRJcCg9HZXRMb2NhbGVCeUNvZGUSIy5zZXR0aW5ncy52MS5HZXRMb2NhbGVCeUNvZGVSZXF1ZXN0GiQuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USUwoMQ3JlYXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuQ3JlYXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlc3BvbnNlElMKDFVwZGF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLlVwZGF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXNwb25zZRJTCgxEZWxldGVMb2NhbGUSIC5zZXR0aW5ncy52MS5EZWxldGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVzcG9uc2USYgoRR2V0TmF2UHJlZmVyZW5jZXMSJS5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QaJi5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEmsKFFVwZGF0ZU5hdlByZWZlcmVuY2VzEiguc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXF1ZXN0Gikuc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXNwb25zZRJlChJMaXN0UmVjZW50bHlPcGVuZWQSJi5zZXR0aW5ncy52MS5MaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Gicuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTVHJhY2tSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuVHJhY2tSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmsKFFJlbW92ZVJlY2VudGx5T3BlbmVkEiguc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXF1ZXN0Gikuc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXNwb25zZRJoChNDbGVhclJlY2VudGx5T3BlbmVkEicuc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QaKC5zZXR0aW5ncy52MS5DbGVhclJlY2VudGx5T3BlbmVkUmVzcG9uc2USUAoLQ3JlYXRlU2hhcmUSHy5zZXR0aW5ncy52MS5DcmVhdGVTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5DcmVhdGVTaGFyZVJlc3BvbnNlEkcKCEdldFNoYXJlEhwuc2V0dGluZ3MudjEuR2V0U2hhcmVSZXF1ZXN0Gh0uc2V0dGluZ3MudjEuR2V0U2hhcmVSZXNwb25zZRJNCgpMaXN0U2hhcmVzEh4uc2V0dGluZ3MudjEuTGlzdFNoYXJlc1JlcXVlc3QaHy5zZXR0aW5ncy52MS5MaXN0U2hhcmVzUmVzcG9uc2USUAoLVXBkYXRlU2hhcmUSHy5zZXR0aW5ncy52MS5VcGRhdGVTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5VcGRhdGVTaGFyZVJlc3BvbnNlElAKC1Jldm9rZVNoYXJlEh8uc2V0dGluZ3MudjEuUmV2b2tlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuUmV2b2tlU2hhcmVSZXNwb25zZRJQCgtBY2NlcHRTaGFyZRIfLnNldHRpbmdzLnYxLkFjY2VwdFNoYXJlUmVxdWVzdBogLnNldHRpbmdzLnYxLkFjY2VwdFNoYXJlUmVzcG9uc2USUwoMRGVjbGluZVNoYXJlEiAuc2V0dGluZ3MudjEuRGVjbGluZVNoYXJlUmVxdWVzdBohLnNldHRpbmdzLnYxLkRlY2xpbmVTaGFyZVJlc3BvbnNlEm4KFUxpc3RDb250ZXh0RGltZW5zaW9ucxIpLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvbnNSZXNwb25zZRJoChNHZXRDb250ZXh0RGltZW5zaW9uEicuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblJlcXVlc3QaKC5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USdwoYR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5Eiwuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5UmVxdWVzdBotLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25CeUtleVJlc3BvbnNlEnEKFkNyZWF0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJxChZVcGRhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWRGVsZXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuRGVsZXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnoKGUdldENvbnRleHREaW1lbnNpb25WYWx1ZXMSLS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVxdWVzdBouLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXNwb25zZRJ3ChhHZXRDdXN0b21lclByb2ZpbGVTY2hlbWESLC5zZXR0aW5ncy52MS5HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0Gi0uc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2USZQoSR2V0Q3VzdG9tZXJQcm9maWxlEiYuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBonLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEm4KFUNyZWF0ZUN1c3RvbWVyUHJvZmlsZRIpLnNldHRpbmdzLnYxLkNyZWF0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaKi5zZXR0aW5ncy52MS5DcmVhdGVDdXN0b21lclByb2ZpbGVSZXNwb25zZRJuChVVcGRhdGVDdXN0b21lclByb2ZpbGUSKS5zZXR0aW5ncy52MS5VcGRhdGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0Giouc2V0dGluZ3MudjEuVXBkYXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USgAEKG1VwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYRIvLnNldHRpbmdzLnYxLlVwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlcXVlc3QaMC5zZXR0aW5ncy52MS5VcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWFSZXNwb25zZRJxChZTZWFyY2hDdXN0b21lclByb2ZpbGVzEiouc2V0dGluZ3MudjEuU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1JlcXVlc3QaKy5zZXR0aW5ncy52MS5TZWFyY2hDdXN0b21lclByb2ZpbGVzUmVzcG9uc2USbgoVTG9va3VwQ3VzdG9tZXJQcm9maWxlEikuc2V0dGluZ3MudjEuTG9va3VwQ3VzdG9tZXJQcm9maWxlUmVxdWVzdBoqLnNldHRpbmdzLnYxLkxvb2t1cEN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEm4KFURlbGV0ZUN1c3RvbWVyUHJvZmlsZRIpLnNldHRpbmdzLnYxLkRlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaKi5zZXR0aW5ncy52MS5EZWxldGVDdXN0b21lclByb2ZpbGVSZXNwb25zZRJfChBHZXRFZGl0b3JDb25maWdzEiQuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRFZGl0b3JDb25maWdzUmVzcG9uc2USZQoSTGlzdFZhcmlhbnRDYXRhbG9nEiYuc2V0dGluZ3MudjEuTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEnEKFkdldFZhcmlhbnRDYXRhbG9nRW50cnkSKi5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBorLnNldHRpbmdzLnYxLkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5DcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLkRlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRKGAQodR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnkSMS5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEo8BCiBFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeRI0LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBo1LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USXwoQR2V0UHJvamVjdFNjaGVtYRIkLnNldHRpbmdzLnYxLkdldFByb2plY3RTY2hlbWFSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0UHJvamVjdFNjaGVtYVJlc3BvbnNlEnQKF1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uEisuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giwuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uEi0uc2V0dGluZ3MudjEuVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USjwEKIEdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzEjQuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXF1ZXN0GjUuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRKMAQofU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaBIzLnNldHRpbmdzLnYxLlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0GjQuc2V0dGluZ3MudjEuU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEqEBCiZDYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaBI6LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBo7LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USfQoaR2V0Q29udGV4dERpbWVuc2lvblZlcnNpb24SLi5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaLy5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlc3BvbnNlEoMBChxMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zEjAuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1JlcXVlc3QaMS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVzcG9uc2USiQEKHlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvbhIyLnNldHRpbmdzLnYxLlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaMy5zZXR0aW5ncy52MS5SZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRJ0ChdHZXRQcm9maWxlU2NoZW1hVmVyc2lvbhIrLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USegoZTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9ucxItLnNldHRpbmdzLnYxLkxpc3RQcm9maWxlU2NoZW1hVmVyc2lvbnNSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9uc1Jlc3BvbnNlEoABChtSZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb24SLy5zZXR0aW5ncy52MS5SZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb25SZXF1ZXN0GjAuc2V0dGluZ3MudjEuUmVzdG9yZVByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USawoUUHVibGlzaFByb2ZpbGVTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEnEKFlVucHVibGlzaFByb2ZpbGVTY2hlbWESKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hQcm9maWxlU2NoZW1hUmVxdWVzdBorLnNldHRpbmdzLnYxLlVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXNwb25zZRKGAQodR2V0UHJvZmlsZVNjaGVtYVB1Ymxpc2hTdGF0dXMSMS5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1JlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoMBChxTY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoEjAuc2V0dGluZ3MudjEuU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QaMS5zZXR0aW5ncy52MS5TY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoUmVzcG9uc2USmAEKI0NhbmNlbFNjaGVkdWxlZFByb2ZpbGVTY2hlbWFQdWJsaXNoEjcuc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXF1ZXN0Gjguc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRJ0ChdHZXRQcm9qZWN0UHVibGlzaFN0YXR1cxIrLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USawoUUHVibGlzaFByb2plY3RTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlElwKD0dldERlc2lnblRva2VucxIjLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNSZXNwb25zZRJlChJVcGRhdGVEZXNpZ25Ub2tlbnMSJi5zZXR0aW5ncy52MS5VcGRhdGVEZXNpZ25Ub2tlbnNSZXF1ZXN0Gicuc2V0dGluZ3MudjEuVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USaAoTUHVibGlzaERlc2lnblRva2VucxInLnNldHRpbmdzLnYxLlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0Giguc2V0dGluZ3MudjEuUHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEm4KFVVucHVibGlzaERlc2lnblRva2VucxIpLnNldHRpbmdzLnYxLlVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRKDAQocR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1cxIwLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoABChtTY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2gSLy5zZXR0aW5ncy52MS5TY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXF1ZXN0GjAuc2V0dGluZ3MudjEuU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVzcG9uc2USlQEKIkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2gSNi5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWREZXNpZ25Ub2tlbnNQdWJsaXNoUmVxdWVzdBo3LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRJ9ChpDb3VudERlc2lnblRva2VuUmVmZXJlbmNlcxIuLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVxdWVzdBovLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVzcG9uc2USbgoVR2V0RGVzaWduVG9rZW5WZXJzaW9uEikuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5WZXJzaW9uUmVxdWVzdBoqLnNldHRpbmdzLnYxLkdldERlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlEnQKF0xpc3REZXNpZ25Ub2tlblZlcnNpb25zEisuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXF1ZXN0Giwuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXNwb25zZRJ6ChlSZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uEi0uc2V0dGluZ3MudjEuUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5SZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3NldHRpbmdzL3YxO3NldHRpbmdzdjFiBnByb3RvMw", [file_google_protobuf_struct6, file_google_protobuf_timestamp7, file_expressions_v1_expressions, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
|
|
717
755
|
var SettingSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 0);
|
|
718
756
|
var NoteSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 2);
|
|
719
757
|
var GetSettingsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 4);
|
|
@@ -743,7 +781,6 @@ var CreateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_set
|
|
|
743
781
|
var UpdateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 74);
|
|
744
782
|
var DeleteContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 76);
|
|
745
783
|
var GetContextDimensionValuesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 78);
|
|
746
|
-
var CustomerProfileFieldSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 80);
|
|
747
784
|
var CustomerProfileSchemaSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 82);
|
|
748
785
|
var GetCustomerProfileSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 83);
|
|
749
786
|
var VariantCatalogEntrySchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 85);
|
|
@@ -756,17 +793,39 @@ var GetCustomerProfileRequestSchema = /* @__PURE__ */ messageDesc11(file_setting
|
|
|
756
793
|
var CreateCustomerProfileRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 98);
|
|
757
794
|
var UpdateCustomerProfileRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 100);
|
|
758
795
|
var UpdateCustomerProfileSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 102);
|
|
759
|
-
var
|
|
760
|
-
var
|
|
761
|
-
var
|
|
762
|
-
var
|
|
763
|
-
var
|
|
764
|
-
var
|
|
765
|
-
var
|
|
766
|
-
var
|
|
767
|
-
var
|
|
768
|
-
var
|
|
769
|
-
var
|
|
796
|
+
var GetEditorConfigsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 112);
|
|
797
|
+
var GetDefaultLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 125);
|
|
798
|
+
var GetLocaleByCodeRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 127);
|
|
799
|
+
var DeleteSettingRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 131);
|
|
800
|
+
var GetDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 152);
|
|
801
|
+
var UpdateDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 154);
|
|
802
|
+
var PublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 156);
|
|
803
|
+
var UnpublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 158);
|
|
804
|
+
var GetDesignTokensPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 160);
|
|
805
|
+
var ScheduleDesignTokensPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 162);
|
|
806
|
+
var CancelScheduledDesignTokensPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 164);
|
|
807
|
+
var CountDesignTokenReferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 166);
|
|
808
|
+
var GetDesignTokenVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 169);
|
|
809
|
+
var ListDesignTokenVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 171);
|
|
810
|
+
var RestoreDesignTokenVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 173);
|
|
811
|
+
var PublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 183);
|
|
812
|
+
var UnpublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 185);
|
|
813
|
+
var GetContextDimensionPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 187);
|
|
814
|
+
var GetContextDimensionVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 190);
|
|
815
|
+
var ListContextDimensionVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 192);
|
|
816
|
+
var RestoreContextDimensionVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 194);
|
|
817
|
+
var PublishProfileSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 196);
|
|
818
|
+
var UnpublishProfileSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 198);
|
|
819
|
+
var GetProfileSchemaPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 200);
|
|
820
|
+
var GetProfileSchemaVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 203);
|
|
821
|
+
var ListProfileSchemaVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 205);
|
|
822
|
+
var RestoreProfileSchemaVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 207);
|
|
823
|
+
var PublishProjectSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 209);
|
|
824
|
+
var GetProjectPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 211);
|
|
825
|
+
var ScheduleContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 213);
|
|
826
|
+
var CancelScheduledContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 215);
|
|
827
|
+
var ScheduleProfileSchemaPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 217);
|
|
828
|
+
var CancelScheduledProfileSchemaPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 219);
|
|
770
829
|
var CustomerProfileLookupAudienceSchema = /* @__PURE__ */ enumDesc7(file_settings_v1_settings, 3);
|
|
771
830
|
var CustomerProfileLookupAudience = /* @__PURE__ */ tsEnum7(CustomerProfileLookupAudienceSchema);
|
|
772
831
|
var SettingsService = /* @__PURE__ */ serviceDesc7(file_settings_v1_settings, 0);
|
|
@@ -787,9 +846,11 @@ var UpdateFileMetadataRequestSchema = /* @__PURE__ */ messageDesc12(file_storage
|
|
|
787
846
|
var DeleteFileRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 16);
|
|
788
847
|
var PermanentlyDeleteFileRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 18);
|
|
789
848
|
var RestoreFileRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 20);
|
|
849
|
+
var EmptyTrashRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 22);
|
|
790
850
|
var TrackFileUsageRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 24);
|
|
791
851
|
var RemoveFileUsageRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 26);
|
|
792
852
|
var CleanupOrphanedFilesRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 28);
|
|
853
|
+
var RetryFileGenerationRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 30);
|
|
793
854
|
var StorageService = /* @__PURE__ */ serviceDesc8(file_storage_v1_storage, 0);
|
|
794
855
|
|
|
795
856
|
// ../../packages/proto-ts/src/operations/v1/operations_pb.js
|
|
@@ -799,19 +860,40 @@ var file_operations_v1_operations = /* @__PURE__ */ fileDesc13("Ch5vcGVyYXRpb25z
|
|
|
799
860
|
var OperationSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 2);
|
|
800
861
|
var OperationExecutionSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 4);
|
|
801
862
|
var DeadLetterEntrySchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 5);
|
|
802
|
-
var
|
|
863
|
+
var ListOperationsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 9);
|
|
803
864
|
var GetOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 11);
|
|
804
865
|
var CreateOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 13);
|
|
805
866
|
var UpdateOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 15);
|
|
806
867
|
var DeleteOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 17);
|
|
807
868
|
var ExecuteOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 19);
|
|
869
|
+
var ListOperationExecutionsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 27);
|
|
870
|
+
var GetOperationExecutionStatsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 29);
|
|
808
871
|
var ListDeadLetterEntriesRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 31);
|
|
809
872
|
var RetryDeadLetterEntryRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 33);
|
|
810
873
|
var DismissDeadLetterEntryRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 35);
|
|
874
|
+
var BulkDismissDeadLettersRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 37);
|
|
875
|
+
var DismissAllPendingDeadLettersRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 39);
|
|
876
|
+
var BulkRetryDeadLettersRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 41);
|
|
877
|
+
var ListDeadLetterOperationKeysRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 43);
|
|
878
|
+
var GetDeadLetterStatsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 45);
|
|
879
|
+
var ListCircuitStatesRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 47);
|
|
880
|
+
var ResetCircuitRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 49);
|
|
811
881
|
var GetSigningSecretRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 51);
|
|
882
|
+
var RegenerateSigningSecretRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 53);
|
|
883
|
+
var CancelOperationExecutionRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 59);
|
|
884
|
+
var CancelOperationExecutionsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 61);
|
|
885
|
+
var GetOperationVersionRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 74);
|
|
886
|
+
var ListOperationVersionsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 76);
|
|
887
|
+
var RestoreOperationVersionRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 78);
|
|
812
888
|
var PublishOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 80);
|
|
889
|
+
var UnpublishOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 82);
|
|
890
|
+
var GetOperationPublishStatusRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 84);
|
|
891
|
+
var ScheduleOperationPublishRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 86);
|
|
892
|
+
var CancelScheduledOperationPublishRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 88);
|
|
813
893
|
var OperationKindSchema = /* @__PURE__ */ enumDesc9(file_operations_v1_operations, 0);
|
|
814
894
|
var OperationKind = /* @__PURE__ */ tsEnum9(OperationKindSchema);
|
|
895
|
+
var ExecutionModeSchema = /* @__PURE__ */ enumDesc9(file_operations_v1_operations, 1);
|
|
896
|
+
var ExecutionMode = /* @__PURE__ */ tsEnum9(ExecutionModeSchema);
|
|
815
897
|
var OperationsService = /* @__PURE__ */ serviceDesc9(file_operations_v1_operations, 0);
|
|
816
898
|
|
|
817
899
|
// ../../packages/proto-ts/src/hooks/v1/hooks_pb.js
|
|
@@ -834,18 +916,26 @@ var HooksService = /* @__PURE__ */ serviceDesc10(file_hooks_v1_hooks, 0);
|
|
|
834
916
|
// ../../packages/proto-ts/src/notifications/v1/notifications_pb.js
|
|
835
917
|
import { enumDesc as enumDesc10, fileDesc as fileDesc15, messageDesc as messageDesc15, serviceDesc as serviceDesc11, tsEnum as tsEnum10 } from "@bufbuild/protobuf/codegenv2";
|
|
836
918
|
import { file_google_protobuf_struct as file_google_protobuf_struct10, file_google_protobuf_timestamp as file_google_protobuf_timestamp11 } from "@bufbuild/protobuf/wkt";
|
|
837
|
-
var file_notifications_v1_notifications = /* @__PURE__ */ fileDesc15("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEisAUKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEjAKBHR5cGUYAyABKA4yIi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblR5cGUSDQoFdGl0bGUYBCABKAkSFAoHbWVzc2FnZRgFIAEoCUgAiAEBEjIKDHJpY2hfY29udGVudBgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARJCCgtzb3VyY2VfdHlwZRgKIAEoDjIoLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU291cmNlVHlwZUgCiAEBEhYKCXNvdXJjZV9pZBgLIAEoCUgDiAEBEhcKCmFjdGlvbl91cmwYDCABKAlIBIgBARIuCghtZXRhZGF0YRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIPCgdpc19yZWFkGBQgASgIEjAKB3JlYWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESEQoJdGVuYW50X2lkGB4gASgJEhcKCnByb2plY3RfaWQYHyABKAlIB4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBQgoKCF9tZXNzYWdlQg8KDV9yaWNoX2NvbnRlbnRCDgoMX3NvdXJjZV90eXBlQgwKCl9zb3VyY2VfaWRCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0Qg0KC19wcm9qZWN0X2lkQg0KC19leHBpcmVzX2F0IskBChhMaXN0Tm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IsMBChlMaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEjUKDW5vdGlmaWNhdGlvbnMYASADKAsyHi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIUCgx1bnJlYWRfY291bnQYAyABKAUSKwoJcGFnZV9pbmZvGAQgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgFIAMoCUIMCgpfcGFnZV9pbmZvIikKG01hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSIvChxNYXJrTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiYQofTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBI1CgR0eXBlGAEgASgOMiIubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UeXBlSACIAQFCBwoFX3R5cGUiMQogTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USDQoFY291bnQYASABKAUiJwoZRGVsZXRlTm90aWZpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhcKFUdldFVucmVhZENvdW50UmVxdWVzdCInChZHZXRVbnJlYWRDb3VudFJlc3BvbnNlEg0KBWNvdW50GAEgASgFIrABChdTZW5kQW5ub3VuY2VtZW50UmVxdWVzdBINCgV0aXRsZRgBIAEoCRIUCgdtZXNzYWdlGAIgASgJSACIAQESFwoKYWN0aW9uX3VybBgDIAEoCUgBiAEBEhgKC3RhcmdldF90eXBlGAQgASgJSAKIAQESEgoKdGFyZ2V0X2lkcxgFIAMoCUIKCghfbWVzc2FnZUINCgtfYWN0aW9uX3VybEIOCgxfdGFyZ2V0X3R5cGUiUAoYU2VuZEFubm91bmNlbWVudFJlc3BvbnNlEjQKDG5vdGlmaWNhdGlvbhgBIAEoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uIpgBCh5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiswEKH0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2USNQoNYW5ub3VuY2VtZW50cxgBIAMoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKXAwoUQ3VzdG9tZXJOb3RpZmljYXRpb24SCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSFAoHbWVzc2FnZRgEIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAUgASgJSAGIAQESFwoKYWN0aW9uX3VybBgGIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEg8KB2lzX3JlYWQYCCABKAgSMAoHcmVhZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0ItEBCiBMaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QivQEKIUxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXNwb25zZRI9Cg1ub3RpZmljYXRpb25zGAEgAygLMiYubm90aWZpY2F0aW9ucy52MS5DdXN0b21lck5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8izwQKH1NlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFdGl0bGUYAiABKAkSFAoHbWVzc2FnZRgDIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAQgASgJSAGIAQESFwoKYWN0aW9uX3VybBgFIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWRlZXBfbGluaxgKIAEoCUgEiAEBEhIKBWJhZGdlGAsgASgFSAWIAQESFgoJdGhyZWFkX2lkGAwgASgJSAaIAQESLwoJcHVzaF9kYXRhGA0gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhoKDWVtYWlsX3N1YmplY3QYFCABKAlICIgBARIXCgplbWFpbF9ib2R5GBUgASgJSAmIAQESGwoOZW1haWxfcmVwbHlfdG8YFiABKAlICogBARIuCgplbWFpbF9jdGFzGBcgAygLMhoubm90aWZpY2F0aW9ucy52MS5FbWFpbEN0YUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9kZWVwX2xpbmtCCAoGX2JhZGdlQgwKCl90aHJlYWRfaWRCDAoKX3B1c2hfZGF0YUIQCg5fZW1haWxfc3ViamVjdEINCgtfZW1haWxfYm9keUIRCg9fZW1haWxfcmVwbHlfdG8iJgoIRW1haWxDdGESDQoFbGFiZWwYASABKAkSCwoDdXJsGAIgASgJImAKIFNlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEjwKDG5vdGlmaWNhdGlvbhgBIAEoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24iuAEKI1NlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0EhQKDGN1c3RvbWVyX2lkcxgBIAMoCRINCgV0aXRsZRgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQESFQoIY2F0ZWdvcnkYBCABKAlIAYgBARIXCgphY3Rpb25fdXJsGAUgASgJSAKIAQFCCgoIX21lc3NhZ2VCCwoJX2NhdGVnb3J5Qg0KC19hY3Rpb25fdXJsIjUKJFNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRINCgVjb3VudBgBIAEoBSIxCiNNYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSI3CiRNYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJTCidNYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBAUIOCgxfY3VzdG9tZXJfaWQiOQooTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRINCgVjb3VudBgBIAEoBSLQAQofTGlzdFByb2plY3ROb3RpZmljYXRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QivAEKIExpc3RQcm9qZWN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEj0KDW5vdGlmaWNhdGlvbnMYASADKAsyJi5ub3RpZmljYXRpb25zLnYxLkN1c3RvbWVyTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJvChZOb3RpZmljYXRpb25QcmVmZXJlbmNlEhAKCGNhdGVnb3J5GAEgASgJEhUKDWVtYWlsX2VuYWJsZWQYAiABKAgSFAoMcHVzaF9lbmFibGVkGAMgASgIEhYKDmluX2FwcF9lbmFibGVkGAQgASgIIjgKIUdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJjCiJHZXROb3RpZmljYXRpb25QcmVmZXJlbmNlc1Jlc3BvbnNlEj0KC3ByZWZlcmVuY2VzGAEgAygLMigubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25QcmVmZXJlbmNlItYBCiNVcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIQCghjYXRlZ29yeRgCIAEoCRIaCg1lbWFpbF9lbmFibGVkGAMgASgISACIAQESGQoMcHVzaF9lbmFibGVkGAQgASgISAGIAQESGwoOaW5fYXBwX2VuYWJsZWQYBSABKAhIAogBAUIQCg5fZW1haWxfZW5hYmxlZEIPCg1fcHVzaF9lbmFibGVkQhEKD19pbl9hcHBfZW5hYmxlZCI3CiRVcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJ8ChpSZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRINCgV0b2tlbhgCIAEoCRIQCghwbGF0Zm9ybRgDIAEoCRIYCgtkZXZpY2VfbmFtZRgEIAEoCUgAiAEBQg4KDF9kZXZpY2VfbmFtZSIuChtSZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCItChxVbnJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIjAKHVVucmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiyAMKDlB1c2hDcmVkZW50aWFsEgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIcGxhdGZvcm0YAyABKAkSFgoJYnVuZGxlX2lkGAogASgJSACIAQESGQoMYXBuc190ZWFtX2lkGAsgASgJSAGIAQESGAoLYXBuc19rZXlfaWQYDCABKAlIAogBARIcCg9hcG5zX3Byb2R1Y3Rpb24YDSABKAhIA4gBARIbCg5mY21fcHJvamVjdF9pZBgUIAEoCUgEiAEBEh0KEGZjbV9jbGllbnRfZW1haWwYFSABKAlIBYgBARISCgpoYXNfc2VjcmV0GB4gASgIEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9idW5kbGVfaWRCDwoNX2FwbnNfdGVhbV9pZEIOCgxfYXBuc19rZXlfaWRCEgoQX2FwbnNfcHJvZHVjdGlvbkIRCg9fZmNtX3Byb2plY3RfaWRCEwoRX2ZjbV9jbGllbnRfZW1haWwi3wIKG1VwbG9hZFB1c2hDcmVkZW50aWFsUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhAKCHBsYXRmb3JtGAIgASgJEhgKC2FwbnNfcDhfa2V5GAogASgJSACIAQESFgoJYnVuZGxlX2lkGAsgASgJSAGIAQESGQoMYXBuc190ZWFtX2lkGAwgASgJSAKIAQESGAoLYXBuc19rZXlfaWQYDSABKAlIA4gBARIcCg9hcG5zX3Byb2R1Y3Rpb24YDiABKAhIBIgBARIlChhmY21fc2VydmljZV9hY2NvdW50X2pzb24YFCABKAlIBYgBAUIOCgxfYXBuc19wOF9rZXlCDAoKX2J1bmRsZV9pZEIPCg1fYXBuc190ZWFtX2lkQg4KDF9hcG5zX2tleV9pZEISChBfYXBuc19wcm9kdWN0aW9uQhsKGV9mY21fc2VydmljZV9hY2NvdW50X2pzb24iVAocVXBsb2FkUHVzaENyZWRlbnRpYWxSZXNwb25zZRI0CgpjcmVkZW50aWFsGAEgASgLMiAubm90aWZpY2F0aW9ucy52MS5QdXNoQ3JlZGVudGlhbCIwChpMaXN0UHVzaENyZWRlbnRpYWxzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlQKG0xpc3RQdXNoQ3JlZGVudGlhbHNSZXNwb25zZRI1CgtjcmVkZW50aWFscxgBIAMoCzIgLm5vdGlmaWNhdGlvbnMudjEuUHVzaENyZWRlbnRpYWwiKQobRGVsZXRlUHVzaENyZWRlbnRpYWxSZXF1ZXN0EgoKAmlkGAEgASgJIi8KHERlbGV0ZVB1c2hDcmVkZW50aWFsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCrIAgoQTm90aWZpY2F0aW9uVHlwZRIhCh1OT1RJRklDQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEiMKH05PVElGSUNBVElPTl9UWVBFX0pPQl9DT01QTEVURUQQARIgChxOT1RJRklDQVRJT05fVFlQRV9KT0JfRkFJTEVEEAISIgoeTk9USUZJQ0FUSU9OX1RZUEVfSk9CX1BST0dSRVNTEAMSHQoZTk9USUZJQ0FUSU9OX1RZUEVfTUVOVElPThAEEiAKHE5PVElGSUNBVElPTl9UWVBFX05PVEVfUkVQTFkQBRIjCh9OT1RJRklDQVRJT05fVFlQRV9OT1RFX1JFU09MVkVEEAYSHAoYTk9USUZJQ0FUSU9OX1RZUEVfU1lTVEVNEAcSIgoeTk9USUZJQ0FUSU9OX1RZUEVfQU5OT1VOQ0VNRU5UEAgq9QEKFk5vdGlmaWNhdGlvblNvdXJjZVR5cGUSKAokTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1VOU1BFQ0lGSUVEEAASIwofTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1JFQ09SRBABEiIKHk5PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9NT0RFTBACEiEKHU5PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9OT1RFEAMSIAocTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX0pPQhAEEiMKH05PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9TWVNURU0QBTL1EwoUTm90aWZpY2F0aW9uc1NlcnZpY2USbAoRTGlzdE5vdGlmaWNhdGlvbnMSKi5ub3RpZmljYXRpb25zLnYxLkxpc3ROb3RpZmljYXRpb25zUmVxdWVzdBorLm5vdGlmaWNhdGlvbnMudjEuTGlzdE5vdGlmaWNhdGlvbnNSZXNwb25zZRJjCg5HZXRVbnJlYWRDb3VudBInLm5vdGlmaWNhdGlvbnMudjEuR2V0VW5yZWFkQ291bnRSZXF1ZXN0Gigubm90aWZpY2F0aW9ucy52MS5HZXRVbnJlYWRDb3VudFJlc3BvbnNlEnUKFE1hcmtOb3RpZmljYXRpb25SZWFkEi0ubm90aWZpY2F0aW9ucy52MS5NYXJrTm90aWZpY2F0aW9uUmVhZFJlcXVlc3QaLi5ub3RpZmljYXRpb25zLnYxLk1hcmtOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USgQEKGE1hcmtBbGxOb3RpZmljYXRpb25zUmVhZBIxLm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBoyLm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USbwoSRGVsZXRlTm90aWZpY2F0aW9uEisubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25SZXF1ZXN0Giwubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRJpChBTZW5kQW5ub3VuY2VtZW50Eikubm90aWZpY2F0aW9ucy52MS5TZW5kQW5ub3VuY2VtZW50UmVxdWVzdBoqLm5vdGlmaWNhdGlvbnMudjEuU2VuZEFubm91bmNlbWVudFJlc3BvbnNlEn4KF0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5EjAubm90aWZpY2F0aW9ucy52MS5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QaMS5ub3RpZmljYXRpb25zLnYxLkxpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2UShAEKGUxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnMSMi5ub3RpZmljYXRpb25zLnYxLkxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXF1ZXN0GjMubm90aWZpY2F0aW9ucy52MS5MaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVzcG9uc2USgQEKGFNlbmRDdXN0b21lck5vdGlmaWNhdGlvbhIxLm5vdGlmaWNhdGlvbnMudjEuU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uUmVxdWVzdBoyLm5vdGlmaWNhdGlvbnMudjEuU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uUmVzcG9uc2USjQEKHFNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb24SNS5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0GjYubm90aWZpY2F0aW9ucy52MS5TZW5kQnVsa0N1c3RvbWVyTm90aWZpY2F0aW9uUmVzcG9uc2USjQEKHE1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWQSNS5ub3RpZmljYXRpb25zLnYxLk1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXF1ZXN0GjYubm90aWZpY2F0aW9ucy52MS5NYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USmQEKIE1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkEjkubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlcXVlc3QaOi5ub3RpZmljYXRpb25zLnYxLk1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USgQEKGExpc3RQcm9qZWN0Tm90aWZpY2F0aW9ucxIxLm5vdGlmaWNhdGlvbnMudjEuTGlzdFByb2plY3ROb3RpZmljYXRpb25zUmVxdWVzdBoyLm5vdGlmaWNhdGlvbnMudjEuTGlzdFByb2plY3ROb3RpZmljYXRpb25zUmVzcG9uc2UShwEKGkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzEjMubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25QcmVmZXJlbmNlc1JlcXVlc3QaNC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVzcG9uc2USjQEKHFVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2USNS5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXF1ZXN0GjYubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVzcG9uc2UScgoTUmVnaXN0ZXJEZXZpY2VUb2tlbhIsLm5vdGlmaWNhdGlvbnMudjEuUmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QaLS5ub3RpZmljYXRpb25zLnYxLlJlZ2lzdGVyRGV2aWNlVG9rZW5SZXNwb25zZRJ4ChVVbnJlZ2lzdGVyRGV2aWNlVG9rZW4SLi5ub3RpZmljYXRpb25zLnYxLlVucmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QaLy5ub3RpZmljYXRpb25zLnYxLlVucmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEnUKFFVwbG9hZFB1c2hDcmVkZW50aWFsEi0ubm90aWZpY2F0aW9ucy52MS5VcGxvYWRQdXNoQ3JlZGVudGlhbFJlcXVlc3QaLi5ub3RpZmljYXRpb25zLnYxLlVwbG9hZFB1c2hDcmVkZW50aWFsUmVzcG9uc2UScgoTTGlzdFB1c2hDcmVkZW50aWFscxIsLm5vdGlmaWNhdGlvbnMudjEuTGlzdFB1c2hDcmVkZW50aWFsc1JlcXVlc3QaLS5ub3RpZmljYXRpb25zLnYxLkxpc3RQdXNoQ3JlZGVudGlhbHNSZXNwb25zZRJ1ChREZWxldGVQdXNoQ3JlZGVudGlhbBItLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlUHVzaENyZWRlbnRpYWxSZXF1ZXN0Gi4ubm90aWZpY2F0aW9ucy52MS5EZWxldGVQdXNoQ3JlZGVudGlhbFJlc3BvbnNlQkdaRWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9ub3RpZmljYXRpb25zL3YxO25vdGlmaWNhdGlvbnN2MWIGcHJvdG8z", [file_google_protobuf_struct10, file_google_protobuf_timestamp11, file_common_v1_pagination]);
|
|
919
|
+
var file_notifications_v1_notifications = /* @__PURE__ */ fileDesc15("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEisAUKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEjAKBHR5cGUYAyABKA4yIi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblR5cGUSDQoFdGl0bGUYBCABKAkSFAoHbWVzc2FnZRgFIAEoCUgAiAEBEjIKDHJpY2hfY29udGVudBgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARJCCgtzb3VyY2VfdHlwZRgKIAEoDjIoLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU291cmNlVHlwZUgCiAEBEhYKCXNvdXJjZV9pZBgLIAEoCUgDiAEBEhcKCmFjdGlvbl91cmwYDCABKAlIBIgBARIuCghtZXRhZGF0YRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIPCgdpc19yZWFkGBQgASgIEjAKB3JlYWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESEQoJdGVuYW50X2lkGB4gASgJEhcKCnByb2plY3RfaWQYHyABKAlIB4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBQgoKCF9tZXNzYWdlQg8KDV9yaWNoX2NvbnRlbnRCDgoMX3NvdXJjZV90eXBlQgwKCl9zb3VyY2VfaWRCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0Qg0KC19wcm9qZWN0X2lkQg0KC19leHBpcmVzX2F0IskBChhMaXN0Tm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IsMBChlMaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEjUKDW5vdGlmaWNhdGlvbnMYASADKAsyHi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIUCgx1bnJlYWRfY291bnQYAyABKAUSKwoJcGFnZV9pbmZvGAQgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgFIAMoCUIMCgpfcGFnZV9pbmZvIikKG01hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSIvChxNYXJrTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiYQofTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBI1CgR0eXBlGAEgASgOMiIubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UeXBlSACIAQFCBwoFX3R5cGUiMQogTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USDQoFY291bnQYASABKAUiJwoZRGVsZXRlTm90aWZpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhcKFUdldFVucmVhZENvdW50UmVxdWVzdCInChZHZXRVbnJlYWRDb3VudFJlc3BvbnNlEg0KBWNvdW50GAEgASgFIrABChdTZW5kQW5ub3VuY2VtZW50UmVxdWVzdBINCgV0aXRsZRgBIAEoCRIUCgdtZXNzYWdlGAIgASgJSACIAQESFwoKYWN0aW9uX3VybBgDIAEoCUgBiAEBEhgKC3RhcmdldF90eXBlGAQgASgJSAKIAQESEgoKdGFyZ2V0X2lkcxgFIAMoCUIKCghfbWVzc2FnZUINCgtfYWN0aW9uX3VybEIOCgxfdGFyZ2V0X3R5cGUiUAoYU2VuZEFubm91bmNlbWVudFJlc3BvbnNlEjQKDG5vdGlmaWNhdGlvbhgBIAEoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uIpgBCh5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiswEKH0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2USNQoNYW5ub3VuY2VtZW50cxgBIAMoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKBBAoUQ3VzdG9tZXJOb3RpZmljYXRpb24SCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSFAoHbWVzc2FnZRgEIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAUgASgJSAGIAQESFwoKYWN0aW9uX3VybBgGIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEg8KB2lzX3JlYWQYCCABKAgSMAoHcmVhZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIWCglpbWFnZV91cmwYCiABKAlIBYgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBQgoKCF9tZXNzYWdlQgsKCV9jYXRlZ29yeUINCgtfYWN0aW9uX3VybEILCglfbWV0YWRhdGFCCgoIX3JlYWRfYXRCDAoKX2ltYWdlX3VybEINCgtfZXhwaXJlc19hdCLRAQogTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Ir0BCiFMaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVzcG9uc2USPQoNbm90aWZpY2F0aW9ucxgBIAMoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIoYFCh9TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhQKB21lc3NhZ2UYAyABKAlIAIgBARIVCghjYXRlZ29yeRgEIAEoCUgBiAEBEhcKCmFjdGlvbl91cmwYBSABKAlIAogBARIuCghtZXRhZGF0YRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIWCglpbWFnZV91cmwYByABKAlIBIgBARIzCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBElEKCGNoYW5uZWxzGAkgAygLMj8ubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0LkNoYW5uZWxzRW50cnkaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXRKBAgKEAtKBAgLEAxKBAgMEA1KBAgNEA5KBAgUEBVKBAgVEBZKBAgWEBdKBAgXEBhSCWRlZXBfbGlua1IFYmFkZ2VSCXRocmVhZF9pZFIJcHVzaF9kYXRhUg1lbWFpbF9zdWJqZWN0UgplbWFpbF9ib2R5Ug5lbWFpbF9yZXBseV90b1IKZW1haWxfY3RhcyJgCiBTZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRI8Cgxub3RpZmljYXRpb24YASABKAsyJi5ub3RpZmljYXRpb25zLnYxLkN1c3RvbWVyTm90aWZpY2F0aW9uIoAECiNTZW5kQnVsa0N1c3RvbWVyTm90aWZpY2F0aW9uUmVxdWVzdBIUCgxjdXN0b21lcl9pZHMYASADKAkSDQoFdGl0bGUYAiABKAkSFAoHbWVzc2FnZRgDIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAQgASgJSAGIAQESFwoKYWN0aW9uX3VybBgFIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWltYWdlX3VybBgHIAEoCUgEiAEBEjMKCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESVQoIY2hhbm5lbHMYCSADKAsyQy5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0LkNoYW5uZWxzRW50cnkaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXQiNQokU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEg0KBWNvdW50GAEgASgFIjEKI01hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKJE1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlMKJ01hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBIYCgtjdXN0b21lcl9pZBgBIAEoCUgAiAEBQg4KDF9jdXN0b21lcl9pZCI5CihNYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlc3BvbnNlEg0KBWNvdW50GAEgASgFItABCh9MaXN0UHJvamVjdE5vdGlmaWNhdGlvbnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCK8AQogTGlzdFByb2plY3ROb3RpZmljYXRpb25zUmVzcG9uc2USPQoNbm90aWZpY2F0aW9ucxgBIAMoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIm8KFk5vdGlmaWNhdGlvblByZWZlcmVuY2USEAoIY2F0ZWdvcnkYASABKAkSFQoNZW1haWxfZW5hYmxlZBgCIAEoCBIUCgxwdXNoX2VuYWJsZWQYAyABKAgSFgoOaW5fYXBwX2VuYWJsZWQYBCABKAgiOAohR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJImMKIkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVzcG9uc2USPQoLcHJlZmVyZW5jZXMYASADKAsyKC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblByZWZlcmVuY2Ui1gEKI1VwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhAKCGNhdGVnb3J5GAIgASgJEhoKDWVtYWlsX2VuYWJsZWQYAyABKAhIAIgBARIZCgxwdXNoX2VuYWJsZWQYBCABKAhIAYgBARIbCg5pbl9hcHBfZW5hYmxlZBgFIAEoCEgCiAEBQhAKDl9lbWFpbF9lbmFibGVkQg8KDV9wdXNoX2VuYWJsZWRCEQoPX2luX2FwcF9lbmFibGVkIjcKJFVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIInwKGlJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBXRva2VuGAIgASgJEhAKCHBsYXRmb3JtGAMgASgJEhgKC2RldmljZV9uYW1lGAQgASgJSACIAQFCDgoMX2RldmljZV9uYW1lIi4KG1JlZ2lzdGVyRGV2aWNlVG9rZW5SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KHFVucmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QSDQoFdG9rZW4YASABKAkiMAodVW5yZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLIAwoOUHVzaENyZWRlbnRpYWwSCgoCaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghwbGF0Zm9ybRgDIAEoCRIWCglidW5kbGVfaWQYCiABKAlIAIgBARIZCgxhcG5zX3RlYW1faWQYCyABKAlIAYgBARIYCgthcG5zX2tleV9pZBgMIAEoCUgCiAEBEhwKD2FwbnNfcHJvZHVjdGlvbhgNIAEoCEgDiAEBEhsKDmZjbV9wcm9qZWN0X2lkGBQgASgJSASIAQESHQoQZmNtX2NsaWVudF9lbWFpbBgVIAEoCUgFiAEBEhIKCmhhc19zZWNyZXQYHiABKAgSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDAoKX2J1bmRsZV9pZEIPCg1fYXBuc190ZWFtX2lkQg4KDF9hcG5zX2tleV9pZEISChBfYXBuc19wcm9kdWN0aW9uQhEKD19mY21fcHJvamVjdF9pZEITChFfZmNtX2NsaWVudF9lbWFpbCLfAgobVXBsb2FkUHVzaENyZWRlbnRpYWxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEAoIcGxhdGZvcm0YAiABKAkSGAoLYXBuc19wOF9rZXkYCiABKAlIAIgBARIWCglidW5kbGVfaWQYCyABKAlIAYgBARIZCgxhcG5zX3RlYW1faWQYDCABKAlIAogBARIYCgthcG5zX2tleV9pZBgNIAEoCUgDiAEBEhwKD2FwbnNfcHJvZHVjdGlvbhgOIAEoCEgEiAEBEiUKGGZjbV9zZXJ2aWNlX2FjY291bnRfanNvbhgUIAEoCUgFiAEBQg4KDF9hcG5zX3A4X2tleUIMCgpfYnVuZGxlX2lkQg8KDV9hcG5zX3RlYW1faWRCDgoMX2FwbnNfa2V5X2lkQhIKEF9hcG5zX3Byb2R1Y3Rpb25CGwoZX2ZjbV9zZXJ2aWNlX2FjY291bnRfanNvbiJUChxVcGxvYWRQdXNoQ3JlZGVudGlhbFJlc3BvbnNlEjQKCmNyZWRlbnRpYWwYASABKAsyIC5ub3RpZmljYXRpb25zLnYxLlB1c2hDcmVkZW50aWFsIjAKGkxpc3RQdXNoQ3JlZGVudGlhbHNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiVAobTGlzdFB1c2hDcmVkZW50aWFsc1Jlc3BvbnNlEjUKC2NyZWRlbnRpYWxzGAEgAygLMiAubm90aWZpY2F0aW9ucy52MS5QdXNoQ3JlZGVudGlhbCIpChtEZWxldGVQdXNoQ3JlZGVudGlhbFJlcXVlc3QSCgoCaWQYASABKAkiLwocRGVsZXRlUHVzaENyZWRlbnRpYWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIKsgCChBOb3RpZmljYXRpb25UeXBlEiEKHU5PVElGSUNBVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASIwofTk9USUZJQ0FUSU9OX1RZUEVfSk9CX0NPTVBMRVRFRBABEiAKHE5PVElGSUNBVElPTl9UWVBFX0pPQl9GQUlMRUQQAhIiCh5OT1RJRklDQVRJT05fVFlQRV9KT0JfUFJPR1JFU1MQAxIdChlOT1RJRklDQVRJT05fVFlQRV9NRU5USU9OEAQSIAocTk9USUZJQ0FUSU9OX1RZUEVfTk9URV9SRVBMWRAFEiMKH05PVElGSUNBVElPTl9UWVBFX05PVEVfUkVTT0xWRUQQBhIcChhOT1RJRklDQVRJT05fVFlQRV9TWVNURU0QBxIiCh5OT1RJRklDQVRJT05fVFlQRV9BTk5PVU5DRU1FTlQQCCr1AQoWTm90aWZpY2F0aW9uU291cmNlVHlwZRIoCiROT1RJRklDQVRJT05fU09VUkNFX1RZUEVfVU5TUEVDSUZJRUQQABIjCh9OT1RJRklDQVRJT05fU09VUkNFX1RZUEVfUkVDT1JEEAESIgoeTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX01PREVMEAISIQodTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX05PVEUQAxIgChxOT1RJRklDQVRJT05fU09VUkNFX1RZUEVfSk9CEAQSIwofTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1NZU1RFTRAFMvUTChROb3RpZmljYXRpb25zU2VydmljZRJsChFMaXN0Tm90aWZpY2F0aW9ucxIqLm5vdGlmaWNhdGlvbnMudjEuTGlzdE5vdGlmaWNhdGlvbnNSZXF1ZXN0Gisubm90aWZpY2F0aW9ucy52MS5MaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEmMKDkdldFVucmVhZENvdW50Eicubm90aWZpY2F0aW9ucy52MS5HZXRVbnJlYWRDb3VudFJlcXVlc3QaKC5ub3RpZmljYXRpb25zLnYxLkdldFVucmVhZENvdW50UmVzcG9uc2USdQoUTWFya05vdGlmaWNhdGlvblJlYWQSLS5ub3RpZmljYXRpb25zLnYxLk1hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBouLm5vdGlmaWNhdGlvbnMudjEuTWFya05vdGlmaWNhdGlvblJlYWRSZXNwb25zZRKBAQoYTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkEjEubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsTm90aWZpY2F0aW9uc1JlYWRSZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRJvChJEZWxldGVOb3RpZmljYXRpb24SKy5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblJlcXVlc3QaLC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblJlc3BvbnNlEmkKEFNlbmRBbm5vdW5jZW1lbnQSKS5ub3RpZmljYXRpb25zLnYxLlNlbmRBbm5vdW5jZW1lbnRSZXF1ZXN0Gioubm90aWZpY2F0aW9ucy52MS5TZW5kQW5ub3VuY2VtZW50UmVzcG9uc2USfgoXTGlzdEFubm91bmNlbWVudEhpc3RvcnkSMC5ub3RpZmljYXRpb25zLnYxLkxpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVxdWVzdBoxLm5vdGlmaWNhdGlvbnMudjEuTGlzdEFubm91bmNlbWVudEhpc3RvcnlSZXNwb25zZRKEAQoZTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9ucxIyLm5vdGlmaWNhdGlvbnMudjEuTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlcXVlc3QaMy5ub3RpZmljYXRpb25zLnYxLkxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXNwb25zZRKBAQoYU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uEjEubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRKNAQocU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvbhI1Lm5vdGlmaWNhdGlvbnMudjEuU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRKNAQocTWFya0N1c3RvbWVyTm90aWZpY2F0aW9uUmVhZBI1Lm5vdGlmaWNhdGlvbnMudjEuTWFya0N1c3RvbWVyTm90aWZpY2F0aW9uUmVhZFJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLk1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXNwb25zZRKZAQogTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWQSOS5ub3RpZmljYXRpb25zLnYxLk1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBo6Lm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRKBAQoYTGlzdFByb2plY3ROb3RpZmljYXRpb25zEjEubm90aWZpY2F0aW9ucy52MS5MaXN0UHJvamVjdE5vdGlmaWNhdGlvbnNSZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5MaXN0UHJvamVjdE5vdGlmaWNhdGlvbnNSZXNwb25zZRKHAQoaR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXMSMy5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVxdWVzdBo0Lm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXNwb25zZRKNAQocVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZRI1Lm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZVJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXNwb25zZRJyChNSZWdpc3RlckRldmljZVRva2VuEiwubm90aWZpY2F0aW9ucy52MS5SZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBotLm5vdGlmaWNhdGlvbnMudjEuUmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEngKFVVucmVnaXN0ZXJEZXZpY2VUb2tlbhIuLm5vdGlmaWNhdGlvbnMudjEuVW5yZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBovLm5vdGlmaWNhdGlvbnMudjEuVW5yZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USdQoUVXBsb2FkUHVzaENyZWRlbnRpYWwSLS5ub3RpZmljYXRpb25zLnYxLlVwbG9hZFB1c2hDcmVkZW50aWFsUmVxdWVzdBouLm5vdGlmaWNhdGlvbnMudjEuVXBsb2FkUHVzaENyZWRlbnRpYWxSZXNwb25zZRJyChNMaXN0UHVzaENyZWRlbnRpYWxzEiwubm90aWZpY2F0aW9ucy52MS5MaXN0UHVzaENyZWRlbnRpYWxzUmVxdWVzdBotLm5vdGlmaWNhdGlvbnMudjEuTGlzdFB1c2hDcmVkZW50aWFsc1Jlc3BvbnNlEnUKFERlbGV0ZVB1c2hDcmVkZW50aWFsEi0ubm90aWZpY2F0aW9ucy52MS5EZWxldGVQdXNoQ3JlZGVudGlhbFJlcXVlc3QaLi5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZVB1c2hDcmVkZW50aWFsUmVzcG9uc2VCR1pFZ2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL25vdGlmaWNhdGlvbnMvdjE7bm90aWZpY2F0aW9uc3YxYgZwcm90bzM", [file_google_protobuf_struct10, file_google_protobuf_timestamp11, file_common_v1_pagination]);
|
|
838
920
|
var NotificationSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 0);
|
|
839
921
|
var ListNotificationsRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 1);
|
|
840
922
|
var MarkNotificationReadRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 3);
|
|
841
923
|
var MarkAllNotificationsReadRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 5);
|
|
924
|
+
var DeleteNotificationRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 7);
|
|
925
|
+
var GetUnreadCountRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 9);
|
|
926
|
+
var SendAnnouncementRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 11);
|
|
927
|
+
var ListAnnouncementHistoryRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 13);
|
|
928
|
+
var ListCustomerNotificationsRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 16);
|
|
842
929
|
var SendCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 18);
|
|
843
|
-
var
|
|
844
|
-
var
|
|
845
|
-
var
|
|
846
|
-
var
|
|
847
|
-
var
|
|
848
|
-
var
|
|
930
|
+
var SendBulkCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 20);
|
|
931
|
+
var RegisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 33);
|
|
932
|
+
var UnregisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 35);
|
|
933
|
+
var PushCredentialSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 37);
|
|
934
|
+
var UploadPushCredentialRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 38);
|
|
935
|
+
var ListPushCredentialsRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 40);
|
|
936
|
+
var DeletePushCredentialRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 42);
|
|
937
|
+
var NotificationTypeSchema = /* @__PURE__ */ enumDesc10(file_notifications_v1_notifications, 0);
|
|
938
|
+
var NotificationType = /* @__PURE__ */ tsEnum10(NotificationTypeSchema);
|
|
849
939
|
var NotificationsService = /* @__PURE__ */ serviceDesc11(file_notifications_v1_notifications, 0);
|
|
850
940
|
|
|
851
941
|
// ../../packages/proto-ts/src/schedules/v1/schedules_pb.js
|
|
@@ -908,7 +998,14 @@ var SetAppMappingRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps
|
|
|
908
998
|
var ValidateManifestRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 22);
|
|
909
999
|
var ValidateManifestResponseSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 24);
|
|
910
1000
|
var TriggerOperationRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 25);
|
|
1001
|
+
var CompleteAppInstallRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 27);
|
|
1002
|
+
var RotateAppCredentialRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 29);
|
|
1003
|
+
var GetAppCredentialStructRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 31);
|
|
1004
|
+
var AppInstallationServiceUninstallAppRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 33);
|
|
1005
|
+
var ListAppEventsRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 47);
|
|
911
1006
|
var AppsService = /* @__PURE__ */ serviceDesc13(file_apps_v1_apps_service, 0);
|
|
1007
|
+
var AppInstallationService = /* @__PURE__ */ serviceDesc13(file_apps_v1_apps_service, 1);
|
|
1008
|
+
var AppStatusService = /* @__PURE__ */ serviceDesc13(file_apps_v1_apps_service, 3);
|
|
912
1009
|
|
|
913
1010
|
// ../../packages/proto-ts/src/secrets/v1/secrets_pb.js
|
|
914
1011
|
import { enumDesc as enumDesc14, fileDesc as fileDesc20, messageDesc as messageDesc20, serviceDesc as serviceDesc14, tsEnum as tsEnum14 } from "@bufbuild/protobuf/codegenv2";
|
|
@@ -925,13 +1022,23 @@ var OwnerKindSchema = /* @__PURE__ */ enumDesc14(file_secrets_v1_secrets, 0);
|
|
|
925
1022
|
var OwnerKind = /* @__PURE__ */ tsEnum14(OwnerKindSchema);
|
|
926
1023
|
var SecretsService = /* @__PURE__ */ serviceDesc14(file_secrets_v1_secrets, 0);
|
|
927
1024
|
|
|
928
|
-
// ../../packages/rpc-
|
|
1025
|
+
// ../../packages/rpc-core/src/identity.ts
|
|
929
1026
|
import { create } from "@bufbuild/protobuf";
|
|
930
1027
|
|
|
931
|
-
// ../../packages/rpc-
|
|
1028
|
+
// ../../packages/rpc-core/src/_shared.ts
|
|
1029
|
+
import { timestampFromDate } from "@bufbuild/protobuf/wkt";
|
|
932
1030
|
var DEFAULT_PAGE_SIZE = 50;
|
|
1031
|
+
function toPageInfo(pi) {
|
|
1032
|
+
if (!pi) return void 0;
|
|
1033
|
+
return {
|
|
1034
|
+
hasNextPage: pi.hasNextPage,
|
|
1035
|
+
hasPreviousPage: pi.hasPreviousPage,
|
|
1036
|
+
startCursor: pi.startCursor ?? "",
|
|
1037
|
+
endCursor: pi.endCursor ?? ""
|
|
1038
|
+
};
|
|
1039
|
+
}
|
|
933
1040
|
|
|
934
|
-
// ../../packages/rpc-
|
|
1041
|
+
// ../../packages/rpc-core/src/identity.ts
|
|
935
1042
|
function createIdentityMethods(client) {
|
|
936
1043
|
return {
|
|
937
1044
|
// ── Auth ──────────────────────────────────────────────
|
|
@@ -1087,16 +1194,29 @@ function createIdentityMethods(client) {
|
|
|
1087
1194
|
return { user: resp.user ?? null };
|
|
1088
1195
|
},
|
|
1089
1196
|
async listAdminUsers(params = {}) {
|
|
1197
|
+
let where = params.where;
|
|
1198
|
+
if (!where && params.search) {
|
|
1199
|
+
where = {
|
|
1200
|
+
OR: [
|
|
1201
|
+
{ email: { contains: params.search } },
|
|
1202
|
+
{ firstName: { contains: params.search } },
|
|
1203
|
+
{ lastName: { contains: params.search } }
|
|
1204
|
+
]
|
|
1205
|
+
};
|
|
1206
|
+
}
|
|
1090
1207
|
const resp = await client.listAdminUsers(
|
|
1091
1208
|
create(ListAdminUsersRequestSchema, {
|
|
1092
|
-
where
|
|
1209
|
+
where,
|
|
1093
1210
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1094
|
-
after: params
|
|
1211
|
+
after: params.after,
|
|
1212
|
+
last: params.last,
|
|
1213
|
+
before: params.before
|
|
1095
1214
|
})
|
|
1096
1215
|
);
|
|
1097
1216
|
return {
|
|
1098
1217
|
items: resp.items ?? [],
|
|
1099
1218
|
total: Number(resp.total),
|
|
1219
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
1100
1220
|
cursors: resp.cursors ?? []
|
|
1101
1221
|
};
|
|
1102
1222
|
},
|
|
@@ -1155,12 +1275,15 @@ function createIdentityMethods(client) {
|
|
|
1155
1275
|
create(ListCustomersRequestSchema, {
|
|
1156
1276
|
where: params.where,
|
|
1157
1277
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1158
|
-
after: params
|
|
1278
|
+
after: params.after,
|
|
1279
|
+
last: params.last,
|
|
1280
|
+
before: params.before
|
|
1159
1281
|
})
|
|
1160
1282
|
);
|
|
1161
1283
|
return {
|
|
1162
1284
|
items: resp.items ?? [],
|
|
1163
1285
|
total: Number(resp.total),
|
|
1286
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
1164
1287
|
cursors: resp.cursors ?? []
|
|
1165
1288
|
};
|
|
1166
1289
|
},
|
|
@@ -1212,17 +1335,26 @@ function createIdentityMethods(client) {
|
|
|
1212
1335
|
);
|
|
1213
1336
|
return { tenant: resp.tenant ?? null };
|
|
1214
1337
|
},
|
|
1338
|
+
async activateTenant(params) {
|
|
1339
|
+
const resp = await client.activateTenant(
|
|
1340
|
+
create(ActivateTenantRequestSchema, { tenantId: params.tenantId })
|
|
1341
|
+
);
|
|
1342
|
+
return { tenant: resp.tenant ?? null };
|
|
1343
|
+
},
|
|
1215
1344
|
async listTenants(params = {}) {
|
|
1216
1345
|
const resp = await client.listTenants(
|
|
1217
1346
|
create(ListTenantsRequestSchema, {
|
|
1218
1347
|
where: params.where,
|
|
1219
1348
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1220
|
-
after: params
|
|
1349
|
+
after: params.after,
|
|
1350
|
+
last: params.last,
|
|
1351
|
+
before: params.before
|
|
1221
1352
|
})
|
|
1222
1353
|
);
|
|
1223
1354
|
return {
|
|
1224
1355
|
items: resp.items ?? [],
|
|
1225
1356
|
total: Number(resp.total),
|
|
1357
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
1226
1358
|
cursors: resp.cursors ?? []
|
|
1227
1359
|
};
|
|
1228
1360
|
},
|
|
@@ -1238,7 +1370,22 @@ function createIdentityMethods(client) {
|
|
|
1238
1370
|
create(CreateProjectRequestSchema, {
|
|
1239
1371
|
tenantId: params.tenantId,
|
|
1240
1372
|
name: params.name,
|
|
1241
|
-
description: params.description
|
|
1373
|
+
description: params.description,
|
|
1374
|
+
defaultLocaleCode: params.defaultLocaleCode,
|
|
1375
|
+
defaultLocaleDisplayName: params.defaultLocaleDisplayName,
|
|
1376
|
+
defaultLocaleNativeName: params.defaultLocaleNativeName,
|
|
1377
|
+
defaultLocaleIsRtl: params.defaultLocaleIsRtl,
|
|
1378
|
+
displayName: params.displayName,
|
|
1379
|
+
logoUrl: params.logoUrl,
|
|
1380
|
+
primaryColor: params.primaryColor,
|
|
1381
|
+
fromName: params.fromName,
|
|
1382
|
+
replyTo: params.replyTo,
|
|
1383
|
+
supportEmail: params.supportEmail,
|
|
1384
|
+
appBaseUrl: params.appBaseUrl,
|
|
1385
|
+
customerWelcomeEmailEnabled: params.customerWelcomeEmailEnabled,
|
|
1386
|
+
customerSignupEnabled: params.customerSignupEnabled,
|
|
1387
|
+
customerPasswordEnabled: params.customerPasswordEnabled,
|
|
1388
|
+
customerOtpEnabled: params.customerOtpEnabled
|
|
1242
1389
|
})
|
|
1243
1390
|
);
|
|
1244
1391
|
return { project: resp.project ?? null };
|
|
@@ -1247,7 +1394,7 @@ function createIdentityMethods(client) {
|
|
|
1247
1394
|
const resp = await client.getProject(
|
|
1248
1395
|
create(GetProjectRequestSchema, { id })
|
|
1249
1396
|
);
|
|
1250
|
-
return
|
|
1397
|
+
return resp.project ?? null;
|
|
1251
1398
|
},
|
|
1252
1399
|
async updateProject(params) {
|
|
1253
1400
|
const resp = await client.updateProject(
|
|
@@ -1255,6 +1402,7 @@ function createIdentityMethods(client) {
|
|
|
1255
1402
|
id: params.id,
|
|
1256
1403
|
name: params.name,
|
|
1257
1404
|
description: params.description,
|
|
1405
|
+
status: params.status,
|
|
1258
1406
|
displayName: params.displayName,
|
|
1259
1407
|
logoUrl: params.logoUrl,
|
|
1260
1408
|
primaryColor: params.primaryColor,
|
|
@@ -1268,7 +1416,7 @@ function createIdentityMethods(client) {
|
|
|
1268
1416
|
customerOtpEnabled: params.customerOtpEnabled
|
|
1269
1417
|
})
|
|
1270
1418
|
);
|
|
1271
|
-
return
|
|
1419
|
+
return resp.project ?? null;
|
|
1272
1420
|
},
|
|
1273
1421
|
async listProjects(params) {
|
|
1274
1422
|
const resp = await client.listProjects(
|
|
@@ -1276,12 +1424,16 @@ function createIdentityMethods(client) {
|
|
|
1276
1424
|
tenantId: params.tenantId,
|
|
1277
1425
|
where: params.where,
|
|
1278
1426
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1279
|
-
after: params
|
|
1427
|
+
after: params.after,
|
|
1428
|
+
last: params.last,
|
|
1429
|
+
before: params.before
|
|
1280
1430
|
})
|
|
1281
1431
|
);
|
|
1282
1432
|
return {
|
|
1283
1433
|
items: resp.items ?? [],
|
|
1284
|
-
total: Number(resp.total)
|
|
1434
|
+
total: Number(resp.total),
|
|
1435
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
1436
|
+
cursors: resp.cursors ?? []
|
|
1285
1437
|
};
|
|
1286
1438
|
},
|
|
1287
1439
|
async deleteProject(id) {
|
|
@@ -1326,12 +1478,16 @@ function createIdentityMethods(client) {
|
|
|
1326
1478
|
tenantId: params.tenantId,
|
|
1327
1479
|
where: params.where,
|
|
1328
1480
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1329
|
-
after: params
|
|
1481
|
+
after: params.after,
|
|
1482
|
+
last: params.last,
|
|
1483
|
+
before: params.before
|
|
1330
1484
|
})
|
|
1331
1485
|
);
|
|
1332
1486
|
return {
|
|
1333
1487
|
items: resp.items ?? [],
|
|
1334
|
-
total: Number(resp.total)
|
|
1488
|
+
total: Number(resp.total),
|
|
1489
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
1490
|
+
cursors: resp.cursors ?? []
|
|
1335
1491
|
};
|
|
1336
1492
|
},
|
|
1337
1493
|
async revokeInvitation(invitationId) {
|
|
@@ -1360,16 +1516,96 @@ function createIdentityMethods(client) {
|
|
|
1360
1516
|
invitation: resp.invitation ?? null
|
|
1361
1517
|
};
|
|
1362
1518
|
},
|
|
1519
|
+
// ── Customer Invitations ──────────────────────────────
|
|
1520
|
+
async createCustomerInvitation(params) {
|
|
1521
|
+
const resp = await client.createCustomerInvitation(
|
|
1522
|
+
create(CreateCustomerInvitationRequestSchema, {
|
|
1523
|
+
email: params.email,
|
|
1524
|
+
invitedBy: params.invitedBy,
|
|
1525
|
+
message: params.message,
|
|
1526
|
+
sendEmail: params.sendEmail,
|
|
1527
|
+
acceptUrlOverride: params.acceptUrlOverride
|
|
1528
|
+
})
|
|
1529
|
+
);
|
|
1530
|
+
return {
|
|
1531
|
+
invitation: resp.invitation ?? null,
|
|
1532
|
+
acceptUrl: resp.acceptUrl,
|
|
1533
|
+
token: resp.token
|
|
1534
|
+
};
|
|
1535
|
+
},
|
|
1536
|
+
async listCustomerInvitations(params = {}) {
|
|
1537
|
+
const resp = await client.listCustomerInvitations(
|
|
1538
|
+
create(ListCustomerInvitationsRequestSchema, {
|
|
1539
|
+
where: params.where,
|
|
1540
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1541
|
+
after: params.after,
|
|
1542
|
+
last: params.last,
|
|
1543
|
+
before: params.before
|
|
1544
|
+
})
|
|
1545
|
+
);
|
|
1546
|
+
return {
|
|
1547
|
+
items: resp.items ?? [],
|
|
1548
|
+
total: resp.total,
|
|
1549
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
1550
|
+
cursors: resp.cursors ?? []
|
|
1551
|
+
};
|
|
1552
|
+
},
|
|
1553
|
+
async getCustomerInvitation(id) {
|
|
1554
|
+
const resp = await client.getCustomerInvitation(
|
|
1555
|
+
create(GetCustomerInvitationRequestSchema, { id })
|
|
1556
|
+
);
|
|
1557
|
+
return { invitation: resp.invitation ?? null };
|
|
1558
|
+
},
|
|
1559
|
+
async revokeCustomerInvitation(id) {
|
|
1560
|
+
const resp = await client.revokeCustomerInvitation(
|
|
1561
|
+
create(RevokeCustomerInvitationRequestSchema, { id })
|
|
1562
|
+
);
|
|
1563
|
+
return { success: resp.success };
|
|
1564
|
+
},
|
|
1565
|
+
async resendCustomerInvitation(params) {
|
|
1566
|
+
const resp = await client.resendCustomerInvitation(
|
|
1567
|
+
create(ResendCustomerInvitationRequestSchema, {
|
|
1568
|
+
id: params.id,
|
|
1569
|
+
sendEmail: params.sendEmail,
|
|
1570
|
+
acceptUrlOverride: params.acceptUrlOverride
|
|
1571
|
+
})
|
|
1572
|
+
);
|
|
1573
|
+
return {
|
|
1574
|
+
invitation: resp.invitation ?? null,
|
|
1575
|
+
acceptUrl: resp.acceptUrl,
|
|
1576
|
+
token: resp.token
|
|
1577
|
+
};
|
|
1578
|
+
},
|
|
1579
|
+
async validateCustomerInvitation(token) {
|
|
1580
|
+
const resp = await client.validateCustomerInvitation(
|
|
1581
|
+
create(ValidateCustomerInvitationRequestSchema, { token })
|
|
1582
|
+
);
|
|
1583
|
+
return {
|
|
1584
|
+
invitation: resp.invitation ?? null,
|
|
1585
|
+
providers: resp.providers ?? []
|
|
1586
|
+
};
|
|
1587
|
+
},
|
|
1588
|
+
async acceptCustomerInvitation(params) {
|
|
1589
|
+
const resp = await client.acceptCustomerInvitation(
|
|
1590
|
+
create(AcceptCustomerInvitationRequestSchema, {
|
|
1591
|
+
token: params.token,
|
|
1592
|
+
password: params.password
|
|
1593
|
+
})
|
|
1594
|
+
);
|
|
1595
|
+
return resp;
|
|
1596
|
+
},
|
|
1363
1597
|
// ── API Keys ──────────────────────────────────────────
|
|
1364
1598
|
async createApiKey(params) {
|
|
1365
1599
|
const resp = await client.createApiKey(
|
|
1366
1600
|
create(CreateApiKeyRequestSchema, {
|
|
1367
1601
|
name: params.name,
|
|
1368
1602
|
keyType: params.keyType,
|
|
1603
|
+
scopes: params.scopes,
|
|
1369
1604
|
rateLimitPerHour: params.rateLimitPerHour,
|
|
1605
|
+
expiresAt: params.expiresAt ? timestampFromDate(new Date(params.expiresAt)) : void 0,
|
|
1370
1606
|
allowedModels: params.allowedModels,
|
|
1371
1607
|
allowedFileTypes: params.allowedFileTypes,
|
|
1372
|
-
|
|
1608
|
+
configId: params.configId
|
|
1373
1609
|
})
|
|
1374
1610
|
);
|
|
1375
1611
|
return { apiKey: resp.apiKey ?? null };
|
|
@@ -1383,13 +1619,18 @@ function createIdentityMethods(client) {
|
|
|
1383
1619
|
async listApiKeys(params = {}) {
|
|
1384
1620
|
const resp = await client.listApiKeys(
|
|
1385
1621
|
create(ListApiKeysRequestSchema, {
|
|
1622
|
+
where: params.where,
|
|
1386
1623
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1387
|
-
after: params
|
|
1624
|
+
after: params.after,
|
|
1625
|
+
last: params.last,
|
|
1626
|
+
before: params.before
|
|
1388
1627
|
})
|
|
1389
1628
|
);
|
|
1390
1629
|
return {
|
|
1391
1630
|
items: resp.items ?? [],
|
|
1392
|
-
total: Number(resp.total)
|
|
1631
|
+
total: Number(resp.total),
|
|
1632
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
1633
|
+
cursors: resp.cursors ?? []
|
|
1393
1634
|
};
|
|
1394
1635
|
},
|
|
1395
1636
|
async updateApiKey(params) {
|
|
@@ -1417,86 +1658,6 @@ function createIdentityMethods(client) {
|
|
|
1417
1658
|
);
|
|
1418
1659
|
return { success: resp.success };
|
|
1419
1660
|
},
|
|
1420
|
-
// ── Customer Roles (customer RBAC) ───────────────────────────
|
|
1421
|
-
//
|
|
1422
|
-
// Default + named roles whose `permissions` become a customer access
|
|
1423
|
-
// token's scope set at mint time. A role with isDefault:true grants its
|
|
1424
|
-
// permissions to every customer in the project with no per-customer
|
|
1425
|
-
// assignment. `self:*` in permissions expands to the project's
|
|
1426
|
-
// customer-writable record scopes; operations:execute must be listed
|
|
1427
|
-
// explicitly (self:* does not include it). See EID-125.
|
|
1428
|
-
async listCustomerRoles(params = {}) {
|
|
1429
|
-
const where = {};
|
|
1430
|
-
if (params.tenantId) where.tenantId = params.tenantId;
|
|
1431
|
-
if (params.projectId) where.projectId = params.projectId;
|
|
1432
|
-
const resp = await client.listCustomerRoles(
|
|
1433
|
-
create(ListCustomerRolesRequestSchema, {
|
|
1434
|
-
where: Object.keys(where).length > 0 ? where : void 0,
|
|
1435
|
-
first: params.first ?? DEFAULT_PAGE_SIZE
|
|
1436
|
-
})
|
|
1437
|
-
);
|
|
1438
|
-
return { items: resp.items ?? [], total: resp.total };
|
|
1439
|
-
},
|
|
1440
|
-
async getCustomerRole(id) {
|
|
1441
|
-
const resp = await client.getCustomerRole(
|
|
1442
|
-
create(GetCustomerRoleRequestSchema, { id })
|
|
1443
|
-
);
|
|
1444
|
-
return resp.role ?? null;
|
|
1445
|
-
},
|
|
1446
|
-
async createCustomerRole(params) {
|
|
1447
|
-
const resp = await client.createCustomerRole(
|
|
1448
|
-
create(CreateCustomerRoleRequestSchema, {
|
|
1449
|
-
tenantId: params.tenantId,
|
|
1450
|
-
projectId: params.projectId,
|
|
1451
|
-
key: params.key,
|
|
1452
|
-
name: params.name,
|
|
1453
|
-
permissions: params.permissions,
|
|
1454
|
-
isDefault: params.isDefault ?? false
|
|
1455
|
-
})
|
|
1456
|
-
);
|
|
1457
|
-
return resp.role ?? null;
|
|
1458
|
-
},
|
|
1459
|
-
async updateCustomerRole(params) {
|
|
1460
|
-
const resp = await client.updateCustomerRole(
|
|
1461
|
-
create(UpdateCustomerRoleRequestSchema, {
|
|
1462
|
-
id: params.id,
|
|
1463
|
-
name: params.name,
|
|
1464
|
-
permissions: params.permissions ?? [],
|
|
1465
|
-
isDefault: params.isDefault
|
|
1466
|
-
})
|
|
1467
|
-
);
|
|
1468
|
-
return resp.role ?? null;
|
|
1469
|
-
},
|
|
1470
|
-
async disableCustomerRole(id) {
|
|
1471
|
-
await client.disableCustomerRole(
|
|
1472
|
-
create(DisableCustomerRoleRequestSchema, { id })
|
|
1473
|
-
);
|
|
1474
|
-
},
|
|
1475
|
-
async assignCustomerRole(params) {
|
|
1476
|
-
const resp = await client.assignCustomerRole(
|
|
1477
|
-
create(AssignCustomerRoleRequestSchema, {
|
|
1478
|
-
customerId: params.customerId,
|
|
1479
|
-
roleId: params.roleId
|
|
1480
|
-
})
|
|
1481
|
-
);
|
|
1482
|
-
return resp.assignment ?? null;
|
|
1483
|
-
},
|
|
1484
|
-
async revokeCustomerRoleAssignment(id) {
|
|
1485
|
-
await client.revokeCustomerRoleAssignment(
|
|
1486
|
-
create(RevokeCustomerRoleAssignmentRequestSchema, { id })
|
|
1487
|
-
);
|
|
1488
|
-
},
|
|
1489
|
-
async listCustomerRoleAssignments(params) {
|
|
1490
|
-
const where = {};
|
|
1491
|
-
if (params.customerId) where.customerId = params.customerId;
|
|
1492
|
-
if (params.roleId) where.roleId = params.roleId;
|
|
1493
|
-
const resp = await client.listCustomerRoleAssignments(
|
|
1494
|
-
create(ListCustomerRoleAssignmentsRequestSchema, {
|
|
1495
|
-
where: Object.keys(where).length > 0 ? where : void 0
|
|
1496
|
-
})
|
|
1497
|
-
);
|
|
1498
|
-
return { items: resp.items ?? [], total: resp.total };
|
|
1499
|
-
},
|
|
1500
1661
|
// ── Service Tokens ──────────────────────────────────────────
|
|
1501
1662
|
async mintServiceToken(purpose) {
|
|
1502
1663
|
const resp = await client.mintServiceToken(
|
|
@@ -1514,12 +1675,16 @@ function createIdentityMethods(client) {
|
|
|
1514
1675
|
create(ListAuthProvidersRequestSchema, {
|
|
1515
1676
|
where: params.where,
|
|
1516
1677
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1517
|
-
after: params
|
|
1678
|
+
after: params.after,
|
|
1679
|
+
last: params.last,
|
|
1680
|
+
before: params.before
|
|
1518
1681
|
})
|
|
1519
1682
|
);
|
|
1520
1683
|
return {
|
|
1521
1684
|
items: resp.providers ?? [],
|
|
1522
|
-
total: resp.total
|
|
1685
|
+
total: resp.total,
|
|
1686
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
1687
|
+
cursors: resp.cursors ?? []
|
|
1523
1688
|
};
|
|
1524
1689
|
},
|
|
1525
1690
|
async getAuthProvider(id) {
|
|
@@ -1537,7 +1702,8 @@ function createIdentityMethods(client) {
|
|
|
1537
1702
|
config: params.config,
|
|
1538
1703
|
enabled: params.enabled,
|
|
1539
1704
|
isDefault: params.isDefault,
|
|
1540
|
-
priority: params.priority
|
|
1705
|
+
priority: params.priority,
|
|
1706
|
+
configId: params.configId
|
|
1541
1707
|
})
|
|
1542
1708
|
);
|
|
1543
1709
|
return resp.provider ?? null;
|
|
@@ -1561,12 +1727,6 @@ function createIdentityMethods(client) {
|
|
|
1561
1727
|
);
|
|
1562
1728
|
return resp.success;
|
|
1563
1729
|
},
|
|
1564
|
-
async publishAuthProvider(id) {
|
|
1565
|
-
const resp = await client.publishAuthProvider(
|
|
1566
|
-
create(PublishAuthProviderRequestSchema, { id })
|
|
1567
|
-
);
|
|
1568
|
-
return resp.provider ?? null;
|
|
1569
|
-
},
|
|
1570
1730
|
async enabledOAuthProviders() {
|
|
1571
1731
|
const resp = await client.enabledOAuthProviders(
|
|
1572
1732
|
create(EnabledOAuthProvidersRequestSchema, {})
|
|
@@ -1613,6 +1773,7 @@ function createIdentityMethods(client) {
|
|
|
1613
1773
|
async listMyOAuthConnections(params = {}) {
|
|
1614
1774
|
return client.listMyOAuthConnections(
|
|
1615
1775
|
create(ListMyOAuthConnectionsRequestSchema, {
|
|
1776
|
+
where: params.where,
|
|
1616
1777
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1617
1778
|
after: params.after,
|
|
1618
1779
|
last: params.last,
|
|
@@ -1633,26 +1794,87 @@ function createIdentityMethods(client) {
|
|
|
1633
1794
|
);
|
|
1634
1795
|
return resp.success;
|
|
1635
1796
|
},
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
create(GetCustomerAuthConfigRequestSchema, {})
|
|
1797
|
+
async getCustomerManagementStatus() {
|
|
1798
|
+
const resp = await client.getCustomerManagementStatus(
|
|
1799
|
+
create(GetCustomerManagementStatusRequestSchema, {})
|
|
1640
1800
|
);
|
|
1641
|
-
return resp.
|
|
1801
|
+
return resp.status ?? null;
|
|
1642
1802
|
},
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1803
|
+
// ── Auth provider schema publish lifecycle ─────────────
|
|
1804
|
+
async publishAuthProvider(id) {
|
|
1805
|
+
const resp = await client.publishAuthProvider(
|
|
1806
|
+
create(PublishAuthProviderRequestSchema, { id })
|
|
1646
1807
|
);
|
|
1647
|
-
return
|
|
1808
|
+
return {
|
|
1809
|
+
provider: resp.provider ?? null,
|
|
1810
|
+
breakingChanges: resp.breakingChanges ?? []
|
|
1811
|
+
};
|
|
1648
1812
|
},
|
|
1649
|
-
async
|
|
1650
|
-
const resp = await client.
|
|
1651
|
-
create(
|
|
1813
|
+
async unpublishAuthProvider(id) {
|
|
1814
|
+
const resp = await client.unpublishAuthProvider(
|
|
1815
|
+
create(UnpublishAuthProviderRequestSchema, { id })
|
|
1816
|
+
);
|
|
1817
|
+
return resp.provider ?? null;
|
|
1818
|
+
},
|
|
1819
|
+
async getAuthProviderPublishStatus(id) {
|
|
1820
|
+
const resp = await client.getAuthProviderPublishStatus(
|
|
1821
|
+
create(GetAuthProviderPublishStatusRequestSchema, { id })
|
|
1652
1822
|
);
|
|
1653
1823
|
return resp.status ?? null;
|
|
1654
1824
|
},
|
|
1655
|
-
|
|
1825
|
+
async scheduleAuthProviderPublish(id, publishAt, unpublishAt) {
|
|
1826
|
+
const resp = await client.scheduleAuthProviderPublish(
|
|
1827
|
+
create(ScheduleAuthProviderPublishRequestSchema, {
|
|
1828
|
+
id,
|
|
1829
|
+
publishAt: timestampFromDate(publishAt),
|
|
1830
|
+
unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
|
|
1831
|
+
})
|
|
1832
|
+
);
|
|
1833
|
+
return resp.provider ?? null;
|
|
1834
|
+
},
|
|
1835
|
+
async cancelScheduledAuthProviderPublish(id) {
|
|
1836
|
+
const resp = await client.cancelScheduledAuthProviderPublish(
|
|
1837
|
+
create(CancelScheduledAuthProviderPublishRequestSchema, { id })
|
|
1838
|
+
);
|
|
1839
|
+
return resp.provider ?? null;
|
|
1840
|
+
},
|
|
1841
|
+
// Auth provider version history.
|
|
1842
|
+
async listAuthProviderVersions(authProviderId, params = {}) {
|
|
1843
|
+
const resp = await client.listAuthProviderVersions(
|
|
1844
|
+
create(ListAuthProviderVersionsRequestSchema, {
|
|
1845
|
+
authProviderId,
|
|
1846
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1847
|
+
after: params.after,
|
|
1848
|
+
last: params.last,
|
|
1849
|
+
before: params.before
|
|
1850
|
+
})
|
|
1851
|
+
);
|
|
1852
|
+
return {
|
|
1853
|
+
items: resp.versions ?? [],
|
|
1854
|
+
total: resp.total,
|
|
1855
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
1856
|
+
cursors: resp.cursors ?? []
|
|
1857
|
+
};
|
|
1858
|
+
},
|
|
1859
|
+
async getAuthProviderVersion(versionId) {
|
|
1860
|
+
const resp = await client.getAuthProviderVersion(
|
|
1861
|
+
create(GetAuthProviderVersionRequestSchema, { id: versionId })
|
|
1862
|
+
);
|
|
1863
|
+
return resp.version ?? null;
|
|
1864
|
+
},
|
|
1865
|
+
async restoreAuthProviderVersion(versionId, changeDescription) {
|
|
1866
|
+
const resp = await client.restoreAuthProviderVersion(
|
|
1867
|
+
create(RestoreAuthProviderVersionRequestSchema, {
|
|
1868
|
+
versionId,
|
|
1869
|
+
changeDescription
|
|
1870
|
+
})
|
|
1871
|
+
);
|
|
1872
|
+
return {
|
|
1873
|
+
provider: resp.provider ?? null,
|
|
1874
|
+
newVersion: resp.newVersion ?? null
|
|
1875
|
+
};
|
|
1876
|
+
},
|
|
1877
|
+
// ── Login with Foir: relying parties (unified) ───────────
|
|
1656
1878
|
async listRelyingParties(params) {
|
|
1657
1879
|
const resp = await client.listRelyingParties(
|
|
1658
1880
|
create(ListRelyingPartiesRequestSchema, {
|
|
@@ -1715,7 +1937,7 @@ function createIdentityMethods(client) {
|
|
|
1715
1937
|
create(DisableRelyingPartyRequestSchema, params)
|
|
1716
1938
|
);
|
|
1717
1939
|
},
|
|
1718
|
-
// ── Login
|
|
1940
|
+
// ── Login with Foir: custom domains (EID-46) ─────────────
|
|
1719
1941
|
async listCustomDomains(params) {
|
|
1720
1942
|
const resp = await client.listCustomDomains(
|
|
1721
1943
|
create(ListCustomDomainsRequestSchema, {
|
|
@@ -1748,61 +1970,235 @@ function createIdentityMethods(client) {
|
|
|
1748
1970
|
create(DeleteCustomDomainRequestSchema, { id: params.id })
|
|
1749
1971
|
);
|
|
1750
1972
|
},
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
adminUserId: params.adminUserId
|
|
1973
|
+
async listCustomerSessions(params) {
|
|
1974
|
+
const resp = await client.listCustomerSessions(
|
|
1975
|
+
create(ListCustomerSessionsRequestSchema, {
|
|
1976
|
+
relyingPartyId: params.relyingPartyId
|
|
1756
1977
|
})
|
|
1757
1978
|
);
|
|
1758
|
-
return { items: resp.items ?? []
|
|
1979
|
+
return { items: resp.items ?? [] };
|
|
1759
1980
|
},
|
|
1760
|
-
async
|
|
1761
|
-
|
|
1762
|
-
create(
|
|
1763
|
-
adminUserId: params.adminUserId,
|
|
1764
|
-
clientId: params.clientId,
|
|
1765
|
-
scopes: params.scopes
|
|
1766
|
-
})
|
|
1981
|
+
async revokeCustomerSession(params) {
|
|
1982
|
+
await client.revokeCustomerSession(
|
|
1983
|
+
create(RevokeCustomerSessionRequestSchema, { id: params.id })
|
|
1767
1984
|
);
|
|
1768
|
-
return resp.grant ?? null;
|
|
1769
1985
|
},
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
}
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
import { create as create2 } from "@bufbuild/protobuf";
|
|
1780
|
-
function createAppsMethods(client) {
|
|
1781
|
-
return {
|
|
1782
|
-
async listApps(params) {
|
|
1783
|
-
return client.listApps(
|
|
1784
|
-
create2(ListAppsRequestSchema, {
|
|
1785
|
-
tenantId: params.tenantId,
|
|
1786
|
-
projectId: params.projectId,
|
|
1986
|
+
// ── Login with Foir: customer roles + assignments ────────
|
|
1987
|
+
// Customer roles now ride the unified Role RPCs (EID-129) with
|
|
1988
|
+
// principalKind=CUSTOMER; the wrapper keeps the customer-named surface and
|
|
1989
|
+
// the legacy {customerId} assignment shape so callers are unchanged.
|
|
1990
|
+
async listCustomerRoles(params = {}) {
|
|
1991
|
+
const resp = await client.listRoles(
|
|
1992
|
+
create(ListRolesRequestSchema, {
|
|
1993
|
+
principalKind: RolePrincipalKind.CUSTOMER,
|
|
1994
|
+
where: params.where,
|
|
1787
1995
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1788
1996
|
after: params.after,
|
|
1789
1997
|
last: params.last,
|
|
1790
1998
|
before: params.before
|
|
1791
1999
|
})
|
|
1792
2000
|
);
|
|
2001
|
+
return { items: resp.items ?? [], total: resp.total };
|
|
1793
2002
|
},
|
|
1794
|
-
async
|
|
1795
|
-
const resp = await client.
|
|
1796
|
-
|
|
1797
|
-
);
|
|
1798
|
-
return resp.app ?? null;
|
|
1799
|
-
},
|
|
1800
|
-
async installApp(tenantId, projectId, manifestUrl) {
|
|
1801
|
-
return client.installApp(
|
|
1802
|
-
create2(InstallAppRequestSchema, { tenantId, projectId, manifestUrl })
|
|
1803
|
-
);
|
|
2003
|
+
async getCustomerRole(id) {
|
|
2004
|
+
const resp = await client.getRole(create(GetRoleRequestSchema, { id }));
|
|
2005
|
+
return resp.role ?? null;
|
|
1804
2006
|
},
|
|
1805
|
-
async
|
|
2007
|
+
async createCustomerRole(params) {
|
|
2008
|
+
const resp = await client.createRole(
|
|
2009
|
+
create(CreateRoleRequestSchema, {
|
|
2010
|
+
principalKind: RolePrincipalKind.CUSTOMER,
|
|
2011
|
+
tenantId: params.tenantId,
|
|
2012
|
+
projectId: params.projectId,
|
|
2013
|
+
key: params.key,
|
|
2014
|
+
name: params.name,
|
|
2015
|
+
permissions: params.permissions,
|
|
2016
|
+
isDefault: params.isDefault ?? false
|
|
2017
|
+
})
|
|
2018
|
+
);
|
|
2019
|
+
return resp.role ?? null;
|
|
2020
|
+
},
|
|
2021
|
+
async updateCustomerRole(params) {
|
|
2022
|
+
const resp = await client.updateRole(
|
|
2023
|
+
create(UpdateRoleRequestSchema, {
|
|
2024
|
+
id: params.id,
|
|
2025
|
+
name: params.name,
|
|
2026
|
+
permissions: params.permissions ?? [],
|
|
2027
|
+
isDefault: params.isDefault
|
|
2028
|
+
})
|
|
2029
|
+
);
|
|
2030
|
+
return resp.role ?? null;
|
|
2031
|
+
},
|
|
2032
|
+
async disableCustomerRole(id) {
|
|
2033
|
+
await client.disableRole(create(DisableRoleRequestSchema, { id }));
|
|
2034
|
+
},
|
|
2035
|
+
async assignCustomerRole(params) {
|
|
2036
|
+
const resp = await client.assignRole(
|
|
2037
|
+
create(AssignRoleRequestSchema, {
|
|
2038
|
+
principalKind: RolePrincipalKind.CUSTOMER,
|
|
2039
|
+
principalId: params.customerId,
|
|
2040
|
+
roleId: params.roleId
|
|
2041
|
+
})
|
|
2042
|
+
);
|
|
2043
|
+
return resp.assignment ? { ...resp.assignment, customerId: resp.assignment.principalId } : null;
|
|
2044
|
+
},
|
|
2045
|
+
async revokeCustomerRoleAssignment(id) {
|
|
2046
|
+
await client.revokeRoleAssignment(
|
|
2047
|
+
create(RevokeRoleAssignmentRequestSchema, { id })
|
|
2048
|
+
);
|
|
2049
|
+
},
|
|
2050
|
+
async listCustomerRoleAssignments(params = {}) {
|
|
2051
|
+
const where = params.where ? {
|
|
2052
|
+
...params.where,
|
|
2053
|
+
...typeof params.where.customerId === "string" ? { principalId: params.where.customerId } : {}
|
|
2054
|
+
} : void 0;
|
|
2055
|
+
const resp = await client.listRoleAssignments(
|
|
2056
|
+
create(ListRoleAssignmentsRequestSchema, {
|
|
2057
|
+
principalKind: RolePrincipalKind.CUSTOMER,
|
|
2058
|
+
where,
|
|
2059
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2060
|
+
after: params.after,
|
|
2061
|
+
last: params.last,
|
|
2062
|
+
before: params.before
|
|
2063
|
+
})
|
|
2064
|
+
);
|
|
2065
|
+
return {
|
|
2066
|
+
items: (resp.items ?? []).map((a) => ({
|
|
2067
|
+
...a,
|
|
2068
|
+
customerId: a.principalId
|
|
2069
|
+
})),
|
|
2070
|
+
total: resp.total
|
|
2071
|
+
};
|
|
2072
|
+
},
|
|
2073
|
+
// ── Unified roles (EID-127/129): generic principal_kind surface ──
|
|
2074
|
+
// Used by the admin role-management UI for custom admin roles; customer
|
|
2075
|
+
// roles continue to use the *CustomerRole methods above (which call these).
|
|
2076
|
+
async listRoles(params) {
|
|
2077
|
+
const resp = await client.listRoles(
|
|
2078
|
+
create(ListRolesRequestSchema, {
|
|
2079
|
+
principalKind: params.principalKind === "admin" ? RolePrincipalKind.ADMIN : RolePrincipalKind.CUSTOMER,
|
|
2080
|
+
where: params.where,
|
|
2081
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2082
|
+
after: params.after,
|
|
2083
|
+
last: params.last,
|
|
2084
|
+
before: params.before
|
|
2085
|
+
})
|
|
2086
|
+
);
|
|
2087
|
+
return { items: resp.items ?? [], total: resp.total };
|
|
2088
|
+
},
|
|
2089
|
+
async getRole(id) {
|
|
2090
|
+
const resp = await client.getRole(create(GetRoleRequestSchema, { id }));
|
|
2091
|
+
return resp.role ?? null;
|
|
2092
|
+
},
|
|
2093
|
+
async createRole(params) {
|
|
2094
|
+
const resp = await client.createRole(
|
|
2095
|
+
create(CreateRoleRequestSchema, {
|
|
2096
|
+
principalKind: params.principalKind === "admin" ? RolePrincipalKind.ADMIN : RolePrincipalKind.CUSTOMER,
|
|
2097
|
+
tenantId: params.tenantId,
|
|
2098
|
+
projectId: params.projectId,
|
|
2099
|
+
key: params.key,
|
|
2100
|
+
name: params.name,
|
|
2101
|
+
permissions: params.permissions,
|
|
2102
|
+
isDefault: params.isDefault ?? false
|
|
2103
|
+
})
|
|
2104
|
+
);
|
|
2105
|
+
return resp.role ?? null;
|
|
2106
|
+
},
|
|
2107
|
+
async updateRole(params) {
|
|
2108
|
+
const resp = await client.updateRole(
|
|
2109
|
+
create(UpdateRoleRequestSchema, {
|
|
2110
|
+
id: params.id,
|
|
2111
|
+
name: params.name,
|
|
2112
|
+
permissions: params.permissions ?? [],
|
|
2113
|
+
isDefault: params.isDefault
|
|
2114
|
+
})
|
|
2115
|
+
);
|
|
2116
|
+
return resp.role ?? null;
|
|
2117
|
+
},
|
|
2118
|
+
async disableRole(id) {
|
|
2119
|
+
await client.disableRole(create(DisableRoleRequestSchema, { id }));
|
|
2120
|
+
},
|
|
2121
|
+
async assignRole(params) {
|
|
2122
|
+
const resp = await client.assignRole(
|
|
2123
|
+
create(AssignRoleRequestSchema, {
|
|
2124
|
+
principalKind: params.principalKind === "admin" ? RolePrincipalKind.ADMIN : RolePrincipalKind.CUSTOMER,
|
|
2125
|
+
principalId: params.principalId,
|
|
2126
|
+
roleId: params.roleId
|
|
2127
|
+
})
|
|
2128
|
+
);
|
|
2129
|
+
return resp.assignment ?? null;
|
|
2130
|
+
},
|
|
2131
|
+
async revokeRoleAssignment(id) {
|
|
2132
|
+
await client.revokeRoleAssignment(
|
|
2133
|
+
create(RevokeRoleAssignmentRequestSchema, { id })
|
|
2134
|
+
);
|
|
2135
|
+
},
|
|
2136
|
+
async listRoleAssignments(params) {
|
|
2137
|
+
const resp = await client.listRoleAssignments(
|
|
2138
|
+
create(ListRoleAssignmentsRequestSchema, {
|
|
2139
|
+
principalKind: params.principalKind === "admin" ? RolePrincipalKind.ADMIN : RolePrincipalKind.CUSTOMER,
|
|
2140
|
+
where: params.where,
|
|
2141
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2142
|
+
after: params.after,
|
|
2143
|
+
last: params.last,
|
|
2144
|
+
before: params.before
|
|
2145
|
+
})
|
|
2146
|
+
);
|
|
2147
|
+
return { items: resp.items ?? [], total: resp.total };
|
|
2148
|
+
},
|
|
2149
|
+
// ── Login with Foir: relying-party grants (admin-only) ───
|
|
2150
|
+
async listRelyingPartyGrants(params = {}) {
|
|
2151
|
+
const resp = await client.listRelyingPartyGrants(
|
|
2152
|
+
create(ListRelyingPartyGrantsRequestSchema, {
|
|
2153
|
+
adminUserId: params.adminUserId
|
|
2154
|
+
})
|
|
2155
|
+
);
|
|
2156
|
+
return { items: resp.items ?? [], total: resp.total };
|
|
2157
|
+
},
|
|
2158
|
+
async grantRelyingParty(params) {
|
|
2159
|
+
const resp = await client.grantRelyingParty(
|
|
2160
|
+
create(GrantRelyingPartyRequestSchema, params)
|
|
2161
|
+
);
|
|
2162
|
+
return resp.grant ?? null;
|
|
2163
|
+
},
|
|
2164
|
+
async revokeRelyingPartyGrant(id) {
|
|
2165
|
+
await client.revokeRelyingPartyGrant(
|
|
2166
|
+
create(RevokeRelyingPartyGrantRequestSchema, { id })
|
|
2167
|
+
);
|
|
2168
|
+
}
|
|
2169
|
+
};
|
|
2170
|
+
}
|
|
2171
|
+
|
|
2172
|
+
// ../../packages/rpc-core/src/apps.ts
|
|
2173
|
+
import { create as create2 } from "@bufbuild/protobuf";
|
|
2174
|
+
function createAppsMethods(client, statusClient) {
|
|
2175
|
+
return {
|
|
2176
|
+
async listApps(params) {
|
|
2177
|
+
return client.listApps(
|
|
2178
|
+
create2(ListAppsRequestSchema, {
|
|
2179
|
+
tenantId: params.tenantId,
|
|
2180
|
+
projectId: params.projectId,
|
|
2181
|
+
where: params.where,
|
|
2182
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2183
|
+
after: params.after,
|
|
2184
|
+
last: params.last,
|
|
2185
|
+
before: params.before
|
|
2186
|
+
})
|
|
2187
|
+
);
|
|
2188
|
+
},
|
|
2189
|
+
async getApp(tenantId, projectId, name) {
|
|
2190
|
+
const resp = await client.getApp(
|
|
2191
|
+
create2(GetAppRequestSchema, { tenantId, projectId, name })
|
|
2192
|
+
);
|
|
2193
|
+
return resp.app ?? null;
|
|
2194
|
+
},
|
|
2195
|
+
// Install — two-call path.
|
|
2196
|
+
async installApp(tenantId, projectId, manifestUrl) {
|
|
2197
|
+
return client.installApp(
|
|
2198
|
+
create2(InstallAppRequestSchema, { tenantId, projectId, manifestUrl })
|
|
2199
|
+
);
|
|
2200
|
+
},
|
|
2201
|
+
async confirmInstallApp(params) {
|
|
1806
2202
|
const resp = await client.confirmInstallApp(
|
|
1807
2203
|
create2(ConfirmInstallAppRequestSchema, {
|
|
1808
2204
|
installTicket: params.installTicket,
|
|
@@ -1815,6 +2211,7 @@ function createAppsMethods(client) {
|
|
|
1815
2211
|
);
|
|
1816
2212
|
return resp.app;
|
|
1817
2213
|
},
|
|
2214
|
+
// Update — two-phase.
|
|
1818
2215
|
async updateApp(tenantId, projectId, name) {
|
|
1819
2216
|
return client.updateApp(
|
|
1820
2217
|
create2(UpdateAppRequestSchema, { tenantId, projectId, name })
|
|
@@ -1876,35 +2273,103 @@ function createAppsMethods(client) {
|
|
|
1876
2273
|
})
|
|
1877
2274
|
);
|
|
1878
2275
|
return resp.executionId;
|
|
2276
|
+
},
|
|
2277
|
+
async listAppEvents(params) {
|
|
2278
|
+
const resp = await statusClient.listAppEvents(
|
|
2279
|
+
create2(ListAppEventsRequestSchema, {
|
|
2280
|
+
tenantId: params.tenantId,
|
|
2281
|
+
projectId: params.projectId,
|
|
2282
|
+
appName: params.appName,
|
|
2283
|
+
where: params.where,
|
|
2284
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2285
|
+
after: params.after,
|
|
2286
|
+
last: params.last,
|
|
2287
|
+
before: params.before
|
|
2288
|
+
})
|
|
2289
|
+
);
|
|
2290
|
+
return resp.events;
|
|
1879
2291
|
}
|
|
1880
2292
|
};
|
|
1881
2293
|
}
|
|
1882
2294
|
|
|
1883
|
-
// ../../packages/rpc-
|
|
2295
|
+
// ../../packages/rpc-core/src/models.ts
|
|
1884
2296
|
import { create as create3, fromJson } from "@bufbuild/protobuf";
|
|
1885
2297
|
import { ValueSchema } from "@bufbuild/protobuf/wkt";
|
|
2298
|
+
function buildModelWhere(p) {
|
|
2299
|
+
const clauses = [];
|
|
2300
|
+
if (p.search) {
|
|
2301
|
+
clauses.push({
|
|
2302
|
+
OR: [{ name: { contains: p.search } }, { key: { contains: p.search } }]
|
|
2303
|
+
});
|
|
2304
|
+
}
|
|
2305
|
+
if (p.category) clauses.push({ category: { eq: p.category } });
|
|
2306
|
+
if (p.configId) clauses.push({ configId: { eq: p.configId } });
|
|
2307
|
+
if (p.inline !== void 0) clauses.push({ inline: { eq: p.inline } });
|
|
2308
|
+
if (clauses.length === 0) return void 0;
|
|
2309
|
+
if (clauses.length === 1) return clauses[0];
|
|
2310
|
+
return { AND: clauses };
|
|
2311
|
+
}
|
|
2312
|
+
function stripUndefined(obj) {
|
|
2313
|
+
const result = {};
|
|
2314
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
2315
|
+
if (v !== void 0) result[k] = v;
|
|
2316
|
+
}
|
|
2317
|
+
return result;
|
|
2318
|
+
}
|
|
2319
|
+
function relationshipKindToProto(kind) {
|
|
2320
|
+
if (kind === "composition") return RelationshipKind.COMPOSITION;
|
|
2321
|
+
if (kind === "association") return RelationshipKind.ASSOCIATION;
|
|
2322
|
+
return RelationshipKind.UNSPECIFIED;
|
|
2323
|
+
}
|
|
2324
|
+
function relationshipKindFromProto(k) {
|
|
2325
|
+
return k === RelationshipKind.COMPOSITION ? "composition" : "association";
|
|
2326
|
+
}
|
|
2327
|
+
function fieldConfigWithRelationship(f) {
|
|
2328
|
+
const config2 = {
|
|
2329
|
+
...f.config ?? {}
|
|
2330
|
+
};
|
|
2331
|
+
const r = f.relationship;
|
|
2332
|
+
if (r && r.kind !== RelationshipKind.UNSPECIFIED) {
|
|
2333
|
+
config2.relationship = {
|
|
2334
|
+
kind: relationshipKindFromProto(r.kind),
|
|
2335
|
+
...r.inverse ? { inverse: r.inverse } : {}
|
|
2336
|
+
};
|
|
2337
|
+
}
|
|
2338
|
+
return config2;
|
|
2339
|
+
}
|
|
1886
2340
|
function jsFieldToProto(f) {
|
|
2341
|
+
const rawConfig = f.config && typeof f.config === "object" ? stripUndefined(f.config) : void 0;
|
|
2342
|
+
const relSource = rawConfig?.relationship ?? (f.relationship ? {
|
|
2343
|
+
kind: relationshipKindFromProto(f.relationship.kind),
|
|
2344
|
+
inverse: f.relationship.inverse
|
|
2345
|
+
} : void 0);
|
|
2346
|
+
const relationship = relSource && relSource.kind ? create3(RelationshipConfigSchema, {
|
|
2347
|
+
kind: relationshipKindToProto(relSource.kind),
|
|
2348
|
+
inverse: relSource.inverse
|
|
2349
|
+
}) : void 0;
|
|
2350
|
+
if (rawConfig) delete rawConfig.relationship;
|
|
2351
|
+
const config2 = rawConfig && Object.keys(rawConfig).length > 0 ? rawConfig : void 0;
|
|
1887
2352
|
return create3(FieldSchema, {
|
|
1888
2353
|
id: f.id,
|
|
1889
2354
|
key: f.key,
|
|
1890
2355
|
label: f.label,
|
|
1891
2356
|
type: f.type,
|
|
1892
2357
|
required: f.required,
|
|
1893
|
-
//
|
|
1894
|
-
//
|
|
2358
|
+
// Indexes the field into record_field_index for typed where/orderBy; the
|
|
2359
|
+
// platform rejects sort by an unqueryable field. Without this the schema
|
|
2360
|
+
// editor's "Indexed for filtering & sorting" toggle silently no-ops.
|
|
1895
2361
|
queryable: f.queryable,
|
|
1896
2362
|
helpText: f.helpText,
|
|
1897
2363
|
placeholder: f.placeholder,
|
|
1898
2364
|
defaultValue: f.defaultValue !== void 0 ? fromJson(ValueSchema, f.defaultValue) : void 0,
|
|
1899
|
-
config:
|
|
2365
|
+
config: config2,
|
|
1900
2366
|
itemType: f.itemType,
|
|
1901
2367
|
storage: f.storage,
|
|
1902
2368
|
templateZone: f.templateZone,
|
|
1903
2369
|
zoneOrder: f.zoneOrder,
|
|
1904
|
-
// Per-field {read, write} principal policy
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
access: f.access
|
|
2370
|
+
// Per-field {read, write} principal policy; platform enforces it on writes.
|
|
2371
|
+
access: f.access,
|
|
2372
|
+
relationship
|
|
1908
2373
|
});
|
|
1909
2374
|
}
|
|
1910
2375
|
function jsConfigToProto(c) {
|
|
@@ -1919,6 +2384,7 @@ function jsConfigToProto(c) {
|
|
|
1919
2384
|
requireAcceptance: c.sharing.requireAcceptance
|
|
1920
2385
|
}) : void 0,
|
|
1921
2386
|
pluralName: c.pluralName,
|
|
2387
|
+
pluralKey: c.pluralKey,
|
|
1922
2388
|
description: c.description,
|
|
1923
2389
|
category: c.category,
|
|
1924
2390
|
icon: c.icon,
|
|
@@ -1951,19 +2417,6 @@ function cacheControlScopeFromJs(scope) {
|
|
|
1951
2417
|
return CacheControlScope.UNSPECIFIED;
|
|
1952
2418
|
}
|
|
1953
2419
|
}
|
|
1954
|
-
function buildModelWhere(p) {
|
|
1955
|
-
const clauses = [];
|
|
1956
|
-
if (p.search) {
|
|
1957
|
-
clauses.push({
|
|
1958
|
-
OR: [{ name: { contains: p.search } }, { key: { contains: p.search } }]
|
|
1959
|
-
});
|
|
1960
|
-
}
|
|
1961
|
-
if (p.category) clauses.push({ category: { eq: p.category } });
|
|
1962
|
-
if (p.configId) clauses.push({ configId: { eq: p.configId } });
|
|
1963
|
-
if (clauses.length === 0) return void 0;
|
|
1964
|
-
if (clauses.length === 1) return clauses[0];
|
|
1965
|
-
return { AND: clauses };
|
|
1966
|
-
}
|
|
1967
2420
|
function createModelsMethods(client) {
|
|
1968
2421
|
return {
|
|
1969
2422
|
// ── Queries ──────────────────────────────────────────────
|
|
@@ -1982,12 +2435,16 @@ function createModelsMethods(client) {
|
|
|
1982
2435
|
create3(ListModelsRequestSchema, {
|
|
1983
2436
|
where: buildModelWhere(params),
|
|
1984
2437
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
1985
|
-
after: params
|
|
2438
|
+
after: params.after,
|
|
2439
|
+
last: params.last,
|
|
2440
|
+
before: params.before
|
|
1986
2441
|
})
|
|
1987
2442
|
);
|
|
1988
2443
|
return {
|
|
1989
2444
|
items: resp.models ?? [],
|
|
1990
|
-
total: resp.total
|
|
2445
|
+
total: resp.total,
|
|
2446
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
2447
|
+
cursors: resp.cursors ?? []
|
|
1991
2448
|
};
|
|
1992
2449
|
},
|
|
1993
2450
|
// ── Mutations ────────────────────────────────────────────
|
|
@@ -2038,39 +2495,73 @@ function createModelsMethods(client) {
|
|
|
2038
2495
|
create3(ListModelVersionsRequestSchema, {
|
|
2039
2496
|
modelId,
|
|
2040
2497
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2041
|
-
after: params
|
|
2498
|
+
after: params.after,
|
|
2499
|
+
last: params.last,
|
|
2500
|
+
before: params.before
|
|
2042
2501
|
})
|
|
2043
2502
|
);
|
|
2044
2503
|
return {
|
|
2045
2504
|
items: resp.versions ?? [],
|
|
2046
|
-
total: resp.total
|
|
2505
|
+
total: resp.total,
|
|
2506
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
2507
|
+
cursors: resp.cursors ?? []
|
|
2047
2508
|
};
|
|
2048
2509
|
},
|
|
2510
|
+
async getModelVersion(modelId, versionId) {
|
|
2511
|
+
const resp = await client.getModelVersion(
|
|
2512
|
+
create3(GetModelVersionRequestSchema, { modelId, versionId })
|
|
2513
|
+
);
|
|
2514
|
+
return resp.version ?? null;
|
|
2515
|
+
},
|
|
2049
2516
|
async restoreModelVersion(modelId, versionId) {
|
|
2050
2517
|
const resp = await client.restoreModelVersion(
|
|
2051
2518
|
create3(RestoreModelVersionRequestSchema, { modelId, versionId })
|
|
2052
2519
|
);
|
|
2053
2520
|
return resp.model ?? null;
|
|
2054
2521
|
},
|
|
2522
|
+
// ── Publish lifecycle ─────────────────────────────────────
|
|
2055
2523
|
async publishModel(id) {
|
|
2056
2524
|
const resp = await client.publishModel(
|
|
2057
2525
|
create3(PublishModelRequestSchema, { id })
|
|
2058
2526
|
);
|
|
2527
|
+
return {
|
|
2528
|
+
model: resp.model ?? null,
|
|
2529
|
+
breakingChanges: resp.breakingChanges ?? []
|
|
2530
|
+
};
|
|
2531
|
+
},
|
|
2532
|
+
async unpublishModel(id) {
|
|
2533
|
+
const resp = await client.unpublishModel(
|
|
2534
|
+
create3(UnpublishModelRequestSchema, { id })
|
|
2535
|
+
);
|
|
2059
2536
|
return resp.model ?? null;
|
|
2060
2537
|
},
|
|
2061
|
-
// Pending-publish state for one model: whether the draft diverges from
|
|
2062
|
-
// the published snapshot, and the severity-tagged change list. CLI push
|
|
2063
|
-
// reads this to decide whether an update is safe to auto-publish.
|
|
2064
2538
|
async getModelPublishStatus(id) {
|
|
2065
2539
|
const resp = await client.getModelPublishStatus(
|
|
2066
2540
|
create3(GetModelPublishStatusRequestSchema, { id })
|
|
2067
2541
|
);
|
|
2068
2542
|
return resp.status ?? null;
|
|
2543
|
+
},
|
|
2544
|
+
// ── Scheduled publishing ──────────────────────────────────
|
|
2545
|
+
async scheduleModelPublish(id, publishAt, unpublishAt) {
|
|
2546
|
+
const resp = await client.scheduleModelPublish(
|
|
2547
|
+
create3(ScheduleModelPublishRequestSchema, {
|
|
2548
|
+
id,
|
|
2549
|
+
publishAt: timestampFromDate(publishAt),
|
|
2550
|
+
unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
|
|
2551
|
+
})
|
|
2552
|
+
);
|
|
2553
|
+
return resp.model ?? null;
|
|
2554
|
+
},
|
|
2555
|
+
async cancelScheduledModelPublish(id) {
|
|
2556
|
+
const resp = await client.cancelScheduledModelPublish(
|
|
2557
|
+
create3(CancelScheduledModelPublishRequestSchema, { id })
|
|
2558
|
+
);
|
|
2559
|
+
return resp.model ?? null;
|
|
2069
2560
|
}
|
|
2070
2561
|
};
|
|
2071
2562
|
}
|
|
2072
2563
|
|
|
2073
|
-
// ../../packages/rpc-
|
|
2564
|
+
// ../../packages/rpc-core/src/records.ts
|
|
2074
2565
|
import { create as create4 } from "@bufbuild/protobuf";
|
|
2075
2566
|
function sanitizeData(obj) {
|
|
2076
2567
|
const result = {};
|
|
@@ -2136,10 +2627,17 @@ function createRecordsMethods(client) {
|
|
|
2136
2627
|
modelKey: params.modelKey,
|
|
2137
2628
|
customerId: params.customerId,
|
|
2138
2629
|
search: params.search,
|
|
2139
|
-
//
|
|
2140
|
-
// platform
|
|
2630
|
+
// Admin must always see drafts; the publish-state filter on the
|
|
2631
|
+
// platform side only kicks in for non-preview callers (the public
|
|
2632
|
+
// API), and admin lists would otherwise hide unpublished records.
|
|
2141
2633
|
preview: true,
|
|
2142
2634
|
where: params.where ? sanitizeData(params.where) : void 0,
|
|
2635
|
+
sort: params.sort?.map(
|
|
2636
|
+
(s) => create4(SortFieldSchema, {
|
|
2637
|
+
field: s.field,
|
|
2638
|
+
descending: s.descending ?? false
|
|
2639
|
+
})
|
|
2640
|
+
),
|
|
2143
2641
|
first: params.first,
|
|
2144
2642
|
after: params.after,
|
|
2145
2643
|
last: params.last,
|
|
@@ -2269,7 +2767,9 @@ function createRecordsMethods(client) {
|
|
|
2269
2767
|
create4(ListRecordVersionsRequestSchema, {
|
|
2270
2768
|
parentId,
|
|
2271
2769
|
first: params?.first ?? DEFAULT_PAGE_SIZE,
|
|
2272
|
-
after: params?.after
|
|
2770
|
+
after: params?.after,
|
|
2771
|
+
last: params?.last,
|
|
2772
|
+
before: params?.before
|
|
2273
2773
|
})
|
|
2274
2774
|
);
|
|
2275
2775
|
return {
|
|
@@ -2288,11 +2788,12 @@ function createRecordsMethods(client) {
|
|
|
2288
2788
|
);
|
|
2289
2789
|
return resp.variant ?? null;
|
|
2290
2790
|
},
|
|
2291
|
-
async updateVariant(variantId, data) {
|
|
2791
|
+
async updateVariant(variantId, data, metadataPatch) {
|
|
2292
2792
|
const resp = await client.updateVariant(
|
|
2293
2793
|
create4(UpdateVariantRequestSchema, {
|
|
2294
2794
|
variantId,
|
|
2295
|
-
data: sanitizeData(data)
|
|
2795
|
+
data: data !== void 0 ? sanitizeData(data) : void 0,
|
|
2796
|
+
metadataPatch: metadataPatch !== void 0 ? sanitizeData(metadataPatch) : void 0
|
|
2296
2797
|
})
|
|
2297
2798
|
);
|
|
2298
2799
|
return resp.variant ?? null;
|
|
@@ -2314,7 +2815,9 @@ function createRecordsMethods(client) {
|
|
|
2314
2815
|
create4(ListRecordVariantsRequestSchema, {
|
|
2315
2816
|
recordId,
|
|
2316
2817
|
first: params?.first ?? DEFAULT_PAGE_SIZE,
|
|
2317
|
-
after: params?.after
|
|
2818
|
+
after: params?.after,
|
|
2819
|
+
last: params?.last,
|
|
2820
|
+
before: params?.before
|
|
2318
2821
|
})
|
|
2319
2822
|
);
|
|
2320
2823
|
return {
|
|
@@ -2327,14 +2830,8 @@ function createRecordsMethods(client) {
|
|
|
2327
2830
|
const resp = await client.scheduleRecordPublish(
|
|
2328
2831
|
create4(ScheduleRecordPublishRequestSchema, {
|
|
2329
2832
|
versionId,
|
|
2330
|
-
publishAt:
|
|
2331
|
-
|
|
2332
|
-
nanos: 0
|
|
2333
|
-
},
|
|
2334
|
-
unpublishAt: unpublishAt ? {
|
|
2335
|
-
seconds: BigInt(Math.floor(unpublishAt.getTime() / 1e3)),
|
|
2336
|
-
nanos: 0
|
|
2337
|
-
} : void 0
|
|
2833
|
+
publishAt: timestampFromDate(publishAt),
|
|
2834
|
+
unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
|
|
2338
2835
|
})
|
|
2339
2836
|
);
|
|
2340
2837
|
return resp.version ?? null;
|
|
@@ -2348,22 +2845,26 @@ function createRecordsMethods(client) {
|
|
|
2348
2845
|
async listScheduledPublishes(params) {
|
|
2349
2846
|
const resp = await client.listScheduledPublishes(
|
|
2350
2847
|
create4(ListScheduledPublishesRequestSchema, {
|
|
2351
|
-
from: params?.from ?
|
|
2352
|
-
|
|
2353
|
-
nanos: 0
|
|
2354
|
-
} : void 0,
|
|
2355
|
-
to: params?.to ? {
|
|
2356
|
-
seconds: BigInt(Math.floor(params.to.getTime() / 1e3)),
|
|
2357
|
-
nanos: 0
|
|
2358
|
-
} : void 0,
|
|
2848
|
+
from: params?.from ? timestampFromDate(params.from) : void 0,
|
|
2849
|
+
to: params?.to ? timestampFromDate(params.to) : void 0,
|
|
2359
2850
|
modelKey: params?.modelKey,
|
|
2360
2851
|
first: params?.first ?? DEFAULT_PAGE_SIZE,
|
|
2361
|
-
after: params?.after
|
|
2852
|
+
after: params?.after,
|
|
2853
|
+
last: params?.last,
|
|
2854
|
+
before: params?.before
|
|
2362
2855
|
})
|
|
2363
2856
|
);
|
|
2857
|
+
const pi = resp.pageInfo;
|
|
2364
2858
|
return {
|
|
2365
2859
|
items: resp.versions ?? [],
|
|
2366
|
-
total: resp.total
|
|
2860
|
+
total: resp.total,
|
|
2861
|
+
pageInfo: pi ? {
|
|
2862
|
+
hasNextPage: pi.hasNextPage,
|
|
2863
|
+
hasPreviousPage: pi.hasPreviousPage,
|
|
2864
|
+
startCursor: pi.startCursor ?? "",
|
|
2865
|
+
endCursor: pi.endCursor ?? ""
|
|
2866
|
+
} : void 0,
|
|
2867
|
+
cursors: resp.cursors ?? []
|
|
2367
2868
|
};
|
|
2368
2869
|
},
|
|
2369
2870
|
async listDraftVersions(params) {
|
|
@@ -2372,12 +2873,23 @@ function createRecordsMethods(client) {
|
|
|
2372
2873
|
modelKey: params?.modelKey,
|
|
2373
2874
|
search: params?.search,
|
|
2374
2875
|
first: params?.first ?? DEFAULT_PAGE_SIZE,
|
|
2375
|
-
after: params?.after
|
|
2876
|
+
after: params?.after,
|
|
2877
|
+
last: params?.last,
|
|
2878
|
+
before: params?.before,
|
|
2879
|
+
dedupeByParent: params?.dedupeByParent ?? false
|
|
2376
2880
|
})
|
|
2377
2881
|
);
|
|
2882
|
+
const pi = resp.pageInfo;
|
|
2378
2883
|
return {
|
|
2379
2884
|
items: resp.versions ?? [],
|
|
2380
|
-
total: resp.total
|
|
2885
|
+
total: resp.total,
|
|
2886
|
+
pageInfo: pi ? {
|
|
2887
|
+
hasNextPage: pi.hasNextPage,
|
|
2888
|
+
hasPreviousPage: pi.hasPreviousPage,
|
|
2889
|
+
startCursor: pi.startCursor ?? "",
|
|
2890
|
+
endCursor: pi.endCursor ?? ""
|
|
2891
|
+
} : void 0,
|
|
2892
|
+
cursors: resp.cursors ?? []
|
|
2381
2893
|
};
|
|
2382
2894
|
},
|
|
2383
2895
|
// ── Batch Publishing ──────────────────────────────────────
|
|
@@ -2397,7 +2909,9 @@ function createRecordsMethods(client) {
|
|
|
2397
2909
|
query: params.query,
|
|
2398
2910
|
modelKeys: params.modelKeys ?? [],
|
|
2399
2911
|
first: params.first ?? 20,
|
|
2400
|
-
after: params
|
|
2912
|
+
after: params.after,
|
|
2913
|
+
last: params.last,
|
|
2914
|
+
before: params.before
|
|
2401
2915
|
})
|
|
2402
2916
|
);
|
|
2403
2917
|
return {
|
|
@@ -2425,7 +2939,9 @@ function createRecordsMethods(client) {
|
|
|
2425
2939
|
recordId: params.recordId,
|
|
2426
2940
|
modelKey: params.modelKey,
|
|
2427
2941
|
first: params.first ?? 10,
|
|
2428
|
-
after: params
|
|
2942
|
+
after: params.after,
|
|
2943
|
+
last: params.last,
|
|
2944
|
+
before: params.before
|
|
2429
2945
|
})
|
|
2430
2946
|
);
|
|
2431
2947
|
return resp.records ?? [];
|
|
@@ -2437,7 +2953,9 @@ function createRecordsMethods(client) {
|
|
|
2437
2953
|
vector: params.vector,
|
|
2438
2954
|
dimensions: params.dimensions,
|
|
2439
2955
|
provider: params.provider,
|
|
2440
|
-
modelName: params.modelName
|
|
2956
|
+
modelName: params.modelName,
|
|
2957
|
+
key: params.key,
|
|
2958
|
+
contentHash: params.contentHash
|
|
2441
2959
|
})
|
|
2442
2960
|
);
|
|
2443
2961
|
return resp.success;
|
|
@@ -2454,15 +2972,111 @@ function createRecordsMethods(client) {
|
|
|
2454
2972
|
queryVector: params.queryVector,
|
|
2455
2973
|
modelKey: params.modelKey,
|
|
2456
2974
|
first: params.first ?? 10,
|
|
2457
|
-
after: params
|
|
2975
|
+
after: params.after,
|
|
2976
|
+
last: params.last,
|
|
2977
|
+
before: params.before
|
|
2458
2978
|
})
|
|
2459
2979
|
);
|
|
2460
2980
|
return resp.results ?? [];
|
|
2981
|
+
},
|
|
2982
|
+
// ── Lookups (Stage 5 admin surfaces) ──────────────────────
|
|
2983
|
+
/**
|
|
2984
|
+
* Inline-validation check for record-edit forms. Returns true
|
|
2985
|
+
* when the (lookup, key) is currently unused in the given
|
|
2986
|
+
* slice, excluding the record being edited. Boolean-only —
|
|
2987
|
+
* the platform never leaks colliding record ids through this
|
|
2988
|
+
* surface.
|
|
2989
|
+
*/
|
|
2990
|
+
async checkLookupAvailability(params) {
|
|
2991
|
+
const resp = await client.checkLookupAvailability(
|
|
2992
|
+
create4(CheckLookupAvailabilityRequestSchema, {
|
|
2993
|
+
modelKey: params.modelKey,
|
|
2994
|
+
lookupName: params.lookupName,
|
|
2995
|
+
keyHash: params.keyHash,
|
|
2996
|
+
channel: params.channel,
|
|
2997
|
+
variantId: params.variantId,
|
|
2998
|
+
locale: params.locale,
|
|
2999
|
+
excludeRecordId: params.excludeRecordId
|
|
3000
|
+
})
|
|
3001
|
+
);
|
|
3002
|
+
return resp.available;
|
|
3003
|
+
},
|
|
3004
|
+
/**
|
|
3005
|
+
* Lists key conflicts in the projection for a model + channel
|
|
3006
|
+
* (optionally filtered to one lookup). Each ConflictGroup
|
|
3007
|
+
* carries 2+ record ids that collide on the same scope —
|
|
3008
|
+
* operator opens each record, resolves the duplicate, and
|
|
3009
|
+
* re-runs the rebuild action.
|
|
3010
|
+
*/
|
|
3011
|
+
async listLookupConflicts(params) {
|
|
3012
|
+
return client.listLookupConflicts(
|
|
3013
|
+
create4(ListLookupConflictsRequestSchema, {
|
|
3014
|
+
modelKey: params.modelKey,
|
|
3015
|
+
channel: params.channel,
|
|
3016
|
+
lookupName: params.lookupName,
|
|
3017
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3018
|
+
after: params.after,
|
|
3019
|
+
last: params.last,
|
|
3020
|
+
before: params.before
|
|
3021
|
+
})
|
|
3022
|
+
);
|
|
3023
|
+
},
|
|
3024
|
+
/**
|
|
3025
|
+
* Re-walks every record in the model and re-emits projection
|
|
3026
|
+
* rows. Used after the operator clears a conflict from the
|
|
3027
|
+
* list — returns the count of records walked so the admin UI
|
|
3028
|
+
* can show a "rebuilt N records" confirmation.
|
|
3029
|
+
*/
|
|
3030
|
+
async rebuildModelLookups(modelKey) {
|
|
3031
|
+
const resp = await client.rebuildModelLookups(
|
|
3032
|
+
create4(RebuildModelLookupsRequestSchema, { modelKey })
|
|
3033
|
+
);
|
|
3034
|
+
return resp.recordsWalked ?? 0;
|
|
3035
|
+
},
|
|
3036
|
+
/**
|
|
3037
|
+
* Slow-query advisor (Stage 10 item 9 of the query/mutate
|
|
3038
|
+
* redesign): returns the top-N (field, operator) pairs that have
|
|
3039
|
+
* fallen to the JSONB-extract slow path. The admin model-edit
|
|
3040
|
+
* page calls this with a model key for the per-model panel; the
|
|
3041
|
+
* top-level performance page calls it without a key to aggregate
|
|
3042
|
+
* across every model in the project.
|
|
3043
|
+
*/
|
|
3044
|
+
async listSlowQueryAdvisorEntries(resourceType, resourceKey, rowLimit) {
|
|
3045
|
+
const resp = await client.listSlowQueryAdvisorEntries(
|
|
3046
|
+
create4(ListSlowQueryAdvisorEntriesRequestSchema, {
|
|
3047
|
+
resourceType,
|
|
3048
|
+
resourceKey: resourceKey || void 0,
|
|
3049
|
+
rowLimit
|
|
3050
|
+
})
|
|
3051
|
+
);
|
|
3052
|
+
return resp.entries;
|
|
3053
|
+
},
|
|
3054
|
+
/**
|
|
3055
|
+
* Per-resource entry-count + total-hits summary for a resource type
|
|
3056
|
+
* ('record' | 'profile'). Cheap aggregate the model list page uses to
|
|
3057
|
+
* render a performance badge next to each model name so operators can
|
|
3058
|
+
* spot slow-path-heavy resources without drilling in. Cardinality is
|
|
3059
|
+
* bounded by (resource_key) so the table scan stays small.
|
|
3060
|
+
*/
|
|
3061
|
+
async slowQueryAdvisorSummary(resourceType) {
|
|
3062
|
+
const resp = await client.slowQueryAdvisorSummary({ resourceType });
|
|
3063
|
+
return resp.resources;
|
|
3064
|
+
},
|
|
3065
|
+
/**
|
|
3066
|
+
* Clears a single (resourceType, resourceKey, field, operator) advisor
|
|
3067
|
+
* entry after the "Promote to queryable" admin action — keeps the panel
|
|
3068
|
+
* from listing a field that's already been promoted. The auto-backfill
|
|
3069
|
+
* from item 1 catches up the index.
|
|
3070
|
+
*/
|
|
3071
|
+
async clearSlowQueryAdvisorEntry(params) {
|
|
3072
|
+
return client.clearSlowQueryAdvisorEntry(
|
|
3073
|
+
create4(ClearSlowQueryAdvisorEntryRequestSchema, params)
|
|
3074
|
+
);
|
|
2461
3075
|
}
|
|
2462
3076
|
};
|
|
2463
3077
|
}
|
|
2464
3078
|
|
|
2465
|
-
// ../../packages/rpc-
|
|
3079
|
+
// ../../packages/rpc-core/src/realtime.ts
|
|
2466
3080
|
import { create as create5 } from "@bufbuild/protobuf";
|
|
2467
3081
|
var POLICY_NAMES = {
|
|
2468
3082
|
[PersistencePolicy.UNSPECIFIED]: "unspecified",
|
|
@@ -2499,7 +3113,7 @@ function createRealtimeMethods(client) {
|
|
|
2499
3113
|
};
|
|
2500
3114
|
}
|
|
2501
3115
|
|
|
2502
|
-
// ../../packages/rpc-
|
|
3116
|
+
// ../../packages/rpc-core/src/configs.ts
|
|
2503
3117
|
import { create as create6 } from "@bufbuild/protobuf";
|
|
2504
3118
|
var DIRECTION_TO_PROTO = {
|
|
2505
3119
|
read: ConfigDirection.READ,
|
|
@@ -2508,17 +3122,16 @@ var DIRECTION_TO_PROTO = {
|
|
|
2508
3122
|
};
|
|
2509
3123
|
function createConfigsMethods(client) {
|
|
2510
3124
|
return {
|
|
2511
|
-
// ──
|
|
2512
|
-
async
|
|
2513
|
-
return client.
|
|
2514
|
-
create6(
|
|
2515
|
-
|
|
3125
|
+
// ── Queries ──────────────────────────────────────────────
|
|
3126
|
+
async listConfigHistory(configId, params = {}) {
|
|
3127
|
+
return client.listConfigHistory(
|
|
3128
|
+
create6(ListConfigHistoryRequestSchema, {
|
|
3129
|
+
configId,
|
|
2516
3130
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2517
|
-
after: params
|
|
3131
|
+
after: params.after
|
|
2518
3132
|
})
|
|
2519
3133
|
);
|
|
2520
3134
|
},
|
|
2521
|
-
// ── Queries ──────────────────────────────────────────────
|
|
2522
3135
|
async getConfig(id) {
|
|
2523
3136
|
const resp = await client.getConfig(
|
|
2524
3137
|
create6(GetConfigRequestSchema, { id })
|
|
@@ -2536,7 +3149,9 @@ function createConfigsMethods(client) {
|
|
|
2536
3149
|
create6(ListConfigsRequestSchema, {
|
|
2537
3150
|
where: params.where,
|
|
2538
3151
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2539
|
-
after: params
|
|
3152
|
+
after: params.after,
|
|
3153
|
+
last: params.last,
|
|
3154
|
+
before: params.before
|
|
2540
3155
|
})
|
|
2541
3156
|
);
|
|
2542
3157
|
},
|
|
@@ -2612,7 +3227,7 @@ function createConfigsMethods(client) {
|
|
|
2612
3227
|
};
|
|
2613
3228
|
}
|
|
2614
3229
|
|
|
2615
|
-
// ../../packages/rpc-
|
|
3230
|
+
// ../../packages/rpc-core/src/segments.ts
|
|
2616
3231
|
import { create as create7 } from "@bufbuild/protobuf";
|
|
2617
3232
|
function rawOperandToProto(raw) {
|
|
2618
3233
|
return create7(RuleOperandSchema, {
|
|
@@ -2655,9 +3270,11 @@ function createSegmentsMethods(client) {
|
|
|
2655
3270
|
create7(ListSegmentsRequestSchema, {
|
|
2656
3271
|
where: params.where,
|
|
2657
3272
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2658
|
-
after: params
|
|
2659
|
-
|
|
2660
|
-
|
|
3273
|
+
after: params.after,
|
|
3274
|
+
last: params.last,
|
|
3275
|
+
before: params.before
|
|
3276
|
+
})
|
|
3277
|
+
);
|
|
2661
3278
|
},
|
|
2662
3279
|
// ── Mutations ────────────────────────────────────────────
|
|
2663
3280
|
async createSegment(params) {
|
|
@@ -2670,9 +3287,9 @@ function createSegmentsMethods(client) {
|
|
|
2670
3287
|
rules,
|
|
2671
3288
|
evaluationMode: params.evaluationMode,
|
|
2672
3289
|
isActive: params.isActive,
|
|
2673
|
-
configId: params.configId,
|
|
2674
3290
|
manualMemberIds: params.manualMemberIds,
|
|
2675
|
-
manualMemberMode: params.manualMemberMode
|
|
3291
|
+
manualMemberMode: params.manualMemberMode,
|
|
3292
|
+
configId: params.configId
|
|
2676
3293
|
})
|
|
2677
3294
|
);
|
|
2678
3295
|
return resp.segment ?? null;
|
|
@@ -2686,7 +3303,9 @@ function createSegmentsMethods(client) {
|
|
|
2686
3303
|
description: params.description,
|
|
2687
3304
|
rules,
|
|
2688
3305
|
evaluationMode: params.evaluationMode,
|
|
2689
|
-
isActive: params.isActive
|
|
3306
|
+
isActive: params.isActive,
|
|
3307
|
+
manualMemberIds: params.manualMemberIds,
|
|
3308
|
+
manualMemberMode: params.manualMemberMode
|
|
2690
3309
|
})
|
|
2691
3310
|
);
|
|
2692
3311
|
return resp.segment ?? null;
|
|
@@ -2740,23 +3359,9 @@ function createSegmentsMethods(client) {
|
|
|
2740
3359
|
};
|
|
2741
3360
|
}
|
|
2742
3361
|
|
|
2743
|
-
// ../../packages/rpc-
|
|
2744
|
-
import { ConnectError as ConnectError2, Code as Code2 } from "@connectrpc/connect";
|
|
3362
|
+
// ../../packages/rpc-core/src/settings.ts
|
|
2745
3363
|
import { create as create8 } from "@bufbuild/protobuf";
|
|
2746
|
-
|
|
2747
|
-
return create8(CustomerProfileFieldSchema, {
|
|
2748
|
-
id: f.id,
|
|
2749
|
-
key: f.key,
|
|
2750
|
-
type: f.type,
|
|
2751
|
-
label: f.label,
|
|
2752
|
-
required: f.required,
|
|
2753
|
-
queryable: f.queryable,
|
|
2754
|
-
access: f.access,
|
|
2755
|
-
helpText: f.helpText,
|
|
2756
|
-
placeholder: f.placeholder,
|
|
2757
|
-
config: f.config
|
|
2758
|
-
});
|
|
2759
|
-
}
|
|
3364
|
+
import { ConnectError as ConnectError2, Code as Code2 } from "@connectrpc/connect";
|
|
2760
3365
|
function createSettingsMethods(client) {
|
|
2761
3366
|
return {
|
|
2762
3367
|
// ── Settings ─────────────────────────────────────────────
|
|
@@ -2790,7 +3395,9 @@ function createSettingsMethods(client) {
|
|
|
2790
3395
|
create8(ListMyMentionsRequestSchema, {
|
|
2791
3396
|
where: params.where,
|
|
2792
3397
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2793
|
-
after: params
|
|
3398
|
+
after: params.after,
|
|
3399
|
+
last: params.last,
|
|
3400
|
+
before: params.before
|
|
2794
3401
|
})
|
|
2795
3402
|
);
|
|
2796
3403
|
},
|
|
@@ -2824,7 +3431,9 @@ function createSettingsMethods(client) {
|
|
|
2824
3431
|
create8(ListNotesRequestSchema, {
|
|
2825
3432
|
where: params.where,
|
|
2826
3433
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2827
|
-
after: params
|
|
3434
|
+
after: params.after,
|
|
3435
|
+
last: params.last,
|
|
3436
|
+
before: params.before
|
|
2828
3437
|
})
|
|
2829
3438
|
);
|
|
2830
3439
|
},
|
|
@@ -2850,7 +3459,9 @@ function createSettingsMethods(client) {
|
|
|
2850
3459
|
create8(ListContextDimensionsRequestSchema, {
|
|
2851
3460
|
search: params.search,
|
|
2852
3461
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2853
|
-
after: params
|
|
3462
|
+
after: params.after,
|
|
3463
|
+
last: params.last,
|
|
3464
|
+
before: params.before
|
|
2854
3465
|
})
|
|
2855
3466
|
);
|
|
2856
3467
|
},
|
|
@@ -2898,7 +3509,9 @@ function createSettingsMethods(client) {
|
|
|
2898
3509
|
dimensionKey,
|
|
2899
3510
|
search: params.search,
|
|
2900
3511
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
2901
|
-
after: params
|
|
3512
|
+
after: params.after,
|
|
3513
|
+
last: params.last,
|
|
3514
|
+
before: params.before
|
|
2902
3515
|
})
|
|
2903
3516
|
);
|
|
2904
3517
|
},
|
|
@@ -2950,7 +3563,20 @@ function createSettingsMethods(client) {
|
|
|
2950
3563
|
async updateCustomerProfileSchema(params) {
|
|
2951
3564
|
const resp = await client.updateCustomerProfileSchema(
|
|
2952
3565
|
create8(UpdateCustomerProfileSchemaRequestSchema, {
|
|
2953
|
-
fields: params.fields.map(
|
|
3566
|
+
fields: params.fields.map((f) => ({
|
|
3567
|
+
id: f.id,
|
|
3568
|
+
key: f.key,
|
|
3569
|
+
type: f.type,
|
|
3570
|
+
label: f.label,
|
|
3571
|
+
required: f.required,
|
|
3572
|
+
helpText: f.helpText,
|
|
3573
|
+
placeholder: f.placeholder,
|
|
3574
|
+
config: f.config,
|
|
3575
|
+
// Per-field write/read principal policy (e.g. lock `plan` so a
|
|
3576
|
+
// customer can't self-grant); platform enforces on every write.
|
|
3577
|
+
access: f.access,
|
|
3578
|
+
queryable: f.queryable ?? false
|
|
3579
|
+
})),
|
|
2954
3580
|
publicFields: params.publicFields,
|
|
2955
3581
|
lookups: (params.lookups ?? []).map((l) => ({
|
|
2956
3582
|
keyBy: l.keyBy,
|
|
@@ -2961,13 +3587,13 @@ function createSettingsMethods(client) {
|
|
|
2961
3587
|
);
|
|
2962
3588
|
return resp.schema ?? null;
|
|
2963
3589
|
},
|
|
2964
|
-
async
|
|
2965
|
-
const resp = await client.
|
|
2966
|
-
create8(
|
|
3590
|
+
async getEditorConfigs(modelKey) {
|
|
3591
|
+
const resp = await client.getEditorConfigs(
|
|
3592
|
+
create8(GetEditorConfigsRequestSchema, { modelKey })
|
|
2967
3593
|
);
|
|
2968
|
-
return resp.
|
|
3594
|
+
return resp.placements ?? [];
|
|
2969
3595
|
},
|
|
2970
|
-
// ── Design Tokens
|
|
3596
|
+
// ── Design Tokens ────────────────────────────────────────
|
|
2971
3597
|
async getDesignTokens(params = {}) {
|
|
2972
3598
|
const resp = await client.getDesignTokens(
|
|
2973
3599
|
create8(GetDesignTokensRequestSchema, {
|
|
@@ -3000,16 +3626,29 @@ function createSettingsMethods(client) {
|
|
|
3000
3626
|
);
|
|
3001
3627
|
return resp.status ?? null;
|
|
3002
3628
|
},
|
|
3003
|
-
async
|
|
3004
|
-
|
|
3005
|
-
create8(
|
|
3629
|
+
async scheduleDesignTokensPublish(params) {
|
|
3630
|
+
const resp = await client.scheduleDesignTokensPublish(
|
|
3631
|
+
create8(ScheduleDesignTokensPublishRequestSchema, {
|
|
3632
|
+
publishAt: timestampFromDate(params.publishAt),
|
|
3633
|
+
unpublishAt: params.unpublishAt ? timestampFromDate(params.unpublishAt) : void 0
|
|
3634
|
+
})
|
|
3006
3635
|
);
|
|
3636
|
+
return resp.tokens ?? null;
|
|
3007
3637
|
},
|
|
3008
|
-
async
|
|
3009
|
-
const resp = await client.
|
|
3010
|
-
create8(
|
|
3638
|
+
async cancelScheduledDesignTokensPublish() {
|
|
3639
|
+
const resp = await client.cancelScheduledDesignTokensPublish(
|
|
3640
|
+
create8(CancelScheduledDesignTokensPublishRequestSchema, {})
|
|
3011
3641
|
);
|
|
3012
|
-
return resp.
|
|
3642
|
+
return resp.tokens ?? null;
|
|
3643
|
+
},
|
|
3644
|
+
async countDesignTokenReferences(tokenPath) {
|
|
3645
|
+
const resp = await client.countDesignTokenReferences(
|
|
3646
|
+
create8(CountDesignTokenReferencesRequestSchema, { tokenPath })
|
|
3647
|
+
);
|
|
3648
|
+
return {
|
|
3649
|
+
paragraphCount: resp.paragraphCount,
|
|
3650
|
+
recordCount: resp.recordCount
|
|
3651
|
+
};
|
|
3013
3652
|
},
|
|
3014
3653
|
// ── Variant Catalog ──────────────────────────────────────
|
|
3015
3654
|
async listVariantCatalog(params = {}) {
|
|
@@ -3017,7 +3656,9 @@ function createSettingsMethods(client) {
|
|
|
3017
3656
|
create8(ListVariantCatalogRequestSchema, {
|
|
3018
3657
|
where: params.where,
|
|
3019
3658
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3020
|
-
after: params
|
|
3659
|
+
after: params.after,
|
|
3660
|
+
last: params.last,
|
|
3661
|
+
before: params.before
|
|
3021
3662
|
})
|
|
3022
3663
|
);
|
|
3023
3664
|
},
|
|
@@ -3067,7 +3708,9 @@ function createSettingsMethods(client) {
|
|
|
3067
3708
|
create8(ListLocalesRequestSchema, {
|
|
3068
3709
|
where: params.where,
|
|
3069
3710
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3070
|
-
after: params
|
|
3711
|
+
after: params.after,
|
|
3712
|
+
last: params.last,
|
|
3713
|
+
before: params.before
|
|
3071
3714
|
})
|
|
3072
3715
|
);
|
|
3073
3716
|
},
|
|
@@ -3146,10 +3789,13 @@ function createSettingsMethods(client) {
|
|
|
3146
3789
|
return resp.preferences ?? null;
|
|
3147
3790
|
},
|
|
3148
3791
|
// ── Recently Opened ─────────────────────────────────────
|
|
3149
|
-
async listRecentlyOpened(
|
|
3792
|
+
async listRecentlyOpened(params = {}) {
|
|
3150
3793
|
const resp = await client.listRecentlyOpened(
|
|
3151
3794
|
create8(ListRecentlyOpenedRequestSchema, {
|
|
3152
|
-
first: first ?? 20
|
|
3795
|
+
first: params.first ?? 20,
|
|
3796
|
+
after: params.after,
|
|
3797
|
+
last: params.last,
|
|
3798
|
+
before: params.before
|
|
3153
3799
|
})
|
|
3154
3800
|
);
|
|
3155
3801
|
return resp.items ?? [];
|
|
@@ -3179,11 +3825,215 @@ function createSettingsMethods(client) {
|
|
|
3179
3825
|
create8(ClearRecentlyOpenedRequestSchema, {})
|
|
3180
3826
|
);
|
|
3181
3827
|
return resp.success;
|
|
3828
|
+
},
|
|
3829
|
+
// ── Schema publishing ─────────────────────────────────────
|
|
3830
|
+
async getProjectPublishStatus() {
|
|
3831
|
+
const resp = await client.getProjectPublishStatus(
|
|
3832
|
+
create8(GetProjectPublishStatusRequestSchema, {})
|
|
3833
|
+
);
|
|
3834
|
+
return {
|
|
3835
|
+
pending: resp.pending ?? [],
|
|
3836
|
+
breakingChanges: resp.breakingChanges ?? []
|
|
3837
|
+
};
|
|
3838
|
+
},
|
|
3839
|
+
async publishProjectSchema() {
|
|
3840
|
+
const resp = await client.publishProjectSchema(
|
|
3841
|
+
create8(PublishProjectSchemaRequestSchema, {})
|
|
3842
|
+
);
|
|
3843
|
+
return {
|
|
3844
|
+
modelsPublished: resp.modelsPublished,
|
|
3845
|
+
operationsPublished: resp.operationsPublished,
|
|
3846
|
+
contextDimensionsPublished: resp.contextDimensionsPublished,
|
|
3847
|
+
authProvidersPublished: resp.authProvidersPublished,
|
|
3848
|
+
profileSchemaPublished: resp.profileSchemaPublished,
|
|
3849
|
+
breakingChanges: resp.breakingChanges ?? []
|
|
3850
|
+
};
|
|
3851
|
+
},
|
|
3852
|
+
// Context dimension publish lifecycle.
|
|
3853
|
+
async publishContextDimension(id) {
|
|
3854
|
+
const resp = await client.publishContextDimension(
|
|
3855
|
+
create8(PublishContextDimensionRequestSchema, { id })
|
|
3856
|
+
);
|
|
3857
|
+
return {
|
|
3858
|
+
dimension: resp.dimension ?? null,
|
|
3859
|
+
breakingChanges: resp.breakingChanges ?? []
|
|
3860
|
+
};
|
|
3861
|
+
},
|
|
3862
|
+
async unpublishContextDimension(id) {
|
|
3863
|
+
const resp = await client.unpublishContextDimension(
|
|
3864
|
+
create8(UnpublishContextDimensionRequestSchema, { id })
|
|
3865
|
+
);
|
|
3866
|
+
return resp.dimension ?? null;
|
|
3867
|
+
},
|
|
3868
|
+
async getContextDimensionPublishStatus(id) {
|
|
3869
|
+
const resp = await client.getContextDimensionPublishStatus(
|
|
3870
|
+
create8(GetContextDimensionPublishStatusRequestSchema, { id })
|
|
3871
|
+
);
|
|
3872
|
+
return resp.status ?? null;
|
|
3873
|
+
},
|
|
3874
|
+
async scheduleContextDimensionPublish(id, publishAt, unpublishAt) {
|
|
3875
|
+
const resp = await client.scheduleContextDimensionPublish(
|
|
3876
|
+
create8(ScheduleContextDimensionPublishRequestSchema, {
|
|
3877
|
+
id,
|
|
3878
|
+
publishAt: timestampFromDate(publishAt),
|
|
3879
|
+
unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
|
|
3880
|
+
})
|
|
3881
|
+
);
|
|
3882
|
+
return resp.dimension ?? null;
|
|
3883
|
+
},
|
|
3884
|
+
async cancelScheduledContextDimensionPublish(id) {
|
|
3885
|
+
const resp = await client.cancelScheduledContextDimensionPublish(
|
|
3886
|
+
create8(CancelScheduledContextDimensionPublishRequestSchema, { id })
|
|
3887
|
+
);
|
|
3888
|
+
return resp.dimension ?? null;
|
|
3889
|
+
},
|
|
3890
|
+
// Context dimension version history.
|
|
3891
|
+
async listContextDimensionVersions(contextDimensionId, params = {}) {
|
|
3892
|
+
const resp = await client.listContextDimensionVersions(
|
|
3893
|
+
create8(ListContextDimensionVersionsRequestSchema, {
|
|
3894
|
+
contextDimensionId,
|
|
3895
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3896
|
+
after: params.after,
|
|
3897
|
+
last: params.last,
|
|
3898
|
+
before: params.before
|
|
3899
|
+
})
|
|
3900
|
+
);
|
|
3901
|
+
return {
|
|
3902
|
+
items: resp.versions ?? [],
|
|
3903
|
+
total: resp.total,
|
|
3904
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
3905
|
+
cursors: resp.cursors ?? []
|
|
3906
|
+
};
|
|
3907
|
+
},
|
|
3908
|
+
async getContextDimensionVersion(versionId) {
|
|
3909
|
+
const resp = await client.getContextDimensionVersion(
|
|
3910
|
+
create8(GetContextDimensionVersionRequestSchema, { id: versionId })
|
|
3911
|
+
);
|
|
3912
|
+
return resp.version ?? null;
|
|
3913
|
+
},
|
|
3914
|
+
async restoreContextDimensionVersion(versionId, changeDescription) {
|
|
3915
|
+
const resp = await client.restoreContextDimensionVersion(
|
|
3916
|
+
create8(RestoreContextDimensionVersionRequestSchema, {
|
|
3917
|
+
versionId,
|
|
3918
|
+
changeDescription
|
|
3919
|
+
})
|
|
3920
|
+
);
|
|
3921
|
+
return {
|
|
3922
|
+
dimension: resp.dimension ?? null,
|
|
3923
|
+
newVersion: resp.newVersion ?? null
|
|
3924
|
+
};
|
|
3925
|
+
},
|
|
3926
|
+
// Profile schema publish lifecycle (project-scoped, no entity id).
|
|
3927
|
+
async publishProfileSchema() {
|
|
3928
|
+
const resp = await client.publishProfileSchema(
|
|
3929
|
+
create8(PublishProfileSchemaRequestSchema, {})
|
|
3930
|
+
);
|
|
3931
|
+
return {
|
|
3932
|
+
profileSchema: resp.profileSchema ?? null,
|
|
3933
|
+
breakingChanges: resp.breakingChanges ?? []
|
|
3934
|
+
};
|
|
3935
|
+
},
|
|
3936
|
+
async unpublishProfileSchema() {
|
|
3937
|
+
const resp = await client.unpublishProfileSchema(
|
|
3938
|
+
create8(UnpublishProfileSchemaRequestSchema, {})
|
|
3939
|
+
);
|
|
3940
|
+
return resp.profileSchema ?? null;
|
|
3941
|
+
},
|
|
3942
|
+
async getProfileSchemaPublishStatus() {
|
|
3943
|
+
const resp = await client.getProfileSchemaPublishStatus(
|
|
3944
|
+
create8(GetProfileSchemaPublishStatusRequestSchema, {})
|
|
3945
|
+
);
|
|
3946
|
+
return resp.status ?? null;
|
|
3947
|
+
},
|
|
3948
|
+
async scheduleProfileSchemaPublish(publishAt, unpublishAt) {
|
|
3949
|
+
const resp = await client.scheduleProfileSchemaPublish(
|
|
3950
|
+
create8(ScheduleProfileSchemaPublishRequestSchema, {
|
|
3951
|
+
publishAt: timestampFromDate(publishAt),
|
|
3952
|
+
unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
|
|
3953
|
+
})
|
|
3954
|
+
);
|
|
3955
|
+
return resp.profileSchema ?? null;
|
|
3956
|
+
},
|
|
3957
|
+
async cancelScheduledProfileSchemaPublish() {
|
|
3958
|
+
const resp = await client.cancelScheduledProfileSchemaPublish(
|
|
3959
|
+
create8(CancelScheduledProfileSchemaPublishRequestSchema, {})
|
|
3960
|
+
);
|
|
3961
|
+
return resp.profileSchema ?? null;
|
|
3962
|
+
},
|
|
3963
|
+
// Profile schema version history (project-scoped, no entity id).
|
|
3964
|
+
async listProfileSchemaVersions(params = {}) {
|
|
3965
|
+
const resp = await client.listProfileSchemaVersions(
|
|
3966
|
+
create8(ListProfileSchemaVersionsRequestSchema, {
|
|
3967
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3968
|
+
after: params.after,
|
|
3969
|
+
last: params.last,
|
|
3970
|
+
before: params.before
|
|
3971
|
+
})
|
|
3972
|
+
);
|
|
3973
|
+
return {
|
|
3974
|
+
items: resp.versions ?? [],
|
|
3975
|
+
total: resp.total,
|
|
3976
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
3977
|
+
cursors: resp.cursors ?? []
|
|
3978
|
+
};
|
|
3979
|
+
},
|
|
3980
|
+
async getProfileSchemaVersion(versionId) {
|
|
3981
|
+
const resp = await client.getProfileSchemaVersion(
|
|
3982
|
+
create8(GetProfileSchemaVersionRequestSchema, { id: versionId })
|
|
3983
|
+
);
|
|
3984
|
+
return resp.version ?? null;
|
|
3985
|
+
},
|
|
3986
|
+
async restoreProfileSchemaVersion(versionId, changeDescription) {
|
|
3987
|
+
const resp = await client.restoreProfileSchemaVersion(
|
|
3988
|
+
create8(RestoreProfileSchemaVersionRequestSchema, {
|
|
3989
|
+
versionId,
|
|
3990
|
+
changeDescription
|
|
3991
|
+
})
|
|
3992
|
+
);
|
|
3993
|
+
return {
|
|
3994
|
+
schema: resp.schema ?? null,
|
|
3995
|
+
newVersion: resp.newVersion ?? null
|
|
3996
|
+
};
|
|
3997
|
+
},
|
|
3998
|
+
// Design token version history (project-scoped, no entity id).
|
|
3999
|
+
async listDesignTokenVersions(params = {}) {
|
|
4000
|
+
const resp = await client.listDesignTokenVersions(
|
|
4001
|
+
create8(ListDesignTokenVersionsRequestSchema, {
|
|
4002
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
4003
|
+
after: params.after,
|
|
4004
|
+
last: params.last,
|
|
4005
|
+
before: params.before
|
|
4006
|
+
})
|
|
4007
|
+
);
|
|
4008
|
+
return {
|
|
4009
|
+
items: resp.versions ?? [],
|
|
4010
|
+
total: resp.total,
|
|
4011
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
4012
|
+
cursors: resp.cursors ?? []
|
|
4013
|
+
};
|
|
4014
|
+
},
|
|
4015
|
+
async getDesignTokenVersion(versionId) {
|
|
4016
|
+
const resp = await client.getDesignTokenVersion(
|
|
4017
|
+
create8(GetDesignTokenVersionRequestSchema, { id: versionId })
|
|
4018
|
+
);
|
|
4019
|
+
return resp.version ?? null;
|
|
4020
|
+
},
|
|
4021
|
+
async restoreDesignTokenVersion(versionId, changeDescription) {
|
|
4022
|
+
const resp = await client.restoreDesignTokenVersion(
|
|
4023
|
+
create8(RestoreDesignTokenVersionRequestSchema, {
|
|
4024
|
+
versionId,
|
|
4025
|
+
changeDescription
|
|
4026
|
+
})
|
|
4027
|
+
);
|
|
4028
|
+
return {
|
|
4029
|
+
tokens: resp.tokens ?? null,
|
|
4030
|
+
newVersion: resp.newVersion ?? null
|
|
4031
|
+
};
|
|
3182
4032
|
}
|
|
3183
4033
|
};
|
|
3184
4034
|
}
|
|
3185
4035
|
|
|
3186
|
-
// ../../packages/rpc-
|
|
4036
|
+
// ../../packages/rpc-core/src/storage.ts
|
|
3187
4037
|
import { create as create9 } from "@bufbuild/protobuf";
|
|
3188
4038
|
function createStorageMethods(client) {
|
|
3189
4039
|
return {
|
|
@@ -3193,7 +4043,8 @@ function createStorageMethods(client) {
|
|
|
3193
4043
|
filename: params.filename,
|
|
3194
4044
|
mimeType: params.mimeType,
|
|
3195
4045
|
size: BigInt(params.size),
|
|
3196
|
-
folder: params.folder
|
|
4046
|
+
folder: params.folder,
|
|
4047
|
+
metadata: params.metadata
|
|
3197
4048
|
})
|
|
3198
4049
|
);
|
|
3199
4050
|
},
|
|
@@ -3212,8 +4063,11 @@ function createStorageMethods(client) {
|
|
|
3212
4063
|
create9(ListFilesRequestSchema, {
|
|
3213
4064
|
where: params.where,
|
|
3214
4065
|
includeDeleted: params.includeDeleted ?? false,
|
|
4066
|
+
onlyDeleted: params.onlyDeleted ?? false,
|
|
3215
4067
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3216
|
-
after: params
|
|
4068
|
+
after: params.after,
|
|
4069
|
+
last: params.last,
|
|
4070
|
+
before: params.before
|
|
3217
4071
|
})
|
|
3218
4072
|
);
|
|
3219
4073
|
},
|
|
@@ -3265,6 +4119,10 @@ function createStorageMethods(client) {
|
|
|
3265
4119
|
);
|
|
3266
4120
|
return resp.file ?? null;
|
|
3267
4121
|
},
|
|
4122
|
+
async emptyTrash() {
|
|
4123
|
+
const resp = await client.emptyTrash(create9(EmptyTrashRequestSchema, {}));
|
|
4124
|
+
return { deleted: resp.deleted, freedBytes: resp.freedBytes };
|
|
4125
|
+
},
|
|
3268
4126
|
async trackFileUsage(fileId, entityType) {
|
|
3269
4127
|
const resp = await client.trackFileUsage(
|
|
3270
4128
|
create9(TrackFileUsageRequestSchema, { fileId, entityType })
|
|
@@ -3277,36 +4135,52 @@ function createStorageMethods(client) {
|
|
|
3277
4135
|
);
|
|
3278
4136
|
return resp.success;
|
|
3279
4137
|
},
|
|
3280
|
-
// Documented Stage-9 exception: CleanupOrphanedFiles is a write-batch
|
|
3281
|
-
// ceiling, not list pagination, so it keeps `limit` rather than `first`.
|
|
3282
4138
|
async cleanupOrphanedFiles(params) {
|
|
3283
4139
|
return client.cleanupOrphanedFiles(
|
|
3284
4140
|
create9(CleanupOrphanedFilesRequestSchema, {
|
|
3285
4141
|
orphanThresholdDays: params?.orphanThresholdDays ?? 30,
|
|
3286
4142
|
dryRun: params?.dryRun ?? false,
|
|
3287
|
-
limit: params?.limit ?? 100
|
|
4143
|
+
limit: params?.limit ?? 100,
|
|
4144
|
+
trashRetentionDays: params?.trashRetentionDays ?? 0
|
|
3288
4145
|
})
|
|
3289
4146
|
);
|
|
4147
|
+
},
|
|
4148
|
+
async retryFileGeneration(fileId, asset) {
|
|
4149
|
+
const resp = await client.retryFileGeneration(
|
|
4150
|
+
create9(RetryFileGenerationRequestSchema, { fileId, asset })
|
|
4151
|
+
);
|
|
4152
|
+
return resp.file ?? null;
|
|
3290
4153
|
}
|
|
3291
4154
|
};
|
|
3292
4155
|
}
|
|
3293
4156
|
|
|
3294
|
-
// ../../packages/rpc-
|
|
4157
|
+
// ../../packages/rpc-core/src/operations.ts
|
|
3295
4158
|
import { create as create10 } from "@bufbuild/protobuf";
|
|
3296
4159
|
function toOperationKind(kind) {
|
|
3297
4160
|
if (kind === "query") return OperationKind.QUERY;
|
|
3298
4161
|
if (kind === "field") return OperationKind.FIELD;
|
|
3299
4162
|
return OperationKind.MUTATION;
|
|
3300
4163
|
}
|
|
4164
|
+
var decoder = new TextDecoder();
|
|
4165
|
+
function parseBytes(data) {
|
|
4166
|
+
if (!data || data.length === 0) return void 0;
|
|
4167
|
+
try {
|
|
4168
|
+
return JSON.parse(decoder.decode(data));
|
|
4169
|
+
} catch {
|
|
4170
|
+
return void 0;
|
|
4171
|
+
}
|
|
4172
|
+
}
|
|
3301
4173
|
function createOperationsMethods(client) {
|
|
3302
4174
|
return {
|
|
3303
4175
|
// ── CRUD ──────────────────────────────────────────────────
|
|
3304
4176
|
async listOperations(params = {}) {
|
|
3305
4177
|
return client.listOperations(
|
|
3306
|
-
create10(
|
|
4178
|
+
create10(ListOperationsRequestSchema, {
|
|
3307
4179
|
where: params.where,
|
|
3308
4180
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3309
|
-
after: params
|
|
4181
|
+
after: params.after,
|
|
4182
|
+
last: params.last,
|
|
4183
|
+
before: params.before
|
|
3310
4184
|
})
|
|
3311
4185
|
);
|
|
3312
4186
|
},
|
|
@@ -3328,15 +4202,18 @@ function createOperationsMethods(client) {
|
|
|
3328
4202
|
description: params.description,
|
|
3329
4203
|
icon: params.icon,
|
|
3330
4204
|
category: params.category,
|
|
4205
|
+
endpointAuth: params.endpointAuth,
|
|
3331
4206
|
timeoutMs: params.timeoutMs,
|
|
3332
4207
|
inputSchema: params.inputSchema,
|
|
3333
4208
|
outputSchema: params.outputSchema,
|
|
4209
|
+
ui: params.ui,
|
|
4210
|
+
configId: params.configId,
|
|
3334
4211
|
quotas: params.quotas,
|
|
4212
|
+
precondition: params.precondition,
|
|
4213
|
+
allowedRoles: params.allowedRoles,
|
|
3335
4214
|
retryPolicy: params.retryPolicy,
|
|
3336
4215
|
callbackTimeoutRetryPolicy: params.callbackTimeoutRetryPolicy,
|
|
3337
|
-
|
|
3338
|
-
precondition: params.precondition,
|
|
3339
|
-
configId: params.configId,
|
|
4216
|
+
isActive: params.isActive,
|
|
3340
4217
|
supportsAsync: params.supportsAsync,
|
|
3341
4218
|
callbackTtlSeconds: params.callbackTtlSeconds,
|
|
3342
4219
|
capabilities: params.capabilities ?? [],
|
|
@@ -3358,14 +4235,17 @@ function createOperationsMethods(client) {
|
|
|
3358
4235
|
name: params.name,
|
|
3359
4236
|
description: params.description,
|
|
3360
4237
|
endpoint: params.endpoint,
|
|
4238
|
+
endpointAuth: params.endpointAuth,
|
|
3361
4239
|
timeoutMs: params.timeoutMs,
|
|
3362
4240
|
inputSchema: params.inputSchema,
|
|
3363
4241
|
outputSchema: params.outputSchema,
|
|
4242
|
+
ui: params.ui,
|
|
4243
|
+
isActive: params.isActive,
|
|
3364
4244
|
quotas: params.quotas,
|
|
4245
|
+
precondition: params.precondition,
|
|
3365
4246
|
retryPolicy: params.retryPolicy,
|
|
3366
4247
|
callbackTimeoutRetryPolicy: params.callbackTimeoutRetryPolicy,
|
|
3367
|
-
|
|
3368
|
-
isActive: params.isActive,
|
|
4248
|
+
allowedRoles: params.allowedRoles,
|
|
3369
4249
|
supportsAsync: params.supportsAsync,
|
|
3370
4250
|
callbackTtlSeconds: params.callbackTtlSeconds,
|
|
3371
4251
|
capabilities: params.capabilities,
|
|
@@ -3386,22 +4266,84 @@ function createOperationsMethods(client) {
|
|
|
3386
4266
|
);
|
|
3387
4267
|
return resp.success;
|
|
3388
4268
|
},
|
|
3389
|
-
async getSigningSecret() {
|
|
3390
|
-
const resp = await client.getSigningSecret(
|
|
3391
|
-
create10(GetSigningSecretRequestSchema, {})
|
|
3392
|
-
);
|
|
3393
|
-
return { secret: resp.secret, prefix: resp.prefix };
|
|
3394
|
-
},
|
|
3395
4269
|
// ── Execution ─────────────────────────────────────────────
|
|
3396
4270
|
async executeOperation(params) {
|
|
3397
|
-
|
|
4271
|
+
const resp = await client.executeOperation(
|
|
3398
4272
|
create10(ExecuteOperationRequestSchema, {
|
|
3399
4273
|
operationKey: params.operationKey,
|
|
3400
4274
|
input: params.input,
|
|
3401
4275
|
triggerType: params.triggerType,
|
|
3402
|
-
|
|
4276
|
+
triggerContext: params.triggerContext,
|
|
4277
|
+
customerId: params.customerId,
|
|
4278
|
+
record: params.record,
|
|
4279
|
+
content: params.content,
|
|
4280
|
+
// Default to SYNC — the platform rejects requests without a mode.
|
|
4281
|
+
// Most admin-triggered calls (UI operations) want a response,
|
|
4282
|
+
// so SYNC is the sensible default.
|
|
4283
|
+
mode: params.mode ?? ExecutionMode.SYNC
|
|
4284
|
+
})
|
|
4285
|
+
);
|
|
4286
|
+
const exec = resp.execution;
|
|
4287
|
+
if (!exec) return null;
|
|
4288
|
+
return {
|
|
4289
|
+
...exec,
|
|
4290
|
+
result: parseBytes(resp.resultJson) ?? parseBytes(exec.resultJson),
|
|
4291
|
+
error: resp.errorMessage ? { message: resp.errorMessage } : parseBytes(exec.errorJson),
|
|
4292
|
+
completed: resp.completed
|
|
4293
|
+
};
|
|
4294
|
+
},
|
|
4295
|
+
async listOperationExecutions(params = {}) {
|
|
4296
|
+
return client.listOperationExecutions(
|
|
4297
|
+
create10(ListOperationExecutionsRequestSchema, {
|
|
4298
|
+
where: params.where,
|
|
4299
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
4300
|
+
after: params.after,
|
|
4301
|
+
last: params.last,
|
|
4302
|
+
before: params.before
|
|
4303
|
+
})
|
|
4304
|
+
);
|
|
4305
|
+
},
|
|
4306
|
+
async getOperationExecutionStats(operationKey) {
|
|
4307
|
+
const resp = await client.getOperationExecutionStats(
|
|
4308
|
+
create10(GetOperationExecutionStatsRequestSchema, {
|
|
4309
|
+
operationKey
|
|
3403
4310
|
})
|
|
3404
4311
|
);
|
|
4312
|
+
return resp.stats ?? [];
|
|
4313
|
+
},
|
|
4314
|
+
/**
|
|
4315
|
+
* Cancel an in-flight execution (status ∈ pending|dispatched|running).
|
|
4316
|
+
* Idempotent: returns {success: true, status: 'cancelled'} on a row we
|
|
4317
|
+
* just cancelled OR one already in the cancelled state. Other terminal
|
|
4318
|
+
* states return success=false with the actual status so the caller can
|
|
4319
|
+
* surface "already completed" vs "already cancelled" distinctly.
|
|
4320
|
+
*/
|
|
4321
|
+
async cancelOperationExecution(id) {
|
|
4322
|
+
const resp = await client.cancelOperationExecution(
|
|
4323
|
+
create10(CancelOperationExecutionRequestSchema, { id })
|
|
4324
|
+
);
|
|
4325
|
+
return { success: resp.success, status: resp.status ?? "" };
|
|
4326
|
+
},
|
|
4327
|
+
/**
|
|
4328
|
+
* Cancel every non-terminal execution of an operation key. Used by the
|
|
4329
|
+
* "Cancel all in-flight" affordance on the operation detail page so an
|
|
4330
|
+
* operator can stop a misbehaving extension without clicking through
|
|
4331
|
+
* each row individually.
|
|
4332
|
+
*
|
|
4333
|
+
* When `statuses` is omitted, the server cancels the default set
|
|
4334
|
+
* (pending, dispatched, running). Pass a narrower list to scope further.
|
|
4335
|
+
*/
|
|
4336
|
+
async cancelOperationExecutions(params) {
|
|
4337
|
+
const resp = await client.cancelOperationExecutions(
|
|
4338
|
+
create10(CancelOperationExecutionsRequestSchema, {
|
|
4339
|
+
operationKey: params.operationKey,
|
|
4340
|
+
statuses: params.statuses ?? []
|
|
4341
|
+
})
|
|
4342
|
+
);
|
|
4343
|
+
return {
|
|
4344
|
+
cancelledCount: resp.cancelledCount,
|
|
4345
|
+
cancelledIds: resp.cancelledIds ?? []
|
|
4346
|
+
};
|
|
3405
4347
|
},
|
|
3406
4348
|
// ── Dead Letter Queue ─────────────────────────────────────
|
|
3407
4349
|
async listDeadLetterEntries(params = {}) {
|
|
@@ -3409,32 +4351,168 @@ function createOperationsMethods(client) {
|
|
|
3409
4351
|
create10(ListDeadLetterEntriesRequestSchema, {
|
|
3410
4352
|
where: params.where,
|
|
3411
4353
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3412
|
-
after: params
|
|
4354
|
+
after: params.after,
|
|
4355
|
+
last: params.last,
|
|
4356
|
+
before: params.before
|
|
4357
|
+
})
|
|
4358
|
+
);
|
|
4359
|
+
},
|
|
4360
|
+
async retryDeadLetterEntry(id) {
|
|
4361
|
+
const resp = await client.retryDeadLetterEntry(
|
|
4362
|
+
create10(RetryDeadLetterEntryRequestSchema, { id })
|
|
4363
|
+
);
|
|
4364
|
+
return resp.success;
|
|
4365
|
+
},
|
|
4366
|
+
async dismissDeadLetterEntry(id) {
|
|
4367
|
+
const resp = await client.dismissDeadLetterEntry(
|
|
4368
|
+
create10(DismissDeadLetterEntryRequestSchema, { id })
|
|
4369
|
+
);
|
|
4370
|
+
return resp.success;
|
|
4371
|
+
},
|
|
4372
|
+
async bulkDismissDeadLetters(params) {
|
|
4373
|
+
const resp = await client.bulkDismissDeadLetters(
|
|
4374
|
+
create10(BulkDismissDeadLettersRequestSchema, { ids: params.ids })
|
|
4375
|
+
);
|
|
4376
|
+
return { dismissedCount: resp.dismissedCount };
|
|
4377
|
+
},
|
|
4378
|
+
async bulkRetryDeadLetters(params) {
|
|
4379
|
+
const resp = await client.bulkRetryDeadLetters(
|
|
4380
|
+
create10(BulkRetryDeadLettersRequestSchema, { ids: params.ids })
|
|
4381
|
+
);
|
|
4382
|
+
return { retriedCount: resp.retriedCount };
|
|
4383
|
+
},
|
|
4384
|
+
async dismissAllPendingDeadLetters(params = {}) {
|
|
4385
|
+
const resp = await client.dismissAllPendingDeadLetters(
|
|
4386
|
+
create10(DismissAllPendingDeadLettersRequestSchema, {
|
|
4387
|
+
operationKey: params.operationKey
|
|
4388
|
+
})
|
|
4389
|
+
);
|
|
4390
|
+
return { dismissedCount: resp.dismissedCount };
|
|
4391
|
+
},
|
|
4392
|
+
async listDeadLetterOperationKeys(params = {}) {
|
|
4393
|
+
return client.listDeadLetterOperationKeys(
|
|
4394
|
+
create10(ListDeadLetterOperationKeysRequestSchema, {
|
|
4395
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
4396
|
+
after: params.after,
|
|
4397
|
+
last: params.last,
|
|
4398
|
+
before: params.before
|
|
4399
|
+
})
|
|
4400
|
+
);
|
|
4401
|
+
},
|
|
4402
|
+
async getDeadLetterStats() {
|
|
4403
|
+
const resp = await client.getDeadLetterStats(
|
|
4404
|
+
create10(GetDeadLetterStatsRequestSchema, {})
|
|
4405
|
+
);
|
|
4406
|
+
return resp.stats ?? null;
|
|
4407
|
+
},
|
|
4408
|
+
// ── Circuit Breakers ──────────────────────────────────────
|
|
4409
|
+
async listCircuitStates(params = {}) {
|
|
4410
|
+
return client.listCircuitStates(
|
|
4411
|
+
create10(ListCircuitStatesRequestSchema, {
|
|
4412
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
4413
|
+
after: params.after,
|
|
4414
|
+
last: params.last,
|
|
4415
|
+
before: params.before
|
|
4416
|
+
})
|
|
4417
|
+
);
|
|
4418
|
+
},
|
|
4419
|
+
async resetCircuit(operationKey) {
|
|
4420
|
+
const resp = await client.resetCircuit(
|
|
4421
|
+
create10(ResetCircuitRequestSchema, { operationKey })
|
|
4422
|
+
);
|
|
4423
|
+
return resp.success;
|
|
4424
|
+
},
|
|
4425
|
+
// ── Signing ───────────────────────────────────────────────
|
|
4426
|
+
async getSigningSecret() {
|
|
4427
|
+
const resp = await client.getSigningSecret(
|
|
4428
|
+
create10(GetSigningSecretRequestSchema, {})
|
|
4429
|
+
);
|
|
4430
|
+
return { secret: resp.secret, prefix: resp.prefix };
|
|
4431
|
+
},
|
|
4432
|
+
async regenerateSigningSecret() {
|
|
4433
|
+
const resp = await client.regenerateSigningSecret(
|
|
4434
|
+
create10(RegenerateSigningSecretRequestSchema, {})
|
|
4435
|
+
);
|
|
4436
|
+
return { secret: resp.secret };
|
|
4437
|
+
},
|
|
4438
|
+
// ── Versioning ────────────────────────────────────────────
|
|
4439
|
+
async listOperationVersions(operationId, params = {}) {
|
|
4440
|
+
const resp = await client.listOperationVersions(
|
|
4441
|
+
create10(ListOperationVersionsRequestSchema, {
|
|
4442
|
+
operationId,
|
|
4443
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
4444
|
+
after: params.after,
|
|
4445
|
+
last: params.last,
|
|
4446
|
+
before: params.before
|
|
3413
4447
|
})
|
|
3414
4448
|
);
|
|
4449
|
+
return {
|
|
4450
|
+
items: resp.versions ?? [],
|
|
4451
|
+
total: resp.total,
|
|
4452
|
+
pageInfo: toPageInfo(resp.pageInfo),
|
|
4453
|
+
cursors: resp.cursors ?? []
|
|
4454
|
+
};
|
|
3415
4455
|
},
|
|
3416
|
-
async
|
|
3417
|
-
const resp = await client.
|
|
3418
|
-
create10(
|
|
4456
|
+
async getOperationVersion(versionId) {
|
|
4457
|
+
const resp = await client.getOperationVersion(
|
|
4458
|
+
create10(GetOperationVersionRequestSchema, { id: versionId })
|
|
3419
4459
|
);
|
|
3420
|
-
return resp.
|
|
4460
|
+
return resp.version ?? null;
|
|
3421
4461
|
},
|
|
3422
|
-
async
|
|
3423
|
-
const resp = await client.
|
|
3424
|
-
create10(
|
|
4462
|
+
async restoreOperationVersion(versionId, changeDescription) {
|
|
4463
|
+
const resp = await client.restoreOperationVersion(
|
|
4464
|
+
create10(RestoreOperationVersionRequestSchema, {
|
|
4465
|
+
versionId,
|
|
4466
|
+
changeDescription
|
|
4467
|
+
})
|
|
3425
4468
|
);
|
|
3426
|
-
return
|
|
4469
|
+
return {
|
|
4470
|
+
operation: resp.operation ?? null,
|
|
4471
|
+
newVersion: resp.newVersion ?? null
|
|
4472
|
+
};
|
|
3427
4473
|
},
|
|
4474
|
+
// ── Schema publish lifecycle ──────────────────────────────
|
|
3428
4475
|
async publishOperation(id) {
|
|
3429
4476
|
const resp = await client.publishOperation(
|
|
3430
4477
|
create10(PublishOperationRequestSchema, { id })
|
|
3431
4478
|
);
|
|
4479
|
+
return {
|
|
4480
|
+
operation: resp.operation ?? null,
|
|
4481
|
+
breakingChanges: resp.breakingChanges ?? []
|
|
4482
|
+
};
|
|
4483
|
+
},
|
|
4484
|
+
async unpublishOperation(id) {
|
|
4485
|
+
const resp = await client.unpublishOperation(
|
|
4486
|
+
create10(UnpublishOperationRequestSchema, { id })
|
|
4487
|
+
);
|
|
4488
|
+
return resp.operation ?? null;
|
|
4489
|
+
},
|
|
4490
|
+
async getOperationPublishStatus(id) {
|
|
4491
|
+
const resp = await client.getOperationPublishStatus(
|
|
4492
|
+
create10(GetOperationPublishStatusRequestSchema, { id })
|
|
4493
|
+
);
|
|
4494
|
+
return resp.status ?? null;
|
|
4495
|
+
},
|
|
4496
|
+
async scheduleOperationPublish(id, publishAt, unpublishAt) {
|
|
4497
|
+
const resp = await client.scheduleOperationPublish(
|
|
4498
|
+
create10(ScheduleOperationPublishRequestSchema, {
|
|
4499
|
+
id,
|
|
4500
|
+
publishAt: timestampFromDate(publishAt),
|
|
4501
|
+
unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
|
|
4502
|
+
})
|
|
4503
|
+
);
|
|
4504
|
+
return resp.operation ?? null;
|
|
4505
|
+
},
|
|
4506
|
+
async cancelScheduledOperationPublish(id) {
|
|
4507
|
+
const resp = await client.cancelScheduledOperationPublish(
|
|
4508
|
+
create10(CancelScheduledOperationPublishRequestSchema, { id })
|
|
4509
|
+
);
|
|
3432
4510
|
return resp.operation ?? null;
|
|
3433
4511
|
}
|
|
3434
4512
|
};
|
|
3435
4513
|
}
|
|
3436
4514
|
|
|
3437
|
-
// ../../packages/rpc-
|
|
4515
|
+
// ../../packages/rpc-core/src/hooks.ts
|
|
3438
4516
|
import { create as create11 } from "@bufbuild/protobuf";
|
|
3439
4517
|
function createHooksMethods(client) {
|
|
3440
4518
|
return {
|
|
@@ -3444,7 +4522,9 @@ function createHooksMethods(client) {
|
|
|
3444
4522
|
create11(ListHooksRequestSchema, {
|
|
3445
4523
|
where: params.where,
|
|
3446
4524
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3447
|
-
after: params
|
|
4525
|
+
after: params.after,
|
|
4526
|
+
last: params.last,
|
|
4527
|
+
before: params.before
|
|
3448
4528
|
})
|
|
3449
4529
|
);
|
|
3450
4530
|
},
|
|
@@ -3496,13 +4576,15 @@ function createHooksMethods(client) {
|
|
|
3496
4576
|
);
|
|
3497
4577
|
return resp.hook ?? null;
|
|
3498
4578
|
},
|
|
3499
|
-
// ── Deliveries
|
|
4579
|
+
// ── Deliveries ───────────────────────────────────────────
|
|
3500
4580
|
async listHookDeliveries(params = {}) {
|
|
3501
4581
|
return client.listHookDeliveries(
|
|
3502
4582
|
create11(ListHookDeliveriesRequestSchema, {
|
|
3503
4583
|
where: params.where,
|
|
3504
4584
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3505
|
-
after: params
|
|
4585
|
+
after: params.after,
|
|
4586
|
+
last: params.last,
|
|
4587
|
+
before: params.before
|
|
3506
4588
|
})
|
|
3507
4589
|
);
|
|
3508
4590
|
},
|
|
@@ -3512,7 +4594,7 @@ function createHooksMethods(client) {
|
|
|
3512
4594
|
);
|
|
3513
4595
|
return resp.success;
|
|
3514
4596
|
},
|
|
3515
|
-
// ── Testing
|
|
4597
|
+
// ── Testing ──────────────────────────────────────────────
|
|
3516
4598
|
async testHook(params) {
|
|
3517
4599
|
const resp = await client.testHook(
|
|
3518
4600
|
create11(TestHookRequestSchema, {
|
|
@@ -3528,32 +4610,145 @@ function createHooksMethods(client) {
|
|
|
3528
4610
|
};
|
|
3529
4611
|
}
|
|
3530
4612
|
|
|
3531
|
-
// ../../packages/rpc-
|
|
4613
|
+
// ../../packages/rpc-core/src/notifications.ts
|
|
3532
4614
|
import { create as create12 } from "@bufbuild/protobuf";
|
|
4615
|
+
var NOTIFICATION_TYPE_TO_PROTO = {
|
|
4616
|
+
JOB_COMPLETED: NotificationType.JOB_COMPLETED,
|
|
4617
|
+
JOB_FAILED: NotificationType.JOB_FAILED,
|
|
4618
|
+
JOB_PROGRESS: NotificationType.JOB_PROGRESS,
|
|
4619
|
+
MENTION: NotificationType.MENTION,
|
|
4620
|
+
NOTE_REPLY: NotificationType.NOTE_REPLY,
|
|
4621
|
+
NOTE_RESOLVED: NotificationType.NOTE_RESOLVED,
|
|
4622
|
+
SYSTEM: NotificationType.SYSTEM,
|
|
4623
|
+
ANNOUNCEMENT: NotificationType.ANNOUNCEMENT
|
|
4624
|
+
};
|
|
4625
|
+
function buildNotificationChannels(p) {
|
|
4626
|
+
const channels = {};
|
|
4627
|
+
const push = {};
|
|
4628
|
+
if (p.deepLink) push.deep_link = p.deepLink;
|
|
4629
|
+
if (p.threadId) push.thread_id = p.threadId;
|
|
4630
|
+
if (p.badge !== void 0) push.badge = p.badge;
|
|
4631
|
+
if (p.pushData) push.data = p.pushData;
|
|
4632
|
+
if (Object.keys(push).length > 0) channels.push = push;
|
|
4633
|
+
const email = {};
|
|
4634
|
+
if (p.emailSubject) email.subject = p.emailSubject;
|
|
4635
|
+
if (p.emailBody) email.body = p.emailBody;
|
|
4636
|
+
if (p.emailReplyTo) email.reply_to = p.emailReplyTo;
|
|
4637
|
+
if (p.emailCtas && p.emailCtas.length > 0) {
|
|
4638
|
+
email.ctas = p.emailCtas.map((c) => ({ label: c.label, url: c.url }));
|
|
4639
|
+
}
|
|
4640
|
+
if (Object.keys(email).length > 0) channels.email = email;
|
|
4641
|
+
return channels;
|
|
4642
|
+
}
|
|
3533
4643
|
function createNotificationsMethods(client) {
|
|
3534
4644
|
return {
|
|
4645
|
+
// ── Queries ──────────────────────────────────────────────
|
|
3535
4646
|
async listNotifications(params = {}) {
|
|
3536
4647
|
return client.listNotifications(
|
|
3537
4648
|
create12(ListNotificationsRequestSchema, {
|
|
3538
4649
|
where: params.where,
|
|
3539
|
-
first: params.first ??
|
|
3540
|
-
after: params
|
|
4650
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
4651
|
+
after: params.after,
|
|
4652
|
+
last: params.last,
|
|
4653
|
+
before: params.before
|
|
3541
4654
|
})
|
|
3542
4655
|
);
|
|
3543
4656
|
},
|
|
4657
|
+
async getUnreadCount() {
|
|
4658
|
+
const resp = await client.getUnreadCount(
|
|
4659
|
+
create12(GetUnreadCountRequestSchema, {})
|
|
4660
|
+
);
|
|
4661
|
+
return resp.count;
|
|
4662
|
+
},
|
|
4663
|
+
// ── Mutations ────────────────────────────────────────────
|
|
3544
4664
|
async markNotificationRead(id) {
|
|
3545
4665
|
const resp = await client.markNotificationRead(
|
|
3546
4666
|
create12(MarkNotificationReadRequestSchema, { id })
|
|
3547
4667
|
);
|
|
3548
4668
|
return resp.success;
|
|
3549
4669
|
},
|
|
3550
|
-
async markAllNotificationsRead() {
|
|
4670
|
+
async markAllNotificationsRead(type) {
|
|
3551
4671
|
const resp = await client.markAllNotificationsRead(
|
|
3552
|
-
create12(MarkAllNotificationsReadRequestSchema, {
|
|
4672
|
+
create12(MarkAllNotificationsReadRequestSchema, {
|
|
4673
|
+
type: type ? NOTIFICATION_TYPE_TO_PROTO[type] : void 0
|
|
4674
|
+
})
|
|
4675
|
+
);
|
|
4676
|
+
return resp.count;
|
|
4677
|
+
},
|
|
4678
|
+
async deleteNotification(id) {
|
|
4679
|
+
const resp = await client.deleteNotification(
|
|
4680
|
+
create12(DeleteNotificationRequestSchema, { id })
|
|
4681
|
+
);
|
|
4682
|
+
return resp.success;
|
|
4683
|
+
},
|
|
4684
|
+
// ── Announcements ────────────────────────────────────────
|
|
4685
|
+
async sendAnnouncement(params) {
|
|
4686
|
+
const resp = await client.sendAnnouncement(
|
|
4687
|
+
create12(SendAnnouncementRequestSchema, {
|
|
4688
|
+
title: params.title,
|
|
4689
|
+
message: params.message,
|
|
4690
|
+
actionUrl: params.actionUrl,
|
|
4691
|
+
targetType: params.targetType,
|
|
4692
|
+
targetIds: params.targetIds ?? []
|
|
4693
|
+
})
|
|
4694
|
+
);
|
|
4695
|
+
return resp.notification ?? null;
|
|
4696
|
+
},
|
|
4697
|
+
async listAnnouncementHistory(params = {}) {
|
|
4698
|
+
return client.listAnnouncementHistory(
|
|
4699
|
+
create12(ListAnnouncementHistoryRequestSchema, {
|
|
4700
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
4701
|
+
after: params.after,
|
|
4702
|
+
last: params.last,
|
|
4703
|
+
before: params.before
|
|
4704
|
+
})
|
|
4705
|
+
);
|
|
4706
|
+
},
|
|
4707
|
+
// ── Customer Notifications ────────────────────────────────
|
|
4708
|
+
async listCustomerNotifications(params = {}) {
|
|
4709
|
+
return client.listCustomerNotifications(
|
|
4710
|
+
create12(ListCustomerNotificationsRequestSchema, {
|
|
4711
|
+
where: params.where,
|
|
4712
|
+
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
4713
|
+
after: params.after,
|
|
4714
|
+
last: params.last,
|
|
4715
|
+
before: params.before
|
|
4716
|
+
})
|
|
4717
|
+
);
|
|
4718
|
+
},
|
|
4719
|
+
async sendCustomerNotification(params) {
|
|
4720
|
+
const resp = await client.sendCustomerNotification(
|
|
4721
|
+
create12(SendCustomerNotificationRequestSchema, {
|
|
4722
|
+
customerId: params.customerId,
|
|
4723
|
+
title: params.title,
|
|
4724
|
+
message: params.message,
|
|
4725
|
+
category: params.category,
|
|
4726
|
+
actionUrl: params.actionUrl,
|
|
4727
|
+
metadata: params.metadata,
|
|
4728
|
+
imageUrl: params.imageUrl,
|
|
4729
|
+
expiresAt: params.expiresAt ? timestampFromDate(params.expiresAt) : void 0,
|
|
4730
|
+
channels: buildNotificationChannels(params)
|
|
4731
|
+
})
|
|
4732
|
+
);
|
|
4733
|
+
return resp.notification ?? null;
|
|
4734
|
+
},
|
|
4735
|
+
async sendBulkCustomerNotification(params) {
|
|
4736
|
+
const resp = await client.sendBulkCustomerNotification(
|
|
4737
|
+
create12(SendBulkCustomerNotificationRequestSchema, {
|
|
4738
|
+
customerIds: params.customerIds,
|
|
4739
|
+
title: params.title,
|
|
4740
|
+
message: params.message,
|
|
4741
|
+
category: params.category,
|
|
4742
|
+
actionUrl: params.actionUrl,
|
|
4743
|
+
metadata: params.metadata,
|
|
4744
|
+
imageUrl: params.imageUrl,
|
|
4745
|
+
expiresAt: params.expiresAt ? timestampFromDate(params.expiresAt) : void 0,
|
|
4746
|
+
channels: buildNotificationChannels(params)
|
|
4747
|
+
})
|
|
3553
4748
|
);
|
|
3554
4749
|
return resp.count;
|
|
3555
4750
|
},
|
|
3556
|
-
// ── Push Credentials
|
|
4751
|
+
// ── Push Credentials (admin) ─────────────────────────────
|
|
3557
4752
|
async listPushCredentials(params) {
|
|
3558
4753
|
return client.listPushCredentials(
|
|
3559
4754
|
create12(ListPushCredentialsRequestSchema, {
|
|
@@ -3582,7 +4777,7 @@ function createNotificationsMethods(client) {
|
|
|
3582
4777
|
);
|
|
3583
4778
|
return resp.success;
|
|
3584
4779
|
},
|
|
3585
|
-
// ── Device Tokens
|
|
4780
|
+
// ── Device Tokens (customer apps) ─────────────────────────
|
|
3586
4781
|
async registerDeviceToken(params) {
|
|
3587
4782
|
const resp = await client.registerDeviceToken(
|
|
3588
4783
|
create12(RegisterDeviceTokenRequestSchema, {
|
|
@@ -3599,31 +4794,11 @@ function createNotificationsMethods(client) {
|
|
|
3599
4794
|
create12(UnregisterDeviceTokenRequestSchema, { token })
|
|
3600
4795
|
);
|
|
3601
4796
|
return resp.success;
|
|
3602
|
-
},
|
|
3603
|
-
// ── Customer Notifications ───────────────────────────────────
|
|
3604
|
-
async sendCustomerNotification(params) {
|
|
3605
|
-
const resp = await client.sendCustomerNotification(
|
|
3606
|
-
create12(SendCustomerNotificationRequestSchema, {
|
|
3607
|
-
customerId: params.customerId,
|
|
3608
|
-
title: params.title,
|
|
3609
|
-
message: params.message,
|
|
3610
|
-
category: params.category,
|
|
3611
|
-
actionUrl: params.actionUrl,
|
|
3612
|
-
deepLink: params.deepLink,
|
|
3613
|
-
badge: params.badge,
|
|
3614
|
-
threadId: params.threadId,
|
|
3615
|
-
emailSubject: params.emailSubject,
|
|
3616
|
-
emailBody: params.emailBody,
|
|
3617
|
-
emailReplyTo: params.emailReplyTo,
|
|
3618
|
-
emailCtas: params.emailCtas
|
|
3619
|
-
})
|
|
3620
|
-
);
|
|
3621
|
-
return resp.notification ?? null;
|
|
3622
4797
|
}
|
|
3623
4798
|
};
|
|
3624
4799
|
}
|
|
3625
4800
|
|
|
3626
|
-
// ../../packages/rpc-
|
|
4801
|
+
// ../../packages/rpc-core/src/cron-schedules.ts
|
|
3627
4802
|
import { create as create13 } from "@bufbuild/protobuf";
|
|
3628
4803
|
function createCronSchedulesMethods(client) {
|
|
3629
4804
|
return {
|
|
@@ -3633,7 +4808,9 @@ function createCronSchedulesMethods(client) {
|
|
|
3633
4808
|
create13(ListCronSchedulesRequestSchema, {
|
|
3634
4809
|
where: params.where,
|
|
3635
4810
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3636
|
-
after: params
|
|
4811
|
+
after: params.after,
|
|
4812
|
+
last: params.last,
|
|
4813
|
+
before: params.before
|
|
3637
4814
|
})
|
|
3638
4815
|
);
|
|
3639
4816
|
},
|
|
@@ -3705,9 +4882,8 @@ function createCronSchedulesMethods(client) {
|
|
|
3705
4882
|
};
|
|
3706
4883
|
}
|
|
3707
4884
|
|
|
3708
|
-
// ../../packages/rpc-
|
|
4885
|
+
// ../../packages/rpc-core/src/publish-batches.ts
|
|
3709
4886
|
import { create as create14 } from "@bufbuild/protobuf";
|
|
3710
|
-
import { timestampFromDate } from "@bufbuild/protobuf/wkt";
|
|
3711
4887
|
function createPublishBatchesMethods(client) {
|
|
3712
4888
|
return {
|
|
3713
4889
|
async listPublishBatches(params = {}) {
|
|
@@ -3715,7 +4891,9 @@ function createPublishBatchesMethods(client) {
|
|
|
3715
4891
|
create14(ListPublishBatchesRequestSchema, {
|
|
3716
4892
|
where: params.where,
|
|
3717
4893
|
first: params.first ?? DEFAULT_PAGE_SIZE,
|
|
3718
|
-
after: params
|
|
4894
|
+
after: params.after,
|
|
4895
|
+
last: params.last,
|
|
4896
|
+
before: params.before
|
|
3719
4897
|
})
|
|
3720
4898
|
);
|
|
3721
4899
|
return { batches: resp.batches ?? [], total: resp.total };
|
|
@@ -3826,36 +5004,39 @@ function createPublishBatchesMethods(client) {
|
|
|
3826
5004
|
};
|
|
3827
5005
|
}
|
|
3828
5006
|
|
|
3829
|
-
// ../../packages/rpc-
|
|
5007
|
+
// ../../packages/rpc-core/src/secrets.ts
|
|
3830
5008
|
import { create as create15 } from "@bufbuild/protobuf";
|
|
3831
|
-
function createSecretsMethods(
|
|
5009
|
+
function createSecretsMethods(secretsClient, appInstallClient) {
|
|
3832
5010
|
return {
|
|
5011
|
+
// ── Generic SecretsService surface (used by project-level browser) ──
|
|
3833
5012
|
async put(args) {
|
|
3834
|
-
const resp = await
|
|
5013
|
+
const resp = await secretsClient.putSecret(
|
|
3835
5014
|
create15(PutSecretRequestSchema, {
|
|
3836
5015
|
tenantId: args.tenantId,
|
|
3837
5016
|
projectId: args.projectId,
|
|
3838
5017
|
ownerKind: args.ownerKind,
|
|
3839
5018
|
ownerId: args.ownerId ?? "",
|
|
3840
5019
|
label: args.label ?? "",
|
|
3841
|
-
plaintext: args.plaintext
|
|
5020
|
+
plaintext: args.plaintext,
|
|
5021
|
+
expiresAt: args.expiresAt ? timestampFromDate(args.expiresAt) : void 0
|
|
3842
5022
|
})
|
|
3843
5023
|
);
|
|
3844
5024
|
return resp.ref;
|
|
3845
5025
|
},
|
|
3846
5026
|
async get(ref, purpose) {
|
|
3847
|
-
return
|
|
5027
|
+
return secretsClient.getSecret(
|
|
3848
5028
|
create15(GetSecretRequestSchema, { ref, purpose: purpose ?? "" })
|
|
3849
5029
|
);
|
|
3850
5030
|
},
|
|
3851
5031
|
async list(args) {
|
|
3852
|
-
return
|
|
5032
|
+
return secretsClient.listSecrets(
|
|
3853
5033
|
create15(ListSecretsRequestSchema, {
|
|
3854
5034
|
tenantId: args.tenantId,
|
|
3855
5035
|
projectId: args.projectId,
|
|
3856
5036
|
ownerKind: args.ownerKind ?? OwnerKind.UNSPECIFIED,
|
|
3857
5037
|
ownerId: args.ownerId ?? "",
|
|
3858
5038
|
includeSoftDeleted: args.includeSoftDeleted ?? false,
|
|
5039
|
+
where: args.where,
|
|
3859
5040
|
first: args.first ?? DEFAULT_PAGE_SIZE,
|
|
3860
5041
|
after: args.after,
|
|
3861
5042
|
last: args.last,
|
|
@@ -3863,26 +5044,81 @@ function createSecretsMethods(client) {
|
|
|
3863
5044
|
})
|
|
3864
5045
|
);
|
|
3865
5046
|
},
|
|
3866
|
-
async rotate(ref, plaintext) {
|
|
3867
|
-
const resp = await
|
|
3868
|
-
create15(RotateSecretRequestSchema, {
|
|
5047
|
+
async rotate(ref, plaintext, expiresAt) {
|
|
5048
|
+
const resp = await secretsClient.rotateSecret(
|
|
5049
|
+
create15(RotateSecretRequestSchema, {
|
|
5050
|
+
ref,
|
|
5051
|
+
plaintext,
|
|
5052
|
+
expiresAt: expiresAt ? timestampFromDate(expiresAt) : void 0
|
|
5053
|
+
})
|
|
3869
5054
|
);
|
|
3870
5055
|
return resp.newRef;
|
|
3871
5056
|
},
|
|
3872
5057
|
async delete(ref) {
|
|
3873
|
-
await
|
|
5058
|
+
await secretsClient.deleteSecret(
|
|
5059
|
+
create15(DeleteSecretRequestSchema, { ref })
|
|
5060
|
+
);
|
|
3874
5061
|
},
|
|
3875
5062
|
async restore(ref) {
|
|
3876
|
-
await
|
|
5063
|
+
await secretsClient.restoreSecret(
|
|
5064
|
+
create15(RestoreSecretRequestSchema, { ref })
|
|
5065
|
+
);
|
|
3877
5066
|
},
|
|
3878
5067
|
async purge(args = {}) {
|
|
3879
|
-
const resp = await
|
|
5068
|
+
const resp = await secretsClient.purgeSoftDeleted(
|
|
3880
5069
|
create15(PurgeSoftDeletedRequestSchema, {
|
|
3881
5070
|
tenantId: args.tenantId ?? "",
|
|
3882
5071
|
projectId: args.projectId ?? ""
|
|
3883
5072
|
})
|
|
3884
5073
|
);
|
|
3885
5074
|
return resp.purgedCount;
|
|
5075
|
+
},
|
|
5076
|
+
// ── AppInstallationService surface (used by AppDetailPage credential editor) ──
|
|
5077
|
+
async getAppCredentialStruct(tenantId, projectId, appName) {
|
|
5078
|
+
const resp = await appInstallClient.getAppCredentialStruct(
|
|
5079
|
+
create15(GetAppCredentialStructRequestSchema, {
|
|
5080
|
+
tenantId,
|
|
5081
|
+
projectId,
|
|
5082
|
+
appName
|
|
5083
|
+
})
|
|
5084
|
+
);
|
|
5085
|
+
return {
|
|
5086
|
+
values: resp.values?.fields ?? {},
|
|
5087
|
+
populated: resp.populated
|
|
5088
|
+
};
|
|
5089
|
+
},
|
|
5090
|
+
async completeAppInstall(args) {
|
|
5091
|
+
const resp = await appInstallClient.completeAppInstall(
|
|
5092
|
+
create15(CompleteAppInstallRequestSchema, {
|
|
5093
|
+
tenantId: args.tenantId,
|
|
5094
|
+
projectId: args.projectId,
|
|
5095
|
+
appName: args.appName,
|
|
5096
|
+
values: args.values
|
|
5097
|
+
})
|
|
5098
|
+
);
|
|
5099
|
+
return resp.success;
|
|
5100
|
+
},
|
|
5101
|
+
async rotateAppCredential(args) {
|
|
5102
|
+
const resp = await appInstallClient.rotateAppCredential(
|
|
5103
|
+
create15(RotateAppCredentialRequestSchema, {
|
|
5104
|
+
tenantId: args.tenantId,
|
|
5105
|
+
projectId: args.projectId,
|
|
5106
|
+
appName: args.appName,
|
|
5107
|
+
fieldName: args.fieldName,
|
|
5108
|
+
plaintext: args.plaintext
|
|
5109
|
+
})
|
|
5110
|
+
);
|
|
5111
|
+
return resp.success;
|
|
5112
|
+
},
|
|
5113
|
+
async uninstallAppFromVault(tenantId, projectId, appName) {
|
|
5114
|
+
const resp = await appInstallClient.uninstallApp(
|
|
5115
|
+
create15(AppInstallationServiceUninstallAppRequestSchema, {
|
|
5116
|
+
tenantId,
|
|
5117
|
+
projectId,
|
|
5118
|
+
appName
|
|
5119
|
+
})
|
|
5120
|
+
);
|
|
5121
|
+
return resp.success;
|
|
3886
5122
|
}
|
|
3887
5123
|
};
|
|
3888
5124
|
}
|
|
@@ -3922,8 +5158,14 @@ function createNodePlatformClient(apiUrl, headers) {
|
|
|
3922
5158
|
publishBatches: createPublishBatchesMethods(
|
|
3923
5159
|
createRpcClient(SchedulesService, transport)
|
|
3924
5160
|
),
|
|
3925
|
-
apps: createAppsMethods(
|
|
3926
|
-
|
|
5161
|
+
apps: createAppsMethods(
|
|
5162
|
+
createRpcClient(AppsService, transport),
|
|
5163
|
+
createRpcClient(AppStatusService, transport)
|
|
5164
|
+
),
|
|
5165
|
+
secrets: createSecretsMethods(
|
|
5166
|
+
createRpcClient(SecretsService, transport),
|
|
5167
|
+
createRpcClient(AppInstallationService, transport)
|
|
5168
|
+
)
|
|
3927
5169
|
};
|
|
3928
5170
|
}
|
|
3929
5171
|
|
|
@@ -5501,10 +6743,16 @@ Edit the files, then run:
|
|
|
5501
6743
|
|
|
5502
6744
|
// src/commands/push.ts
|
|
5503
6745
|
import chalk6 from "chalk";
|
|
6746
|
+
import inquirer5 from "inquirer";
|
|
5504
6747
|
import { existsSync as existsSync4, readFileSync, writeFileSync as writeFileSync2 } from "fs";
|
|
5505
6748
|
import { resolve as resolve4 } from "path";
|
|
5506
6749
|
|
|
5507
6750
|
// src/lib/reconciler.ts
|
|
6751
|
+
function foldRemoteFieldRelationship(f) {
|
|
6752
|
+
if (!f || typeof f !== "object") return f;
|
|
6753
|
+
const { relationship: _drop, ...rest } = f;
|
|
6754
|
+
return { ...rest, config: fieldConfigWithRelationship(f) };
|
|
6755
|
+
}
|
|
5508
6756
|
function zeroCounts() {
|
|
5509
6757
|
return { created: 0, updated: 0, deleted: 0 };
|
|
5510
6758
|
}
|
|
@@ -5696,6 +6944,120 @@ async function reconcileConfig(client, configId, manifest, options = {}) {
|
|
|
5696
6944
|
}
|
|
5697
6945
|
return summary;
|
|
5698
6946
|
}
|
|
6947
|
+
async function planReconcile(client, manifest, options = {}) {
|
|
6948
|
+
const plan = { creates: [], updates: [], deletions: [] };
|
|
6949
|
+
const existingConfig = await client.configs.getConfigByKey(manifest.key);
|
|
6950
|
+
const configId = existingConfig?.id;
|
|
6951
|
+
const classify = (resource, manifestKeys, matchable, owned) => {
|
|
6952
|
+
for (const key of manifestKeys) {
|
|
6953
|
+
if (matchable.has(key)) plan.updates.push({ resource, key });
|
|
6954
|
+
else plan.creates.push({ resource, key });
|
|
6955
|
+
}
|
|
6956
|
+
for (const key of owned) {
|
|
6957
|
+
if (!manifestKeys.has(key)) plan.deletions.push({ resource, key });
|
|
6958
|
+
}
|
|
6959
|
+
};
|
|
6960
|
+
{
|
|
6961
|
+
const existing = await client.models.listModels({ first: 200 });
|
|
6962
|
+
const items = existing.items;
|
|
6963
|
+
const manifestKeys = new Set(
|
|
6964
|
+
(manifest.models ?? []).filter((m) => m.key && m.name).map((m) => m.key)
|
|
6965
|
+
);
|
|
6966
|
+
const owned = configId ? items.filter((m) => m.configId === configId).map((m) => m.key) : [];
|
|
6967
|
+
classify("model", manifestKeys, new Set(items.map((m) => m.key)), new Set(owned));
|
|
6968
|
+
}
|
|
6969
|
+
if (configId) {
|
|
6970
|
+
const [operations, hooks, segments, schedules] = await Promise.all([
|
|
6971
|
+
client.operations.listOperations({ where: { configId: { eq: configId } }, first: 200 }),
|
|
6972
|
+
client.hooks.listHooks({ where: { configId: { eq: configId } }, first: 200 }),
|
|
6973
|
+
client.segments.listSegments({ where: { configId: { eq: configId } }, first: 200 }),
|
|
6974
|
+
client.cronSchedules.listCronSchedules({ where: { configId: { eq: configId } }, first: 200 })
|
|
6975
|
+
]);
|
|
6976
|
+
const opKeys = new Set(
|
|
6977
|
+
(operations.operations ?? []).map((o) => o.key)
|
|
6978
|
+
);
|
|
6979
|
+
classify(
|
|
6980
|
+
"operation",
|
|
6981
|
+
new Set((manifest.operations ?? []).filter((o) => o.key && o.name).map((o) => o.key)),
|
|
6982
|
+
opKeys,
|
|
6983
|
+
opKeys
|
|
6984
|
+
);
|
|
6985
|
+
const hookKeys = new Set(
|
|
6986
|
+
(hooks.hooks ?? []).map((h) => h.key)
|
|
6987
|
+
);
|
|
6988
|
+
classify(
|
|
6989
|
+
"hook",
|
|
6990
|
+
new Set(
|
|
6991
|
+
(manifest.hooks ?? []).filter((h) => h.event).map((h) => h.key || `${h.event}-${h.operationKey ?? "default"}`)
|
|
6992
|
+
),
|
|
6993
|
+
hookKeys,
|
|
6994
|
+
hookKeys
|
|
6995
|
+
);
|
|
6996
|
+
const segmentKeys = new Set(
|
|
6997
|
+
(segments.segments ?? []).map((s) => s.key)
|
|
6998
|
+
);
|
|
6999
|
+
classify(
|
|
7000
|
+
"segment",
|
|
7001
|
+
new Set((manifest.segments ?? []).filter((s) => s.key && s.name).map((s) => s.key)),
|
|
7002
|
+
segmentKeys,
|
|
7003
|
+
segmentKeys
|
|
7004
|
+
);
|
|
7005
|
+
const scheduleKeys = new Set(
|
|
7006
|
+
(schedules.schedules ?? []).map((s) => s.key)
|
|
7007
|
+
);
|
|
7008
|
+
classify(
|
|
7009
|
+
"schedule",
|
|
7010
|
+
new Set(
|
|
7011
|
+
(manifest.schedules ?? []).filter((s) => (s.key ?? s.operationKey) && s.cron).map((s) => s.key ?? s.operationKey)
|
|
7012
|
+
),
|
|
7013
|
+
scheduleKeys,
|
|
7014
|
+
scheduleKeys
|
|
7015
|
+
);
|
|
7016
|
+
} else {
|
|
7017
|
+
for (const o of manifest.operations ?? []) {
|
|
7018
|
+
if (o.key && o.name) plan.creates.push({ resource: "operation", key: o.key });
|
|
7019
|
+
}
|
|
7020
|
+
for (const h of manifest.hooks ?? []) {
|
|
7021
|
+
if (h.event) plan.creates.push({ resource: "hook", key: h.key || `${h.event}-${h.operationKey ?? "default"}` });
|
|
7022
|
+
}
|
|
7023
|
+
for (const s of manifest.segments ?? []) {
|
|
7024
|
+
if (s.key && s.name) plan.creates.push({ resource: "segment", key: s.key });
|
|
7025
|
+
}
|
|
7026
|
+
for (const s of manifest.schedules ?? []) {
|
|
7027
|
+
const key = s.key ?? s.operationKey;
|
|
7028
|
+
if (key && s.cron) plan.creates.push({ resource: "schedule", key });
|
|
7029
|
+
}
|
|
7030
|
+
}
|
|
7031
|
+
if (options.tenantId && options.projectId) {
|
|
7032
|
+
const declaredRps = (manifest.relyingParties ?? []).filter(
|
|
7033
|
+
(rp) => rp.clientId && (rp.kind ?? "customer") === "customer" && rp.customDomains !== void 0
|
|
7034
|
+
);
|
|
7035
|
+
if (declaredRps.length > 0) {
|
|
7036
|
+
const existing = await client.identity.listRelyingParties({
|
|
7037
|
+
principalKind: "customer",
|
|
7038
|
+
tenantId: options.tenantId,
|
|
7039
|
+
projectId: options.projectId
|
|
7040
|
+
});
|
|
7041
|
+
const rpByClientId = new Map(
|
|
7042
|
+
existing.items.map((c) => [c.clientId, c])
|
|
7043
|
+
);
|
|
7044
|
+
for (const rp of declaredRps) {
|
|
7045
|
+
const ex = rpByClientId.get(rp.clientId);
|
|
7046
|
+
if (!ex) continue;
|
|
7047
|
+
const declared = new Set(
|
|
7048
|
+
(rp.customDomains ?? []).map((h) => h.trim().toLowerCase().replace(/\.$/, "")).filter(Boolean)
|
|
7049
|
+
);
|
|
7050
|
+
const domains = await client.identity.listCustomDomains({ relyingPartyId: ex.id });
|
|
7051
|
+
for (const d of domains.items) {
|
|
7052
|
+
if (!declared.has(d.hostname)) {
|
|
7053
|
+
plan.deletions.push({ resource: "custom domain", key: d.hostname });
|
|
7054
|
+
}
|
|
7055
|
+
}
|
|
7056
|
+
}
|
|
7057
|
+
}
|
|
7058
|
+
}
|
|
7059
|
+
return plan;
|
|
7060
|
+
}
|
|
5699
7061
|
async function reconcileModels(client, configId, models, summary, force, allowLookupRebuild, conflictOut) {
|
|
5700
7062
|
const existing = await client.models.listModels({ first: 200 });
|
|
5701
7063
|
const allByKey = new Map(
|
|
@@ -5720,7 +7082,7 @@ async function reconcileModels(client, configId, models, summary, force, allowLo
|
|
|
5720
7082
|
continue;
|
|
5721
7083
|
}
|
|
5722
7084
|
const cfgFields = m.fields ?? [];
|
|
5723
|
-
const platFields = ex.fields ?? [];
|
|
7085
|
+
const platFields = (ex.fields ?? []).map(foldRemoteFieldRelationship);
|
|
5724
7086
|
const snapFields = ex.lastPushedFields;
|
|
5725
7087
|
const hasSnapshot = ex.lastPushedAt != null;
|
|
5726
7088
|
const { merged, conflicts } = threeWayMergeKeyed(
|
|
@@ -5745,7 +7107,7 @@ async function reconcileModels(client, configId, models, summary, force, allowLo
|
|
|
5745
7107
|
}
|
|
5746
7108
|
for (const [key, ex] of configOwnedByKey) {
|
|
5747
7109
|
if (manifestKeys.has(key)) continue;
|
|
5748
|
-
const platFields = ex.fields ?? [];
|
|
7110
|
+
const platFields = (ex.fields ?? []).map(foldRemoteFieldRelationship);
|
|
5749
7111
|
const snapFields = ex.lastPushedFields;
|
|
5750
7112
|
const hasSnapshot = ex.lastPushedAt != null;
|
|
5751
7113
|
if (hasSnapshot && !deepEqual(platFields, snapFields)) {
|
|
@@ -6172,8 +7534,7 @@ async function reconcileCustomerRoles(client, tenantId, projectId, roles, summar
|
|
|
6172
7534
|
);
|
|
6173
7535
|
}
|
|
6174
7536
|
const existing = await client.identity.listCustomerRoles({
|
|
6175
|
-
tenantId,
|
|
6176
|
-
projectId,
|
|
7537
|
+
where: { tenantId, projectId },
|
|
6177
7538
|
first: 200
|
|
6178
7539
|
});
|
|
6179
7540
|
const existingByKey = new Map(
|
|
@@ -6530,6 +7891,46 @@ function syncEnvVar(envPath, key, value) {
|
|
|
6530
7891
|
`, "utf-8");
|
|
6531
7892
|
return "written";
|
|
6532
7893
|
}
|
|
7894
|
+
function printPlannedChanges(label, changes, color) {
|
|
7895
|
+
if (changes.length === 0) return;
|
|
7896
|
+
console.log(color(` ${label}:`));
|
|
7897
|
+
for (const c of changes) {
|
|
7898
|
+
console.log(` ${color("\u2022")} ${c.resource} ${chalk6.cyan(c.key)}`);
|
|
7899
|
+
}
|
|
7900
|
+
}
|
|
7901
|
+
function printPlan(plan) {
|
|
7902
|
+
if (plan.creates.length + plan.updates.length + plan.deletions.length === 0) {
|
|
7903
|
+
console.log(chalk6.dim(" No resource changes (config blob, settings, and keys still apply on a real push)."));
|
|
7904
|
+
return;
|
|
7905
|
+
}
|
|
7906
|
+
printPlannedChanges("Create", plan.creates, chalk6.green);
|
|
7907
|
+
printPlannedChanges("Update", plan.updates, chalk6.yellow);
|
|
7908
|
+
printPlannedChanges("Delete", plan.deletions, chalk6.red);
|
|
7909
|
+
}
|
|
7910
|
+
async function confirmDeletions(plan) {
|
|
7911
|
+
console.log();
|
|
7912
|
+
console.log(chalk6.red(`\u26A0 This push deletes ${plan.deletions.length} resource${plan.deletions.length === 1 ? "" : "s"}:`));
|
|
7913
|
+
for (const d of plan.deletions) {
|
|
7914
|
+
const note = d.resource === "model" ? chalk6.dim(" (including all its records)") : "";
|
|
7915
|
+
console.log(` ${chalk6.red("\u2022")} ${d.resource} ${chalk6.cyan(d.key)}${note}`);
|
|
7916
|
+
}
|
|
7917
|
+
console.log();
|
|
7918
|
+
if (!process.stdin.isTTY) {
|
|
7919
|
+
console.error(
|
|
7920
|
+
chalk6.red("\u2716 Push aborted \u2014 deletions require confirmation.") + chalk6.dim(" Re-run with --allow-delete to proceed non-interactively, or --dry-run to inspect the plan.")
|
|
7921
|
+
);
|
|
7922
|
+
return false;
|
|
7923
|
+
}
|
|
7924
|
+
const { confirmed } = await inquirer5.prompt([
|
|
7925
|
+
{
|
|
7926
|
+
type: "confirm",
|
|
7927
|
+
name: "confirmed",
|
|
7928
|
+
message: "Proceed with these deletions?",
|
|
7929
|
+
default: false
|
|
7930
|
+
}
|
|
7931
|
+
]);
|
|
7932
|
+
return confirmed;
|
|
7933
|
+
}
|
|
6533
7934
|
function printSummary(summary) {
|
|
6534
7935
|
const lines = [];
|
|
6535
7936
|
const fmt = (label, c) => {
|
|
@@ -6576,6 +7977,14 @@ function registerPushCommand(program2, globalOpts) {
|
|
|
6576
7977
|
"--rebuild",
|
|
6577
7978
|
"Accept lookup renames. A lookup with the same keyBy and a changed `name` override rebuilds its projection rows (old rows are dropped, new rows are re-emitted from records). Without this flag, the server rejects renames with a pointer here. Pure add / remove on lookups does not require this flag.",
|
|
6578
7979
|
false
|
|
7980
|
+
).option(
|
|
7981
|
+
"--dry-run",
|
|
7982
|
+
"Print what the push would create / update / delete and exit without changing anything.",
|
|
7983
|
+
false
|
|
7984
|
+
).option(
|
|
7985
|
+
"--allow-delete",
|
|
7986
|
+
"Skip the interactive confirmation when the push deletes resources (for CI). Without this flag, deletions prompt on a TTY and abort otherwise.",
|
|
7987
|
+
false
|
|
6579
7988
|
).option("--env <path>", "Path to .env file (default: .env)").action(
|
|
6580
7989
|
withErrorHandler(
|
|
6581
7990
|
globalOpts,
|
|
@@ -6615,6 +8024,26 @@ function registerPushCommand(program2, globalOpts) {
|
|
|
6615
8024
|
}
|
|
6616
8025
|
}
|
|
6617
8026
|
const client = await createPlatformClient(gOpts);
|
|
8027
|
+
if (opts.dryRun || !opts.allowDelete) {
|
|
8028
|
+
const plan = await planReconcile(client, config2, {
|
|
8029
|
+
tenantId: resolved?.project.tenantId,
|
|
8030
|
+
projectId: resolved?.project.id
|
|
8031
|
+
});
|
|
8032
|
+
if (opts.dryRun) {
|
|
8033
|
+
console.log();
|
|
8034
|
+
console.log(chalk6.bold(`Plan for config "${config2.key}" (dry run \u2014 nothing applied):`));
|
|
8035
|
+
printPlan(plan);
|
|
8036
|
+
console.log();
|
|
8037
|
+
return;
|
|
8038
|
+
}
|
|
8039
|
+
if (plan.deletions.length > 0) {
|
|
8040
|
+
const confirmed = await confirmDeletions(plan);
|
|
8041
|
+
if (!confirmed) {
|
|
8042
|
+
console.log(chalk6.dim("Cancelled \u2014 nothing was changed."));
|
|
8043
|
+
process.exit(1);
|
|
8044
|
+
}
|
|
8045
|
+
}
|
|
8046
|
+
}
|
|
6618
8047
|
console.log(
|
|
6619
8048
|
chalk6.dim(`Pushing config "${config2.key}" to platform...`)
|
|
6620
8049
|
);
|
|
@@ -6876,7 +8305,7 @@ function registerPullCommand(program2, globalOpts) {
|
|
|
6876
8305
|
apps[a.name] = appToInput(a);
|
|
6877
8306
|
}
|
|
6878
8307
|
}
|
|
6879
|
-
const
|
|
8308
|
+
const project = await client.identity.getProject(projectId);
|
|
6880
8309
|
projectBlock = {
|
|
6881
8310
|
id: projectId,
|
|
6882
8311
|
tenantId,
|
|
@@ -7046,7 +8475,7 @@ function appToInput(a) {
|
|
|
7046
8475
|
|
|
7047
8476
|
// src/commands/remove.ts
|
|
7048
8477
|
import chalk8 from "chalk";
|
|
7049
|
-
import
|
|
8478
|
+
import inquirer6 from "inquirer";
|
|
7050
8479
|
function registerRemoveCommand(program2, globalOpts) {
|
|
7051
8480
|
program2.command("remove <key>").description("Remove a config and all its provisioned resources").option("--force", "Skip confirmation prompt", false).action(
|
|
7052
8481
|
withErrorHandler(
|
|
@@ -7058,7 +8487,7 @@ function registerRemoveCommand(program2, globalOpts) {
|
|
|
7058
8487
|
throw new Error(`Config not found: ${key}`);
|
|
7059
8488
|
}
|
|
7060
8489
|
if (!opts.force) {
|
|
7061
|
-
const { confirmed } = await
|
|
8490
|
+
const { confirmed } = await inquirer6.prompt([
|
|
7062
8491
|
{
|
|
7063
8492
|
type: "confirm",
|
|
7064
8493
|
name: "confirmed",
|
|
@@ -7927,11 +9356,13 @@ function registerCustomerRolesCommands(program2, globalOpts) {
|
|
|
7927
9356
|
const ctx = await resolveProjectContext({ project: opts.project });
|
|
7928
9357
|
const client = await createPlatformClient(opts);
|
|
7929
9358
|
const result = await client.identity.listCustomerRoles({
|
|
7930
|
-
|
|
7931
|
-
|
|
9359
|
+
where: {
|
|
9360
|
+
...ctx?.project.tenantId ? { tenantId: ctx.project.tenantId } : {},
|
|
9361
|
+
...ctx?.project.id ? { projectId: ctx.project.id } : {}
|
|
9362
|
+
},
|
|
7932
9363
|
first: parseInt(String(cmdOpts.first ?? "100"), 10)
|
|
7933
9364
|
});
|
|
7934
|
-
formatListProto(
|
|
9365
|
+
formatListProto(RoleSchema, result.items, opts, {
|
|
7935
9366
|
columns: [
|
|
7936
9367
|
{ key: "id", header: "ID", width: 28 },
|
|
7937
9368
|
{ key: "key", header: "Key", width: 16 },
|
|
@@ -7975,7 +9406,7 @@ function registerCustomerRolesCommands(program2, globalOpts) {
|
|
|
7975
9406
|
isDefault: !!cmdOpts.default
|
|
7976
9407
|
});
|
|
7977
9408
|
if (opts.json || opts.jsonl) {
|
|
7978
|
-
formatOutputProto(
|
|
9409
|
+
formatOutputProto(RoleSchema, role, opts);
|
|
7979
9410
|
} else {
|
|
7980
9411
|
success(`Created customer role: ${role?.name} (${role?.key})`);
|
|
7981
9412
|
console.log(" Existing customers must log in again to pick up the new scopes.");
|
|
@@ -7997,7 +9428,7 @@ function registerCustomerRolesCommands(program2, globalOpts) {
|
|
|
7997
9428
|
isDefault: cmdOpts.default === void 0 ? void 0 : !!cmdOpts.default
|
|
7998
9429
|
});
|
|
7999
9430
|
if (opts.json || opts.jsonl) {
|
|
8000
|
-
formatOutputProto(
|
|
9431
|
+
formatOutputProto(RoleSchema, role, opts);
|
|
8001
9432
|
} else {
|
|
8002
9433
|
success(`Updated customer role: ${role?.name} (${role?.key})`);
|
|
8003
9434
|
console.log(" Existing customers must log in again to pick up scope changes.");
|
|
@@ -8033,7 +9464,7 @@ function registerCustomerRolesCommands(program2, globalOpts) {
|
|
|
8033
9464
|
roleId: String(cmdOpts.role)
|
|
8034
9465
|
});
|
|
8035
9466
|
if (opts.json || opts.jsonl) {
|
|
8036
|
-
formatOutputProto(
|
|
9467
|
+
formatOutputProto(RoleAssignmentSchema, assignment, opts);
|
|
8037
9468
|
} else {
|
|
8038
9469
|
success(`Assigned role ${cmdOpts.role} to customer ${cmdOpts.customer}`);
|
|
8039
9470
|
console.log(" The customer must log in again to pick up the role.");
|
|
@@ -8067,8 +9498,10 @@ function registerCustomerRolesCommands(program2, globalOpts) {
|
|
|
8067
9498
|
}
|
|
8068
9499
|
const client = await createPlatformClient(opts);
|
|
8069
9500
|
const result = await client.identity.listCustomerRoleAssignments({
|
|
8070
|
-
|
|
8071
|
-
|
|
9501
|
+
where: {
|
|
9502
|
+
...cmdOpts.customer ? { customerId: String(cmdOpts.customer) } : {},
|
|
9503
|
+
...cmdOpts.role ? { roleId: String(cmdOpts.role) } : {}
|
|
9504
|
+
}
|
|
8072
9505
|
});
|
|
8073
9506
|
formatOutput(result, opts);
|
|
8074
9507
|
})
|
|
@@ -8136,22 +9569,17 @@ function registerOperationsCommands(program2, globalOpts) {
|
|
|
8136
9569
|
operationKey: key,
|
|
8137
9570
|
input: inputData
|
|
8138
9571
|
});
|
|
8139
|
-
|
|
8140
|
-
|
|
9572
|
+
const errorMessage = result?.error ? result.error.message ?? JSON.stringify(result.error) : null;
|
|
9573
|
+
if (result) {
|
|
9574
|
+
formatOutputProto(OperationExecutionSchema, result, opts);
|
|
8141
9575
|
} else {
|
|
8142
|
-
formatOutput(
|
|
8143
|
-
{
|
|
8144
|
-
completed: result.completed,
|
|
8145
|
-
errorMessage: result.errorMessage ?? null
|
|
8146
|
-
},
|
|
8147
|
-
opts
|
|
8148
|
-
);
|
|
9576
|
+
formatOutput({ completed: false, errorMessage: null }, opts);
|
|
8149
9577
|
}
|
|
8150
9578
|
if (!(opts.json || opts.jsonl || opts.quiet)) {
|
|
8151
|
-
if (result
|
|
8152
|
-
success(`Operation completed in ${result.
|
|
8153
|
-
} else if (
|
|
8154
|
-
console.error(`Operation failed: ${
|
|
9579
|
+
if (result?.completed) {
|
|
9580
|
+
success(`Operation completed in ${result.durationMs ?? 0}ms`);
|
|
9581
|
+
} else if (errorMessage) {
|
|
9582
|
+
console.error(`Operation failed: ${errorMessage}`);
|
|
8155
9583
|
}
|
|
8156
9584
|
}
|
|
8157
9585
|
}
|
|
@@ -8534,8 +9962,10 @@ function registerApiKeysCommands(program2, globalOpts) {
|
|
|
8534
9962
|
withErrorHandler(globalOpts, async (cmdOpts) => {
|
|
8535
9963
|
const opts = globalOpts();
|
|
8536
9964
|
const client = await createPlatformClient(opts);
|
|
9965
|
+
const scopes = cmdOpts.scopes.split(",").map((s) => s.trim()).filter(Boolean);
|
|
8537
9966
|
const result = await client.identity.createApiKey({
|
|
8538
|
-
name: cmdOpts.name
|
|
9967
|
+
name: cmdOpts.name,
|
|
9968
|
+
scopes
|
|
8539
9969
|
});
|
|
8540
9970
|
if (opts.json || opts.jsonl) {
|
|
8541
9971
|
formatOutput(
|
|
@@ -8614,60 +10044,8 @@ function registerApiKeysCommands(program2, globalOpts) {
|
|
|
8614
10044
|
);
|
|
8615
10045
|
}
|
|
8616
10046
|
|
|
8617
|
-
// src/commands/auth.ts
|
|
8618
|
-
import chalk11 from "chalk";
|
|
8619
|
-
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
8620
|
-
function registerAuthCommands(program2, globalOpts) {
|
|
8621
|
-
const auth = program2.command("auth").description("Inspect customer auth configuration and verify customer tokens");
|
|
8622
|
-
auth.command("config").description("Print the project's customer-auth configuration").action(
|
|
8623
|
-
withErrorHandler(globalOpts, async () => {
|
|
8624
|
-
const opts = globalOpts();
|
|
8625
|
-
const client = await createPlatformClient(opts);
|
|
8626
|
-
const config2 = await client.identity.getCustomerAuthConfig();
|
|
8627
|
-
if (!config2) {
|
|
8628
|
-
throw new Error("No customer auth configuration found for this project.");
|
|
8629
|
-
}
|
|
8630
|
-
formatOutputProto(CustomerAuthConfigSchema, config2, opts);
|
|
8631
|
-
})
|
|
8632
|
-
);
|
|
8633
|
-
auth.command("verify-token <token>").description("Verify a customer JWT and print its claims").action(
|
|
8634
|
-
withErrorHandler(globalOpts, async (token) => {
|
|
8635
|
-
const opts = globalOpts();
|
|
8636
|
-
const client = await createPlatformClient(opts);
|
|
8637
|
-
const resp = await client.identity.verifyCustomerToken(token);
|
|
8638
|
-
const expiresAtIso = resp.expiresAt ? timestampDate(resp.expiresAt).toISOString() : null;
|
|
8639
|
-
if (opts.json || opts.jsonl) {
|
|
8640
|
-
formatOutput(
|
|
8641
|
-
{
|
|
8642
|
-
valid: resp.valid,
|
|
8643
|
-
customerId: resp.customerId ?? null,
|
|
8644
|
-
email: resp.email ?? null,
|
|
8645
|
-
roles: resp.roles ?? [],
|
|
8646
|
-
expiresAt: expiresAtIso,
|
|
8647
|
-
error: resp.error ?? null
|
|
8648
|
-
},
|
|
8649
|
-
opts
|
|
8650
|
-
);
|
|
8651
|
-
return;
|
|
8652
|
-
}
|
|
8653
|
-
if (!resp.valid) {
|
|
8654
|
-
throw new Error(
|
|
8655
|
-
`Token invalid: ${resp.error ?? "no further detail"}`
|
|
8656
|
-
);
|
|
8657
|
-
}
|
|
8658
|
-
console.log(chalk11.green("\u25CF Valid"));
|
|
8659
|
-
if (resp.customerId)
|
|
8660
|
-
console.log(` Customer: ${chalk11.cyan(resp.customerId)}`);
|
|
8661
|
-
if (resp.email) console.log(` Email: ${resp.email}`);
|
|
8662
|
-
if (resp.roles && resp.roles.length > 0)
|
|
8663
|
-
console.log(` Roles: ${resp.roles.join(", ")}`);
|
|
8664
|
-
if (expiresAtIso) console.log(` Expires: ${expiresAtIso}`);
|
|
8665
|
-
})
|
|
8666
|
-
);
|
|
8667
|
-
}
|
|
8668
|
-
|
|
8669
10047
|
// src/commands/auth-providers.ts
|
|
8670
|
-
import
|
|
10048
|
+
import chalk11 from "chalk";
|
|
8671
10049
|
var VALID_TYPES = [
|
|
8672
10050
|
"OAUTH2",
|
|
8673
10051
|
"TOKEN_SSO",
|
|
@@ -8720,7 +10098,7 @@ function registerAuthProvidersCommands(program2, globalOpts) {
|
|
|
8720
10098
|
formatOutputProto(AuthProviderSchema, provider, opts);
|
|
8721
10099
|
} else {
|
|
8722
10100
|
const p = provider;
|
|
8723
|
-
console.log(
|
|
10101
|
+
console.log(chalk11.bold(`${p.name}`) + chalk11.gray(` (${p.key})`));
|
|
8724
10102
|
console.log(` Type: ${p.type}`);
|
|
8725
10103
|
console.log(` Enabled: ${p.enabled ? "yes" : "no"}`);
|
|
8726
10104
|
console.log(` Default: ${p.isDefault ? "yes" : "no"}`);
|
|
@@ -8734,13 +10112,13 @@ function registerAuthProvidersCommands(program2, globalOpts) {
|
|
|
8734
10112
|
if (p.configDisplay) {
|
|
8735
10113
|
console.log(` Config:`);
|
|
8736
10114
|
console.log(
|
|
8737
|
-
|
|
10115
|
+
chalk11.gray(
|
|
8738
10116
|
JSON.stringify(p.configDisplay, null, 2).replace(/^/gm, " ")
|
|
8739
10117
|
)
|
|
8740
10118
|
);
|
|
8741
10119
|
}
|
|
8742
|
-
console.log(
|
|
8743
|
-
console.log(
|
|
10120
|
+
console.log(chalk11.gray(` Created: ${p.createdAt}`));
|
|
10121
|
+
console.log(chalk11.gray(` Updated: ${p.updatedAt}`));
|
|
8744
10122
|
}
|
|
8745
10123
|
})
|
|
8746
10124
|
);
|
|
@@ -8851,7 +10229,7 @@ function registerAuthProvidersCommands(program2, globalOpts) {
|
|
|
8851
10229
|
}
|
|
8852
10230
|
|
|
8853
10231
|
// src/commands/embeddings.ts
|
|
8854
|
-
import
|
|
10232
|
+
import chalk12 from "chalk";
|
|
8855
10233
|
function registerEmbeddingsCommands(program2, globalOpts) {
|
|
8856
10234
|
const embeddings = program2.command("embeddings").description("Manage vector embeddings for semantic search");
|
|
8857
10235
|
embeddings.command("write").description("Write an embedding vector for a record").option("-d, --data <json>", "Embedding input as JSON string").option("--file <path>", "Embedding input from JSON file").action(
|
|
@@ -8937,13 +10315,13 @@ function registerEmbeddingsCommands(program2, globalOpts) {
|
|
|
8937
10315
|
return;
|
|
8938
10316
|
}
|
|
8939
10317
|
if (results.length === 0) {
|
|
8940
|
-
console.log(
|
|
10318
|
+
console.log(chalk12.dim("No matches."));
|
|
8941
10319
|
return;
|
|
8942
10320
|
}
|
|
8943
10321
|
for (const r of results) {
|
|
8944
10322
|
const score = typeof r.similarity === "number" ? r.similarity.toFixed(4) : "\u2014";
|
|
8945
10323
|
console.log(
|
|
8946
|
-
` ${
|
|
10324
|
+
` ${chalk12.cyan(r.id)} ${chalk12.dim(r.modelKey ?? "")} ${chalk12.gray(`sim=${score}`)}`
|
|
8947
10325
|
);
|
|
8948
10326
|
}
|
|
8949
10327
|
})
|
|
@@ -8966,12 +10344,12 @@ function registerEmbeddingsCommands(program2, globalOpts) {
|
|
|
8966
10344
|
return;
|
|
8967
10345
|
}
|
|
8968
10346
|
if (stats.length === 0) {
|
|
8969
|
-
console.log(
|
|
10347
|
+
console.log(chalk12.dim("No embeddings yet."));
|
|
8970
10348
|
return;
|
|
8971
10349
|
}
|
|
8972
10350
|
for (const s of stats) {
|
|
8973
10351
|
console.log(
|
|
8974
|
-
` ${
|
|
10352
|
+
` ${chalk12.cyan(s.modelKey)} ${chalk12.dim(`embedded=${s.embeddedRecords}/${s.totalRecords} pending=${s.pendingRecords}`)}`
|
|
8975
10353
|
);
|
|
8976
10354
|
}
|
|
8977
10355
|
})
|
|
@@ -8992,13 +10370,13 @@ function registerEmbeddingsCommands(program2, globalOpts) {
|
|
|
8992
10370
|
return;
|
|
8993
10371
|
}
|
|
8994
10372
|
if (results.length === 0) {
|
|
8995
|
-
console.log(
|
|
10373
|
+
console.log(chalk12.dim("No similar records."));
|
|
8996
10374
|
return;
|
|
8997
10375
|
}
|
|
8998
10376
|
for (const r of results) {
|
|
8999
10377
|
const score = typeof r.similarity === "number" ? r.similarity.toFixed(4) : "\u2014";
|
|
9000
10378
|
console.log(
|
|
9001
|
-
` ${
|
|
10379
|
+
` ${chalk12.cyan(r.id)} ${chalk12.dim(r.modelKey ?? "")} ${chalk12.gray(`sim=${score}`)}`
|
|
9002
10380
|
);
|
|
9003
10381
|
}
|
|
9004
10382
|
}
|
|
@@ -9205,7 +10583,7 @@ function registerHooksCommands(program2, globalOpts) {
|
|
|
9205
10583
|
}
|
|
9206
10584
|
|
|
9207
10585
|
// src/commands/rollouts.ts
|
|
9208
|
-
import
|
|
10586
|
+
import chalk13 from "chalk";
|
|
9209
10587
|
function parseScheduledAt(value) {
|
|
9210
10588
|
const date = new Date(value);
|
|
9211
10589
|
if (Number.isNaN(date.getTime())) {
|
|
@@ -9252,10 +10630,10 @@ function registerRolloutsCommands(program2, globalOpts) {
|
|
|
9252
10630
|
formatOutputProto(PublishBatchSchema, batch, opts);
|
|
9253
10631
|
if (items.length > 0) {
|
|
9254
10632
|
console.log();
|
|
9255
|
-
console.log(
|
|
10633
|
+
console.log(chalk13.bold(`Items (${items.length}):`));
|
|
9256
10634
|
for (const it of items) {
|
|
9257
10635
|
console.log(
|
|
9258
|
-
` ${
|
|
10636
|
+
` ${chalk13.cyan(it.id)} ${chalk13.dim(it.targetKind)} ${chalk13.gray(it.status ?? "")}`
|
|
9259
10637
|
);
|
|
9260
10638
|
}
|
|
9261
10639
|
}
|
|
@@ -9679,7 +11057,7 @@ function registerSettingsCommands(program2, globalOpts) {
|
|
|
9679
11057
|
// src/commands/design-tokens.ts
|
|
9680
11058
|
import { existsSync as existsSync6, readFileSync as readFileSync2 } from "fs";
|
|
9681
11059
|
import { resolve as resolve6 } from "path";
|
|
9682
|
-
import
|
|
11060
|
+
import chalk14 from "chalk";
|
|
9683
11061
|
function registerDesignTokensCommands(program2, globalOpts) {
|
|
9684
11062
|
const tokens = program2.command("design-tokens").description("Manage project design tokens (W3C-formatted)");
|
|
9685
11063
|
tokens.command("get").description("Print the current design tokens document").option("--channel <channel>", "draft | published", "draft").option(
|
|
@@ -9727,7 +11105,7 @@ function registerDesignTokensCommands(program2, globalOpts) {
|
|
|
9727
11105
|
const resp = await client.settings.publishDesignTokens();
|
|
9728
11106
|
success("Design tokens published");
|
|
9729
11107
|
if (resp.breakingChanges && resp.breakingChanges.length > 0) {
|
|
9730
|
-
console.log(
|
|
11108
|
+
console.log(chalk14.yellow("\nBreaking changes:"));
|
|
9731
11109
|
for (const c of resp.breakingChanges) {
|
|
9732
11110
|
console.log(` ${c.severity} ${c.path}: ${c.description}`);
|
|
9733
11111
|
}
|
|
@@ -9743,7 +11121,7 @@ function registerDesignTokensCommands(program2, globalOpts) {
|
|
|
9743
11121
|
const resp = await client.settings.publishDesignTokens();
|
|
9744
11122
|
success("Design tokens published");
|
|
9745
11123
|
if (resp.breakingChanges && resp.breakingChanges.length > 0) {
|
|
9746
|
-
console.log(
|
|
11124
|
+
console.log(chalk14.yellow("\nBreaking changes:"));
|
|
9747
11125
|
for (const c of resp.breakingChanges) {
|
|
9748
11126
|
console.log(` ${c.severity} ${c.path}: ${c.description}`);
|
|
9749
11127
|
}
|
|
@@ -9768,12 +11146,12 @@ function registerDesignTokensCommands(program2, globalOpts) {
|
|
|
9768
11146
|
return;
|
|
9769
11147
|
}
|
|
9770
11148
|
if (status.hasPendingChanges) {
|
|
9771
|
-
console.log(
|
|
11149
|
+
console.log(chalk14.yellow("\u25CF Pending changes"));
|
|
9772
11150
|
} else {
|
|
9773
|
-
console.log(
|
|
11151
|
+
console.log(chalk14.green("\u25CF Up to date"));
|
|
9774
11152
|
}
|
|
9775
11153
|
if (status.breakingChanges && status.breakingChanges.length > 0) {
|
|
9776
|
-
console.log(
|
|
11154
|
+
console.log(chalk14.yellow("\nPending changes:"));
|
|
9777
11155
|
for (const c of status.breakingChanges) {
|
|
9778
11156
|
console.log(` ${c.severity} ${c.path}: ${c.description}`);
|
|
9779
11157
|
}
|
|
@@ -10379,7 +11757,7 @@ function registerConfigsCommands(program2, globalOpts) {
|
|
|
10379
11757
|
}
|
|
10380
11758
|
|
|
10381
11759
|
// src/commands/apps.ts
|
|
10382
|
-
import
|
|
11760
|
+
import chalk16 from "chalk";
|
|
10383
11761
|
import { spawn as spawn2 } from "child_process";
|
|
10384
11762
|
import { existsSync as existsSync8, watch as fsWatch } from "fs";
|
|
10385
11763
|
import { resolve as resolvePath } from "path";
|
|
@@ -10387,7 +11765,7 @@ import { resolve as resolvePath } from "path";
|
|
|
10387
11765
|
// src/lib/tunnel.ts
|
|
10388
11766
|
import { spawn } from "child_process";
|
|
10389
11767
|
import { once } from "events";
|
|
10390
|
-
import
|
|
11768
|
+
import chalk15 from "chalk";
|
|
10391
11769
|
async function startTunnel(opts) {
|
|
10392
11770
|
const host = opts.host ?? "localhost";
|
|
10393
11771
|
if (opts.kind === "cloudflared") return startCloudflared(host, opts.port, opts.logs ?? true);
|
|
@@ -10423,7 +11801,7 @@ function startCloudflared(host, port, logs) {
|
|
|
10423
11801
|
let buffered = "";
|
|
10424
11802
|
const onData = (chunk) => {
|
|
10425
11803
|
const text = chunk.toString("utf-8");
|
|
10426
|
-
if (logs) process.stderr.write(
|
|
11804
|
+
if (logs) process.stderr.write(chalk15.dim(text));
|
|
10427
11805
|
buffered += text;
|
|
10428
11806
|
const match = buffered.match(CLOUDFLARED_URL_RE);
|
|
10429
11807
|
if (match && !resolved) {
|
|
@@ -10471,8 +11849,8 @@ function startNgrok(port, logs) {
|
|
|
10471
11849
|
return;
|
|
10472
11850
|
}
|
|
10473
11851
|
if (logs) {
|
|
10474
|
-
child.stdout.on("data", (c) => process.stderr.write(
|
|
10475
|
-
child.stderr.on("data", (c) => process.stderr.write(
|
|
11852
|
+
child.stdout.on("data", (c) => process.stderr.write(chalk15.dim(c.toString("utf-8"))));
|
|
11853
|
+
child.stderr.on("data", (c) => process.stderr.write(chalk15.dim(c.toString("utf-8"))));
|
|
10476
11854
|
}
|
|
10477
11855
|
let resolved = false;
|
|
10478
11856
|
child.once("error", (err) => {
|
|
@@ -10814,7 +12192,7 @@ function registerAppsCommands(program2, globalOpts) {
|
|
|
10814
12192
|
return;
|
|
10815
12193
|
}
|
|
10816
12194
|
if (!opts.json) {
|
|
10817
|
-
console.error(
|
|
12195
|
+
console.error(chalk16.dim(`Starting ${kind} tunnel \u2192 http://${cmdOpts.host}:${port}\u2026`));
|
|
10818
12196
|
}
|
|
10819
12197
|
const handle = await startTunnel({
|
|
10820
12198
|
kind,
|
|
@@ -10870,20 +12248,20 @@ function runDevSession(info) {
|
|
|
10870
12248
|
}
|
|
10871
12249
|
const host = hostOf(info.publicUrl);
|
|
10872
12250
|
console.log();
|
|
10873
|
-
console.log(
|
|
10874
|
-
console.log(` ${
|
|
12251
|
+
console.log(chalk16.bold.green(" Tunnel ready"));
|
|
12252
|
+
console.log(` ${chalk16.bold(info.publicUrl)} ${chalk16.dim("\u2192")} http://${info.localHost ?? "localhost"}:${info.port}`);
|
|
10875
12253
|
console.log();
|
|
10876
|
-
console.log(
|
|
10877
|
-
console.log(
|
|
10878
|
-
console.log(
|
|
10879
|
-
console.log(
|
|
10880
|
-
console.log(
|
|
12254
|
+
console.log(chalk16.dim(" Point `foir push` at the tunnel so app manifests resolve here."));
|
|
12255
|
+
console.log(chalk16.dim(" If your foir.config.ts uses an env-gated source (recommended):"));
|
|
12256
|
+
console.log(chalk16.dim(` FOIR_APPS_HOST=${host} foir push`));
|
|
12257
|
+
console.log(chalk16.dim(" Otherwise: update apps.<name>.source in foir.config.ts to a URL on"));
|
|
12258
|
+
console.log(chalk16.dim(` ${host} and run foir push.`));
|
|
10881
12259
|
console.log();
|
|
10882
12260
|
if (info.kind === "byo") {
|
|
10883
|
-
console.log(
|
|
12261
|
+
console.log(chalk16.dim(" (BYO tunnel \u2014 leaving lifecycle to you.)"));
|
|
10884
12262
|
return Promise.resolve();
|
|
10885
12263
|
}
|
|
10886
|
-
console.log(
|
|
12264
|
+
console.log(chalk16.dim(" Press Ctrl+C to stop the tunnel."));
|
|
10887
12265
|
return Promise.resolve();
|
|
10888
12266
|
}
|
|
10889
12267
|
function hostOf(url) {
|
|
@@ -10897,7 +12275,7 @@ function runPush(host, jsonMode) {
|
|
|
10897
12275
|
return new Promise((resolve9, reject) => {
|
|
10898
12276
|
if (!jsonMode) {
|
|
10899
12277
|
console.log();
|
|
10900
|
-
console.log(
|
|
12278
|
+
console.log(chalk16.dim(`\u2192 foir push (${FOIR_APPS_HOST_ENV}=${host})`));
|
|
10901
12279
|
}
|
|
10902
12280
|
const entry = process.argv[1];
|
|
10903
12281
|
if (!entry) {
|
|
@@ -10920,12 +12298,12 @@ function startWatchLoop(host, jsonMode) {
|
|
|
10920
12298
|
const target = WATCH_FILES.map((n) => resolvePath(cwd, n)).find((p) => existsSync8(p));
|
|
10921
12299
|
if (!target) {
|
|
10922
12300
|
if (!jsonMode) {
|
|
10923
|
-
console.error(
|
|
12301
|
+
console.error(chalk16.yellow(`! --watch: no foir.config.* in ${cwd}; skipping watch loop.`));
|
|
10924
12302
|
}
|
|
10925
12303
|
return null;
|
|
10926
12304
|
}
|
|
10927
12305
|
if (!jsonMode) {
|
|
10928
|
-
console.log(
|
|
12306
|
+
console.log(chalk16.dim(`Watching ${target} \u2014 saving triggers foir push.`));
|
|
10929
12307
|
}
|
|
10930
12308
|
let pending = false;
|
|
10931
12309
|
let running = false;
|
|
@@ -10938,7 +12316,7 @@ function startWatchLoop(host, jsonMode) {
|
|
|
10938
12316
|
running = true;
|
|
10939
12317
|
pending = false;
|
|
10940
12318
|
runPush(host, jsonMode).catch((err) => {
|
|
10941
|
-
if (!jsonMode) console.error(
|
|
12319
|
+
if (!jsonMode) console.error(chalk16.red(`push failed: ${err.message}`));
|
|
10942
12320
|
}).finally(() => {
|
|
10943
12321
|
running = false;
|
|
10944
12322
|
if (pending) tick();
|
|
@@ -11439,7 +12817,6 @@ registerOperationsCommands(program, getGlobalOpts);
|
|
|
11439
12817
|
registerSegmentsCommands(program, getGlobalOpts);
|
|
11440
12818
|
registerSchedulesCommands(program, getGlobalOpts);
|
|
11441
12819
|
registerApiKeysCommands(program, getGlobalOpts);
|
|
11442
|
-
registerAuthCommands(program, getGlobalOpts);
|
|
11443
12820
|
registerAuthProvidersCommands(program, getGlobalOpts);
|
|
11444
12821
|
registerEmbeddingsCommands(program, getGlobalOpts);
|
|
11445
12822
|
registerHooksCommands(program, getGlobalOpts);
|