@cartanova/qgrid-cli 2.5.10 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +0 -1
- package/README.md +0 -1
- package/bundle/dist/application/qgrid/oauth.js +3 -2
- package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +2 -1
- package/bundle/dist/application/qgrid/qgrid.frame.js +90 -24
- package/bundle/dist/application/qgrid/qgrid.types.js +5 -2
- package/bundle/dist/application/request-log/request-log.model.js +3 -2
- package/bundle/dist/application/request-log/request-log.types.js +4 -2
- package/bundle/dist/application/sonamu.generated.js +8 -1
- package/bundle/dist/application/sonamu.generated.sso.js +2 -1
- package/bundle/dist/i18n/sd.generated.js +2 -1
- package/bundle/dist/migrations/20260806141701_alter_request_logs_add1_alter1.js +15 -0
- package/bundle/src/application/qgrid/oauth.ts +3 -0
- package/bundle/src/application/qgrid/qgrid-oauth-redirect.test.ts +151 -0
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +14 -0
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +3 -0
- package/bundle/src/application/qgrid/qgrid.frame.ts +110 -38
- package/bundle/src/application/qgrid/qgrid.types.ts +3 -0
- package/bundle/src/application/request-log/request-log.entity.json +8 -0
- package/bundle/src/application/request-log/request-log.model.test.ts +3 -1
- package/bundle/src/application/request-log/request-log.model.ts +7 -1
- package/bundle/src/application/request-log/request-log.types.ts +5 -0
- package/bundle/src/application/sonamu.generated.http +10 -2
- package/bundle/src/application/sonamu.generated.sso.ts +1 -0
- package/bundle/src/application/sonamu.generated.ts +13 -0
- package/bundle/src/i18n/sd.generated.ts +1 -0
- package/bundle/src/migrations/20260806141701_alter_request_logs_add1_alter1.ts +15 -0
- package/bundle/web-dist/client/assets/{index-SdI2T3b8.js → index-BGGBFmzE.js} +3 -3
- package/bundle/web-dist/client/assets/index-GA9b-zy4.css +1 -0
- package/bundle/web-dist/client/assets/{logs-O-8hGStp.js → logs-Dh19u6Tk.js} +1 -1
- package/bundle/web-dist/client/assets/{monit-DA8MAY-d.js → monit-CyqMmy1G.js} +1 -1
- package/bundle/web-dist/client/assets/{routes-COPjkgNr.js → routes-Cy0gCq8c.js} +1 -1
- package/bundle/web-dist/client/assets/{sd.generated-DbBC73_z.js → sd.generated-CjW3rfJ8.js} +1 -1
- package/bundle/web-dist/client/assets/{services.generated-BWyAypSh.js → services.generated-BuT6Gp8V.js} +1 -1
- package/bundle/web-dist/client/assets/show-C5WxfoAt.js +30 -0
- package/bundle/web-dist/client/assets/tokens-Ciolqw4l.js +1 -0
- package/bundle/web-dist/client/assets/{use-update-token-mutation-DeDBiZiM.js → use-update-token-mutation-DBkxL29Y.js} +1 -1
- package/bundle/web-dist/client/index.html +3 -3
- package/bundle/web-dist/server/assets/{lazyRouteComponent-BCJr868T.js → lazyRouteComponent-PRxXWW3t.js} +1 -1
- package/bundle/web-dist/server/assets/{logs-33YNafdW.js → logs-D0z1Ghj1.js} +3 -3
- package/bundle/web-dist/server/assets/{monit--9mVsjNU.js → monit-dBXxnAyI.js} +2 -2
- package/bundle/web-dist/server/assets/{routes-BK3Xh1UB.js → routes-B3p7fuwk.js} +3 -3
- package/bundle/web-dist/server/assets/{sd.generated-C3gcvRcU.js → sd.generated-ek-tz-7H.js} +1 -0
- package/bundle/web-dist/server/assets/{services.generated-B2_Auwvk.js → services.generated-BNuxWs7K.js} +10 -1
- package/bundle/web-dist/server/assets/{show-Dxxxe608.js → show-0iNioJ2I.js} +39 -13
- package/bundle/web-dist/server/assets/{tokens-BWPVvdfi.js → tokens-CvytQ9Xy.js} +86 -18
- package/bundle/web-dist/server/assets/{use-update-token-mutation-CNBgTysy.js → use-update-token-mutation-BBCC2GKM.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +8 -8
- package/package.json +1 -1
- package/skills/qgrid/references/cli-env-and-server-boot.md +1 -2
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +5 -1
- package/bundle/web-dist/client/assets/index-B-cZKEyf.css +0 -1
- package/bundle/web-dist/client/assets/show-ClG4e0BP.js +0 -30
- package/bundle/web-dist/client/assets/tokens-Cc5frn5f.js +0 -1
|
@@ -26,6 +26,7 @@ const requestLogSubsetQueries = {
|
|
|
26
26
|
image_cost_method: "request_logs.image_cost_method",
|
|
27
27
|
effort: "request_logs.effort",
|
|
28
28
|
history: "request_logs.history",
|
|
29
|
+
tools: "request_logs.tools",
|
|
29
30
|
status: "request_logs.status",
|
|
30
31
|
error_message: "request_logs.error_message",
|
|
31
32
|
tool_call_count: "request_logs.tool_call_count",
|
|
@@ -153,4 +154,4 @@ const tokenLoaderQueries = { A: [] };
|
|
|
153
154
|
//#endregion
|
|
154
155
|
export { requestLogLoaderQueries, requestLogStepLoaderQueries, requestLogStepSubsetQueries, requestLogSubsetQueries, tokenLoaderQueries, tokenSubsetQueries };
|
|
155
156
|
|
|
156
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5zc28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cblxuaW1wb3J0IHsgdHlwZSBQdXJpV3JhcHBlciwgdHlwZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCwgdHlwZSBQdXJpTG9hZGVyUXVlcmllcyB9IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHtcbiAgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0S2V5LFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5LFxuICB0eXBlIFRva2VuU3Vic2V0S2V5LFxuICB0eXBlIFJlcXVlc3RMb2dCYXNlU2NoZW1hLFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwQmFzZVNjaGVtYSxcbiAgdHlwZSBUb2tlbkJhc2VTY2hlbWEsXG59IGZyb20gXCIuL3NvbmFtdS5nZW5lcmF0ZWRcIjtcblxuLy8gU3Vic2V0UXVlcnk6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCByZXF1ZXN0TG9nU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dzXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJyZXF1ZXN0X2xvZ3MuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHRva2VuX25hbWU6IFwicmVxdWVzdF9sb2dzLnRva2VuX25hbWVcIixcbiAgICAgIHByb2plY3RfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucHJvamVjdF9uYW1lXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5tb2RlbF9uYW1lXCIsXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9ncy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgdXNlcl9wcm9tcHQ6IFwicmVxdWVzdF9sb2dzLnVzZXJfcHJvbXB0XCIsXG4gICAgICBzeXN0ZW1fcHJvbXB0OiBcInJlcXVlc3RfbG9ncy5zeXN0ZW1fcHJvbXB0XCIsXG4gICAgICByZXNwb25zZTogXCJyZXF1ZXN0X2xvZ3MucmVzcG9uc2VcIixcbiAgICAgIGlucHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9ncy5kdXJhdGlvbl9tc1wiLFxuICAgICAgdHRmdF9tczogXCJyZXF1ZXN0X2xvZ3MudHRmdF9tc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmNvc3RfdXNkXCIsXG4gICAgICBjb3N0X3NvdXJjZTogXCJyZXF1ZXN0X2xvZ3MuY29zdF9zb3VyY2VcIixcbiAgICAgIGltYWdlX2Nvc3RfdXNkOiBcInJlcXVlc3RfbG9ncy5pbWFnZV9jb3N0X3VzZFwiLFxuICAgICAgaW1hZ2VfY29zdF9tZXRob2Q6IFwicmVxdWVzdF9sb2dzLmltYWdlX2Nvc3RfbWV0aG9kXCIsXG4gICAgICBlZmZvcnQ6IFwicmVxdWVzdF9sb2dzLmVmZm9ydFwiLFxuICAgICAgaGlzdG9yeTogXCJyZXF1ZXN0X2xvZ3MuaGlzdG9yeVwiLFxuICAgICAgc3RhdHVzOiBcInJlcXVlc3RfbG9ncy5zdGF0dXNcIixcbiAgICAgIGVycm9yX21lc3NhZ2U6IFwicmVxdWVzdF9sb2dzLmVycm9yX21lc3NhZ2VcIixcbiAgICAgIHRvb2xfY2FsbF9jb3VudDogXCJyZXF1ZXN0X2xvZ3MudG9vbF9jYWxsX2NvdW50XCIsXG4gICAgICBpc19pbWFnZV9nZW5lcmF0aW9uOiBcInJlcXVlc3RfbG9ncy5pc19pbWFnZV9nZW5lcmF0aW9uXCIsXG4gICAgfSk7XG4gIH0sXG4gIFA6IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgIHJldHVybiBxYldyYXBwZXIuZnJvbShcInJlcXVlc3RfbG9nc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInJlcXVlc3RfbG9ncy5jcmVhdGVkX2F0XCIsXG4gICAgICB0b2tlbl9uYW1lOiBcInJlcXVlc3RfbG9ncy50b2tlbl9uYW1lXCIsXG4gICAgICBwcm9qZWN0X25hbWU6IFwicmVxdWVzdF9sb2dzLnByb2plY3RfbmFtZVwiLFxuICAgICAgbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ3MubW9kZWxfbmFtZVwiLFxuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dzLnJlcXVlc3RlZF9tb2RlbF9uYW1lXCIsXG4gICAgICBmYWxsYmFja19jb3VudDogXCJyZXF1ZXN0X2xvZ3MuZmFsbGJhY2tfY291bnRcIixcbiAgICAgIGlucHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9ncy5kdXJhdGlvbl9tc1wiLFxuICAgICAgdHRmdF9tczogXCJyZXF1ZXN0X2xvZ3MudHRmdF9tc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmNvc3RfdXNkXCIsXG4gICAgICBjb3N0X3NvdXJjZTogXCJyZXF1ZXN0X2xvZ3MuY29zdF9zb3VyY2VcIixcbiAgICAgIGltYWdlX2Nvc3RfdXNkOiBcInJlcXVlc3RfbG9ncy5pbWFnZV9jb3N0X3VzZFwiLFxuICAgICAgaW1hZ2VfY29zdF9tZXRob2Q6IFwicmVxdWVzdF9sb2dzLmltYWdlX2Nvc3RfbWV0aG9kXCIsXG4gICAgICBlZmZvcnQ6IFwicmVxdWVzdF9sb2dzLmVmZm9ydFwiLFxuICAgICAgc3RhdHVzOiBcInJlcXVlc3RfbG9ncy5zdGF0dXNcIixcbiAgICAgIHRvb2xfY2FsbF9jb3VudDogXCJyZXF1ZXN0X2xvZ3MudG9vbF9jYWxsX2NvdW50XCIsXG4gICAgICBpc19pbWFnZV9nZW5lcmF0aW9uOiBcInJlcXVlc3RfbG9ncy5pc19pbWFnZV9nZW5lcmF0aW9uXCIsXG4gICAgfSk7XG4gIH0sXG59O1xuXG4vLyBMb2FkZXJRdWVyeTogUmVxdWVzdExvZ1xuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dMb2FkZXJRdWVyaWVzID0ge1xuICBBOiBbXSxcbiAgUDogW10sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczxSZXF1ZXN0TG9nU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0UXVlcnk6IFJlcXVlc3RMb2dTdGVwXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ1N0ZXBTdWJzZXRRdWVyaWVzID0ge1xuICBBOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuY3JlYXRlZF9hdFwiLFxuICAgICAgc3RlcF9pbmRleDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5zdGVwX2luZGV4XCIsXG4gICAgICB0eXBlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR5cGVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMubW9kZWxfbmFtZVwiLFxuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICBpbnB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jb3N0X3VzZFwiLFxuICAgICAgY29zdF9zb3VyY2U6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF9zb3VyY2VcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR0ZnRfbXNcIixcbiAgICAgIGZpbmlzaF9yZWFzb246IFwicmVxdWVzdF9sb2dfc3RlcHMuZmluaXNoX3JlYXNvblwiLFxuICAgICAgcmVhc29uaW5nX3RleHQ6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3RleHRcIixcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgICAgdG9vbF9jYWxsX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pbmRleFwiLFxuICAgICAgdG9vbF9jYWxsX2lkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pZFwiLFxuICAgICAgdG9vbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfbmFtZVwiLFxuICAgICAgdG9vbF9hcmdzOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfYXJnc1wiLFxuICAgICAgdG9vbF9yZXN1bHQ6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9yZXN1bHRcIixcbiAgICAgIHRvb2xfZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9kdXJhdGlvbl9tc1wiLFxuICAgICAgZXJyb3I6IFwicmVxdWVzdF9sb2dfc3RlcHMuZXJyb3JcIixcbiAgICB9KTtcbiAgfSxcbiAgVDogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dfc3RlcHNcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHN0ZXBfaW5kZXg6IFwicmVxdWVzdF9sb2dfc3RlcHMuc3RlcF9pbmRleFwiLFxuICAgICAgdHlwZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy50eXBlXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm1vZGVsX25hbWVcIixcbiAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnJlcXVlc3RlZF9tb2RlbF9uYW1lXCIsXG4gICAgICBmYWxsYmFja19jb3VudDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmlucHV0X3Rva2Vuc1wiLFxuICAgICAgb3V0cHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNvc3Rfc291cmNlXCIsXG4gICAgICBkdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5kdXJhdGlvbl9tc1wiLFxuICAgICAgdHRmdF9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50dGZ0X21zXCIsXG4gICAgICBmaW5pc2hfcmVhc29uOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZpbmlzaF9yZWFzb25cIixcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVhc29uaW5nX3Rva2Vuc1wiLFxuICAgICAgdG9vbF9jYWxsX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pbmRleFwiLFxuICAgICAgdG9vbF9jYWxsX2lkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfY2FsbF9pZFwiLFxuICAgICAgdG9vbF9uYW1lOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfbmFtZVwiLFxuICAgICAgdG9vbF9kdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2R1cmF0aW9uX21zXCIsXG4gICAgICBlcnJvcjogXCJyZXF1ZXN0X2xvZ19zdGVwcy5lcnJvclwiLFxuICAgIH0pO1xuICB9LFxuICBJOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuaWRcIixcbiAgICAgIHRvb2xfYXJnczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2FyZ3NcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBSZXF1ZXN0TG9nU3RlcFxuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dTdGVwTG9hZGVyUXVlcmllcyA9IHtcbiAgQTogW10sXG4gIFQ6IFtdLFxuICBJOiBbXSxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0UXVlcnk6IFRva2VuXG5leHBvcnQgY29uc3QgdG9rZW5TdWJzZXRRdWVyaWVzID0ge1xuICBBOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJ0b2tlbnNcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInRva2Vucy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJ0b2tlbnMuY3JlYXRlZF9hdFwiLFxuICAgICAgcHJvdmlkZXI6IFwidG9rZW5zLnByb3ZpZGVyXCIsXG4gICAgICBjcmVkZW50aWFsczogXCJ0b2tlbnMuY3JlZGVudGlhbHNcIixcbiAgICAgIG5hbWU6IFwidG9rZW5zLm5hbWVcIixcbiAgICAgIGFjdGl2ZTogXCJ0b2tlbnMuYWN0aXZlXCIsXG4gICAgICBvcmQ6IFwidG9rZW5zLm9yZFwiLFxuICAgICAgcXVvdGFfdGhyZXNob2xkOiBcInRva2Vucy5xdW90YV90aHJlc2hvbGRcIixcbiAgICAgIHdlaWdodDogXCJ0b2tlbnMud2VpZ2h0XCIsXG4gICAgfSk7XG4gIH0sXG59O1xuXG4vLyBMb2FkZXJRdWVyeTogVG9rZW5cbmV4cG9ydCBjb25zdCB0b2tlbkxvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUHVyaUxvYWRlclF1ZXJpZXM8VG9rZW5TdWJzZXRLZXk+O1xuXG4vLyBGb3JlaWduS2V5IFR5cGVzXG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3RlcEZvcmVpZ25LZXlzID0gXCJyZXF1ZXN0X2xvZ19pZFwiO1xuXG4vLyBEYXRhYmFzZVNjaGVtYVxuZGVjbGFyZSBtb2R1bGUgXCJzb25hbXVcIiB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VTY2hlbWFFeHRlbmQge1xuICAgIHJlcXVlc3RfbG9nczogUmVxdWVzdExvZ0Jhc2VTY2hlbWE7XG4gICAgcmVxdWVzdF9sb2dfc3RlcHM6IFJlcXVlc3RMb2dTdGVwQmFzZVNjaGVtYTtcbiAgICB0b2tlbnM6IFRva2VuQmFzZVNjaGVtYTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGb3JlaWduS2V5cyB7XG4gICAgcmVxdWVzdF9sb2dfc3RlcHM6IFJlcXVlc3RMb2dTdGVwRm9yZWlnbktleXM7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQWlCQSxNQUFhLDBCQUEwQjtDQUNyQyxJQUFJLGNBQWlEO0VBQ25ELE9BQU8sVUFBVSxLQUFLLGNBQWMsQ0FBQyxDQUFDLE9BQU87R0FDM0MsSUFBSTtHQUNKLFlBQVk7R0FDWixZQUFZO0dBQ1osY0FBYztHQUNkLFlBQVk7R0FDWixzQkFBc0I7R0FDdEIsZ0JBQWdCO0dBQ2hCLGFBQWE7R0FDYixlQUFlO0dBQ2YsVUFBVTtHQUNWLGNBQWM7R0FDZCxlQUFlO0dBQ2YsbUJBQW1CO0dBQ25CLHVCQUF1QjtHQUN2QiwwQkFBMEI7R0FDMUIsMEJBQTBCO0dBQzFCLGFBQWE7R0FDYixTQUFTO0dBQ1QsVUFBVTtHQUNWLGFBQWE7R0FDYixnQkFBZ0I7R0FDaEIsbUJBQW1CO0dBQ25CLFFBQVE7R0FDUixTQUFTO0dBQ1QsUUFBUTtHQUNSLGVBQWU7R0FDZixpQkFBaUI7R0FDakIscUJBQXFCO0VBQ3ZCLENBQUM7Q0FDSDtDQUNBLElBQUksY0FBaUQ7RUFDbkQsT0FBTyxVQUFVLEtBQUssY0FBYyxDQUFDLENBQUMsT0FBTztHQUMzQyxJQUFJO0dBQ0osWUFBWTtHQUNaLFlBQVk7R0FDWixjQUFjO0dBQ2QsWUFBWTtHQUNaLHNCQUFzQjtHQUN0QixnQkFBZ0I7R0FDaEIsY0FBYztHQUNkLGVBQWU7R0FDZixtQkFBbUI7R0FDbkIsdUJBQXVCO0dBQ3ZCLDBCQUEwQjtHQUMxQiwwQkFBMEI7R0FDMUIsYUFBYTtHQUNiLFNBQVM7R0FDVCxVQUFVO0dBQ1YsYUFBYTtHQUNiLGdCQUFnQjtHQUNoQixtQkFBbUI7R0FDbkIsUUFBUTtHQUNSLFFBQVE7R0FDUixpQkFBaUI7R0FDakIscUJBQXFCO0VBQ3ZCLENBQUM7Q0FDSDtBQUNGO0FBR0EsTUFBYSwwQkFBMEI7Q0FDckMsR0FBRyxDQUFDO0NBQ0osR0FBRyxDQUFDO0FBQ047QUFHQSxNQUFhLDhCQUE4QjtDQUN6QyxJQUFJLGNBQWlEO0VBQ25ELE9BQU8sVUFBVSxLQUFLLG1CQUFtQixDQUFDLENBQUMsT0FBTztHQUNoRCxJQUFJO0dBQ0osWUFBWTtHQUNaLFlBQVk7R0FDWixNQUFNO0dBQ04sWUFBWTtHQUNaLHNCQUFzQjtHQUN0QixnQkFBZ0I7R0FDaEIsY0FBYztHQUNkLGVBQWU7R0FDZixtQkFBbUI7R0FDbkIsdUJBQXVCO0dBQ3ZCLDBCQUEwQjtHQUMxQiwwQkFBMEI7R0FDMUIsVUFBVTtHQUNWLGFBQWE7R0FDYixhQUFhO0dBQ2IsU0FBUztHQUNULGVBQWU7R0FDZixnQkFBZ0I7R0FDaEIsa0JBQWtCO0dBQ2xCLGlCQUFpQjtHQUNqQixjQUFjO0dBQ2QsV0FBVztHQUNYLFdBQVc7R0FDWCxhQUFhO0dBQ2Isa0JBQWtCO0dBQ2xCLE9BQU87RUFDVCxDQUFDO0NBQ0g7Q0FDQSxJQUFJLGNBQWlEO0VBQ25ELE9BQU8sVUFBVSxLQUFLLG1CQUFtQixDQUFDLENBQUMsT0FBTztHQUNoRCxJQUFJO0dBQ0osWUFBWTtHQUNaLFlBQVk7R0FDWixNQUFNO0dBQ04sWUFBWTtHQUNaLHNCQUFzQjtHQUN0QixnQkFBZ0I7R0FDaEIsY0FBYztHQUNkLGVBQWU7R0FDZixtQkFBbUI7R0FDbkIsdUJBQXVCO0dBQ3ZCLDBCQUEwQjtHQUMxQiwwQkFBMEI7R0FDMUIsVUFBVTtHQUNWLGFBQWE7R0FDYixhQUFhO0dBQ2IsU0FBUztHQUNULGVBQWU7R0FDZixrQkFBa0I7R0FDbEIsaUJBQWlCO0dBQ2pCLGNBQWM7R0FDZCxXQUFXO0dBQ1gsa0JBQWtCO0dBQ2xCLE9BQU87RUFDVCxDQUFDO0NBQ0g7Q0FDQSxJQUFJLGNBQWlEO0VBQ25ELE9BQU8sVUFBVSxLQUFLLG1CQUFtQixDQUFDLENBQUMsT0FBTztHQUNoRCxJQUFJO0dBQ0osV0FBVztFQUNiLENBQUM7Q0FDSDtBQUNGO0FBR0EsTUFBYSw4QkFBOEI7Q0FDekMsR0FBRyxDQUFDO0NBQ0osR0FBRyxDQUFDO0NBQ0osR0FBRyxDQUFDO0FBQ047QUFHQSxNQUFhLHFCQUFxQixFQUNoQyxJQUFJLGNBQWlEO0NBQ25ELE9BQU8sVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLE9BQU87RUFDckMsSUFBSTtFQUNKLFlBQVk7RUFDWixVQUFVO0VBQ1YsYUFBYTtFQUNiLE1BQU07RUFDTixRQUFRO0VBQ1IsS0FBSztFQUNMLGlCQUFpQjtFQUNqQixRQUFRO0NBQ1YsQ0FBQztBQUNILEVBQ0Y7QUFHQSxNQUFhLHFCQUFxQixFQUNoQyxHQUFHLENBQUMsRUFDTiJ9
|
|
157
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5zc28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cblxuaW1wb3J0IHsgdHlwZSBQdXJpV3JhcHBlciwgdHlwZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCwgdHlwZSBQdXJpTG9hZGVyUXVlcmllcyB9IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHtcbiAgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0S2V5LFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwU3Vic2V0S2V5LFxuICB0eXBlIFRva2VuU3Vic2V0S2V5LFxuICB0eXBlIFJlcXVlc3RMb2dCYXNlU2NoZW1hLFxuICB0eXBlIFJlcXVlc3RMb2dTdGVwQmFzZVNjaGVtYSxcbiAgdHlwZSBUb2tlbkJhc2VTY2hlbWEsXG59IGZyb20gXCIuL3NvbmFtdS5nZW5lcmF0ZWRcIjtcblxuLy8gU3Vic2V0UXVlcnk6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCByZXF1ZXN0TG9nU3Vic2V0UXVlcmllcyA9IHtcbiAgQTogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dzXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJyZXF1ZXN0X2xvZ3MuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHRva2VuX25hbWU6IFwicmVxdWVzdF9sb2dzLnRva2VuX25hbWVcIixcbiAgICAgIHByb2plY3RfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucHJvamVjdF9uYW1lXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5tb2RlbF9uYW1lXCIsXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9ncy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgdXNlcl9wcm9tcHQ6IFwicmVxdWVzdF9sb2dzLnVzZXJfcHJvbXB0XCIsXG4gICAgICBzeXN0ZW1fcHJvbXB0OiBcInJlcXVlc3RfbG9ncy5zeXN0ZW1fcHJvbXB0XCIsXG4gICAgICByZXNwb25zZTogXCJyZXF1ZXN0X2xvZ3MucmVzcG9uc2VcIixcbiAgICAgIGlucHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5vdXRwdXRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9ncy5kdXJhdGlvbl9tc1wiLFxuICAgICAgdHRmdF9tczogXCJyZXF1ZXN0X2xvZ3MudHRmdF9tc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmNvc3RfdXNkXCIsXG4gICAgICBjb3N0X3NvdXJjZTogXCJyZXF1ZXN0X2xvZ3MuY29zdF9zb3VyY2VcIixcbiAgICAgIGltYWdlX2Nvc3RfdXNkOiBcInJlcXVlc3RfbG9ncy5pbWFnZV9jb3N0X3VzZFwiLFxuICAgICAgaW1hZ2VfY29zdF9tZXRob2Q6IFwicmVxdWVzdF9sb2dzLmltYWdlX2Nvc3RfbWV0aG9kXCIsXG4gICAgICBlZmZvcnQ6IFwicmVxdWVzdF9sb2dzLmVmZm9ydFwiLFxuICAgICAgaGlzdG9yeTogXCJyZXF1ZXN0X2xvZ3MuaGlzdG9yeVwiLFxuICAgICAgdG9vbHM6IFwicmVxdWVzdF9sb2dzLnRvb2xzXCIsXG4gICAgICBzdGF0dXM6IFwicmVxdWVzdF9sb2dzLnN0YXR1c1wiLFxuICAgICAgZXJyb3JfbWVzc2FnZTogXCJyZXF1ZXN0X2xvZ3MuZXJyb3JfbWVzc2FnZVwiLFxuICAgICAgdG9vbF9jYWxsX2NvdW50OiBcInJlcXVlc3RfbG9ncy50b29sX2NhbGxfY291bnRcIixcbiAgICAgIGlzX2ltYWdlX2dlbmVyYXRpb246IFwicmVxdWVzdF9sb2dzLmlzX2ltYWdlX2dlbmVyYXRpb25cIixcbiAgICB9KTtcbiAgfSxcbiAgUDogKHFiV3JhcHBlcjogUHVyaVdyYXBwZXI8RGF0YWJhc2VTY2hlbWFFeHRlbmQ+KSA9PiB7XG4gICAgcmV0dXJuIHFiV3JhcHBlci5mcm9tKFwicmVxdWVzdF9sb2dzXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJyZXF1ZXN0X2xvZ3MuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dzLmNyZWF0ZWRfYXRcIixcbiAgICAgIHRva2VuX25hbWU6IFwicmVxdWVzdF9sb2dzLnRva2VuX25hbWVcIixcbiAgICAgIHByb2plY3RfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucHJvamVjdF9uYW1lXCIsXG4gICAgICBtb2RlbF9uYW1lOiBcInJlcXVlc3RfbG9ncy5tb2RlbF9uYW1lXCIsXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ3MucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9ncy5mYWxsYmFja19jb3VudFwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ3MuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiLFxuICAgICAgZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9ncy50dGZ0X21zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ3MuY29zdF91c2RcIixcbiAgICAgIGNvc3Rfc291cmNlOiBcInJlcXVlc3RfbG9ncy5jb3N0X3NvdXJjZVwiLFxuICAgICAgaW1hZ2VfY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmltYWdlX2Nvc3RfdXNkXCIsXG4gICAgICBpbWFnZV9jb3N0X21ldGhvZDogXCJyZXF1ZXN0X2xvZ3MuaW1hZ2VfY29zdF9tZXRob2RcIixcbiAgICAgIGVmZm9ydDogXCJyZXF1ZXN0X2xvZ3MuZWZmb3J0XCIsXG4gICAgICBzdGF0dXM6IFwicmVxdWVzdF9sb2dzLnN0YXR1c1wiLFxuICAgICAgdG9vbF9jYWxsX2NvdW50OiBcInJlcXVlc3RfbG9ncy50b29sX2NhbGxfY291bnRcIixcbiAgICAgIGlzX2ltYWdlX2dlbmVyYXRpb246IFwicmVxdWVzdF9sb2dzLmlzX2ltYWdlX2dlbmVyYXRpb25cIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXMgPSB7XG4gIEE6IFtdLFxuICBQOiBbXSxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPFJlcXVlc3RMb2dTdWJzZXRLZXk+O1xuXG4vLyBTdWJzZXRRdWVyeTogUmVxdWVzdExvZ1N0ZXBcbmV4cG9ydCBjb25zdCByZXF1ZXN0TG9nU3RlcFN1YnNldFF1ZXJpZXMgPSB7XG4gIEE6IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgIHJldHVybiBxYldyYXBwZXIuZnJvbShcInJlcXVlc3RfbG9nX3N0ZXBzXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jcmVhdGVkX2F0XCIsXG4gICAgICBzdGVwX2luZGV4OiBcInJlcXVlc3RfbG9nX3N0ZXBzLnN0ZXBfaW5kZXhcIixcbiAgICAgIHR5cGU6IFwicmVxdWVzdF9sb2dfc3RlcHMudHlwZVwiLFxuICAgICAgbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy5tb2RlbF9uYW1lXCIsXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy5yZXF1ZXN0ZWRfbW9kZWxfbmFtZVwiLFxuICAgICAgZmFsbGJhY2tfY291bnQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuZmFsbGJhY2tfY291bnRcIixcbiAgICAgIGlucHV0X3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMub3V0cHV0X3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfcmVhZF90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIixcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIixcbiAgICAgIGNvc3RfdXNkOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNvc3RfdXNkXCIsXG4gICAgICBjb3N0X3NvdXJjZTogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jb3N0X3NvdXJjZVwiLFxuICAgICAgZHVyYXRpb25fbXM6IFwicmVxdWVzdF9sb2dfc3RlcHMuZHVyYXRpb25fbXNcIixcbiAgICAgIHR0ZnRfbXM6IFwicmVxdWVzdF9sb2dfc3RlcHMudHRmdF9tc1wiLFxuICAgICAgZmluaXNoX3JlYXNvbjogXCJyZXF1ZXN0X2xvZ19zdGVwcy5maW5pc2hfcmVhc29uXCIsXG4gICAgICByZWFzb25pbmdfdGV4dDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5yZWFzb25pbmdfdGV4dFwiLFxuICAgICAgcmVhc29uaW5nX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5yZWFzb25pbmdfdG9rZW5zXCIsXG4gICAgICB0b29sX2NhbGxfaW5kZXg6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9jYWxsX2luZGV4XCIsXG4gICAgICB0b29sX2NhbGxfaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9jYWxsX2lkXCIsXG4gICAgICB0b29sX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9uYW1lXCIsXG4gICAgICB0b29sX2FyZ3M6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9hcmdzXCIsXG4gICAgICB0b29sX3Jlc3VsdDogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX3Jlc3VsdFwiLFxuICAgICAgdG9vbF9kdXJhdGlvbl9tczogXCJyZXF1ZXN0X2xvZ19zdGVwcy50b29sX2R1cmF0aW9uX21zXCIsXG4gICAgICBlcnJvcjogXCJyZXF1ZXN0X2xvZ19zdGVwcy5lcnJvclwiLFxuICAgIH0pO1xuICB9LFxuICBUOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJyZXF1ZXN0X2xvZ19zdGVwc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuaWRcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IFwicmVxdWVzdF9sb2dfc3RlcHMuY3JlYXRlZF9hdFwiLFxuICAgICAgc3RlcF9pbmRleDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5zdGVwX2luZGV4XCIsXG4gICAgICB0eXBlOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR5cGVcIixcbiAgICAgIG1vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMubW9kZWxfbmFtZVwiLFxuICAgICAgcmVxdWVzdGVkX21vZGVsX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMucmVxdWVzdGVkX21vZGVsX25hbWVcIixcbiAgICAgIGZhbGxiYWNrX2NvdW50OiBcInJlcXVlc3RfbG9nX3N0ZXBzLmZhbGxiYWNrX2NvdW50XCIsXG4gICAgICBpbnB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuaW5wdXRfdG9rZW5zXCIsXG4gICAgICBvdXRwdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmNhY2hlX3JlYWRfdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fNW1fdG9rZW5zXCIsXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IFwicmVxdWVzdF9sb2dfc3RlcHMuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCIsXG4gICAgICBjb3N0X3VzZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5jb3N0X3VzZFwiLFxuICAgICAgY29zdF9zb3VyY2U6IFwicmVxdWVzdF9sb2dfc3RlcHMuY29zdF9zb3VyY2VcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmR1cmF0aW9uX21zXCIsXG4gICAgICB0dGZ0X21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnR0ZnRfbXNcIixcbiAgICAgIGZpbmlzaF9yZWFzb246IFwicmVxdWVzdF9sb2dfc3RlcHMuZmluaXNoX3JlYXNvblwiLFxuICAgICAgcmVhc29uaW5nX3Rva2VuczogXCJyZXF1ZXN0X2xvZ19zdGVwcy5yZWFzb25pbmdfdG9rZW5zXCIsXG4gICAgICB0b29sX2NhbGxfaW5kZXg6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9jYWxsX2luZGV4XCIsXG4gICAgICB0b29sX2NhbGxfaWQ6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9jYWxsX2lkXCIsXG4gICAgICB0b29sX25hbWU6IFwicmVxdWVzdF9sb2dfc3RlcHMudG9vbF9uYW1lXCIsXG4gICAgICB0b29sX2R1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfZHVyYXRpb25fbXNcIixcbiAgICAgIGVycm9yOiBcInJlcXVlc3RfbG9nX3N0ZXBzLmVycm9yXCIsXG4gICAgfSk7XG4gIH0sXG4gIEk6IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgIHJldHVybiBxYldyYXBwZXIuZnJvbShcInJlcXVlc3RfbG9nX3N0ZXBzXCIpLnNlbGVjdCh7XG4gICAgICBpZDogXCJyZXF1ZXN0X2xvZ19zdGVwcy5pZFwiLFxuICAgICAgdG9vbF9hcmdzOiBcInJlcXVlc3RfbG9nX3N0ZXBzLnRvb2xfYXJnc1wiLFxuICAgIH0pO1xuICB9LFxufTtcblxuLy8gTG9hZGVyUXVlcnk6IFJlcXVlc3RMb2dTdGVwXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ1N0ZXBMb2FkZXJRdWVyaWVzID0ge1xuICBBOiBbXSxcbiAgVDogW10sXG4gIEk6IFtdLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUHVyaUxvYWRlclF1ZXJpZXM8UmVxdWVzdExvZ1N0ZXBTdWJzZXRLZXk+O1xuXG4vLyBTdWJzZXRRdWVyeTogVG9rZW5cbmV4cG9ydCBjb25zdCB0b2tlblN1YnNldFF1ZXJpZXMgPSB7XG4gIEE6IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgIHJldHVybiBxYldyYXBwZXIuZnJvbShcInRva2Vuc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwidG9rZW5zLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInRva2Vucy5jcmVhdGVkX2F0XCIsXG4gICAgICBwcm92aWRlcjogXCJ0b2tlbnMucHJvdmlkZXJcIixcbiAgICAgIGNyZWRlbnRpYWxzOiBcInRva2Vucy5jcmVkZW50aWFsc1wiLFxuICAgICAgbmFtZTogXCJ0b2tlbnMubmFtZVwiLFxuICAgICAgYWN0aXZlOiBcInRva2Vucy5hY3RpdmVcIixcbiAgICAgIG9yZDogXCJ0b2tlbnMub3JkXCIsXG4gICAgICBxdW90YV90aHJlc2hvbGQ6IFwidG9rZW5zLnF1b3RhX3RocmVzaG9sZFwiLFxuICAgICAgd2VpZ2h0OiBcInRva2Vucy53ZWlnaHRcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBUb2tlblxuZXhwb3J0IGNvbnN0IHRva2VuTG9hZGVyUXVlcmllcyA9IHtcbiAgQTogW10sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczxUb2tlblN1YnNldEtleT47XG5cbi8vIEZvcmVpZ25LZXkgVHlwZXNcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdGVwRm9yZWlnbktleXMgPSBcInJlcXVlc3RfbG9nX2lkXCI7XG5cbi8vIERhdGFiYXNlU2NoZW1hXG5kZWNsYXJlIG1vZHVsZSBcInNvbmFtdVwiIHtcbiAgZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCB7XG4gICAgcmVxdWVzdF9sb2dzOiBSZXF1ZXN0TG9nQmFzZVNjaGVtYTtcbiAgICByZXF1ZXN0X2xvZ19zdGVwczogUmVxdWVzdExvZ1N0ZXBCYXNlU2NoZW1hO1xuICAgIHRva2VuczogVG9rZW5CYXNlU2NoZW1hO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUZvcmVpZ25LZXlzIHtcbiAgICByZXF1ZXN0X2xvZ19zdGVwczogUmVxdWVzdExvZ1N0ZXBGb3JlaWduS2V5cztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBaUJBLE1BQWEsMEJBQTBCO0NBQ3JDLElBQUksY0FBaUQ7RUFDbkQsT0FBTyxVQUFVLEtBQUssY0FBYyxDQUFDLENBQUMsT0FBTztHQUMzQyxJQUFJO0dBQ0osWUFBWTtHQUNaLFlBQVk7R0FDWixjQUFjO0dBQ2QsWUFBWTtHQUNaLHNCQUFzQjtHQUN0QixnQkFBZ0I7R0FDaEIsYUFBYTtHQUNiLGVBQWU7R0FDZixVQUFVO0dBQ1YsY0FBYztHQUNkLGVBQWU7R0FDZixtQkFBbUI7R0FDbkIsdUJBQXVCO0dBQ3ZCLDBCQUEwQjtHQUMxQiwwQkFBMEI7R0FDMUIsYUFBYTtHQUNiLFNBQVM7R0FDVCxVQUFVO0dBQ1YsYUFBYTtHQUNiLGdCQUFnQjtHQUNoQixtQkFBbUI7R0FDbkIsUUFBUTtHQUNSLFNBQVM7R0FDVCxPQUFPO0dBQ1AsUUFBUTtHQUNSLGVBQWU7R0FDZixpQkFBaUI7R0FDakIscUJBQXFCO0VBQ3ZCLENBQUM7Q0FDSDtDQUNBLElBQUksY0FBaUQ7RUFDbkQsT0FBTyxVQUFVLEtBQUssY0FBYyxDQUFDLENBQUMsT0FBTztHQUMzQyxJQUFJO0dBQ0osWUFBWTtHQUNaLFlBQVk7R0FDWixjQUFjO0dBQ2QsWUFBWTtHQUNaLHNCQUFzQjtHQUN0QixnQkFBZ0I7R0FDaEIsY0FBYztHQUNkLGVBQWU7R0FDZixtQkFBbUI7R0FDbkIsdUJBQXVCO0dBQ3ZCLDBCQUEwQjtHQUMxQiwwQkFBMEI7R0FDMUIsYUFBYTtHQUNiLFNBQVM7R0FDVCxVQUFVO0dBQ1YsYUFBYTtHQUNiLGdCQUFnQjtHQUNoQixtQkFBbUI7R0FDbkIsUUFBUTtHQUNSLFFBQVE7R0FDUixpQkFBaUI7R0FDakIscUJBQXFCO0VBQ3ZCLENBQUM7Q0FDSDtBQUNGO0FBR0EsTUFBYSwwQkFBMEI7Q0FDckMsR0FBRyxDQUFDO0NBQ0osR0FBRyxDQUFDO0FBQ047QUFHQSxNQUFhLDhCQUE4QjtDQUN6QyxJQUFJLGNBQWlEO0VBQ25ELE9BQU8sVUFBVSxLQUFLLG1CQUFtQixDQUFDLENBQUMsT0FBTztHQUNoRCxJQUFJO0dBQ0osWUFBWTtHQUNaLFlBQVk7R0FDWixNQUFNO0dBQ04sWUFBWTtHQUNaLHNCQUFzQjtHQUN0QixnQkFBZ0I7R0FDaEIsY0FBYztHQUNkLGVBQWU7R0FDZixtQkFBbUI7R0FDbkIsdUJBQXVCO0dBQ3ZCLDBCQUEwQjtHQUMxQiwwQkFBMEI7R0FDMUIsVUFBVTtHQUNWLGFBQWE7R0FDYixhQUFhO0dBQ2IsU0FBUztHQUNULGVBQWU7R0FDZixnQkFBZ0I7R0FDaEIsa0JBQWtCO0dBQ2xCLGlCQUFpQjtHQUNqQixjQUFjO0dBQ2QsV0FBVztHQUNYLFdBQVc7R0FDWCxhQUFhO0dBQ2Isa0JBQWtCO0dBQ2xCLE9BQU87RUFDVCxDQUFDO0NBQ0g7Q0FDQSxJQUFJLGNBQWlEO0VBQ25ELE9BQU8sVUFBVSxLQUFLLG1CQUFtQixDQUFDLENBQUMsT0FBTztHQUNoRCxJQUFJO0dBQ0osWUFBWTtHQUNaLFlBQVk7R0FDWixNQUFNO0dBQ04sWUFBWTtHQUNaLHNCQUFzQjtHQUN0QixnQkFBZ0I7R0FDaEIsY0FBYztHQUNkLGVBQWU7R0FDZixtQkFBbUI7R0FDbkIsdUJBQXVCO0dBQ3ZCLDBCQUEwQjtHQUMxQiwwQkFBMEI7R0FDMUIsVUFBVTtHQUNWLGFBQWE7R0FDYixhQUFhO0dBQ2IsU0FBUztHQUNULGVBQWU7R0FDZixrQkFBa0I7R0FDbEIsaUJBQWlCO0dBQ2pCLGNBQWM7R0FDZCxXQUFXO0dBQ1gsa0JBQWtCO0dBQ2xCLE9BQU87RUFDVCxDQUFDO0NBQ0g7Q0FDQSxJQUFJLGNBQWlEO0VBQ25ELE9BQU8sVUFBVSxLQUFLLG1CQUFtQixDQUFDLENBQUMsT0FBTztHQUNoRCxJQUFJO0dBQ0osV0FBVztFQUNiLENBQUM7Q0FDSDtBQUNGO0FBR0EsTUFBYSw4QkFBOEI7Q0FDekMsR0FBRyxDQUFDO0NBQ0osR0FBRyxDQUFDO0NBQ0osR0FBRyxDQUFDO0FBQ047QUFHQSxNQUFhLHFCQUFxQixFQUNoQyxJQUFJLGNBQWlEO0NBQ25ELE9BQU8sVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLE9BQU87RUFDckMsSUFBSTtFQUNKLFlBQVk7RUFDWixVQUFVO0VBQ1YsYUFBYTtFQUNiLE1BQU07RUFDTixRQUFRO0VBQ1IsS0FBSztFQUNMLGlCQUFpQjtFQUNqQixRQUFRO0NBQ1YsQ0FBQztBQUNILEVBQ0Y7QUFHQSxNQUFhLHFCQUFxQixFQUNoQyxHQUFHLENBQUMsRUFDTiJ9
|
|
@@ -181,6 +181,7 @@ const entityLabels = {
|
|
|
181
181
|
"entity.RequestLog.image_cost_method": "이미지 비용 추정 방식",
|
|
182
182
|
"entity.RequestLog.effort": "effort level",
|
|
183
183
|
"entity.RequestLog.history": "inject_items 히스토리",
|
|
184
|
+
"entity.RequestLog.tools": "요청에 장착된 tool 정의 목록",
|
|
184
185
|
"entity.RequestLog.status": "실행 상태",
|
|
185
186
|
"entity.RequestLog.error_message": "에러 메시지",
|
|
186
187
|
"entity.RequestLog.tool_call_count": "tool call 횟수",
|
|
@@ -359,4 +360,4 @@ SD.enumLabels = (enumName) => {
|
|
|
359
360
|
//#endregion
|
|
360
361
|
export { SD, defineLocale, localizedColumn };
|
|
361
362
|
|
|
362
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QuZ2VuZXJhdGVkLmpzIiwibmFtZXMiOlsia28iLCJlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pMThuL3NkLmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCJzb25hbXVcIjtcblxuY29uc3QgREVGQVVMVF9MT0NBTEUgPSBcImtvXCIgYXMgY29uc3Q7XG5jb25zdCBTVVBQT1JURURfTE9DQUxFUyA9IFtcImtvXCIsIFwiZW5cIl0gYXMgY29uc3Q7XG5mdW5jdGlvbiBnZXRDdXJyZW50TG9jYWxlKCk6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0ge1xuICB0cnkge1xuICAgIGNvbnN0IGN0eCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgcmV0dXJuIChjdHgubG9jYWxlIGFzICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID8/IERFRkFVTFRfTE9DQUxFO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gREVGQVVMVF9MT0NBTEU7XG4gIH1cbn1cblxuaW1wb3J0IGVuIGZyb20gXCIuL2VuXCI7XG5pbXBvcnQga28gZnJvbSBcIi4va29cIjtcblxuLy8gcmVhY3QtY29tcG9uZW50cyBpMThuIGtleXNcbmNvbnN0IHJjS2V5c0tvID0ge1xuICAvLyBBc3luY1NlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5hc3luY1NlbGVjdC5sb2FkaW5nXCI6IFwi66Gc65SpIOykkS4uLlwiLFxuICBcInJjLmFzeW5jU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIuyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub1Jlc3VsdHNcIjogXCLqsoDsg4kg6rKw6rO86rCAIOyXhuyKteuLiOuLpFwiLFxuICBcInJjLmFzeW5jU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwi7ISg7YOd7ZWY7IS47JqULi4uXCIsXG5cbiAgLy8gQ29tYm9ib3ggQ29tcG9uZW50XG4gIFwicmMuY29tYm9ib3gubm9SZXN1bHRzXCI6IFwi6rKA7IOJIOqysOqzvOqwgCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5jb21ib2JveC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIuyEoO2Dne2VmOyEuOyalC4uLlwiLFxuXG4gIC8vIERhdGVQaWNrZXIgQ29tcG9uZW50XG4gIFwicmMuZGF0ZVBpY2tlci5waWNrRGF0ZVwiOiBcIuuCoOynnCDshKDtg51cIixcbiAgXCJyYy5kYXRlUGlja2VyLnBsYWNlaG9sZGVyXCI6IFwi64Kg7KecIOyEoO2DnVwiLFxuICBcInJjLmRhdGVQaWNrZXIuc2VsZWN0RGF0ZVwiOiBcIuuCoOynnCDshKDtg51cIixcblxuICAvLyBEYXRlU2VsZWN0b3JNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5hZGREYXRlXCI6IFwi64Kg7KecIOy2lOqwgFwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIuq4sOqwhFwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwi64Kg7KecIOyEoO2DnVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCLri6jsnbxcIixcblxuICAvLyBGaWxlSW5wdXQgQ29tcG9uZW50XG4gIFwicmMuZmlsZUlucHV0LmJyb3dzZUZpbGVzXCI6IFwi7YyM7J28IOywvuq4sFwiLFxuICBcInJjLmZpbGVJbnB1dC5kcm9wWm9uZVwiOiBcIu2MjOydvOydhCDrk5zrnpjqt7jtlZjqsbDrgpgg7YG066at7ZWY7JesIOyXheuhnOuTnFwiLFxuICBcInJjLmZpbGVJbnB1dC5maWxlUGxhY2Vob2xkZXJcIjogXCLtjIzsnbxcIixcbiAgXCJyYy5maWxlSW5wdXQuaW1hZ2VQbGFjZWhvbGRlclwiOiBcIuydtOuvuOyngFwiLFxuICBcInJjLmZpbGVJbnB1dC5tYXhGaWxlc0V4Y2VlZGVkXCI6IChtYXhGaWxlczogbnVtYmVyKSA9PlxuICAgIGDstZzrjIAgJHttYXhGaWxlc33qsJwg7YyM7J2866eMIOyXheuhnOuTnCDqsIDriqXtlanri4jri6RgLFxuICBcInJjLmZpbGVJbnB1dC5wZW5kaW5nXCI6IFwi64yA6riwIOykkVwiLFxuICBcInJjLmZpbGVJbnB1dC5yZW1vdmVcIjogXCLsoJzqsbBcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkRmFpbGVkXCI6IFwi7JeF66Gc65OcIOyLpO2MqFwiLFxuICBcInJjLmZpbGVJbnB1dC51cGxvYWRpbmdcIjogXCLsl4XroZzrk5wg7KSRLi4uXCIsXG5cbiAgLy8gTW9udGhQaWNrZXJNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmFkZE1vbnRoXCI6IFwi7JuUIOy2lOqwgFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuZGF0ZVJhbmdlXCI6IFwi6riw6rCEXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5lbmREYXRlXCI6IFwi7KKF66OM7J28XCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIuyblCDshKDtg51cIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCLri6jsnbxcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnN0YXJ0RGF0ZVwiOiBcIuyLnOyekeydvFwiLFxuXG4gIC8vIE11bHRpU2VsZWN0IENvbXBvbmVudFxuICBcInJjLm11bHRpU2VsZWN0LmNsZWFyXCI6IFwi7KCE7LK0IO2VtOygnFwiLFxuICBcInJjLm11bHRpU2VsZWN0LmNsb3NlXCI6IFwi64ur6riwXCIsXG4gIFwicmMubXVsdGlTZWxlY3QubW9yZUl0ZW1zXCI6IChjb3VudDogbnVtYmVyKSA9PiBgKyR7Y291bnR96rCcIOuNlOuztOq4sGAsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zXCI6IFwi7Ji17IWY7J20IOyXhuyKteuLiOuLpFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vT3B0aW9uc1NlbGVjdGVkXCI6IFwi7ISg7YOd65CcIOyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub1Jlc3VsdHNcIjogXCLqsoDsg4kg6rKw6rO86rCAIOyXhuyKteuLiOuLpFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm9wdGlvbnNDb3VudFwiOiAoY291bnQ6IG51bWJlcikgPT4gYCR7Y291bnR96rCcIOyYteyFmGAsXG4gIFwicmMubXVsdGlTZWxlY3Quc2VsZWN0QWxsXCI6IFwi7KCE7LK0IOyEoO2DnVwiLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwi7ISg7YOd7ZWY7IS47JqULi4uXCIsXG5cbiAgLy8gUGFnaW5hdGlvbiBDb21wb25lbnRcbiAgXCJyYy5wYWdpbmF0aW9uLm5leHRcIjogXCLri6TsnYxcIixcbiAgXCJyYy5wYWdpbmF0aW9uLnByZXZpb3VzXCI6IFwi7J207KCEXCIsXG4gIFwicmMucGFnaW5hdGlvbi5zaG93aW5nXCI6IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdG90YWw6IG51bWJlcikgPT5cbiAgICBgJHt0b3RhbH3qsJwg7KSRICR7c3RhcnR9LSR7ZW5kfWAsXG5cbiAgLy8gQ2FsZW5kYXIgQ29tcG9uZW50XG4gIFwicmMuY2FsZW5kYXIubW9udGguMFwiOiBcIjHsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xXCI6IFwiMuyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjJcIjogXCIz7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguM1wiOiBcIjTsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC40XCI6IFwiNeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjVcIjogXCI27JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguNlwiOiBcIjfsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC43XCI6IFwiOOyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjhcIjogXCI57JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguOVwiOiBcIjEw7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguMTBcIjogXCIxMeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjExXCI6IFwiMTLsm5RcIixcblxuICAvLyBTb25hbXUgRmlsdGVyIENvbXBvbmVudFxuICBcInJjLnNvbmFtdUZpbHRlci50aXRsZVwiOiBcIuyGjOuCmOustCDtlYTthLBcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbHlcIjogXCLsoIHsmqlcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIucmVzZXRcIjogXCLstIjquLDtmZRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYWRkUnVsZVwiOiBcIuq3nOy5mSDstpTqsIBcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm9SdWxlc1lldFwiOiAn7JWE7KeBIOq3nOy5meydtCDsl4bsirXri4jri6QuIFwiKyDqt5zsuZkg7LaU6rCAXCLrpbwg7YG066at7ZWY7JesIOyLnOyeke2VmOyEuOyalC4nLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RGaWVsZFwiOiBcIu2VhOuTnCDshKDtg51cIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0T3BlcmF0b3JcIjogXCLsl7DsgrDsnpAg7ISg7YOdXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yRmlyc3RcIjogXCLrqLzsoIAg7Jew7IKw7J6Q66W8IOyEoO2Dne2VmOyEuOyalFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlclZhbHVlXCI6IFwi6rCSIOyeheugpVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlck51bWJlclwiOiBcIuyIq+yekCDsnoXroKVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm90U3VwcG9ydGVkXCI6IFwi7KeA7JuQ7ZWY7KeAIOyViuydjFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zdGFydERhdGVcIjogXCLsi5zsnpHsnbxcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW5kRGF0ZVwiOiBcIuyiheujjOydvFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hcHBsaWVkRmlsdGVyc1wiOiBcIvCfjLIg7KCB7Jqp65CcIOyGjOuCmOustCDtlYTthLBcIixcblxuICAvLyBDb21tb25cbiAgXCJyYy5jb21tb24uY2FuY2VsXCI6IFwi7Leo7IaMXCIsXG4gIFwicmMuY29tbW9uLnNhdmVcIjogXCLsoIDsnqVcIixcbn07XG5cbmNvbnN0IHJjS2V5c0VuID0ge1xuICAvLyBBc3luY1NlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5hc3luY1NlbGVjdC5sb2FkaW5nXCI6IFwiTG9hZGluZy4uLlwiLFxuICBcInJjLmFzeW5jU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIk5vIG9wdGlvbnNcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub1Jlc3VsdHNcIjogXCJObyByZXN1bHRzXCIsXG4gIFwicmMuYXN5bmNTZWxlY3Quc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBDb21ib2JveCBDb21wb25lbnRcbiAgXCJyYy5jb21ib2JveC5ub1Jlc3VsdHNcIjogXCJObyByZXN1bHRzXCIsXG4gIFwicmMuY29tYm9ib3guc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBEYXRlUGlja2VyIENvbXBvbmVudFxuICBcInJjLmRhdGVQaWNrZXIucGlja0RhdGVcIjogXCJQaWNrIGRhdGVcIixcbiAgXCJyYy5kYXRlUGlja2VyLnBsYWNlaG9sZGVyXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVBpY2tlci5zZWxlY3REYXRlXCI6IFwiU2VsZWN0IGRhdGVcIixcblxuICAvLyBEYXRlU2VsZWN0b3JNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5hZGREYXRlXCI6IFwiQWRkIGRhdGVcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5kYXRlUmFuZ2VcIjogXCJSYW5nZVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuc2luZ2xlRGF0ZVwiOiBcIlNpbmdsZVwiLFxuXG4gIC8vIEZpbGVJbnB1dCBDb21wb25lbnRcbiAgXCJyYy5maWxlSW5wdXQuYnJvd3NlRmlsZXNcIjogXCJCcm93c2UgZmlsZXNcIixcbiAgXCJyYy5maWxlSW5wdXQuZHJvcFpvbmVcIjogXCJEcmFnIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gdXBsb2FkXCIsXG4gIFwicmMuZmlsZUlucHV0LmZpbGVQbGFjZWhvbGRlclwiOiBcIkZpbGVcIixcbiAgXCJyYy5maWxlSW5wdXQuaW1hZ2VQbGFjZWhvbGRlclwiOiBcIkltYWdlXCIsXG4gIFwicmMuZmlsZUlucHV0Lm1heEZpbGVzRXhjZWVkZWRcIjogKG1heEZpbGVzOiBudW1iZXIpID0+IGBNYXhpbXVtICR7bWF4RmlsZXN9IGZpbGVzIGFsbG93ZWRgLFxuICBcInJjLmZpbGVJbnB1dC5wZW5kaW5nXCI6IFwiUGVuZGluZ1wiLFxuICBcInJjLmZpbGVJbnB1dC5yZW1vdmVcIjogXCJSZW1vdmVcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkRmFpbGVkXCI6IFwiVXBsb2FkIGZhaWxlZFwiLFxuICBcInJjLmZpbGVJbnB1dC51cGxvYWRpbmdcIjogXCJVcGxvYWRpbmcuLi5cIixcblxuICAvLyBNb250aFBpY2tlck11bHRpcGxlIENvbXBvbmVudFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuYWRkTW9udGhcIjogXCJBZGQgbW9udGhcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIlJhbmdlXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5lbmREYXRlXCI6IFwiRW5kIGRhdGVcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwiUGljayBtb250aFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuc2luZ2xlRGF0ZVwiOiBcIlNpbmdsZVwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuc3RhcnREYXRlXCI6IFwiU3RhcnQgZGF0ZVwiLFxuXG4gIC8vIE11bHRpU2VsZWN0IENvbXBvbmVudFxuICBcInJjLm11bHRpU2VsZWN0LmNsZWFyXCI6IFwiQ2xlYXIgYWxsXCIsXG4gIFwicmMubXVsdGlTZWxlY3QuY2xvc2VcIjogXCJDbG9zZVwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm1vcmVJdGVtc1wiOiAoY291bnQ6IG51bWJlcikgPT4gYCske2NvdW50fSBtb3JlYCxcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub09wdGlvbnNcIjogXCJObyBvcHRpb25zXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zU2VsZWN0ZWRcIjogXCJObyBvcHRpb25zIHNlbGVjdGVkXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9SZXN1bHRzXCI6IFwiTm8gcmVzdWx0c1wiLFxuICBcInJjLm11bHRpU2VsZWN0Lm9wdGlvbnNDb3VudFwiOiAoY291bnQ6IG51bWJlcikgPT4gYCR7Y291bnR9IG9wdGlvbnNgLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdEFsbFwiOiBcIlNlbGVjdCBhbGxcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIlNlbGVjdC4uLlwiLFxuXG4gIC8vIFBhZ2luYXRpb24gQ29tcG9uZW50XG4gIFwicmMucGFnaW5hdGlvbi5uZXh0XCI6IFwiTmV4dFwiLFxuICBcInJjLnBhZ2luYXRpb24ucHJldmlvdXNcIjogXCJQcmV2aW91c1wiLFxuICBcInJjLnBhZ2luYXRpb24uc2hvd2luZ1wiOiAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRvdGFsOiBudW1iZXIpID0+XG4gICAgYFNob3dpbmcgJHtzdGFydH0tJHtlbmR9IG9mICR7dG90YWx9YCxcblxuICAvLyBDYWxlbmRhciBDb21wb25lbnRcbiAgXCJyYy5jYWxlbmRhci5tb250aC4wXCI6IFwiSmFudWFyeVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjFcIjogXCJGZWJydWFyeVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjJcIjogXCJNYXJjaFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjNcIjogXCJBcHJpbFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjRcIjogXCJNYXlcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC41XCI6IFwiSnVuZVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjZcIjogXCJKdWx5XCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguN1wiOiBcIkF1Z3VzdFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjhcIjogXCJTZXB0ZW1iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC45XCI6IFwiT2N0b2JlclwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjEwXCI6IFwiTm92ZW1iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xMVwiOiBcIkRlY2VtYmVyXCIsXG5cbiAgLy8gU29uYW11IEZpbHRlciBDb21wb25lbnRcbiAgXCJyYy5zb25hbXVGaWx0ZXIudGl0bGVcIjogXCJTb25hbXUgRmlsdGVyXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFwcGx5XCI6IFwiQXBwbHlcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIucmVzZXRcIjogXCJSZXNldFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hZGRSdWxlXCI6IFwiQWRkIFJ1bGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm9SdWxlc1lldFwiOiAnTm8gcnVsZXMgeWV0LiBDbGljayBcIisgQWRkIFJ1bGVcIiB0byBzdGFydC4nLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RGaWVsZFwiOiBcIlNlbGVjdCBmaWVsZFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RPcGVyYXRvclwiOiBcIk9wZXJhdG9yXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yRmlyc3RcIjogXCJTZWxlY3Qgb3BlcmF0b3IgZmlyc3RcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW50ZXJWYWx1ZVwiOiBcIkVudGVyIHZhbHVlXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmVudGVyTnVtYmVyXCI6IFwiRW50ZXIgbnVtYmVyXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vdFN1cHBvcnRlZFwiOiBcIk5vdCBzdXBwb3J0ZWRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc3RhcnREYXRlXCI6IFwiU3RhcnQgZGF0ZVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbmREYXRlXCI6IFwiRW5kIGRhdGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbGllZEZpbHRlcnNcIjogXCLwn4yyIEFwcGxpZWQgU29uYW11RmlsdGVyc1wiLFxuXG4gIC8vIENvbW1vblxuICBcInJjLmNvbW1vbi5jYW5jZWxcIjogXCJDYW5jZWxcIixcbiAgXCJyYy5jb21tb24uc2F2ZVwiOiBcIlNhdmVcIixcbn0gYXMgY29uc3Q7XG5cbi8vIGVudGl0eS5qc29u7JeQ7IScIOy2lOy2nO2VnCBlbnRpdHkgbGFiZWxzIChkZWZhdWx0TG9jYWxlIOyghOyaqSlcbmNvbnN0IGVudGl0eUxhYmVscyA9IHtcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1wiOiBcIlJlcXVlc3RMb2dcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY3JlYXRlZF9hdFwiOiBcIuuTseuhneydvOyLnFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnRva2VuX25hbWVcIjogXCLthqDtgbAg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucHJvamVjdF9uYW1lXCI6IFwi7ZSE66Gc7KCd7Yq4IOydtOumhFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLm1vZGVsX25hbWVcIjogXCLrqqjrjbgg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucmVxdWVzdGVkX21vZGVsX25hbWVcIjogXCLsmpTssq0g66qo6424IOydtOumhCAoZmFsbGJhY2sg7KCEKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmZhbGxiYWNrX2NvdW50XCI6IFwi66qo6424IGZhbGxiYWNrIO2an+yImFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnVzZXJfcHJvbXB0XCI6IFwi7IKs7Jqp7J6QIO2UhOuhrO2UhO2KuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnN5c3RlbV9wcm9tcHRcIjogXCLsi5zsiqTthZwg7ZSE66Gs7ZSE7Yq4XCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucmVzcG9uc2VcIjogXCJsbG0g7J2R64u1IOyghOusuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmlucHV0X3Rva2Vuc1wiOiBcIuyeheugpSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5vdXRwdXRfdG9rZW5zXCI6IFwi7Lac66ClIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNhY2hlX3JlYWRfdG9rZW5zXCI6IFwi7LqQ7IucIOydveq4sCDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIjogXCLsupDsi5wg7IOd7ISxIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiOiBcIjXrtoQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCI6IFwiMeyLnOqwhCBUVEwg7LqQ7IucIOyDneyEsSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5kdXJhdGlvbl9tc1wiOiBcIuydkeuLtSDshozsmpTsi5zqsIQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cudHRmdF9tc1wiOiBcImZpcnN0IGdlbiBUVEZUKG1zKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNvc3RfdXNkXCI6IFwiQVBJIOu5hOyaqVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNvc3Rfc291cmNlXCI6IFwi67mE7JqpIOy2nOyymChwcm92aWRlci9wcmljaW5nX3RhYmxlL21peGVkKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmltYWdlX2Nvc3RfdXNkXCI6IFwi7J2066+47KeAIOyDneyEsSDstpTsoJUg67mE7JqpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuaW1hZ2VfY29zdF9tZXRob2RcIjogXCLsnbTrr7jsp4Ag67mE7JqpIOy2lOyglSDrsKnsi51cIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5lZmZvcnRcIjogXCJlZmZvcnQgbGV2ZWxcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5oaXN0b3J5XCI6IFwiaW5qZWN0X2l0ZW1zIO2eiOyKpO2GoOumrFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnN0YXR1c1wiOiBcIuyLpO2WiSDsg4Htg5xcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5lcnJvcl9tZXNzYWdlXCI6IFwi7JeQ65+sIOuplOyLnOyngFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnRvb2xfY2FsbF9jb3VudFwiOiBcInRvb2wgY2FsbCDtmp/siJhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5pc19pbWFnZV9nZW5lcmF0aW9uXCI6IFwi7J2066+47KeAIOyDneyEsSB0dXJuIOyXrOu2gCAocXVvdGEg6reA7IaN7JqpKVwiLFxuICBcImVudW0uUmVxdWVzdExvZ09yZGVyQnkuaWQtZGVzY1wiOiBcIklE7LWc7Iug7IicXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU2VhcmNoRmllbGQuaWRcIjogXCJJRFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1NlYXJjaEZpZWxkLnRva2VuX25hbWVcIjogXCLthqDtgbDsnbTrpoRcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTZWFyY2hGaWVsZC51c2VyX3Byb21wdFwiOiBcIuyCrOyaqeyekCDtlITroaztlITtirhcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGF0dXMucnVubmluZ1wiOiBcIuyLpO2WiSDspJFcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGF0dXMuc3VjY2VlZGVkXCI6IFwi7ISx6rO1XCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RhdHVzLmVycm9yXCI6IFwi7JeQ65+sXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RhdHVzLmFib3J0ZWRcIjogXCLspJHri6hcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXBcIjogXCJSZXF1ZXN0TG9nU3RlcFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNyZWF0ZWRfYXRcIjogXCLrk7HroZ3snbzsi5xcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAucmVxdWVzdF9sb2dcIjogXCLrtoDrqqggcmVxdWVzdCBsb2cgSURcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAuc3RlcF9pbmRleFwiOiBcImFpLXNkayBzdGVwIG51bWJlciAoMC1iYXNlZClcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudHlwZVwiOiBcInN0ZXAg7YOA7J6FXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLm1vZGVsX25hbWVcIjogXCLsi6TsoJwgc2VydmluZyDrqqjrjbhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAucmVxdWVzdGVkX21vZGVsX25hbWVcIjogXCLsmpTssq0g66qo6424IChmYWxsYmFjayDsoIQpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmZhbGxiYWNrX2NvdW50XCI6IFwi66qo6424IGZhbGxiYWNrIO2an+yImFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5pbnB1dF90b2tlbnNcIjogXCLsnoXroKUg7Yag7YGwIChnZW5lcmF0ZSlcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAub3V0cHV0X3Rva2Vuc1wiOiBcIuy2nOugpSDthqDtgbAgKGdlbmVyYXRlKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5jYWNoZV9yZWFkX3Rva2Vuc1wiOiBcIuy6kOyLnCDsnb3quLAg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNhY2hlX2NyZWF0aW9uX3Rva2Vuc1wiOiBcIuy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiOiBcIjXrtoQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2Vuc1wiOiBcIjHsi5zqsIQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNvc3RfdXNkXCI6IFwic3RlcCDruYTsmqkgKG1pY3JvLVVTRClcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAuY29zdF9zb3VyY2VcIjogXCLruYTsmqkg7Lac7LKYKHByb3ZpZGVyL3ByaWNpbmdfdGFibGUpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmR1cmF0aW9uX21zXCI6IFwi7IaM7JqU7Iuc6rCEKG1zKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC50dGZ0X21zXCI6IFwiR2VuIFRURlQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmZpbmlzaF9yZWFzb25cIjogXCLsmYTro4wg7IKs7JygXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnJlYXNvbmluZ190ZXh0XCI6IFwicmVhc29uaW5nIO2FjeyKpO2KuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5yZWFzb25pbmdfdG9rZW5zXCI6IFwicmVhc29uaW5nIO2GoO2BsCDsiJhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudG9vbF9jYWxsX2luZGV4XCI6IFwi6rCZ7J2AIHN0ZXAg64K0IHRvb2wgY2FsbCDsiJzshJxcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudG9vbF9jYWxsX2lkXCI6IFwidG9vbCBjYWxsIElEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfbmFtZVwiOiBcInRvb2wg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfYXJnc1wiOiBcInRvb2wg7J247J6QIChKU09OIHN0cmluZylcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudG9vbF9yZXN1bHRcIjogXCJ0b29sIOqysOqzvCAoSlNPTiBzdHJpbmcpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfZHVyYXRpb25fbXNcIjogXCJ0b29sIOyLpO2WiSDshozsmpTsi5zqsIQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmVycm9yXCI6IFwic3RlcCDsl5Drn6wg66mU7Iuc7KeAXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RlcFR5cGUuZ2VuZXJhdGVcIjogXCJMTE0g7IOd7ISxXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RlcFR5cGUudG9vbF9jYWxsXCI6IFwiVG9vbCDtmLjstpxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGVwT3JkZXJCeS5pZC1hc2NcIjogXCJJROyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1N0ZXBTZWFyY2hGaWVsZC5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlRva2VuXCI6IFwiVG9rZW5cIixcbiAgXCJlbnRpdHkuVG9rZW4uaWRcIjogXCJJRFwiLFxuICBcImVudGl0eS5Ub2tlbi5jcmVhdGVkX2F0XCI6IFwi65Ox66Gd7J287IucXCIsXG4gIFwiZW50aXR5LlRva2VuLnByb3ZpZGVyXCI6IFwi7ZSE66Gc67CU7J20642UXCIsXG4gIFwiZW50aXR5LlRva2VuLmNyZWRlbnRpYWxzXCI6IFwi7J247KadIOygleuztCAoSlNPTkIpXCIsXG4gIFwiZW50aXR5LlRva2VuLm5hbWVcIjogXCLthqDtgbAg7J2066aEXCIsXG4gIFwiZW50aXR5LlRva2VuLmFjdGl2ZVwiOiBcIu2ZnOyEsSDsl6zrtoBcIixcbiAgXCJlbnRpdHkuVG9rZW4ub3JkXCI6IFwi7KCV66CsIOyInOyEnFwiLFxuICBcImVudGl0eS5Ub2tlbi5xdW90YV90aHJlc2hvbGRcIjogXCJxdW90YSDsgqzsmqnrpaAg7J6E6rOE7LmYKCUpLiBudWxs7J2066m0IOuvuOyEpOyglVwiLFxuICBcImVudGl0eS5Ub2tlbi53ZWlnaHRcIjogXCLqsIDspJEg65287Jq065Oc66Gc67mIIOudvOyasO2MhSDqsIDspJHsuZggKDEuLjEwMClcIixcbiAgXCJlbnVtLlRva2VuT3JkZXJCeS5pZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIixcbiAgXCJlbnVtLlRva2VuT3JkZXJCeS5vcmQtYXNjXCI6IFwi7Iic7ISc7IicXCIsXG4gIFwiZW51bS5Ub2tlblNlYXJjaEZpZWxkLmlkXCI6IFwiSURcIixcbiAgXCJlbnVtLlRva2VuU2VhcmNoRmllbGQubmFtZVwiOiBcIuydtOumhFwiLFxufSBhcyBjb25zdDtcblxuLy8gZGVmYXVsdExvY2FsZeydmCBkaWN0aW9uYXJ566W8IOq4sOykgOycvOuhnCDtgqQg7LaU7LacXG50eXBlIFJDS2V5cyA9IHR5cGVvZiByY0tleXNLbztcbnR5cGUgUHJvamVjdERpY3Rpb25hcnkgPSB0eXBlb2Yga287XG50eXBlIEVudGl0eUxhYmVscyA9IHR5cGVvZiBlbnRpdHlMYWJlbHM7XG50eXBlIFJhd01lcmdlZERpY3Rpb25hcnkgPSBSQ0tleXMgJlxuICBPbWl0PEVudGl0eUxhYmVscywga2V5b2YgKFJDS2V5cyAmIFByb2plY3REaWN0aW9uYXJ5KT4gJlxuICBQcm9qZWN0RGljdGlvbmFyeTtcblxuLy8g7YKk64qUIOycoOyngO2VmOuQmCwg6rCSIO2DgOyeheydgCBzdHJpbmcg65iQ64qUIO2VqOyImOuhnCDsnbzrsJjtmZQgKOuLpOuluCBsb2NhbGXsnZgg66as7YSw65+0IO2DgOyehSDstqnrj4wg67Cp7KeAKVxuZXhwb3J0IHR5cGUgTWVyZ2VkRGljdGlvbmFyeSA9IHtcbiAgW0sgaW4ga2V5b2YgUmF3TWVyZ2VkRGljdGlvbmFyeV06IFJhd01lcmdlZERpY3Rpb25hcnlbS10gZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgUCkgPT4gc3RyaW5nXG4gICAgPyAoLi4uYXJnczogUCkgPT4gc3RyaW5nXG4gICAgOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRGljdEtleSA9IGtleW9mIE1lcmdlZERpY3Rpb25hcnk7XG5leHBvcnQgdHlwZSBMb2NhbGl6ZWRTdHJpbmcgPSBzdHJpbmcgJiB7IF9fYnJhbmQ6IFwiTG9jYWxpemVkU3RyaW5nXCIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUxvY2FsZShkaWN0OiBQYXJ0aWFsPE1lcmdlZERpY3Rpb25hcnk+KSB7XG4gIHJldHVybiBkaWN0O1xufVxuXG4vLyDqsIEgbG9jYWxl67OE66GcIHJjLWtleXMgKyBlbnRpdHkgbGFiZWxzICsg7ZSE66Gc7KCd7Yq4IGRpY3Qg7ZWp7LmoXG5jb25zdCBkaWN0aW9uYXJpZXM6IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8TWVyZ2VkRGljdGlvbmFyeT4+ID0ge1xuICBrbzogeyAuLi5yY0tleXNLbywgLi4uZW50aXR5TGFiZWxzLCAuLi5rbyB9LFxuICBlbjogeyAuLi5yY0tleXNFbiwgLi4uZW4gfSxcbn07XG5cbnR5cGUgU0RSZXR1cm5UeXBlPEsgZXh0ZW5kcyBEaWN0S2V5PiA9IE1lcmdlZERpY3Rpb25hcnlbS10gZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgUCkgPT4gc3RyaW5nXG4gID8gKC4uLmFyZ3M6IFApID0+IExvY2FsaXplZFN0cmluZ1xuICA6IExvY2FsaXplZFN0cmluZztcblxuZnVuY3Rpb24gZ2V0RGljdFZhbHVlPEsgZXh0ZW5kcyBEaWN0S2V5PihrZXk6IEssIGxvY2FsZTogc3RyaW5nKTogU0RSZXR1cm5UeXBlPEs+IHtcbiAgLy8gMS4g7KeA7KCV65CcIGxvY2FsZeyXkOyEnCDsobDtmoxcbiAgY29uc3QgZGljdCA9IGRpY3Rpb25hcmllc1tsb2NhbGVdO1xuICBpZiAoZGljdD8uW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBkaWN0W2tleV0gYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG4gIH1cblxuICAvLyAyLiBkZWZhdWx0IGxvY2FsZeyXkOyEnCDsobDtmoxcbiAgaWYgKGxvY2FsZSAhPT0gREVGQVVMVF9MT0NBTEUgJiYgZGljdGlvbmFyaWVzW0RFRkFVTFRfTE9DQUxFXT8uW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBkaWN0aW9uYXJpZXNbREVGQVVMVF9MT0NBTEVdW2tleV0gYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG4gIH1cblxuICAvLyAzLiBzdXBwb3J0ZWQgbG9jYWxlcyDsiJztmoxcbiAgZm9yIChjb25zdCBzdXBwb3J0ZWRMb2NhbGUgb2YgU1VQUE9SVEVEX0xPQ0FMRVMpIHtcbiAgICBpZiAoc3VwcG9ydGVkTG9jYWxlICE9PSBsb2NhbGUgJiYgc3VwcG9ydGVkTG9jYWxlICE9PSBERUZBVUxUX0xPQ0FMRSkge1xuICAgICAgaWYgKGRpY3Rpb25hcmllc1tzdXBwb3J0ZWRMb2NhbGVdPy5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkaWN0aW9uYXJpZXNbc3VwcG9ydGVkTG9jYWxlXVtrZXldIGFzIHVua25vd24gYXMgU0RSZXR1cm5UeXBlPEs+O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIDQuIOuqqOuRkCDsi6TtjKgg7IucIGtleSDrsJjtmZhcbiAgcmV0dXJuIGtleSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbn1cblxuLyoqXG4gKiBTb25hbXUgRGljdGlvbmFyeSDtlajsiJhcbiAqIGxvY2FsZeyXkCDrp57ripQg67KI7JetIO2FjeyKpO2KuOulvCDrsJjtmZjtlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIFNEKFwiY29tbW9uLnNhdmVcIikgIC8vIOKGkiBcIuyggOyepVwiIChMb2NhbGl6ZWRTdHJpbmcpXG4gKiBTRChcInVzZXIubm90Rm91bmRcIikoMSkgIC8vIOKGkiBcIuyhtOyerO2VmOyngCDslYrripQgVXNlciBJRCAxXCIgKExvY2FsaXplZFN0cmluZylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNEPEsgZXh0ZW5kcyBEaWN0S2V5PihrZXk6IEspOiBTRFJldHVyblR5cGU8Sz4ge1xuICBjb25zdCBsb2NhbGUgPSBnZXRDdXJyZW50TG9jYWxlKCk7XG4gIHJldHVybiBnZXREaWN0VmFsdWUoa2V5LCBsb2NhbGUpO1xufVxuXG4vKipcbiAqIO2KueyglSBsb2NhbGXsnZgg67KI7JetIO2FjeyKpO2KuOulvCDrsJjtmZjtlZjripQg7ZWo7IiY66W8IOyDneyEse2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgRU4gPSBTRC5sb2NhbGUoXCJlblwiKTtcbiAqIEVOKFwiY29tbW9uLnNhdmVcIikgIC8vIOKGkiBcIlNhdmVcIlxuICovXG5TRC5sb2NhbGUgPVxuICAobG9jYWxlOiAodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdKSA9PlxuICA8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSyk6IFNEUmV0dXJuVHlwZTxLPiA9PiB7XG4gICAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG4gIH07XG5cbi8vIExvY2FsaXplZCDqsIDriqXtlZwgQ29sdW1uIO2DgOyehSDqs4TsgrBcbnR5cGUgTG9jYWxpemVkQmFzZUNvbHVtbjxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVCAmIHN0cmluZ106IEsgZXh0ZW5kcyBgJHtpbmZlciBCYXNlfV8keyh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl19YFxuICAgID8gQmFzZVxuICAgIDogSztcbn1ba2V5b2YgVCAmIHN0cmluZ107XG5cbi8qKlxuICogbG9jYWxl7JeQIOuUsOudvCDsoIHsoIjtlZwg7Lus65+8IOqwkuydhCDrsJjtmZjtlanri4jri6QuXG4gKiBEQuyXkCBuYW1lLCBuYW1lX2tvLCBuYW1lX2Vu7LKY65+8IGxvY2FsaXplZCBjb2x1bW7snbQg7J6I7J2EIOuVjCDsgqzsmqntlanri4jri6QuXG4gKlxuICog7Jqw7ISg7Iic7JyEICjsp4Dsm5Ag66Gc7LyA7J287J2AIGtvL2pwL2Vu7J206rOgLCDshJzruYTsiqTsnZgg6riw67O4IOuhnOy8gOydvOydgCBrbywg7IKs7Jqp7J6Q7J2YIOuhnOy8gOydvOydgCBqcOydvCDrlYwpOiBjb2x1bW5fanAg4oaSIGNvbHVtbiDihpIgY29sdW1uX2tvIOKGkiBjb2x1bW5fZW5cbiAqIOyasOyEoOyInOychCAo7KeA7JuQIOuhnOy8gOydvOydgCBrby9qcC9lbuydtOqzoCwg7ISc67mE7Iqk7J2YIOq4sOuzuCDroZzsvIDsnbzsnYAgZW4sIOyCrOyaqeyekOydmCDroZzsvIDsnbzsnYAga2/snbwg65WMKTogY29sdW1uX2tvIOKGkiBjb2x1bW4g4oaSIGNvbHVtbl9lbiDihpIgY29sdW1uX2pwXG4gKlxuICogQGV4YW1wbGVcbiAqIGxvY2FsaXplZENvbHVtbih0YWcsIFwibmFtZVwiKVxuICovXG50eXBlIExvY2FsaXplZENvbHVtblNjYWxhclZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IGJpZ2ludDtcbnR5cGUgTG9jYWxpemVkQ29sdW1uVmFsdWUgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbnR5cGUgTmVzdGVkTG9jYWxpemVkQ29sdW1uVmFsdWVGcm9tPFY+ID0gViBleHRlbmRzIHN0cmluZ1xuICA/IHN0cmluZ1xuICA6IFYgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXVxuICAgID8gc3RyaW5nW11cbiAgICA6IG5ldmVyO1xudHlwZSBMb2NhbGl6ZWRDb2x1bW5WYWx1ZUZyb208Vj4gPSBWIGV4dGVuZHMgc3RyaW5nXG4gID8gc3RyaW5nXG4gIDogViBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdXG4gICAgPyBzdHJpbmdbXVxuICAgIDogViBleHRlbmRzIG51bWJlciB8IGJvb2xlYW4gfCBiaWdpbnRcbiAgICAgID8gc3RyaW5nXG4gICAgICA6IFYgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDwodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdLCBpbmZlciBMVj4+XG4gICAgICAgID8gTmVzdGVkTG9jYWxpemVkQ29sdW1uVmFsdWVGcm9tPExWPlxuICAgICAgICA6IG5ldmVyO1xudHlwZSBMb2NhbGl6ZWRDb2x1bW5DYW5kaWRhdGU8VCwgSyBleHRlbmRzIHN0cmluZz4gPVxuICB8IChLIGV4dGVuZHMga2V5b2YgVCA/IFRbS10gOiBuZXZlcilcbiAgfCB7XG4gICAgICBbTCBpbiAodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdXTogYCR7S31fJHtMfWAgZXh0ZW5kcyBrZXlvZiBUXG4gICAgICAgID8gVFtgJHtLfV8ke0x9YF1cbiAgICAgICAgOiBuZXZlcjtcbiAgICB9Wyh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl1dO1xudHlwZSBMb2NhbGl6ZWRDb2x1bW5SZXR1cm48VCwgSyBleHRlbmRzIHN0cmluZz4gPVxuICB8IExvY2FsaXplZENvbHVtblZhbHVlRnJvbTxMb2NhbGl6ZWRDb2x1bW5DYW5kaWRhdGU8VCwgSz4+XG4gIHwgdW5kZWZpbmVkO1xudHlwZSBMb2NhbGVWYWx1ZU1hcCA9IFBhcnRpYWw8UmVjb3JkPCh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0sIHVua25vd24+PjtcblxuZnVuY3Rpb24gaXNMb2NhbGl6ZWRDb2x1bW5WYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIExvY2FsaXplZENvbHVtblZhbHVlIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHxcbiAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkoKGl0ZW0pID0+IHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNMb2NhbGl6ZWRDb2x1bW5TY2FsYXJWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIExvY2FsaXplZENvbHVtblNjYWxhclZhbHVlIHtcbiAgcmV0dXJuIFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcImJvb2xlYW5cIiwgXCJiaWdpbnRcIl0uaW5jbHVkZXModHlwZW9mIHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNFbXB0eUxvY2FsaXplZENvbHVtblZhbHVlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVsbCB8IHVuZGVmaW5lZCB8IFwiXCIge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gXCJcIjtcbn1cblxuZnVuY3Rpb24gZ2V0TmVzdGVkTG9jYWxlVmFsdWU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBLIGV4dGVuZHMgTG9jYWxpemVkQmFzZUNvbHVtbjxUPj4oXG4gIHJvdzogVCxcbiAgY29sdW1uOiBLLFxuICBsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0sXG4pOiB1bmtub3duIHtcbiAgY29uc3QgY29sdW1uVmFsdWUgPSByb3dbY29sdW1uXTtcbiAgaWYgKGNvbHVtblZhbHVlID09PSBudWxsIHx8IHR5cGVvZiBjb2x1bW5WYWx1ZSAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGNvbHVtblZhbHVlKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gKGNvbHVtblZhbHVlIGFzIExvY2FsZVZhbHVlTWFwKVtsb2NhbGVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxpemVkQ29sdW1uPFxuICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIEsgZXh0ZW5kcyBMb2NhbGl6ZWRCYXNlQ29sdW1uPFQ+LFxuPihyb3c6IFQsIGNvbHVtbjogSyk6IExvY2FsaXplZENvbHVtblJldHVybjxULCBLPiB7XG4gIGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBnZXRDdXJyZW50TG9jYWxlKCk7XG4gIGNvbnN0IGxvY2FsZSA9IFNVUFBPUlRFRF9MT0NBTEVTLmluY2x1ZGVzKGN1cnJlbnRMb2NhbGUpID8gY3VycmVudExvY2FsZSA6IERFRkFVTFRfTE9DQUxFO1xuICBjb25zdCBvdGhlckxvY2FsZXMgPSBTVVBQT1JURURfTE9DQUxFUy5maWx0ZXIoXG4gICAgKGw6IHN0cmluZykgPT4gbCAhPT0gbG9jYWxlICYmIGwgIT09IERFRkFVTFRfTE9DQUxFLFxuICApO1xuICBjb25zdCBsb2NhbGl6ZWRLZXkgPSAoY29sdW1uOiBLLCBsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+XG4gICAgYCR7Y29sdW1ufV8ke2xvY2FsZX1gO1xuICBjb25zdCB2YWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogcm93W2xvY2FsaXplZEtleShjb2x1bW4sIGxvY2FsZSldLCBzb3VyY2U6IFwiZGlyZWN0XCIgfSxcbiAgICB7IHZhbHVlOiBnZXROZXN0ZWRMb2NhbGVWYWx1ZShyb3csIGNvbHVtbiwgbG9jYWxlKSwgc291cmNlOiBcIm5lc3RlZFwiIH0sXG4gICAgeyB2YWx1ZTogcm93W2NvbHVtbl0sIHNvdXJjZTogXCJkaXJlY3RcIiB9LFxuICAgIHsgdmFsdWU6IHJvd1tsb2NhbGl6ZWRLZXkoY29sdW1uLCBERUZBVUxUX0xPQ0FMRSldLCBzb3VyY2U6IFwiZGlyZWN0XCIgfSxcbiAgICB7IHZhbHVlOiBnZXROZXN0ZWRMb2NhbGVWYWx1ZShyb3csIGNvbHVtbiwgREVGQVVMVF9MT0NBTEUpLCBzb3VyY2U6IFwibmVzdGVkXCIgfSxcbiAgICAuLi5vdGhlckxvY2FsZXMuZmxhdE1hcCgobCkgPT4gW1xuICAgICAgeyB2YWx1ZTogcm93W2xvY2FsaXplZEtleShjb2x1bW4sIGwpXSwgc291cmNlOiBcImRpcmVjdFwiIH0sXG4gICAgICB7IHZhbHVlOiBnZXROZXN0ZWRMb2NhbGVWYWx1ZShyb3csIGNvbHVtbiwgbCksIHNvdXJjZTogXCJuZXN0ZWRcIiB9LFxuICAgIF0pLFxuICBdO1xuXG4gIGZvciAoY29uc3QgeyB2YWx1ZSwgc291cmNlIH0gb2YgdmFsdWVzKSB7XG4gICAgaWYgKCFpc0VtcHR5TG9jYWxpemVkQ29sdW1uVmFsdWUodmFsdWUpICYmIGlzTG9jYWxpemVkQ29sdW1uVmFsdWUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgTG9jYWxpemVkQ29sdW1uUmV0dXJuPFQsIEs+O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBzb3VyY2UgPT09IFwiZGlyZWN0XCIgJiZcbiAgICAgICFpc0VtcHR5TG9jYWxpemVkQ29sdW1uVmFsdWUodmFsdWUpICYmXG4gICAgICBpc0xvY2FsaXplZENvbHVtblNjYWxhclZhbHVlKHZhbHVlKVxuICAgICkge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSkgYXMgTG9jYWxpemVkQ29sdW1uUmV0dXJuPFQsIEs+O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRW51beydmCBsb2NhbGl6ZWQgbGFiZWxz66W8IFByb3h566GcIOuwmO2ZmO2VqeuLiOuLpC5cbiAqIFNlbGVjdCDsu7Ttj6zrhIztirgg65Ox7JeQ7IScIEVudW1MYWJlbFtrZXldIOuMgOyLoCDsgqzsmqntlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIFNELmVudW1MYWJlbHMoXCJUYWdPcmRlckJ5XCIpW2tleV0gIC8vIOKGkiDtmITsnqwgbG9jYWxl7J2YIOudvOuyqFxuICovXG5TRC5lbnVtTGFiZWxzID0gKGVudW1OYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBMb2NhbGl6ZWRTdHJpbmc+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm94eSh7fSBhcyBSZWNvcmQ8c3RyaW5nLCBMb2NhbGl6ZWRTdHJpbmc+LCB7XG4gICAgZ2V0KF8sIGtleTogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gXCJzeW1ib2xcIikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkaWN0S2V5ID0gYGVudW0uJHtlbnVtTmFtZX0uJHtrZXl9YCBhcyBEaWN0S2V5O1xuICAgICAgcmV0dXJuIGdldERpY3RWYWx1ZShkaWN0S2V5LCBnZXRDdXJyZW50TG9jYWxlKCkpO1xuICAgIH0sXG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFPQSxNQUFNLGlCQUFpQjtBQUN2QixNQUFNLG9CQUFvQixDQUFDLE1BQU0sSUFBSTtBQUNyQyxTQUFTLG1CQUF1RDtDQUM5RCxJQUFJO0VBRUYsT0FEWSxPQUFPLFdBQ1gsQ0FBQSxDQUFJLFVBQWlEO0NBQy9ELFFBQVE7RUFDTixPQUFPO0NBQ1Q7QUFDRjtBQU1BLE1BQU0sV0FBVztDQUVmLDBCQUEwQjtDQUMxQiw0QkFBNEI7Q0FDNUIsNEJBQTRCO0NBQzVCLG9DQUFvQztDQUdwQyx5QkFBeUI7Q0FDekIsaUNBQWlDO0NBR2pDLDBCQUEwQjtDQUMxQiw2QkFBNkI7Q0FDN0IsNEJBQTRCO0NBRzVCLG1DQUFtQztDQUNuQyxxQ0FBcUM7Q0FDckMsdUNBQXVDO0NBQ3ZDLHNDQUFzQztDQUd0Qyw0QkFBNEI7Q0FDNUIseUJBQXlCO0NBQ3pCLGdDQUFnQztDQUNoQyxpQ0FBaUM7Q0FDakMsa0NBQWtDLGFBQ2hDLE1BQU0sU0FBUztDQUNqQix3QkFBd0I7Q0FDeEIsdUJBQXVCO0NBQ3ZCLDZCQUE2QjtDQUM3QiwwQkFBMEI7Q0FHMUIsbUNBQW1DO0NBQ25DLG9DQUFvQztDQUNwQyxrQ0FBa0M7Q0FDbEMsc0NBQXNDO0NBQ3RDLHFDQUFxQztDQUNyQyxvQ0FBb0M7Q0FHcEMsd0JBQXdCO0NBQ3hCLHdCQUF3QjtDQUN4Qiw2QkFB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
|
|
363
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QuZ2VuZXJhdGVkLmpzIiwibmFtZXMiOlsia28iLCJlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pMThuL3NkLmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCJzb25hbXVcIjtcblxuY29uc3QgREVGQVVMVF9MT0NBTEUgPSBcImtvXCIgYXMgY29uc3Q7XG5jb25zdCBTVVBQT1JURURfTE9DQUxFUyA9IFtcImtvXCIsIFwiZW5cIl0gYXMgY29uc3Q7XG5mdW5jdGlvbiBnZXRDdXJyZW50TG9jYWxlKCk6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0ge1xuICB0cnkge1xuICAgIGNvbnN0IGN0eCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgcmV0dXJuIChjdHgubG9jYWxlIGFzICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID8/IERFRkFVTFRfTE9DQUxFO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gREVGQVVMVF9MT0NBTEU7XG4gIH1cbn1cblxuaW1wb3J0IGVuIGZyb20gXCIuL2VuXCI7XG5pbXBvcnQga28gZnJvbSBcIi4va29cIjtcblxuLy8gcmVhY3QtY29tcG9uZW50cyBpMThuIGtleXNcbmNvbnN0IHJjS2V5c0tvID0ge1xuICAvLyBBc3luY1NlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5hc3luY1NlbGVjdC5sb2FkaW5nXCI6IFwi66Gc65SpIOykkS4uLlwiLFxuICBcInJjLmFzeW5jU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIuyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub1Jlc3VsdHNcIjogXCLqsoDsg4kg6rKw6rO86rCAIOyXhuyKteuLiOuLpFwiLFxuICBcInJjLmFzeW5jU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwi7ISg7YOd7ZWY7IS47JqULi4uXCIsXG5cbiAgLy8gQ29tYm9ib3ggQ29tcG9uZW50XG4gIFwicmMuY29tYm9ib3gubm9SZXN1bHRzXCI6IFwi6rKA7IOJIOqysOqzvOqwgCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5jb21ib2JveC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIuyEoO2Dne2VmOyEuOyalC4uLlwiLFxuXG4gIC8vIERhdGVQaWNrZXIgQ29tcG9uZW50XG4gIFwicmMuZGF0ZVBpY2tlci5waWNrRGF0ZVwiOiBcIuuCoOynnCDshKDtg51cIixcbiAgXCJyYy5kYXRlUGlja2VyLnBsYWNlaG9sZGVyXCI6IFwi64Kg7KecIOyEoO2DnVwiLFxuICBcInJjLmRhdGVQaWNrZXIuc2VsZWN0RGF0ZVwiOiBcIuuCoOynnCDshKDtg51cIixcblxuICAvLyBEYXRlU2VsZWN0b3JNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5hZGREYXRlXCI6IFwi64Kg7KecIOy2lOqwgFwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIuq4sOqwhFwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwi64Kg7KecIOyEoO2DnVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCLri6jsnbxcIixcblxuICAvLyBGaWxlSW5wdXQgQ29tcG9uZW50XG4gIFwicmMuZmlsZUlucHV0LmJyb3dzZUZpbGVzXCI6IFwi7YyM7J28IOywvuq4sFwiLFxuICBcInJjLmZpbGVJbnB1dC5kcm9wWm9uZVwiOiBcIu2MjOydvOydhCDrk5zrnpjqt7jtlZjqsbDrgpgg7YG066at7ZWY7JesIOyXheuhnOuTnFwiLFxuICBcInJjLmZpbGVJbnB1dC5maWxlUGxhY2Vob2xkZXJcIjogXCLtjIzsnbxcIixcbiAgXCJyYy5maWxlSW5wdXQuaW1hZ2VQbGFjZWhvbGRlclwiOiBcIuydtOuvuOyngFwiLFxuICBcInJjLmZpbGVJbnB1dC5tYXhGaWxlc0V4Y2VlZGVkXCI6IChtYXhGaWxlczogbnVtYmVyKSA9PlxuICAgIGDstZzrjIAgJHttYXhGaWxlc33qsJwg7YyM7J2866eMIOyXheuhnOuTnCDqsIDriqXtlanri4jri6RgLFxuICBcInJjLmZpbGVJbnB1dC5wZW5kaW5nXCI6IFwi64yA6riwIOykkVwiLFxuICBcInJjLmZpbGVJbnB1dC5yZW1vdmVcIjogXCLsoJzqsbBcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkRmFpbGVkXCI6IFwi7JeF66Gc65OcIOyLpO2MqFwiLFxuICBcInJjLmZpbGVJbnB1dC51cGxvYWRpbmdcIjogXCLsl4XroZzrk5wg7KSRLi4uXCIsXG5cbiAgLy8gTW9udGhQaWNrZXJNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmFkZE1vbnRoXCI6IFwi7JuUIOy2lOqwgFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuZGF0ZVJhbmdlXCI6IFwi6riw6rCEXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5lbmREYXRlXCI6IFwi7KKF66OM7J28XCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIuyblCDshKDtg51cIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCLri6jsnbxcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnN0YXJ0RGF0ZVwiOiBcIuyLnOyekeydvFwiLFxuXG4gIC8vIE11bHRpU2VsZWN0IENvbXBvbmVudFxuICBcInJjLm11bHRpU2VsZWN0LmNsZWFyXCI6IFwi7KCE7LK0IO2VtOygnFwiLFxuICBcInJjLm11bHRpU2VsZWN0LmNsb3NlXCI6IFwi64ur6riwXCIsXG4gIFwicmMubXVsdGlTZWxlY3QubW9yZUl0ZW1zXCI6IChjb3VudDogbnVtYmVyKSA9PiBgKyR7Y291bnR96rCcIOuNlOuztOq4sGAsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zXCI6IFwi7Ji17IWY7J20IOyXhuyKteuLiOuLpFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vT3B0aW9uc1NlbGVjdGVkXCI6IFwi7ISg7YOd65CcIOyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub1Jlc3VsdHNcIjogXCLqsoDsg4kg6rKw6rO86rCAIOyXhuyKteuLiOuLpFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm9wdGlvbnNDb3VudFwiOiAoY291bnQ6IG51bWJlcikgPT4gYCR7Y291bnR96rCcIOyYteyFmGAsXG4gIFwicmMubXVsdGlTZWxlY3Quc2VsZWN0QWxsXCI6IFwi7KCE7LK0IOyEoO2DnVwiLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwi7ISg7YOd7ZWY7IS47JqULi4uXCIsXG5cbiAgLy8gUGFnaW5hdGlvbiBDb21wb25lbnRcbiAgXCJyYy5wYWdpbmF0aW9uLm5leHRcIjogXCLri6TsnYxcIixcbiAgXCJyYy5wYWdpbmF0aW9uLnByZXZpb3VzXCI6IFwi7J207KCEXCIsXG4gIFwicmMucGFnaW5hdGlvbi5zaG93aW5nXCI6IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdG90YWw6IG51bWJlcikgPT5cbiAgICBgJHt0b3RhbH3qsJwg7KSRICR7c3RhcnR9LSR7ZW5kfWAsXG5cbiAgLy8gQ2FsZW5kYXIgQ29tcG9uZW50XG4gIFwicmMuY2FsZW5kYXIubW9udGguMFwiOiBcIjHsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xXCI6IFwiMuyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjJcIjogXCIz7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguM1wiOiBcIjTsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC40XCI6IFwiNeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjVcIjogXCI27JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguNlwiOiBcIjfsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC43XCI6IFwiOOyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjhcIjogXCI57JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguOVwiOiBcIjEw7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguMTBcIjogXCIxMeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjExXCI6IFwiMTLsm5RcIixcblxuICAvLyBTb25hbXUgRmlsdGVyIENvbXBvbmVudFxuICBcInJjLnNvbmFtdUZpbHRlci50aXRsZVwiOiBcIuyGjOuCmOustCDtlYTthLBcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbHlcIjogXCLsoIHsmqlcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIucmVzZXRcIjogXCLstIjquLDtmZRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYWRkUnVsZVwiOiBcIuq3nOy5mSDstpTqsIBcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm9SdWxlc1lldFwiOiAn7JWE7KeBIOq3nOy5meydtCDsl4bsirXri4jri6QuIFwiKyDqt5zsuZkg7LaU6rCAXCLrpbwg7YG066at7ZWY7JesIOyLnOyeke2VmOyEuOyalC4nLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RGaWVsZFwiOiBcIu2VhOuTnCDshKDtg51cIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0T3BlcmF0b3JcIjogXCLsl7DsgrDsnpAg7ISg7YOdXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yRmlyc3RcIjogXCLrqLzsoIAg7Jew7IKw7J6Q66W8IOyEoO2Dne2VmOyEuOyalFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlclZhbHVlXCI6IFwi6rCSIOyeheugpVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlck51bWJlclwiOiBcIuyIq+yekCDsnoXroKVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm90U3VwcG9ydGVkXCI6IFwi7KeA7JuQ7ZWY7KeAIOyViuydjFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zdGFydERhdGVcIjogXCLsi5zsnpHsnbxcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW5kRGF0ZVwiOiBcIuyiheujjOydvFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hcHBsaWVkRmlsdGVyc1wiOiBcIvCfjLIg7KCB7Jqp65CcIOyGjOuCmOustCDtlYTthLBcIixcblxuICAvLyBDb21tb25cbiAgXCJyYy5jb21tb24uY2FuY2VsXCI6IFwi7Leo7IaMXCIsXG4gIFwicmMuY29tbW9uLnNhdmVcIjogXCLsoIDsnqVcIixcbn07XG5cbmNvbnN0IHJjS2V5c0VuID0ge1xuICAvLyBBc3luY1NlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5hc3luY1NlbGVjdC5sb2FkaW5nXCI6IFwiTG9hZGluZy4uLlwiLFxuICBcInJjLmFzeW5jU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIk5vIG9wdGlvbnNcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub1Jlc3VsdHNcIjogXCJObyByZXN1bHRzXCIsXG4gIFwicmMuYXN5bmNTZWxlY3Quc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBDb21ib2JveCBDb21wb25lbnRcbiAgXCJyYy5jb21ib2JveC5ub1Jlc3VsdHNcIjogXCJObyByZXN1bHRzXCIsXG4gIFwicmMuY29tYm9ib3guc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBEYXRlUGlja2VyIENvbXBvbmVudFxuICBcInJjLmRhdGVQaWNrZXIucGlja0RhdGVcIjogXCJQaWNrIGRhdGVcIixcbiAgXCJyYy5kYXRlUGlja2VyLnBsYWNlaG9sZGVyXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVBpY2tlci5zZWxlY3REYXRlXCI6IFwiU2VsZWN0IGRhdGVcIixcblxuICAvLyBEYXRlU2VsZWN0b3JNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5hZGREYXRlXCI6IFwiQWRkIGRhdGVcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5kYXRlUmFuZ2VcIjogXCJSYW5nZVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuc2luZ2xlRGF0ZVwiOiBcIlNpbmdsZVwiLFxuXG4gIC8vIEZpbGVJbnB1dCBDb21wb25lbnRcbiAgXCJyYy5maWxlSW5wdXQuYnJvd3NlRmlsZXNcIjogXCJCcm93c2UgZmlsZXNcIixcbiAgXCJyYy5maWxlSW5wdXQuZHJvcFpvbmVcIjogXCJEcmFnIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gdXBsb2FkXCIsXG4gIFwicmMuZmlsZUlucHV0LmZpbGVQbGFjZWhvbGRlclwiOiBcIkZpbGVcIixcbiAgXCJyYy5maWxlSW5wdXQuaW1hZ2VQbGFjZWhvbGRlclwiOiBcIkltYWdlXCIsXG4gIFwicmMuZmlsZUlucHV0Lm1heEZpbGVzRXhjZWVkZWRcIjogKG1heEZpbGVzOiBudW1iZXIpID0+IGBNYXhpbXVtICR7bWF4RmlsZXN9IGZpbGVzIGFsbG93ZWRgLFxuICBcInJjLmZpbGVJbnB1dC5wZW5kaW5nXCI6IFwiUGVuZGluZ1wiLFxuICBcInJjLmZpbGVJbnB1dC5yZW1vdmVcIjogXCJSZW1vdmVcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkRmFpbGVkXCI6IFwiVXBsb2FkIGZhaWxlZFwiLFxuICBcInJjLmZpbGVJbnB1dC51cGxvYWRpbmdcIjogXCJVcGxvYWRpbmcuLi5cIixcblxuICAvLyBNb250aFBpY2tlck11bHRpcGxlIENvbXBvbmVudFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuYWRkTW9udGhcIjogXCJBZGQgbW9udGhcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIlJhbmdlXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5lbmREYXRlXCI6IFwiRW5kIGRhdGVcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnBsYWNlaG9sZGVyXCI6IFwiUGljayBtb250aFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuc2luZ2xlRGF0ZVwiOiBcIlNpbmdsZVwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuc3RhcnREYXRlXCI6IFwiU3RhcnQgZGF0ZVwiLFxuXG4gIC8vIE11bHRpU2VsZWN0IENvbXBvbmVudFxuICBcInJjLm11bHRpU2VsZWN0LmNsZWFyXCI6IFwiQ2xlYXIgYWxsXCIsXG4gIFwicmMubXVsdGlTZWxlY3QuY2xvc2VcIjogXCJDbG9zZVwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm1vcmVJdGVtc1wiOiAoY291bnQ6IG51bWJlcikgPT4gYCske2NvdW50fSBtb3JlYCxcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub09wdGlvbnNcIjogXCJObyBvcHRpb25zXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zU2VsZWN0ZWRcIjogXCJObyBvcHRpb25zIHNlbGVjdGVkXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9SZXN1bHRzXCI6IFwiTm8gcmVzdWx0c1wiLFxuICBcInJjLm11bHRpU2VsZWN0Lm9wdGlvbnNDb3VudFwiOiAoY291bnQ6IG51bWJlcikgPT4gYCR7Y291bnR9IG9wdGlvbnNgLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdEFsbFwiOiBcIlNlbGVjdCBhbGxcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIlNlbGVjdC4uLlwiLFxuXG4gIC8vIFBhZ2luYXRpb24gQ29tcG9uZW50XG4gIFwicmMucGFnaW5hdGlvbi5uZXh0XCI6IFwiTmV4dFwiLFxuICBcInJjLnBhZ2luYXRpb24ucHJldmlvdXNcIjogXCJQcmV2aW91c1wiLFxuICBcInJjLnBhZ2luYXRpb24uc2hvd2luZ1wiOiAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRvdGFsOiBudW1iZXIpID0+XG4gICAgYFNob3dpbmcgJHtzdGFydH0tJHtlbmR9IG9mICR7dG90YWx9YCxcblxuICAvLyBDYWxlbmRhciBDb21wb25lbnRcbiAgXCJyYy5jYWxlbmRhci5tb250aC4wXCI6IFwiSmFudWFyeVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjFcIjogXCJGZWJydWFyeVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjJcIjogXCJNYXJjaFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjNcIjogXCJBcHJpbFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjRcIjogXCJNYXlcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC41XCI6IFwiSnVuZVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjZcIjogXCJKdWx5XCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguN1wiOiBcIkF1Z3VzdFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjhcIjogXCJTZXB0ZW1iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC45XCI6IFwiT2N0b2JlclwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjEwXCI6IFwiTm92ZW1iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xMVwiOiBcIkRlY2VtYmVyXCIsXG5cbiAgLy8gU29uYW11IEZpbHRlciBDb21wb25lbnRcbiAgXCJyYy5zb25hbXVGaWx0ZXIudGl0bGVcIjogXCJTb25hbXUgRmlsdGVyXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFwcGx5XCI6IFwiQXBwbHlcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIucmVzZXRcIjogXCJSZXNldFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hZGRSdWxlXCI6IFwiQWRkIFJ1bGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIubm9SdWxlc1lldFwiOiAnTm8gcnVsZXMgeWV0LiBDbGljayBcIisgQWRkIFJ1bGVcIiB0byBzdGFydC4nLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RGaWVsZFwiOiBcIlNlbGVjdCBmaWVsZFwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RPcGVyYXRvclwiOiBcIk9wZXJhdG9yXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yRmlyc3RcIjogXCJTZWxlY3Qgb3BlcmF0b3IgZmlyc3RcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW50ZXJWYWx1ZVwiOiBcIkVudGVyIHZhbHVlXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmVudGVyTnVtYmVyXCI6IFwiRW50ZXIgbnVtYmVyXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vdFN1cHBvcnRlZFwiOiBcIk5vdCBzdXBwb3J0ZWRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc3RhcnREYXRlXCI6IFwiU3RhcnQgZGF0ZVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbmREYXRlXCI6IFwiRW5kIGRhdGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbGllZEZpbHRlcnNcIjogXCLwn4yyIEFwcGxpZWQgU29uYW11RmlsdGVyc1wiLFxuXG4gIC8vIENvbW1vblxuICBcInJjLmNvbW1vbi5jYW5jZWxcIjogXCJDYW5jZWxcIixcbiAgXCJyYy5jb21tb24uc2F2ZVwiOiBcIlNhdmVcIixcbn0gYXMgY29uc3Q7XG5cbi8vIGVudGl0eS5qc29u7JeQ7IScIOy2lOy2nO2VnCBlbnRpdHkgbGFiZWxzIChkZWZhdWx0TG9jYWxlIOyghOyaqSlcbmNvbnN0IGVudGl0eUxhYmVscyA9IHtcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1wiOiBcIlJlcXVlc3RMb2dcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5pZFwiOiBcIklEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY3JlYXRlZF9hdFwiOiBcIuuTseuhneydvOyLnFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnRva2VuX25hbWVcIjogXCLthqDtgbAg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucHJvamVjdF9uYW1lXCI6IFwi7ZSE66Gc7KCd7Yq4IOydtOumhFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLm1vZGVsX25hbWVcIjogXCLrqqjrjbgg7J2066aEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucmVxdWVzdGVkX21vZGVsX25hbWVcIjogXCLsmpTssq0g66qo6424IOydtOumhCAoZmFsbGJhY2sg7KCEKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmZhbGxiYWNrX2NvdW50XCI6IFwi66qo6424IGZhbGxiYWNrIO2an+yImFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnVzZXJfcHJvbXB0XCI6IFwi7IKs7Jqp7J6QIO2UhOuhrO2UhO2KuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnN5c3RlbV9wcm9tcHRcIjogXCLsi5zsiqTthZwg7ZSE66Gs7ZSE7Yq4XCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cucmVzcG9uc2VcIjogXCJsbG0g7J2R64u1IOyghOusuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmlucHV0X3Rva2Vuc1wiOiBcIuyeheugpSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5vdXRwdXRfdG9rZW5zXCI6IFwi7Lac66ClIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNhY2hlX3JlYWRfdG9rZW5zXCI6IFwi7LqQ7IucIOydveq4sCDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIjogXCLsupDsi5wg7IOd7ISxIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2Vuc1wiOiBcIjXrtoQgVFRMIOy6kOyLnCDsg53shLEg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zXCI6IFwiMeyLnOqwhCBUVEwg7LqQ7IucIOyDneyEsSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5kdXJhdGlvbl9tc1wiOiBcIuydkeuLtSDshozsmpTsi5zqsIQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cudHRmdF9tc1wiOiBcImZpcnN0IGdlbiBUVEZUKG1zKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNvc3RfdXNkXCI6IFwiQVBJIOu5hOyaqVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNvc3Rfc291cmNlXCI6IFwi67mE7JqpIOy2nOyymChwcm92aWRlci9wcmljaW5nX3RhYmxlL21peGVkKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmltYWdlX2Nvc3RfdXNkXCI6IFwi7J2066+47KeAIOyDneyEsSDstpTsoJUg67mE7JqpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuaW1hZ2VfY29zdF9tZXRob2RcIjogXCLsnbTrr7jsp4Ag67mE7JqpIOy2lOyglSDrsKnsi51cIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5lZmZvcnRcIjogXCJlZmZvcnQgbGV2ZWxcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5oaXN0b3J5XCI6IFwiaW5qZWN0X2l0ZW1zIO2eiOyKpO2GoOumrFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnRvb2xzXCI6IFwi7JqU7LKt7JeQIOyepeywqeuQnCB0b29sIOygleydmCDrqqnroZ1cIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5zdGF0dXNcIjogXCLsi6Ttlokg7IOB7YOcXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuZXJyb3JfbWVzc2FnZVwiOiBcIuyXkOufrCDrqZTsi5zsp4BcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy50b29sX2NhbGxfY291bnRcIjogXCJ0b29sIGNhbGwg7Zqf7IiYXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuaXNfaW1hZ2VfZ2VuZXJhdGlvblwiOiBcIuydtOuvuOyngCDsg53shLEgdHVybiDsl6zrtoAgKHF1b3RhIOq3gOyGjeyaqSlcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dPcmRlckJ5LmlkLWRlc2NcIjogXCJJROy1nOyLoOyInFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1NlYXJjaEZpZWxkLmlkXCI6IFwiSURcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTZWFyY2hGaWVsZC50b2tlbl9uYW1lXCI6IFwi7Yag7YGw7J2066aEXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU2VhcmNoRmllbGQudXNlcl9wcm9tcHRcIjogXCLsgqzsmqnsnpAg7ZSE66Gs7ZSE7Yq4XCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RhdHVzLnJ1bm5pbmdcIjogXCLsi6Ttlokg7KSRXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RhdHVzLnN1Y2NlZWRlZFwiOiBcIuyEseqztVwiLFxuICBcImVudW0uUmVxdWVzdExvZ1N0YXR1cy5lcnJvclwiOiBcIuyXkOufrFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1N0YXR1cy5hYm9ydGVkXCI6IFwi7KSR64uoXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwXCI6IFwiUmVxdWVzdExvZ1N0ZXBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAuaWRcIjogXCJJRFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5jcmVhdGVkX2F0XCI6IFwi65Ox66Gd7J287IucXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnJlcXVlc3RfbG9nXCI6IFwi67aA66qoIHJlcXVlc3QgbG9nIElEXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnN0ZXBfaW5kZXhcIjogXCJhaS1zZGsgc3RlcCBudW1iZXIgKDAtYmFzZWQpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnR5cGVcIjogXCJzdGVwIO2DgOyehVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5tb2RlbF9uYW1lXCI6IFwi7Iuk7KCcIHNlcnZpbmcg66qo6424XCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnJlcXVlc3RlZF9tb2RlbF9uYW1lXCI6IFwi7JqU7LKtIOuqqOuNuCAoZmFsbGJhY2sg7KCEKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5mYWxsYmFja19jb3VudFwiOiBcIuuqqOuNuCBmYWxsYmFjayDtmp/siJhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAuaW5wdXRfdG9rZW5zXCI6IFwi7J6F66ClIO2GoO2BsCAoZ2VuZXJhdGUpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLm91dHB1dF90b2tlbnNcIjogXCLstpzroKUg7Yag7YGwIChnZW5lcmF0ZSlcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAuY2FjaGVfcmVhZF90b2tlbnNcIjogXCLsupDsi5wg7J296riwIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIjogXCLsupDsi5wg7IOd7ISxIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnNcIjogXCI167aEIFRUTCDsupDsi5wg7IOd7ISxIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnNcIjogXCIx7Iuc6rCEIFRUTCDsupDsi5wg7IOd7ISxIO2GoO2BsFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5jb3N0X3VzZFwiOiBcInN0ZXAg67mE7JqpIChtaWNyby1VU0QpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLmNvc3Rfc291cmNlXCI6IFwi67mE7JqpIOy2nOyymChwcm92aWRlci9wcmljaW5nX3RhYmxlKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5kdXJhdGlvbl9tc1wiOiBcIuyGjOyalOyLnOqwhChtcylcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAudHRmdF9tc1wiOiBcIkdlbiBUVEZUKG1zKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5maW5pc2hfcmVhc29uXCI6IFwi7JmE66OMIOyCrOycoFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5yZWFzb25pbmdfdGV4dFwiOiBcInJlYXNvbmluZyDthY3siqTtirhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZ1N0ZXAucmVhc29uaW5nX3Rva2Vuc1wiOiBcInJlYXNvbmluZyDthqDtgbAg7IiYXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfY2FsbF9pbmRleFwiOiBcIuqwmeydgCBzdGVwIOuCtCB0b29sIGNhbGwg7Iic7IScXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfY2FsbF9pZFwiOiBcInRvb2wgY2FsbCBJRFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC50b29sX25hbWVcIjogXCJ0b29sIOydtOumhFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC50b29sX2FyZ3NcIjogXCJ0b29sIOyduOyekCAoSlNPTiBzdHJpbmcpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2dTdGVwLnRvb2xfcmVzdWx0XCI6IFwidG9vbCDqsrDqs7wgKEpTT04gc3RyaW5nKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC50b29sX2R1cmF0aW9uX21zXCI6IFwidG9vbCDsi6Ttlokg7IaM7JqU7Iuc6rCEKG1zKVwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nU3RlcC5lcnJvclwiOiBcInN0ZXAg7JeQ65+sIOuplOyLnOyngFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1N0ZXBUeXBlLmdlbmVyYXRlXCI6IFwiTExNIOyDneyEsVwiLFxuICBcImVudW0uUmVxdWVzdExvZ1N0ZXBUeXBlLnRvb2xfY2FsbFwiOiBcIlRvb2wg7Zi47LacXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU3RlcE9yZGVyQnkuaWQtYXNjXCI6IFwiSUTsiJxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTdGVwU2VhcmNoRmllbGQuaWRcIjogXCJJRFwiLFxuICBcImVudGl0eS5Ub2tlblwiOiBcIlRva2VuXCIsXG4gIFwiZW50aXR5LlRva2VuLmlkXCI6IFwiSURcIixcbiAgXCJlbnRpdHkuVG9rZW4uY3JlYXRlZF9hdFwiOiBcIuuTseuhneydvOyLnFwiLFxuICBcImVudGl0eS5Ub2tlbi5wcm92aWRlclwiOiBcIu2UhOuhnOuwlOydtOuNlFwiLFxuICBcImVudGl0eS5Ub2tlbi5jcmVkZW50aWFsc1wiOiBcIuyduOymnSDsoJXrs7QgKEpTT05CKVwiLFxuICBcImVudGl0eS5Ub2tlbi5uYW1lXCI6IFwi7Yag7YGwIOydtOumhFwiLFxuICBcImVudGl0eS5Ub2tlbi5hY3RpdmVcIjogXCLtmZzshLEg7Jes67aAXCIsXG4gIFwiZW50aXR5LlRva2VuLm9yZFwiOiBcIuygleugrCDsiJzshJxcIixcbiAgXCJlbnRpdHkuVG9rZW4ucXVvdGFfdGhyZXNob2xkXCI6IFwicXVvdGEg7IKs7Jqp66WgIOyehOqzhOy5mCglKS4gbnVsbOydtOuptCDrr7jshKTsoJVcIixcbiAgXCJlbnRpdHkuVG9rZW4ud2VpZ2h0XCI6IFwi6rCA7KSRIOudvOyatOuTnOuhnOu5iCDrnbzsmrDtjIUg6rCA7KSR7LmYICgxLi4xMDApXCIsXG4gIFwiZW51bS5Ub2tlbk9yZGVyQnkuaWQtZGVzY1wiOiBcIklE7LWc7Iug7IicXCIsXG4gIFwiZW51bS5Ub2tlbk9yZGVyQnkub3JkLWFzY1wiOiBcIuyInOyEnOyInFwiLFxuICBcImVudW0uVG9rZW5TZWFyY2hGaWVsZC5pZFwiOiBcIklEXCIsXG4gIFwiZW51bS5Ub2tlblNlYXJjaEZpZWxkLm5hbWVcIjogXCLsnbTrpoRcIixcbn0gYXMgY29uc3Q7XG5cbi8vIGRlZmF1bHRMb2NhbGXsnZggZGljdGlvbmFyeeulvCDquLDspIDsnLzroZwg7YKkIOy2lOy2nFxudHlwZSBSQ0tleXMgPSB0eXBlb2YgcmNLZXlzS287XG50eXBlIFByb2plY3REaWN0aW9uYXJ5ID0gdHlwZW9mIGtvO1xudHlwZSBFbnRpdHlMYWJlbHMgPSB0eXBlb2YgZW50aXR5TGFiZWxzO1xudHlwZSBSYXdNZXJnZWREaWN0aW9uYXJ5ID0gUkNLZXlzICZcbiAgT21pdDxFbnRpdHlMYWJlbHMsIGtleW9mIChSQ0tleXMgJiBQcm9qZWN0RGljdGlvbmFyeSk+ICZcbiAgUHJvamVjdERpY3Rpb25hcnk7XG5cbi8vIO2CpOuKlCDsnKDsp4DtlZjrkJgsIOqwkiDtg4DsnoXsnYAgc3RyaW5nIOuYkOuKlCDtlajsiJjroZwg7J2867CY7ZmUICjri6TrpbggbG9jYWxl7J2YIOumrO2EsOuftCDtg4DsnoUg7Lap64+MIOuwqeyngClcbmV4cG9ydCB0eXBlIE1lcmdlZERpY3Rpb25hcnkgPSB7XG4gIFtLIGluIGtleW9mIFJhd01lcmdlZERpY3Rpb25hcnldOiBSYXdNZXJnZWREaWN0aW9uYXJ5W0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIFApID0+IHN0cmluZ1xuICAgID8gKC4uLmFyZ3M6IFApID0+IHN0cmluZ1xuICAgIDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIERpY3RLZXkgPSBrZXlvZiBNZXJnZWREaWN0aW9uYXJ5O1xuZXhwb3J0IHR5cGUgTG9jYWxpemVkU3RyaW5nID0gc3RyaW5nICYgeyBfX2JyYW5kOiBcIkxvY2FsaXplZFN0cmluZ1wiIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVMb2NhbGUoZGljdDogUGFydGlhbDxNZXJnZWREaWN0aW9uYXJ5Pikge1xuICByZXR1cm4gZGljdDtcbn1cblxuLy8g6rCBIGxvY2FsZeuzhOuhnCByYy1rZXlzICsgZW50aXR5IGxhYmVscyArIO2UhOuhnOygne2KuCBkaWN0IO2Vqey5qFxuY29uc3QgZGljdGlvbmFyaWVzOiBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsPE1lcmdlZERpY3Rpb25hcnk+PiA9IHtcbiAga286IHsgLi4ucmNLZXlzS28sIC4uLmVudGl0eUxhYmVscywgLi4ua28gfSxcbiAgZW46IHsgLi4ucmNLZXlzRW4sIC4uLmVuIH0sXG59O1xuXG50eXBlIFNEUmV0dXJuVHlwZTxLIGV4dGVuZHMgRGljdEtleT4gPSBNZXJnZWREaWN0aW9uYXJ5W0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIFApID0+IHN0cmluZ1xuICA/ICguLi5hcmdzOiBQKSA9PiBMb2NhbGl6ZWRTdHJpbmdcbiAgOiBMb2NhbGl6ZWRTdHJpbmc7XG5cbmZ1bmN0aW9uIGdldERpY3RWYWx1ZTxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLLCBsb2NhbGU6IHN0cmluZyk6IFNEUmV0dXJuVHlwZTxLPiB7XG4gIC8vIDEuIOyngOygleuQnCBsb2NhbGXsl5DshJwg7KGw7ZqMXG4gIGNvbnN0IGRpY3QgPSBkaWN0aW9uYXJpZXNbbG9jYWxlXTtcbiAgaWYgKGRpY3Q/LltrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZGljdFtrZXldIGFzIHVua25vd24gYXMgU0RSZXR1cm5UeXBlPEs+O1xuICB9XG5cbiAgLy8gMi4gZGVmYXVsdCBsb2NhbGXsl5DshJwg7KGw7ZqMXG4gIGlmIChsb2NhbGUgIT09IERFRkFVTFRfTE9DQUxFICYmIGRpY3Rpb25hcmllc1tERUZBVUxUX0xPQ0FMRV0/LltrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZGljdGlvbmFyaWVzW0RFRkFVTFRfTE9DQUxFXVtrZXldIGFzIHVua25vd24gYXMgU0RSZXR1cm5UeXBlPEs+O1xuICB9XG5cbiAgLy8gMy4gc3VwcG9ydGVkIGxvY2FsZXMg7Iic7ZqMXG4gIGZvciAoY29uc3Qgc3VwcG9ydGVkTG9jYWxlIG9mIFNVUFBPUlRFRF9MT0NBTEVTKSB7XG4gICAgaWYgKHN1cHBvcnRlZExvY2FsZSAhPT0gbG9jYWxlICYmIHN1cHBvcnRlZExvY2FsZSAhPT0gREVGQVVMVF9MT0NBTEUpIHtcbiAgICAgIGlmIChkaWN0aW9uYXJpZXNbc3VwcG9ydGVkTG9jYWxlXT8uW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZGljdGlvbmFyaWVzW3N1cHBvcnRlZExvY2FsZV1ba2V5XSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyA0LiDrqqjrkZAg7Iuk7YyoIOyLnCBrZXkg67CY7ZmYXG4gIHJldHVybiBrZXkgYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG59XG5cbi8qKlxuICogU29uYW11IERpY3Rpb25hcnkg7ZWo7IiYXG4gKiBsb2NhbGXsl5Ag66ee64qUIOuyiOyXrSDthY3siqTtirjrpbwg67CY7ZmY7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBTRChcImNvbW1vbi5zYXZlXCIpICAvLyDihpIgXCLsoIDsnqVcIiAoTG9jYWxpemVkU3RyaW5nKVxuICogU0QoXCJ1c2VyLm5vdEZvdW5kXCIpKDEpICAvLyDihpIgXCLsobTsnqztlZjsp4Ag7JWK64qUIFVzZXIgSUQgMVwiIChMb2NhbGl6ZWRTdHJpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTRDxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLKTogU0RSZXR1cm5UeXBlPEs+IHtcbiAgY29uc3QgbG9jYWxlID0gZ2V0Q3VycmVudExvY2FsZSgpO1xuICByZXR1cm4gZ2V0RGljdFZhbHVlKGtleSwgbG9jYWxlKTtcbn1cblxuLyoqXG4gKiDtirnsoJUgbG9jYWxl7J2YIOuyiOyXrSDthY3siqTtirjrpbwg67CY7ZmY7ZWY64qUIO2VqOyImOulvCDsg53shLHtlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IEVOID0gU0QubG9jYWxlKFwiZW5cIik7XG4gKiBFTihcImNvbW1vbi5zYXZlXCIpICAvLyDihpIgXCJTYXZlXCJcbiAqL1xuU0QubG9jYWxlID1cbiAgKGxvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSkgPT5cbiAgPEsgZXh0ZW5kcyBEaWN0S2V5PihrZXk6IEspOiBTRFJldHVyblR5cGU8Sz4gPT4ge1xuICAgIHJldHVybiBnZXREaWN0VmFsdWUoa2V5LCBsb2NhbGUpO1xuICB9O1xuXG4vLyBMb2NhbGl6ZWQg6rCA64ql7ZWcIENvbHVtbiDtg4DsnoUg6rOE7IKwXG50eXBlIExvY2FsaXplZEJhc2VDb2x1bW48VD4gPSB7XG4gIFtLIGluIGtleW9mIFQgJiBzdHJpbmddOiBLIGV4dGVuZHMgYCR7aW5mZXIgQmFzZX1fJHsodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdfWBcbiAgICA/IEJhc2VcbiAgICA6IEs7XG59W2tleW9mIFQgJiBzdHJpbmddO1xuXG4vKipcbiAqIGxvY2FsZeyXkCDrlLDrnbwg7KCB7KCI7ZWcIOy7rOufvCDqsJLsnYQg67CY7ZmY7ZWp64uI64ukLlxuICogRELsl5AgbmFtZSwgbmFtZV9rbywgbmFtZV9lbuyymOufvCBsb2NhbGl6ZWQgY29sdW1u7J20IOyeiOydhCDrlYwg7IKs7Jqp7ZWp64uI64ukLlxuICpcbiAqIOyasOyEoOyInOychCAo7KeA7JuQIOuhnOy8gOydvOydgCBrby9qcC9lbuydtOqzoCwg7ISc67mE7Iqk7J2YIOq4sOuzuCDroZzsvIDsnbzsnYAga28sIOyCrOyaqeyekOydmCDroZzsvIDsnbzsnYAganDsnbwg65WMKTogY29sdW1uX2pwIOKGkiBjb2x1bW4g4oaSIGNvbHVtbl9rbyDihpIgY29sdW1uX2VuXG4gKiDsmrDshKDsiJzsnIQgKOyngOybkCDroZzsvIDsnbzsnYAga28vanAvZW7snbTqs6AsIOyEnOu5hOyKpOydmCDquLDrs7gg66Gc7LyA7J287J2AIGVuLCDsgqzsmqnsnpDsnZgg66Gc7LyA7J287J2AIGtv7J28IOuVjCk6IGNvbHVtbl9rbyDihpIgY29sdW1uIOKGkiBjb2x1bW5fZW4g4oaSIGNvbHVtbl9qcFxuICpcbiAqIEBleGFtcGxlXG4gKiBsb2NhbGl6ZWRDb2x1bW4odGFnLCBcIm5hbWVcIilcbiAqL1xudHlwZSBMb2NhbGl6ZWRDb2x1bW5TY2FsYXJWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBiaWdpbnQ7XG50eXBlIExvY2FsaXplZENvbHVtblZhbHVlID0gc3RyaW5nIHwgc3RyaW5nW107XG50eXBlIE5lc3RlZExvY2FsaXplZENvbHVtblZhbHVlRnJvbTxWPiA9IFYgZXh0ZW5kcyBzdHJpbmdcbiAgPyBzdHJpbmdcbiAgOiBWIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW11cbiAgICA/IHN0cmluZ1tdXG4gICAgOiBuZXZlcjtcbnR5cGUgTG9jYWxpemVkQ29sdW1uVmFsdWVGcm9tPFY+ID0gViBleHRlbmRzIHN0cmluZ1xuICA/IHN0cmluZ1xuICA6IFYgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXVxuICAgID8gc3RyaW5nW11cbiAgICA6IFYgZXh0ZW5kcyBudW1iZXIgfCBib29sZWFuIHwgYmlnaW50XG4gICAgICA/IHN0cmluZ1xuICAgICAgOiBWIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8KHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSwgaW5mZXIgTFY+PlxuICAgICAgICA/IE5lc3RlZExvY2FsaXplZENvbHVtblZhbHVlRnJvbTxMVj5cbiAgICAgICAgOiBuZXZlcjtcbnR5cGUgTG9jYWxpemVkQ29sdW1uQ2FuZGlkYXRlPFQsIEsgZXh0ZW5kcyBzdHJpbmc+ID1cbiAgfCAoSyBleHRlbmRzIGtleW9mIFQgPyBUW0tdIDogbmV2ZXIpXG4gIHwge1xuICAgICAgW0wgaW4gKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXV06IGAke0t9XyR7TH1gIGV4dGVuZHMga2V5b2YgVFxuICAgICAgICA/IFRbYCR7S31fJHtMfWBdXG4gICAgICAgIDogbmV2ZXI7XG4gICAgfVsodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdXTtcbnR5cGUgTG9jYWxpemVkQ29sdW1uUmV0dXJuPFQsIEsgZXh0ZW5kcyBzdHJpbmc+ID1cbiAgfCBMb2NhbGl6ZWRDb2x1bW5WYWx1ZUZyb208TG9jYWxpemVkQ29sdW1uQ2FuZGlkYXRlPFQsIEs+PlxuICB8IHVuZGVmaW5lZDtcbnR5cGUgTG9jYWxlVmFsdWVNYXAgPSBQYXJ0aWFsPFJlY29yZDwodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdLCB1bmtub3duPj47XG5cbmZ1bmN0aW9uIGlzTG9jYWxpemVkQ29sdW1uVmFsdWUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBMb2NhbGl6ZWRDb2x1bW5WYWx1ZSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8XG4gICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiB0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzTG9jYWxpemVkQ29sdW1uU2NhbGFyVmFsdWUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBMb2NhbGl6ZWRDb2x1bW5TY2FsYXJWYWx1ZSB7XG4gIHJldHVybiBbXCJzdHJpbmdcIiwgXCJudW1iZXJcIiwgXCJib29sZWFuXCIsIFwiYmlnaW50XCJdLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHlMb2NhbGl6ZWRDb2x1bW5WYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bGwgfCB1bmRlZmluZWQgfCBcIlwiIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGdldE5lc3RlZExvY2FsZVZhbHVlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgSyBleHRlbmRzIExvY2FsaXplZEJhc2VDb2x1bW48VD4+KFxuICByb3c6IFQsXG4gIGNvbHVtbjogSyxcbiAgbG9jYWxlOiAodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdLFxuKTogdW5rbm93biB7XG4gIGNvbnN0IGNvbHVtblZhbHVlID0gcm93W2NvbHVtbl07XG4gIGlmIChjb2x1bW5WYWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgY29sdW1uVmFsdWUgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheShjb2x1bW5WYWx1ZSkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIChjb2x1bW5WYWx1ZSBhcyBMb2NhbGVWYWx1ZU1hcClbbG9jYWxlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsaXplZENvbHVtbjxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBLIGV4dGVuZHMgTG9jYWxpemVkQmFzZUNvbHVtbjxUPixcbj4ocm93OiBULCBjb2x1bW46IEspOiBMb2NhbGl6ZWRDb2x1bW5SZXR1cm48VCwgSz4ge1xuICBjb25zdCBjdXJyZW50TG9jYWxlID0gZ2V0Q3VycmVudExvY2FsZSgpO1xuICBjb25zdCBsb2NhbGUgPSBTVVBQT1JURURfTE9DQUxFUy5pbmNsdWRlcyhjdXJyZW50TG9jYWxlKSA/IGN1cnJlbnRMb2NhbGUgOiBERUZBVUxUX0xPQ0FMRTtcbiAgY29uc3Qgb3RoZXJMb2NhbGVzID0gU1VQUE9SVEVEX0xPQ0FMRVMuZmlsdGVyKFxuICAgIChsOiBzdHJpbmcpID0+IGwgIT09IGxvY2FsZSAmJiBsICE9PSBERUZBVUxUX0xPQ0FMRSxcbiAgKTtcbiAgY29uc3QgbG9jYWxpemVkS2V5ID0gKGNvbHVtbjogSywgbG9jYWxlOiAodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdKSA9PlxuICAgIGAke2NvbHVtbn1fJHtsb2NhbGV9YDtcbiAgY29uc3QgdmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IHJvd1tsb2NhbGl6ZWRLZXkoY29sdW1uLCBsb2NhbGUpXSwgc291cmNlOiBcImRpcmVjdFwiIH0sXG4gICAgeyB2YWx1ZTogZ2V0TmVzdGVkTG9jYWxlVmFsdWUocm93LCBjb2x1bW4sIGxvY2FsZSksIHNvdXJjZTogXCJuZXN0ZWRcIiB9LFxuICAgIHsgdmFsdWU6IHJvd1tjb2x1bW5dLCBzb3VyY2U6IFwiZGlyZWN0XCIgfSxcbiAgICB7IHZhbHVlOiByb3dbbG9jYWxpemVkS2V5KGNvbHVtbiwgREVGQVVMVF9MT0NBTEUpXSwgc291cmNlOiBcImRpcmVjdFwiIH0sXG4gICAgeyB2YWx1ZTogZ2V0TmVzdGVkTG9jYWxlVmFsdWUocm93LCBjb2x1bW4sIERFRkFVTFRfTE9DQUxFKSwgc291cmNlOiBcIm5lc3RlZFwiIH0sXG4gICAgLi4ub3RoZXJMb2NhbGVzLmZsYXRNYXAoKGwpID0+IFtcbiAgICAgIHsgdmFsdWU6IHJvd1tsb2NhbGl6ZWRLZXkoY29sdW1uLCBsKV0sIHNvdXJjZTogXCJkaXJlY3RcIiB9LFxuICAgICAgeyB2YWx1ZTogZ2V0TmVzdGVkTG9jYWxlVmFsdWUocm93LCBjb2x1bW4sIGwpLCBzb3VyY2U6IFwibmVzdGVkXCIgfSxcbiAgICBdKSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IHsgdmFsdWUsIHNvdXJjZSB9IG9mIHZhbHVlcykge1xuICAgIGlmICghaXNFbXB0eUxvY2FsaXplZENvbHVtblZhbHVlKHZhbHVlKSAmJiBpc0xvY2FsaXplZENvbHVtblZhbHVlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlIGFzIExvY2FsaXplZENvbHVtblJldHVybjxULCBLPjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgc291cmNlID09PSBcImRpcmVjdFwiICYmXG4gICAgICAhaXNFbXB0eUxvY2FsaXplZENvbHVtblZhbHVlKHZhbHVlKSAmJlxuICAgICAgaXNMb2NhbGl6ZWRDb2x1bW5TY2FsYXJWYWx1ZSh2YWx1ZSlcbiAgICApIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpIGFzIExvY2FsaXplZENvbHVtblJldHVybjxULCBLPjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEVudW3snZggbG9jYWxpemVkIGxhYmVsc+ulvCBQcm94eeuhnCDrsJjtmZjtlanri4jri6QuXG4gKiBTZWxlY3Qg7Lu07Y+s64SM7Yq4IOuTseyXkOyEnCBFbnVtTGFiZWxba2V5XSDrjIDsi6Ag7IKs7Jqp7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBTRC5lbnVtTGFiZWxzKFwiVGFnT3JkZXJCeVwiKVtrZXldICAvLyDihpIg7ZiE7J6sIGxvY2FsZeydmCDrnbzrsqhcbiAqL1xuU0QuZW51bUxhYmVscyA9IChlbnVtTmFtZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgTG9jYWxpemVkU3RyaW5nPiA9PiB7XG4gIHJldHVybiBuZXcgUHJveHkoe30gYXMgUmVjb3JkPHN0cmluZywgTG9jYWxpemVkU3RyaW5nPiwge1xuICAgIGdldChfLCBrZXk6IHN0cmluZyB8IHN5bWJvbCkge1xuICAgICAgaWYgKHR5cGVvZiBrZXkgPT09IFwic3ltYm9sXCIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGljdEtleSA9IGBlbnVtLiR7ZW51bU5hbWV9LiR7a2V5fWAgYXMgRGljdEtleTtcbiAgICAgIHJldHVybiBnZXREaWN0VmFsdWUoZGljdEtleSwgZ2V0Q3VycmVudExvY2FsZSgpKTtcbiAgICB9LFxuICB9KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBT0EsTUFBTSxpQkFBaUI7QUFDdkIsTUFBTSxvQkFBb0IsQ0FBQyxNQUFNLElBQUk7QUFDckMsU0FBUyxtQkFBdUQ7Q0FDOUQsSUFBSTtFQUVGLE9BRFksT0FBTyxXQUNYLENBQUEsQ0FBSSxVQUFpRDtDQUMvRCxRQUFRO0VBQ04sT0FBTztDQUNUO0FBQ0Y7QUFNQSxNQUFNLFdBQVc7Q0FFZiwwQkFBMEI7Q0FDMUIsNEJBQTRCO0NBQzVCLDRCQUE0QjtDQUM1QixvQ0FBb0M7Q0FHcEMseUJBQXlCO0NBQ3pCLGlDQUFpQztDQUdqQywwQkFBMEI7Q0FDMUIsNkJBQTZCO0NBQzdCLDRCQUE0QjtDQUc1QixtQ0FBbUM7Q0FDbkMscUNBQXFDO0NBQ3JDLHVDQUF1QztDQUN2QyxzQ0FBc0M7Q0FHdEMsNEJBQTRCO0NBQzVCLHlCQUF5QjtDQUN6QixnQ0FBZ0M7Q0FDaEMsaUNBQWlDO0NBQ2pDLGtDQUFrQyxhQUNoQyxNQUFNLFNBQVM7Q0FDakIsd0JBQXdCO0NBQ3hCLHVCQUF1QjtDQUN2Qiw2QkFBNkI7Q0FDN0IsMEJBQTBCO0NBRzFCLG1DQUFtQztDQUNuQyxvQ0FBb0M7Q0FDcEMsa0NBQWtD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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/migrations/20260806141701_alter_request_logs_add1_alter1.ts
|
|
2
|
+
async function up(knex) {
|
|
3
|
+
await knex.schema.alterTable("request_logs", (table) => {
|
|
4
|
+
table.jsonb("tools").nullable();
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
async function down(knex) {
|
|
8
|
+
await knex.schema.alterTable("request_logs", (table) => {
|
|
9
|
+
table.dropColumns("tools");
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { down, up };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAyNjA4MDYxNDE3MDFfYWx0ZXJfcmVxdWVzdF9sb2dzX2FkZDFfYWx0ZXIxLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWdyYXRpb25zLzIwMjYwODA2MTQxNzAxX2FsdGVyX3JlcXVlc3RfbG9nc19hZGQxX2FsdGVyMS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXAoa25leDogS25leCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBrbmV4LnNjaGVtYS5hbHRlclRhYmxlKFwicmVxdWVzdF9sb2dzXCIsICh0YWJsZSkgPT4ge1xuICAgIC8vIGFkZFxuICAgIHRhYmxlLmpzb25iKFwidG9vbHNcIikubnVsbGFibGUoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb3duKGtuZXg6IEtuZXgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQga25leC5zY2hlbWEuYWx0ZXJUYWJsZShcInJlcXVlc3RfbG9nc1wiLCAodGFibGUpID0+IHtcbiAgICAvLyByb2xsYmFjayAtIGFkZFxuICAgIHRhYmxlLmRyb3BDb2x1bW5zKFwidG9vbHNcIik7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBRUEsZUFBc0IsR0FBRyxNQUEyQjtDQUNsRCxNQUFNLEtBQUssT0FBTyxXQUFXLGlCQUFpQixVQUFVO0VBRXRELE1BQU0sTUFBTSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQ2hDLENBQUM7QUFDSDtBQUVBLGVBQXNCLEtBQUssTUFBMkI7Q0FDcEQsTUFBTSxLQUFLLE9BQU8sV0FBVyxpQkFBaUIsVUFBVTtFQUV0RCxNQUFNLFlBQVksT0FBTztDQUMzQixDQUFDO0FBQ0gifQ==
|
|
@@ -20,6 +20,9 @@ const logger = getLogger(["qgrid", "oauth"]);
|
|
|
20
20
|
const CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
|
|
21
21
|
const AUTHORIZE_URL = "https://claude.com/cai/oauth/authorize";
|
|
22
22
|
const TOKEN_URL = "https://platform.claude.com/v1/oauth/token";
|
|
23
|
+
// client 허용 목록에 있는 콘솔 콜백. 인증 후 콘솔 페이지가 `code#state`를 표시하고
|
|
24
|
+
// 사용자가 붙여넣는 코드 플로우(Claude Code CLI와 동일)에 사용한다.
|
|
25
|
+
export const CONSOLE_CALLBACK_URL = "https://console.anthropic.com/oauth/code/callback";
|
|
23
26
|
|
|
24
27
|
// login 시 사용 (authorize URL)
|
|
25
28
|
const ALL_SCOPES = [
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Sonamu } from "sonamu";
|
|
2
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
|
|
4
|
+
import { CONSOLE_CALLBACK_URL } from "./oauth";
|
|
5
|
+
import { QgridFrame } from "./qgrid.frame";
|
|
6
|
+
|
|
7
|
+
const { exchangeMock, tokenSaveMock, tokenDelMock, findByAccountMock } = vi.hoisted(() => ({
|
|
8
|
+
exchangeMock: vi.fn(),
|
|
9
|
+
tokenSaveMock: vi.fn(async () => [1]),
|
|
10
|
+
tokenDelMock: vi.fn(async () => 1),
|
|
11
|
+
findByAccountMock: vi.fn(async () => []),
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
// oauthStart 는 PKCE 상태를 cache 에 저장한다 — Map 스텁으로 왕복만 지원한다.
|
|
15
|
+
vi.mock("sonamu/cache", () => {
|
|
16
|
+
const store = new Map<string, string>();
|
|
17
|
+
return {
|
|
18
|
+
getCacheManagerRef: () => ({
|
|
19
|
+
set: vi.fn(async ({ key, value }: { key: string; value: string }) => {
|
|
20
|
+
store.set(key, value);
|
|
21
|
+
}),
|
|
22
|
+
get: vi.fn(async ({ key }: { key: string }) => store.get(key)),
|
|
23
|
+
delete: vi.fn(async ({ key }: { key: string }) => {
|
|
24
|
+
store.delete(key);
|
|
25
|
+
}),
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
vi.mock("./oauth", async (importOriginal) => ({
|
|
31
|
+
...(await importOriginal<typeof import("./oauth")>()),
|
|
32
|
+
exchangeCodeForTokens: exchangeMock,
|
|
33
|
+
}));
|
|
34
|
+
|
|
35
|
+
vi.mock("../token/token.model", () => ({
|
|
36
|
+
TokenModel: {
|
|
37
|
+
save: tokenSaveMock,
|
|
38
|
+
del: tokenDelMock,
|
|
39
|
+
findByAccountIdentifier: findByAccountMock,
|
|
40
|
+
},
|
|
41
|
+
}));
|
|
42
|
+
|
|
43
|
+
function authUrlParam(authUrl: string, key: string): string | null {
|
|
44
|
+
return new URL(authUrl).searchParams.get(key);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function mockHttpContext(headers: Record<string, string>, protocol = "http"): void {
|
|
48
|
+
vi.spyOn(Sonamu, "getContext").mockReturnValue({ headers, request: { protocol } } as never);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
describe("QgridFrame.oauthStart redirect resolution", () => {
|
|
52
|
+
let savedPort: string | undefined;
|
|
53
|
+
|
|
54
|
+
beforeEach(() => {
|
|
55
|
+
savedPort = process.env.PORT;
|
|
56
|
+
delete process.env.PORT;
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
afterEach(() => {
|
|
60
|
+
if (savedPort !== undefined) process.env.PORT = savedPort;
|
|
61
|
+
vi.restoreAllMocks();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it("uses the redirect flow with the request-derived callback on loopback origins", async () => {
|
|
65
|
+
mockHttpContext({ origin: "http://localhost:44900" });
|
|
66
|
+
|
|
67
|
+
const { authUrl, mode } = await QgridFrame.oauthStart("tok");
|
|
68
|
+
expect(mode).toBe("redirect");
|
|
69
|
+
expect(authUrlParam(authUrl, "redirect_uri")).toBe("http://localhost:44900/callback");
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it("switches to the code flow with the console callback on remote origins", async () => {
|
|
73
|
+
mockHttpContext({ origin: "https://qgrid.example.com" });
|
|
74
|
+
|
|
75
|
+
const { authUrl, mode } = await QgridFrame.oauthStart("tok");
|
|
76
|
+
expect(mode).toBe("code");
|
|
77
|
+
expect(authUrlParam(authUrl, "redirect_uri")).toBe(CONSOLE_CALLBACK_URL);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it("treats forwarded remote hosts as the code flow when Origin is absent", async () => {
|
|
81
|
+
mockHttpContext({ host: "qgrid.example.com", "x-forwarded-proto": "https" });
|
|
82
|
+
|
|
83
|
+
const { authUrl, mode } = await QgridFrame.oauthStart("tok");
|
|
84
|
+
expect(mode).toBe("code");
|
|
85
|
+
expect(authUrlParam(authUrl, "redirect_uri")).toBe(CONSOLE_CALLBACK_URL);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("falls back to the localhost redirect flow without an HTTP context", async () => {
|
|
89
|
+
vi.spyOn(Sonamu, "getContext").mockImplementation(() => {
|
|
90
|
+
throw new Error("no context");
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
const { authUrl, mode } = await QgridFrame.oauthStart("tok");
|
|
94
|
+
expect(mode).toBe("redirect");
|
|
95
|
+
expect(authUrlParam(authUrl, "redirect_uri")).toBe("http://localhost:44900/callback");
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
describe("QgridFrame.oauthComplete code flow", () => {
|
|
100
|
+
afterEach(() => {
|
|
101
|
+
vi.restoreAllMocks();
|
|
102
|
+
exchangeMock.mockReset();
|
|
103
|
+
tokenSaveMock.mockClear();
|
|
104
|
+
findByAccountMock.mockClear().mockResolvedValue([]);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("exchanges a pasted code#state against the stored pending state and saves the token", async () => {
|
|
108
|
+
mockHttpContext({ origin: "https://qgrid.example.com" });
|
|
109
|
+
const { authUrl } = await QgridFrame.oauthStart("haze-2");
|
|
110
|
+
const state = authUrlParam(authUrl, "state")!;
|
|
111
|
+
|
|
112
|
+
exchangeMock.mockResolvedValueOnce({
|
|
113
|
+
accessToken: "at",
|
|
114
|
+
refreshToken: "rt",
|
|
115
|
+
expiresAt: 123,
|
|
116
|
+
scope: "user:inference",
|
|
117
|
+
accountUuid: "acc-1",
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
await expect(QgridFrame.oauthComplete(` the-code#${state} `)).resolves.toEqual({
|
|
121
|
+
added: true,
|
|
122
|
+
name: "haze-2",
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
expect(exchangeMock).toHaveBeenCalledWith(
|
|
126
|
+
"the-code",
|
|
127
|
+
expect.any(String),
|
|
128
|
+
state,
|
|
129
|
+
CONSOLE_CALLBACK_URL,
|
|
130
|
+
);
|
|
131
|
+
expect(tokenSaveMock).toHaveBeenCalledWith([
|
|
132
|
+
expect.objectContaining({
|
|
133
|
+
provider: "anthropic",
|
|
134
|
+
name: "haze-2",
|
|
135
|
+
credentials: expect.objectContaining({ accessToken: "at", accountUuid: "acc-1" }),
|
|
136
|
+
}),
|
|
137
|
+
]);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it("rejects input without a #state part", async () => {
|
|
141
|
+
await expect(QgridFrame.oauthComplete("just-a-code")).rejects.toThrow(/code#state/);
|
|
142
|
+
expect(exchangeMock).not.toHaveBeenCalled();
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it("rejects an unknown or expired state", async () => {
|
|
146
|
+
await expect(QgridFrame.oauthComplete("code#no-such-state")).rejects.toThrow(
|
|
147
|
+
/not found or expired/,
|
|
148
|
+
);
|
|
149
|
+
expect(exchangeMock).not.toHaveBeenCalled();
|
|
150
|
+
});
|
|
151
|
+
});
|
|
@@ -109,6 +109,20 @@ describe("qgrid run lifecycle start", () => {
|
|
|
109
109
|
});
|
|
110
110
|
});
|
|
111
111
|
|
|
112
|
+
it("stores attached tool definitions on the run and omits them when absent", async () => {
|
|
113
|
+
const tools = [
|
|
114
|
+
{ name: "getWeather", description: "Get weather for a city", inputSchema: { type: "object" } },
|
|
115
|
+
{ name: "sendMail", inputSchema: { type: "object" } },
|
|
116
|
+
];
|
|
117
|
+
|
|
118
|
+
await beforeQuery({ prompt: "hi", model: "openai/gpt-5-codex", tools });
|
|
119
|
+
expect(createRunMock).toHaveBeenCalledWith(expect.objectContaining({ tools }));
|
|
120
|
+
|
|
121
|
+
createRunMock.mockClear();
|
|
122
|
+
await beforeQuery({ prompt: "hi", model: "openai/gpt-5-codex", tools: [] });
|
|
123
|
+
expect(createRunMock).toHaveBeenCalledWith(expect.objectContaining({ tools: undefined }));
|
|
124
|
+
});
|
|
125
|
+
|
|
112
126
|
it("continues an existing parent and completes tool results before the next step", async () => {
|
|
113
127
|
const order: string[] = [];
|
|
114
128
|
continueToolRunMock.mockImplementationOnce(async () => {
|
|
@@ -65,6 +65,8 @@ export async function beforeQuery(args: QueryInput): Promise<{
|
|
|
65
65
|
let stepIndex = 0;
|
|
66
66
|
|
|
67
67
|
// requestLogId 가 있을 때만 기존 run 연장. threadCoord 만 있는 conv 는 새 run 으로 시작.
|
|
68
|
+
// continuation 은 createRun 을 건너뛰므로 run 의 tools 는 첫 스텝 장착분으로 고정된다 —
|
|
69
|
+
// AI SDK prepareStep/activeTools 로 스텝마다 툴셋이 바뀌어도 로그에는 반영되지 않는다.
|
|
68
70
|
if (args.runContext?.requestLogId !== undefined) {
|
|
69
71
|
requestLogId = args.runContext.requestLogId;
|
|
70
72
|
// cleanup과 같은 DB advisory lock을 잡고 tool 결과 반영 + 다음 step 예약을 한
|
|
@@ -81,6 +83,7 @@ export async function beforeQuery(args: QueryInput): Promise<{
|
|
|
81
83
|
effort: args.effort,
|
|
82
84
|
project_name: args.projectName,
|
|
83
85
|
history: filterHistoryForStorage(args.history),
|
|
86
|
+
tools: args.tools?.length ? args.tools : undefined,
|
|
84
87
|
is_image_generation: args.imageGeneration,
|
|
85
88
|
});
|
|
86
89
|
}
|