@effect-aws/client-elasticache 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @effect-aws/client-elasticache
2
2
 
3
+ ## 1.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`e540420`](https://github.com/floydspace/effect-aws/commit/e5404208c2438e1e1546637a8edbbdc1c9468850) Thanks [@floydspace](https://github.com/floydspace)! - integrate aws-sdk abort signal with effect interruption
8
+
9
+ ## 1.2.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#58](https://github.com/floydspace/effect-aws/pull/58) [`888dc8c`](https://github.com/floydspace/effect-aws/commit/888dc8ca0d7104e33a24426a1aacedb48e8fc3ac) Thanks [@floydspace](https://github.com/floydspace)! - use Effect.Tag instead of Context.GenericTag for service, upgrade sdk, handle only known errors
14
+
3
15
  ## 1.1.0
4
16
 
5
17
  ### Minor Changes
package/README.md CHANGED
@@ -1 +1,82 @@
1
- # replace this
1
+ # @effect-aws/client-elasticache
2
+
3
+ ## Installation
4
+
5
+ ```bash
6
+ npm install --save @effect-aws/client-elasticache
7
+ ```
8
+
9
+ ## Usage
10
+
11
+ With default ElastiCacheClient instance:
12
+
13
+ ```typescript
14
+ import { ElastiCacheService, DefaultElastiCacheServiceLayer } from "@effect-aws/client-elasticache";
15
+
16
+ const program = ElastiCacheService.listTagsForResource(args);
17
+
18
+ const result = pipe(
19
+ program,
20
+ Effect.provide(DefaultElastiCacheServiceLayer),
21
+ Effect.runPromise,
22
+ );
23
+ ```
24
+
25
+ With custom ElastiCacheClient instance:
26
+
27
+ ```typescript
28
+ import {
29
+ ElastiCacheService,
30
+ BaseElastiCacheServiceLayer,
31
+ ElastiCacheClientInstance,
32
+ } from "@effect-aws/client-elasticache";
33
+
34
+ const program = ElastiCacheService.listTagsForResource(args);
35
+
36
+ const ElastiCacheClientInstanceLayer = Layer.succeed(
37
+ ElastiCacheClientInstance,
38
+ new ElastiCacheClient({ region: "eu-central-1" }),
39
+ );
40
+
41
+ const result = await pipe(
42
+ program,
43
+ Effect.provide(BaseElastiCacheServiceLayer),
44
+ Effect.provide(ElastiCacheClientInstanceLayer),
45
+ Effect.runPromise,
46
+ );
47
+ ```
48
+
49
+ With custom ElastiCacheClient configuration:
50
+
51
+ ```typescript
52
+ import {
53
+ ElastiCacheService,
54
+ BaseElastiCacheServiceLayer,
55
+ DefaultElastiCacheClientConfigLayer,
56
+ ElastiCacheClientInstance,
57
+ ElastiCacheClientInstanceConfig,
58
+ } from "@effect-aws/client-elasticache";
59
+
60
+ const program = ElastiCacheService.listTagsForResource(args);
61
+
62
+ const ElastiCacheClientInstanceLayer = Layer.provide(
63
+ Layer.effect(
64
+ ElastiCacheClientInstance,
65
+ ElastiCacheClientInstanceConfig.pipe(
66
+ Effect.map(
67
+ (config) => new ElastiCacheClient({ ...config, region: "eu-central-1" }),
68
+ ),
69
+ ),
70
+ ),
71
+ DefaultElastiCacheClientConfigLayer,
72
+ );
73
+
74
+ const result = await pipe(
75
+ program,
76
+ Effect.provide(BaseElastiCacheServiceLayer),
77
+ Effect.provide(ElastiCacheClientInstanceLayer),
78
+ Effect.runPromiseExit,
79
+ );
80
+ ```
81
+
82
+ or map over `DefaultElastiCacheClientConfigLayer` layer context and update the configuration...
@@ -2,9 +2,7 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import type { ElastiCacheClientConfig } from "@aws-sdk/client-elasticache";
5
- import * as Context from "effect/Context";
6
- import * as Effect from "effect/Effect";
7
- import * as Layer from "effect/Layer";
5
+ import { Context, Effect, Layer } from "effect";
8
6
  declare const ElastiCacheClientInstanceConfig_base: Context.TagClass<ElastiCacheClientInstanceConfig, "@effect-aws/client-elasticache/ElastiCacheClientInstanceConfig", ElastiCacheClientConfig>;
9
7
  /**
10
8
  * @since 1.0.0
@@ -1,63 +1,37 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.DefaultElastiCacheClientConfigLayer = exports.makeDefaultElastiCacheClientInstanceConfig = exports.ElastiCacheClientInstanceConfig = void 0;
27
- const Context = __importStar(require("effect/Context"));
28
- const Effect = __importStar(require("effect/Effect"));
29
- const Layer = __importStar(require("effect/Layer"));
30
- const Runtime = __importStar(require("effect/Runtime"));
4
+ const effect_1 = require("effect");
31
5
  /**
32
6
  * @since 1.0.0
33
7
  * @category tags
34
8
  */
35
- class ElastiCacheClientInstanceConfig extends Context.Tag("@effect-aws/client-elasticache/ElastiCacheClientInstanceConfig")() {
9
+ class ElastiCacheClientInstanceConfig extends effect_1.Context.Tag("@effect-aws/client-elasticache/ElastiCacheClientInstanceConfig")() {
36
10
  }
37
11
  exports.ElastiCacheClientInstanceConfig = ElastiCacheClientInstanceConfig;
38
12
  /**
39
13
  * @since 1.0.0
40
14
  * @category constructors
41
15
  */
42
- exports.makeDefaultElastiCacheClientInstanceConfig = Effect.gen(function* (_) {
43
- const runtime = yield* _(Effect.runtime());
44
- const runSync = Runtime.runSync(runtime);
16
+ exports.makeDefaultElastiCacheClientInstanceConfig = effect_1.Effect.gen(function* (_) {
17
+ const runtime = yield* _(effect_1.Effect.runtime());
18
+ const runSync = effect_1.Runtime.runSync(runtime);
45
19
  return {
46
20
  logger: {
47
21
  info(m) {
48
- Effect.logInfo(m).pipe(runSync);
22
+ effect_1.Effect.logInfo(m).pipe(runSync);
49
23
  },
50
24
  warn(m) {
51
- Effect.logWarning(m).pipe(runSync);
25
+ effect_1.Effect.logWarning(m).pipe(runSync);
52
26
  },
53
27
  error(m) {
54
- Effect.logError(m).pipe(runSync);
28
+ effect_1.Effect.logError(m).pipe(runSync);
55
29
  },
56
30
  debug(m) {
57
- Effect.logDebug(m).pipe(runSync);
31
+ effect_1.Effect.logDebug(m).pipe(runSync);
58
32
  },
59
33
  trace(m) {
60
- Effect.logTrace(m).pipe(runSync);
34
+ effect_1.Effect.logTrace(m).pipe(runSync);
61
35
  },
62
36
  },
63
37
  };
@@ -66,5 +40,5 @@ exports.makeDefaultElastiCacheClientInstanceConfig = Effect.gen(function* (_) {
66
40
  * @since 1.0.0
67
41
  * @category layers
68
42
  */
69
- exports.DefaultElastiCacheClientConfigLayer = Layer.effect(ElastiCacheClientInstanceConfig, exports.makeDefaultElastiCacheClientInstanceConfig);
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWxhc3RpQ2FjaGVDbGllbnRJbnN0YW5jZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9FbGFzdGlDYWNoZUNsaWVudEluc3RhbmNlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsd0RBQTBDO0FBQzFDLHNEQUF3QztBQUN4QyxvREFBc0M7QUFDdEMsd0RBQTBDO0FBRTFDOzs7R0FHRztBQUNILE1BQWEsK0JBQWdDLFNBQVEsT0FBTyxDQUFDLEdBQUcsQ0FDOUQsZ0VBQWdFLENBQ2pFLEVBQTREO0NBQUc7QUFGaEUsMEVBRWdFO0FBRWhFOzs7R0FHRztBQUNVLFFBQUEsMENBQTBDLEdBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUNyQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBUyxDQUFDLENBQUM7SUFDbEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV6QyxPQUFPO1FBQ0wsTUFBTSxFQUFFO1lBQ04sSUFBSSxDQUFDLENBQUM7Z0JBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELElBQUksQ0FBQyxDQUFDO2dCQUNKLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQztnQkFDTCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUM7Z0JBQ0wsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDO2dCQUNMLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVMOzs7R0FHRztBQUNVLFFBQUEsbUNBQW1DLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDN0QsK0JBQStCLEVBQy9CLGtEQUEwQyxDQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHR5cGUgeyBFbGFzdGlDYWNoZUNsaWVudENvbmZpZyB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZWxhc3RpY2FjaGVcIjtcbmltcG9ydCAqIGFzIENvbnRleHQgZnJvbSBcImVmZmVjdC9Db250ZXh0XCI7XG5pbXBvcnQgKiBhcyBFZmZlY3QgZnJvbSBcImVmZmVjdC9FZmZlY3RcIjtcbmltcG9ydCAqIGFzIExheWVyIGZyb20gXCJlZmZlY3QvTGF5ZXJcIjtcbmltcG9ydCAqIGFzIFJ1bnRpbWUgZnJvbSBcImVmZmVjdC9SdW50aW1lXCI7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgdGFnc1xuICovXG5leHBvcnQgY2xhc3MgRWxhc3RpQ2FjaGVDbGllbnRJbnN0YW5jZUNvbmZpZyBleHRlbmRzIENvbnRleHQuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1lbGFzdGljYWNoZS9FbGFzdGlDYWNoZUNsaWVudEluc3RhbmNlQ29uZmlnXCIsXG4pPEVsYXN0aUNhY2hlQ2xpZW50SW5zdGFuY2VDb25maWcsIEVsYXN0aUNhY2hlQ2xpZW50Q29uZmlnPigpIHt9XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRGVmYXVsdEVsYXN0aUNhY2hlQ2xpZW50SW5zdGFuY2VDb25maWc6IEVmZmVjdC5FZmZlY3Q8RWxhc3RpQ2FjaGVDbGllbnRDb25maWc+ID1cbiAgRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgICBjb25zdCBydW50aW1lID0geWllbGQqIF8oRWZmZWN0LnJ1bnRpbWU8bmV2ZXI+KCkpO1xuICAgIGNvbnN0IHJ1blN5bmMgPSBSdW50aW1lLnJ1blN5bmMocnVudGltZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9nZ2VyOiB7XG4gICAgICAgIGluZm8obSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dJbmZvKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdhcm4obSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dXYXJuaW5nKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yKG0pIHtcbiAgICAgICAgICBFZmZlY3QubG9nRXJyb3IobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVidWcobSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dEZWJ1ZyhtKS5waXBlKHJ1blN5bmMpO1xuICAgICAgICB9LFxuICAgICAgICB0cmFjZShtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ1RyYWNlKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdEVsYXN0aUNhY2hlQ2xpZW50Q29uZmlnTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIEVsYXN0aUNhY2hlQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gIG1ha2VEZWZhdWx0RWxhc3RpQ2FjaGVDbGllbnRJbnN0YW5jZUNvbmZpZyxcbik7XG4iXX0=
43
+ exports.DefaultElastiCacheClientConfigLayer = effect_1.Layer.effect(ElastiCacheClientInstanceConfig, exports.makeDefaultElastiCacheClientInstanceConfig);
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWxhc3RpQ2FjaGVDbGllbnRJbnN0YW5jZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9FbGFzdGlDYWNoZUNsaWVudEluc3RhbmNlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLG1DQUF5RDtBQUV6RDs7O0dBR0c7QUFDSCxNQUFhLCtCQUFnQyxTQUFRLGdCQUFPLENBQUMsR0FBRyxDQUM5RCxnRUFBZ0UsQ0FDakUsRUFBNEQ7Q0FBRztBQUZoRSwwRUFFZ0U7QUFFaEU7OztHQUdHO0FBQ1UsUUFBQSwwQ0FBMEMsR0FDckQsZUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3JCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFNLENBQUMsT0FBTyxFQUFTLENBQUMsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxnQkFBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV6QyxPQUFPO1FBQ0wsTUFBTSxFQUFFO1lBQ04sSUFBSSxDQUFDLENBQUM7Z0JBQ0osZUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELElBQUksQ0FBQyxDQUFDO2dCQUNKLGVBQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQztnQkFDTCxlQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUM7Z0JBQ0wsZUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDO2dCQUNMLGVBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVMOzs7R0FHRztBQUNVLFFBQUEsbUNBQW1DLEdBQUcsY0FBSyxDQUFDLE1BQU0sQ0FDN0QsK0JBQStCLEVBQy9CLGtEQUEwQyxDQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHR5cGUgeyBFbGFzdGlDYWNoZUNsaWVudENvbmZpZyB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZWxhc3RpY2FjaGVcIjtcbmltcG9ydCB7IENvbnRleHQsIEVmZmVjdCwgTGF5ZXIsIFJ1bnRpbWUgfSBmcm9tIFwiZWZmZWN0XCI7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgdGFnc1xuICovXG5leHBvcnQgY2xhc3MgRWxhc3RpQ2FjaGVDbGllbnRJbnN0YW5jZUNvbmZpZyBleHRlbmRzIENvbnRleHQuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1lbGFzdGljYWNoZS9FbGFzdGlDYWNoZUNsaWVudEluc3RhbmNlQ29uZmlnXCIsXG4pPEVsYXN0aUNhY2hlQ2xpZW50SW5zdGFuY2VDb25maWcsIEVsYXN0aUNhY2hlQ2xpZW50Q29uZmlnPigpIHt9XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRGVmYXVsdEVsYXN0aUNhY2hlQ2xpZW50SW5zdGFuY2VDb25maWc6IEVmZmVjdC5FZmZlY3Q8RWxhc3RpQ2FjaGVDbGllbnRDb25maWc+ID1cbiAgRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgICBjb25zdCBydW50aW1lID0geWllbGQqIF8oRWZmZWN0LnJ1bnRpbWU8bmV2ZXI+KCkpO1xuICAgIGNvbnN0IHJ1blN5bmMgPSBSdW50aW1lLnJ1blN5bmMocnVudGltZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9nZ2VyOiB7XG4gICAgICAgIGluZm8obSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dJbmZvKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdhcm4obSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dXYXJuaW5nKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yKG0pIHtcbiAgICAgICAgICBFZmZlY3QubG9nRXJyb3IobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVidWcobSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dEZWJ1ZyhtKS5waXBlKHJ1blN5bmMpO1xuICAgICAgICB9LFxuICAgICAgICB0cmFjZShtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ1RyYWNlKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdEVsYXN0aUNhY2hlQ2xpZW50Q29uZmlnTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIEVsYXN0aUNhY2hlQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gIG1ha2VEZWZhdWx0RWxhc3RpQ2FjaGVDbGllbnRJbnN0YW5jZUNvbmZpZyxcbik7XG4iXX0=