@effect-aws/client-ec2 0.0.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/LICENSE +19 -0
- package/README.md +1 -0
- package/docgen.json +8 -0
- package/lib/EC2ClientInstance.d.ts +31 -0
- package/lib/EC2ClientInstance.js +57 -0
- package/lib/EC2ClientInstanceConfig.d.ts +25 -0
- package/lib/EC2ClientInstanceConfig.js +70 -0
- package/lib/EC2Service.d.ts +2500 -0
- package/lib/EC2Service.js +683 -0
- package/lib/Errors.d.ts +15 -0
- package/lib/Errors.js +30 -0
- package/lib/esm/EC2ClientInstance.js +30 -0
- package/lib/esm/EC2ClientInstanceConfig.js +43 -0
- package/lib/esm/EC2Service.js +680 -0
- package/lib/esm/Errors.js +4 -0
- package/lib/esm/index.js +5 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +21 -0
- package/package.json +56 -0
- package/project.json +77 -0
package/lib/Errors.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { EC2ServiceException } from "@aws-sdk/client-ec2";
|
|
2
|
+
import * as Data from "effect/Data";
|
|
3
|
+
export type TaggedException<T extends {
|
|
4
|
+
name: string;
|
|
5
|
+
}> = T & {
|
|
6
|
+
readonly _tag: T["name"];
|
|
7
|
+
};
|
|
8
|
+
export type EC2ServiceError = TaggedException<EC2ServiceException & {
|
|
9
|
+
name: "EC2ServiceError";
|
|
10
|
+
}>;
|
|
11
|
+
export declare const EC2ServiceError: Data.Case.Constructor<EC2ServiceError, "_tag">;
|
|
12
|
+
export type SdkError = TaggedException<Error & {
|
|
13
|
+
name: "SdkError";
|
|
14
|
+
}>;
|
|
15
|
+
export declare const SdkError: Data.Case.Constructor<SdkError, "_tag">;
|
package/lib/Errors.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.SdkError = exports.EC2ServiceError = void 0;
|
|
27
|
+
const Data = __importStar(require("effect/Data"));
|
|
28
|
+
exports.EC2ServiceError = Data.tagged("EC2ServiceError");
|
|
29
|
+
exports.SdkError = Data.tagged("SdkError");
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGtEQUFvQztBQVN2QixRQUFBLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFrQixpQkFBaUIsQ0FBQyxDQUFDO0FBRWxFLFFBQUEsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQVcsVUFBVSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVDMlNlcnZpY2VFeGNlcHRpb24gfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWVjMlwiO1xuaW1wb3J0ICogYXMgRGF0YSBmcm9tIFwiZWZmZWN0L0RhdGFcIjtcblxuZXhwb3J0IHR5cGUgVGFnZ2VkRXhjZXB0aW9uPFQgZXh0ZW5kcyB7IG5hbWU6IHN0cmluZyB9PiA9IFQgJiB7XG4gIHJlYWRvbmx5IF90YWc6IFRbXCJuYW1lXCJdO1xufTtcblxuZXhwb3J0IHR5cGUgRUMyU2VydmljZUVycm9yID0gVGFnZ2VkRXhjZXB0aW9uPFxuICBFQzJTZXJ2aWNlRXhjZXB0aW9uICYgeyBuYW1lOiBcIkVDMlNlcnZpY2VFcnJvclwiIH1cbj47XG5leHBvcnQgY29uc3QgRUMyU2VydmljZUVycm9yID0gRGF0YS50YWdnZWQ8RUMyU2VydmljZUVycm9yPihcIkVDMlNlcnZpY2VFcnJvclwiKTtcbmV4cG9ydCB0eXBlIFNka0Vycm9yID0gVGFnZ2VkRXhjZXB0aW9uPEVycm9yICYgeyBuYW1lOiBcIlNka0Vycm9yXCIgfT47XG5leHBvcnQgY29uc3QgU2RrRXJyb3IgPSBEYXRhLnRhZ2dlZDxTZGtFcnJvcj4oXCJTZGtFcnJvclwiKTtcbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { EC2Client } from "@aws-sdk/client-ec2";
|
|
5
|
+
import * as Context from "effect/Context";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Layer from "effect/Layer";
|
|
8
|
+
import { DefaultEC2ClientConfigLayer, EC2ClientInstanceConfig, } from "./EC2ClientInstanceConfig";
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category tags
|
|
12
|
+
*/
|
|
13
|
+
export class EC2ClientInstance extends Context.Tag("@effect-aws/client-ec2/EC2ClientInstance")() {
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category constructors
|
|
18
|
+
*/
|
|
19
|
+
export const makeEC2ClientInstance = Effect.map(EC2ClientInstanceConfig, (config) => new EC2Client(config));
|
|
20
|
+
/**
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
* @category layers
|
|
23
|
+
*/
|
|
24
|
+
export const EC2ClientInstanceLayer = Layer.effect(EC2ClientInstance, makeEC2ClientInstance);
|
|
25
|
+
/**
|
|
26
|
+
* @since 1.0.0
|
|
27
|
+
* @category layers
|
|
28
|
+
*/
|
|
29
|
+
export const DefaultEC2ClientInstanceLayer = EC2ClientInstanceLayer.pipe(Layer.provide(DefaultEC2ClientConfigLayer));
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRUMyQ2xpZW50SW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRUMyQ2xpZW50SW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLHVCQUF1QixHQUN4QixNQUFNLDJCQUEyQixDQUFDO0FBRW5DOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxPQUFPLENBQUMsR0FBRyxDQUNoRCwwQ0FBMEMsQ0FDM0MsRUFBZ0M7Q0FBRztBQUVwQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUM3Qyx1QkFBdUIsRUFDdkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUNsQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDaEQsaUJBQWlCLEVBQ2pCLHFCQUFxQixDQUN0QixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUN0RSxLQUFLLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQgeyBFQzJDbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWVjMlwiO1xuaW1wb3J0ICogYXMgQ29udGV4dCBmcm9tIFwiZWZmZWN0L0NvbnRleHRcIjtcbmltcG9ydCAqIGFzIEVmZmVjdCBmcm9tIFwiZWZmZWN0L0VmZmVjdFwiO1xuaW1wb3J0ICogYXMgTGF5ZXIgZnJvbSBcImVmZmVjdC9MYXllclwiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEVDMkNsaWVudENvbmZpZ0xheWVyLFxuICBFQzJDbGllbnRJbnN0YW5jZUNvbmZpZyxcbn0gZnJvbSBcIi4vRUMyQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjbGFzcyBFQzJDbGllbnRJbnN0YW5jZSBleHRlbmRzIENvbnRleHQuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1lYzIvRUMyQ2xpZW50SW5zdGFuY2VcIixcbik8RUMyQ2xpZW50SW5zdGFuY2UsIEVDMkNsaWVudD4oKSB7fVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZUVDMkNsaWVudEluc3RhbmNlID0gRWZmZWN0Lm1hcChcbiAgRUMyQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gIChjb25maWcpID0+IG5ldyBFQzJDbGllbnQoY29uZmlnKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBFQzJDbGllbnRJbnN0YW5jZUxheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBFQzJDbGllbnRJbnN0YW5jZSxcbiAgbWFrZUVDMkNsaWVudEluc3RhbmNlLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRFQzJDbGllbnRJbnN0YW5jZUxheWVyID0gRUMyQ2xpZW50SW5zdGFuY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKERlZmF1bHRFQzJDbGllbnRDb25maWdMYXllciksXG4pO1xuIl19
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as Context from "effect/Context";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as Runtime from "effect/Runtime";
|
|
5
|
+
/**
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
* @category tags
|
|
8
|
+
*/
|
|
9
|
+
export class EC2ClientInstanceConfig extends Context.Tag("@effect-aws/client-ec2/EC2ClientInstanceConfig")() {
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
* @category constructors
|
|
14
|
+
*/
|
|
15
|
+
export const makeDefaultEC2ClientInstanceConfig = Effect.gen(function* (_) {
|
|
16
|
+
const runtime = yield* _(Effect.runtime());
|
|
17
|
+
const runSync = Runtime.runSync(runtime);
|
|
18
|
+
return {
|
|
19
|
+
logger: {
|
|
20
|
+
info(m) {
|
|
21
|
+
Effect.logInfo(m).pipe(runSync);
|
|
22
|
+
},
|
|
23
|
+
warn(m) {
|
|
24
|
+
Effect.logWarning(m).pipe(runSync);
|
|
25
|
+
},
|
|
26
|
+
error(m) {
|
|
27
|
+
Effect.logError(m).pipe(runSync);
|
|
28
|
+
},
|
|
29
|
+
debug(m) {
|
|
30
|
+
Effect.logDebug(m).pipe(runSync);
|
|
31
|
+
},
|
|
32
|
+
trace(m) {
|
|
33
|
+
Effect.logTrace(m).pipe(runSync);
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
* @category layers
|
|
41
|
+
*/
|
|
42
|
+
export const DefaultEC2ClientConfigLayer = Layer.effect(EC2ClientInstanceConfig, makeDefaultEC2ClientInstanceConfig);
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRUMyQ2xpZW50SW5zdGFuY2VDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRUMyQ2xpZW50SW5zdGFuY2VDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBRTFDOzs7R0FHRztBQUNILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxPQUFPLENBQUMsR0FBRyxDQUN0RCxnREFBZ0QsQ0FDakQsRUFBNEM7Q0FBRztBQUVoRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FDN0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3JCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFTLENBQUMsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLE9BQU87UUFDTCxNQUFNLEVBQUU7WUFDTixJQUFJLENBQUMsQ0FBQztnQkFDSixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUM7Z0JBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDO2dCQUNMLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQztnQkFDTCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUM7Z0JBQ0wsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUw7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDckQsdUJBQXVCLEVBQ3ZCLGtDQUFrQyxDQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHR5cGUgeyBFQzJDbGllbnRDb25maWcgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWVjMlwiO1xuaW1wb3J0ICogYXMgQ29udGV4dCBmcm9tIFwiZWZmZWN0L0NvbnRleHRcIjtcbmltcG9ydCAqIGFzIEVmZmVjdCBmcm9tIFwiZWZmZWN0L0VmZmVjdFwiO1xuaW1wb3J0ICogYXMgTGF5ZXIgZnJvbSBcImVmZmVjdC9MYXllclwiO1xuaW1wb3J0ICogYXMgUnVudGltZSBmcm9tIFwiZWZmZWN0L1J1bnRpbWVcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjbGFzcyBFQzJDbGllbnRJbnN0YW5jZUNvbmZpZyBleHRlbmRzIENvbnRleHQuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1lYzIvRUMyQ2xpZW50SW5zdGFuY2VDb25maWdcIixcbik8RUMyQ2xpZW50SW5zdGFuY2VDb25maWcsIEVDMkNsaWVudENvbmZpZz4oKSB7fVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZURlZmF1bHRFQzJDbGllbnRJbnN0YW5jZUNvbmZpZzogRWZmZWN0LkVmZmVjdDxFQzJDbGllbnRDb25maWc+ID1cbiAgRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgICBjb25zdCBydW50aW1lID0geWllbGQqIF8oRWZmZWN0LnJ1bnRpbWU8bmV2ZXI+KCkpO1xuICAgIGNvbnN0IHJ1blN5bmMgPSBSdW50aW1lLnJ1blN5bmMocnVudGltZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9nZ2VyOiB7XG4gICAgICAgIGluZm8obSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dJbmZvKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdhcm4obSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dXYXJuaW5nKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yKG0pIHtcbiAgICAgICAgICBFZmZlY3QubG9nRXJyb3IobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVidWcobSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dEZWJ1ZyhtKS5waXBlKHJ1blN5bmMpO1xuICAgICAgICB9LFxuICAgICAgICB0cmFjZShtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ1RyYWNlKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdEVDMkNsaWVudENvbmZpZ0xheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBFQzJDbGllbnRJbnN0YW5jZUNvbmZpZyxcbiAgbWFrZURlZmF1bHRFQzJDbGllbnRJbnN0YW5jZUNvbmZpZyxcbik7XG4iXX0=
|