@gomomento/sdk-core 1.116.0 → 1.117.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -61,9 +61,21 @@ export declare abstract class CredentialProvider {
61
61
  * @returns {boolean} true if connecting to the endpoint connection with TLS; false if not using TLS
62
62
  */
63
63
  abstract isEndpointSecure(): boolean;
64
+ /**
65
+ * @deprecated use fromEnvVarV2() instead
66
+ */
64
67
  static fromEnvironmentVariable(props: EnvMomentoTokenProviderProps | string): CredentialProvider;
68
+ /**
69
+ * @deprecated use fromEnvVarV2() instead
70
+ */
65
71
  static fromEnvVar(props: EnvMomentoTokenProviderProps | string): CredentialProvider;
72
+ /**
73
+ * @deprecated use fromApiKeyV2() or fromDisposableToken() instead
74
+ */
66
75
  static fromString(props: StringMomentoTokenProviderProps | string): CredentialProvider;
76
+ static fromDisposableToken(props: StringMomentoTokenProviderProps | string): CredentialProvider;
77
+ static fromEnvVarV2(props?: EnvMomentoV2TokenProviderProps): CredentialProvider;
78
+ static fromApiKeyV2(props: ApiKeyV2TokenProviderProps): CredentialProvider;
67
79
  /**
68
80
  * Allow insecure connections to momento-local service for testing purposes.
69
81
  * Does not require a Momento API key.
@@ -98,10 +110,18 @@ export interface StringMomentoAuthTokenProviderProps extends CredentialProviderP
98
110
  authToken: string;
99
111
  }
100
112
  export type StringMomentoTokenProviderProps = StringMomentoApiKeyProviderProps | StringMomentoAuthTokenProviderProps;
113
+ export type ApiKeyV2TokenProviderProps = StringMomentoTokenProviderProps & {
114
+ endpoint: string;
115
+ };
116
+ export interface EnvMomentoV2TokenProviderProps {
117
+ apiKeyEnvVar?: string;
118
+ endpointEnvVar?: string;
119
+ }
101
120
  /**
102
121
  * Reads and parses a momento auth token stored in a String
103
122
  * @export
104
123
  * @class StringMomentoTokenProvider
124
+ * @deprecated use ApiKeyV2TokenProvider instead
105
125
  */
106
126
  export declare class StringMomentoTokenProvider extends CredentialProviderBase {
107
127
  private readonly apiKey;
@@ -133,6 +153,7 @@ export interface EnvMomentoTokenProviderProps extends CredentialProviderProps {
133
153
  * Reads and parses a momento auth token stored as an environment variable.
134
154
  * @export
135
155
  * @class EnvMomentoTokenProvider
156
+ * @deprecated use EnvMomentoV2TokenProvider instead
136
157
  */
137
158
  export declare class EnvMomentoTokenProvider extends StringMomentoTokenProvider {
138
159
  environmentVariableName: string;
@@ -141,6 +162,11 @@ export declare class EnvMomentoTokenProvider extends StringMomentoTokenProvider
141
162
  */
142
163
  constructor(props: EnvMomentoTokenProviderProps | string);
143
164
  }
165
+ /**
166
+ * Provides the default credential provider based on which key was provided (v2 or legacy).
167
+ * @export
168
+ * @returns {CredentialProvider} the default credential provider
169
+ */
144
170
  export declare function getDefaultCredentialProvider(): CredentialProvider;
145
171
  export interface MomentoLocalProviderProps extends CredentialProviderProps {
146
172
  /**
@@ -170,4 +196,29 @@ export declare class MomentoLocalProvider implements CredentialProvider {
170
196
  isEndpointSecure(): boolean;
171
197
  withMomentoLocal(): CredentialProvider;
172
198
  }
199
+ export declare class ApiKeyV2TokenProvider extends CredentialProviderBase {
200
+ private readonly apiKey;
201
+ private readonly allEndpoints;
202
+ /**
203
+ * @param {ApiKeyV2TokenProviderProps} props configuration options for the token provider
204
+ */
205
+ constructor(props: ApiKeyV2TokenProviderProps);
206
+ getAuthToken(): string;
207
+ getCacheEndpoint(): string;
208
+ isCacheEndpointSecure(): boolean;
209
+ getControlEndpoint(): string;
210
+ isControlEndpointSecure(): boolean;
211
+ getTokenEndpoint(): string;
212
+ isTokenEndpointSecure(): boolean;
213
+ isStorageEndpointSecure(): boolean;
214
+ areEndpointsOverridden(): boolean;
215
+ isEndpointSecure(): boolean;
216
+ withMomentoLocal(): CredentialProvider;
217
+ }
218
+ export declare class EnvMomentoV2TokenProvider extends ApiKeyV2TokenProvider {
219
+ /**
220
+ * @param {EnvMomentoV2TokenProviderProps} props configuration options for the token provider
221
+ */
222
+ constructor(props?: EnvMomentoV2TokenProviderProps);
223
+ }
173
224
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MomentoLocalProvider = exports.getDefaultCredentialProvider = exports.EnvMomentoTokenProvider = exports.StringMomentoTokenProvider = exports.CredentialProvider = void 0;
3
+ exports.EnvMomentoV2TokenProvider = exports.ApiKeyV2TokenProvider = exports.MomentoLocalProvider = exports.getDefaultCredentialProvider = exports.EnvMomentoTokenProvider = exports.StringMomentoTokenProvider = exports.CredentialProvider = void 0;
4
4
  const utils_1 = require("../internal/utils");
5
5
  function isBaseEndpointOverride(endpointOverrides) {
6
6
  return endpointOverrides.baseEndpoint !== undefined;
@@ -18,15 +18,33 @@ function isAllEndpoints(endpointOverrides) {
18
18
  * @interface CredentialProvider
19
19
  */
20
20
  class CredentialProvider {
21
+ /**
22
+ * @deprecated use fromEnvVarV2() instead
23
+ */
21
24
  static fromEnvironmentVariable(props) {
22
25
  return new EnvMomentoTokenProvider(props);
23
26
  }
27
+ /**
28
+ * @deprecated use fromEnvVarV2() instead
29
+ */
24
30
  static fromEnvVar(props) {
25
31
  return new EnvMomentoTokenProvider(props);
26
32
  }
33
+ /**
34
+ * @deprecated use fromApiKeyV2() or fromDisposableToken() instead
35
+ */
27
36
  static fromString(props) {
28
37
  return new StringMomentoTokenProvider(props);
29
38
  }
39
+ static fromDisposableToken(props) {
40
+ return new StringMomentoTokenProvider(props);
41
+ }
42
+ static fromEnvVarV2(props) {
43
+ return new EnvMomentoV2TokenProvider(props);
44
+ }
45
+ static fromApiKeyV2(props) {
46
+ return new ApiKeyV2TokenProvider(props);
47
+ }
30
48
  /**
31
49
  * Allow insecure connections to momento-local service for testing purposes.
32
50
  * Does not require a Momento API key.
@@ -50,6 +68,7 @@ class CredentialProviderBase {
50
68
  * Reads and parses a momento auth token stored in a String
51
69
  * @export
52
70
  * @class StringMomentoTokenProvider
71
+ * @deprecated use ApiKeyV2TokenProvider instead
53
72
  */
54
73
  class StringMomentoTokenProvider extends CredentialProviderBase {
55
74
  /**
@@ -145,6 +164,7 @@ exports.StringMomentoTokenProvider = StringMomentoTokenProvider;
145
164
  * Reads and parses a momento auth token stored as an environment variable.
146
165
  * @export
147
166
  * @class EnvMomentoTokenProvider
167
+ * @deprecated use EnvMomentoV2TokenProvider instead
148
168
  */
149
169
  class EnvMomentoTokenProvider extends StringMomentoTokenProvider {
150
170
  /**
@@ -166,8 +186,19 @@ class EnvMomentoTokenProvider extends StringMomentoTokenProvider {
166
186
  }
167
187
  }
168
188
  exports.EnvMomentoTokenProvider = EnvMomentoTokenProvider;
189
+ /**
190
+ * Provides the default credential provider based on which key was provided (v2 or legacy).
191
+ * @export
192
+ * @returns {CredentialProvider} the default credential provider
193
+ */
169
194
  function getDefaultCredentialProvider() {
170
- return CredentialProvider.fromEnvVar('MOMENTO_API_KEY');
195
+ try {
196
+ return CredentialProvider.fromEnvVarV2();
197
+ }
198
+ catch (_a) {
199
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
200
+ return CredentialProvider.fromEnvVar('MOMENTO_API_KEY');
201
+ }
171
202
  }
172
203
  exports.getDefaultCredentialProvider = getDefaultCredentialProvider;
173
204
  class MomentoLocalProvider {
@@ -236,4 +267,112 @@ class MomentoLocalProvider {
236
267
  }
237
268
  }
238
269
  exports.MomentoLocalProvider = MomentoLocalProvider;
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2NyZWRlbnRpYWwtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBSzJCO0FBVTNCLFNBQVMsc0JBQXNCLENBQzdCLGlCQUFvQztJQUVwQyxPQUFRLGlCQUEwQyxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUM7QUFDaEYsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixpQkFBb0M7SUFFcEMsTUFBTSxZQUFZLEdBQUcsaUJBQWlDLENBQUM7SUFDdkQsT0FBTyxDQUNMLFlBQVksQ0FBQyxhQUFhLEtBQUssU0FBUztRQUN4QyxZQUFZLENBQUMsZUFBZSxLQUFLLFNBQVM7UUFDMUMsWUFBWSxDQUFDLGFBQWEsS0FBSyxTQUFTLENBQ3pDLENBQUM7QUFDSixDQUFDO0FBU0Q7Ozs7O0dBS0c7QUFDSCxNQUFzQixrQkFBa0I7SUFxRHRDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FDNUIsS0FBNEM7UUFFNUMsT0FBTyxJQUFJLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUNmLEtBQTRDO1FBRTVDLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FDZixLQUErQztRQUUvQyxPQUFPLElBQUksMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFnQztRQUNyRCxPQUFPLElBQUksb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBaEZELGdEQWdGQztBQUVELE1BQWUsc0JBQXNCO0lBcUJuQyxPQUFPO1FBQ0wsNkRBQTZEO1FBQzdELE1BQU0sT0FBTyxHQUFHLE1BQU0s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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFsbEVuZHBvaW50cyxcbiAgZGVjb2RlQXV0aFRva2VuLFxuICBmcm9tRW50cmllcyxcbiAgcG9wdWxhdGVBbGxFbmRwb2ludHNGcm9tQmFzZUVuZHBvaW50LFxufSBmcm9tICcuLi9pbnRlcm5hbC91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVuZHBvaW50T3ZlcnJpZGUge1xuICBiYXNlRW5kcG9pbnQ6IHN0cmluZztcbiAgZW5kcG9pbnRQcmVmaXg/OiBzdHJpbmc7XG4gIHNlY3VyZUNvbm5lY3Rpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBFbmRwb2ludE92ZXJyaWRlcyA9IEJhc2VFbmRwb2ludE92ZXJyaWRlIHwgQWxsRW5kcG9pbnRzO1xuXG5mdW5jdGlvbiBpc0Jhc2VFbmRwb2ludE92ZXJyaWRlKFxuICBlbmRwb2ludE92ZXJyaWRlczogRW5kcG9pbnRPdmVycmlkZXNcbik6IGVuZHBvaW50T3ZlcnJpZGVzIGlzIEJhc2VFbmRwb2ludE92ZXJyaWRlIHtcbiAgcmV0dXJuIChlbmRwb2ludE92ZXJyaWRlcyBhcyBCYXNlRW5kcG9pbnRPdmVycmlkZSkuYmFzZUVuZHBvaW50ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzQWxsRW5kcG9pbnRzKFxuICBlbmRwb2ludE92ZXJyaWRlczogRW5kcG9pbnRPdmVycmlkZXNcbik6IGVuZHBvaW50T3ZlcnJpZGVzIGlzIEFsbEVuZHBvaW50cyB7XG4gIGNvbnN0IGFsbEVuZHBvaW50cyA9IGVuZHBvaW50T3ZlcnJpZGVzIGFzIEFsbEVuZHBvaW50cztcbiAgcmV0dXJuIChcbiAgICBhbGxFbmRwb2ludHMuY2FjaGVFbmRwb2ludCAhPT0gdW5kZWZpbmVkICYmXG4gICAgYWxsRW5kcG9pbnRzLmNvbnRyb2xFbmRwb2ludCAhPT0gdW5kZWZpbmVkICYmXG4gICAgYWxsRW5kcG9pbnRzLnRva2VuRW5kcG9pbnQgIT09IHVuZGVmaW5lZFxuICApO1xufVxuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBhcmd1bWVudHMgZm9yIGluc3RhbnRpYXRpbmcgYW4gRW52TW9tZW50b1Rva2VuUHJvdmlkZXJcbiAqL1xuaW50ZXJmYWNlIENyZWRlbnRpYWxQcm92aWRlclByb3BzIHtcbiAgZW5kcG9pbnRPdmVycmlkZXM/OiBFbmRwb2ludE92ZXJyaWRlcztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0IHRoZSBDYWNoZUNsaWVudCBuZWVkcyBpbiBvcmRlciB0byBlc3RhYmxpc2ggYSBjb25uZWN0aW9uIHRvIGFuZCBhdXRoZW50aWNhdGUgd2l0aFxuICogdGhlIE1vbWVudG8gc2VydmljZS5cbiAqIEBleHBvcnRcbiAqIEBpbnRlcmZhY2UgQ3JlZGVudGlhbFByb3ZpZGVyXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gQXV0aCB0b2tlbiBwcm92aWRlZCBieSB1c2VyLCByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgd2l0aCB0aGUgc2VydmljZVxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0QXV0aFRva2VuKCk6IHN0cmluZztcblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGhvc3Qgd2hpY2ggdGhlIE1vbWVudG8gY2xpZW50IHdpbGwgY29ubmVjdCB0byBmb3IgTW9tZW50byBjb250cm9sIHBsYW5lIG9wZXJhdGlvbnNcbiAgICovXG4gIGFic3RyYWN0IGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBpc0VuZHBvaW50U2VjdXJlKCkgaW5zdGVhZFxuICAgKi9cbiAgYWJzdHJhY3QgaXNDb250cm9sRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGhvc3Qgd2hpY2ggdGhlIE1vbWVudG8gY2xpZW50IHdpbGwgY29ubmVjdCB0byBmb3IgTW9tZW50byBkYXRhIHBsYW5lIG9wZXJhdGlvbnNcbiAgICovXG4gIGFic3RyYWN0IGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaXNFbmRwb2ludFNlY3VyZSgpIGluc3RlYWRcbiAgICovXG4gIGFic3RyYWN0IGlzQ2FjaGVFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaG9zdCB3aGljaCB0aGUgTW9tZW50byBjbGllbnQgd2lsbCBjb25uZWN0IHRvIGZvciBNb21lbnRvIHRva2VuIG9wZXJhdGlvbnNcbiAgICovXG4gIGFic3RyYWN0IGdldFRva2VuRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaXNFbmRwb2ludFNlY3VyZSgpIGluc3RlYWRcbiAgICovXG4gIGFic3RyYWN0IGlzVG9rZW5FbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCAtIHVzZSB0aGUgc3RhdGljIG1ldGhvZCBmb3JNb21lbnRvTG9jYWwgaW5zdGVhZFxuICAgKlxuICAgKiBNb2RpZmllcyB0aGUgaW5zdGFuY2Ugb2YgdGhlIGNyZWRlbnRpYWwgcHJvdmlkZXIgdG8gb3ZlcnJpZGUgZW5kcG9pbnRzIHRvXG4gICAqIGFsbG93IGluc2VjdXJlIGNvbm5lY3Rpb25zIHRvIHRoZSBtb21lbnRvLWxvY2FsIHNlcnZpY2UgZm9yIHRlc3RpbmcgcHVycG9zZXNcbiAgICovXG4gIGFic3RyYWN0IHdpdGhNb21lbnRvTG9jYWwoKTogQ3JlZGVudGlhbFByb3ZpZGVyO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgZW5kcG9pbnRzIHdlcmUgbWFudWFsbHkgb3ZlcnJpZGRlbiBhdCBjb25zdHJ1Y3Rpb24gdGltZTsgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBhYnN0cmFjdCBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiBjb25uZWN0aW5nIHRvIHRoZSBlbmRwb2ludCBjb25uZWN0aW9uIHdpdGggVExTOyBmYWxzZSBpZiBub3QgdXNpbmcgVExTXG4gICAqL1xuICBhYnN0cmFjdCBpc0VuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW47XG5cbiAgc3RhdGljIGZyb21FbnZpcm9ubWVudFZhcmlhYmxlKFxuICAgIHByb3BzOiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzIHwgc3RyaW5nXG4gICk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlcihwcm9wcyk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUVudlZhcihcbiAgICBwcm9wczogRW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyB8IHN0cmluZ1xuICApOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgRW52TW9tZW50b1Rva2VuUHJvdmlkZXIocHJvcHMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdHJpbmcoXG4gICAgcHJvcHM6IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgfCBzdHJpbmdcbiAgKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyKHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyBpbnNlY3VyZSBjb25uZWN0aW9ucyB0byBtb21lbnRvLWxvY2FsIHNlcnZpY2UgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqIERvZXMgbm90IHJlcXVpcmUgYSBNb21lbnRvIEFQSSBrZXkuXG4gICAqIEBwYXJhbSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGNvbm5lY3RpbmcgdG8gbW9tZW50by1sb2NhbFxuICAgKiBAcmV0dXJucyBDcmVkZW50aWFsUHJvdmlkZXJcbiAgICovXG4gIHN0YXRpYyBmb3JNb21lbnRvTG9jYWwocHJvcHM6IE1vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHMpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgTW9tZW50b0xvY2FsUHJvdmlkZXIocHJvcHMpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIENyZWRlbnRpYWxQcm92aWRlckJhc2UgaW1wbGVtZW50cyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICBhYnN0cmFjdCBnZXRBdXRoVG9rZW4oKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGlzQ2FjaGVFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgaXNDb250cm9sRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZztcblxuICBhYnN0cmFjdCBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW47XG5cbiAgYWJzdHJhY3QgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IHdpdGhNb21lbnRvTG9jYWwoKTogQ3JlZGVudGlhbFByb3ZpZGVyO1xuXG4gIHZhbHVlT2YoKTogb2JqZWN0IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMpLmZpbHRlcigoW2tdKSA9PiBrICE9PSAnYXV0aFRva2VuJyk7XG4gICAgY29uc3QgY2xvbmUgPSBmcm9tRW50cmllcyhlbnRyaWVzKTtcbiAgICByZXR1cm4gY2xvbmUudmFsdWVPZigpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTW9tZW50b0FwaUtleVByb3ZpZGVyUHJvcHNcbiAgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBhcGlLZXkgdGhlIG1vbWVudG8gQVBJIGtleVxuICAgKi9cbiAgYXBpS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTW9tZW50b0F1dGhUb2tlblByb3ZpZGVyUHJvcHNcbiAgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBhdXRoVG9rZW4gdGhlIG1vbWVudG8gYXV0aCB0b2tlblxuICAgKi9cbiAgYXV0aFRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgPVxuICB8IFN0cmluZ01vbWVudG9BcGlLZXlQcm92aWRlclByb3BzXG4gIHwgU3RyaW5nTW9tZW50b0F1dGhUb2tlblByb3ZpZGVyUHJvcHM7XG5cbi8qKlxuICogUmVhZHMgYW5kIHBhcnNlcyBhIG1vbWVudG8gYXV0aCB0b2tlbiBzdG9yZWQgaW4gYSBTdHJpbmdcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlclxuICovXG5leHBvcnQgY2xhc3MgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXIgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJCYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxFbmRwb2ludHM6IEFsbEVuZHBvaW50cztcbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludHNPdmVycmlkZGVuOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1N0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHN9IHByb3BzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRva2VuIHByb3ZpZGVyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgcHJvcHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwcm9wcyA9IHthcGlLZXk6IHByb3BzfTtcbiAgICB9XG4gICAgc3VwZXIoKTtcbiAgICBsZXQga2V5OiBzdHJpbmc7XG4gICAgaWYgKCdhdXRoVG9rZW4nIGluIHByb3BzKSB7XG4gICAgICBrZXkgPSBwcm9wcy5hdXRoVG9rZW47XG4gICAgfSBlbHNlIGlmICgnYXBpS2V5JyBpbiBwcm9wcykge1xuICAgICAga2V5ID0gcHJvcHMuYXBpS2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHk6IGF1dGhUb2tlbiBvciBhcGlLZXknKTtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZFRva2VuID0gZGVjb2RlQXV0aFRva2VuKGtleSk7XG4gICAgdGhpcy5hcGlLZXkgPSBkZWNvZGVkVG9rZW4uYXV0aFRva2VuO1xuICAgIGlmIChwcm9wcy5lbmRwb2ludE92ZXJyaWRlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW4gPSBmYWxzZTtcbiAgICAgIGlmIChkZWNvZGVkVG9rZW4uY29udHJvbEVuZHBvaW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdNYWxmb3JtZWQgdG9rZW47IHVuYWJsZSB0byBkZXRlcm1pbmUgY29udHJvbCBlbmRwb2ludC4gIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0b2tlbiB5b3UgYXJlIHVzaW5nLCB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSB0aGUgY29udHJvbEVuZHBvaW50IGV4cGxpY2l0bHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGRlY29kZWRUb2tlbi5jYWNoZUVuZHBvaW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdNYWxmb3JtZWQgdG9rZW47IHVuYWJsZSB0byBkZXRlcm1pbmUgY2FjaGUgZW5kcG9pbnQuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdG9rZW4geW91IGFyZSB1c2luZywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIGNhY2hlRW5kcG9pbnQgZXhwbGljaXRseS4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoZGVjb2RlZFRva2VuLnRva2VuRW5kcG9pbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ01hbGZvcm1lZCB0b2tlbjsgdW5hYmxlIHRvIGRldGVybWluZSB0b2tlbiBlbmRwb2ludC4gIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0b2tlbiB5b3UgYXJlIHVzaW5nLCB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSB0aGUgdG9rZW5FbmRwb2ludCBleHBsaWNpdGx5LidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hbGxFbmRwb2ludHMgPSB7XG4gICAgICAgIGNvbnRyb2xFbmRwb2ludDogZGVjb2RlZFRva2VuLmNvbnRyb2xFbmRwb2ludCxcbiAgICAgICAgY2FjaGVFbmRwb2ludDogZGVjb2RlZFRva2VuLmNhY2hlRW5kcG9pbnQsXG4gICAgICAgIHRva2VuRW5kcG9pbnQ6IGRlY29kZWRUb2tlbi50b2tlbkVuZHBvaW50LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGlzQWxsRW5kcG9pbnRzKHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzKSkge1xuICAgICAgdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWxsRW5kcG9pbnRzID0gcHJvcHMuZW5kcG9pbnRPdmVycmlkZXM7XG4gICAgfSBlbHNlIGlmIChpc0Jhc2VFbmRwb2ludE92ZXJyaWRlKHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzKSkge1xuICAgICAgdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWxsRW5kcG9pbnRzID0gcG9wdWxhdGVBbGxFbmRwb2ludHNGcm9tQmFzZUVuZHBvaW50KFxuICAgICAgICBwcm9wcy5lbmRwb2ludE92ZXJyaWRlc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgIGBVbnN1cHBvcnRlZCBlbmRwb2ludE92ZXJyaWRlczogJHtwcm9wcy5lbmRwb2ludE92ZXJyaWRlc31gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldEF1dGhUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFwaUtleTtcbiAgfVxuXG4gIGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMuY2FjaGVFbmRwb2ludDtcbiAgfVxuICBpc0NhY2hlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgZ2V0Q29udHJvbEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNvbnRyb2xFbmRwb2ludDtcbiAgfVxuXG4gIGlzQ29udHJvbEVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldFRva2VuRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMudG9rZW5FbmRwb2ludDtcbiAgfVxuXG4gIGlzVG9rZW5FbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBpc1N0b3JhZ2VFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW47XG4gIH1cblxuICBpc0VuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmFsbEVuZHBvaW50cy5zZWN1cmVDb25uZWN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMuc2VjdXJlQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHdpdGhNb21lbnRvTG9jYWwoKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IE1vbWVudG9Mb2NhbFByb3ZpZGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzIGV4dGVuZHMgQ3JlZGVudGlhbFByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZyb20gd2hpY2ggdGhlIGF1dGggdG9rZW4gd2lsbCBiZSByZWFkXG4gICAqL1xuICBlbnZpcm9ubWVudFZhcmlhYmxlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlYWRzIGFuZCBwYXJzZXMgYSBtb21lbnRvIGF1dGggdG9rZW4gc3RvcmVkIGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogQGV4cG9ydFxuICogQGNsYXNzIEVudk1vbWVudG9Ub2tlblByb3ZpZGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlciBleHRlbmRzIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyIHtcbiAgZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEBwYXJhbSB7RW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wc30gcHJvcHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgdG9rZW4gcHJvdmlkZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHByb3BzID0ge2Vudmlyb25tZW50VmFyaWFibGVOYW1lOiBwcm9wc307XG4gICAgfVxuICAgIGNvbnN0IGF1dGhUb2tlbiA9IHByb2Nlc3MuZW52W3Byb3BzLmVudmlyb25tZW50VmFyaWFibGVOYW1lXTtcbiAgICBpZiAoIWF1dGhUb2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBlbnZpcm9ubWVudCB2YXJpYWJsZSAke3Byb3BzLmVudmlyb25tZW50VmFyaWFibGVOYW1lfWBcbiAgICAgICk7XG4gICAgfVxuICAgIHN1cGVyKHtcbiAgICAgIGF1dGhUb2tlbjogYXV0aFRva2VuLFxuICAgICAgZW5kcG9pbnRPdmVycmlkZXM6IHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzLFxuICAgIH0pO1xuICAgIHRoaXMuZW52aXJvbm1lbnRWYXJpYWJsZU5hbWUgPSBwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlTmFtZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdENyZWRlbnRpYWxQcm92aWRlcigpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICByZXR1cm4gQ3JlZGVudGlhbFByb3ZpZGVyLmZyb21FbnZWYXIoJ01PTUVOVE9fQVBJX0tFWScpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHMgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgaG9zdG5hbWUgb2YgdGhlIG1vbWVudG8tbG9jYWwgc2VydmljZVxuICAgKi9cbiAgaG9zdG5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcG9ydCBvZiB0aGUgbW9tZW50by1sb2NhbCBzZXJ2aWNlXG4gICAqL1xuICBwb3J0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgTW9tZW50b0xvY2FsUHJvdmlkZXIgaW1wbGVtZW50cyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbEVuZHBvaW50czogQWxsRW5kcG9pbnRzO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50c092ZXJyaWRkZW46IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TW9tZW50b0xvY2FsUHJvdmlkZXJQcm9wc30gcHJvcHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBjb25uZWN0aW5nIHRvIG1vbWVudG8tbG9jYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzPzogTW9tZW50b0xvY2FsUHJvdmlkZXJQcm9wcykge1xuICAgIGNvbnN0IGhvc3RuYW1lID0gcHJvcHM/Lmhvc3RuYW1lIHx8ICcxMjcuMC4wLjEnO1xuICAgIGNvbnN0IHBvcnQgPSBwcm9wcz8ucG9ydCB8fCA4MDgwO1xuICAgIGNvbnN0IG1vbWVudG9Mb2NhbEVuZHBvaW50ID0gYCR7aG9zdG5hbWV9OiR7cG9ydH1gO1xuXG4gICAgaWYgKHByb3BzID09PSB1bmRlZmluZWQgfHwgcHJvcHMuZW5kcG9pbnRPdmVycmlkZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuID0gZmFsc2U7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHtcbiAgICAgICAgY29udHJvbEVuZHBvaW50OiBtb21lbnRvTG9jYWxFbmRwb2ludCxcbiAgICAgICAgY2FjaGVFbmRwb2ludDogbW9tZW50b0xvY2FsRW5kcG9pbnQsXG4gICAgICAgIHRva2VuRW5kcG9pbnQ6IG1vbWVudG9Mb2NhbEVuZHBvaW50LFxuICAgICAgICBzZWN1cmVDb25uZWN0aW9uOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChpc0FsbEVuZHBvaW50cyhwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzO1xuICAgIH0gZWxzZSBpZiAoaXNCYXNlRW5kcG9pbnRPdmVycmlkZShwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludChcbiAgICAgICAgcHJvcHMuZW5kcG9pbnRPdmVycmlkZXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICBgVW5zdXBwb3J0ZWQgZW5kcG9pbnRPdmVycmlkZXM6ICR7cHJvcHMuZW5kcG9pbnRPdmVycmlkZXN9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRBdXRoVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXRDYWNoZUVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNhY2hlRW5kcG9pbnQ7XG4gIH1cblxuICBpc0NhY2hlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgZ2V0Q29udHJvbEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNvbnRyb2xFbmRwb2ludDtcbiAgfVxuXG4gIGlzQ29udHJvbEVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldFRva2VuRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMudG9rZW5FbmRwb2ludDtcbiAgfVxuXG4gIGlzVG9rZW5FbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW47XG4gIH1cblxuICBpc0VuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmFsbEVuZHBvaW50cy5zZWN1cmVDb25uZWN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMuc2VjdXJlQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHdpdGhNb21lbnRvTG9jYWwoKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IE1vbWVudG9Mb2NhbFByb3ZpZGVyKCk7XG4gIH1cbn1cbiJdfQ==
270
+ class ApiKeyV2TokenProvider extends CredentialProviderBase {
271
+ /**
272
+ * @param {ApiKeyV2TokenProviderProps} props configuration options for the token provider
273
+ */
274
+ constructor(props) {
275
+ super();
276
+ let key;
277
+ if ('authToken' in props) {
278
+ key = props.authToken;
279
+ }
280
+ else if ('apiKey' in props) {
281
+ key = props.apiKey;
282
+ }
283
+ else {
284
+ throw new Error('Missing required property: authToken or apiKey');
285
+ }
286
+ if (!key.length) {
287
+ throw new Error('API key cannot be an empty string');
288
+ }
289
+ if (!(0, utils_1.isV2ApiKey)(key)) {
290
+ throw new Error('Received an invalid v2 API key. Are you using the correct key? Or did you mean to use `fromString()` with a legacy key instead?');
291
+ }
292
+ let endpoint;
293
+ if ('endpoint' in props) {
294
+ endpoint = props.endpoint;
295
+ }
296
+ else {
297
+ throw new Error('Missing required property: endpoint');
298
+ }
299
+ if (!endpoint.length) {
300
+ throw new Error('Endpoint cannot be an empty string');
301
+ }
302
+ this.apiKey = key;
303
+ this.allEndpoints = {
304
+ controlEndpoint: 'control.' + endpoint,
305
+ cacheEndpoint: 'cache.' + endpoint,
306
+ tokenEndpoint: 'token.' + endpoint,
307
+ };
308
+ }
309
+ getAuthToken() {
310
+ return this.apiKey;
311
+ }
312
+ getCacheEndpoint() {
313
+ return this.allEndpoints.cacheEndpoint;
314
+ }
315
+ isCacheEndpointSecure() {
316
+ return this.isEndpointSecure();
317
+ }
318
+ getControlEndpoint() {
319
+ return this.allEndpoints.controlEndpoint;
320
+ }
321
+ isControlEndpointSecure() {
322
+ return this.isEndpointSecure();
323
+ }
324
+ getTokenEndpoint() {
325
+ return this.allEndpoints.tokenEndpoint;
326
+ }
327
+ isTokenEndpointSecure() {
328
+ return this.isEndpointSecure();
329
+ }
330
+ isStorageEndpointSecure() {
331
+ return this.isEndpointSecure();
332
+ }
333
+ areEndpointsOverridden() {
334
+ return false;
335
+ }
336
+ isEndpointSecure() {
337
+ if (this.allEndpoints.secureConnection === undefined) {
338
+ return true;
339
+ }
340
+ return this.allEndpoints.secureConnection;
341
+ }
342
+ withMomentoLocal() {
343
+ return new MomentoLocalProvider();
344
+ }
345
+ }
346
+ exports.ApiKeyV2TokenProvider = ApiKeyV2TokenProvider;
347
+ class EnvMomentoV2TokenProvider extends ApiKeyV2TokenProvider {
348
+ /**
349
+ * @param {EnvMomentoV2TokenProviderProps} props configuration options for the token provider
350
+ */
351
+ constructor(props) {
352
+ const apiKeyEnvVar = (props === null || props === void 0 ? void 0 : props.apiKeyEnvVar) || 'MOMENTO_API_KEY';
353
+ const endpointEnvVar = (props === null || props === void 0 ? void 0 : props.endpointEnvVar) || 'MOMENTO_ENDPOINT';
354
+ const endpoint = process.env[endpointEnvVar];
355
+ if (!endpoint) {
356
+ throw new Error(`Empty value for environment variable ${endpointEnvVar}`);
357
+ }
358
+ if (!endpoint.length) {
359
+ throw new Error(`Endpoint environment variable ${endpointEnvVar} cannot be an empty string`);
360
+ }
361
+ const authToken = process.env[apiKeyEnvVar];
362
+ if (!authToken) {
363
+ throw new Error(`Empty value for environment variable ${apiKeyEnvVar}`);
364
+ }
365
+ if (!authToken.length) {
366
+ throw new Error(`API key environment variable ${apiKeyEnvVar} cannot be an empty string`);
367
+ }
368
+ if (!(0, utils_1.isV2ApiKey)(authToken)) {
369
+ throw new Error('Received an invalid v2 API key. Are you using the correct key? Or did you mean to use `fromEnvironmentVariable()` with a legacy key instead?');
370
+ }
371
+ super({
372
+ authToken: authToken,
373
+ endpoint: endpoint,
374
+ });
375
+ }
376
+ }
377
+ exports.EnvMomentoV2TokenProvider = EnvMomentoV2TokenProvider;
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2NyZWRlbnRpYWwtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBTTJCO0FBVTNCLFNBQVMsc0JBQXNCLENBQzdCLGlCQUFvQztJQUVwQyxPQUFRLGlCQUEwQyxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUM7QUFDaEYsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixpQkFBb0M7SUFFcEMsTUFBTSxZQUFZLEdBQUcsaUJBQWlDLENBQUM7SUFDdkQsT0FBTyxDQUNMLFlBQVksQ0FBQyxhQUFhLEtBQUssU0FBUztRQUN4QyxZQUFZLENBQUMsZUFBZSxLQUFLLFNBQVM7UUFDMUMsWUFBWSxDQUFDLGFBQWEsS0FBSyxTQUFTLENBQ3pDLENBQUM7QUFDSixDQUFDO0FBU0Q7Ozs7O0dBS0c7QUFDSCxNQUFzQixrQkFBa0I7SUFxRHRDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixLQUE0QztRQUU1QyxPQUFPLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixLQUE0QztRQUU1QyxPQUFPLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixLQUErQztRQUUvQyxPQUFPLElBQUksMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FDeEIsS0FBK0M7UUFFL0MsT0FBTyxJQUFJLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUNqQixLQUFzQztRQUV0QyxPQUFPLElBQUkseUJBQXlCLENBQUMsS0FB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RCxJQUFJLENBQUMsSUFBQSxrQkFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQ2IsOElBQThJLENBQy9JLENBQUM7U0FDSDtRQUNELEtBQUssQ0FBQztZQUNKLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRDRCw4REFzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbGxFbmRwb2ludHMsXG4gIGRlY29kZUF1dGhUb2tlbixcbiAgZnJvbUVudHJpZXMsXG4gIGlzVjJBcGlLZXksXG4gIHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludCxcbn0gZnJvbSAnLi4vaW50ZXJuYWwvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFbmRwb2ludE92ZXJyaWRlIHtcbiAgYmFzZUVuZHBvaW50OiBzdHJpbmc7XG4gIGVuZHBvaW50UHJlZml4Pzogc3RyaW5nO1xuICBzZWN1cmVDb25uZWN0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgRW5kcG9pbnRPdmVycmlkZXMgPSBCYXNlRW5kcG9pbnRPdmVycmlkZSB8IEFsbEVuZHBvaW50cztcblxuZnVuY3Rpb24gaXNCYXNlRW5kcG9pbnRPdmVycmlkZShcbiAgZW5kcG9pbnRPdmVycmlkZXM6IEVuZHBvaW50T3ZlcnJpZGVzXG4pOiBlbmRwb2ludE92ZXJyaWRlcyBpcyBCYXNlRW5kcG9pbnRPdmVycmlkZSB7XG4gIHJldHVybiAoZW5kcG9pbnRPdmVycmlkZXMgYXMgQmFzZUVuZHBvaW50T3ZlcnJpZGUpLmJhc2VFbmRwb2ludCAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc0FsbEVuZHBvaW50cyhcbiAgZW5kcG9pbnRPdmVycmlkZXM6IEVuZHBvaW50T3ZlcnJpZGVzXG4pOiBlbmRwb2ludE92ZXJyaWRlcyBpcyBBbGxFbmRwb2ludHMge1xuICBjb25zdCBhbGxFbmRwb2ludHMgPSBlbmRwb2ludE92ZXJyaWRlcyBhcyBBbGxFbmRwb2ludHM7XG4gIHJldHVybiAoXG4gICAgYWxsRW5kcG9pbnRzLmNhY2hlRW5kcG9pbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIGFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIGFsbEVuZHBvaW50cy50b2tlbkVuZHBvaW50ICE9PSB1bmRlZmluZWRcbiAgKTtcbn1cblxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgYXJndW1lbnRzIGZvciBpbnN0YW50aWF0aW5nIGFuIEVudk1vbWVudG9Ub2tlblByb3ZpZGVyXG4gKi9cbmludGVyZmFjZSBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIGVuZHBvaW50T3ZlcnJpZGVzPzogRW5kcG9pbnRPdmVycmlkZXM7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCB0aGUgQ2FjaGVDbGllbnQgbmVlZHMgaW4gb3JkZXIgdG8gZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhbmQgYXV0aGVudGljYXRlIHdpdGhcbiAqIHRoZSBNb21lbnRvIHNlcnZpY2UuXG4gKiBAZXhwb3J0XG4gKiBAaW50ZXJmYWNlIENyZWRlbnRpYWxQcm92aWRlclxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IEF1dGggdG9rZW4gcHJvdmlkZWQgYnkgdXNlciwgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIHNlcnZpY2VcbiAgICovXG4gIGFic3RyYWN0IGdldEF1dGhUb2tlbigpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gY29udHJvbCBwbGFuZSBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRDb250cm9sRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaXNFbmRwb2ludFNlY3VyZSgpIGluc3RlYWRcbiAgICovXG4gIGFic3RyYWN0IGlzQ29udHJvbEVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gZGF0YSBwbGFuZSBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRDYWNoZUVuZHBvaW50KCk6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzRW5kcG9pbnRTZWN1cmUoKSBpbnN0ZWFkXG4gICAqL1xuICBhYnN0cmFjdCBpc0NhY2hlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGhvc3Qgd2hpY2ggdGhlIE1vbWVudG8gY2xpZW50IHdpbGwgY29ubmVjdCB0byBmb3IgTW9tZW50byB0b2tlbiBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzRW5kcG9pbnRTZWN1cmUoKSBpbnN0ZWFkXG4gICAqL1xuICBhYnN0cmFjdCBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgdGhlIHN0YXRpYyBtZXRob2QgZm9yTW9tZW50b0xvY2FsIGluc3RlYWRcbiAgICpcbiAgICogTW9kaWZpZXMgdGhlIGluc3RhbmNlIG9mIHRoZSBjcmVkZW50aWFsIHByb3ZpZGVyIHRvIG92ZXJyaWRlIGVuZHBvaW50cyB0b1xuICAgKiBhbGxvdyBpbnNlY3VyZSBjb25uZWN0aW9ucyB0byB0aGUgbW9tZW50by1sb2NhbCBzZXJ2aWNlIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gICAqL1xuICBhYnN0cmFjdCB3aXRoTW9tZW50b0xvY2FsKCk6IENyZWRlbnRpYWxQcm92aWRlcjtcblxuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGVuZHBvaW50cyB3ZXJlIG1hbnVhbGx5IG92ZXJyaWRkZW4gYXQgY29uc3RydWN0aW9uIHRpbWU7IGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgYWJzdHJhY3QgYXJlRW5kcG9pbnRzT3ZlcnJpZGRlbigpOiBib29sZWFuO1xuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgY29ubmVjdGluZyB0byB0aGUgZW5kcG9pbnQgY29ubmVjdGlvbiB3aXRoIFRMUzsgZmFsc2UgaWYgbm90IHVzaW5nIFRMU1xuICAgKi9cbiAgYWJzdHJhY3QgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUVudlZhclYyKCkgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21FbnZpcm9ubWVudFZhcmlhYmxlKFxuICAgIHByb3BzOiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzIHwgc3RyaW5nXG4gICk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlcihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21FbnZWYXJWMigpIGluc3RlYWRcbiAgICovXG4gIHN0YXRpYyBmcm9tRW52VmFyKFxuICAgIHByb3BzOiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzIHwgc3RyaW5nXG4gICk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlcihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21BcGlLZXlWMigpIG9yIGZyb21EaXNwb3NhYmxlVG9rZW4oKSBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZyhcbiAgICBwcm9wczogU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyB8IHN0cmluZ1xuICApOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXIocHJvcHMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21EaXNwb3NhYmxlVG9rZW4oXG4gICAgcHJvcHM6IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgfCBzdHJpbmdcbiAgKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyKHByb3BzKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRW52VmFyVjIoXG4gICAgcHJvcHM/OiBFbnZNb21lbnRvVjJUb2tlblByb3ZpZGVyUHJvcHNcbiAgKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IEVudk1vbWVudG9WMlRva2VuUHJvdmlkZXIocHJvcHMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21BcGlLZXlWMihwcm9wczogQXBpS2V5VjJUb2tlblByb3ZpZGVyUHJvcHMpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgQXBpS2V5VjJUb2tlblByb3ZpZGVyKHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyBpbnNlY3VyZSBjb25uZWN0aW9ucyB0byBtb21lbnRvLWxvY2FsIHNlcnZpY2UgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqIERvZXMgbm90IHJlcXVpcmUgYSBNb21lbnRvIEFQSSBrZXkuXG4gICAqIEBwYXJhbSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGNvbm5lY3RpbmcgdG8gbW9tZW50by1sb2NhbFxuICAgKiBAcmV0dXJucyBDcmVkZW50aWFsUHJvdmlkZXJcbiAgICovXG4gIHN0YXRpYyBmb3JNb21lbnRvTG9jYWwocHJvcHM6IE1vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHMpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgTW9tZW50b0xvY2FsUHJvdmlkZXIocHJvcHMpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIENyZWRlbnRpYWxQcm92aWRlckJhc2UgaW1wbGVtZW50cyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICBhYnN0cmFjdCBnZXRBdXRoVG9rZW4oKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGlzQ2FjaGVFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgaXNDb250cm9sRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZztcblxuICBhYnN0cmFjdCBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW47XG5cbiAgYWJzdHJhY3QgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IHdpdGhNb21lbnRvTG9jYWwoKTogQ3JlZGVudGlhbFByb3ZpZGVyO1xuXG4gIHZhbHVlT2YoKTogb2JqZWN0IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMpLmZpbHRlcigoW2tdKSA9PiBrICE9PSAnYXV0aFRva2VuJyk7XG4gICAgY29uc3QgY2xvbmUgPSBmcm9tRW50cmllcyhlbnRyaWVzKTtcbiAgICByZXR1cm4gY2xvbmUudmFsdWVPZigpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTW9tZW50b0FwaUtleVByb3ZpZGVyUHJvcHNcbiAgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBhcGlLZXkgdGhlIG1vbWVudG8gQVBJIGtleVxuICAgKi9cbiAgYXBpS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTW9tZW50b0F1dGhUb2tlblByb3ZpZGVyUHJvcHNcbiAgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBhdXRoVG9rZW4gdGhlIG1vbWVudG8gYXV0aCB0b2tlblxuICAgKi9cbiAgYXV0aFRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgPVxuICB8IFN0cmluZ01vbWVudG9BcGlLZXlQcm92aWRlclByb3BzXG4gIHwgU3RyaW5nTW9tZW50b0F1dGhUb2tlblByb3ZpZGVyUHJvcHM7XG5cbmV4cG9ydCB0eXBlIEFwaUtleVYyVG9rZW5Qcm92aWRlclByb3BzID0gU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyAmIHtcbiAgZW5kcG9pbnQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52TW9tZW50b1YyVG9rZW5Qcm92aWRlclByb3BzIHtcbiAgYXBpS2V5RW52VmFyPzogc3RyaW5nO1xuICBlbmRwb2ludEVudlZhcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgcGFyc2VzIGEgbW9tZW50byBhdXRoIHRva2VuIHN0b3JlZCBpbiBhIFN0cmluZ1xuICogQGV4cG9ydFxuICogQGNsYXNzIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyXG4gKiBAZGVwcmVjYXRlZCB1c2UgQXBpS2V5VjJUb2tlblByb3ZpZGVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNsYXNzIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyIGV4dGVuZHMgQ3JlZGVudGlhbFByb3ZpZGVyQmFzZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsRW5kcG9pbnRzOiBBbGxFbmRwb2ludHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRzT3ZlcnJpZGRlbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIHtTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzfSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0b2tlbiBwcm92aWRlclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzID09PSAnc3RyaW5nJykge1xuICAgICAgcHJvcHMgPSB7YXBpS2V5OiBwcm9wc307XG4gICAgfVxuICAgIHN1cGVyKCk7XG4gICAgbGV0IGtleTogc3RyaW5nO1xuICAgIGlmICgnYXV0aFRva2VuJyBpbiBwcm9wcykge1xuICAgICAga2V5ID0gcHJvcHMuYXV0aFRva2VuO1xuICAgIH0gZWxzZSBpZiAoJ2FwaUtleScgaW4gcHJvcHMpIHtcbiAgICAgIGtleSA9IHByb3BzLmFwaUtleTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5OiBhdXRoVG9rZW4gb3IgYXBpS2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGRlY29kZUF1dGhUb2tlbihrZXkpO1xuICAgIHRoaXMuYXBpS2V5ID0gZGVjb2RlZFRva2VuLmF1dGhUb2tlbjtcbiAgICBpZiAocHJvcHMuZW5kcG9pbnRPdmVycmlkZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuID0gZmFsc2U7XG4gICAgICBpZiAoZGVjb2RlZFRva2VuLmNvbnRyb2xFbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnTWFsZm9ybWVkIHRva2VuOyB1bmFibGUgdG8gZGV0ZXJtaW5lIGNvbnRyb2wgZW5kcG9pbnQuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdG9rZW4geW91IGFyZSB1c2luZywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIGNvbnRyb2xFbmRwb2ludCBleHBsaWNpdGx5LidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWNvZGVkVG9rZW4uY2FjaGVFbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnTWFsZm9ybWVkIHRva2VuOyB1bmFibGUgdG8gZGV0ZXJtaW5lIGNhY2hlIGVuZHBvaW50LiAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRva2VuIHlvdSBhcmUgdXNpbmcsIHlvdSBtYXkgbmVlZCB0byBzcGVjaWZ5IHRoZSBjYWNoZUVuZHBvaW50IGV4cGxpY2l0bHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGRlY29kZWRUb2tlbi50b2tlbkVuZHBvaW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdNYWxmb3JtZWQgdG9rZW47IHVuYWJsZSB0byBkZXRlcm1pbmUgdG9rZW4gZW5kcG9pbnQuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdG9rZW4geW91IGFyZSB1c2luZywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIHRva2VuRW5kcG9pbnQgZXhwbGljaXRseS4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWxsRW5kcG9pbnRzID0ge1xuICAgICAgICBjb250cm9sRW5kcG9pbnQ6IGRlY29kZWRUb2tlbi5jb250cm9sRW5kcG9pbnQsXG4gICAgICAgIGNhY2hlRW5kcG9pbnQ6IGRlY29kZWRUb2tlbi5jYWNoZUVuZHBvaW50LFxuICAgICAgICB0b2tlbkVuZHBvaW50OiBkZWNvZGVkVG9rZW4udG9rZW5FbmRwb2ludCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChpc0FsbEVuZHBvaW50cyhwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzO1xuICAgIH0gZWxzZSBpZiAoaXNCYXNlRW5kcG9pbnRPdmVycmlkZShwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludChcbiAgICAgICAgcHJvcHMuZW5kcG9pbnRPdmVycmlkZXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICBgVW5zdXBwb3J0ZWQgZW5kcG9pbnRPdmVycmlkZXM6ICR7cHJvcHMuZW5kcG9pbnRPdmVycmlkZXN9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRBdXRoVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hcGlLZXk7XG4gIH1cblxuICBnZXRDYWNoZUVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNhY2hlRW5kcG9pbnQ7XG4gIH1cbiAgaXNDYWNoZUVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQ7XG4gIH1cblxuICBpc0NvbnRyb2xFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnRva2VuRW5kcG9pbnQ7XG4gIH1cblxuICBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgaXNTdG9yYWdlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgYXJlRW5kcG9pbnRzT3ZlcnJpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuO1xuICB9XG5cbiAgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hbGxFbmRwb2ludHMuc2VjdXJlQ29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnNlY3VyZUNvbm5lY3Rpb247XG4gIH1cblxuICB3aXRoTW9tZW50b0xvY2FsKCk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBNb21lbnRvTG9jYWxQcm92aWRlcigpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyBleHRlbmRzIENyZWRlbnRpYWxQcm92aWRlclByb3BzIHtcbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmcm9tIHdoaWNoIHRoZSBhdXRoIHRva2VuIHdpbGwgYmUgcmVhZFxuICAgKi9cbiAgZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgcGFyc2VzIGEgbW9tZW50byBhdXRoIHRva2VuIHN0b3JlZCBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclxuICogQGRlcHJlY2F0ZWQgdXNlIEVudk1vbWVudG9WMlRva2VuUHJvdmlkZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY2xhc3MgRW52TW9tZW50b1Rva2VuUHJvdmlkZXIgZXh0ZW5kcyBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlciB7XG4gIGVudmlyb25tZW50VmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vudk1vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHN9IHByb3BzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRva2VuIHByb3ZpZGVyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogRW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgcHJvcHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwcm9wcyA9IHtlbnZpcm9ubWVudFZhcmlhYmxlTmFtZTogcHJvcHN9O1xuICAgIH1cbiAgICBjb25zdCBhdXRoVG9rZW4gPSBwcm9jZXNzLmVudltwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlTmFtZV07XG4gICAgaWYgKCFhdXRoVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgJHtwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIH1cbiAgICBzdXBlcih7XG4gICAgICBhdXRoVG9rZW46IGF1dGhUb2tlbixcbiAgICAgIGVuZHBvaW50T3ZlcnJpZGVzOiBwcm9wcy5lbmRwb2ludE92ZXJyaWRlcyxcbiAgICB9KTtcbiAgICB0aGlzLmVudmlyb25tZW50VmFyaWFibGVOYW1lID0gcHJvcHMuZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgZGVmYXVsdCBjcmVkZW50aWFsIHByb3ZpZGVyIGJhc2VkIG9uIHdoaWNoIGtleSB3YXMgcHJvdmlkZWQgKHYyIG9yIGxlZ2FjeSkuXG4gKiBAZXhwb3J0XG4gKiBAcmV0dXJucyB7Q3JlZGVudGlhbFByb3ZpZGVyfSB0aGUgZGVmYXVsdCBjcmVkZW50aWFsIHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0Q3JlZGVudGlhbFByb3ZpZGVyKCk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIENyZWRlbnRpYWxQcm92aWRlci5mcm9tRW52VmFyVjIoKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbFxuICAgIHJldHVybiBDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUVudlZhcignTU9NRU5UT19BUElfS0VZJyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb21lbnRvTG9jYWxQcm92aWRlclByb3BzIGV4dGVuZHMgQ3JlZGVudGlhbFByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIGhvc3RuYW1lIG9mIHRoZSBtb21lbnRvLWxvY2FsIHNlcnZpY2VcbiAgICovXG4gIGhvc3RuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBvcnQgb2YgdGhlIG1vbWVudG8tbG9jYWwgc2VydmljZVxuICAgKi9cbiAgcG9ydD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIE1vbWVudG9Mb2NhbFByb3ZpZGVyIGltcGxlbWVudHMgQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxFbmRwb2ludHM6IEFsbEVuZHBvaW50cztcbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludHNPdmVycmlkZGVuOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge01vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHN9IHByb3BzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgY29ubmVjdGluZyB0byBtb21lbnRvLWxvY2FsXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IE1vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHMpIHtcbiAgICBjb25zdCBob3N0bmFtZSA9IHByb3BzPy5ob3N0bmFtZSB8fCAnMTI3LjAuMC4xJztcbiAgICBjb25zdCBwb3J0ID0gcHJvcHM/LnBvcnQgfHwgODA4MDtcbiAgICBjb25zdCBtb21lbnRvTG9jYWxFbmRwb2ludCA9IGAke2hvc3RuYW1lfToke3BvcnR9YDtcblxuICAgIGlmIChwcm9wcyA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5hbGxFbmRwb2ludHMgPSB7XG4gICAgICAgIGNvbnRyb2xFbmRwb2ludDogbW9tZW50b0xvY2FsRW5kcG9pbnQsXG4gICAgICAgIGNhY2hlRW5kcG9pbnQ6IG1vbWVudG9Mb2NhbEVuZHBvaW50LFxuICAgICAgICB0b2tlbkVuZHBvaW50OiBtb21lbnRvTG9jYWxFbmRwb2ludCxcbiAgICAgICAgc2VjdXJlQ29ubmVjdGlvbjogZmFsc2UsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNBbGxFbmRwb2ludHMocHJvcHMuZW5kcG9pbnRPdmVycmlkZXMpKSB7XG4gICAgICB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW4gPSB0cnVlO1xuICAgICAgdGhpcy5hbGxFbmRwb2ludHMgPSBwcm9wcy5lbmRwb2ludE92ZXJyaWRlcztcbiAgICB9IGVsc2UgaWYgKGlzQmFzZUVuZHBvaW50T3ZlcnJpZGUocHJvcHMuZW5kcG9pbnRPdmVycmlkZXMpKSB7XG4gICAgICB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW4gPSB0cnVlO1xuICAgICAgdGhpcy5hbGxFbmRwb2ludHMgPSBwb3B1bGF0ZUFsbEVuZHBvaW50c0Zyb21CYXNlRW5kcG9pbnQoXG4gICAgICAgIHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgYFVuc3VwcG9ydGVkIGVuZHBvaW50T3ZlcnJpZGVzOiAke3Byb3BzLmVuZHBvaW50T3ZlcnJpZGVzfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXV0aFRva2VuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0Q2FjaGVFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5jYWNoZUVuZHBvaW50O1xuICB9XG5cbiAgaXNDYWNoZUVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQ7XG4gIH1cblxuICBpc0NvbnRyb2xFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnRva2VuRW5kcG9pbnQ7XG4gIH1cblxuICBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgYXJlRW5kcG9pbnRzT3ZlcnJpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuO1xuICB9XG5cbiAgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hbGxFbmRwb2ludHMuc2VjdXJlQ29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnNlY3VyZUNvbm5lY3Rpb247XG4gIH1cblxuICB3aXRoTW9tZW50b0xvY2FsKCk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBNb21lbnRvTG9jYWxQcm92aWRlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlLZXlWMlRva2VuUHJvdmlkZXIgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJCYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxFbmRwb2ludHM6IEFsbEVuZHBvaW50cztcblxuICAvKipcbiAgICogQHBhcmFtIHtBcGlLZXlWMlRva2VuUHJvdmlkZXJQcm9wc30gcHJvcHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgdG9rZW4gcHJvdmlkZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBBcGlLZXlWMlRva2VuUHJvdmlkZXJQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gICAgbGV0IGtleTogc3RyaW5nO1xuICAgIGlmICgnYXV0aFRva2VuJyBpbiBwcm9wcykge1xuICAgICAga2V5ID0gcHJvcHMuYXV0aFRva2VuO1xuICAgIH0gZWxzZSBpZiAoJ2FwaUtleScgaW4gcHJvcHMpIHtcbiAgICAgIGtleSA9IHByb3BzLmFwaUtleTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5OiBhdXRoVG9rZW4gb3IgYXBpS2V5Jyk7XG4gICAgfVxuICAgIGlmICgha2V5Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBUEkga2V5IGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgaWYgKCFpc1YyQXBpS2V5KGtleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1JlY2VpdmVkIGFuIGludmFsaWQgdjIgQVBJIGtleS4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBrZXk/IE9yIGRpZCB5b3UgbWVhbiB0byB1c2UgYGZyb21TdHJpbmcoKWAgd2l0aCBhIGxlZ2FjeSBrZXkgaW5zdGVhZD8nXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBlbmRwb2ludDogc3RyaW5nO1xuICAgIGlmICgnZW5kcG9pbnQnIGluIHByb3BzKSB7XG4gICAgICBlbmRwb2ludCA9IHByb3BzLmVuZHBvaW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHk6IGVuZHBvaW50Jyk7XG4gICAgfVxuICAgIGlmICghZW5kcG9pbnQubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuZHBvaW50IGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFwaUtleSA9IGtleTtcbiAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHtcbiAgICAgIGNvbnRyb2xFbmRwb2ludDogJ2NvbnRyb2wuJyArIGVuZHBvaW50LFxuICAgICAgY2FjaGVFbmRwb2ludDogJ2NhY2hlLicgKyBlbmRwb2ludCxcbiAgICAgIHRva2VuRW5kcG9pbnQ6ICd0b2tlbi4nICsgZW5kcG9pbnQsXG4gICAgfTtcbiAgfVxuXG4gIGdldEF1dGhUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFwaUtleTtcbiAgfVxuXG4gIGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMuY2FjaGVFbmRwb2ludDtcbiAgfVxuICBpc0NhY2hlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgZ2V0Q29udHJvbEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNvbnRyb2xFbmRwb2ludDtcbiAgfVxuXG4gIGlzQ29udHJvbEVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldFRva2VuRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMudG9rZW5FbmRwb2ludDtcbiAgfVxuXG4gIGlzVG9rZW5FbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBpc1N0b3JhZ2VFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuYWxsRW5kcG9pbnRzLnNlY3VyZUNvbm5lY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5zZWN1cmVDb25uZWN0aW9uO1xuICB9XG5cbiAgd2l0aE1vbWVudG9Mb2NhbCgpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgTW9tZW50b0xvY2FsUHJvdmlkZXIoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW52TW9tZW50b1YyVG9rZW5Qcm92aWRlciBleHRlbmRzIEFwaUtleVYyVG9rZW5Qcm92aWRlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vudk1vbWVudG9WMlRva2VuUHJvdmlkZXJQcm9wc30gcHJvcHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgdG9rZW4gcHJvdmlkZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzPzogRW52TW9tZW50b1YyVG9rZW5Qcm92aWRlclByb3BzKSB7XG4gICAgY29uc3QgYXBpS2V5RW52VmFyID0gcHJvcHM/LmFwaUtleUVudlZhciB8fCAnTU9NRU5UT19BUElfS0VZJztcbiAgICBjb25zdCBlbmRwb2ludEVudlZhciA9IHByb3BzPy5lbmRwb2ludEVudlZhciB8fCAnTU9NRU5UT19FTkRQT0lOVCc7XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IHByb2Nlc3MuZW52W2VuZHBvaW50RW52VmFyXTtcbiAgICBpZiAoIWVuZHBvaW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVtcHR5IHZhbHVlIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZSAke2VuZHBvaW50RW52VmFyfWApO1xuICAgIH1cbiAgICBpZiAoIWVuZHBvaW50Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRW5kcG9pbnQgZW52aXJvbm1lbnQgdmFyaWFibGUgJHtlbmRwb2ludEVudlZhcn0gY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZ2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0aFRva2VuID0gcHJvY2Vzcy5lbnZbYXBpS2V5RW52VmFyXTtcbiAgICBpZiAoIWF1dGhUb2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbXB0eSB2YWx1ZSBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgJHthcGlLZXlFbnZWYXJ9YCk7XG4gICAgfVxuICAgIGlmICghYXV0aFRva2VuLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQVBJIGtleSBlbnZpcm9ubWVudCB2YXJpYWJsZSAke2FwaUtleUVudlZhcn0gY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZ2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1YyQXBpS2V5KGF1dGhUb2tlbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1JlY2VpdmVkIGFuIGludmFsaWQgdjIgQVBJIGtleS4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBrZXk/IE9yIGRpZCB5b3UgbWVhbiB0byB1c2UgYGZyb21FbnZpcm9ubWVudFZhcmlhYmxlKClgIHdpdGggYSBsZWdhY3kga2V5IGluc3RlYWQ/J1xuICAgICAgKTtcbiAgICB9XG4gICAgc3VwZXIoe1xuICAgICAgYXV0aFRva2VuOiBhdXRoVG9rZW4sXG4gICAgICBlbmRwb2ludDogZW5kcG9pbnQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -10,10 +10,15 @@ export interface LegacyClaims {
10
10
  */
11
11
  c: string;
12
12
  }
13
+ export interface V2Claims {
14
+ /** type of token, 'g' for global api key */
15
+ t: string;
16
+ }
13
17
  export interface Base64DecodedV1Token {
14
18
  api_key: string;
15
19
  endpoint: string;
16
20
  }
21
+ export declare function isV2ApiKey(authToken: string): boolean;
17
22
  interface TokenAndEndpoints {
18
23
  controlEndpoint: string | undefined;
19
24
  cacheEndpoint: string | undefined;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InternalSuperUserPermissions = exports.decodeAuthToken = exports.populateAllEndpointsFromBaseEndpoint = void 0;
3
+ exports.InternalSuperUserPermissions = exports.decodeAuthToken = exports.populateAllEndpointsFromBaseEndpoint = exports.isV2ApiKey = void 0;
4
4
  const errors_1 = require("../../errors");
5
5
  const jwt_decode_1 = require("jwt-decode");
6
6
  const validators_1 = require("./validators");
@@ -9,6 +9,14 @@ const permission_scope_1 = require("../../auth/tokens/permission-scope");
9
9
  function decodeAuthTokenClaims(authToken) {
10
10
  return (0, jwt_decode_1.default)(authToken);
11
11
  }
12
+ function isV2ApiKey(authToken) {
13
+ if ((0, validators_1.isBase64)(authToken)) {
14
+ return false;
15
+ }
16
+ const decodedLegacyToken = decodeAuthTokenClaims(authToken);
17
+ return decodedLegacyToken.t === 'g';
18
+ }
19
+ exports.isV2ApiKey = isV2ApiKey;
12
20
  function populateAllEndpointsFromBaseEndpoint(endpointOverride) {
13
21
  let prefix = '';
14
22
  if (endpointOverride.endpointPrefix) {
@@ -52,6 +60,9 @@ const decodeAuthToken = (token) => {
52
60
  };
53
61
  }
54
62
  else {
63
+ if (isV2ApiKey(token)) {
64
+ throw new errors_1.InvalidArgumentError('Received a v2 API key. Are you using the correct key? Or did you mean to use `fromApiKeyV2()` or `fromEnvVarV2()` instead?');
65
+ }
55
66
  // This decode function uses generics to advertise that we will usually expect to find the LegacyClaims. However,
56
67
  // if the token is a valid JWT but not actually one of our legacy tokens, the endpoint claims will be undefined,
57
68
  // which is why the return type for this function specifies that the controlEndpoint/cacheEndpoint may be undefined.
@@ -73,4 +84,4 @@ exports.decodeAuthToken = decodeAuthToken;
73
84
  class InternalSuperUserPermissions extends permission_scope_1.PredefinedScope {
74
85
  }
75
86
  exports.InternalSuperUserPermissions = InternalSuperUserPermissions;
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC91dGlscy9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFrRDtBQUNsRCwyQ0FBbUM7QUFDbkMsNkNBQXNDO0FBQ3RDLHFDQUEwQztBQUMxQyx5RUFBbUU7QUFtQm5FLFNBQVMscUJBQXFCLENBQUksU0FBaUI7SUFDakQsT0FBTyxJQUFBLG9CQUFTLEVBQUksU0FBUyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQWtCRCxTQUFnQixvQ0FBb0MsQ0FDbEQsZ0JBQXNDO0lBRXRDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLGdCQUFnQixDQUFDLGNBQWMsRUFBRTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLEdBQUcsQ0FBQztLQUNoRDtJQUNELE9BQU87UUFDTCxlQUFlLEVBQUUsR0FBRyxNQUFNLFdBQVcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFO1FBQ3BFLGFBQWEsRUFBRSxHQUFHLE1BQU0sU0FBUyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUU7UUFDaEUsYUFBYSxFQUFFLEdBQUcsTUFBTSxTQUFTLGdCQUFnQixDQUFDLFlBQVksRUFBRTtRQUNoRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxnQkFBZ0I7S0FDcEQsQ0FBQztBQUNKLENBQUM7QUFiRCxvRkFhQztBQUVEOzs7R0FHRztBQUNJLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBYyxFQUFxQixFQUFFO0lBQ25FLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixNQUFNLElBQUksNkJBQW9CLENBQUMsc0JBQXNCLENBQUMsQ0FBQztLQUN4RDtJQUVELElBQUk7UUFDRix5R0FBeUc7UUFDekcsZ0hBQWdIO1FBQ2hILHFIQUFxSDtRQUNySCx5SEFBeUg7UUFDekgsZ0NBQWdDO1FBQ2hDLElBQUksSUFBQSxxQkFBUSxFQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDbkMsSUFBQSx5QkFBZ0IsRUFBQyxLQUFLLENBQUMsQ0FDQSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQy9ELE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2FBQ3pEO1lBQ0QsTUFBTSxTQUFTLEdBQUcsb0NBQW9DLENBQUM7Z0JBQ3JELFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxRQUFRO2FBQzFDLENBQUMsQ0FBQztZQUNILE9BQU87Z0JBQ0wsZUFBZSxFQUFFLFNBQVMsQ0FBQyxlQUFlO2dCQUMxQyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7Z0JBQ3RDLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtnQkFDdEMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLE9BQU87YUFDdEMsQ0FBQztTQUNIO2FBQU07WUFDTCxrSEFBa0g7WUFDbEgsZ0hBQWdIO1lBQ2hILG9IQUFvSDtZQUNwSCxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFlLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLE9BQU87Z0JBQ0wsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEVBQUU7Z0JBQ3RDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNuQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDbkMsU0FBUyxFQUFFLEtBQUs7YUFDakIsQ0FBQztTQUNIO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLDRFQUE0RTtRQUM1RSxNQUFNLElBQUksNkJBQW9CLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDL0Q7QUFDSCxDQUFDLENBQUM7QUEzQ1csUUFBQSxlQUFlLG1CQTJDMUI7QUFFRixNQUFhLDRCQUE2QixTQUFRLGtDQUFlO0NBQUc7QUFBcEUsb0VBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnZhbGlkQXJndW1lbnRFcnJvcn0gZnJvbSAnLi4vLi4vZXJyb3JzJztcbmltcG9ydCBqd3REZWNvZGUgZnJvbSAnand0LWRlY29kZSc7XG5pbXBvcnQge2lzQmFzZTY0fSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtkZWNvZGVGcm9tQmFzZTY0fSBmcm9tICcuL3N0cmluZyc7XG5pbXBvcnQge1ByZWRlZmluZWRTY29wZX0gZnJvbSAnLi4vLi4vYXV0aC90b2tlbnMvcGVybWlzc2lvbi1zY29wZSc7XG5pbXBvcnQge0Jhc2VFbmRwb2ludE92ZXJyaWRlfSBmcm9tICcuLi8uLi9hdXRoJztcblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDbGFpbXMge1xuICAvKipcbiAgICogY29udHJvbCBwbGFuZSBlbmRwb2ludFxuICAgKi9cbiAgY3A6IHN0cmluZztcbiAgLyoqXG4gICAqIGNhY2hlIGVuZHBvaW50XG4gICAqL1xuICBjOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZTY0RGVjb2RlZFYxVG9rZW4ge1xuICBhcGlfa2V5OiBzdHJpbmc7XG4gIGVuZHBvaW50OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGRlY29kZUF1dGhUb2tlbkNsYWltczxUPihhdXRoVG9rZW46IHN0cmluZyk6IFQge1xuICByZXR1cm4gand0RGVjb2RlPFQ+KGF1dGhUb2tlbik7XG59XG5cbmludGVyZmFjZSBUb2tlbkFuZEVuZHBvaW50cyB7XG4gIC8vIElmIHdlIGRlY29kZSBhIEpXVCB0aGF0IGRvZXNuJ3QgYWN0dWFsbHkgaGF2ZSB0aGUgY29udHJvbEVuZHBvaW50L2NhY2hlRW5kcG9pbnQgY2xhaW1zLCB0aGVuIHRoZXkgd2lsbCBjb21lIGJhY2tcbiAgLy8gYXMgdW5kZWZpbmVkOyB0aHVzIHdlIG5lZWQgdGhlIHR5cGVzIGhlcmUgdG8gYmUgYHN0cmluZyB8IHVuZGVmaW5lZGAuXG4gIGNvbnRyb2xFbmRwb2ludDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjYWNoZUVuZHBvaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHRva2VuRW5kcG9pbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYXV0aFRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxsRW5kcG9pbnRzIHtcbiAgY29udHJvbEVuZHBvaW50OiBzdHJpbmc7XG4gIGNhY2hlRW5kcG9pbnQ6IHN0cmluZztcbiAgdG9rZW5FbmRwb2ludDogc3RyaW5nO1xuICBzZWN1cmVDb25uZWN0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludChcbiAgZW5kcG9pbnRPdmVycmlkZTogQmFzZUVuZHBvaW50T3ZlcnJpZGVcbik6IEFsbEVuZHBvaW50cyB7XG4gIGxldCBwcmVmaXggPSAnJztcbiAgaWYgKGVuZHBvaW50T3ZlcnJpZGUuZW5kcG9pbnRQcmVmaXgpIHtcbiAgICBwcmVmaXggPSBgJHtlbmRwb2ludE92ZXJyaWRlLmVuZHBvaW50UHJlZml4fS5gO1xuICB9XG4gIHJldHVybiB7XG4gICAgY29udHJvbEVuZHBvaW50OiBgJHtwcmVmaXh9Y29udHJvbC4ke2VuZHBvaW50T3ZlcnJpZGUuYmFzZUVuZHBvaW50fWAsXG4gICAgY2FjaGVFbmRwb2ludDogYCR7cHJlZml4fWNhY2hlLiR7ZW5kcG9pbnRPdmVycmlkZS5iYXNlRW5kcG9pbnR9YCxcbiAgICB0b2tlbkVuZHBvaW50OiBgJHtwcmVmaXh9dG9rZW4uJHtlbmRwb2ludE92ZXJyaWRlLmJhc2VFbmRwb2ludH1gLFxuICAgIHNlY3VyZUNvbm5lY3Rpb246IGVuZHBvaW50T3ZlcnJpZGUuc2VjdXJlQ29ubmVjdGlvbixcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5cbiAqIEByZXR1cm5zIFRva2VuQW5kRW5kcG9pbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBkZWNvZGVBdXRoVG9rZW4gPSAodG9rZW4/OiBzdHJpbmcpOiBUb2tlbkFuZEVuZHBvaW50cyA9PiB7XG4gIGlmICghdG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ21hbGZvcm1lZCBhdXRoIHRva2VuJyk7XG4gIH1cblxuICB0cnkge1xuICAgIC8vIHYxIGFwaSB0b2tlbnMgZG9uJ3QgaGF2ZSBhbiBlbmRwb2ludCBhcyBwYXJ0IG9mIHRoZWlyIGNsYWltcy4gSW5zdGVhZCwgd2hlbiB0aGUgU0RLIHJldHVybnMgdG9rZW5zLCB3ZVxuICAgIC8vIGdpdmUgaXQgdG8gdGhlbSBhcyBhIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBvZiAneyBcImFwaV9rZXlcIjogXCI8dGhlIGtleT5cIiwgXCJlbmRwb2ludFwiOiBcInByb2QubW9tZW50b2hxLmNvbVwiIH0nLlxuICAgIC8vIFNpbmNlIGluIHRoZSBuZWFyIGZ1dHVyZSwgbW9zdCBjdXN0b21lcnMgYXJlIGdvaW5nIHRvIGJlIHVzaW5nIHRoZXNlIG5ld2VyIHRva2Vucywgd2UgYXJlIGZpcnN0IGNoZWNraW5nIHRvIHNlZSBpZlxuICAgIC8vIHRoZXkgYXJlIGJhc2U2NCBlbmNvZGVkLCB3aGljaCB3aWxsIHRlbGwgdXMgdGhhdCB0aGV5IGFyZSBvdXIgdjEgYXBpIHRva2Vucy4gSWYgaXRzIG5vdCwgd2Ugd2lsbCBmYWxsIGJhY2sgdG8gZGVjb2RpbmdcbiAgICAvLyBpdCBhcyBvbmUgb2Ygb3VyIGxlZ2FjeSBqd3RzLlxuICAgIGlmIChpc0Jhc2U2NCh0b2tlbikpIHtcbiAgICAgIGNvbnN0IGJhc2U2NERlY29kZWRUb2tlbiA9IEpTT04ucGFyc2UoXG4gICAgICAgIGRlY29kZUZyb21CYXNlNjQodG9rZW4pXG4gICAgICApIGFzIEJhc2U2NERlY29kZWRWMVRva2VuO1xuICAgICAgaWYgKCFiYXNlNjREZWNvZGVkVG9rZW4uZW5kcG9pbnQgfHwgIWJhc2U2NERlY29kZWRUb2tlbi5hcGlfa2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignZmFpbGVkIHRvIHBhcnNlIHRva2VuJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBlbmRwb2ludHMgPSBwb3B1bGF0ZUFsbEVuZHBvaW50c0Zyb21CYXNlRW5kcG9pbnQoe1xuICAgICAgICBiYXNlRW5kcG9pbnQ6IGJhc2U2NERlY29kZWRUb2tlbi5lbmRwb2ludCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udHJvbEVuZHBvaW50OiBlbmRwb2ludHMuY29udHJvbEVuZHBvaW50LFxuICAgICAgICBjYWNoZUVuZHBvaW50OiBlbmRwb2ludHMuY2FjaGVFbmRwb2ludCxcbiAgICAgICAgdG9rZW5FbmRwb2ludDogZW5kcG9pbnRzLnRva2VuRW5kcG9pbnQsXG4gICAgICAgIGF1dGhUb2tlbjogYmFzZTY0RGVjb2RlZFRva2VuLmFwaV9rZXksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIGRlY29kZSBmdW5jdGlvbiB1c2VzIGdlbmVyaWNzIHRvIGFkdmVydGlzZSB0aGF0IHdlIHdpbGwgdXN1YWxseSBleHBlY3QgdG8gZmluZCB0aGUgTGVnYWN5Q2xhaW1zLiAgSG93ZXZlcixcbiAgICAgIC8vIGlmIHRoZSB0b2tlbiBpcyBhIHZhbGlkIEpXVCBidXQgbm90IGFjdHVhbGx5IG9uZSBvZiBvdXIgbGVnYWN5IHRva2VucywgdGhlIGVuZHBvaW50IGNsYWltcyB3aWxsIGJlIHVuZGVmaW5lZCxcbiAgICAgIC8vIHdoaWNoIGlzIHdoeSB0aGUgcmV0dXJuIHR5cGUgZm9yIHRoaXMgZnVuY3Rpb24gc3BlY2lmaWVzIHRoYXQgdGhlIGNvbnRyb2xFbmRwb2ludC9jYWNoZUVuZHBvaW50IG1heSBiZSB1bmRlZmluZWQuXG4gICAgICBjb25zdCBkZWNvZGVkTGVnYWN5VG9rZW4gPSBkZWNvZGVBdXRoVG9rZW5DbGFpbXM8TGVnYWN5Q2xhaW1zPih0b2tlbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250cm9sRW5kcG9pbnQ6IGRlY29kZWRMZWdhY3lUb2tlbi5jcCxcbiAgICAgICAgY2FjaGVFbmRwb2ludDogZGVjb2RlZExlZ2FjeVRva2VuLmMsXG4gICAgICAgIHRva2VuRW5kcG9pbnQ6IGRlY29kZWRMZWdhY3lUb2tlbi5jLFxuICAgICAgICBhdXRoVG9rZW46IHRva2VuLFxuICAgICAgfTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBmYWlsZWQgdG8gcGFyc2UgdG9rZW46ICR7ZX1gKTtcbiAgfVxufTtcblxuZXhwb3J0IGNsYXNzIEludGVybmFsU3VwZXJVc2VyUGVybWlzc2lvbnMgZXh0ZW5kcyBQcmVkZWZpbmVkU2NvcGUge31cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC91dGlscy9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFrRDtBQUNsRCwyQ0FBbUM7QUFDbkMsNkNBQXNDO0FBQ3RDLHFDQUEwQztBQUMxQyx5RUFBbUU7QUF3Qm5FLFNBQVMscUJBQXFCLENBQUksU0FBaUI7SUFDakQsT0FBTyxJQUFBLG9CQUFTLEVBQUksU0FBUyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxTQUFpQjtJQUMxQyxJQUFJLElBQUEscUJBQVEsRUFBQyxTQUFTLENBQUMsRUFBRTtRQUN2QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBVyxTQUFTLENBQUMsQ0FBQztJQUN0RSxPQUFPLGtCQUFrQixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUM7QUFDdEMsQ0FBQztBQU5ELGdDQU1DO0FBa0JELFNBQWdCLG9DQUFvQyxDQUNsRCxnQkFBc0M7SUFFdEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksZ0JBQWdCLENBQUMsY0FBYyxFQUFFO1FBQ25DLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLGNBQWMsR0FBRyxDQUFDO0tBQ2hEO0lBQ0QsT0FBTztRQUNMLGVBQWUsRUFBRSxHQUFHLE1BQU0sV0FBVyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUU7UUFDcEUsYUFBYSxFQUFFLEdBQUcsTUFBTSxTQUFTLGdCQUFnQixDQUFDLFlBQVksRUFBRTtRQUNoRSxhQUFhLEVBQUUsR0FBRyxNQUFNLFNBQVMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFO1FBQ2hFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLGdCQUFnQjtLQUNwRCxDQUFDO0FBQ0osQ0FBQztBQWJELG9GQWFDO0FBRUQ7OztHQUdHO0FBQ0ksTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFjLEVBQXFCLEVBQUU7SUFDbkUsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsSUFBSTtRQUNGLHlHQUF5RztRQUN6RyxnSEFBZ0g7UUFDaEgscUhBQXFIO1FBQ3JILHlIQUF5SDtRQUN6SCxnQ0FBZ0M7UUFDaEMsSUFBSSxJQUFBLHFCQUFRLEVBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNuQyxJQUFBLHlCQUFnQixFQUFDLEtBQUssQ0FBQyxDQUNBLENBQUM7WUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtnQkFDL0QsTUFBTSxJQUFJLDZCQUFvQixDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDekQ7WUFDRCxNQUFNLFNBQVMsR0FBRyxvQ0FBb0MsQ0FBQztnQkFDckQsWUFBWSxFQUFFLGtCQUFrQixDQUFDLFFBQVE7YUFDMUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztnQkFDTCxlQUFlLEVBQUUsU0FBUyxDQUFDLGVBQWU7Z0JBQzFDLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtnQkFDdEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO2dCQUN0QyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsT0FBTzthQUN0QyxDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixNQUFNLElBQUksNkJBQW9CLENBQzVCLDRIQUE0SCxDQUM3SCxDQUFDO2FBQ0g7WUFFRCxrSEFBa0g7WUFDbEgsZ0hBQWdIO1lBQ2hILG9IQUFvSDtZQUNwSCxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFlLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLE9BQU87Z0JBQ0wsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEVBQUU7Z0JBQ3RDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNuQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDbkMsU0FBUyxFQUFFLEtBQUs7YUFDakIsQ0FBQztTQUNIO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLDRFQUE0RTtRQUM1RSxNQUFNLElBQUksNkJBQW9CLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDL0Q7QUFDSCxDQUFDLENBQUM7QUFqRFcsUUFBQSxlQUFlLG1CQWlEMUI7QUFFRixNQUFhLDRCQUE2QixTQUFRLGtDQUFlO0NBQUc7QUFBcEUsb0VBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnZhbGlkQXJndW1lbnRFcnJvcn0gZnJvbSAnLi4vLi4vZXJyb3JzJztcbmltcG9ydCBqd3REZWNvZGUgZnJvbSAnand0LWRlY29kZSc7XG5pbXBvcnQge2lzQmFzZTY0fSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtkZWNvZGVGcm9tQmFzZTY0fSBmcm9tICcuL3N0cmluZyc7XG5pbXBvcnQge1ByZWRlZmluZWRTY29wZX0gZnJvbSAnLi4vLi4vYXV0aC90b2tlbnMvcGVybWlzc2lvbi1zY29wZSc7XG5pbXBvcnQge0Jhc2VFbmRwb2ludE92ZXJyaWRlfSBmcm9tICcuLi8uLi9hdXRoJztcblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDbGFpbXMge1xuICAvKipcbiAgICogY29udHJvbCBwbGFuZSBlbmRwb2ludFxuICAgKi9cbiAgY3A6IHN0cmluZztcbiAgLyoqXG4gICAqIGNhY2hlIGVuZHBvaW50XG4gICAqL1xuICBjOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVjJDbGFpbXMge1xuICAvKiogdHlwZSBvZiB0b2tlbiwgJ2cnIGZvciBnbG9iYWwgYXBpIGtleSAqL1xuICB0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZTY0RGVjb2RlZFYxVG9rZW4ge1xuICBhcGlfa2V5OiBzdHJpbmc7XG4gIGVuZHBvaW50OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGRlY29kZUF1dGhUb2tlbkNsYWltczxUPihhdXRoVG9rZW46IHN0cmluZyk6IFQge1xuICByZXR1cm4gand0RGVjb2RlPFQ+KGF1dGhUb2tlbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1YyQXBpS2V5KGF1dGhUb2tlbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChpc0Jhc2U2NChhdXRoVG9rZW4pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGRlY29kZWRMZWdhY3lUb2tlbiA9IGRlY29kZUF1dGhUb2tlbkNsYWltczxWMkNsYWltcz4oYXV0aFRva2VuKTtcbiAgcmV0dXJuIGRlY29kZWRMZWdhY3lUb2tlbi50ID09PSAnZyc7XG59XG5cbmludGVyZmFjZSBUb2tlbkFuZEVuZHBvaW50cyB7XG4gIC8vIElmIHdlIGRlY29kZSBhIEpXVCB0aGF0IGRvZXNuJ3QgYWN0dWFsbHkgaGF2ZSB0aGUgY29udHJvbEVuZHBvaW50L2NhY2hlRW5kcG9pbnQgY2xhaW1zLCB0aGVuIHRoZXkgd2lsbCBjb21lIGJhY2tcbiAgLy8gYXMgdW5kZWZpbmVkOyB0aHVzIHdlIG5lZWQgdGhlIHR5cGVzIGhlcmUgdG8gYmUgYHN0cmluZyB8IHVuZGVmaW5lZGAuXG4gIGNvbnRyb2xFbmRwb2ludDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjYWNoZUVuZHBvaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHRva2VuRW5kcG9pbnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYXV0aFRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxsRW5kcG9pbnRzIHtcbiAgY29udHJvbEVuZHBvaW50OiBzdHJpbmc7XG4gIGNhY2hlRW5kcG9pbnQ6IHN0cmluZztcbiAgdG9rZW5FbmRwb2ludDogc3RyaW5nO1xuICBzZWN1cmVDb25uZWN0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludChcbiAgZW5kcG9pbnRPdmVycmlkZTogQmFzZUVuZHBvaW50T3ZlcnJpZGVcbik6IEFsbEVuZHBvaW50cyB7XG4gIGxldCBwcmVmaXggPSAnJztcbiAgaWYgKGVuZHBvaW50T3ZlcnJpZGUuZW5kcG9pbnRQcmVmaXgpIHtcbiAgICBwcmVmaXggPSBgJHtlbmRwb2ludE92ZXJyaWRlLmVuZHBvaW50UHJlZml4fS5gO1xuICB9XG4gIHJldHVybiB7XG4gICAgY29udHJvbEVuZHBvaW50OiBgJHtwcmVmaXh9Y29udHJvbC4ke2VuZHBvaW50T3ZlcnJpZGUuYmFzZUVuZHBvaW50fWAsXG4gICAgY2FjaGVFbmRwb2ludDogYCR7cHJlZml4fWNhY2hlLiR7ZW5kcG9pbnRPdmVycmlkZS5iYXNlRW5kcG9pbnR9YCxcbiAgICB0b2tlbkVuZHBvaW50OiBgJHtwcmVmaXh9dG9rZW4uJHtlbmRwb2ludE92ZXJyaWRlLmJhc2VFbmRwb2ludH1gLFxuICAgIHNlY3VyZUNvbm5lY3Rpb246IGVuZHBvaW50T3ZlcnJpZGUuc2VjdXJlQ29ubmVjdGlvbixcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5cbiAqIEByZXR1cm5zIFRva2VuQW5kRW5kcG9pbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBkZWNvZGVBdXRoVG9rZW4gPSAodG9rZW4/OiBzdHJpbmcpOiBUb2tlbkFuZEVuZHBvaW50cyA9PiB7XG4gIGlmICghdG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ21hbGZvcm1lZCBhdXRoIHRva2VuJyk7XG4gIH1cblxuICB0cnkge1xuICAgIC8vIHYxIGFwaSB0b2tlbnMgZG9uJ3QgaGF2ZSBhbiBlbmRwb2ludCBhcyBwYXJ0IG9mIHRoZWlyIGNsYWltcy4gSW5zdGVhZCwgd2hlbiB0aGUgU0RLIHJldHVybnMgdG9rZW5zLCB3ZVxuICAgIC8vIGdpdmUgaXQgdG8gdGhlbSBhcyBhIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBvZiAneyBcImFwaV9rZXlcIjogXCI8dGhlIGtleT5cIiwgXCJlbmRwb2ludFwiOiBcInByb2QubW9tZW50b2hxLmNvbVwiIH0nLlxuICAgIC8vIFNpbmNlIGluIHRoZSBuZWFyIGZ1dHVyZSwgbW9zdCBjdXN0b21lcnMgYXJlIGdvaW5nIHRvIGJlIHVzaW5nIHRoZXNlIG5ld2VyIHRva2Vucywgd2UgYXJlIGZpcnN0IGNoZWNraW5nIHRvIHNlZSBpZlxuICAgIC8vIHRoZXkgYXJlIGJhc2U2NCBlbmNvZGVkLCB3aGljaCB3aWxsIHRlbGwgdXMgdGhhdCB0aGV5IGFyZSBvdXIgdjEgYXBpIHRva2Vucy4gSWYgaXRzIG5vdCwgd2Ugd2lsbCBmYWxsIGJhY2sgdG8gZGVjb2RpbmdcbiAgICAvLyBpdCBhcyBvbmUgb2Ygb3VyIGxlZ2FjeSBqd3RzLlxuICAgIGlmIChpc0Jhc2U2NCh0b2tlbikpIHtcbiAgICAgIGNvbnN0IGJhc2U2NERlY29kZWRUb2tlbiA9IEpTT04ucGFyc2UoXG4gICAgICAgIGRlY29kZUZyb21CYXNlNjQodG9rZW4pXG4gICAgICApIGFzIEJhc2U2NERlY29kZWRWMVRva2VuO1xuICAgICAgaWYgKCFiYXNlNjREZWNvZGVkVG9rZW4uZW5kcG9pbnQgfHwgIWJhc2U2NERlY29kZWRUb2tlbi5hcGlfa2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignZmFpbGVkIHRvIHBhcnNlIHRva2VuJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBlbmRwb2ludHMgPSBwb3B1bGF0ZUFsbEVuZHBvaW50c0Zyb21CYXNlRW5kcG9pbnQoe1xuICAgICAgICBiYXNlRW5kcG9pbnQ6IGJhc2U2NERlY29kZWRUb2tlbi5lbmRwb2ludCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udHJvbEVuZHBvaW50OiBlbmRwb2ludHMuY29udHJvbEVuZHBvaW50LFxuICAgICAgICBjYWNoZUVuZHBvaW50OiBlbmRwb2ludHMuY2FjaGVFbmRwb2ludCxcbiAgICAgICAgdG9rZW5FbmRwb2ludDogZW5kcG9pbnRzLnRva2VuRW5kcG9pbnQsXG4gICAgICAgIGF1dGhUb2tlbjogYmFzZTY0RGVjb2RlZFRva2VuLmFwaV9rZXksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNWMkFwaUtleSh0b2tlbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICAgICdSZWNlaXZlZCBhIHYyIEFQSSBrZXkuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3Qga2V5PyBPciBkaWQgeW91IG1lYW4gdG8gdXNlIGBmcm9tQXBpS2V5VjIoKWAgb3IgYGZyb21FbnZWYXJWMigpYCBpbnN0ZWFkPydcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gVGhpcyBkZWNvZGUgZnVuY3Rpb24gdXNlcyBnZW5lcmljcyB0byBhZHZlcnRpc2UgdGhhdCB3ZSB3aWxsIHVzdWFsbHkgZXhwZWN0IHRvIGZpbmQgdGhlIExlZ2FjeUNsYWltcy4gIEhvd2V2ZXIsXG4gICAgICAvLyBpZiB0aGUgdG9rZW4gaXMgYSB2YWxpZCBKV1QgYnV0IG5vdCBhY3R1YWxseSBvbmUgb2Ygb3VyIGxlZ2FjeSB0b2tlbnMsIHRoZSBlbmRwb2ludCBjbGFpbXMgd2lsbCBiZSB1bmRlZmluZWQsXG4gICAgICAvLyB3aGljaCBpcyB3aHkgdGhlIHJldHVybiB0eXBlIGZvciB0aGlzIGZ1bmN0aW9uIHNwZWNpZmllcyB0aGF0IHRoZSBjb250cm9sRW5kcG9pbnQvY2FjaGVFbmRwb2ludCBtYXkgYmUgdW5kZWZpbmVkLlxuICAgICAgY29uc3QgZGVjb2RlZExlZ2FjeVRva2VuID0gZGVjb2RlQXV0aFRva2VuQ2xhaW1zPExlZ2FjeUNsYWltcz4odG9rZW4pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udHJvbEVuZHBvaW50OiBkZWNvZGVkTGVnYWN5VG9rZW4uY3AsXG4gICAgICAgIGNhY2hlRW5kcG9pbnQ6IGRlY29kZWRMZWdhY3lUb2tlbi5jLFxuICAgICAgICB0b2tlbkVuZHBvaW50OiBkZWNvZGVkTGVnYWN5VG9rZW4uYyxcbiAgICAgICAgYXV0aFRva2VuOiB0b2tlbixcbiAgICAgIH07XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgZmFpbGVkIHRvIHBhcnNlIHRva2VuOiAke2V9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjbGFzcyBJbnRlcm5hbFN1cGVyVXNlclBlcm1pc3Npb25zIGV4dGVuZHMgUHJlZGVmaW5lZFNjb3BlIHt9XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gomomento/sdk-core",
3
- "version": "1.116.0",
3
+ "version": "1.117.1",
4
4
  "description": "Common code for Momento JS SDKs",
5
5
  "main": "dist/src/index.js",
6
6
  "files": [
@@ -37,7 +37,7 @@
37
37
  "eslint-plugin-prettier": "4.2.1",
38
38
  "jest": "29.7.0",
39
39
  "jest-extended": "4.0.2",
40
- "jest-spec-reporter": "^1.0.19",
40
+ "jest-spec-reporter": "1.0.19",
41
41
  "prettier": "2.8.8",
42
42
  "ts-jest": "29.1.1",
43
43
  "ts-morph": "19.0.0",