@cloudbase/app 2.26.1 → 2.26.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/cjs/index.d.ts +2 -0
  2. package/dist/cjs/index.js +43 -7
  3. package/dist/cjs/index.node.d.ts +6 -0
  4. package/dist/cjs/index.node.js +20 -0
  5. package/dist/cjs/libs/adapter-node/constants.d.ts +33 -0
  6. package/dist/cjs/libs/adapter-node/constants.js +38 -0
  7. package/dist/cjs/libs/adapter-node/context.d.ts +13 -0
  8. package/dist/cjs/libs/adapter-node/context.js +162 -0
  9. package/dist/cjs/libs/adapter-node/index.d.ts +23 -0
  10. package/dist/cjs/libs/adapter-node/index.js +124 -0
  11. package/dist/cjs/libs/adapter-node/metadata.d.ts +14 -0
  12. package/dist/cjs/libs/adapter-node/metadata.js +130 -0
  13. package/dist/cjs/libs/adapter-node/request.d.ts +38 -0
  14. package/dist/cjs/libs/adapter-node/request.js +441 -0
  15. package/dist/cjs/libs/adapter-node/tool.d.ts +2 -0
  16. package/dist/cjs/libs/adapter-node/tool.js +228 -0
  17. package/dist/cjs/libs/adapter-node/types.d.ts +78 -0
  18. package/dist/cjs/libs/adapter-node/types.js +3 -0
  19. package/dist/cjs/libs/adapter-node/utils.d.ts +17 -0
  20. package/dist/cjs/libs/adapter-node/utils.js +221 -0
  21. package/dist/cjs/libs/request.d.ts +1 -0
  22. package/dist/cjs/libs/request.js +34 -19
  23. package/dist/esm/index.d.ts +2 -0
  24. package/dist/esm/index.js +43 -7
  25. package/dist/esm/index.node.d.ts +6 -0
  26. package/dist/esm/index.node.js +12 -0
  27. package/dist/esm/libs/adapter-node/constants.d.ts +33 -0
  28. package/dist/esm/libs/adapter-node/constants.js +35 -0
  29. package/dist/esm/libs/adapter-node/context.d.ts +13 -0
  30. package/dist/esm/libs/adapter-node/context.js +156 -0
  31. package/dist/esm/libs/adapter-node/index.d.ts +23 -0
  32. package/dist/esm/libs/adapter-node/index.js +118 -0
  33. package/dist/esm/libs/adapter-node/metadata.d.ts +14 -0
  34. package/dist/esm/libs/adapter-node/metadata.js +123 -0
  35. package/dist/esm/libs/adapter-node/request.d.ts +38 -0
  36. package/dist/esm/libs/adapter-node/request.js +438 -0
  37. package/dist/esm/libs/adapter-node/tool.d.ts +2 -0
  38. package/dist/esm/libs/adapter-node/tool.js +224 -0
  39. package/dist/esm/libs/adapter-node/types.d.ts +78 -0
  40. package/dist/esm/libs/adapter-node/types.js +2 -0
  41. package/dist/esm/libs/adapter-node/utils.d.ts +17 -0
  42. package/dist/esm/libs/adapter-node/utils.js +205 -0
  43. package/dist/esm/libs/request.d.ts +1 -0
  44. package/dist/esm/libs/request.js +34 -19
  45. package/dist/miniprogram/index.js +1 -1
  46. package/package.json +32 -4
  47. package/src/index.node.ts +22 -0
  48. package/src/index.ts +91 -7
  49. package/src/libs/adapter-node/constants.ts +42 -0
  50. package/src/libs/adapter-node/context.ts +238 -0
  51. package/src/libs/adapter-node/index.ts +166 -0
  52. package/src/libs/adapter-node/metadata.ts +69 -0
  53. package/src/libs/adapter-node/request.ts +486 -0
  54. package/src/libs/adapter-node/tool.ts +223 -0
  55. package/src/libs/adapter-node/types.ts +116 -0
  56. package/src/libs/adapter-node/utils.ts +182 -0
  57. package/src/libs/request.ts +125 -113
  58. package/webpack/web.prod.js +14 -13
  59. package/webpack/webpack.miniprogram.js +10 -3
@@ -35,6 +35,7 @@ declare class Cloudbase implements ICloudbase {
35
35
  registerComponent(component: ICloudbaseComponent): void;
36
36
  registerVersion(version: string): void;
37
37
  registerSdkName(name: string): void;
38
+ isInitialized(config?: ICloudbaseConfig): boolean;
38
39
  registerEndPoint(url: string, protocol?: 'http' | 'https'): void;
39
40
  registerEndPointWithKey(props: ISetEndPointWithKey): void;
40
41
  getEndPointWithKey(key: EndPointKey): {
@@ -57,6 +58,7 @@ declare class Cloudbase implements ICloudbase {
57
58
  private useDefaultAdapter;
58
59
  private formatTimeout;
59
60
  private try2InitAuth;
61
+ private dealNodeAdapterConfig;
60
62
  }
61
63
  export type { Cloudbase };
62
64
  export declare const cloudbase: ICloudbase;
package/dist/cjs/index.js CHANGED
@@ -122,25 +122,29 @@ var Cloudbase = (function () {
122
122
  configurable: true
123
123
  });
124
124
  Cloudbase.prototype.init = function (config) {
125
- var _a;
125
+ var _a, _b, _c;
126
+ config.endPointMode = config.endPointMode || 'CLOUD_API';
127
+ if (!adapter_1.Platform.adapter) {
128
+ this.useDefaultAdapter();
129
+ }
130
+ config = this.dealNodeAdapterConfig(config);
126
131
  if (!config.env) {
127
132
  throw new Error(JSON.stringify({
128
133
  code: ERRORS.INVALID_PARAMS,
129
134
  msg: 'env must not be specified',
130
135
  }));
131
136
  }
132
- if (!adapter_1.Platform.adapter) {
133
- this.useDefaultAdapter();
134
- }
137
+ this.isInitialized(config);
135
138
  var reqConfig = {
136
- timeout: config.timeout || 5000,
139
+ timeout: config.timeout || 15000,
137
140
  timeoutMsg: "[".concat((0, common_1.getSdkName)(), "][REQUEST TIMEOUT] request had been abort since didn't finished within").concat(config.timeout / 1000, "s"),
141
+ auth: config.auth,
138
142
  };
139
143
  this.requestClient = new adapter_1.Platform.adapter.reqClass(reqConfig);
140
144
  this.cloudbaseConfig = __assign(__assign(__assign({}, DEFAULT_INIT_CONFIG), config), { i18n: (0, lang_1.i18nProxy)(adapter_1.Platform, config) });
141
145
  delete this.cloudbaseConfig.lang;
142
146
  this.cloudbaseConfig.timeout = this.formatTimeout(this.cloudbaseConfig.timeout);
143
- var _b = this.cloudbaseConfig, env = _b.env, persistence = _b.persistence, debug = _b.debug, timeout = _b.timeout, oauthClient = _b.oauthClient, i18n = _b.i18n;
147
+ var _d = this.cloudbaseConfig, env = _d.env, persistence = _d.persistence, debug = _d.debug, timeout = _d.timeout, oauthClient = _d.oauthClient, i18n = _d.i18n;
144
148
  (0, cache_1.initCache)({ env: env, persistence: persistence, debug: debug, platformInfo: this.platform });
145
149
  (0, common_1.setRegionLevelEndpoint)(env, config.region || '');
146
150
  (0, common_1.setGatewayEndPointWithEnv)(env, common_1.DEFAULT_PROTOCOL, config.region || '');
@@ -153,10 +157,14 @@ var Cloudbase = (function () {
153
157
  _fromApp: app,
154
158
  i18n: i18n,
155
159
  endPointMode: config.endPointMode,
160
+ auth: config.auth,
156
161
  });
157
162
  app.requestClient = this.requestClient;
158
163
  (_a = this === null || this === void 0 ? void 0 : this.fire) === null || _a === void 0 ? void 0 : _a.call(this, 'cloudbase_init', app);
159
164
  this.try2InitAuth(app);
165
+ if ((_b = adapter_1.Platform.adapter) === null || _b === void 0 ? void 0 : _b.nodeTool) {
166
+ (_c = adapter_1.Platform.adapter) === null || _c === void 0 ? void 0 : _c.nodeTool(app, this.cloudbaseConfig);
167
+ }
160
168
  return app;
161
169
  };
162
170
  Cloudbase.prototype.updateConfig = function (config) {
@@ -211,6 +219,20 @@ var Cloudbase = (function () {
211
219
  Cloudbase.prototype.registerSdkName = function (name) {
212
220
  (0, common_1.setSdkName)(name);
213
221
  };
222
+ Cloudbase.prototype.isInitialized = function (config) {
223
+ if (config === void 0) { config = this.cloudbaseConfig; }
224
+ var PLACEHOLDER_PATTERNS = [
225
+ 'your-env-id', 'your-envid', 'your_env_id',
226
+ 'xxx-yyy', 'xxxx-yyy', 'envId', 'env-id',
227
+ 'your-environment-id', 'REPLACE_ME',
228
+ ];
229
+ if (PLACEHOLDER_PATTERNS.some(function (p) { return config.env.toLowerCase() === p.toLowerCase(); })) {
230
+ printWarn(ERRORS.INVALID_PARAMS, "[CloudBase] \u68C0\u6D4B\u5230\u73AF\u5883 ID \"".concat(config.env, "\" \u53EF\u80FD\u662F\u5360\u4F4D\u7B26\uFF0C\u8BF7\u66FF\u6362\u4E3A\u771F\u5B9E\u7684\u73AF\u5883 ID\u3002\n")
231
+ + ' 获取方式:登录腾讯云开发平台 → 环境管理 → 环境设置 → 环境 ID\n'
232
+ + ' 建议通过环境变量配置:process.env.CLOUDBASE_ENV 或 import.meta.env.VITE_CLOUDBASE_ENV');
233
+ }
234
+ return !!(config === null || config === void 0 ? void 0 : config.env);
235
+ };
214
236
  Cloudbase.prototype.registerEndPoint = function (url, protocol) {
215
237
  (0, common_1.setEndPointInfo)({ baseUrl: url, protocol: protocol, env: this.config.env, endPointKey: 'CLOUD_API' });
216
238
  };
@@ -257,6 +279,20 @@ var Cloudbase = (function () {
257
279
  console.log('try2InitAuth error:', error);
258
280
  }
259
281
  };
282
+ Cloudbase.prototype.dealNodeAdapterConfig = function (config) {
283
+ var _a, _b;
284
+ if (typeof process !== 'undefined' && typeof process.env !== 'undefined' && !process.env.IS_BROWSER_BUILD && ((_a = adapter_1.Platform.adapter) === null || _a === void 0 ? void 0 : _a.getSecretInfo)) {
285
+ var secretInfo = (_b = adapter_1.Platform.adapter) === null || _b === void 0 ? void 0 : _b.getSecretInfo(config);
286
+ config.auth = __assign(__assign({}, config.auth), { secretId: secretInfo.secretId, secretKey: secretInfo.secretKey, sessionToken: secretInfo.sessionToken, secretType: secretInfo.secretType });
287
+ if (!config.env) {
288
+ config.env = secretInfo.env;
289
+ }
290
+ if (!config.accessKey && secretInfo.accessKey) {
291
+ config.accessKey = secretInfo.accessKey;
292
+ }
293
+ }
294
+ return config;
295
+ };
260
296
  __decorate([
261
297
  catchErrorsDecorator({
262
298
  mode: 'sync',
@@ -291,4 +327,4 @@ var Cloudbase = (function () {
291
327
  exports.cloudbase = new Cloudbase();
292
328
  exports.cloudbase.useAdapters((0, adapter_1.getWxDefaultAdapter)());
293
329
  exports.default = exports.cloudbase;
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEU7QUFhMUUsOENBQWtFO0FBQ2xFLDBDQUE4RDtBQUc5RCxzQ0FBd0U7QUFFeEUsMENBQStEO0FBQy9ELDZDQVcyQjtBQUMzQixvQ0FBOEM7QUFDOUMsNkNBQW9EO0FBQTNDLHlHQUFBLGVBQWUsT0FBQTtBQUN4QixvQ0FBbUM7QUFBMUIsNkZBQUEsS0FBSyxPQUFBO0FBQ04sSUFBQSxXQUFXLEdBQXdCLG9CQUFRLFlBQWhDLEVBQUUsaUJBQWlCLEdBQUssb0JBQVEsa0JBQWIsQ0FBYTtBQUMzQyxJQUFBLE1BQU0sR0FBeUIscUJBQVMsT0FBbEMsRUFBRSxrQkFBa0IsR0FBSyxxQkFBUyxtQkFBZCxDQUFjO0FBQ3hDLElBQUEsU0FBUyxHQUFLLGlCQUFLLFVBQVYsQ0FBVTtBQUNuQixJQUFBLG9CQUFvQixHQUFLLG1CQUFPLHFCQUFaLENBQVk7QUFLeEMsSUFBTSxtQkFBbUIsR0FBOEI7SUFDckQsT0FBTyxFQUFFLEtBQUs7SUFDZCxXQUFXLEVBQUUsT0FBTztDQUNyQixDQUFBO0FBR0QsSUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7QUFFbEMsSUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFBO0FBRXZCLElBQU0sWUFBWSxHQUE0QixFQUFFLENBQUE7QUFFaEQ7SUFVRSxtQkFBWSxNQUF5QjtRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFBO1FBQzdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBQSxzQkFBYSxHQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVELHNCQUFJLDZCQUFNO2FBQVY7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUE7UUFDN0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQkFBUTthQUFaO1lBQ0UsT0FBTyxrQkFBUSxDQUFBO1FBQ2pCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNEJBQUs7YUFBVDtZQUNFLE9BQU8sSUFBQSx1QkFBZSxFQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxpQ0FBVTthQUFkO1lBQ0UsT0FBTyxJQUFBLHFCQUFhLEVBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoRCxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDhCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUEsMkJBQWlCLEVBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwRCxDQUFDOzs7T0FBQTtJQVlNLHdCQUFJLEdBQUosVUFBSyxNQUEyQzs7UUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztnQkFDM0IsR0FBRyxFQUFFLDJCQUEyQjthQUNqQyxDQUFDLENBQUUsQ0FBQTtTQUNMO1FBSUQsSUFBSSxDQUFDLGtCQUFRLENBQUMsT0FBTyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1NBQ3pCO1FBRUQsSUFBTSxTQUFTLEdBQW1CO1lBQ2hDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUk7WUFDL0IsVUFBVSxFQUFFLFdBQUksSUFBQSxtQkFBVSxHQUFFLG1GQUMxQixNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksTUFDcEI7U0FDSixDQUFBO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGtCQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUU3RCxJQUFJLENBQUMsZUFBZSxrQ0FDZixtQkFBbUIsR0FDbkIsTUFBTSxLQUNULElBQUksRUFBRSxJQUFBLGdCQUFTLEVBQUMsa0JBQVEsRUFBRSxNQUFNLENBQUMsR0FDbEMsQ0FBQTtRQUVELE9BQVEsSUFBSSxDQUFDLGVBQXVCLENBQUMsSUFBSSxDQUFBO1FBRXpDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUV6RSxJQUFBLEtBQTBELElBQUksQ0FBQyxlQUFlLEVBQTVFLEdBQUcsU0FBQSxFQUFFLFdBQVcsaUJBQUEsRUFBRSxLQUFLLFdBQUEsRUFBRSxPQUFPLGFBQUEsRUFBRSxXQUFXLGlCQUFBLEVBQUUsSUFBSSxVQUF5QixDQUFBO1FBQ3BGLElBQUEsaUJBQVMsRUFBQyxFQUFFLEdBQUcsS0FBQSxFQUFFLFdBQVcsYUFBQSxFQUFFLEtBQUssT0FBQSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUVuRSxJQUFBLCtCQUFzQixFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2hELElBQUEsa0NBQXlCLEVBQUMsR0FBRyxFQUFFLHlCQUFnQixFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUE7UUFFckUsSUFBTSxHQUFHLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQy9DLElBQUEscUJBQVcsRUFBQztZQUNWLEdBQUcsS0FBQTtZQUNILE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDM0IsT0FBTyxTQUFBO1lBQ1AsV0FBVyxhQUFBO1lBQ1gsUUFBUSxFQUFFLEdBQUc7WUFDYixJQUFJLE1BQUE7WUFDSixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7U0FDbEMsQ0FBQyxDQUFBO1FBQ0YsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUNyQztRQUFBLE1BQUMsSUFBWSxhQUFaLElBQUksdUJBQUosSUFBSSxDQUFVLElBQUkscURBQUcsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFFN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUV0QixPQUFPLEdBQUcsQ0FBQTtJQUNaLENBQUM7SUFFTSxnQ0FBWSxHQUFuQixVQUFvQixNQUFnQztRQUMxQyxJQUFBLFdBQVcsR0FBWSxNQUFNLFlBQWxCLEVBQUUsS0FBSyxHQUFLLE1BQU0sTUFBWCxDQUFXO1FBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFFbEMsSUFBQSxpQkFBUyxFQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLFdBQVcsYUFBQSxFQUFFLEtBQUssT0FBQSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRU0sOEJBQVUsR0FBakIsVUFBa0IsSUFBVzs7UUFDM0IsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLE1BQUssTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksMENBQUUsSUFBSSxDQUFBO1lBQUUsT0FBTTtRQUU3RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO0lBQ3ZDLENBQUM7SUFFTSxxQ0FBaUIsR0FBeEIsVUFBeUIsR0FBd0I7UUFDL0MsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUE7SUFDOUIsQ0FBQztJQVVZLG1DQUFlLEdBQWYsVUFBZ0IsSUFBWSxFQUFFLElBQVM7Ozs7Ozt3QkFDNUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRTs0QkFDUixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0NBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztnQ0FDM0IsR0FBRyxFQUFFLG9CQUFhLElBQUksc0NBQW1DOzZCQUMxRCxDQUFDLENBQUUsQ0FBQTt5QkFDTDt3QkFFTSxXQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFBOzRCQUFuQyxXQUFPLFNBQTRCLEVBQUE7Ozs7S0FDcEM7SUFFTSwrQkFBVyxHQUFsQixVQUFtQixRQUErQyxFQUFFLE9BQWE7UUFDekUsSUFBQSxLQUF1QixXQUFXLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBekQsT0FBTyxhQUFBLEVBQUUsT0FBTyxhQUF5QyxDQUFBO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLGtCQUFRLENBQUMsT0FBTyxHQUFHLE9BQThCLENBQUMsQ0FBQTtRQUM5RCxPQUFPLElBQUksQ0FBQyxrQkFBUSxDQUFDLE9BQU8sR0FBRyxPQUFpQixDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVNLGdDQUFZLEdBQW5CLFVBQW9CLElBQW9CO1FBQ3RDLElBQUEsd0JBQVksRUFBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVNLHFDQUFpQixHQUF4QixVQUF5QixTQUE4QjtRQUNyRCxJQUFBLDZCQUFpQixFQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRU0sbUNBQWUsR0FBdEIsVUFBdUIsT0FBZTtRQUNwQyxJQUFBLHNCQUFhLEVBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDeEIsQ0FBQztJQUVNLG1DQUFlLEdBQXRCLFVBQXVCLElBQVk7UUFDakMsSUFBQSxtQkFBVSxFQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2xCLENBQUM7SUFHTSxvQ0FBZ0IsR0FBdkIsVUFBd0IsR0FBVyxFQUFFLFFBQTJCO1FBQzlELElBQUEsd0JBQWUsRUFBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxVQUFBLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQzdGLENBQUM7SUFHTSwyQ0FBdUIsR0FBOUIsVUFBK0IsS0FBMEI7UUFDdkQsSUFBQSx3QkFBZSxFQUFDO1lBQ2QsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRztZQUNwQixXQUFXLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDdEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUE7SUFDSixDQUFDO0lBR00sc0NBQWtCLEdBQXpCLFVBQTBCLEdBQWdCO1FBQ3hDLElBQU0sSUFBSSxHQUFHLElBQUEsd0JBQWUsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNsRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFBO0lBQ0gsQ0FBQztJQUdNLGdDQUFZLEdBQW5CLFVBQW9CLEdBQUc7UUFDckIsT0FBTyxpQkFBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRU8scUNBQWlCLEdBQXpCO1FBQ1EsSUFBQSxLQUF1QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBbkQsT0FBTyxhQUFBLEVBQUUsT0FBTyxhQUFtQyxDQUFBO1FBQzNELGtCQUFRLENBQUMsT0FBTyxHQUFHLE9BQThCLENBQUE7UUFDakQsa0JBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBaUIsQ0FBQTtJQUN0QyxDQUFDO0lBRU8saUNBQWEsR0FBckIsVUFBc0IsT0FBZTtRQUNuQyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssT0FBTyxHQUFHLFdBQVc7Z0JBQ3hCLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLDhDQUE4QyxDQUFDLENBQUE7Z0JBQ2hGLE9BQU8sV0FBVyxDQUFBO1lBQ3BCLEtBQUssT0FBTyxHQUFHLFdBQVc7Z0JBQ3hCLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLDJDQUEyQyxDQUFDLENBQUE7Z0JBQzdFLE9BQU8sV0FBVyxDQUFBO1lBQ3BCO2dCQUNFLE9BQU8sT0FBTyxDQUFBO1NBQ2pCO0lBQ0gsQ0FBQztJQUVPLGdDQUFZLEdBQXBCLFVBQXFCLEdBQUc7UUFDdEIsSUFBSTtZQUNGLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtTQUNYO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQzFDO0lBQ0gsQ0FBQztJQTVLTTtRQVZOLG9CQUFvQixDQUFDO1lBQ3BCLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFDVixzQ0FBc0M7Z0JBQ3RDLG1MQUFtTDtnQkFDbkwsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7O3dDQUN3RCxTQUFTO3lDQXVEbEU7SUE0Qlk7UUFUWixvQkFBb0IsQ0FBQztZQUNwQixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFDVix1Q0FBdUM7Z0JBQ3ZDLGdEQUFnRDtnQkFDaEQsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7OztvREFXRDtJQWdGSCxnQkFBQztDQUFBLEFBNU5ELElBNE5DO0FBTVksUUFBQSxTQUFTLEdBQWUsSUFBSSxTQUFTLEVBQUUsQ0FBQTtBQUVwRCxpQkFBUyxDQUFDLFdBQVcsQ0FBQyxJQUFBLDZCQUFtQixHQUFFLENBQUMsQ0FBQTtBQUc1QyxrQkFBZSxpQkFBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRhcHRlcnMsIGNvbnN0YW50cywgdXRpbHMsIGhlbHBlcnMgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcydcbmltcG9ydCB7IFNES0FkYXB0ZXJJbnRlcmZhY2UsIENsb3VkYmFzZUFkYXB0ZXIsIElSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSdcbmltcG9ydCB7XG4gIElDbG91ZGJhc2VDb25maWcsXG4gIElDbG91ZGJhc2VVcGdyYWRlZENvbmZpZyxcbiAgSUNsb3VkYmFzZSxcbiAgSUNsb3VkYmFzZUV4dGVuc2lvbixcbiAgS1YsXG4gIElDbG91ZGJhc2VQbGF0Zm9ybUluZm8sXG4gIEVuZFBvaW50S2V5LFxuICBJQ2xvdWRiYXNlQXBpcyxcbn0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IElDbG91ZGJhc2VBdXRoIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9hdXRoJ1xuaW1wb3J0IHsgcmVnaXN0ZXJDb21wb25lbnQsIHJlZ2lzdGVySG9vayB9IGZyb20gJy4vbGlicy9jb21wb25lbnQnXG5pbXBvcnQgeyBnZXRXeERlZmF1bHRBZGFwdGVyLCBQbGF0Zm9ybSB9IGZyb20gJy4vbGlicy9hZGFwdGVyJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCwgSUNsb3VkYmFzZUhvb2sgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCdcbmltcG9ydCB7IElDbG91ZGJhc2VDYWNoZSB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY2FjaGUnXG5pbXBvcnQgeyBpbml0Q2FjaGUsIGdldENhY2hlQnlFbnZJZCwgZ2V0TG9jYWxDYWNoZSB9IGZyb20gJy4vbGlicy9jYWNoZSdcbmltcG9ydCB7IElDbG91ZGJhc2VSZXF1ZXN0IH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9yZXF1ZXN0J1xuaW1wb3J0IHsgaW5pdFJlcXVlc3QsIGdldFJlcXVlc3RCeUVudklkIH0gZnJvbSAnLi9saWJzL3JlcXVlc3QnXG5pbXBvcnQge1xuICBnZXRTZGtOYW1lLFxuICBzZXRTZGtWZXJzaW9uLFxuICBzZXRSZWdpb25MZXZlbEVuZHBvaW50LFxuICBzZXRTZGtOYW1lLFxuICBzZXRHYXRld2F5RW5kUG9pbnRXaXRoRW52LFxuICB0eXBlIElTZXRFbmRQb2ludFdpdGhLZXksXG4gIHNldEVuZFBvaW50SW5mbyxcbiAgZ2V0RW5kUG9pbnRJbmZvLFxuICBnZXRTZGtWZXJzaW9uLFxuICBERUZBVUxUX1BST1RPQ09MLFxufSBmcm9tICcuL2NvbnN0YW50cy9jb21tb24nXG5pbXBvcnQgeyBpMThuUHJveHksIExBTkdTIH0gZnJvbSAnLi9saWJzL2xhbmcnXG5leHBvcnQgeyBnZXRCYXNlRW5kUG9pbnQgfSBmcm9tICcuL2NvbnN0YW50cy9jb21tb24nXG5leHBvcnQgeyBMQU5HUyB9IGZyb20gJy4vbGlicy9sYW5nJ1xuY29uc3QgeyB1c2VBZGFwdGVycywgdXNlRGVmYXVsdEFkYXB0ZXIgfSA9IGFkYXB0ZXJzXG5jb25zdCB7IEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgcHJpbnRXYXJuIH0gPSB1dGlsc1xuY29uc3QgeyBjYXRjaEVycm9yc0RlY29yYXRvciB9ID0gaGVscGVyc1xuXG4vKipcbiAqIEBjb25zdGFudCDpu5jorqTphY3nva5cbiAqL1xuY29uc3QgREVGQVVMVF9JTklUX0NPTkZJRzogUGFydGlhbDxJQ2xvdWRiYXNlQ29uZmlnPiA9IHtcbiAgdGltZW91dDogMTUwMDAsXG4gIHBlcnNpc3RlbmNlOiAnbG9jYWwnLCAvLyDmjIHkuYXljJblrZjlgqjnsbvlnotcbn1cblxuLy8gdGltZW91dOS4iumZkDEw5YiG6ZKfXG5jb25zdCBNQVhfVElNRU9VVCA9IDEwMDAgKiA2MCAqIDEwXG4vLyB0aW1lb3V05LiL6ZmQMTAwbXNcbmNvbnN0IE1JTl9USU1FT1VUID0gMTAwXG5cbmNvbnN0IGV4dGVuc2lvbk1hcDogS1Y8SUNsb3VkYmFzZUV4dGVuc2lvbj4gPSB7fVxuXG5jbGFzcyBDbG91ZGJhc2UgaW1wbGVtZW50cyBJQ2xvdWRiYXNlIHtcbiAgcHVibGljIGF1dGhJbnN0YW5jZTogSUNsb3VkYmFzZUF1dGhcbiAgcHVibGljIG9hdXRoSW5zdGFuY2U6IGFueVxuICBwdWJsaWMgcmVxdWVzdENsaWVudDogYW55XG4gIHB1YmxpYyBvYXV0aENsaWVudDogYW55XG4gIHB1YmxpYyB2ZXJzaW9uOiBzdHJpbmdcbiAgcHVibGljIGF1dGg6IElDbG91ZGJhc2VbJ2F1dGgnXSAmIElDbG91ZGJhc2VBdXRoXG4gIHB1YmxpYyBhcGlzOiBJQ2xvdWRiYXNlQXBpc1xuICBwcml2YXRlIGNsb3VkYmFzZUNvbmZpZzogSUNsb3VkYmFzZUNvbmZpZ1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IElDbG91ZGJhc2VDb25maWcpIHtcbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZyA9IGNvbmZpZyA/IGNvbmZpZyA6IHRoaXMuY2xvdWRiYXNlQ29uZmlnXG4gICAgdGhpcy5hdXRoSW5zdGFuY2UgPSBudWxsXG4gICAgdGhpcy5vYXV0aEluc3RhbmNlID0gbnVsbFxuICAgIHRoaXMudmVyc2lvbiA9IGdldFNka1ZlcnNpb24oKVxuICB9XG5cbiAgZ2V0IGNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5jbG91ZGJhc2VDb25maWdcbiAgfVxuXG4gIGdldCBwbGF0Zm9ybSgpOiBJQ2xvdWRiYXNlUGxhdGZvcm1JbmZvIHtcbiAgICByZXR1cm4gUGxhdGZvcm1cbiAgfVxuXG4gIGdldCBjYWNoZSgpOiBJQ2xvdWRiYXNlQ2FjaGUge1xuICAgIHJldHVybiBnZXRDYWNoZUJ5RW52SWQodGhpcy5jbG91ZGJhc2VDb25maWcuZW52KVxuICB9XG5cbiAgZ2V0IGxvY2FsQ2FjaGUoKTogSUNsb3VkYmFzZUNhY2hlIHtcbiAgICByZXR1cm4gZ2V0TG9jYWxDYWNoZSh0aGlzLmNsb3VkYmFzZUNvbmZpZy5lbnYpXG4gIH1cblxuICBnZXQgcmVxdWVzdCgpOiBJQ2xvdWRiYXNlUmVxdWVzdCB7XG4gICAgcmV0dXJuIGdldFJlcXVlc3RCeUVudklkKHRoaXMuY2xvdWRiYXNlQ29uZmlnLmVudilcbiAgfVxuXG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgbW9kZTogJ3N5bmMnLFxuICAgIHRpdGxlOiAnQ2xvdWRiYXNlIOWIneWni+WMluWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBjbG91ZGJhc2UuaW5pdCgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5aaC5p6c5piv6Z2e5rWP6KeI5Zmo546v5aKD77yM5piv5ZCm6YWN572u5LqG5a6J5YWo5bqU55So5p2l5rqQ77yIaHR0cHM6Ly9kb2NzLmNsb3VkYmFzZS5uZXQvYXBpLXJlZmVyZW5jZS93ZWJ2My9hZGFwdGVyIyVFNyVBQyVBQy0yLSVFNiVBRCVBNSVFOSU4NSU4RCVFNyVCRCVBRSVFNSVBRSU4OSVFNSU4NSVBOCVFNSVCQSU5NCVFNyU5NCVBOCVFNiU5RCVBNSVFNiVCQSU5MO+8iScsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YCxcbiAgICBdLFxuICB9KVxuICBwdWJsaWMgaW5pdChjb25maWc6IElDbG91ZGJhc2VDb25maWcgJiB7IGxhbmc/OiBMQU5HUyB9KTogQ2xvdWRiYXNlIHtcbiAgICBpZiAoIWNvbmZpZy5lbnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiAnZW52IG11c3Qgbm90IGJlIHNwZWNpZmllZCcsXG4gICAgICB9KSwpXG4gICAgfVxuICAgIC8vIGNvbmZpZy5lbmRQb2ludE1vZGUgPSBjb25maWcuZW5kUG9pbnRNb2RlIHx8ICdHQVRFV0FZJ1xuXG4gICAgLy8g5Yid5aeL5YyW5pe26Iul5pyq5YW85a655bmz5Y+w77yM5YiZ5L2/55So6buY6K6kYWRhcHRlclxuICAgIGlmICghUGxhdGZvcm0uYWRhcHRlcikge1xuICAgICAgdGhpcy51c2VEZWZhdWx0QWRhcHRlcigpXG4gICAgfVxuXG4gICAgY29uc3QgcmVxQ29uZmlnOiBJUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIHRpbWVvdXQ6IGNvbmZpZy50aW1lb3V0IHx8IDUwMDAsXG4gICAgICB0aW1lb3V0TXNnOiBgWyR7Z2V0U2RrTmFtZSgpfV1bUkVRVUVTVCBUSU1FT1VUXSByZXF1ZXN0IGhhZCBiZWVuIGFib3J0IHNpbmNlIGRpZG4ndCBmaW5pc2hlZCB3aXRoaW4ke1xuICAgICAgICBjb25maWcudGltZW91dCAvIDEwMDBcbiAgICAgIH1zYCxcbiAgICB9XG5cbiAgICB0aGlzLnJlcXVlc3RDbGllbnQgPSBuZXcgUGxhdGZvcm0uYWRhcHRlci5yZXFDbGFzcyhyZXFDb25maWcpXG5cbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZyA9IHtcbiAgICAgIC4uLkRFRkFVTFRfSU5JVF9DT05GSUcsXG4gICAgICAuLi5jb25maWcsXG4gICAgICBpMThuOiBpMThuUHJveHkoUGxhdGZvcm0sIGNvbmZpZyksXG4gICAgfVxuXG4gICAgZGVsZXRlICh0aGlzLmNsb3VkYmFzZUNvbmZpZyBhcyBhbnkpLmxhbmdcbiAgICAvLyDkv67mraN0aW1lb3V05Y+W5YC8XG4gICAgdGhpcy5jbG91ZGJhc2VDb25maWcudGltZW91dCA9IHRoaXMuZm9ybWF0VGltZW91dCh0aGlzLmNsb3VkYmFzZUNvbmZpZy50aW1lb3V0KVxuICAgIC8vIOWIneWni+WMlmNhY2hl5ZKMcmVxdWVzdFxuICAgIGNvbnN0IHsgZW52LCBwZXJzaXN0ZW5jZSwgZGVidWcsIHRpbWVvdXQsIG9hdXRoQ2xpZW50LCBpMThuIH0gPSB0aGlzLmNsb3VkYmFzZUNvbmZpZ1xuICAgIGluaXRDYWNoZSh7IGVudiwgcGVyc2lzdGVuY2UsIGRlYnVnLCBwbGF0Zm9ybUluZm86IHRoaXMucGxhdGZvcm0gfSlcblxuICAgIHNldFJlZ2lvbkxldmVsRW5kcG9pbnQoZW52LCBjb25maWcucmVnaW9uIHx8ICcnKVxuICAgIHNldEdhdGV3YXlFbmRQb2ludFdpdGhFbnYoZW52LCBERUZBVUxUX1BST1RPQ09MLCBjb25maWcucmVnaW9uIHx8ICcnKVxuXG4gICAgY29uc3QgYXBwID0gbmV3IENsb3VkYmFzZSh0aGlzLmNsb3VkYmFzZUNvbmZpZylcbiAgICBpbml0UmVxdWVzdCh7XG4gICAgICBlbnYsXG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24gfHwgJycsXG4gICAgICB0aW1lb3V0LFxuICAgICAgb2F1dGhDbGllbnQsXG4gICAgICBfZnJvbUFwcDogYXBwLFxuICAgICAgaTE4bixcbiAgICAgIGVuZFBvaW50TW9kZTogY29uZmlnLmVuZFBvaW50TW9kZSxcbiAgICB9KVxuICAgIGFwcC5yZXF1ZXN0Q2xpZW50ID0gdGhpcy5yZXF1ZXN0Q2xpZW50XG4gICAgOyh0aGlzIGFzIGFueSk/LmZpcmU/LignY2xvdWRiYXNlX2luaXQnLCBhcHApXG5cbiAgICB0aGlzLnRyeTJJbml0QXV0aChhcHApXG5cbiAgICByZXR1cm4gYXBwXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29uZmlnKGNvbmZpZzogSUNsb3VkYmFzZVVwZ3JhZGVkQ29uZmlnKSB7XG4gICAgY29uc3QgeyBwZXJzaXN0ZW5jZSwgZGVidWcgfSA9IGNvbmZpZ1xuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnLnBlcnNpc3RlbmNlID0gcGVyc2lzdGVuY2VcbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZy5kZWJ1ZyA9IGRlYnVnXG4gICAgLy8gcGVyc2lzdGVuY2XmlLnliqjlvbHlk41jYWNoZVxuICAgIGluaXRDYWNoZSh7IGVudjogdGhpcy5jbG91ZGJhc2VDb25maWcuZW52LCBwZXJzaXN0ZW5jZSwgZGVidWcsIHBsYXRmb3JtSW5mbzogdGhpcy5wbGF0Zm9ybSB9KVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUxhbmcobGFuZzogTEFOR1MpIHtcbiAgICBpZiAoIWxhbmcgfHwgbGFuZyA9PT0gdGhpcy5jbG91ZGJhc2VDb25maWcuaTE4bj8ubGFuZykgcmV0dXJuXG5cbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZy5pMThuLmxhbmcgPSBsYW5nXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJFeHRlbnNpb24oZXh0OiBJQ2xvdWRiYXNlRXh0ZW5zaW9uKSB7XG4gICAgZXh0ZW5zaW9uTWFwW2V4dC5uYW1lXSA9IGV4dFxuICB9XG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgdGl0bGU6ICfosIPnlKjmianlsZXog73lipvlpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggaW52b2tlRXh0ZW5zaW9uKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDooqvosIPnlKjnmoTmianlsZXog73lipvmmK/lkKblt7Lnu4/lronoo4XlubbpgJrov4cgcmVnaXN0ZXJFeHRlbnNpb24oKSDms6jlhownLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWAsXG4gICAgXSxcbiAgfSlcbiAgcHVibGljIGFzeW5jIGludm9rZUV4dGVuc2lvbihuYW1lOiBzdHJpbmcsIG9wdHM6IGFueSkge1xuICAgIGNvbnN0IGV4dCA9IGV4dGVuc2lvbk1hcFtuYW1lXVxuICAgIGlmICghZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYGV4dGVuc2lvbjoke25hbWV9IG11c3QgYmUgcmVnaXN0ZXJlZCBiZWZvcmUgaW52b2tlYCxcbiAgICAgIH0pLClcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgZXh0Lmludm9rZShvcHRzLCB0aGlzKVxuICB9XG5cbiAgcHVibGljIHVzZUFkYXB0ZXJzKGFkYXB0ZXJzOiBDbG91ZGJhc2VBZGFwdGVyIHwgQ2xvdWRiYXNlQWRhcHRlcltdLCBvcHRpb25zPzogYW55KSB7XG4gICAgY29uc3QgeyBhZGFwdGVyLCBydW50aW1lIH0gPSB1c2VBZGFwdGVycyhhZGFwdGVycywgb3B0aW9ucykgfHwge31cbiAgICBhZGFwdGVyICYmIChQbGF0Zm9ybS5hZGFwdGVyID0gYWRhcHRlciBhcyBTREtBZGFwdGVySW50ZXJmYWNlKVxuICAgIHJ1bnRpbWUgJiYgKFBsYXRmb3JtLnJ1bnRpbWUgPSBydW50aW1lIGFzIHN0cmluZylcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlckhvb2soaG9vazogSUNsb3VkYmFzZUhvb2spIHtcbiAgICByZWdpc3Rlckhvb2soQ2xvdWRiYXNlLCBob29rKVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudDogSUNsb3VkYmFzZUNvbXBvbmVudCkge1xuICAgIHJlZ2lzdGVyQ29tcG9uZW50KENsb3VkYmFzZSwgY29tcG9uZW50KVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBzZXRTZGtWZXJzaW9uKHZlcnNpb24pXG4gICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvblxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyU2RrTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBzZXRTZGtOYW1lKG5hbWUpXG4gIH1cblxuICAvKiog6K6+572uIHRjYiBhcGkg55qEIGVuZHBvaW50ICovXG4gIHB1YmxpYyByZWdpc3RlckVuZFBvaW50KHVybDogc3RyaW5nLCBwcm90b2NvbD86ICdodHRwJyB8ICdodHRwcycpIHtcbiAgICBzZXRFbmRQb2ludEluZm8oeyBiYXNlVXJsOiB1cmwsIHByb3RvY29sLCBlbnY6IHRoaXMuY29uZmlnLmVudiwgZW5kUG9pbnRLZXk6ICdDTE9VRF9BUEknIH0pXG4gIH1cblxuICAvKiog6K6+572u572R5YWzL3RjYiBhcGnnmoQgZW5kUG9pbnTvvIzpgJrov4cga2V5IOaMh+WumiAqL1xuICBwdWJsaWMgcmVnaXN0ZXJFbmRQb2ludFdpdGhLZXkocHJvcHM6IElTZXRFbmRQb2ludFdpdGhLZXkpIHtcbiAgICBzZXRFbmRQb2ludEluZm8oe1xuICAgICAgZW52OiB0aGlzLmNvbmZpZy5lbnYsXG4gICAgICBlbmRQb2ludEtleTogcHJvcHMua2V5LFxuICAgICAgYmFzZVVybDogcHJvcHMudXJsLFxuICAgICAgcHJvdG9jb2w6IHByb3BzLnByb3RvY29sLFxuICAgIH0pXG4gIH1cblxuICAvKiog5ou/572R5YWzL3RjYiBhcGnnmoQgZW5kUG9pbnTvvIzpgJrov4cga2V5IOaMh+WumiAqL1xuICBwdWJsaWMgZ2V0RW5kUG9pbnRXaXRoS2V5KGtleTogRW5kUG9pbnRLZXkpIHtcbiAgICBjb25zdCBpbmZvID0gZ2V0RW5kUG9pbnRJbmZvKHRoaXMuY29uZmlnLmVudiwga2V5KVxuICAgIHJldHVybiB7XG4gICAgICBCQVNFX1VSTDogaW5mby5iYXNlVXJsLFxuICAgICAgUFJPVE9DT0w6IGluZm8ucHJvdG9jb2wsXG4gICAgfVxuICB9XG5cbiAgLy8g6Kej5p6QVVJM5Y+C5pWwXG4gIHB1YmxpYyBwYXJzZUNhcHRjaGEodXJsKSB7XG4gICAgcmV0dXJuIHV0aWxzLnBhcnNlQ2FwdGNoYSh1cmwpXG4gIH1cblxuICBwcml2YXRlIHVzZURlZmF1bHRBZGFwdGVyKCkge1xuICAgIGNvbnN0IHsgYWRhcHRlciwgcnVudGltZSB9ID0gdXNlRGVmYXVsdEFkYXB0ZXIuYmluZCh0aGlzKSgpXG4gICAgUGxhdGZvcm0uYWRhcHRlciA9IGFkYXB0ZXIgYXMgU0RLQWRhcHRlckludGVyZmFjZVxuICAgIFBsYXRmb3JtLnJ1bnRpbWUgPSBydW50aW1lIGFzIHN0cmluZ1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRUaW1lb3V0KHRpbWVvdXQ6IG51bWJlcikge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSB0aW1lb3V0ID4gTUFYX1RJTUVPVVQ6XG4gICAgICAgIHByaW50V2FybihFUlJPUlMuSU5WQUxJRF9QQVJBTVMsICd0aW1lb3V0IGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIHZhbHVlWzEwbWluXScpXG4gICAgICAgIHJldHVybiBNQVhfVElNRU9VVFxuICAgICAgY2FzZSB0aW1lb3V0IDwgTUlOX1RJTUVPVVQ6XG4gICAgICAgIHByaW50V2FybihFUlJPUlMuSU5WQUxJRF9QQVJBTVMsICd0aW1lb3V0IGlzIGxlc3MgdGhhbiBtYXhpbXVtIHZhbHVlWzEwMG1zXScpXG4gICAgICAgIHJldHVybiBNSU5fVElNRU9VVFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRpbWVvdXRcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyeTJJbml0QXV0aChhcHApIHtcbiAgICB0cnkge1xuICAgICAgYXBwLmF1dGgoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygndHJ5MkluaXRBdXRoIGVycm9yOicsIGVycm9yKVxuICAgIH1cbiAgfVxufVxuXG4vLyDnsbvlnovlr7zlh7pcbmV4cG9ydCB0eXBlIHsgQ2xvdWRiYXNlIH1cblxuLy8g5YC85a+85Ye6XG5leHBvcnQgY29uc3QgY2xvdWRiYXNlOiBJQ2xvdWRiYXNlID0gbmV3IENsb3VkYmFzZSgpXG5cbmNsb3VkYmFzZS51c2VBZGFwdGVycyhnZXRXeERlZmF1bHRBZGFwdGVyKCkpXG5cbi8vIOm7mOiupOWvvOWHuuWunuS+i1xuZXhwb3J0IGRlZmF1bHQgY2xvdWRiYXNlXG4iXX0=
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEU7QUFhMUUsOENBQWtFO0FBQ2xFLDBDQUE4RDtBQUc5RCxzQ0FBd0U7QUFFeEUsMENBQStEO0FBQy9ELDZDQVcyQjtBQUMzQixvQ0FBOEM7QUFDOUMsNkNBQW9EO0FBQTNDLHlHQUFBLGVBQWUsT0FBQTtBQUN4QixvQ0FBbUM7QUFBMUIsNkZBQUEsS0FBSyxPQUFBO0FBQ04sSUFBQSxXQUFXLEdBQXdCLG9CQUFRLFlBQWhDLEVBQUUsaUJBQWlCLEdBQUssb0JBQVEsa0JBQWIsQ0FBYTtBQUMzQyxJQUFBLE1BQU0sR0FBeUIscUJBQVMsT0FBbEMsRUFBRSxrQkFBa0IsR0FBSyxxQkFBUyxtQkFBZCxDQUFjO0FBQ3hDLElBQUEsU0FBUyxHQUFLLGlCQUFLLFVBQVYsQ0FBVTtBQUNuQixJQUFBLG9CQUFvQixHQUFLLG1CQUFPLHFCQUFaLENBQVk7QUFLeEMsSUFBTSxtQkFBbUIsR0FBOEI7SUFDckQsT0FBTyxFQUFFLEtBQUs7SUFDZCxXQUFXLEVBQUUsT0FBTztDQUNyQixDQUFBO0FBR0QsSUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7QUFFbEMsSUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFBO0FBRXZCLElBQU0sWUFBWSxHQUE0QixFQUFFLENBQUE7QUFFaEQ7SUFVRSxtQkFBWSxNQUF5QjtRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFBO1FBQzdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxD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RTtnQkFDZixNQUFNLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUE7YUFDNUI7WUFHRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFO2dCQUM3QyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUE7YUFDeEM7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQWhRTTtRQVZOLG9CQUFvQixDQUFDO1lBQ3BCLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFDVixzQ0FBc0M7Z0JBQ3RDLG1MQUFtTDtnQkFDbkwsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7O3dDQUN3RCxTQUFTO3lDQW9FbEU7SUE0Qlk7UUFUWixvQkFBb0IsQ0FBQztZQUNwQixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFDVix1Q0FBdUM7Z0JBQ3ZDLGdEQUFnRDtnQkFDaEQsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7OztvREFXRDtJQXVKSCxnQkFBQztDQUFBLEFBaFRELElBZ1RDO0FBTVksUUFBQSxTQUFTLEdBQWUsSUFBSSxTQUFTLEVBQUUsQ0FBQTtBQUVwRCxpQkFBUyxDQUFDLFdBQVcsQ0FBQyxJQUFBLDZCQUFtQixHQUFFLENBQUMsQ0FBQTtBQUc1QyxrQkFBZSxpQkFBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRhcHRlcnMsIGNvbnN0YW50cywgdXRpbHMsIGhlbHBlcnMgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcydcbmltcG9ydCB7IFNES0FkYXB0ZXJJbnRlcmZhY2UsIENsb3VkYmFzZUFkYXB0ZXIsIElSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSdcbmltcG9ydCB7XG4gIElDbG91ZGJhc2VDb25maWcsXG4gIElDbG91ZGJhc2VVcGdyYWRlZENvbmZpZyxcbiAgSUNsb3VkYmFzZSxcbiAgSUNsb3VkYmFzZUV4dGVuc2lvbixcbiAgS1YsXG4gIElDbG91ZGJhc2VQbGF0Zm9ybUluZm8sXG4gIEVuZFBvaW50S2V5LFxuICBJQ2xvdWRiYXNlQXBpcyxcbn0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IElDbG91ZGJhc2VBdXRoIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9hdXRoJ1xuaW1wb3J0IHsgcmVnaXN0ZXJDb21wb25lbnQsIHJlZ2lzdGVySG9vayB9IGZyb20gJy4vbGlicy9jb21wb25lbnQnXG5pbXBvcnQgeyBnZXRXeERlZmF1bHRBZGFwdGVyLCBQbGF0Zm9ybSB9IGZyb20gJy4vbGlicy9hZGFwdGVyJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCwgSUNsb3VkYmFzZUhvb2sgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCdcbmltcG9ydCB7IElDbG91ZGJhc2VDYWNoZSB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY2FjaGUnXG5pbXBvcnQgeyBpbml0Q2FjaGUsIGdldENhY2hlQnlFbnZJZCwgZ2V0TG9jYWxDYWNoZSB9IGZyb20gJy4vbGlicy9jYWNoZSdcbmltcG9ydCB7IElDbG91ZGJhc2VSZXF1ZXN0IH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9yZXF1ZXN0J1xuaW1wb3J0IHsgaW5pdFJlcXVlc3QsIGdldFJlcXVlc3RCeUVudklkIH0gZnJvbSAnLi9saWJzL3JlcXVlc3QnXG5pbXBvcnQge1xuICBnZXRTZGtOYW1lLFxuICBzZXRTZGtWZXJzaW9uLFxuICBzZXRSZWdpb25MZXZlbEVuZHBvaW50LFxuICBzZXRTZGtOYW1lLFxuICBzZXRHYXRld2F5RW5kUG9pbnRXaXRoRW52LFxuICB0eXBlIElTZXRFbmRQb2ludFdpdGhLZXksXG4gIHNldEVuZFBvaW50SW5mbyxcbiAgZ2V0RW5kUG9pbnRJbmZvLFxuICBnZXRTZGtWZXJzaW9uLFxuICBERUZBVUxUX1BST1RPQ09MLFxufSBmcm9tICcuL2NvbnN0YW50cy9jb21tb24nXG5pbXBvcnQgeyBpMThuUHJveHksIExBTkdTIH0gZnJvbSAnLi9saWJzL2xhbmcnXG5leHBvcnQgeyBnZXRCYXNlRW5kUG9pbnQgfSBmcm9tICcuL2NvbnN0YW50cy9jb21tb24nXG5leHBvcnQgeyBMQU5HUyB9IGZyb20gJy4vbGlicy9sYW5nJ1xuY29uc3QgeyB1c2VBZGFwdGVycywgdXNlRGVmYXVsdEFkYXB0ZXIgfSA9IGFkYXB0ZXJzXG5jb25zdCB7IEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgcHJpbnRXYXJuIH0gPSB1dGlsc1xuY29uc3QgeyBjYXRjaEVycm9yc0RlY29yYXRvciB9ID0gaGVscGVyc1xuXG4vKipcbiAqIEBjb25zdGFudCDpu5jorqTphY3nva5cbiAqL1xuY29uc3QgREVGQVVMVF9JTklUX0NPTkZJRzogUGFydGlhbDxJQ2xvdWRiYXNlQ29uZmlnPiA9IHtcbiAgdGltZW91dDogMTUwMDAsXG4gIHBlcnNpc3RlbmNlOiAnbG9jYWwnLCAvLyDmjIHkuYXljJblrZjlgqjnsbvlnotcbn1cblxuLy8gdGltZW91dOS4iumZkDEw5YiG6ZKfXG5jb25zdCBNQVhfVElNRU9VVCA9IDEwMDAgKiA2MCAqIDEwXG4vLyB0aW1lb3V05LiL6ZmQMTAwbXNcbmNvbnN0IE1JTl9USU1FT1VUID0gMTAwXG5cbmNvbnN0IGV4dGVuc2lvbk1hcDogS1Y8SUNsb3VkYmFzZUV4dGVuc2lvbj4gPSB7fVxuXG5jbGFzcyBDbG91ZGJhc2UgaW1wbGVtZW50cyBJQ2xvdWRiYXNlIHtcbiAgcHVibGljIGF1dGhJbnN0YW5jZTogSUNsb3VkYmFzZUF1dGhcbiAgcHVibGljIG9hdXRoSW5zdGFuY2U6IGFueVxuICBwdWJsaWMgcmVxdWVzdENsaWVudDogYW55XG4gIHB1YmxpYyBvYXV0aENsaWVudDogYW55XG4gIHB1YmxpYyB2ZXJzaW9uOiBzdHJpbmdcbiAgcHVibGljIGF1dGg6IElDbG91ZGJhc2VbJ2F1dGgnXSAmIElDbG91ZGJhc2VBdXRoXG4gIHB1YmxpYyBhcGlzOiBJQ2xvdWRiYXNlQXBpc1xuICBwcml2YXRlIGNsb3VkYmFzZUNvbmZpZzogSUNsb3VkYmFzZUNvbmZpZ1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IElDbG91ZGJhc2VDb25maWcpIHtcbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZyA9IGNvbmZpZyA/IGNvbmZpZyA6IHRoaXMuY2xvdWRiYXNlQ29uZmlnXG4gICAgdGhpcy5hdXRoSW5zdGFuY2UgPSBudWxsXG4gICAgdGhpcy5vYXV0aEluc3RhbmNlID0gbnVsbFxuICAgIHRoaXMudmVyc2lvbiA9IGdldFNka1ZlcnNpb24oKVxuICB9XG5cbiAgZ2V0IGNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5jbG91ZGJhc2VDb25maWdcbiAgfVxuXG4gIGdldCBwbGF0Zm9ybSgpOiBJQ2xvdWRiYXNlUGxhdGZvcm1JbmZvIHtcbiAgICByZXR1cm4gUGxhdGZvcm1cbiAgfVxuXG4gIGdldCBjYWNoZSgpOiBJQ2xvdWRiYXNlQ2FjaGUge1xuICAgIHJldHVybiBnZXRDYWNoZUJ5RW52SWQodGhpcy5jbG91ZGJhc2VDb25maWcuZW52KVxuICB9XG5cbiAgZ2V0IGxvY2FsQ2FjaGUoKTogSUNsb3VkYmFzZUNhY2hlIHtcbiAgICByZXR1cm4gZ2V0TG9jYWxDYWNoZSh0aGlzLmNsb3VkYmFzZUNvbmZpZy5lbnYpXG4gIH1cblxuICBnZXQgcmVxdWVzdCgpOiBJQ2xvdWRiYXNlUmVxdWVzdCB7XG4gICAgcmV0dXJuIGdldFJlcXVlc3RCeUVudklkKHRoaXMuY2xvdWRiYXNlQ29uZmlnLmVudilcbiAgfVxuXG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgbW9kZTogJ3N5bmMnLFxuICAgIHRpdGxlOiAnQ2xvdWRiYXNlIOWIneWni+WMluWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBjbG91ZGJhc2UuaW5pdCgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5aaC5p6c5piv6Z2e5rWP6KeI5Zmo546v5aKD77yM5piv5ZCm6YWN572u5LqG5a6J5YWo5bqU55So5p2l5rqQ77yIaHR0cHM6Ly9kb2NzLmNsb3VkYmFzZS5uZXQvYXBpLXJlZmVyZW5jZS93ZWJ2My9hZGFwdGVyIyVFNyVBQyVBQy0yLSVFNiVBRCVBNSVFOSU4NSU4RCVFNyVCRCVBRSVFNSVBRSU4OSVFNSU4NSVBOCVFNSVCQSU5NCVFNyU5NCVBOCVFNiU5RCVBNSVFNiVCQSU5MO+8iScsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YCxcbiAgICBdLFxuICB9KVxuICBwdWJsaWMgaW5pdChjb25maWc6IElDbG91ZGJhc2VDb25maWcgJiB7IGxhbmc/OiBMQU5HUyB9KTogQ2xvdWRiYXNlIHtcbiAgICBjb25maWcuZW5kUG9pbnRNb2RlID0gY29uZmlnLmVuZFBvaW50TW9kZSB8fCAnQ0xPVURfQVBJJ1xuXG4gICAgLy8g5Yid5aeL5YyW5pe26Iul5pyq5YW85a655bmz5Y+w77yM5YiZ5L2/55So6buY6K6kYWRhcHRlclxuICAgIGlmICghUGxhdGZvcm0uYWRhcHRlcikge1xuICAgICAgdGhpcy51c2VEZWZhdWx0QWRhcHRlcigpXG4gICAgfVxuXG4gICAgLy8g5Zyo5Yik5patY29uZmlnLmVuduS5i+WJje+8jOWFiOWkhOeQhm5vZGXnjq/looPnmoTphY3nva5cbiAgICBjb25maWcgPSB0aGlzLmRlYWxOb2RlQWRhcHRlckNvbmZpZyhjb25maWcpXG5cbiAgICBpZiAoIWNvbmZpZy5lbnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiAnZW52IG11c3Qgbm90IGJlIHNwZWNpZmllZCcsXG4gICAgICB9KSwpXG4gICAgfVxuXG4gICAgdGhpcy5pc0luaXRpYWxpemVkKGNvbmZpZylcblxuICAgIGNvbnN0IHJlcUNvbmZpZzogSVJlcXVlc3RDb25maWcgJiB7IGF1dGg6IElDbG91ZGJhc2VDb25maWdbJ2F1dGgnXSB9ID0ge1xuICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgfHwgMTUwMDAsXG4gICAgICB0aW1lb3V0TXNnOiBgWyR7Z2V0U2RrTmFtZSgpfV1bUkVRVUVTVCBUSU1FT1VUXSByZXF1ZXN0IGhhZCBiZWVuIGFib3J0IHNpbmNlIGRpZG4ndCBmaW5pc2hlZCB3aXRoaW4ke1xuICAgICAgICBjb25maWcudGltZW91dCAvIDEwMDBcbiAgICAgIH1zYCxcbiAgICAgIGF1dGg6IGNvbmZpZy5hdXRoLFxuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdENsaWVudCA9IG5ldyBQbGF0Zm9ybS5hZGFwdGVyLnJlcUNsYXNzKHJlcUNvbmZpZylcblxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnID0ge1xuICAgICAgLi4uREVGQVVMVF9JTklUX0NPTkZJRyxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGkxOG46IGkxOG5Qcm94eShQbGF0Zm9ybSwgY29uZmlnKSxcbiAgICB9XG5cbiAgICBkZWxldGUgKHRoaXMuY2xvdWRiYXNlQ29uZmlnIGFzIGFueSkubGFuZ1xuICAgIC8vIOS/ruato3RpbWVvdXTlj5blgLxcbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZy50aW1lb3V0ID0gdGhpcy5mb3JtYXRUaW1lb3V0KHRoaXMuY2xvdWRiYXNlQ29uZmlnLnRpbWVvdXQpXG4gICAgLy8g5Yid5aeL5YyWY2FjaGXlkoxyZXF1ZXN0XG4gICAgY29uc3QgeyBlbnYsIHBlcnNpc3RlbmNlLCBkZWJ1ZywgdGltZW91dCwgb2F1dGhDbGllbnQsIGkxOG4gfSA9IHRoaXMuY2xvdWRiYXNlQ29uZmlnXG4gICAgaW5pdENhY2hlKHsgZW52LCBwZXJzaXN0ZW5jZSwgZGVidWcsIHBsYXRmb3JtSW5mbzogdGhpcy5wbGF0Zm9ybSB9KVxuXG4gICAgc2V0UmVnaW9uTGV2ZWxFbmRwb2ludChlbnYsIGNvbmZpZy5yZWdpb24gfHwgJycpXG4gICAgc2V0R2F0ZXdheUVuZFBvaW50V2l0aEVudihlbnYsIERFRkFVTFRfUFJPVE9DT0wsIGNvbmZpZy5yZWdpb24gfHwgJycpXG5cbiAgICBjb25zdCBhcHAgPSBuZXcgQ2xvdWRiYXNlKHRoaXMuY2xvdWRiYXNlQ29uZmlnKVxuICAgIGluaXRSZXF1ZXN0KHtcbiAgICAgIGVudixcbiAgICAgIHJlZ2lvbjogY29uZmlnLnJlZ2lvbiB8fCAnJyxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBvYXV0aENsaWVudCxcbiAgICAgIF9mcm9tQXBwOiBhcHAsXG4gICAgICBpMThuLFxuICAgICAgZW5kUG9pbnRNb2RlOiBjb25maWcuZW5kUG9pbnRNb2RlLFxuICAgICAgYXV0aDogY29uZmlnLmF1dGgsXG4gICAgfSlcbiAgICBhcHAucmVxdWVzdENsaWVudCA9IHRoaXMucmVxdWVzdENsaWVudFxuICAgIDsodGhpcyBhcyBhbnkpPy5maXJlPy4oJ2Nsb3VkYmFzZV9pbml0JywgYXBwKVxuXG4gICAgdGhpcy50cnkySW5pdEF1dGgoYXBwKVxuXG4gICAgLy8gbm9kZeeOr+Wig+WPr+S7peS7jmFkYXB0ZXLojrflj5Zub2RlVG9vbOeahOaWueazlVxuICAgIGlmIChQbGF0Zm9ybS5hZGFwdGVyPy5ub2RlVG9vbCkge1xuICAgICAgUGxhdGZvcm0uYWRhcHRlcj8ubm9kZVRvb2woYXBwLCB0aGlzLmNsb3VkYmFzZUNvbmZpZylcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29uZmlnKGNvbmZpZzogSUNsb3VkYmFzZVVwZ3JhZGVkQ29uZmlnKSB7XG4gICAgY29uc3QgeyBwZXJzaXN0ZW5jZSwgZGVidWcgfSA9IGNvbmZpZ1xuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnLnBlcnNpc3RlbmNlID0gcGVyc2lzdGVuY2VcbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZy5kZWJ1ZyA9IGRlYnVnXG4gICAgLy8gcGVyc2lzdGVuY2XmlLnliqjlvbHlk41jYWNoZVxuICAgIGluaXRDYWNoZSh7IGVudjogdGhpcy5jbG91ZGJhc2VDb25maWcuZW52LCBwZXJzaXN0ZW5jZSwgZGVidWcsIHBsYXRmb3JtSW5mbzogdGhpcy5wbGF0Zm9ybSB9KVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUxhbmcobGFuZzogTEFOR1MpIHtcbiAgICBpZiAoIWxhbmcgfHwgbGFuZyA9PT0gdGhpcy5jbG91ZGJhc2VDb25maWcuaTE4bj8ubGFuZykgcmV0dXJuXG5cbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZy5pMThuLmxhbmcgPSBsYW5nXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJFeHRlbnNpb24oZXh0OiBJQ2xvdWRiYXNlRXh0ZW5zaW9uKSB7XG4gICAgZXh0ZW5zaW9uTWFwW2V4dC5uYW1lXSA9IGV4dFxuICB9XG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgdGl0bGU6ICfosIPnlKjmianlsZXog73lipvlpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggaW52b2tlRXh0ZW5zaW9uKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDooqvosIPnlKjnmoTmianlsZXog73lipvmmK/lkKblt7Lnu4/lronoo4XlubbpgJrov4cgcmVnaXN0ZXJFeHRlbnNpb24oKSDms6jlhownLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWAsXG4gICAgXSxcbiAgfSlcbiAgcHVibGljIGFzeW5jIGludm9rZUV4dGVuc2lvbihuYW1lOiBzdHJpbmcsIG9wdHM6IGFueSkge1xuICAgIGNvbnN0IGV4dCA9IGV4dGVuc2lvbk1hcFtuYW1lXVxuICAgIGlmICghZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYGV4dGVuc2lvbjoke25hbWV9IG11c3QgYmUgcmVnaXN0ZXJlZCBiZWZvcmUgaW52b2tlYCxcbiAgICAgIH0pLClcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgZXh0Lmludm9rZShvcHRzLCB0aGlzKVxuICB9XG5cbiAgcHVibGljIHVzZUFkYXB0ZXJzKGFkYXB0ZXJzOiBDbG91ZGJhc2VBZGFwdGVyIHwgQ2xvdWRiYXNlQWRhcHRlcltdLCBvcHRpb25zPzogYW55KSB7XG4gICAgY29uc3QgeyBhZGFwdGVyLCBydW50aW1lIH0gPSB1c2VBZGFwdGVycyhhZGFwdGVycywgb3B0aW9ucykgfHwge31cbiAgICBhZGFwdGVyICYmIChQbGF0Zm9ybS5hZGFwdGVyID0gYWRhcHRlciBhcyBTREtBZGFwdGVySW50ZXJmYWNlKVxuICAgIHJ1bnRpbWUgJiYgKFBsYXRmb3JtLnJ1bnRpbWUgPSBydW50aW1lIGFzIHN0cmluZylcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlckhvb2soaG9vazogSUNsb3VkYmFzZUhvb2spIHtcbiAgICByZWdpc3Rlckhvb2soQ2xvdWRiYXNlLCBob29rKVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudDogSUNsb3VkYmFzZUNvbXBvbmVudCkge1xuICAgIHJlZ2lzdGVyQ29tcG9uZW50KENsb3VkYmFzZSwgY29tcG9uZW50KVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBzZXRTZGtWZXJzaW9uKHZlcnNpb24pXG4gICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvblxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyU2RrTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBzZXRTZGtOYW1lKG5hbWUpXG4gIH1cblxuICAvKipcbiAgICog5qOA5p+l5b2T5YmNIENsb3VkYmFzZSDlrp7kvovmmK/lkKblt7LlrozmiJDliJ3lp4vljJZcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgamF2YXNjcmlwdFxuICAgKiBpbXBvcnQgY2xvdWRiYXNlIGZyb20gJ0BjbG91ZGJhc2UvanMtc2RrJ1xuICAgKlxuICAgKiAvLyDliJ3lp4vljJbliY1cbiAgICogY29uc29sZS5sb2coY2xvdWRiYXNlLmlzSW5pdGlhbGl6ZWQoKSkgLy8gZmFsc2VcbiAgICpcbiAgICogY29uc3QgYXBwID0gY2xvdWRiYXNlLmluaXQoeyBlbnY6ICd5b3VyLWVudi1pZCcgfSlcbiAgICpcbiAgICogLy8g5Yid5aeL5YyW5ZCOXG4gICAqIGNvbnNvbGUubG9nKGFwcC5pc0luaXRpYWxpemVkKCkpIC8vIHRydWVcbiAgICogYGBgXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKblt7LliJ3lp4vljJZcbiAgICovXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkKGNvbmZpZyA9IHRoaXMuY2xvdWRiYXNlQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgLy8g5qOA5rWL5bi46KeB5Y2g5L2N56ymIGVudiDlgLzvvIzlnKjlvIDlj5HpmLbmrrXnu5nlh7rlj4vlpb3mj5DnpLpcbiAgICBjb25zdCBQTEFDRUhPTERFUl9QQVRURVJOUyA9IFtcbiAgICAgICd5b3VyLWVudi1pZCcsICd5b3VyLWVudmlkJywgJ3lvdXJfZW52X2lkJyxcbiAgICAgICd4eHgteXl5JywgJ3h4eHgteXl5JywgJ2VudklkJywgJ2Vudi1pZCcsXG4gICAgICAneW91ci1lbnZpcm9ubWVudC1pZCcsICdSRVBMQUNFX01FJyxcbiAgICBdXG4gICAgaWYgKFBMQUNFSE9MREVSX1BBVFRFUk5TLnNvbWUocCA9PiBjb25maWcuZW52LnRvTG93ZXJDYXNlKCkgPT09IHAudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgIHByaW50V2FybihcbiAgICAgICAgRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBgW0Nsb3VkQmFzZV0g5qOA5rWL5Yiw546v5aKDIElEIFwiJHtjb25maWcuZW52fVwiIOWPr+iDveaYr+WNoOS9jeespu+8jOivt+abv+aNouS4uuecn+WunueahOeOr+WigyBJROOAglxcbmBcbiAgICAgICAgKyAnICDojrflj5bmlrnlvI/vvJrnmbvlvZXohb7orq/kupHlvIDlj5HlubPlj7Ag4oaSIOeOr+Wig+euoeeQhiDihpIg546v5aKD6K6+572uIOKGkiDnjq/looMgSURcXG4nXG4gICAgICAgICsgJyAg5bu66K6u6YCa6L+H546v5aKD5Y+Y6YeP6YWN572u77yacHJvY2Vzcy5lbnYuQ0xPVURCQVNFX0VOViDmiJYgaW1wb3J0Lm1ldGEuZW52LlZJVEVfQ0xPVURCQVNFX0VOVicsXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICEhKGNvbmZpZz8uZW52KVxuICB9XG5cbiAgLyoqIOiuvue9riB0Y2IgYXBpIOeahCBlbmRwb2ludCAqL1xuICBwdWJsaWMgcmVnaXN0ZXJFbmRQb2ludCh1cmw6IHN0cmluZywgcHJvdG9jb2w/OiAnaHR0cCcgfCAnaHR0cHMnKSB7XG4gICAgc2V0RW5kUG9pbnRJbmZvKHsgYmFzZVVybDogdXJsLCBwcm90b2NvbCwgZW52OiB0aGlzLmNvbmZpZy5lbnYsIGVuZFBvaW50S2V5OiAnQ0xPVURfQVBJJyB9KVxuICB9XG5cbiAgLyoqIOiuvue9rue9keWFsy90Y2IgYXBp55qEIGVuZFBvaW5077yM6YCa6L+HIGtleSDmjIflrpogKi9cbiAgcHVibGljIHJlZ2lzdGVyRW5kUG9pbnRXaXRoS2V5KHByb3BzOiBJU2V0RW5kUG9pbnRXaXRoS2V5KSB7XG4gICAgc2V0RW5kUG9pbnRJbmZvKHtcbiAgICAgIGVudjogdGhpcy5jb25maWcuZW52LFxuICAgICAgZW5kUG9pbnRLZXk6IHByb3BzLmtleSxcbiAgICAgIGJhc2VVcmw6IHByb3BzLnVybCxcbiAgICAgIHByb3RvY29sOiBwcm9wcy5wcm90b2NvbCxcbiAgICB9KVxuICB9XG5cbiAgLyoqIOaLv+e9keWFsy90Y2IgYXBp55qEIGVuZFBvaW5077yM6YCa6L+HIGtleSDmjIflrpogKi9cbiAgcHVibGljIGdldEVuZFBvaW50V2l0aEtleShrZXk6IEVuZFBvaW50S2V5KSB7XG4gICAgY29uc3QgaW5mbyA9IGdldEVuZFBvaW50SW5mbyh0aGlzLmNvbmZpZy5lbnYsIGtleSlcbiAgICByZXR1cm4ge1xuICAgICAgQkFTRV9VUkw6IGluZm8uYmFzZVVybCxcbiAgICAgIFBST1RPQ09MOiBpbmZvLnByb3RvY29sLFxuICAgIH1cbiAgfVxuXG4gIC8vIOino+aekFVSTOWPguaVsFxuICBwdWJsaWMgcGFyc2VDYXB0Y2hhKHVybCkge1xuICAgIHJldHVybiB1dGlscy5wYXJzZUNhcHRjaGEodXJsKVxuICB9XG5cbiAgcHJpdmF0ZSB1c2VEZWZhdWx0QWRhcHRlcigpIHtcbiAgICBjb25zdCB7IGFkYXB0ZXIsIHJ1bnRpbWUgfSA9IHVzZURlZmF1bHRBZGFwdGVyLmJpbmQodGhpcykoKVxuICAgIFBsYXRmb3JtLmFkYXB0ZXIgPSBhZGFwdGVyIGFzIFNES0FkYXB0ZXJJbnRlcmZhY2VcbiAgICBQbGF0Zm9ybS5ydW50aW1lID0gcnVudGltZSBhcyBzdHJpbmdcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VGltZW91dCh0aW1lb3V0OiBudW1iZXIpIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgdGltZW91dCA+IE1BWF9USU1FT1VUOlxuICAgICAgICBwcmludFdhcm4oRVJST1JTLklOVkFMSURfUEFSQU1TLCAndGltZW91dCBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSB2YWx1ZVsxMG1pbl0nKVxuICAgICAgICByZXR1cm4gTUFYX1RJTUVPVVRcbiAgICAgIGNhc2UgdGltZW91dCA8IE1JTl9USU1FT1VUOlxuICAgICAgICBwcmludFdhcm4oRVJST1JTLklOVkFMSURfUEFSQU1TLCAndGltZW91dCBpcyBsZXNzIHRoYW4gbWF4aW11bSB2YWx1ZVsxMDBtc10nKVxuICAgICAgICByZXR1cm4gTUlOX1RJTUVPVVRcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aW1lb3V0XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cnkySW5pdEF1dGgoYXBwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGFwcC5hdXRoKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coJ3RyeTJJbml0QXV0aCBlcnJvcjonLCBlcnJvcilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5aSE55CGIE5vZGUg546v5aKD5LiLIGFkYXB0ZXIg55qE6YWN572u5L+h5oGvXG4gICAqIOWcqCBOb2RlIOeOr+Wig+S4re+8jOmAmui/hyBhZGFwdGVyIOiHquWKqOiOt+WPluWvhumSpeOAgeeOr+Wig0lE44CBYWNjZXNzS2V5IOetiemFjee9ru+8jFxuICAgKiDlh4/lsJHnlKjmiLfmiYvliqjkvKDlhaXphY3nva7nmoTotJ/mi4VcbiAgICogQHBhcmFtIGNvbmZpZyAtIOS6keW8gOWPkeWIneWni+WMlumFjee9ruWvueixoVxuICAgKiBAcmV0dXJucyDooaXlhYXkuoYgTm9kZSBhZGFwdGVyIOS/oeaBr+WQjueahOmFjee9ruWvueixoVxuICAgKi9cbiAgcHJpdmF0ZSBkZWFsTm9kZUFkYXB0ZXJDb25maWcoY29uZmlnOiBJQ2xvdWRiYXNlQ29uZmlnKSB7XG4gICAgLy8gbm9kZeeOr+Wig+WPr+S7peS7jmFkYXB0ZXLojrflj5bpu5jorqTnmoRzZWNyZXRJZOWSjHNlY3JldEtleVxuICAgIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHByb2Nlc3MuZW52ICE9PSAndW5kZWZpbmVkJyAmJiAhcHJvY2Vzcy5lbnYuSVNfQlJPV1NFUl9CVUlMRCAmJiBQbGF0Zm9ybS5hZGFwdGVyPy5nZXRTZWNyZXRJbmZvKSB7XG4gICAgICBjb25zdCBzZWNyZXRJbmZvID0gUGxhdGZvcm0uYWRhcHRlcj8uZ2V0U2VjcmV0SW5mbyhjb25maWcpXG4gICAgICAvLyDlsIYgYWRhcHRlciDmj5DkvpvnmoTlr4bpkqXkv6Hmga/lhpnlhaUgY29uZmlnLmF1dGhcbiAgICAgIGNvbmZpZy5hdXRoID0ge1xuICAgICAgICAuLi5jb25maWcuYXV0aCxcbiAgICAgICAgc2VjcmV0SWQ6IHNlY3JldEluZm8uc2VjcmV0SWQsXG4gICAgICAgIHNlY3JldEtleTogc2VjcmV0SW5mby5zZWNyZXRLZXksXG4gICAgICAgIHNlc3Npb25Ub2tlbjogc2VjcmV0SW5mby5zZXNzaW9uVG9rZW4sXG4gICAgICAgIHNlY3JldFR5cGU6IHNlY3JldEluZm8uc2VjcmV0VHlwZSBhcyBhbnksXG4gICAgICB9XG5cbiAgICAgIC8vIG5vZGUg546v5aKD5Y+v6IO95Y+v5Lul5LuO5LiK5LiL5paH6I635Y+WZW5277yM55So5oi35pyq5pi+5byP5oyH5a6a5pe26Ieq5Yqo5aGr5YWFXG4gICAgICBpZiAoIWNvbmZpZy5lbnYpIHtcbiAgICAgICAgY29uZmlnLmVudiA9IHNlY3JldEluZm8uZW52XG4gICAgICB9XG5cbiAgICAgIC8vIG5vZGUgYWRhcHRlcueOr+Wig+iDveivu+WPluWIsCBwcm9jZXNzLmVudi5DTE9VREJBU0VfQVBJS0VZIOaXtu+8jOWcqOayoeacieS8oOWFpWFjY2Vzc0tleeaXtu+8jOS9v+eUqCBub2RlIGFkYXB0ZXIg5o+Q5L6b55qEIGFjY2Vzc0tlee+8iHByb2Nlc3MuZW52LkNMT1VEQkFTRV9BUElLRVnvvIlcbiAgICAgIGlmICghY29uZmlnLmFjY2Vzc0tleSAmJiBzZWNyZXRJbmZvLmFjY2Vzc0tleSkge1xuICAgICAgICBjb25maWcuYWNjZXNzS2V5ID0gc2VjcmV0SW5mby5hY2Nlc3NLZXlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cblxuLy8g57G75Z6L5a+85Ye6XG5leHBvcnQgdHlwZSB7IENsb3VkYmFzZSB9XG5cbi8vIOWAvOWvvOWHulxuZXhwb3J0IGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZSA9IG5ldyBDbG91ZGJhc2UoKVxuXG5jbG91ZGJhc2UudXNlQWRhcHRlcnMoZ2V0V3hEZWZhdWx0QWRhcHRlcigpKVxuXG4vLyDpu5jorqTlr7zlh7rlrp7kvotcbmV4cG9ydCBkZWZhdWx0IGNsb3VkYmFzZVxuIl19
@@ -0,0 +1,6 @@
1
+ import cloudbase from './index';
2
+ export { getBaseEndPoint } from './constants/common';
3
+ export { LANGS } from './libs/lang';
4
+ export type { Cloudbase } from './index';
5
+ export { cloudbase };
6
+ export default cloudbase;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.cloudbase = exports.LANGS = exports.getBaseEndPoint = void 0;
7
+ var index_1 = __importDefault(require("./index"));
8
+ exports.cloudbase = index_1.default;
9
+ var common_1 = require("./constants/common");
10
+ Object.defineProperty(exports, "getBaseEndPoint", { enumerable: true, get: function () { return common_1.getBaseEndPoint; } });
11
+ var lang_1 = require("./libs/lang");
12
+ Object.defineProperty(exports, "LANGS", { enumerable: true, get: function () { return lang_1.LANGS; } });
13
+ try {
14
+ var nodeAdapter = require('./libs/adapter-node').default;
15
+ index_1.default.useAdapters(nodeAdapter);
16
+ }
17
+ catch (error) {
18
+ }
19
+ exports.default = index_1.default;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC5ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUlBLGtEQUErQjtBQUt0QixvQkFMRixlQUFTLENBS0U7QUFIbEIsNkNBQW9EO0FBQTNDLHlHQUFBLGVBQWUsT0FBQTtBQUN4QixvQ0FBbUM7QUFBMUIsNkZBQUEsS0FBSyxPQUFBO0FBS2QsSUFBSTtJQUVGLElBQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtJQUMxRCxlQUFTLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0NBQ25DO0FBQUMsT0FBTyxLQUFLLEVBQUU7Q0FFZjtBQUdELGtCQUFlLGVBQVMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTm9kZS5qcyDlhaXlj6NcbiAqIOW8leeUqCBiYXNlIOaooeWdl+eahOWFqOmDqOWvvOWHuu+8jOW5tumineWkluWKoOi9vSBOb2RlIGFkYXB0ZXJcbiAqL1xuaW1wb3J0IGNsb3VkYmFzZSBmcm9tICcuL2luZGV4J1xuXG5leHBvcnQgeyBnZXRCYXNlRW5kUG9pbnQgfSBmcm9tICcuL2NvbnN0YW50cy9jb21tb24nXG5leHBvcnQgeyBMQU5HUyB9IGZyb20gJy4vbGlicy9sYW5nJ1xuZXhwb3J0IHR5cGUgeyBDbG91ZGJhc2UgfSBmcm9tICcuL2luZGV4J1xuZXhwb3J0IHsgY2xvdWRiYXNlIH1cblxuLy8gTm9kZSDnjq/looPkuIvliqDovb0gTm9kZSBhZGFwdGVyXG50cnkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBub2RlQWRhcHRlciA9IHJlcXVpcmUoJy4vbGlicy9hZGFwdGVyLW5vZGUnKS5kZWZhdWx0XG4gIGNsb3VkYmFzZS51c2VBZGFwdGVycyhub2RlQWRhcHRlcilcbn0gY2F0Y2ggKGVycm9yKSB7XG4gIC8vIHRocm93IGVycm9yXG59XG5cbi8vIOm7mOiupOWvvOWHuuWunuS+i1xuZXhwb3J0IGRlZmF1bHQgY2xvdWRiYXNlXG4iXX0=
@@ -0,0 +1,33 @@
1
+ export declare const ERROR: {
2
+ INVALID_PARAM: {
3
+ code: string;
4
+ message: string;
5
+ };
6
+ SYS_ERR: {
7
+ code: string;
8
+ message: string;
9
+ };
10
+ STORAGE_REQUEST_FAIL: {
11
+ code: string;
12
+ message: string;
13
+ };
14
+ STORAGE_FILE_NONEXIST: {
15
+ code: string;
16
+ message: string;
17
+ };
18
+ TCB_CLS_UNOPEN: {
19
+ code: string;
20
+ message: string;
21
+ };
22
+ INVALID_CONTEXT: {
23
+ code: string;
24
+ message: string;
25
+ };
26
+ };
27
+ export declare const ADMIN_PATH = "/admin";
28
+ export declare const CLIENT_AUTH_PATH = "/auth/v1/token/clientCredential";
29
+ export declare const checkCustomUserIdRegex: RegExp;
30
+ export declare enum SECRET_TYPE {
31
+ 'SECRET' = "SECRET",
32
+ 'SESSION_SECRET' = "SESSION_SECRET"
33
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SECRET_TYPE = exports.checkCustomUserIdRegex = exports.CLIENT_AUTH_PATH = exports.ADMIN_PATH = exports.ERROR = void 0;
4
+ exports.ERROR = {
5
+ INVALID_PARAM: {
6
+ code: 'INVALID_PARAM',
7
+ message: 'invalid param',
8
+ },
9
+ SYS_ERR: {
10
+ code: 'SYS_ERR',
11
+ message: 'system error',
12
+ },
13
+ STORAGE_REQUEST_FAIL: {
14
+ code: 'STORAGE_REQUEST_FAIL',
15
+ message: 'storage request fail',
16
+ },
17
+ STORAGE_FILE_NONEXIST: {
18
+ code: 'STORAGE_FILE_NONEXIST',
19
+ message: 'storage file not exist',
20
+ },
21
+ TCB_CLS_UNOPEN: {
22
+ code: 'TCB_CLS_UNOPEN',
23
+ message: '需要先开通日志检索功能',
24
+ },
25
+ INVALID_CONTEXT: {
26
+ code: 'INVALID_CONTEXT',
27
+ message: '无效的context对象,请使用 云函数入口的context参数',
28
+ },
29
+ };
30
+ exports.ADMIN_PATH = '/admin';
31
+ exports.CLIENT_AUTH_PATH = '/auth/v1/token/clientCredential';
32
+ exports.checkCustomUserIdRegex = /^[a-zA-Z0-9_\-#@~=*(){}[\]:.,<>+]{4,32}$/;
33
+ var SECRET_TYPE;
34
+ (function (SECRET_TYPE) {
35
+ SECRET_TYPE["SECRET"] = "SECRET";
36
+ SECRET_TYPE["SESSION_SECRET"] = "SESSION_SECRET";
37
+ })(SECRET_TYPE = exports.SECRET_TYPE || (exports.SECRET_TYPE = {}));
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYnMvYWRhcHRlci1ub2RlL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFYSxRQUFBLEtBQUssR0FBRztJQUNuQixhQUFhLEVBQUU7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixPQUFPLEVBQUUsZUFBZTtLQUN6QjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLGNBQWM7S0FDeEI7SUFDRCxvQkFBb0IsRUFBRTtRQUNwQixJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLE9BQU8sRUFBRSxzQkFBc0I7S0FDaEM7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLE9BQU8sRUFBRSx3QkFBd0I7S0FDbEM7SUFDRCxjQUFjLEVBQUU7UUFDZCxJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLE9BQU8sRUFBRSxhQUFhO0tBQ3ZCO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixPQUFPLEVBQUUsa0NBQWtDO0tBQzVDO0NBQ0YsQ0FBQTtBQUdZLFFBQUEsVUFBVSxHQUFHLFFBQVEsQ0FBQTtBQUdyQixRQUFBLGdCQUFnQixHQUFHLGlDQUFpQyxDQUFBO0FBR3BELFFBQUEsc0JBQXNCLEdBQUcsMENBQTBDLENBQUE7QUFFaEYsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFtQixDQUFBO0lBQ25CLGdEQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFIVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuLyoqIOe7n+S4gOmUmeivr+eggeWumuS5iSAqL1xuZXhwb3J0IGNvbnN0IEVSUk9SID0ge1xuICBJTlZBTElEX1BBUkFNOiB7XG4gICAgY29kZTogJ0lOVkFMSURfUEFSQU0nLFxuICAgIG1lc3NhZ2U6ICdpbnZhbGlkIHBhcmFtJyxcbiAgfSxcbiAgU1lTX0VSUjoge1xuICAgIGNvZGU6ICdTWVNfRVJSJyxcbiAgICBtZXNzYWdlOiAnc3lzdGVtIGVycm9yJyxcbiAgfSxcbiAgU1RPUkFHRV9SRVFVRVNUX0ZBSUw6IHtcbiAgICBjb2RlOiAnU1RPUkFHRV9SRVFVRVNUX0ZBSUwnLFxuICAgIG1lc3NhZ2U6ICdzdG9yYWdlIHJlcXVlc3QgZmFpbCcsXG4gIH0sXG4gIFNUT1JBR0VfRklMRV9OT05FWElTVDoge1xuICAgIGNvZGU6ICdTVE9SQUdFX0ZJTEVfTk9ORVhJU1QnLFxuICAgIG1lc3NhZ2U6ICdzdG9yYWdlIGZpbGUgbm90IGV4aXN0JyxcbiAgfSxcbiAgVENCX0NMU19VTk9QRU46IHtcbiAgICBjb2RlOiAnVENCX0NMU19VTk9QRU4nLFxuICAgIG1lc3NhZ2U6ICfpnIDopoHlhYjlvIDpgJrml6Xlv5fmo4DntKLlip/og70nLFxuICB9LFxuICBJTlZBTElEX0NPTlRFWFQ6IHtcbiAgICBjb2RlOiAnSU5WQUxJRF9DT05URVhUJyxcbiAgICBtZXNzYWdlOiAn5peg5pWI55qEY29udGV4dOWvueixoe+8jOivt+S9v+eUqCDkupHlh73mlbDlhaXlj6PnmoRjb250ZXh05Y+C5pWwJyxcbiAgfSxcbn1cblxuLyoqIOeuoeeQhuerryBBUEkg6Lev5b6E77yM55So5LqO5pu/5o2iIC93ZWIg6Lev5b6E77yI6ZyA6KaB5a+G6ZKl562+5ZCN5pe277yJICovXG5leHBvcnQgY29uc3QgQURNSU5fUEFUSCA9ICcvYWRtaW4nXG5cbi8qKiDnrqHnkIbnq6/ojrflj5blrqLmiLfnq6/lh63or4EgYWNjZXNzX3Rva2Vu77yM5Li6566h55CG5ZGY5p2D6ZmQICovXG5leHBvcnQgY29uc3QgQ0xJRU5UX0FVVEhfUEFUSCA9ICcvYXV0aC92MS90b2tlbi9jbGllbnRDcmVkZW50aWFsJ1xuXG4vKiog6Ieq5a6a5LmJ55So5oi3IElEIOagoemqjOinhOWIme+8mjR+MzIg5L2N77yM5YWB6K645a2X5q+N44CB5pWw5a2X5Y+K6YOo5YiG54m55q6K5a2X56ymICovXG5leHBvcnQgY29uc3QgY2hlY2tDdXN0b21Vc2VySWRSZWdleCA9IC9eW2EtekEtWjAtOV9cXC0jQH49Kigpe31bXFxdOi4sPD4rXXs0LDMyfSQvXG5cbmV4cG9ydCBlbnVtIFNFQ1JFVF9UWVBFIHtcbiAgJ1NFQ1JFVCcgPSAnU0VDUkVUJyxcbiAgJ1NFU1NJT05fU0VDUkVUJyA9ICdTRVNTSU9OX1NFQ1JFVCcsXG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import type { IContextParam, ICompleteCloudbaseContext } from './types';
2
+ import { ICloudbaseConfig } from '@cloudbase/types';
3
+ export declare function parseContext(context: IContextParam): any;
4
+ export declare const getCloudbaseContext: (context?: IContextParam) => ICompleteCloudbaseContext;
5
+ export declare let INIT_CONFIG: ICloudbaseConfig;
6
+ export declare const getSecretInfo: (config?: ICloudbaseConfig) => {
7
+ env: string;
8
+ secretId: string;
9
+ secretKey: string;
10
+ sessionToken: string;
11
+ accessKey: string;
12
+ secretType: string;
13
+ };
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.getSecretInfo = exports.INIT_CONFIG = exports.getCloudbaseContext = exports.parseContext = void 0;
15
+ var constants_1 = require("./constants");
16
+ var utils_1 = require("./utils");
17
+ function parseContext(context) {
18
+ if (typeof context !== 'object') {
19
+ throw __assign(__assign({}, constants_1.ERROR.INVALID_CONTEXT), { message: 'context 必须为对象类型' });
20
+ }
21
+ var parseResult = {};
22
+ var memory_limit_in_mb = context.memory_limit_in_mb, time_limit_in_ms = context.time_limit_in_ms, request_id = context.request_id, function_version = context.function_version, namespace = context.namespace, function_name = context.function_name, environ = context.environ, environment = context.environment;
23
+ try {
24
+ parseResult.memoryLimitInMb = memory_limit_in_mb;
25
+ parseResult.timeLimitIns = time_limit_in_ms;
26
+ parseResult.requestId = request_id;
27
+ parseResult.functionVersion = function_version;
28
+ parseResult.namespace = namespace;
29
+ parseResult.functionName = function_name;
30
+ if (environment) {
31
+ parseResult.environment = JSON.parse(environment);
32
+ }
33
+ else {
34
+ var parseEnviron = environ === null || environ === void 0 ? void 0 : environ.split(';');
35
+ var parseEnvironObj = {};
36
+ for (var i in parseEnviron) {
37
+ if (parseEnviron[i].includes('=')) {
38
+ var equalIndex = parseEnviron[i].indexOf('=');
39
+ var key = parseEnviron[i].slice(0, equalIndex);
40
+ var value = parseEnviron[i].slice(equalIndex + 1);
41
+ if (value.indexOf(',') >= 0) {
42
+ value = value.split(',');
43
+ }
44
+ parseEnvironObj[key] = value;
45
+ }
46
+ }
47
+ parseResult.environ = parseEnvironObj;
48
+ }
49
+ }
50
+ catch (_err) {
51
+ throw __assign({}, constants_1.ERROR.INVALID_CONTEXT);
52
+ }
53
+ return parseResult;
54
+ }
55
+ exports.parseContext = parseContext;
56
+ var getCloudbaseContext = function (context) {
57
+ if ((0, utils_1.checkIsInScf)()) {
58
+ if (!(0, utils_1.getEnv)('TENCENTCLOUD_REGION')) {
59
+ console.error('[TCB][ERROR] missing `TENCENTCLOUD_REGION` environment');
60
+ }
61
+ if (!(0, utils_1.getEnv)('SCF_NAMESPACE')) {
62
+ console.error('[TCB][ERROR] missing `SCF_NAMESPACE` environment');
63
+ }
64
+ }
65
+ var envObj = (0, utils_1.getEnv)();
66
+ var envFromProcessEnv = {
67
+ TRIGGER_SRC: envObj.TRIGGER_SRC,
68
+ _SCF_TCB_LOG: envObj._SCF_TCB_LOG,
69
+ SCF_NAMESPACE: envObj.SCF_NAMESPACE,
70
+ TENCENTCLOUD_RUNENV: envObj.TENCENTCLOUD_RUNENV,
71
+ TENCENTCLOUD_SECRETID: envObj.TENCENTCLOUD_SECRETID,
72
+ TENCENTCLOUD_SECRETKEY: envObj.TENCENTCLOUD_SECRETKEY,
73
+ TENCENTCLOUD_SESSIONTOKEN: envObj.TENCENTCLOUD_SESSIONTOKEN,
74
+ WX_CONTEXT_KEYS: envObj.WX_CONTEXT_KEYS,
75
+ WX_TRIGGER_API_TOKEN_V0: envObj.WX_TRIGGER_API_TOKEN_V0,
76
+ WX_CLIENTIP: envObj.WX_CLIENTIP,
77
+ WX_CLIENTIPV6: envObj.WX_CLIENTIPV6,
78
+ TCB_CONTEXT_KEYS: envObj.TCB_CONTEXT_KEYS,
79
+ TCB_CONTEXT_CNFG: envObj.TCB_CONTEXT_CNFG,
80
+ LOGINTYPE: envObj.LOGINTYPE,
81
+ };
82
+ var envFromContext = {};
83
+ if (context) {
84
+ var _a = parseContext(context), environment = _a.environment, environ = _a.environ;
85
+ envFromContext = environment || environ || {};
86
+ }
87
+ var tcbContextKeys = envFromContext.TCB_CONTEXT_KEYS || envObj.TCB_CONTEXT_KEYS;
88
+ var wxContextKeys = envFromContext.WX_CONTEXT_KEYS || envObj.WX_CONTEXT_KEYS;
89
+ if (tcbContextKeys) {
90
+ try {
91
+ var tcbKeysList = tcbContextKeys.split(',');
92
+ for (var _i = 0, tcbKeysList_1 = tcbKeysList; _i < tcbKeysList_1.length; _i++) {
93
+ var item = tcbKeysList_1[_i];
94
+ envFromProcessEnv[item] = envFromContext[item] || (0, utils_1.getEnv)(item);
95
+ }
96
+ }
97
+ catch (_e) {
98
+ }
99
+ }
100
+ if (wxContextKeys) {
101
+ try {
102
+ var wxKeysList = wxContextKeys.split(',');
103
+ for (var _b = 0, wxKeysList_1 = wxKeysList; _b < wxKeysList_1.length; _b++) {
104
+ var item = wxKeysList_1[_b];
105
+ envFromProcessEnv[item] = envFromContext[item] || (0, utils_1.getEnv)(item);
106
+ }
107
+ }
108
+ catch (_e) {
109
+ }
110
+ }
111
+ var allContext = __assign(__assign({}, envFromProcessEnv), envFromContext);
112
+ var finalContext = {};
113
+ for (var key in allContext) {
114
+ if (allContext[key] !== undefined) {
115
+ finalContext[key] = allContext[key];
116
+ }
117
+ }
118
+ return finalContext;
119
+ };
120
+ exports.getCloudbaseContext = getCloudbaseContext;
121
+ exports.INIT_CONFIG = {};
122
+ var getSecretInfo = function (config) {
123
+ var _a, _b, _c, _d, _f, _g;
124
+ exports.INIT_CONFIG = JSON.parse(JSON.stringify(config || {}));
125
+ var _h = (0, exports.getCloudbaseContext)(), TCB_ENV = _h.TCB_ENV, SCF_NAMESPACE = _h.SCF_NAMESPACE;
126
+ var env = (config === null || config === void 0 ? void 0 : config.env) || TCB_ENV || SCF_NAMESPACE || '';
127
+ var defaultInfo = {
128
+ env: env,
129
+ secretId: '',
130
+ secretKey: '',
131
+ sessionToken: '',
132
+ accessKey: '',
133
+ secretType: '',
134
+ };
135
+ if (config === null || config === void 0 ? void 0 : config.accessKey) {
136
+ return defaultInfo;
137
+ }
138
+ if (((_a = config === null || config === void 0 ? void 0 : config.auth) === null || _a === void 0 ? void 0 : _a.secretId) && ((_b = config === null || config === void 0 ? void 0 : config.auth) === null || _b === void 0 ? void 0 : _b.secretKey)) {
139
+ return __assign(__assign({}, defaultInfo), { secretId: config.auth.secretId, secretKey: config.auth.secretKey, secretType: constants_1.SECRET_TYPE.SECRET });
140
+ }
141
+ var secretEnv = (0, utils_1.getEnv)();
142
+ var TENCENTCLOUD_SECRETID = secretEnv.TENCENTCLOUD_SECRETID;
143
+ var TENCENTCLOUD_SECRETKEY = secretEnv.TENCENTCLOUD_SECRETKEY;
144
+ var TENCENTCLOUD_SESSIONTOKEN = secretEnv.TENCENTCLOUD_SESSIONTOKEN;
145
+ var CLOUDBASE_APIKEY = secretEnv.CLOUDBASE_APIKEY;
146
+ if (CLOUDBASE_APIKEY) {
147
+ return __assign(__assign({}, defaultInfo), { accessKey: CLOUDBASE_APIKEY });
148
+ }
149
+ if (TENCENTCLOUD_SECRETID && TENCENTCLOUD_SECRETKEY) {
150
+ return __assign(__assign({}, defaultInfo), { secretId: TENCENTCLOUD_SECRETID, secretKey: TENCENTCLOUD_SECRETKEY, sessionToken: TENCENTCLOUD_SESSIONTOKEN || '', secretType: constants_1.SECRET_TYPE.SESSION_SECRET });
151
+ }
152
+ if ((_c = config === null || config === void 0 ? void 0 : config.context) === null || _c === void 0 ? void 0 : _c.extendedContext) {
153
+ var extendedContext = config.context.extendedContext;
154
+ if (!env) {
155
+ env = extendedContext.envId || '';
156
+ }
157
+ return __assign(__assign({}, defaultInfo), { secretId: ((_d = extendedContext === null || extendedContext === void 0 ? void 0 : extendedContext.tmpSecret) === null || _d === void 0 ? void 0 : _d.secretId) || '', secretKey: ((_f = extendedContext === null || extendedContext === void 0 ? void 0 : extendedContext.tmpSecret) === null || _f === void 0 ? void 0 : _f.secretKey) || '', sessionToken: ((_g = extendedContext === null || extendedContext === void 0 ? void 0 : extendedContext.tmpSecret) === null || _g === void 0 ? void 0 : _g.token) || '' });
158
+ }
159
+ return __assign({}, defaultInfo);
160
+ };
161
+ exports.getSecretInfo = getSecretInfo;
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWJzL2FkYXB0ZXItbm9kZS9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0EseUNBQWdEO0FBQ2hELGlDQUE4QztBQVk5QyxTQUFnQixZQUFZLENBQUMsT0FBc0I7SUFDakQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7UUFDL0IsNEJBQVcsaUJBQUssQ0FBQyxlQUFlLEtBQUUsT0FBTyxFQUFFLGlCQUFpQixJQUFFO0tBQy9EO0lBRUQsSUFBTSxXQUFXLEdBQVEsRUFBRSxDQUFBO0lBR3pCLElBQUEsa0JBQWtCLEdBU2hCLE9BQU8sbUJBVFMsRUFDbEIsZ0JBQWdCLEdBUWQsT0FBTyxpQkFSTyxFQUNoQixVQUFVLEdBT1IsT0FBTyxXQVBDLEVBQ1YsZ0JBQWdCLEdBTWQsT0FBTyxpQkFOTyxFQUNoQixTQUFTLEdBS1AsT0FBTyxVQUxBLEVBQ1QsYUFBYSxHQUlYLE9BQU8sY0FKSSxFQUViLE9BQU8sR0FFTCxPQUFPLFFBRkYsRUFDUCxXQUFXLEdBQ1QsT0FBTyxZQURFLENBQ0Y7SUFFWCxJQUFJO1FBQ0YsV0FBVyxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQTtRQUNoRCxXQUFXLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFBO1FBQzNDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFBO1FBQ2xDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsZ0JBQWdCLENBQUE7UUFDOUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7UUFDakMsV0FBVyxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUE7UUFFeEMsSUFBSSxXQUFXLEVBQUU7WUFFZixXQUFXLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7U0FDbEQ7YUFBTTtZQUlMLElBQU0sWUFBWSxHQUFRLE9BQU8sYUFB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b3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tbXV0YWJsZS1leHBvcnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG5pbXBvcnQgeyBFUlJPUiwgU0VDUkVUX1RZUEUgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IGNoZWNrSXNJblNjZiwgZ2V0RW52IH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB0eXBlIHsgSUNvbnRleHRQYXJhbSwgSUNvbXBsZXRlQ2xvdWRiYXNlQ29udGV4dCB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcblxuLyoqXG4gKiDop6PmnpDlubbmoKHpqozkupHlh73mlbDlhaXlj6PnmoQgQ29udGV4dCDlj4LmlbBcbiAqIOWwhuS4i+WIkue6v+WRveWQjeeahOWtl+autei9rOS4uumpvOWzsOagvOW8j++8jOW5tuino+aekOeOr+Wig+WPmOmHj1xuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0g5LqR5Ye95pWw5YWl5Y+j5Lyg5YWl55qEIGNvbnRleHQg5a+56LGhXG4gKiBAcmV0dXJucyDop6PmnpDlkI7nmoTkuIrkuIvmloflr7nosaHvvIzljIXlkKsgZW52aXJvbm1lbnTvvIjmlrDmnrbmnoTvvInmiJYgZW52aXJvbu+8iOiAgeaetuaehO+8iVxuICogQHRocm93cyBJTlZBTElEX0NPTlRFWFQgLSBjb250ZXh0IOS4jeaYr+WvueixoeaIluino+aekOWksei0peaXtlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb250ZXh0KGNvbnRleHQ6IElDb250ZXh0UGFyYW0pIHtcbiAgaWYgKHR5cGVvZiBjb250ZXh0ICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IHsgLi4uRVJST1IuSU5WQUxJRF9DT05URVhULCBtZXNzYWdlOiAnY29udGV4dCDlv4XpobvkuLrlr7nosaHnsbvlnosnIH1cbiAgfVxuXG4gIGNvbnN0IHBhcnNlUmVzdWx0OiBhbnkgPSB7fVxuXG4gIGNvbnN0IHtcbiAgICBtZW1vcnlfbGltaXRfaW5fbWIsXG4gICAgdGltZV9saW1pdF9pbl9tcyxcbiAgICByZXF1ZXN0X2lkLFxuICAgIGZ1bmN0aW9uX3ZlcnNpb24sXG4gICAgbmFtZXNwYWNlLFxuICAgIGZ1bmN0aW9uX25hbWUsXG5cbiAgICBlbnZpcm9uLFxuICAgIGVudmlyb25tZW50LFxuICB9ID0gY29udGV4dFxuXG4gIHRyeSB7XG4gICAgcGFyc2VSZXN1bHQubWVtb3J5TGltaXRJbk1iID0gbWVtb3J5X2xpbWl0X2luX21iXG4gICAgcGFyc2VSZXN1bHQudGltZUxpbWl0SW5zID0gdGltZV9saW1pdF9pbl9tc1xuICAgIHBhcnNlUmVzdWx0LnJlcXVlc3RJZCA9IHJlcXVlc3RfaWRcbiAgICBwYXJzZVJlc3VsdC5mdW5jdGlvblZlcnNpb24gPSBmdW5jdGlvbl92ZXJzaW9uXG4gICAgcGFyc2VSZXN1bHQubmFtZXNwYWNlID0gbmFtZXNwYWNlXG4gICAgcGFyc2VSZXN1bHQuZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25fbmFtZVxuXG4gICAgaWYgKGVudmlyb25tZW50KSB7XG4gICAgICAvLyDmlrDmnrbmnoTvvJplbnZpcm9ubWVudCDkuLogSlNPTiDlrZfnrKbkuLLvvIznm7TmjqXop6PmnpBcbiAgICAgIHBhcnNlUmVzdWx0LmVudmlyb25tZW50ID0gSlNPTi5wYXJzZShlbnZpcm9ubWVudClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVE9ETzog6ICD6JmR56e76Zmk6ICB5p625p6E55qE5YW85a656YC76L6RXG4gICAgICAvLyDogIHmnrbmnoTvvJplbnZpcm9uIOS4uuWIhuWPt+WIhumalOeahCBrZXk9dmFsdWUg5a2X56ym5LiyXG4gICAgICAvLyDlrZjlnKggYnVn77yadmFsdWUg5ZCr54m55q6K5a2X56ym5pe25Y+v6IO95b2x5ZON6Kej5p6QXG4gICAgICBjb25zdCBwYXJzZUVudmlyb246IGFueSA9IGVudmlyb24/LnNwbGl0KCc7JylcbiAgICAgIGNvbnN0IHBhcnNlRW52aXJvbk9iajogYW55ID0ge31cblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mb3ItaW4tYXJyYXlcbiAgICAgIGZvciAoY29uc3QgaSBpbiBwYXJzZUVudmlyb24pIHtcbiAgICAgICAgaWYgKHBhcnNlRW52aXJvbltpXS5pbmNsdWRlcygnPScpKSB7XG4gICAgICAgICAgLy8g5Y+q5oyJ56ys5LiA5LiqID0g5YiH5Ymy77yM5L+d55WZIHZhbHVlIOS4reeahCA9XG4gICAgICAgICAgY29uc3QgZXF1YWxJbmRleCA9IHBhcnNlRW52aXJvbltpXS5pbmRleE9mKCc9JylcbiAgICAgICAgICBjb25zdCBrZXkgPSBwYXJzZUVudmlyb25baV0uc2xpY2UoMCwgZXF1YWxJbmRleClcbiAgICAgICAgICBsZXQgdmFsdWU6IGFueSA9IHBhcnNlRW52aXJvbltpXS5zbGljZShlcXVhbEluZGV4ICsgMSlcblxuICAgICAgICAgIC8vIHZhbHVlIOWQq+mAl+WPt+aXtuinhuS4uuaVsOe7hFxuICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCcsJykgPj0gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnLCcpXG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcnNlRW52aXJvbk9ialtrZXldID0gdmFsdWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwYXJzZVJlc3VsdC5lbnZpcm9uID0gcGFyc2VFbnZpcm9uT2JqXG4gICAgfVxuICB9IGNhdGNoIChfZXJyOiBhbnkpIHtcbiAgICB0aHJvdyB7IC4uLkVSUk9SLklOVkFMSURfQ09OVEVYVCB9XG4gIH1cblxuICByZXR1cm4gcGFyc2VSZXN1bHRcbn1cblxuLyoqXG4gKiDojrflj5blvZPliY3kupHlh73mlbDlhoXnmoTmiYDmnInnjq/looPlj5jph49cbiAqIOe7n+S4gOS7jiBwcm9jZXNzLmVudiDlkowgY29udGV4dCDkuKTkuKrmnaXmupDlkIjlubblj5blgLxcbiAqXG4gKiDlj5blgLzkvJjlhYjnuqfvvJpjb250ZXh0ID4gcHJvY2Vzcy5lbnZcbiAqIOmAmui/hyBUQ0JfQ09OVEVYVF9LRVlTIC8gV1hfQ09OVEVYVF9LRVlTIOWKqOaAgeaJqeWxlemcgOimgeivu+WPlueahOeOr+Wig+WPmOmHj+WIl+ihqFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0g5Y+v6YCJ77yM5LqR5Ye95pWw5YWl5Y+j55qEIGNvbnRleHQg5Y+C5pWwXG4gKiBAcmV0dXJucyDlkIjlubblkI7nmoTlrozmlbTnjq/looPlj5jph4/kuIrkuIvmlodcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENsb3VkYmFzZUNvbnRleHQgPSAoY29udGV4dD86IElDb250ZXh0UGFyYW0pOiBJQ29tcGxldGVDbG91ZGJhc2VDb250ZXh0ID0+IHtcbiAgLy8g5LqR5Ye95pWw546v5aKD5LiL5qCh6aqM5b+F6KaB546v5aKD5Y+Y6YePXG4gIGlmIChjaGVja0lzSW5TY2YoKSkge1xuICAgIGlmICghZ2V0RW52KCdURU5DRU5UQ0xPVURfUkVHSU9OJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUQ0JdW0VSUk9SXSBtaXNzaW5nIGBURU5DRU5UQ0xPVURfUkVHSU9OYCBlbnZpcm9ubWVudCcpXG4gICAgfVxuICAgIGlmICghZ2V0RW52KCdTQ0ZfTkFNRVNQQUNFJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUQ0JdW0VSUk9SXSBtaXNzaW5nIGBTQ0ZfTkFNRVNQQUNFYCBlbnZpcm9ubWVudCcpXG4gICAgfVxuICB9XG5cbiAgLy8g56ys5LiA5q2l77ya5LuOIHByb2Nlc3MuZW52IOivu+WPluWfuuehgOeOr+Wig+WPmOmHj1xuICBjb25zdCBlbnZPYmogPSBnZXRFbnYoKVxuICBjb25zdCBlbnZGcm9tUHJvY2Vzc0VudjogYW55ID0ge1xuICAgIFRSSUdHRVJfU1JDOiBlbnZPYmouVFJJR0dFUl9TUkMsXG4gICAgX1NDRl9UQ0JfTE9HOiBlbnZPYmouX1NDRl9UQ0JfTE9HLFxuICAgIFNDRl9OQU1FU1BBQ0U6IGVudk9iai5TQ0ZfTkFNRVNQQUNFLFxuICAgIFRFTkNFTlRDTE9VRF9SVU5FTlY6IGVudk9iai5URU5DRU5UQ0xPVURfUlVORU5WLFxuICAgIFRFTkNFTlRDTE9VRF9TRUNSRVRJRDogZW52T2JqLlRFTkNFTlRDTE9VRF9TRUNSRVRJRCxcbiAgICBURU5DRU5UQ0xPVURfU0VDUkVUS0VZOiBlbnZPYmouVEVOQ0VOVENMT1VEX1NFQ1JFVEtFWSxcbiAgICBURU5DRU5UQ0xPVURfU0VTU0lPTlRPS0VOOiBlbnZPYmouVEVOQ0VOVENMT1VEX1NFU1NJT05UT0tFTixcbiAgICBXWF9DT05URVhUX0tFWVM6IGVudk9iai5XWF9DT05URVhUX0tFWVMsXG4gICAgV1hfVFJJR0dFUl9BUElfVE9LRU5fVjA6IGVudk9iai5XWF9UUklHR0VSX0FQSV9UT0tFTl9WMCxcbiAgICBXWF9DTElFTlRJUDogZW52T2JqLldYX0NMSUVOVElQLFxuICAgIFdYX0NMSUVOVElQVjY6IGVudk9iai5XWF9DTElFTlRJUFY2LFxuICAgIFRDQl9DT05URVhUX0tFWVM6IGVudk9iai5UQ0JfQ09OVEVYVF9LRVlTLFxuICAgIFRDQl9DT05URVhUX0NORkc6IGVudk9iai5UQ0JfQ09OVEVYVF9DTkZHLFxuICAgIExPR0lOVFlQRTogZW52T2JqLkxPR0lOVFlQRSxcbiAgfVxuXG4gIC8vIOesrOS6jOatpe+8muS7jiBjb250ZXh0IOS4reino+aekOeOr+Wig+WPmOmHj1xuICBsZXQgZW52RnJvbUNvbnRleHQ6IGFueSA9IHt9XG4gIGlmIChjb250ZXh0KSB7XG4gICAgY29uc3QgeyBlbnZpcm9ubWVudCwgZW52aXJvbiB9ID0gcGFyc2VDb250ZXh0KGNvbnRleHQpXG4gICAgZW52RnJvbUNvbnRleHQgPSBlbnZpcm9ubWVudCB8fCBlbnZpcm9uIHx8IHt9XG4gIH1cblxuICAvLyDnrKzkuInmraXvvJrmoLnmja4gQ09OVEVYVF9LRVlTIOWKqOaAgeaJqeWxleWPmOmHj+WIl+ihqO+8iOS8mOWFiOWPliBjb250ZXh0IOS4reeahOWAvO+8iVxuICBjb25zdCB0Y2JDb250ZXh0S2V5cyA9IGVudkZyb21Db250ZXh0LlRDQl9DT05URVhUX0tFWVMgfHwgZW52T2JqLlRDQl9DT05URVhUX0tFWVNcbiAgY29uc3Qgd3hDb250ZXh0S2V5cyA9IGVudkZyb21Db250ZXh0LldYX0NPTlRFWFRfS0VZUyB8fCBlbnZPYmouV1hfQ09OVEVYVF9LRVlTXG5cbiAgaWYgKHRjYkNvbnRleHRLZXlzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRjYktleXNMaXN0ID0gdGNiQ29udGV4dEtleXMuc3BsaXQoJywnKVxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRjYktleXNMaXN0KSB7XG4gICAgICAgIGVudkZyb21Qcm9jZXNzRW52W2l0ZW1dID0gZW52RnJvbUNvbnRleHRbaXRlbV0gfHwgZ2V0RW52KGl0ZW0pXG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG5cbiAgaWYgKHd4Q29udGV4dEtleXMpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgd3hLZXlzTGlzdCA9IHd4Q29udGV4dEtleXMuc3BsaXQoJywnKVxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHd4S2V5c0xpc3QpIHtcbiAgICAgICAgZW52RnJvbVByb2Nlc3NFbnZbaXRlbV0gPSBlbnZGcm9tQ29udGV4dFtpdGVtXSB8fCBnZXRFbnYoaXRlbSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgLy9cbiAgICB9XG4gIH1cblxuICAvLyDnrKzlm5vmraXvvJrlkIjlubbmiYDmnInmnaXmupDvvIxjb250ZXh0IOeahOWAvOimhuebliBwcm9jZXNzLmVudu+8jOi/h+a7pCB1bmRlZmluZWRcbiAgY29uc3QgYWxsQ29udGV4dCA9IHsgLi4uZW52RnJvbVByb2Nlc3NFbnYsIC4uLmVudkZyb21Db250ZXh0IH1cblxuICBjb25zdCBmaW5hbENvbnRleHQ6IGFueSA9IHt9XG4gIGZvciAoY29uc3Qga2V5IGluIGFsbENvbnRleHQpIHtcbiAgICBpZiAoYWxsQ29udGV4dFtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZpbmFsQ29udGV4dFtrZXldID0gYWxsQ29udGV4dFtrZXldXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZpbmFsQ29udGV4dFxufVxuXG4vKiog57yT5a2YIGV4dGVuZGVkQ29udGV4dO+8jOS+m+WFtuS7luaooeWdl+ivu+WPlu+8iOWmgiB0b29sLnRzIOS4reiOt+WPliB1c2VySWTvvIkgKi9cbmV4cG9ydCBsZXQgSU5JVF9DT05GSUc6IElDbG91ZGJhc2VDb25maWcgPSB7fSBhcyB1bmtub3duIGFzIElDbG91ZGJhc2VDb25maWdcblxuLyoqXG4gKiDku47njq/looPlj5jph4/kuK3ojrflj5bohb7orq/kupHkuLTml7blr4bpkqXkv6Hmga9cbiAqIOeUqOS6jiBBUEkg6K+35rGC562+5ZCNXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTZWNyZXRJbmZvID0gKGNvbmZpZz86IElDbG91ZGJhc2VDb25maWcpID0+IHtcbiAgSU5JVF9DT05GSUcgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbmZpZyB8fCB7fSkpXG5cbiAgY29uc3QgeyBUQ0JfRU5WLCBTQ0ZfTkFNRVNQQUNFIH0gPSBnZXRDbG91ZGJhc2VDb250ZXh0KClcblxuICBsZXQgZW52ID0gY29uZmlnPy5lbnYgfHwgVENCX0VOViB8fCBTQ0ZfTkFNRVNQQUNFIHx8ICcnXG4gIGNvbnN0IGRlZmF1bHRJbmZvID0ge1xuICAgIGVudixcbiAgICBzZWNyZXRJZDogJycsXG4gICAgc2VjcmV0S2V5OiAnJyxcbiAgICBzZXNzaW9uVG9rZW46ICcnLFxuICAgIGFjY2Vzc0tleTogJycsXG4gICAgc2VjcmV0VHlwZTogJycsXG4gIH1cblxuICBpZiAoY29uZmlnPy5hY2Nlc3NLZXkpIHtcbiAgICByZXR1cm4gZGVmYXVsdEluZm9cbiAgfVxuXG4gIGlmIChjb25maWc/LmF1dGg/LnNlY3JldElkICYmIGNvbmZpZz8uYXV0aD8uc2VjcmV0S2V5KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRJbmZvLFxuICAgICAgc2VjcmV0SWQ6IGNvbmZpZy5hdXRoLnNlY3JldElkLFxuICAgICAgc2VjcmV0S2V5OiBjb25maWcuYXV0aC5zZWNyZXRLZXksXG4gICAgICBzZWNyZXRUeXBlOiBTRUNSRVRfVFlQRS5TRUNSRVQsXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2VjcmV0RW52ID0gZ2V0RW52KClcbiAgY29uc3QgeyBURU5DRU5UQ0xPVURfU0VDUkVUSUQgfSA9IHNlY3JldEVudlxuICBjb25zdCB7IFRFTkNFTlRDTE9VRF9TRUNSRVRLRVkgfSA9IHNlY3JldEVudlxuICBjb25zdCB7IFRFTkNFTlRDTE9VRF9TRVNTSU9OVE9LRU4gfSA9IHNlY3JldEVudlxuICBjb25zdCB7IENMT1VEQkFTRV9BUElLRVkgfSA9IHNlY3JldEVudlxuXG4gIGlmIChDTE9VREJBU0VfQVBJS0VZKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRJbmZvLFxuICAgICAgYWNjZXNzS2V5OiBDTE9VREJBU0VfQVBJS0VZLFxuICAgIH1cbiAgfVxuXG4gIGlmIChURU5DRU5UQ0xPVURfU0VDUkVUSUQgJiYgVEVOQ0VOVENMT1VEX1NFQ1JFVEtFWSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0SW5mbyxcbiAgICAgIHNlY3JldElkOiBURU5DRU5UQ0xPVURfU0VDUkVUSUQsXG4gICAgICBzZWNyZXRLZXk6IFRFTkNFTlRDTE9VRF9TRUNSRVRLRVksXG4gICAgICBzZXNzaW9uVG9rZW46IFRFTkNFTlRDTE9VRF9TRVNTSU9OVE9LRU4gfHwgJycsXG4gICAgICBzZWNyZXRUeXBlOiBTRUNSRVRfVFlQRS5TRVNTSU9OX1NFQ1JFVCxcbiAgICB9XG4gIH1cblxuICBpZiAoY29uZmlnPy5jb250ZXh0Py5leHRlbmRlZENvbnRleHQpIHtcbiAgICBjb25zdCB7IGV4dGVuZGVkQ29udGV4dCB9ID0gY29uZmlnLmNvbnRleHRcbiAgICBpZiAoIWVudikge1xuICAgICAgZW52ID0gZXh0ZW5kZWRDb250ZXh0LmVudklkIHx8ICcnXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRJbmZvLFxuICAgICAgc2VjcmV0SWQ6IGV4dGVuZGVkQ29udGV4dD8udG1wU2VjcmV0Py5zZWNyZXRJZCB8fCAnJyxcbiAgICAgIHNlY3JldEtleTogZXh0ZW5kZWRDb250ZXh0Py50bXBTZWNyZXQ/LnNlY3JldEtleSB8fCAnJyxcbiAgICAgIHNlc3Npb25Ub2tlbjogZXh0ZW5kZWRDb250ZXh0Py50bXBTZWNyZXQ/LnRva2VuIHx8ICcnLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IC4uLmRlZmF1bHRJbmZvIH1cbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { SDKAdapterInterface } from '@cloudbase/adapter-interface';
2
+ import { ICloudbaseConfig } from '@cloudbase/types';
3
+ export { NodeRequest } from './request';
4
+ export { parseQueryString, createWebStreamFromNodeReadableStream } from './utils';
5
+ export type { ICreateTicketOpts, IGetUserInfoResult, IGetEndUserInfoResult, IUserInfoQuery, IContextParam, ICompleteCloudbaseContext, } from './types';
6
+ declare function isMatch(): boolean;
7
+ declare function genAdapter(options: any): SDKAdapterInterface & {
8
+ getSecretInfo: (config?: ICloudbaseConfig) => {
9
+ env: string;
10
+ secretId: string;
11
+ secretKey: string;
12
+ sessionToken: string;
13
+ accessKey: string;
14
+ secretType: string;
15
+ };
16
+ nodeTool: (app: any, config: ICloudbaseConfig) => void;
17
+ };
18
+ declare const adapter: {
19
+ genAdapter: typeof genAdapter;
20
+ isMatch: typeof isMatch;
21
+ runtime: string;
22
+ };
23
+ export default adapter;