@effect-aws/client-ses 1.0.0 → 1.9.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/Errors/package.json +6 -0
- package/SESClientInstance/package.json +6 -0
- package/SESService/package.json +6 -0
- package/SESServiceConfig/package.json +6 -0
- package/{lib → dist/cjs}/Errors.d.ts +6 -11
- package/dist/cjs/Errors.d.ts.map +1 -0
- package/dist/cjs/Errors.js +42 -0
- package/dist/cjs/Errors.js.map +1 -0
- package/dist/cjs/SESClientInstance.d.ts +24 -0
- package/dist/cjs/SESClientInstance.d.ts.map +1 -0
- package/dist/cjs/SESClientInstance.js +50 -0
- package/dist/cjs/SESClientInstance.js.map +1 -0
- package/{lib → dist/cjs}/SESService.d.ts +16 -38
- package/dist/cjs/SESService.d.ts.map +1 -0
- package/dist/cjs/SESService.js +127 -0
- package/dist/cjs/SESService.js.map +1 -0
- package/dist/cjs/SESServiceConfig.d.ts +25 -0
- package/dist/cjs/SESServiceConfig.d.ts.map +1 -0
- package/dist/cjs/SESServiceConfig.js +35 -0
- package/dist/cjs/SESServiceConfig.js.map +1 -0
- package/dist/cjs/index.d.ts +39 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +56 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/dts/Errors.d.ts +41 -0
- package/dist/dts/Errors.d.ts.map +1 -0
- package/dist/dts/SESClientInstance.d.ts +24 -0
- package/dist/dts/SESClientInstance.d.ts.map +1 -0
- package/dist/dts/SESService.d.ts +398 -0
- package/dist/dts/SESService.d.ts.map +1 -0
- package/dist/dts/SESServiceConfig.d.ts +25 -0
- package/dist/dts/SESServiceConfig.d.ts.map +1 -0
- package/dist/dts/index.d.ts +39 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/esm/Errors.js +39 -0
- package/dist/esm/Errors.js.map +1 -0
- package/dist/esm/SESClientInstance.js +23 -0
- package/dist/esm/SESClientInstance.js.map +1 -0
- package/dist/esm/SESService.js +100 -0
- package/dist/esm/SESService.js.map +1 -0
- package/dist/esm/SESServiceConfig.js +31 -0
- package/dist/esm/SESServiceConfig.js.map +1 -0
- package/dist/esm/index.js +27 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +60 -43
- package/src/Errors.ts +119 -0
- package/src/SESClientInstance.ts +33 -0
- package/src/SESService.ts +1228 -0
- package/src/SESServiceConfig.ts +51 -0
- package/src/index.ts +44 -0
- package/CHANGELOG.md +0 -7
- package/docgen.json +0 -8
- package/lib/Errors.js +0 -42
- package/lib/SESClientInstance.d.ts +0 -31
- package/lib/SESClientInstance.js +0 -57
- package/lib/SESClientInstanceConfig.d.ts +0 -23
- package/lib/SESClientInstanceConfig.js +0 -44
- package/lib/SESService.js +0 -159
- package/lib/esm/Errors.js +0 -39
- package/lib/esm/SESClientInstance.js +0 -30
- package/lib/esm/SESClientInstanceConfig.js +0 -40
- package/lib/esm/SESService.js +0 -155
- package/lib/esm/index.js +0 -5
- package/lib/index.d.ts +0 -4
- package/lib/index.js +0 -21
- package/project.json +0 -77
- package/vitest.config.ts +0 -3
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type { SESClientConfig } from "@aws-sdk/client-ses";
|
|
5
|
+
import { ServiceLogger } from "@effect-aws/commons";
|
|
6
|
+
import { Effect, FiberRef, Layer } from "effect";
|
|
7
|
+
import { dual } from "effect/Function";
|
|
8
|
+
import { globalValue } from "effect/GlobalValue";
|
|
9
|
+
import type { SESService } from "./SESService.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
* @category ses service config
|
|
14
|
+
*/
|
|
15
|
+
const currentSESServiceConfig = globalValue(
|
|
16
|
+
"@effect-aws/client-ses/currentSESServiceConfig",
|
|
17
|
+
() => FiberRef.unsafeMake<SESService.Config>({}),
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
* @category ses service config
|
|
23
|
+
*/
|
|
24
|
+
export const withSESServiceConfig: {
|
|
25
|
+
(config: SESService.Config): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
26
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, config: SESService.Config): Effect.Effect<A, E, R>;
|
|
27
|
+
} = dual(
|
|
28
|
+
2,
|
|
29
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, config: SESService.Config): Effect.Effect<A, E, R> =>
|
|
30
|
+
Effect.locally(effect, currentSESServiceConfig, config),
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @since 1.0.0
|
|
35
|
+
* @category ses service config
|
|
36
|
+
*/
|
|
37
|
+
export const setSESServiceConfig = (config: SESService.Config) => Layer.locallyScoped(currentSESServiceConfig, config);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @since 1.0.0
|
|
41
|
+
* @category adapters
|
|
42
|
+
*/
|
|
43
|
+
export const toSESClientConfig: Effect.Effect<SESClientConfig> = Effect.gen(function*() {
|
|
44
|
+
const { logger: serviceLogger, ...config } = yield* FiberRef.get(currentSESServiceConfig);
|
|
45
|
+
|
|
46
|
+
const logger = serviceLogger === true
|
|
47
|
+
? yield* ServiceLogger.toClientLogger(ServiceLogger.defaultServiceLogger)
|
|
48
|
+
: (serviceLogger ? yield* ServiceLogger.toClientLogger(ServiceLogger.make(serviceLogger)) : undefined);
|
|
49
|
+
|
|
50
|
+
return { logger, ...config };
|
|
51
|
+
});
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { SESService } from "./SESService.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @since 1.0.0
|
|
8
|
+
*/
|
|
9
|
+
export * from "./Errors.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
export * as SESClientInstance from "./SESClientInstance.js";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
*/
|
|
19
|
+
export * as SESServiceConfig from "./SESServiceConfig.js";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
*/
|
|
24
|
+
export * from "./SESService.js";
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
* @category exports
|
|
29
|
+
* @alias SESService
|
|
30
|
+
*/
|
|
31
|
+
export declare namespace SES {
|
|
32
|
+
/**
|
|
33
|
+
* @since 1.0.0
|
|
34
|
+
* @alias SESService.Config
|
|
35
|
+
*/
|
|
36
|
+
export type Config = SESService.Config;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @since 1.0.0
|
|
41
|
+
* @category exports
|
|
42
|
+
* @alias SESService
|
|
43
|
+
*/
|
|
44
|
+
export const SES = SESService;
|
package/CHANGELOG.md
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# @effect-aws/client-ses
|
|
2
|
-
|
|
3
|
-
## 1.0.0
|
|
4
|
-
|
|
5
|
-
### Major Changes
|
|
6
|
-
|
|
7
|
-
- [#95](https://github.com/floydspace/effect-aws/pull/95) [`89abbc8`](https://github.com/floydspace/effect-aws/commit/89abbc88feac19299345d67bcdf6098c9ee75979) Thanks [@successkrisz](https://github.com/successkrisz)! - implement ses client
|
package/docgen.json
DELETED
package/lib/Errors.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SdkError = exports.AllServiceErrors = void 0;
|
|
4
|
-
const effect_1 = require("effect");
|
|
5
|
-
exports.AllServiceErrors = [
|
|
6
|
-
"AccountSendingPausedException",
|
|
7
|
-
"AlreadyExistsException",
|
|
8
|
-
"CannotDeleteException",
|
|
9
|
-
"ConfigurationSetAlreadyExistsException",
|
|
10
|
-
"ConfigurationSetDoesNotExistException",
|
|
11
|
-
"ConfigurationSetSendingPausedException",
|
|
12
|
-
"CustomVerificationEmailInvalidContentException",
|
|
13
|
-
"CustomVerificationEmailTemplateAlreadyExistsException",
|
|
14
|
-
"CustomVerificationEmailTemplateDoesNotExistException",
|
|
15
|
-
"EventDestinationAlreadyExistsException",
|
|
16
|
-
"EventDestinationDoesNotExistException",
|
|
17
|
-
"FromEmailAddressNotVerifiedException",
|
|
18
|
-
"InvalidCloudWatchDestinationException",
|
|
19
|
-
"InvalidConfigurationSetException",
|
|
20
|
-
"InvalidDeliveryOptionsException",
|
|
21
|
-
"InvalidFirehoseDestinationException",
|
|
22
|
-
"InvalidLambdaFunctionException",
|
|
23
|
-
"InvalidPolicyException",
|
|
24
|
-
"InvalidRenderingParameterException",
|
|
25
|
-
"InvalidS3ConfigurationException",
|
|
26
|
-
"InvalidSNSDestinationException",
|
|
27
|
-
"InvalidSnsTopicException",
|
|
28
|
-
"InvalidTemplateException",
|
|
29
|
-
"InvalidTrackingOptionsException",
|
|
30
|
-
"LimitExceededException",
|
|
31
|
-
"MailFromDomainNotVerifiedException",
|
|
32
|
-
"MessageRejected",
|
|
33
|
-
"MissingRenderingAttributeException",
|
|
34
|
-
"ProductionAccessNotGrantedException",
|
|
35
|
-
"RuleDoesNotExistException",
|
|
36
|
-
"RuleSetDoesNotExistException",
|
|
37
|
-
"TemplateDoesNotExistException",
|
|
38
|
-
"TrackingOptionsAlreadyExistsException",
|
|
39
|
-
"TrackingOptionsDoesNotExistException",
|
|
40
|
-
];
|
|
41
|
-
exports.SdkError = effect_1.Data.tagged("SdkError");
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQ0EsbUNBQThCO0FBRWpCLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsK0JBQStCO0lBQy9CLHdCQUF3QjtJQUN4Qix1QkFBdUI7SUFDdkIsd0NBQXdDO0lBQ3hDLHVDQUF1QztJQUN2Qyx3Q0FBd0M7SUFDeEMsZ0RBQWdEO0lBQ2hELHVEQUF1RDtJQUN2RCxzREFBc0Q7SUFDdEQsd0NBQXdDO0lBQ3hDLHVDQUF1QztJQUN2QyxzQ0FBc0M7SUFDdEMsdUNBQXVDO0lBQ3ZDLGtDQUFrQztJQUNsQyxpQ0FBaUM7SUFDakMscUNBQXFDO0lBQ3JDLGdDQUFnQztJQUNoQyx3QkFBd0I7SUFDeEIsb0NBQW9DO0lBQ3BDLGlDQUFpQztJQUNqQyxnQ0FBZ0M7SUFDaEMsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQixpQ0FBaUM7SUFDakMsd0JBQXdCO0lBQ3hCLG9DQUFvQztJQUNwQyxpQkFBaUI7SUFDakIsb0NBQW9DO0lBQ3BDLHFDQUFxQztJQUNyQywyQkFBMkI7SUFDM0IsOEJBQThCO0lBQzlCLCtCQUErQjtJQUMvQix1Q0FBdUM7SUFDdkMsc0NBQXNDO0NBQ3ZDLENBQUM7QUFvRVcsUUFBQSxRQUFRLEdBQUcsYUFBSSxDQUFDLE1BQU0sQ0FBVyxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQWNjb3VudFNlbmRpbmdQYXVzZWRFeGNlcHRpb24sXG4gIEFscmVhZHlFeGlzdHNFeGNlcHRpb24sXG4gIENhbm5vdERlbGV0ZUV4Y2VwdGlvbixcbiAgQ29uZmlndXJhdGlvblNldEFscmVhZHlFeGlzdHNFeGNlcHRpb24sXG4gIENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFeGNlcHRpb24sXG4gIENvbmZpZ3VyYXRpb25TZXRTZW5kaW5nUGF1c2VkRXhjZXB0aW9uLFxuICBDdXN0b21WZXJpZmljYXRpb25FbWFpbEludmFsaWRDb250ZW50RXhjZXB0aW9uLFxuICBDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQWxyZWFkeUV4aXN0c0V4Y2VwdGlvbixcbiAgQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZURvZXNOb3RFeGlzdEV4Y2VwdGlvbixcbiAgRXZlbnREZXN0aW5hdGlvbkFscmVhZHlFeGlzdHNFeGNlcHRpb24sXG4gIEV2ZW50RGVzdGluYXRpb25Eb2VzTm90RXhpc3RFeGNlcHRpb24sXG4gIEZyb21FbWFpbEFkZHJlc3NOb3RWZXJpZmllZEV4Y2VwdGlvbixcbiAgSW52YWxpZENsb3VkV2F0Y2hEZXN0aW5hdGlvbkV4Y2VwdGlvbixcbiAgSW52YWxpZENvbmZpZ3VyYXRpb25TZXRFeGNlcHRpb24sXG4gIEludmFsaWREZWxpdmVyeU9wdGlvbnNFeGNlcHRpb24sXG4gIEludmFsaWRGaXJlaG9zZURlc3RpbmF0aW9uRXhjZXB0aW9uLFxuICBJbnZhbGlkTGFtYmRhRnVuY3Rpb25FeGNlcHRpb24sXG4gIEludmFsaWRQb2xpY3lFeGNlcHRpb24sXG4gIEludmFsaWRSZW5kZXJpbmdQYXJhbWV0ZXJFeGNlcHRpb24sXG4gIEludmFsaWRTM0NvbmZpZ3VyYXRpb25FeGNlcHRpb24sXG4gIEludmFsaWRTTlNEZXN0aW5hdGlvbkV4Y2VwdGlvbixcbiAgSW52YWxpZFNuc1RvcGljRXhjZXB0aW9uLFxuICBJbnZhbGlkVGVtcGxhdGVFeGNlcHRpb24sXG4gIEludmFsaWRUcmFja2luZ09wdGlvbnNFeGNlcHRpb24sXG4gIExpbWl0RXhjZWVkZWRFeGNlcHRpb24sXG4gIE1haWxGcm9tRG9tYWluTm90VmVyaWZpZWRFeGNlcHRpb24sXG4gIE1lc3NhZ2VSZWplY3RlZCxcbiAgTWlzc2luZ1JlbmRlcmluZ0F0dHJpYnV0ZUV4Y2VwdGlvbixcbiAgUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFeGNlcHRpb24sXG4gIFJ1bGVEb2VzTm90RXhpc3RFeGNlcHRpb24sXG4gIFJ1bGVTZXREb2VzTm90RXhpc3RFeGNlcHRpb24sXG4gIFRlbXBsYXRlRG9lc05vdEV4aXN0RXhjZXB0aW9uLFxuICBUcmFja2luZ09wdGlvbnNBbHJlYWR5RXhpc3RzRXhjZXB0aW9uLFxuICBUcmFja2luZ09wdGlvbnNEb2VzTm90RXhpc3RFeGNlcHRpb24sXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCI7XG5pbXBvcnQgeyBEYXRhIH0gZnJvbSBcImVmZmVjdFwiO1xuXG5leHBvcnQgY29uc3QgQWxsU2VydmljZUVycm9ycyA9IFtcbiAgXCJBY2NvdW50U2VuZGluZ1BhdXNlZEV4Y2VwdGlvblwiLFxuICBcIkFscmVhZHlFeGlzdHNFeGNlcHRpb25cIixcbiAgXCJDYW5ub3REZWxldGVFeGNlcHRpb25cIixcbiAgXCJDb25maWd1cmF0aW9uU2V0QWxyZWFkeUV4aXN0c0V4Y2VwdGlvblwiLFxuICBcIkNvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFeGNlcHRpb25cIixcbiAgXCJDb25maWd1cmF0aW9uU2V0U2VuZGluZ1BhdXNlZEV4Y2VwdGlvblwiLFxuICBcIkN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsSW52YWxpZENvbnRlbnRFeGNlcHRpb25cIixcbiAgXCJDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQWxyZWFkeUV4aXN0c0V4Y2VwdGlvblwiLFxuICBcIkN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVEb2VzTm90RXhpc3RFeGNlcHRpb25cIixcbiAgXCJFdmVudERlc3RpbmF0aW9uQWxyZWFkeUV4aXN0c0V4Y2VwdGlvblwiLFxuICBcIkV2ZW50RGVzdGluYXRpb25Eb2VzTm90RXhpc3RFeGNlcHRpb25cIixcbiAgXCJGcm9tRW1haWxBZGRyZXNzTm90VmVyaWZpZWRFeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkQ2xvdWRXYXRjaERlc3RpbmF0aW9uRXhjZXB0aW9uXCIsXG4gIFwiSW52YWxpZENvbmZpZ3VyYXRpb25TZXRFeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkRGVsaXZlcnlPcHRpb25zRXhjZXB0aW9uXCIsXG4gIFwiSW52YWxpZEZpcmVob3NlRGVzdGluYXRpb25FeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkTGFtYmRhRnVuY3Rpb25FeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkUG9saWN5RXhjZXB0aW9uXCIsXG4gIFwiSW52YWxpZFJlbmRlcmluZ1BhcmFtZXRlckV4Y2VwdGlvblwiLFxuICBcIkludmFsaWRTM0NvbmZpZ3VyYXRpb25FeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkU05TRGVzdGluYXRpb25FeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkU25zVG9waWNFeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkVGVtcGxhdGVFeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkVHJhY2tpbmdPcHRpb25zRXhjZXB0aW9uXCIsXG4gIFwiTGltaXRFeGNlZWRlZEV4Y2VwdGlvblwiLFxuICBcIk1haWxGcm9tRG9tYWluTm90VmVyaWZpZWRFeGNlcHRpb25cIixcbiAgXCJNZXNzYWdlUmVqZWN0ZWRcIixcbiAgXCJNaXNzaW5nUmVuZGVyaW5nQXR0cmlidXRlRXhjZXB0aW9uXCIsXG4gIFwiUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFeGNlcHRpb25cIixcbiAgXCJSdWxlRG9lc05vdEV4aXN0RXhjZXB0aW9uXCIsXG4gIFwiUnVsZVNldERvZXNOb3RFeGlzdEV4Y2VwdGlvblwiLFxuICBcIlRlbXBsYXRlRG9lc05vdEV4aXN0RXhjZXB0aW9uXCIsXG4gIFwiVHJhY2tpbmdPcHRpb25zQWxyZWFkeUV4aXN0c0V4Y2VwdGlvblwiLFxuICBcIlRyYWNraW5nT3B0aW9uc0RvZXNOb3RFeGlzdEV4Y2VwdGlvblwiLFxuXTtcblxuZXhwb3J0IHR5cGUgVGFnZ2VkRXhjZXB0aW9uPFQgZXh0ZW5kcyB7IG5hbWU6IHN0cmluZyB9PiA9IFQgJiB7XG4gIHJlYWRvbmx5IF90YWc6IFRbXCJuYW1lXCJdO1xufTtcblxuZXhwb3J0IHR5cGUgQWNjb3VudFNlbmRpbmdQYXVzZWRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxBY2NvdW50U2VuZGluZ1BhdXNlZEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBBbHJlYWR5RXhpc3RzRXJyb3IgPSBUYWdnZWRFeGNlcHRpb248QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBDYW5ub3REZWxldGVFcnJvciA9IFRhZ2dlZEV4Y2VwdGlvbjxDYW5ub3REZWxldGVFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgQ29uZmlndXJhdGlvblNldEFscmVhZHlFeGlzdHNFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxDb25maWd1cmF0aW9uU2V0QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248Q29uZmlndXJhdGlvblNldERvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBDb25maWd1cmF0aW9uU2V0U2VuZGluZ1BhdXNlZEVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPENvbmZpZ3VyYXRpb25TZXRTZW5kaW5nUGF1c2VkRXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsSW52YWxpZENvbnRlbnRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxDdXN0b21WZXJpZmljYXRpb25FbWFpbEludmFsaWRDb250ZW50RXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVBbHJlYWR5RXhpc3RzRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUFscmVhZHlFeGlzdHNFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZURvZXNOb3RFeGlzdEVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVEb2VzTm90RXhpc3RFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgRXZlbnREZXN0aW5hdGlvbkFscmVhZHlFeGlzdHNFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxFdmVudERlc3RpbmF0aW9uQWxyZWFkeUV4aXN0c0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBFdmVudERlc3RpbmF0aW9uRG9lc05vdEV4aXN0RXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248RXZlbnREZXN0aW5hdGlvbkRvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBGcm9tRW1haWxBZGRyZXNzTm90VmVyaWZpZWRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxGcm9tRW1haWxBZGRyZXNzTm90VmVyaWZpZWRFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgSW52YWxpZENsb3VkV2F0Y2hEZXN0aW5hdGlvbkVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRDbG91ZFdhdGNoRGVzdGluYXRpb25FeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgSW52YWxpZENvbmZpZ3VyYXRpb25TZXRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxJbnZhbGlkQ29uZmlndXJhdGlvblNldEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkRGVsaXZlcnlPcHRpb25zRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248SW52YWxpZERlbGl2ZXJ5T3B0aW9uc0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkRmlyZWhvc2VEZXN0aW5hdGlvbkVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRGaXJlaG9zZURlc3RpbmF0aW9uRXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIEludmFsaWRMYW1iZGFGdW5jdGlvbkVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRMYW1iZGFGdW5jdGlvbkV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkUG9saWN5RXJyb3IgPSBUYWdnZWRFeGNlcHRpb248SW52YWxpZFBvbGljeUV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkUmVuZGVyaW5nUGFyYW1ldGVyRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248SW52YWxpZFJlbmRlcmluZ1BhcmFtZXRlckV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkUzNDb25maWd1cmF0aW9uRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248SW52YWxpZFMzQ29uZmlndXJhdGlvbkV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkU05TRGVzdGluYXRpb25FcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxJbnZhbGlkU05TRGVzdGluYXRpb25FeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgSW52YWxpZFNuc1RvcGljRXJyb3IgPSBUYWdnZWRFeGNlcHRpb248SW52YWxpZFNuc1RvcGljRXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIEludmFsaWRUZW1wbGF0ZUVycm9yID0gVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRUZW1wbGF0ZUV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkVHJhY2tpbmdPcHRpb25zRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248SW52YWxpZFRyYWNraW5nT3B0aW9uc0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBMaW1pdEV4Y2VlZGVkRXJyb3IgPSBUYWdnZWRFeGNlcHRpb248TGltaXRFeGNlZWRlZEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBNYWlsRnJvbURvbWFpbk5vdFZlcmlmaWVkRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248TWFpbEZyb21Eb21haW5Ob3RWZXJpZmllZEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBNZXNzYWdlUmVqZWN0ZWRFcnJvciA9IFRhZ2dlZEV4Y2VwdGlvbjxNZXNzYWdlUmVqZWN0ZWQ+O1xuZXhwb3J0IHR5cGUgTWlzc2luZ1JlbmRlcmluZ0F0dHJpYnV0ZUVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPE1pc3NpbmdSZW5kZXJpbmdBdHRyaWJ1dGVFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxQcm9kdWN0aW9uQWNjZXNzTm90R3JhbnRlZEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBSdWxlRG9lc05vdEV4aXN0RXJyb3IgPSBUYWdnZWRFeGNlcHRpb248UnVsZURvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBSdWxlU2V0RG9lc05vdEV4aXN0RXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248UnVsZVNldERvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBUZW1wbGF0ZURvZXNOb3RFeGlzdEVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPFRlbXBsYXRlRG9lc05vdEV4aXN0RXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIFRyYWNraW5nT3B0aW9uc0FscmVhZHlFeGlzdHNFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxUcmFja2luZ09wdGlvbnNBbHJlYWR5RXhpc3RzRXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIFRyYWNraW5nT3B0aW9uc0RvZXNOb3RFeGlzdEVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPFRyYWNraW5nT3B0aW9uc0RvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5cbmV4cG9ydCB0eXBlIFNka0Vycm9yID0gVGFnZ2VkRXhjZXB0aW9uPEVycm9yICYgeyBuYW1lOiBcIlNka0Vycm9yXCIgfT47XG5leHBvcnQgY29uc3QgU2RrRXJyb3IgPSBEYXRhLnRhZ2dlZDxTZGtFcnJvcj4oXCJTZGtFcnJvclwiKTtcbiJdfQ==
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
|
-
import { SESClient } from "@aws-sdk/client-ses";
|
|
5
|
-
import * as Context from "effect/Context";
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import * as Layer from "effect/Layer";
|
|
8
|
-
import { SESClientInstanceConfig } from "./SESClientInstanceConfig";
|
|
9
|
-
declare const SESClientInstance_base: Context.TagClass<SESClientInstance, "@effect-aws/client-ses/SESClientInstance", SESClient>;
|
|
10
|
-
/**
|
|
11
|
-
* @since 1.0.0
|
|
12
|
-
* @category tags
|
|
13
|
-
*/
|
|
14
|
-
export declare class SESClientInstance extends SESClientInstance_base {
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* @since 1.0.0
|
|
18
|
-
* @category constructors
|
|
19
|
-
*/
|
|
20
|
-
export declare const makeSESClientInstance: Effect.Effect<SESClient, never, SESClientInstanceConfig>;
|
|
21
|
-
/**
|
|
22
|
-
* @since 1.0.0
|
|
23
|
-
* @category layers
|
|
24
|
-
*/
|
|
25
|
-
export declare const SESClientInstanceLayer: Layer.Layer<SESClientInstance, never, SESClientInstanceConfig>;
|
|
26
|
-
/**
|
|
27
|
-
* @since 1.0.0
|
|
28
|
-
* @category layers
|
|
29
|
-
*/
|
|
30
|
-
export declare const DefaultSESClientInstanceLayer: Layer.Layer<SESClientInstance, never, never>;
|
|
31
|
-
export {};
|
package/lib/SESClientInstance.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
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.DefaultSESClientInstanceLayer = exports.SESClientInstanceLayer = exports.makeSESClientInstance = exports.SESClientInstance = void 0;
|
|
27
|
-
/**
|
|
28
|
-
* @since 1.0.0
|
|
29
|
-
*/
|
|
30
|
-
const client_ses_1 = require("@aws-sdk/client-ses");
|
|
31
|
-
const Context = __importStar(require("effect/Context"));
|
|
32
|
-
const Effect = __importStar(require("effect/Effect"));
|
|
33
|
-
const Layer = __importStar(require("effect/Layer"));
|
|
34
|
-
const SESClientInstanceConfig_1 = require("./SESClientInstanceConfig");
|
|
35
|
-
/**
|
|
36
|
-
* @since 1.0.0
|
|
37
|
-
* @category tags
|
|
38
|
-
*/
|
|
39
|
-
class SESClientInstance extends Context.Tag("@effect-aws/client-ses/SESClientInstance")() {
|
|
40
|
-
}
|
|
41
|
-
exports.SESClientInstance = SESClientInstance;
|
|
42
|
-
/**
|
|
43
|
-
* @since 1.0.0
|
|
44
|
-
* @category constructors
|
|
45
|
-
*/
|
|
46
|
-
exports.makeSESClientInstance = Effect.map(SESClientInstanceConfig_1.SESClientInstanceConfig, (config) => new client_ses_1.SESClient(config));
|
|
47
|
-
/**
|
|
48
|
-
* @since 1.0.0
|
|
49
|
-
* @category layers
|
|
50
|
-
*/
|
|
51
|
-
exports.SESClientInstanceLayer = Layer.effect(SESClientInstance, exports.makeSESClientInstance);
|
|
52
|
-
/**
|
|
53
|
-
* @since 1.0.0
|
|
54
|
-
* @category layers
|
|
55
|
-
*/
|
|
56
|
-
exports.DefaultSESClientInstanceLayer = exports.SESClientInstanceLayer.pipe(Layer.provide(SESClientInstanceConfig_1.DefaultSESClientConfigLayer));
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0VTQ2xpZW50SW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU0VTQ2xpZW50SW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILG9EQUFnRDtBQUNoRCx3REFBMEM7QUFDMUMsc0RBQXdDO0FBQ3hDLG9EQUFzQztBQUN0Qyx1RUFHbUM7QUFFbkM7OztHQUdHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxPQUFPLENBQUMsR0FBRyxDQUNoRCwwQ0FBMEMsQ0FDM0MsRUFBZ0M7Q0FBRztBQUZwQyw4Q0FFb0M7QUFFcEM7OztHQUdHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUM3QyxpREFBdUIsRUFDdkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksc0JBQVMsQ0FBQyxNQUFNLENBQUMsQ0FDbEMsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDaEQsaUJBQWlCLEVBQ2pCLDZCQUFxQixDQUN0QixDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSw2QkFBNkIsR0FBRyw4QkFBc0IsQ0FBQyxJQUFJLENBQ3RFLEtBQUssQ0FBQyxPQUFPLENBQUMscURBQTJCLENBQUMsQ0FDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7IFNFU0NsaWVudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCI7XG5pbXBvcnQgKiBhcyBDb250ZXh0IGZyb20gXCJlZmZlY3QvQ29udGV4dFwiO1xuaW1wb3J0ICogYXMgRWZmZWN0IGZyb20gXCJlZmZlY3QvRWZmZWN0XCI7XG5pbXBvcnQgKiBhcyBMYXllciBmcm9tIFwiZWZmZWN0L0xheWVyXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0U0VTQ2xpZW50Q29uZmlnTGF5ZXIsXG4gIFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLFxufSBmcm9tIFwiLi9TRVNDbGllbnRJbnN0YW5jZUNvbmZpZ1wiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNFU0NsaWVudEluc3RhbmNlIGV4dGVuZHMgQ29udGV4dC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LXNlcy9TRVNDbGllbnRJbnN0YW5jZVwiLFxuKTxTRVNDbGllbnRJbnN0YW5jZSwgU0VTQ2xpZW50PigpIHt9XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlU0VTQ2xpZW50SW5zdGFuY2UgPSBFZmZlY3QubWFwKFxuICBTRVNDbGllbnRJbnN0YW5jZUNvbmZpZyxcbiAgKGNvbmZpZykgPT4gbmV3IFNFU0NsaWVudChjb25maWcpLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFNFU0NsaWVudEluc3RhbmNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIFNFU0NsaWVudEluc3RhbmNlLFxuICBtYWtlU0VTQ2xpZW50SW5zdGFuY2UsXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlTGF5ZXIgPSBTRVNDbGllbnRJbnN0YW5jZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdFNFU0NsaWVudENvbmZpZ0xheWVyKSxcbik7XG4iXX0=
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
|
-
import type { SESClientConfig } from "@aws-sdk/client-ses";
|
|
5
|
-
import { Context, Effect, Layer } from "effect";
|
|
6
|
-
declare const SESClientInstanceConfig_base: Context.TagClass<SESClientInstanceConfig, "@effect-aws/client-ses/SESClientInstanceConfig", SESClientConfig>;
|
|
7
|
-
/**
|
|
8
|
-
* @since 1.0.0
|
|
9
|
-
* @category tags
|
|
10
|
-
*/
|
|
11
|
-
export declare class SESClientInstanceConfig extends SESClientInstanceConfig_base {
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* @since 1.0.0
|
|
15
|
-
* @category constructors
|
|
16
|
-
*/
|
|
17
|
-
export declare const makeDefaultSESClientInstanceConfig: Effect.Effect<SESClientConfig>;
|
|
18
|
-
/**
|
|
19
|
-
* @since 1.0.0
|
|
20
|
-
* @category layers
|
|
21
|
-
*/
|
|
22
|
-
export declare const DefaultSESClientConfigLayer: Layer.Layer<SESClientInstanceConfig, never, never>;
|
|
23
|
-
export {};
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DefaultSESClientConfigLayer = exports.makeDefaultSESClientInstanceConfig = exports.SESClientInstanceConfig = void 0;
|
|
4
|
-
const effect_1 = require("effect");
|
|
5
|
-
/**
|
|
6
|
-
* @since 1.0.0
|
|
7
|
-
* @category tags
|
|
8
|
-
*/
|
|
9
|
-
class SESClientInstanceConfig extends effect_1.Context.Tag("@effect-aws/client-ses/SESClientInstanceConfig")() {
|
|
10
|
-
}
|
|
11
|
-
exports.SESClientInstanceConfig = SESClientInstanceConfig;
|
|
12
|
-
/**
|
|
13
|
-
* @since 1.0.0
|
|
14
|
-
* @category constructors
|
|
15
|
-
*/
|
|
16
|
-
exports.makeDefaultSESClientInstanceConfig = effect_1.Effect.gen(function* (_) {
|
|
17
|
-
const runtime = yield* _(effect_1.Effect.runtime());
|
|
18
|
-
const runSync = effect_1.Runtime.runSync(runtime);
|
|
19
|
-
return {
|
|
20
|
-
logger: {
|
|
21
|
-
info(m) {
|
|
22
|
-
effect_1.Effect.logInfo(m).pipe(runSync);
|
|
23
|
-
},
|
|
24
|
-
warn(m) {
|
|
25
|
-
effect_1.Effect.logWarning(m).pipe(runSync);
|
|
26
|
-
},
|
|
27
|
-
error(m) {
|
|
28
|
-
effect_1.Effect.logError(m).pipe(runSync);
|
|
29
|
-
},
|
|
30
|
-
debug(m) {
|
|
31
|
-
effect_1.Effect.logDebug(m).pipe(runSync);
|
|
32
|
-
},
|
|
33
|
-
trace(m) {
|
|
34
|
-
effect_1.Effect.logTrace(m).pipe(runSync);
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
});
|
|
39
|
-
/**
|
|
40
|
-
* @since 1.0.0
|
|
41
|
-
* @category layers
|
|
42
|
-
*/
|
|
43
|
-
exports.DefaultSESClientConfigLayer = effect_1.Layer.effect(SESClientInstanceConfig, exports.makeDefaultSESClientInstanceConfig);
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0VTQ2xpZW50SW5zdGFuY2VDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU0VTQ2xpZW50SW5zdGFuY2VDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsbUNBQXlEO0FBRXpEOzs7R0FHRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsZ0JBQU8sQ0FBQyxHQUFHLENBQ3RELGdEQUFnRCxDQUNqRCxFQUE0QztDQUFHO0FBRmhELDBEQUVnRDtBQUVoRDs7O0dBR0c7QUFDVSxRQUFBLGtDQUFrQyxHQUM3QyxlQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDckIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQU0sQ0FBQyxPQUFPLEVBQVMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLGdCQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLE9BQU87UUFDTCxNQUFNLEVBQUU7WUFDTixJQUFJLENBQUMsQ0FBQztnQkFDSixlQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUM7Z0JBQ0osZUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDO2dCQUNMLGVBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQztnQkFDTCxlQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUM7Z0JBQ0wsZUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUw7OztHQUdHO0FBQ1UsUUFBQSwyQkFBMkIsR0FBRyxjQUFLLENBQUMsTUFBTSxDQUNyRCx1QkFBdUIsRUFDdkIsMENBQWtDLENBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQgdHlwZSB7IFNFU0NsaWVudENvbmZpZyB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCI7XG5pbXBvcnQgeyBDb250ZXh0LCBFZmZlY3QsIExheWVyLCBSdW50aW1lIH0gZnJvbSBcImVmZmVjdFwiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNFU0NsaWVudEluc3RhbmNlQ29uZmlnIGV4dGVuZHMgQ29udGV4dC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LXNlcy9TRVNDbGllbnRJbnN0YW5jZUNvbmZpZ1wiLFxuKTxTRVNDbGllbnRJbnN0YW5jZUNvbmZpZywgU0VTQ2xpZW50Q29uZmlnPigpIHt9XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlQ29uZmlnOiBFZmZlY3QuRWZmZWN0PFNFU0NsaWVudENvbmZpZz4gPVxuICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB5aWVsZCogXyhFZmZlY3QucnVudGltZTxuZXZlcj4oKSk7XG4gICAgY29uc3QgcnVuU3luYyA9IFJ1bnRpbWUucnVuU3luYyhydW50aW1lKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsb2dnZXI6IHtcbiAgICAgICAgaW5mbyhtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ0luZm8obSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2FybihtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ1dhcm5pbmcobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IobSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dFcnJvcihtKS5waXBlKHJ1blN5bmMpO1xuICAgICAgICB9LFxuICAgICAgICBkZWJ1ZyhtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ0RlYnVnKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYWNlKG0pIHtcbiAgICAgICAgICBFZmZlY3QubG9nVHJhY2UobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0U0VTQ2xpZW50Q29uZmlnTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICBtYWtlRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLFxuKTtcbiJdfQ==
|
package/lib/SESService.js
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.DefaultSESServiceLayer = exports.SESServiceLayer = exports.BaseSESServiceLayer = exports.SES = exports.SESService = exports.makeSESService = void 0;
|
|
5
|
-
/**
|
|
6
|
-
* @since 1.0.0
|
|
7
|
-
*/
|
|
8
|
-
const client_ses_1 = require("@aws-sdk/client-ses");
|
|
9
|
-
const effect_1 = require("effect");
|
|
10
|
-
const Errors_1 = require("./Errors");
|
|
11
|
-
const SESClientInstance_1 = require("./SESClientInstance");
|
|
12
|
-
const SESClientInstanceConfig_1 = require("./SESClientInstanceConfig");
|
|
13
|
-
const commands = {
|
|
14
|
-
CloneReceiptRuleSetCommand: client_ses_1.CloneReceiptRuleSetCommand,
|
|
15
|
-
CreateConfigurationSetCommand: client_ses_1.CreateConfigurationSetCommand,
|
|
16
|
-
CreateConfigurationSetEventDestinationCommand: client_ses_1.CreateConfigurationSetEventDestinationCommand,
|
|
17
|
-
CreateConfigurationSetTrackingOptionsCommand: client_ses_1.CreateConfigurationSetTrackingOptionsCommand,
|
|
18
|
-
CreateCustomVerificationEmailTemplateCommand: client_ses_1.CreateCustomVerificationEmailTemplateCommand,
|
|
19
|
-
CreateReceiptFilterCommand: client_ses_1.CreateReceiptFilterCommand,
|
|
20
|
-
CreateReceiptRuleCommand: client_ses_1.CreateReceiptRuleCommand,
|
|
21
|
-
CreateReceiptRuleSetCommand: client_ses_1.CreateReceiptRuleSetCommand,
|
|
22
|
-
CreateTemplateCommand: client_ses_1.CreateTemplateCommand,
|
|
23
|
-
DeleteConfigurationSetCommand: client_ses_1.DeleteConfigurationSetCommand,
|
|
24
|
-
DeleteConfigurationSetEventDestinationCommand: client_ses_1.DeleteConfigurationSetEventDestinationCommand,
|
|
25
|
-
DeleteConfigurationSetTrackingOptionsCommand: client_ses_1.DeleteConfigurationSetTrackingOptionsCommand,
|
|
26
|
-
DeleteCustomVerificationEmailTemplateCommand: client_ses_1.DeleteCustomVerificationEmailTemplateCommand,
|
|
27
|
-
DeleteIdentityCommand: client_ses_1.DeleteIdentityCommand,
|
|
28
|
-
DeleteIdentityPolicyCommand: client_ses_1.DeleteIdentityPolicyCommand,
|
|
29
|
-
DeleteReceiptFilterCommand: client_ses_1.DeleteReceiptFilterCommand,
|
|
30
|
-
DeleteReceiptRuleCommand: client_ses_1.DeleteReceiptRuleCommand,
|
|
31
|
-
DeleteReceiptRuleSetCommand: client_ses_1.DeleteReceiptRuleSetCommand,
|
|
32
|
-
DeleteTemplateCommand: client_ses_1.DeleteTemplateCommand,
|
|
33
|
-
DeleteVerifiedEmailAddressCommand: client_ses_1.DeleteVerifiedEmailAddressCommand,
|
|
34
|
-
DescribeActiveReceiptRuleSetCommand: client_ses_1.DescribeActiveReceiptRuleSetCommand,
|
|
35
|
-
DescribeConfigurationSetCommand: client_ses_1.DescribeConfigurationSetCommand,
|
|
36
|
-
DescribeReceiptRuleCommand: client_ses_1.DescribeReceiptRuleCommand,
|
|
37
|
-
DescribeReceiptRuleSetCommand: client_ses_1.DescribeReceiptRuleSetCommand,
|
|
38
|
-
GetAccountSendingEnabledCommand: client_ses_1.GetAccountSendingEnabledCommand,
|
|
39
|
-
GetCustomVerificationEmailTemplateCommand: client_ses_1.GetCustomVerificationEmailTemplateCommand,
|
|
40
|
-
GetIdentityDkimAttributesCommand: client_ses_1.GetIdentityDkimAttributesCommand,
|
|
41
|
-
GetIdentityMailFromDomainAttributesCommand: client_ses_1.GetIdentityMailFromDomainAttributesCommand,
|
|
42
|
-
GetIdentityNotificationAttributesCommand: client_ses_1.GetIdentityNotificationAttributesCommand,
|
|
43
|
-
GetIdentityPoliciesCommand: client_ses_1.GetIdentityPoliciesCommand,
|
|
44
|
-
GetIdentityVerificationAttributesCommand: client_ses_1.GetIdentityVerificationAttributesCommand,
|
|
45
|
-
GetSendQuotaCommand: client_ses_1.GetSendQuotaCommand,
|
|
46
|
-
GetSendStatisticsCommand: client_ses_1.GetSendStatisticsCommand,
|
|
47
|
-
GetTemplateCommand: client_ses_1.GetTemplateCommand,
|
|
48
|
-
ListConfigurationSetsCommand: client_ses_1.ListConfigurationSetsCommand,
|
|
49
|
-
ListCustomVerificationEmailTemplatesCommand: client_ses_1.ListCustomVerificationEmailTemplatesCommand,
|
|
50
|
-
ListIdentitiesCommand: client_ses_1.ListIdentitiesCommand,
|
|
51
|
-
ListIdentityPoliciesCommand: client_ses_1.ListIdentityPoliciesCommand,
|
|
52
|
-
ListReceiptFiltersCommand: client_ses_1.ListReceiptFiltersCommand,
|
|
53
|
-
ListReceiptRuleSetsCommand: client_ses_1.ListReceiptRuleSetsCommand,
|
|
54
|
-
ListTemplatesCommand: client_ses_1.ListTemplatesCommand,
|
|
55
|
-
ListVerifiedEmailAddressesCommand: client_ses_1.ListVerifiedEmailAddressesCommand,
|
|
56
|
-
PutConfigurationSetDeliveryOptionsCommand: client_ses_1.PutConfigurationSetDeliveryOptionsCommand,
|
|
57
|
-
PutIdentityPolicyCommand: client_ses_1.PutIdentityPolicyCommand,
|
|
58
|
-
ReorderReceiptRuleSetCommand: client_ses_1.ReorderReceiptRuleSetCommand,
|
|
59
|
-
SendBounceCommand: client_ses_1.SendBounceCommand,
|
|
60
|
-
SendBulkTemplatedEmailCommand: client_ses_1.SendBulkTemplatedEmailCommand,
|
|
61
|
-
SendCustomVerificationEmailCommand: client_ses_1.SendCustomVerificationEmailCommand,
|
|
62
|
-
SendEmailCommand: client_ses_1.SendEmailCommand,
|
|
63
|
-
SendRawEmailCommand: client_ses_1.SendRawEmailCommand,
|
|
64
|
-
SendTemplatedEmailCommand: client_ses_1.SendTemplatedEmailCommand,
|
|
65
|
-
SetActiveReceiptRuleSetCommand: client_ses_1.SetActiveReceiptRuleSetCommand,
|
|
66
|
-
SetIdentityDkimEnabledCommand: client_ses_1.SetIdentityDkimEnabledCommand,
|
|
67
|
-
SetIdentityFeedbackForwardingEnabledCommand: client_ses_1.SetIdentityFeedbackForwardingEnabledCommand,
|
|
68
|
-
SetIdentityHeadersInNotificationsEnabledCommand: client_ses_1.SetIdentityHeadersInNotificationsEnabledCommand,
|
|
69
|
-
SetIdentityMailFromDomainCommand: client_ses_1.SetIdentityMailFromDomainCommand,
|
|
70
|
-
SetIdentityNotificationTopicCommand: client_ses_1.SetIdentityNotificationTopicCommand,
|
|
71
|
-
SetReceiptRulePositionCommand: client_ses_1.SetReceiptRulePositionCommand,
|
|
72
|
-
TestRenderTemplateCommand: client_ses_1.TestRenderTemplateCommand,
|
|
73
|
-
UpdateAccountSendingEnabledCommand: client_ses_1.UpdateAccountSendingEnabledCommand,
|
|
74
|
-
UpdateConfigurationSetEventDestinationCommand: client_ses_1.UpdateConfigurationSetEventDestinationCommand,
|
|
75
|
-
UpdateConfigurationSetReputationMetricsEnabledCommand: client_ses_1.UpdateConfigurationSetReputationMetricsEnabledCommand,
|
|
76
|
-
UpdateConfigurationSetSendingEnabledCommand: client_ses_1.UpdateConfigurationSetSendingEnabledCommand,
|
|
77
|
-
UpdateConfigurationSetTrackingOptionsCommand: client_ses_1.UpdateConfigurationSetTrackingOptionsCommand,
|
|
78
|
-
UpdateCustomVerificationEmailTemplateCommand: client_ses_1.UpdateCustomVerificationEmailTemplateCommand,
|
|
79
|
-
UpdateReceiptRuleCommand: client_ses_1.UpdateReceiptRuleCommand,
|
|
80
|
-
UpdateTemplateCommand: client_ses_1.UpdateTemplateCommand,
|
|
81
|
-
VerifyDomainDkimCommand: client_ses_1.VerifyDomainDkimCommand,
|
|
82
|
-
VerifyDomainIdentityCommand: client_ses_1.VerifyDomainIdentityCommand,
|
|
83
|
-
VerifyEmailAddressCommand: client_ses_1.VerifyEmailAddressCommand,
|
|
84
|
-
VerifyEmailIdentityCommand: client_ses_1.VerifyEmailIdentityCommand,
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* @since 1.0.0
|
|
88
|
-
* @category constructors
|
|
89
|
-
*/
|
|
90
|
-
exports.makeSESService = effect_1.Effect.gen(function* (_) {
|
|
91
|
-
const client = yield* _(SESClientInstance_1.SESClientInstance);
|
|
92
|
-
return effect_1.Record.toEntries(commands).reduce((acc, [command]) => {
|
|
93
|
-
const CommandCtor = commands[command];
|
|
94
|
-
const methodImpl = (args, options) => effect_1.Effect.tryPromise({
|
|
95
|
-
try: (abortSignal) => client.send(new CommandCtor(args), {
|
|
96
|
-
...(options !== null && options !== void 0 ? options : {}),
|
|
97
|
-
abortSignal,
|
|
98
|
-
}),
|
|
99
|
-
catch: (e) => {
|
|
100
|
-
if (e instanceof client_ses_1.SESServiceException &&
|
|
101
|
-
Errors_1.AllServiceErrors.includes(e.name)) {
|
|
102
|
-
const ServiceException = effect_1.Data.tagged(e.name);
|
|
103
|
-
return ServiceException({
|
|
104
|
-
...e,
|
|
105
|
-
message: e.message,
|
|
106
|
-
stack: e.stack,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
if (e instanceof Error) {
|
|
110
|
-
return (0, Errors_1.SdkError)({
|
|
111
|
-
...e,
|
|
112
|
-
name: "SdkError",
|
|
113
|
-
message: e.message,
|
|
114
|
-
stack: e.stack,
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
throw e;
|
|
118
|
-
},
|
|
119
|
-
});
|
|
120
|
-
const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
|
|
121
|
-
return { ...acc, [methodName]: methodImpl };
|
|
122
|
-
}, {});
|
|
123
|
-
});
|
|
124
|
-
/**
|
|
125
|
-
* @since 1.0.0
|
|
126
|
-
* @category models
|
|
127
|
-
*/
|
|
128
|
-
class SESService extends effect_1.Effect.Tag("@effect-aws/client-ses/SESService")() {
|
|
129
|
-
}
|
|
130
|
-
exports.SESService = SESService;
|
|
131
|
-
_a = SESService;
|
|
132
|
-
SESService.defaultLayer = effect_1.Layer.effect(_a, exports.makeSESService).pipe(effect_1.Layer.provide(SESClientInstance_1.SESClientInstanceLayer), effect_1.Layer.provide(SESClientInstanceConfig_1.DefaultSESClientConfigLayer));
|
|
133
|
-
SESService.layer = (config) => effect_1.Layer.effect(_a, exports.makeSESService).pipe(effect_1.Layer.provide(SESClientInstance_1.SESClientInstanceLayer), effect_1.Layer.provide(effect_1.Layer.effect(SESClientInstanceConfig_1.SESClientInstanceConfig, SESClientInstanceConfig_1.makeDefaultSESClientInstanceConfig.pipe(effect_1.Effect.map((defaultConfig) => ({ ...defaultConfig, ...config }))))));
|
|
134
|
-
SESService.baseLayer = (evaluate) => effect_1.Layer.effect(_a, exports.makeSESService).pipe(effect_1.Layer.provide(effect_1.Layer.effect(SESClientInstance_1.SESClientInstance, effect_1.Effect.map(SESClientInstanceConfig_1.makeDefaultSESClientInstanceConfig, evaluate))));
|
|
135
|
-
/**
|
|
136
|
-
* @since 1.0.0
|
|
137
|
-
* @category models
|
|
138
|
-
* @alias SESService
|
|
139
|
-
*/
|
|
140
|
-
exports.SES = SESService;
|
|
141
|
-
/**
|
|
142
|
-
* @since 1.0.0
|
|
143
|
-
* @category layers
|
|
144
|
-
* @deprecated use SES.baseLayer instead
|
|
145
|
-
*/
|
|
146
|
-
exports.BaseSESServiceLayer = effect_1.Layer.effect(SESService, exports.makeSESService);
|
|
147
|
-
/**
|
|
148
|
-
* @since 1.0.0
|
|
149
|
-
* @category layers
|
|
150
|
-
* @deprecated use SES.layer instead
|
|
151
|
-
*/
|
|
152
|
-
exports.SESServiceLayer = exports.BaseSESServiceLayer.pipe(effect_1.Layer.provide(SESClientInstance_1.SESClientInstanceLayer));
|
|
153
|
-
/**
|
|
154
|
-
* @since 1.0.0
|
|
155
|
-
* @category layers
|
|
156
|
-
* @deprecated use SES.defaultLayer instead
|
|
157
|
-
*/
|
|
158
|
-
exports.DefaultSESServiceLayer = SESService.defaultLayer;
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0VTU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TRVNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7R0FFRztBQUNILG9EQXlONkI7QUFDN0IsbUNBQXFEO0FBQ3JELHFDQXNDa0I7QUFDbEIsMkRBQWdGO0FBQ2hGLHVFQUltQztBQWFuQyxNQUFNLFFBQVEsR0FBRztJQUNmLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsNkJBQTZCLEVBQTdCLDBDQUE2QjtJQUM3Qiw2Q0FBNkMsRUFBN0MsMERBQTZDO0lBQzdDLDRDQUE0QyxFQUE1Qyx5REFBNEM7SUFDNUMsNENBQTRDLEVBQTVDLHlEQUE0QztJQUM1QywwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLHdCQUF3QixFQUF4QixxQ0FBd0I7SUFDeEIsMkJBQTJCLEVBQTNCLHdDQUEyQjtJQUMzQixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLDZCQUE2QixFQUE3QiwwQ0FBNkI7SUFDN0IsNkNBQTZDLEVBQTdDLDBEQUE2QztJQUM3Qyw0Q0FBNEMsRUFBNUMseURBQTRDO0lBQzVDLDRDQUE0QyxFQUE1Qyx5REFBNEM7SUFDNUMscUJBQXFCLEVBQXJCLGtDQUFxQjtJQUNyQiwyQkFBMkIsRUFBM0Isd0NBQTJCO0lBQzNCLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4QiwyQkFBMkIsRUFBM0Isd0NBQTJCO0lBQzNCLHFCQUFxQixFQUFyQixrQ0FBcUI7SUFDckIsaUNBQWlDLEVBQWpDLDhDQUFpQztJQUNqQyxtQ0FBbUMsRUFBbkMsZ0RBQW1DO0lBQ25DLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQiw2QkFBNkIsRUFBN0IsMENBQTZCO0lBQzdCLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IseUNBQXlDLEVBQXpDLHNEQUF5QztJQUN6QyxnQ0FBZ0Ms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QVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7XG4gIFNFU1NlcnZpY2VFeGNlcHRpb24sXG4gIHR5cGUgU0VTQ2xpZW50LFxuICB0eXBlIFNFU0NsaWVudENvbmZpZyxcbiAgQ2xvbmVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIHR5cGUgQ2xvbmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDbG9uZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ29uZmlndXJhdGlvblNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDb25maWd1cmF0aW9uU2V0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kLFxuICB0eXBlIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUmVjZWlwdEZpbHRlckNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlUmVjZWlwdEZpbHRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVSZWNlaXB0RmlsdGVyQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICB0eXBlIENyZWF0ZVJlY2VpcHRSdWxlQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICB0eXBlIENyZWF0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVGVtcGxhdGVDb21tYW5kLFxuICB0eXBlIENyZWF0ZVRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ29uZmlndXJhdGlvblNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDb25maWd1cmF0aW9uU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlSWRlbnRpdHlDb21tYW5kLFxuICB0eXBlIERlbGV0ZUlkZW50aXR5Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUlkZW50aXR5Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlSWRlbnRpdHlQb2xpY3lDb21tYW5kLFxuICB0eXBlIERlbGV0ZUlkZW50aXR5UG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUlkZW50aXR5UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUmVjZWlwdEZpbHRlckNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlUmVjZWlwdEZpbHRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVSZWNlaXB0RmlsdGVyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICB0eXBlIERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICB0eXBlIERlbGV0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVGVtcGxhdGVDb21tYW5kLFxuICB0eXBlIERlbGV0ZVRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVmVyaWZpZWRFbWFpbEFkZHJlc3NDb21tYW5kLFxuICB0eXBlIERlbGV0ZVZlcmlmaWVkRW1haWxBZGRyZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVZlcmlmaWVkRW1haWxBZGRyZXNzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVDb25maWd1cmF0aW9uU2V0Q29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUNvbmZpZ3VyYXRpb25TZXRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVDb25maWd1cmF0aW9uU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZWNlaXB0UnVsZUNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZWNlaXB0UnVsZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgR2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgdHlwZSBHZXRBY2NvdW50U2VuZGluZ0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgR2V0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgR2V0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgR2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRJZGVudGl0eURraW1BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkF0dHJpYnV0ZXNDb21tYW5kLFxuICB0eXBlIEdldElkZW50aXR5TWFpbEZyb21Eb21haW5BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldElkZW50aXR5TWFpbEZyb21Eb21haW5BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlOb3RpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBHZXRJZGVudGl0eU5vdGlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0SWRlbnRpdHlOb3RpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmQsXG4gIHR5cGUgR2V0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRJZGVudGl0eVBvbGljaWVzQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlWZXJpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0SWRlbnRpdHlWZXJpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0U2VuZFF1b3RhQ29tbWFuZCxcbiAgdHlwZSBHZXRTZW5kUXVvdGFDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0U2VuZFF1b3RhQ29tbWFuZE91dHB1dCxcbiAgR2V0U2VuZFN0YXRpc3RpY3NDb21tYW5kLFxuICB0eXBlIEdldFNlbmRTdGF0aXN0aWNzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFNlbmRTdGF0aXN0aWNzQ29tbWFuZE91dHB1dCxcbiAgR2V0VGVtcGxhdGVDb21tYW5kLFxuICB0eXBlIEdldFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgTGlzdENvbmZpZ3VyYXRpb25TZXRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0Q29uZmlndXJhdGlvblNldHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdENvbmZpZ3VyYXRpb25TZXRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZCxcbiAgdHlwZSBMaXN0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdElkZW50aXRpZXNDb21tYW5kLFxuICB0eXBlIExpc3RJZGVudGl0aWVzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RJZGVudGl0aWVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdElkZW50aXR5UG9saWNpZXNDb21tYW5kLFxuICB0eXBlIExpc3RJZGVudGl0eVBvbGljaWVzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RJZGVudGl0eVBvbGljaWVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFJlY2VpcHRGaWx0ZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVjZWlwdEZpbHRlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFJlY2VpcHRGaWx0ZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFJlY2VpcHRSdWxlU2V0c0NvbW1hbmQsXG4gIHR5cGUgTGlzdFJlY2VpcHRSdWxlU2V0c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0UmVjZWlwdFJ1bGVTZXRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRlbXBsYXRlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFRlbXBsYXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VGVtcGxhdGVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFZlcmlmaWVkRW1haWxBZGRyZXNzZXNDb21tYW5kLFxuICB0eXBlIExpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzQ29tbWFuZE91dHB1dCxcbiAgUHV0Q29uZmlndXJhdGlvblNldERlbGl2ZXJ5T3B0aW9uc0NvbW1hbmQsXG4gIHR5cGUgUHV0Q29uZmlndXJhdGlvblNldERlbGl2ZXJ5T3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRDb25maWd1cmF0aW9uU2V0RGVsaXZlcnlPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgUHV0SWRlbnRpdHlQb2xpY3lDb21tYW5kLFxuICB0eXBlIFB1dElkZW50aXR5UG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIFB1dElkZW50aXR5UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgUmVvcmRlclJlY2VpcHRSdWxlU2V0Q29tbWFuZCxcbiAgdHlwZSBSZW9yZGVyUmVjZWlwdFJ1bGVTZXRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmVvcmRlclJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgU2VuZEJvdW5jZUNvbW1hbmQsXG4gIHR5cGUgU2VuZEJvdW5jZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZW5kQm91bmNlQ29tbWFuZE91dHB1dCxcbiAgU2VuZEJ1bGtUZW1wbGF0ZWRFbWFpbENvbW1hbmQsXG4gIHR5cGUgU2VuZEJ1bGtUZW1wbGF0ZWRFbWFpbENvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZW5kQnVsa1RlbXBsYXRlZEVtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2VuZEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsQ29tbWFuZCxcbiAgdHlwZSBTZW5kQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2VuZEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2VuZEVtYWlsQ29tbWFuZCxcbiAgdHlwZSBTZW5kRW1haWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2VuZEVtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2VuZFJhd0VtYWlsQ29tbWFuZCxcbiAgdHlwZSBTZW5kUmF3RW1haWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2VuZFJhd0VtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2VuZFRlbXBsYXRlZEVtYWlsQ29tbWFuZCxcbiAgdHlwZSBTZW5kVGVtcGxhdGVkRW1haWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2VuZFRlbXBsYXRlZEVtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2V0QWN0aXZlUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICB0eXBlIFNldEFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICB0eXBlIFNldEFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlEa2ltRW5hYmxlZENvbW1hbmQsXG4gIHR5cGUgU2V0SWRlbnRpdHlEa2ltRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRJZGVudGl0eURraW1FbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlGZWVkYmFja0ZvcndhcmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgdHlwZSBTZXRJZGVudGl0eUZlZWRiYWNrRm9yd2FyZGluZ0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0SWRlbnRpdHlGZWVkYmFja0ZvcndhcmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlIZWFkZXJzSW5Ob3RpZmljYXRpb25zRW5hYmxlZENvbW1hbmQsXG4gIHR5cGUgU2V0SWRlbnRpdHlIZWFkZXJzSW5Ob3RpZmljYXRpb25zRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRJZGVudGl0eUhlYWRlcnNJbk5vdGlmaWNhdGlvbnNFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkNvbW1hbmQsXG4gIHR5cGUgU2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlOb3RpZmljYXRpb25Ub3BpY0NvbW1hbmQsXG4gIHR5cGUgU2V0SWRlbnRpdHlOb3RpZmljYXRpb25Ub3BpY0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRJZGVudGl0eU5vdGlmaWNhdGlvblRvcGljQ29tbWFuZE91dHB1dCxcbiAgU2V0UmVjZWlwdFJ1bGVQb3NpdGlvbkNvbW1hbmQsXG4gIHR5cGUgU2V0UmVjZWlwdFJ1bGVQb3NpdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRSZWNlaXB0UnVsZVBvc2l0aW9uQ29tbWFuZE91dHB1dCxcbiAgVGVzdFJlbmRlclRlbXBsYXRlQ29tbWFuZCxcbiAgdHlwZSBUZXN0UmVuZGVyVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGVzdFJlbmRlclRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVBY2NvdW50U2VuZGluZ0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kLFxuICB0eXBlIFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29uZmlndXJhdGlvblNldFJlcHV0YXRpb25NZXRyaWNzRW5hYmxlZENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ29uZmlndXJhdGlvblNldFJlcHV0YXRpb25NZXRyaWNzRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVDb25maWd1cmF0aW9uU2V0UmVwdXRhdGlvbk1ldHJpY3NFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29uZmlndXJhdGlvblNldFNlbmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVDb25maWd1cmF0aW9uU2V0U2VuZGluZ0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQ29uZmlndXJhdGlvblNldFNlbmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVJlY2VpcHRSdWxlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVGVtcGxhdGVDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5RG9tYWluRGtpbUNvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5RG9tYWluRGtpbUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlEb21haW5Ea2ltQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5RG9tYWluSWRlbnRpdHlDb21tYW5kLFxuICB0eXBlIFZlcmlmeURvbWFpbklkZW50aXR5Q29tbWFuZElucHV0LFxuICB0eXBlIFZlcmlmeURvbWFpbklkZW50aXR5Q29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5RW1haWxBZGRyZXNzQ29tbWFuZCxcbiAgdHlwZSBWZXJpZnlFbWFpbEFkZHJlc3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgVmVyaWZ5RW1haWxBZGRyZXNzQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5RW1haWxJZGVudGl0eUNvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5RW1haWxJZGVudGl0eUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlFbWFpbElkZW50aXR5Q29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zZXNcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEFsbFNlcnZpY2VFcnJvcnMsXG4gIEFjY291bnRTZW5kaW5nUGF1c2VkRXJyb3IsXG4gIEFscmVhZHlFeGlzdHNFcnJvcixcbiAgQ2Fubm90RGVsZXRlRXJyb3IsXG4gIENvbmZpZ3VyYXRpb25TZXRBbHJlYWR5RXhpc3RzRXJyb3IsXG4gIENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvcixcbiAgQ29uZmlndXJhdGlvblNldFNlbmRpbmdQYXVzZWRFcnJvcixcbiAgQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxJbnZhbGlkQ29udGVudEVycm9yLFxuICBDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQWxyZWFkeUV4aXN0c0Vycm9yLFxuICBDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3IsXG4gIEV2ZW50RGVzdGluYXRpb25BbHJlYWR5RXhpc3RzRXJyb3IsXG4gIEV2ZW50RGVzdGluYXRpb25Eb2VzTm90RXhpc3RFcnJvcixcbiAgRnJvbUVtYWlsQWRkcmVzc05vdFZlcmlmaWVkRXJyb3IsXG4gIEludmFsaWRDbG91ZFdhdGNoRGVzdGluYXRpb25FcnJvcixcbiAgSW52YWxpZENvbmZpZ3VyYXRpb25TZXRFcnJvcixcbiAgSW52YWxpZERlbGl2ZXJ5T3B0aW9uc0Vycm9yLFxuICBJbnZhbGlkRmlyZWhvc2VEZXN0aW5hdGlvbkVycm9yLFxuICBJbnZhbGlkTGFtYmRhRnVuY3Rpb25FcnJvcixcbiAgSW52YWxpZFBvbGljeUVycm9yLFxuICBJbnZhbGlkUmVuZGVyaW5nUGFyYW1ldGVyRXJyb3IsXG4gIEludmFsaWRTM0NvbmZpZ3VyYXRpb25FcnJvcixcbiAgSW52YWxpZFNOU0Rlc3RpbmF0aW9uRXJyb3IsXG4gIEludmFsaWRTbnNUb3BpY0Vycm9yLFxuICBJbnZhbGlkVGVtcGxhdGVFcnJvcixcbiAgSW52YWxpZFRyYWNraW5nT3B0aW9uc0Vycm9yLFxuICBMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIE1haWxGcm9tRG9tYWluTm90VmVyaWZpZWRFcnJvcixcbiAgTWVzc2FnZVJlamVjdGVkRXJyb3IsXG4gIE1pc3NpbmdSZW5kZXJpbmdBdHRyaWJ1dGVFcnJvcixcbiAgUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFcnJvcixcbiAgUnVsZURvZXNOb3RFeGlzdEVycm9yLFxuICBSdWxlU2V0RG9lc05vdEV4aXN0RXJyb3IsXG4gIFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3IsXG4gIFRyYWNraW5nT3B0aW9uc0FscmVhZHlFeGlzdHNFcnJvcixcbiAgVHJhY2tpbmdPcHRpb25zRG9lc05vdEV4aXN0RXJyb3IsXG4gIFNka0Vycm9yLFxuICBUYWdnZWRFeGNlcHRpb24sXG59IGZyb20gXCIuL0Vycm9yc1wiO1xuaW1wb3J0IHsgU0VTQ2xpZW50SW5zdGFuY2UsIFNFU0NsaWVudEluc3RhbmNlTGF5ZXIgfSBmcm9tIFwiLi9TRVNDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFNFU0NsaWVudENvbmZpZ0xheWVyLFxuICBtYWtlRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICBTRVNDbGllbnRJbnN0YW5jZUNvbmZpZyxcbn0gZnJvbSBcIi4vU0VTQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBDbG9uZVJlY2VpcHRSdWxlU2V0Q29tbWFuZCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIENyZWF0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kLFxuICBDcmVhdGVSZWNlaXB0RmlsdGVyQ29tbWFuZCxcbiAgQ3JlYXRlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICBDcmVhdGVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIENyZWF0ZVRlbXBsYXRlQ29tbWFuZCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIERlbGV0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kLFxuICBEZWxldGVJZGVudGl0eUNvbW1hbmQsXG4gIERlbGV0ZUlkZW50aXR5UG9saWN5Q29tbWFuZCxcbiAgRGVsZXRlUmVjZWlwdEZpbHRlckNvbW1hbmQsXG4gIERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZCxcbiAgRGVsZXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICBEZWxldGVUZW1wbGF0ZUNvbW1hbmQsXG4gIERlbGV0ZVZlcmlmaWVkRW1haWxBZGRyZXNzQ29tbWFuZCxcbiAgRGVzY3JpYmVBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIERlc2NyaWJlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIERlc2NyaWJlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICBEZXNjcmliZVJlY2VpcHRSdWxlU2V0Q29tbWFuZCxcbiAgR2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgR2V0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIEdldElkZW50aXR5RGtpbUF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldElkZW50aXR5Tm90aWZpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldElkZW50aXR5UG9saWNpZXNDb21tYW5kLFxuICBHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRTZW5kUXVvdGFDb21tYW5kLFxuICBHZXRTZW5kU3RhdGlzdGljc0NvbW1hbmQsXG4gIEdldFRlbXBsYXRlQ29tbWFuZCxcbiAgTGlzdENvbmZpZ3VyYXRpb25TZXRzQ29tbWFuZCxcbiAgTGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZCxcbiAgTGlzdElkZW50aXRpZXNDb21tYW5kLFxuICBMaXN0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmQsXG4gIExpc3RSZWNlaXB0RmlsdGVyc0NvbW1hbmQsXG4gIExpc3RSZWNlaXB0UnVsZVNldHNDb21tYW5kLFxuICBMaXN0VGVtcGxhdGVzQ29tbWFuZCxcbiAgTGlzdFZlcmlmaWVkRW1haWxBZGRyZXNzZXNDb21tYW5kLFxuICBQdXRDb25maWd1cmF0aW9uU2V0RGVsaXZlcnlPcHRpb25zQ29tbWFuZCxcbiAgUHV0SWRlbnRpdHlQb2xpY3lDb21tYW5kLFxuICBSZW9yZGVyUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICBTZW5kQm91bmNlQ29tbWFuZCxcbiAgU2VuZEJ1bGtUZW1wbGF0ZWRFbWFpbENvbW1hbmQsXG4gIFNlbmRDdXN0b21WZXJpZmljYXRpb25FbWFpbENvbW1hbmQsXG4gIFNlbmRFbWFpbENvbW1hbmQsXG4gIFNlbmRSYXdFbWFpbENvbW1hbmQsXG4gIFNlbmRUZW1wbGF0ZWRFbWFpbENvbW1hbmQsXG4gIFNldEFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZCxcbiAgU2V0SWRlbnRpdHlEa2ltRW5hYmxlZENvbW1hbmQsXG4gIFNldElkZW50aXR5RmVlZGJhY2tGb3J3YXJkaW5nRW5hYmxlZENvbW1hbmQsXG4gIFNldElkZW50aXR5SGVhZGVyc0luTm90aWZpY2F0aW9uc0VuYWJsZWRDb21tYW5kLFxuICBTZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQ29tbWFuZCxcbiAgU2V0SWRlbnRpdHlOb3RpZmljYXRpb25Ub3BpY0NvbW1hbmQsXG4gIFNldFJlY2VpcHRSdWxlUG9zaXRpb25Db21tYW5kLFxuICBUZXN0UmVuZGVyVGVtcGxhdGVDb21tYW5kLFxuICBVcGRhdGVBY2NvdW50U2VuZGluZ0VuYWJsZWRDb21tYW5kLFxuICBVcGRhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmQsXG4gIFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRSZXB1dGF0aW9uTWV0cmljc0VuYWJsZWRDb21tYW5kLFxuICBVcGRhdGVDb25maWd1cmF0aW9uU2V0U2VuZGluZ0VuYWJsZWRDb21tYW5kLFxuICBVcGRhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZCxcbiAgVXBkYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIFVwZGF0ZVJlY2VpcHRSdWxlQ29tbWFuZCxcbiAgVXBkYXRlVGVtcGxhdGVDb21tYW5kLFxuICBWZXJpZnlEb21haW5Ea2ltQ29tbWFuZCxcbiAgVmVyaWZ5RG9tYWluSWRlbnRpdHlDb21tYW5kLFxuICBWZXJpZnlFbWFpbEFkZHJlc3NDb21tYW5kLFxuICBWZXJpZnlFbWFpbElkZW50aXR5Q29tbWFuZCxcbn07XG5cbmludGVyZmFjZSBTRVNTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENsb25lUmVjZWlwdFJ1bGVTZXRDb21tYW5kfVxuICAgKi9cbiAgY2xvbmVSZWNlaXB0UnVsZVNldChcbiAgICBhcmdzOiBDbG9uZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2xvbmVSZWNlaXB0UnVsZVNldENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJ1bGVTZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVDb25maWd1cmF0aW9uU2V0Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUNvbmZpZ3VyYXRpb25TZXQoXG4gICAgYXJnczogQ3JlYXRlQ29uZmlndXJhdGlvblNldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXRBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IEludmFsaWRDb25maWd1cmF0aW9uU2V0RXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbihcbiAgICBhcmdzOiBDcmVhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEV2ZW50RGVzdGluYXRpb25BbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IEludmFsaWRDbG91ZFdhdGNoRGVzdGluYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEZpcmVob3NlRGVzdGluYXRpb25FcnJvclxuICAgIHwgSW52YWxpZFNOU0Rlc3RpbmF0aW9uRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnMoXG4gICAgYXJnczogQ3JlYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICAgIHwgSW52YWxpZFRyYWNraW5nT3B0aW9uc0Vycm9yXG4gICAgfCBUcmFja2luZ09wdGlvbnNBbHJlYWR5RXhpc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlKFxuICAgIGFyZ3M6IENyZWF0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDdXN0b21WZXJpZmljYXRpb25FbWFpbEludmFsaWRDb250ZW50RXJyb3JcbiAgICB8IEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IEZyb21FbWFpbEFkZHJlc3NOb3RWZXJpZmllZEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlUmVjZWlwdEZpbHRlckNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVSZWNlaXB0RmlsdGVyKFxuICAgIGFyZ3M6IENyZWF0ZVJlY2VpcHRGaWx0ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVSZWNlaXB0RmlsdGVyQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEFscmVhZHlFeGlzdHNFcnJvciB8IExpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVSZWNlaXB0UnVsZUNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVSZWNlaXB0UnVsZShcbiAgICBhcmdzOiBDcmVhdGVSZWNlaXB0UnVsZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFGdW5jdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkUzNDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRTbnNUb3BpY0Vycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJ1bGVEb2VzTm90RXhpc3RFcnJvclxuICAgIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVJlY2VpcHRSdWxlU2V0KFxuICAgIGFyZ3M6IENyZWF0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQWxyZWFkeUV4aXN0c0Vycm9yIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVRlbXBsYXRlQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVRlbXBsYXRlKFxuICAgIGFyZ3M6IENyZWF0ZVRlbXBsYXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQWxyZWFkeUV4aXN0c0Vycm9yIHwgSW52YWxpZFRlbXBsYXRlRXJyb3IgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQ29uZmlndXJhdGlvblNldENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVDb25maWd1cmF0aW9uU2V0KFxuICAgIGFyZ3M6IERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVDb25maWd1cmF0aW9uU2V0Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbihcbiAgICBhcmdzOiBEZWxldGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEV2ZW50RGVzdGluYXRpb25Eb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnMoXG4gICAgYXJnczogRGVsZXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICAgIHwgVHJhY2tpbmdPcHRpb25zRG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlKFxuICAgIGFyZ3M6IERlbGV0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJZGVudGl0eUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVJZGVudGl0eShcbiAgICBhcmdzOiBEZWxldGVJZGVudGl0eUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlbGV0ZUlkZW50aXR5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJZGVudGl0eVBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVJZGVudGl0eVBvbGljeShcbiAgICBhcmdzOiBEZWxldGVJZGVudGl0eVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlbGV0ZUlkZW50aXR5UG9saWN5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVSZWNlaXB0RmlsdGVyQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVJlY2VpcHRGaWx0ZXIoXG4gICAgYXJnczogRGVsZXRlUmVjZWlwdEZpbHRlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlbGV0ZVJlY2VpcHRGaWx0ZXJDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVJlY2VpcHRSdWxlKFxuICAgIGFyZ3M6IERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlUmVjZWlwdFJ1bGVDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVJlY2VpcHRSdWxlU2V0KFxuICAgIGFyZ3M6IERlbGV0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQ2Fubm90RGVsZXRlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVGVtcGxhdGVDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVGVtcGxhdGUoXG4gICAgYXJnczogRGVsZXRlVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZWxldGVUZW1wbGF0ZUNvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVmVyaWZpZWRFbWFpbEFkZHJlc3NDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVmVyaWZpZWRFbWFpbEFkZHJlc3MoXG4gICAgYXJnczogRGVsZXRlVmVyaWZpZWRFbWFpbEFkZHJlc3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZWxldGVWZXJpZmllZEVtYWlsQWRkcmVzc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZUFjdGl2ZVJlY2VpcHRSdWxlU2V0KFxuICAgIGFyZ3M6IERlc2NyaWJlQWN0aXZlUmVjZWlwdFJ1bGVTZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZXNjcmliZUFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZUNvbmZpZ3VyYXRpb25TZXRDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVDb25maWd1cmF0aW9uU2V0KFxuICAgIGFyZ3M6IERlc2NyaWJlQ29uZmlndXJhdGlvblNldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlQ29uZmlndXJhdGlvblNldENvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVSZWNlaXB0UnVsZUNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVJlY2VpcHRSdWxlKFxuICAgIGFyZ3M6IERlc2NyaWJlUmVjZWlwdFJ1bGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFJ1bGVEb2VzTm90RXhpc3RFcnJvciB8IFJ1bGVTZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVJlY2VpcHRSdWxlU2V0Q29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlUmVjZWlwdFJ1bGVTZXQoXG4gICAgYXJnczogRGVzY3JpYmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlUmVjZWlwdFJ1bGVTZXRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEFjY291bnRTZW5kaW5nRW5hYmxlZENvbW1hbmR9XG4gICAqL1xuICBnZXRBY2NvdW50U2VuZGluZ0VuYWJsZWQoXG4gICAgYXJnczogR2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZH1cbiAgICovXG4gIGdldEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGUoXG4gICAgYXJnczogR2V0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZURvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldElkZW50aXR5RGtpbUF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRJZGVudGl0eURraW1BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkF0dHJpYnV0ZXMoXG4gICAgYXJnczogR2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxHZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0SWRlbnRpdHlOb3RpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldElkZW50aXR5Tm90aWZpY2F0aW9uQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRJZGVudGl0eU5vdGlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxHZXRJZGVudGl0eU5vdGlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldElkZW50aXR5UG9saWNpZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0SWRlbnRpdHlQb2xpY2llcyhcbiAgICBhcmdzOiBHZXRJZGVudGl0eVBvbGljaWVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0SWRlbnRpdHlWZXJpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldElkZW50aXR5VmVyaWZpY2F0aW9uQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFNlbmRRdW90YUNvbW1hbmR9XG4gICAqL1xuICBnZXRTZW5kUXVvdGEoXG4gICAgYXJnczogR2V0U2VuZFF1b3RhQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0U2VuZFF1b3RhQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRTZW5kU3RhdGlzdGljc0NvbW1hbmR9XG4gICAqL1xuICBnZXRTZW5kU3RhdGlzdGljcyhcbiAgICBhcmdzOiBHZXRTZW5kU3RhdGlzdGljc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEdldFNlbmRTdGF0aXN0aWNzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICBnZXRUZW1wbGF0ZShcbiAgICBhcmdzOiBHZXRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdENvbmZpZ3VyYXRpb25TZXRzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RDb25maWd1cmF0aW9uU2V0cyhcbiAgICBhcmdzOiBMaXN0Q29uZmlndXJhdGlvblNldHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxMaXN0Q29uZmlndXJhdGlvblNldHNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZXMoXG4gICAgYXJnczogTGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8TGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0SWRlbnRpdGllc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0SWRlbnRpdGllcyhcbiAgICBhcmdzOiBMaXN0SWRlbnRpdGllc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PExpc3RJZGVudGl0aWVzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0SWRlbnRpdHlQb2xpY2llcyhcbiAgICBhcmdzOiBMaXN0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PExpc3RJZGVudGl0eVBvbGljaWVzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UmVjZWlwdEZpbHRlcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFJlY2VpcHRGaWx0ZXJzKFxuICAgIGFyZ3M6IExpc3RSZWNlaXB0RmlsdGVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PExpc3RSZWNlaXB0RmlsdGVyc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFJlY2VpcHRSdWxlU2V0c0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UmVjZWlwdFJ1bGVTZXRzKFxuICAgIGFyZ3M6IExpc3RSZWNlaXB0UnVsZVNldHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxMaXN0UmVjZWlwdFJ1bGVTZXRzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGVtcGxhdGVzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUZW1wbGF0ZXMoXG4gICAgYXJnczogTGlzdFRlbXBsYXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PExpc3RUZW1wbGF0ZXNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzKFxuICAgIGFyZ3M6IExpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8TGlzdFZlcmlmaWVkRW1haWxBZGRyZXNzZXNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dENvbmZpZ3VyYXRpb25TZXREZWxpdmVyeU9wdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgcHV0Q29uZmlndXJhdGlvblNldERlbGl2ZXJ5T3B0aW9ucyhcbiAgICBhcmdzOiBQdXRDb25maWd1cmF0aW9uU2V0RGVsaXZlcnlPcHRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0Q29uZmlndXJhdGlvblNldERlbGl2ZXJ5T3B0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3IgfCBJbnZhbGlkRGVsaXZlcnlPcHRpb25zRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0SWRlbnRpdHlQb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgcHV0SWRlbnRpdHlQb2xpY3koXG4gICAgYXJnczogUHV0SWRlbnRpdHlQb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRJZGVudGl0eVBvbGljeUNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUG9saWN5RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVvcmRlclJlY2VpcHRSdWxlU2V0Q29tbWFuZH1cbiAgICovXG4gIHJlb3JkZXJSZWNlaXB0UnVsZVNldChcbiAgICBhcmdzOiBSZW9yZGVyUmVjZWlwdFJ1bGVTZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZW9yZGVyUmVjZWlwdFJ1bGVTZXRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUnVsZURvZXNOb3RFeGlzdEVycm9yIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNlbmRCb3VuY2VDb21tYW5kfVxuICAgKi9cbiAgc2VuZEJvdW5jZShcbiAgICBhcmdzOiBTZW5kQm91bmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8U2VuZEJvdW5jZUNvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgTWVzc2FnZVJlamVjdGVkRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZW5kQnVsa1RlbXBsYXRlZEVtYWlsQ29tbWFuZH1cbiAgICovXG4gIHNlbmRCdWxrVGVtcGxhdGVkRW1haWwoXG4gICAgYXJnczogU2VuZEJ1bGtUZW1wbGF0ZWRFbWFpbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNlbmRCdWxrVGVtcGxhdGVkRW1haWxDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY291bnRTZW5kaW5nUGF1c2VkRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldFNlbmRpbmdQYXVzZWRFcnJvclxuICAgIHwgTWFpbEZyb21Eb21haW5Ob3RWZXJpZmllZEVycm9yXG4gICAgfCBNZXNzYWdlUmVqZWN0ZWRFcnJvclxuICAgIHwgVGVtcGxhdGVEb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZW5kQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxDb21tYW5kfVxuICAgKi9cbiAgc2VuZEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsKFxuICAgIGFyZ3M6IFNlbmRDdXN0b21WZXJpZmljYXRpb25FbWFpbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNlbmRDdXN0b21WZXJpZmljYXRpb25FbWFpbENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldERvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEZyb21FbWFpbEFkZHJlc3NOb3RWZXJpZmllZEVycm9yXG4gICAgfCBNZXNzYWdlUmVqZWN0ZWRFcnJvclxuICAgIHwgUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZW5kRW1haWxDb21tYW5kfVxuICAgKi9cbiAgc2VuZEVtYWlsKFxuICAgIGFyZ3M6IFNlbmRFbWFpbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNlbmRFbWFpbENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjb3VudFNlbmRpbmdQYXVzZWRFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldERvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0U2VuZGluZ1BhdXNlZEVycm9yXG4gICAgfCBNYWlsRnJvbURvbWFpbk5vdFZlcmlmaWVkRXJyb3JcbiAgICB8IE1lc3NhZ2VSZWplY3RlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNlbmRSYXdFbWFpbENvbW1hbmR9XG4gICAqL1xuICBzZW5kUmF3RW1haWwoXG4gICAgYXJnczogU2VuZFJhd0VtYWlsQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2VuZFJhd0VtYWlsQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2NvdW50U2VuZGluZ1BhdXNlZEVycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXRTZW5kaW5nUGF1c2VkRXJyb3JcbiAgICB8IE1haWxGcm9tRG9tYWluTm90VmVyaWZpZWRFcnJvclxuICAgIHwgTWVzc2FnZVJlamVjdGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2VuZFRlbXBsYXRlZEVtYWlsQ29tbWFuZH1cbiAgICovXG4gIHNlbmRUZW1wbGF0ZWRFbWFpbChcbiAgICBhcmdzOiBTZW5kVGVtcGxhdGVkRW1haWxDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZW5kVGVtcGxhdGVkRW1haWxDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY291bnRTZW5kaW5nUGF1c2VkRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldFNlbmRpbmdQYXVzZWRFcnJvclxuICAgIHwgTWFpbEZyb21Eb21haW5Ob3RWZXJpZmllZEVycm9yXG4gICAgfCBNZXNzYWdlUmVqZWN0ZWRFcnJvclxuICAgIHwgVGVtcGxhdGVEb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmR9XG4gICAqL1xuICBzZXRBY3RpdmVSZWNlaXB0UnVsZVNldChcbiAgICBhcmdzOiBTZXRBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldEFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFJ1bGVTZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRJZGVudGl0eURraW1FbmFibGVkQ29tbWFuZH1cbiAgICovXG4gIHNldElkZW50aXR5RGtpbUVuYWJsZWQoXG4gICAgYXJnczogU2V0SWRlbnRpdHlEa2ltRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFNldElkZW50aXR5RGtpbUVuYWJsZWRDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldElkZW50aXR5RmVlZGJhY2tGb3J3YXJkaW5nRW5hYmxlZENvbW1hbmR9XG4gICAqL1xuICBzZXRJZGVudGl0eUZlZWRiYWNrRm9yd2FyZGluZ0VuYWJsZWQoXG4gICAgYXJnczogU2V0SWRlbnRpdHlGZWVkYmFja0ZvcndhcmRpbmdFbmFibGVkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8U2V0SWRlbnRpdHlGZWVkYmFja0ZvcndhcmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRJZGVudGl0eUhlYWRlcnNJbk5vdGlmaWNhdGlvbnNFbmFibGVkQ29tbWFuZH1cbiAgICovXG4gIHNldElkZW50aXR5SGVhZGVyc0luTm90aWZpY2F0aW9uc0VuYWJsZWQoXG4gICAgYXJnczogU2V0SWRlbnRpdHlIZWFkZXJzSW5Ob3RpZmljYXRpb25zRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldElkZW50aXR5SGVhZGVyc0luTm90aWZpY2F0aW9uc0VuYWJsZWRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldElkZW50aXR5TWFpbEZyb21Eb21haW5Db21tYW5kfVxuICAgKi9cbiAgc2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbihcbiAgICBhcmdzOiBTZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8U2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkNvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0SWRlbnRpdHlOb3RpZmljYXRpb25Ub3BpY0NvbW1hbmR9XG4gICAqL1xuICBzZXRJZGVudGl0eU5vdGlmaWNhdGlvblRvcGljKFxuICAgIGFyZ3M6IFNldElkZW50aXR5Tm90aWZpY2F0aW9uVG9waWNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxTZXRJZGVudGl0eU5vdGlmaWNhdGlvblRvcGljQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRSZWNlaXB0UnVsZVBvc2l0aW9uQ29tbWFuZH1cbiAgICovXG4gIHNldFJlY2VpcHRSdWxlUG9zaXRpb24oXG4gICAgYXJnczogU2V0UmVjZWlwdFJ1bGVQb3NpdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFJlY2VpcHRSdWxlUG9zaXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUnVsZURvZXNOb3RFeGlzdEVycm9yIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFRlc3RSZW5kZXJUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICB0ZXN0UmVuZGVyVGVtcGxhdGUoXG4gICAgYXJnczogVGVzdFJlbmRlclRlbXBsYXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVGVzdFJlbmRlclRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUmVuZGVyaW5nUGFyYW1ldGVyRXJyb3JcbiAgICB8IE1pc3NpbmdSZW5kZXJpbmdBdHRyaWJ1dGVFcnJvclxuICAgIHwgVGVtcGxhdGVEb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVBY2NvdW50U2VuZGluZ0VuYWJsZWRDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQWNjb3VudFNlbmRpbmdFbmFibGVkKFxuICAgIGFyZ3M6IFVwZGF0ZUFjY291bnRTZW5kaW5nRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFVwZGF0ZUFjY291bnRTZW5kaW5nRW5hYmxlZENvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb24oXG4gICAgYXJnczogVXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldERvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBFdmVudERlc3RpbmF0aW9uRG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEludmFsaWRDbG91ZFdhdGNoRGVzdGluYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEZpcmVob3NlRGVzdGluYXRpb25FcnJvclxuICAgIHwgSW52YWxpZFNOU0Rlc3RpbmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ29uZmlndXJhdGlvblNldFJlcHV0YXRpb25NZXRyaWNzRW5hYmxlZENvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDb25maWd1cmF0aW9uU2V0UmVwdXRhdGlvbk1ldHJpY3NFbmFibGVkKFxuICAgIGFyZ3M6IFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRSZXB1dGF0aW9uTWV0cmljc0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDb25maWd1cmF0aW9uU2V0UmVwdXRhdGlvbk1ldHJpY3NFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVDb25maWd1cmF0aW9uU2V0U2VuZGluZ0VuYWJsZWRDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQ29uZmlndXJhdGlvblNldFNlbmRpbmdFbmFibGVkKFxuICAgIGFyZ3M6IFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRTZW5kaW5nRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRTZW5kaW5nRW5hYmxlZENvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zKFxuICAgIGFyZ3M6IFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEludmFsaWRUcmFja2luZ09wdGlvbnNFcnJvclxuICAgIHwgVHJhY2tpbmdPcHRpb25zRG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlKFxuICAgIGFyZ3M6IFVwZGF0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDdXN0b21WZXJpZmljYXRpb25FbWFpbEludmFsaWRDb250ZW50RXJyb3JcbiAgICB8IEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVEb2VzTm90RXhpc3RFcnJvclxuICAgIHwgRnJvbUVtYWlsQWRkcmVzc05vdFZlcmlmaWVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlUmVjZWlwdFJ1bGVDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlUmVjZWlwdFJ1bGUoXG4gICAgYXJnczogVXBkYXRlUmVjZWlwdFJ1bGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVSZWNlaXB0UnVsZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYUZ1bmN0aW9uRXJyb3JcbiAgICB8IEludmFsaWRTM0NvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZFNuc1RvcGljRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUnVsZURvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBSdWxlU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlVGVtcGxhdGVDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlVGVtcGxhdGUoXG4gICAgYXJnczogVXBkYXRlVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVUZW1wbGF0ZUNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkVGVtcGxhdGVFcnJvciB8IFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVmVyaWZ5RG9tYWluRGtpbUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlEb21haW5Ea2ltKFxuICAgIGFyZ3M6IFZlcmlmeURvbWFpbkRraW1Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxWZXJpZnlEb21haW5Ea2ltQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlEb21haW5JZGVudGl0eShcbiAgICBhcmdzOiBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFZlcmlmeURvbWFpbklkZW50aXR5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBWZXJpZnlFbWFpbEFkZHJlc3NDb21tYW5kfVxuICAgKi9cbiAgdmVyaWZ5RW1haWxBZGRyZXNzKFxuICAgIGFyZ3M6IFZlcmlmeUVtYWlsQWRkcmVzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFZlcmlmeUVtYWlsQWRkcmVzc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVmVyaWZ5RW1haWxJZGVudGl0eUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlFbWFpbElkZW50aXR5KFxuICAgIGFyZ3M6IFZlcmlmeUVtYWlsSWRlbnRpdHlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxWZXJpZnlFbWFpbElkZW50aXR5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZVNFU1NlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhTRVNDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucykgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgdHJ5OiAoYWJvcnRTaWduYWwpID0+XG4gICAgICAgICAgY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCB7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICBhYm9ydFNpZ25hbCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIFNFU1NlcnZpY2VFeGNlcHRpb24gJiZcbiAgICAgICAgICAgIEFsbFNlcnZpY2VFcnJvcnMuaW5jbHVkZXMoZS5uYW1lKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFxuICAgICAgICAgICAgICBUYWdnZWRFeGNlcHRpb248U0VTU2VydmljZUV4Y2VwdGlvbj5cbiAgICAgICAgICAgID4oZS5uYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VFeGNlcHRpb24oe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IChjb21tYW5kWzBdLnRvTG93ZXJDYXNlKCkgKyBjb21tYW5kLnNsaWNlKDEpKS5yZXBsYWNlKFxuICAgICAgL0NvbW1hbmQkLyxcbiAgICAgIFwiXCIsXG4gICAgKTtcbiAgICByZXR1cm4geyAuLi5hY2MsIFttZXRob2ROYW1lXTogbWV0aG9kSW1wbCB9O1xuICB9LCB7fSkgYXMgU0VTU2VydmljZSQ7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIFNFU1NlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuVGFnKFwiQGVmZmVjdC1hd3MvY2xpZW50LXNlcy9TRVNTZXJ2aWNlXCIpPFxuICBTRVNTZXJ2aWNlLFxuICBTRVNTZXJ2aWNlJFxuPigpIHtcbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRMYXllciA9IExheWVyLmVmZmVjdCh0aGlzLCBtYWtlU0VTU2VydmljZSkucGlwZShcbiAgICBMYXllci5wcm92aWRlKFNFU0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuICAgIExheWVyLnByb3ZpZGUoRGVmYXVsdFNFU0NsaWVudENvbmZpZ0xheWVyKSxcbiAgKTtcbiAgc3RhdGljIHJlYWRvbmx5IGxheWVyID0gKGNvbmZpZzogU0VTQ2xpZW50Q29uZmlnKSA9PlxuICAgIExheWVyLmVmZmVjdCh0aGlzLCBtYWtlU0VTU2VydmljZSkucGlwZShcbiAgICAgIExheWVyLnByb3ZpZGUoU0VTQ2xpZW50SW5zdGFuY2VMYXllciksXG4gICAgICBMYXllci5wcm92aWRlKFxuICAgICAgICBMYXllci5lZmZlY3QoXG4gICAgICAgICAgU0VTQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gICAgICAgICAgbWFrZURlZmF1bHRTRVNDbGllbnRJbnN0YW5jZUNvbmZpZy5waXBlKFxuICAgICAgICAgICAgRWZmZWN0Lm1hcCgoZGVmYXVsdENvbmZpZykgPT4gKHsgLi4uZGVmYXVsdENvbmZpZywgLi4uY29uZmlnIH0pKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuICBzdGF0aWMgcmVhZG9ubHkgYmFzZUxheWVyID0gKFxuICAgIGV2YWx1YXRlOiAoZGVmYXVsdENvbmZpZzogU0VTQ2xpZW50Q29uZmlnKSA9PiBTRVNDbGllbnQsXG4gICkgPT5cbiAgICBMYXllci5lZmZlY3QodGhpcywgbWFrZVNFU1NlcnZpY2UpLnBpcGUoXG4gICAgICBMYXllci5wcm92aWRlKFxuICAgICAgICBMYXllci5lZmZlY3QoXG4gICAgICAgICAgU0VTQ2xpZW50SW5zdGFuY2UsXG4gICAgICAgICAgRWZmZWN0Lm1hcChtYWtlRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLCBldmFsdWF0ZSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKiBAYWxpYXMgU0VTU2VydmljZVxuICovXG5leHBvcnQgY29uc3QgU0VTID0gU0VTU2VydmljZTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBTRVMuYmFzZUxheWVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VTRVNTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoU0VTU2VydmljZSwgbWFrZVNFU1NlcnZpY2UpO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIFNFUy5sYXllciBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBTRVNTZXJ2aWNlTGF5ZXIgPSBCYXNlU0VTU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoU0VTQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIFNFUy5kZWZhdWx0TGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFNFU1NlcnZpY2VMYXllciA9IFNFU1NlcnZpY2UuZGVmYXVsdExheWVyO1xuIl19
|