@gomomento/sdk-core 1.117.0 → 1.117.2

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.
@@ -162,6 +162,11 @@ export declare class EnvMomentoTokenProvider extends StringMomentoTokenProvider
162
162
  */
163
163
  constructor(props: EnvMomentoTokenProviderProps | string);
164
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
+ */
165
170
  export declare function getDefaultCredentialProvider(): CredentialProvider;
166
171
  export interface MomentoLocalProviderProps extends CredentialProviderProps {
167
172
  /**
@@ -186,9 +186,19 @@ class EnvMomentoTokenProvider extends StringMomentoTokenProvider {
186
186
  }
187
187
  }
188
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
+ */
189
194
  function getDefaultCredentialProvider() {
190
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
191
- 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
+ }
192
202
  }
193
203
  exports.getDefaultCredentialProvider = getDefaultCredentialProvider;
194
204
  class MomentoLocalProvider {
@@ -365,4 +375,4 @@ class EnvMomentoV2TokenProvider extends ApiKeyV2TokenProvider {
365
375
  }
366
376
  }
367
377
  exports.EnvMomentoV2TokenProvider = EnvMomentoV2TokenProvider;
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2NyZWRlbnRpYWwtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBTTJCO0FBVTNCLFNBQVMsc0JBQXNCLENBQzdCLGlCQUFvQztJQUVwQyxPQUFRLGlCQUEwQyxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUM7QUFDaEYsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixpQkFBb0M7SUFFcEMsTUFBTSxZQUFZLEdBQUcsaUJBQWlDLENBQUM7SUFDdkQsT0FBTyxDQUNMLFlBQVksQ0FBQyxhQUFhLEtBQUssU0FBUztRQUN4QyxZQUFZLENBQUMsZUFBZSxLQUFLLFNBQVM7UUFDMUMsWUFBWSxDQUFDLGFBQWEsS0FBSyxTQUFTLENBQ3pDLENBQUM7QUFDSixDQUFDO0FBU0Q7Ozs7O0dBS0c7QUFDSCxNQUFzQixrQkFBa0I7SUFxRHRDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixLQUE0QztRQUU1QyxPQUFPLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixLQUE0QztRQUU1QyxPQUFPLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixLQUErQztRQUUvQyxPQUFPLElBQUksMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FDeEIsS0FBK0M7UUFFL0MsT0FBTyxJQUFJLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUNqQixLQUFzQztRQUV0QyxPQUFPLElBQUkseUJBQXlCLENBQUMsS0FB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LENBQUM7U0FDSDtRQUNELEtBQUssQ0FBQztZQUNKLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRDRCw4REFzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbGxFbmRwb2ludHMsXG4gIGRlY29kZUF1dGhUb2tlbixcbiAgZnJvbUVudHJpZXMsXG4gIGlzVjJBcGlLZXksXG4gIHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludCxcbn0gZnJvbSAnLi4vaW50ZXJuYWwvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFbmRwb2ludE92ZXJyaWRlIHtcbiAgYmFzZUVuZHBvaW50OiBzdHJpbmc7XG4gIGVuZHBvaW50UHJlZml4Pzogc3RyaW5nO1xuICBzZWN1cmVDb25uZWN0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgRW5kcG9pbnRPdmVycmlkZXMgPSBCYXNlRW5kcG9pbnRPdmVycmlkZSB8IEFsbEVuZHBvaW50cztcblxuZnVuY3Rpb24gaXNCYXNlRW5kcG9pbnRPdmVycmlkZShcbiAgZW5kcG9pbnRPdmVycmlkZXM6IEVuZHBvaW50T3ZlcnJpZGVzXG4pOiBlbmRwb2ludE92ZXJyaWRlcyBpcyBCYXNlRW5kcG9pbnRPdmVycmlkZSB7XG4gIHJldHVybiAoZW5kcG9pbnRPdmVycmlkZXMgYXMgQmFzZUVuZHBvaW50T3ZlcnJpZGUpLmJhc2VFbmRwb2ludCAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc0FsbEVuZHBvaW50cyhcbiAgZW5kcG9pbnRPdmVycmlkZXM6IEVuZHBvaW50T3ZlcnJpZGVzXG4pOiBlbmRwb2ludE92ZXJyaWRlcyBpcyBBbGxFbmRwb2ludHMge1xuICBjb25zdCBhbGxFbmRwb2ludHMgPSBlbmRwb2ludE92ZXJyaWRlcyBhcyBBbGxFbmRwb2ludHM7XG4gIHJldHVybiAoXG4gICAgYWxsRW5kcG9pbnRzLmNhY2hlRW5kcG9pbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIGFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIGFsbEVuZHBvaW50cy50b2tlbkVuZHBvaW50ICE9PSB1bmRlZmluZWRcbiAgKTtcbn1cblxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgYXJndW1lbnRzIGZvciBpbnN0YW50aWF0aW5nIGFuIEVudk1vbWVudG9Ub2tlblByb3ZpZGVyXG4gKi9cbmludGVyZmFjZSBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIGVuZHBvaW50T3ZlcnJpZGVzPzogRW5kcG9pbnRPdmVycmlkZXM7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCB0aGUgQ2FjaGVDbGllbnQgbmVlZHMgaW4gb3JkZXIgdG8gZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhbmQgYXV0aGVudGljYXRlIHdpdGhcbiAqIHRoZSBNb21lbnRvIHNlcnZpY2UuXG4gKiBAZXhwb3J0XG4gKiBAaW50ZXJmYWNlIENyZWRlbnRpYWxQcm92aWRlclxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IEF1dGggdG9rZW4gcHJvdmlkZWQgYnkgdXNlciwgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIHNlcnZpY2VcbiAgICovXG4gIGFic3RyYWN0IGdldEF1dGhUb2tlbigpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gY29udHJvbCBwbGFuZSBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRDb250cm9sRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaXNFbmRwb2ludFNlY3VyZSgpIGluc3RlYWRcbiAgICovXG4gIGFic3RyYWN0IGlzQ29udHJvbEVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gZGF0YSBwbGFuZSBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRDYWNoZUVuZHBvaW50KCk6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzRW5kcG9pbnRTZWN1cmUoKSBpbnN0ZWFkXG4gICAqL1xuICBhYnN0cmFjdCBpc0NhY2hlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGhvc3Qgd2hpY2ggdGhlIE1vbWVudG8gY2xpZW50IHdpbGwgY29ubmVjdCB0byBmb3IgTW9tZW50byB0b2tlbiBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzRW5kcG9pbnRTZWN1cmUoKSBpbnN0ZWFkXG4gICAqL1xuICBhYnN0cmFjdCBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgdGhlIHN0YXRpYyBtZXRob2QgZm9yTW9tZW50b0xvY2FsIGluc3RlYWRcbiAgICpcbiAgICogTW9kaWZpZXMgdGhlIGluc3RhbmNlIG9mIHRoZSBjcmVkZW50aWFsIHByb3ZpZGVyIHRvIG92ZXJyaWRlIGVuZHBvaW50cyB0b1xuICAgKiBhbGxvdyBpbnNlY3VyZSBjb25uZWN0aW9ucyB0byB0aGUgbW9tZW50by1sb2NhbCBzZXJ2aWNlIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gICAqL1xuICBhYnN0cmFjdCB3aXRoTW9tZW50b0xvY2FsKCk6IENyZWRlbnRpYWxQcm92aWRlcjtcblxuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGVuZHBvaW50cyB3ZXJlIG1hbnVhbGx5IG92ZXJyaWRkZW4gYXQgY29uc3RydWN0aW9uIHRpbWU7IGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgYWJzdHJhY3QgYXJlRW5kcG9pbnRzT3ZlcnJpZGRlbigpOiBib29sZWFuO1xuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgY29ubmVjdGluZyB0byB0aGUgZW5kcG9pbnQgY29ubmVjdGlvbiB3aXRoIFRMUzsgZmFsc2UgaWYgbm90IHVzaW5nIFRMU1xuICAgKi9cbiAgYWJzdHJhY3QgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUVudlZhclYyKCkgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21FbnZpcm9ubWVudFZhcmlhYmxlKFxuICAgIHByb3BzOiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzIHwgc3RyaW5nXG4gICk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlcihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21FbnZWYXJWMigpIGluc3RlYWRcbiAgICovXG4gIHN0YXRpYyBmcm9tRW52VmFyKFxuICAgIHByb3BzOiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzIHwgc3RyaW5nXG4gICk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlcihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21BcGlLZXlWMigpIG9yIGZyb21EaXNwb3NhYmxlVG9rZW4oKSBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZyhcbiAgICBwcm9wczogU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyB8IHN0cmluZ1xuICApOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXIocHJvcHMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21EaXNwb3NhYmxlVG9rZW4oXG4gICAgcHJvcHM6IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgfCBzdHJpbmdcbiAgKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyKHByb3BzKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRW52VmFyVjIoXG4gICAgcHJvcHM/OiBFbnZNb21lbnRvVjJUb2tlblByb3ZpZGVyUHJvcHNcbiAgKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IEVudk1vbWVudG9WMlRva2VuUHJvdmlkZXIocHJvcHMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21BcGlLZXlWMihwcm9wczogQXBpS2V5VjJUb2tlblByb3ZpZGVyUHJvcHMpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgQXBpS2V5VjJUb2tlblByb3ZpZGVyKHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyBpbnNlY3VyZSBjb25uZWN0aW9ucyB0byBtb21lbnRvLWxvY2FsIHNlcnZpY2UgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqIERvZXMgbm90IHJlcXVpcmUgYSBNb21lbnRvIEFQSSBrZXkuXG4gICAqIEBwYXJhbSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGNvbm5lY3RpbmcgdG8gbW9tZW50by1sb2NhbFxuICAgKiBAcmV0dXJucyBDcmVkZW50aWFsUHJvdmlkZXJcbiAgICovXG4gIHN0YXRpYyBmb3JNb21lbnRvTG9jYWwocHJvcHM6IE1vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHMpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgTW9tZW50b0xvY2FsUHJvdmlkZXIocHJvcHMpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIENyZWRlbnRpYWxQcm92aWRlckJhc2UgaW1wbGVtZW50cyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICBhYnN0cmFjdCBnZXRBdXRoVG9rZW4oKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGlzQ2FjaGVFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgaXNDb250cm9sRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZztcblxuICBhYnN0cmFjdCBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW47XG5cbiAgYWJzdHJhY3QgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IHdpdGhNb21lbnRvTG9jYWwoKTogQ3JlZGVudGlhbFByb3ZpZGVyO1xuXG4gIHZhbHVlT2YoKTogb2JqZWN0IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMpLmZpbHRlcigoW2tdKSA9PiBrICE9PSAnYXV0aFRva2VuJyk7XG4gICAgY29uc3QgY2xvbmUgPSBmcm9tRW50cmllcyhlbnRyaWVzKTtcbiAgICByZXR1cm4gY2xvbmUudmFsdWVPZigpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTW9tZW50b0FwaUtleVByb3ZpZGVyUHJvcHNcbiAgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBhcGlLZXkgdGhlIG1vbWVudG8gQVBJIGtleVxuICAgKi9cbiAgYXBpS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTW9tZW50b0F1dGhUb2tlblByb3ZpZGVyUHJvcHNcbiAgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBhdXRoVG9rZW4gdGhlIG1vbWVudG8gYXV0aCB0b2tlblxuICAgKi9cbiAgYXV0aFRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgPVxuICB8IFN0cmluZ01vbWVudG9BcGlLZXlQcm92aWRlclByb3BzXG4gIHwgU3RyaW5nTW9tZW50b0F1dGhUb2tlblByb3ZpZGVyUHJvcHM7XG5cbmV4cG9ydCB0eXBlIEFwaUtleVYyVG9rZW5Qcm92aWRlclByb3BzID0gU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyAmIHtcbiAgZW5kcG9pbnQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52TW9tZW50b1YyVG9rZW5Qcm92aWRlclByb3BzIHtcbiAgYXBpS2V5RW52VmFyPzogc3RyaW5nO1xuICBlbmRwb2ludEVudlZhcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgcGFyc2VzIGEgbW9tZW50byBhdXRoIHRva2VuIHN0b3JlZCBpbiBhIFN0cmluZ1xuICogQGV4cG9ydFxuICogQGNsYXNzIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyXG4gKiBAZGVwcmVjYXRlZCB1c2UgQXBpS2V5VjJUb2tlblByb3ZpZGVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNsYXNzIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyIGV4dGVuZHMgQ3JlZGVudGlhbFByb3ZpZGVyQmFzZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsRW5kcG9pbnRzOiBBbGxFbmRwb2ludHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRzT3ZlcnJpZGRlbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIHtTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzfSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0b2tlbiBwcm92aWRlclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzID09PSAnc3RyaW5nJykge1xuICAgICAgcHJvcHMgPSB7YXBpS2V5OiBwcm9wc307XG4gICAgfVxuICAgIHN1cGVyKCk7XG4gICAgbGV0IGtleTogc3RyaW5nO1xuICAgIGlmICgnYXV0aFRva2VuJyBpbiBwcm9wcykge1xuICAgICAga2V5ID0gcHJvcHMuYXV0aFRva2VuO1xuICAgIH0gZWxzZSBpZiAoJ2FwaUtleScgaW4gcHJvcHMpIHtcbiAgICAgIGtleSA9IHByb3BzLmFwaUtleTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5OiBhdXRoVG9rZW4gb3IgYXBpS2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGRlY29kZUF1dGhUb2tlbihrZXkpO1xuICAgIHRoaXMuYXBpS2V5ID0gZGVjb2RlZFRva2VuLmF1dGhUb2tlbjtcbiAgICBpZiAocHJvcHMuZW5kcG9pbnRPdmVycmlkZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuID0gZmFsc2U7XG4gICAgICBpZiAoZGVjb2RlZFRva2VuLmNvbnRyb2xFbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnTWFsZm9ybWVkIHRva2VuOyB1bmFibGUgdG8gZGV0ZXJtaW5lIGNvbnRyb2wgZW5kcG9pbnQuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdG9rZW4geW91IGFyZSB1c2luZywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIGNvbnRyb2xFbmRwb2ludCBleHBsaWNpdGx5LidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWNvZGVkVG9rZW4uY2FjaGVFbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnTWFsZm9ybWVkIHRva2VuOyB1bmFibGUgdG8gZGV0ZXJtaW5lIGNhY2hlIGVuZHBvaW50LiAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRva2VuIHlvdSBhcmUgdXNpbmcsIHlvdSBtYXkgbmVlZCB0byBzcGVjaWZ5IHRoZSBjYWNoZUVuZHBvaW50IGV4cGxpY2l0bHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGRlY29kZWRUb2tlbi50b2tlbkVuZHBvaW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdNYWxmb3JtZWQgdG9rZW47IHVuYWJsZSB0byBkZXRlcm1pbmUgdG9rZW4gZW5kcG9pbnQuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdG9rZW4geW91IGFyZSB1c2luZywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIHRva2VuRW5kcG9pbnQgZXhwbGljaXRseS4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWxsRW5kcG9pbnRzID0ge1xuICAgICAgICBjb250cm9sRW5kcG9pbnQ6IGRlY29kZWRUb2tlbi5jb250cm9sRW5kcG9pbnQsXG4gICAgICAgIGNhY2hlRW5kcG9pbnQ6IGRlY29kZWRUb2tlbi5jYWNoZUVuZHBvaW50LFxuICAgICAgICB0b2tlbkVuZHBvaW50OiBkZWNvZGVkVG9rZW4udG9rZW5FbmRwb2ludCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChpc0FsbEVuZHBvaW50cyhwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzO1xuICAgIH0gZWxzZSBpZiAoaXNCYXNlRW5kcG9pbnRPdmVycmlkZShwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludChcbiAgICAgICAgcHJvcHMuZW5kcG9pbnRPdmVycmlkZXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICBgVW5zdXBwb3J0ZWQgZW5kcG9pbnRPdmVycmlkZXM6ICR7cHJvcHMuZW5kcG9pbnRPdmVycmlkZXN9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRBdXRoVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hcGlLZXk7XG4gIH1cblxuICBnZXRDYWNoZUVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNhY2hlRW5kcG9pbnQ7XG4gIH1cbiAgaXNDYWNoZUVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQ7XG4gIH1cblxuICBpc0NvbnRyb2xFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnRva2VuRW5kcG9pbnQ7XG4gIH1cblxuICBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgaXNTdG9yYWdlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgYXJlRW5kcG9pbnRzT3ZlcnJpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuO1xuICB9XG5cbiAgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hbGxFbmRwb2ludHMuc2VjdXJlQ29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnNlY3VyZUNvbm5lY3Rpb247XG4gIH1cblxuICB3aXRoTW9tZW50b0xvY2FsKCk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBNb21lbnRvTG9jYWxQcm92aWRlcigpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyBleHRlbmRzIENyZWRlbnRpYWxQcm92aWRlclByb3BzIHtcbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmcm9tIHdoaWNoIHRoZSBhdXRoIHRva2VuIHdpbGwgYmUgcmVhZFxuICAgKi9cbiAgZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgcGFyc2VzIGEgbW9tZW50byBhdXRoIHRva2VuIHN0b3JlZCBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclxuICogQGRlcHJlY2F0ZWQgdXNlIEVudk1vbWVudG9WMlRva2VuUHJvdmlkZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY2xhc3MgRW52TW9tZW50b1Rva2VuUHJvdmlkZXIgZXh0ZW5kcyBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlciB7XG4gIGVudmlyb25tZW50VmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vudk1vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHN9IHByb3BzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRva2VuIHByb3ZpZGVyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogRW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgcHJvcHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwcm9wcyA9IHtlbnZpcm9ubWVudFZhcmlhYmxlTmFtZTogcHJvcHN9O1xuICAgIH1cbiAgICBjb25zdCBhdXRoVG9rZW4gPSBwcm9jZXNzLmVudltwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlTmFtZV07XG4gICAgaWYgKCFhdXRoVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgJHtwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIH1cbiAgICBzdXBlcih7XG4gICAgICBhdXRoVG9rZW46IGF1dGhUb2tlbixcbiAgICAgIGVuZHBvaW50T3ZlcnJpZGVzOiBwcm9wcy5lbmRwb2ludE92ZXJyaWRlcyxcbiAgICB9KTtcbiAgICB0aGlzLmVudmlyb25tZW50VmFyaWFibGVOYW1lID0gcHJvcHMuZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDcmVkZW50aWFsUHJvdmlkZXIoKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbFxuICByZXR1cm4gQ3JlZGVudGlhbFByb3ZpZGVyLmZyb21FbnZWYXIoJ01PTUVOVE9fQVBJX0tFWScpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHMgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgaG9zdG5hbWUgb2YgdGhlIG1vbWVudG8tbG9jYWwgc2VydmljZVxuICAgKi9cbiAgaG9zdG5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcG9ydCBvZiB0aGUgbW9tZW50by1sb2NhbCBzZXJ2aWNlXG4gICAqL1xuICBwb3J0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgTW9tZW50b0xvY2FsUHJvdmlkZXIgaW1wbGVtZW50cyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbEVuZHBvaW50czogQWxsRW5kcG9pbnRzO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50c092ZXJyaWRkZW46IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TW9tZW50b0xvY2FsUHJvdmlkZXJQcm9wc30gcHJvcHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBjb25uZWN0aW5nIHRvIG1vbWVudG8tbG9jYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzPzogTW9tZW50b0xvY2FsUHJvdmlkZXJQcm9wcykge1xuICAgIGNvbnN0IGhvc3RuYW1lID0gcHJvcHM/Lmhvc3RuYW1lIHx8ICcxMjcuMC4wLjEnO1xuICAgIGNvbnN0IHBvcnQgPSBwcm9wcz8ucG9ydCB8fCA4MDgwO1xuICAgIGNvbnN0IG1vbWVudG9Mb2NhbEVuZHBvaW50ID0gYCR7aG9zdG5hbWV9OiR7cG9ydH1gO1xuXG4gICAgaWYgKHByb3BzID09PSB1bmRlZmluZWQgfHwgcHJvcHMuZW5kcG9pbnRPdmVycmlkZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuID0gZmFsc2U7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHtcbiAgICAgICAgY29udHJvbEVuZHBvaW50OiBtb21lbnRvTG9jYWxFbmRwb2ludCxcbiAgICAgICAgY2FjaGVFbmRwb2ludDogbW9tZW50b0xvY2FsRW5kcG9pbnQsXG4gICAgICAgIHRva2VuRW5kcG9pbnQ6IG1vbWVudG9Mb2NhbEVuZHBvaW50LFxuICAgICAgICBzZWN1cmVDb25uZWN0aW9uOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChpc0FsbEVuZHBvaW50cyhwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzO1xuICAgIH0gZWxzZSBpZiAoaXNCYXNlRW5kcG9pbnRPdmVycmlkZShwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludChcbiAgICAgICAgcHJvcHMuZW5kcG9pbnRPdmVycmlkZXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICBgVW5zdXBwb3J0ZWQgZW5kcG9pbnRPdmVycmlkZXM6ICR7cHJvcHMuZW5kcG9pbnRPdmVycmlkZXN9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRBdXRoVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXRDYWNoZUVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNhY2hlRW5kcG9pbnQ7XG4gIH1cblxuICBpc0NhY2hlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgZ2V0Q29udHJvbEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNvbnRyb2xFbmRwb2ludDtcbiAgfVxuXG4gIGlzQ29udHJvbEVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldFRva2VuRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMudG9rZW5FbmRwb2ludDtcbiAgfVxuXG4gIGlzVG9rZW5FbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW47XG4gIH1cblxuICBpc0VuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmFsbEVuZHBvaW50cy5zZWN1cmVDb25uZWN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMuc2VjdXJlQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHdpdGhNb21lbnRvTG9jYWwoKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IE1vbWVudG9Mb2NhbFByb3ZpZGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaUtleVYyVG9rZW5Qcm92aWRlciBleHRlbmRzIENyZWRlbnRpYWxQcm92aWRlckJhc2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbEVuZHBvaW50czogQWxsRW5kcG9pbnRzO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0FwaUtleVYyVG9rZW5Qcm92aWRlclByb3BzfSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0b2tlbiBwcm92aWRlclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IEFwaUtleVYyVG9rZW5Qcm92aWRlclByb3BzKSB7XG4gICAgc3VwZXIoKTtcbiAgICBsZXQga2V5OiBzdHJpbmc7XG4gICAgaWYgKCdhdXRoVG9rZW4nIGluIHByb3BzKSB7XG4gICAgICBrZXkgPSBwcm9wcy5hdXRoVG9rZW47XG4gICAgfSBlbHNlIGlmICgnYXBpS2V5JyBpbiBwcm9wcykge1xuICAgICAga2V5ID0gcHJvcHMuYXBpS2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHk6IGF1dGhUb2tlbiBvciBhcGlLZXknKTtcbiAgICB9XG4gICAgaWYgKCFrZXkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBrZXkgY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICBpZiAoIWlzVjJBcGlLZXkoa2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnUmVjZWl2ZWQgYW4gaW52YWxpZCB2MiBBUEkga2V5LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IGtleT8gT3IgZGlkIHlvdSBtZWFuIHRvIHVzZSBgZnJvbVN0cmluZygpYCB3aXRoIGEgbGVnYWN5IGtleSBpbnN0ZWFkPydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGVuZHBvaW50OiBzdHJpbmc7XG4gICAgaWYgKCdlbmRwb2ludCcgaW4gcHJvcHMpIHtcbiAgICAgIGVuZHBvaW50ID0gcHJvcHMuZW5kcG9pbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eTogZW5kcG9pbnQnKTtcbiAgICB9XG4gICAgaWYgKCFlbmRwb2ludC5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5kcG9pbnQgY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZycpO1xuICAgIH1cblxuICAgIHRoaXMuYXBpS2V5ID0ga2V5O1xuICAgIHRoaXMuYWxsRW5kcG9pbnRzID0ge1xuICAgICAgY29udHJvbEVuZHBvaW50OiAnY29udHJvbC4nICsgZW5kcG9pbnQsXG4gICAgICBjYWNoZUVuZHBvaW50OiAnY2FjaGUuJyArIGVuZHBvaW50LFxuICAgICAgdG9rZW5FbmRwb2ludDogJ3Rva2VuLicgKyBlbmRwb2ludCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QXV0aFRva2VuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXBpS2V5O1xuICB9XG5cbiAgZ2V0Q2FjaGVFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5jYWNoZUVuZHBvaW50O1xuICB9XG4gIGlzQ2FjaGVFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBnZXRDb250cm9sRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMuY29udHJvbEVuZHBvaW50O1xuICB9XG5cbiAgaXNDb250cm9sRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgZ2V0VG9rZW5FbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy50b2tlbkVuZHBvaW50O1xuICB9XG5cbiAgaXNUb2tlbkVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGlzU3RvcmFnZUVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGFyZUVuZHBvaW50c092ZXJyaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hbGxFbmRwb2ludHMuc2VjdXJlQ29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnNlY3VyZUNvbm5lY3Rpb247XG4gIH1cblxuICB3aXRoTW9tZW50b0xvY2FsKCk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBNb21lbnRvTG9jYWxQcm92aWRlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbnZNb21lbnRvVjJUb2tlblByb3ZpZGVyIGV4dGVuZHMgQXBpS2V5VjJUb2tlblByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RW52TW9tZW50b1YyVG9rZW5Qcm92aWRlclByb3BzfSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0b2tlbiBwcm92aWRlclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM/OiBFbnZNb21lbnRvVjJUb2tlblByb3ZpZGVyUHJvcHMpIHtcbiAgICBjb25zdCBhcGlLZXlFbnZWYXIgPSBwcm9wcz8uYXBpS2V5RW52VmFyIHx8ICdNT01FTlRPX0FQSV9LRVknO1xuICAgIGNvbnN0IGVuZHBvaW50RW52VmFyID0gcHJvcHM/LmVuZHBvaW50RW52VmFyIHx8ICdNT01FTlRPX0VORFBPSU5UJztcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gcHJvY2Vzcy5lbnZbZW5kcG9pbnRFbnZWYXJdO1xuICAgIGlmICghZW5kcG9pbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW1wdHkgdmFsdWUgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlICR7ZW5kcG9pbnRFbnZWYXJ9YCk7XG4gICAgfVxuICAgIGlmICghZW5kcG9pbnQubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFbmRwb2ludCBlbnZpcm9ubWVudCB2YXJpYWJsZSAke2VuZHBvaW50RW52VmFyfSBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRoVG9rZW4gPSBwcm9jZXNzLmVudlthcGlLZXlFbnZWYXJdO1xuICAgIGlmICghYXV0aFRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVtcHR5IHZhbHVlIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZSAke2FwaUtleUVudlZhcn1gKTtcbiAgICB9XG4gICAgaWYgKCFhdXRoVG9rZW4ubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBUEkga2V5IGVudmlyb25tZW50IHZhcmlhYmxlICR7YXBpS2V5RW52VmFyfSBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVjJBcGlLZXkoYXV0aFRva2VuKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnUmVjZWl2ZWQgYW4gaW52YWxpZCB2MiBBUEkga2V5LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IGtleT8gT3IgZGlkIHlvdSBtZWFuIHRvIHVzZSBgZnJvbUVudmlyb25tZW50VmFyaWFibGUoKWAgd2l0aCBhIGxlZ2FjeSBrZXkgaW5zdGVhZD8nXG4gICAgICApO1xuICAgIH1cbiAgICBzdXBlcih7XG4gICAgICBhdXRoVG9rZW46IGF1dGhUb2tlbixcbiAgICAgIGVuZHBvaW50OiBlbmRwb2ludCxcbiAgICB9KTtcbiAgfVxufVxuIl19
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2NyZWRlbnRpYWwtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBTTJCO0FBVTNCLFNBQVMsc0JBQXNCLENBQzdCLGlCQUFvQztJQUVwQyxPQUFRLGlCQUEwQyxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUM7QUFDaEYsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixpQkFBb0M7SUFFcEMsTUFBTSxZQUFZLEdBQUcsaUJBQWlDLENBQUM7SUFDdkQsT0FBTyxDQUNMLFlBQVksQ0FBQyxhQUFhLEtBQUssU0FBUztRQUN4QyxZQUFZLENBQUMsZUFBZSxLQUFLLFNBQVM7UUFDMUMsWUFBWSxDQUFDLGFBQWEsS0FBSyxTQUFTLENBQ3pDLENBQUM7QUFDSixDQUFDO0FBU0Q7Ozs7O0dBS0c7QUFDSCxNQUFzQixrQkFBa0I7SUFxRHRDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixLQUE0QztRQUU1QyxPQUFPLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixLQUE0QztRQUU1QyxPQUFPLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixLQUErQztRQUUvQyxPQUFPLElBQUksMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FDeEIsS0FBK0M7UUFFL0MsT0FBTyxJQUFJLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUNqQixLQUFzQztRQUV0QyxPQUFPLElBQUkseUJBQXlCLENBQUMsS0FB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RCxJQUFJLENBQUMsSUFBQSxrQkFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQ2IsOElBQThJLENBQy9JLENBQUM7U0FDSDtRQUNELEtBQUssQ0FBQztZQUNKLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRDRCw4REFzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbGxFbmRwb2ludHMsXG4gIGRlY29kZUF1dGhUb2tlbixcbiAgZnJvbUVudHJpZXMsXG4gIGlzVjJBcGlLZXksXG4gIHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludCxcbn0gZnJvbSAnLi4vaW50ZXJuYWwvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFbmRwb2ludE92ZXJyaWRlIHtcbiAgYmFzZUVuZHBvaW50OiBzdHJpbmc7XG4gIGVuZHBvaW50UHJlZml4Pzogc3RyaW5nO1xuICBzZWN1cmVDb25uZWN0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgRW5kcG9pbnRPdmVycmlkZXMgPSBCYXNlRW5kcG9pbnRPdmVycmlkZSB8IEFsbEVuZHBvaW50cztcblxuZnVuY3Rpb24gaXNCYXNlRW5kcG9pbnRPdmVycmlkZShcbiAgZW5kcG9pbnRPdmVycmlkZXM6IEVuZHBvaW50T3ZlcnJpZGVzXG4pOiBlbmRwb2ludE92ZXJyaWRlcyBpcyBCYXNlRW5kcG9pbnRPdmVycmlkZSB7XG4gIHJldHVybiAoZW5kcG9pbnRPdmVycmlkZXMgYXMgQmFzZUVuZHBvaW50T3ZlcnJpZGUpLmJhc2VFbmRwb2ludCAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc0FsbEVuZHBvaW50cyhcbiAgZW5kcG9pbnRPdmVycmlkZXM6IEVuZHBvaW50T3ZlcnJpZGVzXG4pOiBlbmRwb2ludE92ZXJyaWRlcyBpcyBBbGxFbmRwb2ludHMge1xuICBjb25zdCBhbGxFbmRwb2ludHMgPSBlbmRwb2ludE92ZXJyaWRlcyBhcyBBbGxFbmRwb2ludHM7XG4gIHJldHVybiAoXG4gICAgYWxsRW5kcG9pbnRzLmNhY2hlRW5kcG9pbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIGFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIGFsbEVuZHBvaW50cy50b2tlbkVuZHBvaW50ICE9PSB1bmRlZmluZWRcbiAgKTtcbn1cblxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgYXJndW1lbnRzIGZvciBpbnN0YW50aWF0aW5nIGFuIEVudk1vbWVudG9Ub2tlblByb3ZpZGVyXG4gKi9cbmludGVyZmFjZSBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIGVuZHBvaW50T3ZlcnJpZGVzPzogRW5kcG9pbnRPdmVycmlkZXM7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCB0aGUgQ2FjaGVDbGllbnQgbmVlZHMgaW4gb3JkZXIgdG8gZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhbmQgYXV0aGVudGljYXRlIHdpdGhcbiAqIHRoZSBNb21lbnRvIHNlcnZpY2UuXG4gKiBAZXhwb3J0XG4gKiBAaW50ZXJmYWNlIENyZWRlbnRpYWxQcm92aWRlclxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IEF1dGggdG9rZW4gcHJvdmlkZWQgYnkgdXNlciwgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIHNlcnZpY2VcbiAgICovXG4gIGFic3RyYWN0IGdldEF1dGhUb2tlbigpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gY29udHJvbCBwbGFuZSBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRDb250cm9sRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaXNFbmRwb2ludFNlY3VyZSgpIGluc3RlYWRcbiAgICovXG4gIGFic3RyYWN0IGlzQ29udHJvbEVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBob3N0IHdoaWNoIHRoZSBNb21lbnRvIGNsaWVudCB3aWxsIGNvbm5lY3QgdG8gZm9yIE1vbWVudG8gZGF0YSBwbGFuZSBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRDYWNoZUVuZHBvaW50KCk6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzRW5kcG9pbnRTZWN1cmUoKSBpbnN0ZWFkXG4gICAqL1xuICBhYnN0cmFjdCBpc0NhY2hlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGhvc3Qgd2hpY2ggdGhlIE1vbWVudG8gY2xpZW50IHdpbGwgY29ubmVjdCB0byBmb3IgTW9tZW50byB0b2tlbiBvcGVyYXRpb25zXG4gICAqL1xuICBhYnN0cmFjdCBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzRW5kcG9pbnRTZWN1cmUoKSBpbnN0ZWFkXG4gICAqL1xuICBhYnN0cmFjdCBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgdGhlIHN0YXRpYyBtZXRob2QgZm9yTW9tZW50b0xvY2FsIGluc3RlYWRcbiAgICpcbiAgICogTW9kaWZpZXMgdGhlIGluc3RhbmNlIG9mIHRoZSBjcmVkZW50aWFsIHByb3ZpZGVyIHRvIG92ZXJyaWRlIGVuZHBvaW50cyB0b1xuICAgKiBhbGxvdyBpbnNlY3VyZSBjb25uZWN0aW9ucyB0byB0aGUgbW9tZW50by1sb2NhbCBzZXJ2aWNlIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gICAqL1xuICBhYnN0cmFjdCB3aXRoTW9tZW50b0xvY2FsKCk6IENyZWRlbnRpYWxQcm92aWRlcjtcblxuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGVuZHBvaW50cyB3ZXJlIG1hbnVhbGx5IG92ZXJyaWRkZW4gYXQgY29uc3RydWN0aW9uIHRpbWU7IGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgYWJzdHJhY3QgYXJlRW5kcG9pbnRzT3ZlcnJpZGRlbigpOiBib29sZWFuO1xuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgY29ubmVjdGluZyB0byB0aGUgZW5kcG9pbnQgY29ubmVjdGlvbiB3aXRoIFRMUzsgZmFsc2UgaWYgbm90IHVzaW5nIFRMU1xuICAgKi9cbiAgYWJzdHJhY3QgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUVudlZhclYyKCkgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21FbnZpcm9ubWVudFZhcmlhYmxlKFxuICAgIHByb3BzOiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzIHwgc3RyaW5nXG4gICk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlcihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21FbnZWYXJWMigpIGluc3RlYWRcbiAgICovXG4gIHN0YXRpYyBmcm9tRW52VmFyKFxuICAgIHByb3BzOiBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzIHwgc3RyaW5nXG4gICk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlcihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21BcGlLZXlWMigpIG9yIGZyb21EaXNwb3NhYmxlVG9rZW4oKSBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZyhcbiAgICBwcm9wczogU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyB8IHN0cmluZ1xuICApOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXIocHJvcHMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21EaXNwb3NhYmxlVG9rZW4oXG4gICAgcHJvcHM6IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgfCBzdHJpbmdcbiAgKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyKHByb3BzKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRW52VmFyVjIoXG4gICAgcHJvcHM/OiBFbnZNb21lbnRvVjJUb2tlblByb3ZpZGVyUHJvcHNcbiAgKTogQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IEVudk1vbWVudG9WMlRva2VuUHJvdmlkZXIocHJvcHMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21BcGlLZXlWMihwcm9wczogQXBpS2V5VjJUb2tlblByb3ZpZGVyUHJvcHMpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgQXBpS2V5VjJUb2tlblByb3ZpZGVyKHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyBpbnNlY3VyZSBjb25uZWN0aW9ucyB0byBtb21lbnRvLWxvY2FsIHNlcnZpY2UgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqIERvZXMgbm90IHJlcXVpcmUgYSBNb21lbnRvIEFQSSBrZXkuXG4gICAqIEBwYXJhbSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGNvbm5lY3RpbmcgdG8gbW9tZW50by1sb2NhbFxuICAgKiBAcmV0dXJucyBDcmVkZW50aWFsUHJvdmlkZXJcbiAgICovXG4gIHN0YXRpYyBmb3JNb21lbnRvTG9jYWwocHJvcHM6IE1vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHMpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgTW9tZW50b0xvY2FsUHJvdmlkZXIocHJvcHMpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIENyZWRlbnRpYWxQcm92aWRlckJhc2UgaW1wbGVtZW50cyBDcmVkZW50aWFsUHJvdmlkZXIge1xuICBhYnN0cmFjdCBnZXRBdXRoVG9rZW4oKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGlzQ2FjaGVFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgaXNDb250cm9sRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZztcblxuICBhYnN0cmFjdCBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW47XG5cbiAgYWJzdHJhY3QgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IHdpdGhNb21lbnRvTG9jYWwoKTogQ3JlZGVudGlhbFByb3ZpZGVyO1xuXG4gIHZhbHVlT2YoKTogb2JqZWN0IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMpLmZpbHRlcigoW2tdKSA9PiBrICE9PSAnYXV0aFRva2VuJyk7XG4gICAgY29uc3QgY2xvbmUgPSBmcm9tRW50cmllcyhlbnRyaWVzKTtcbiAgICByZXR1cm4gY2xvbmUudmFsdWVPZigpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTW9tZW50b0FwaUtleVByb3ZpZGVyUHJvcHNcbiAgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBhcGlLZXkgdGhlIG1vbWVudG8gQVBJIGtleVxuICAgKi9cbiAgYXBpS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nTW9tZW50b0F1dGhUb2tlblByb3ZpZGVyUHJvcHNcbiAgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBhdXRoVG9rZW4gdGhlIG1vbWVudG8gYXV0aCB0b2tlblxuICAgKi9cbiAgYXV0aFRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgPVxuICB8IFN0cmluZ01vbWVudG9BcGlLZXlQcm92aWRlclByb3BzXG4gIHwgU3RyaW5nTW9tZW50b0F1dGhUb2tlblByb3ZpZGVyUHJvcHM7XG5cbmV4cG9ydCB0eXBlIEFwaUtleVYyVG9rZW5Qcm92aWRlclByb3BzID0gU3RyaW5nTW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyAmIHtcbiAgZW5kcG9pbnQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52TW9tZW50b1YyVG9rZW5Qcm92aWRlclByb3BzIHtcbiAgYXBpS2V5RW52VmFyPzogc3RyaW5nO1xuICBlbmRwb2ludEVudlZhcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgcGFyc2VzIGEgbW9tZW50byBhdXRoIHRva2VuIHN0b3JlZCBpbiBhIFN0cmluZ1xuICogQGV4cG9ydFxuICogQGNsYXNzIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyXG4gKiBAZGVwcmVjYXRlZCB1c2UgQXBpS2V5VjJUb2tlblByb3ZpZGVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNsYXNzIFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyIGV4dGVuZHMgQ3JlZGVudGlhbFByb3ZpZGVyQmFzZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsRW5kcG9pbnRzOiBBbGxFbmRwb2ludHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRzT3ZlcnJpZGRlbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIHtTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlclByb3BzfSBwcm9wcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0b2tlbiBwcm92aWRlclxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IFN0cmluZ01vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHMgfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHByb3BzID09PSAnc3RyaW5nJykge1xuICAgICAgcHJvcHMgPSB7YXBpS2V5OiBwcm9wc307XG4gICAgfVxuICAgIHN1cGVyKCk7XG4gICAgbGV0IGtleTogc3RyaW5nO1xuICAgIGlmICgnYXV0aFRva2VuJyBpbiBwcm9wcykge1xuICAgICAga2V5ID0gcHJvcHMuYXV0aFRva2VuO1xuICAgIH0gZWxzZSBpZiAoJ2FwaUtleScgaW4gcHJvcHMpIHtcbiAgICAgIGtleSA9IHByb3BzLmFwaUtleTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5OiBhdXRoVG9rZW4gb3IgYXBpS2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGRlY29kZUF1dGhUb2tlbihrZXkpO1xuICAgIHRoaXMuYXBpS2V5ID0gZGVjb2RlZFRva2VuLmF1dGhUb2tlbjtcbiAgICBpZiAocHJvcHMuZW5kcG9pbnRPdmVycmlkZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuID0gZmFsc2U7XG4gICAgICBpZiAoZGVjb2RlZFRva2VuLmNvbnRyb2xFbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnTWFsZm9ybWVkIHRva2VuOyB1bmFibGUgdG8gZGV0ZXJtaW5lIGNvbnRyb2wgZW5kcG9pbnQuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdG9rZW4geW91IGFyZSB1c2luZywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIGNvbnRyb2xFbmRwb2ludCBleHBsaWNpdGx5LidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWNvZGVkVG9rZW4uY2FjaGVFbmRwb2ludCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnTWFsZm9ybWVkIHRva2VuOyB1bmFibGUgdG8gZGV0ZXJtaW5lIGNhY2hlIGVuZHBvaW50LiAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRva2VuIHlvdSBhcmUgdXNpbmcsIHlvdSBtYXkgbmVlZCB0byBzcGVjaWZ5IHRoZSBjYWNoZUVuZHBvaW50IGV4cGxpY2l0bHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGRlY29kZWRUb2tlbi50b2tlbkVuZHBvaW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdNYWxmb3JtZWQgdG9rZW47IHVuYWJsZSB0byBkZXRlcm1pbmUgdG9rZW4gZW5kcG9pbnQuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdG9rZW4geW91IGFyZSB1c2luZywgeW91IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIHRva2VuRW5kcG9pbnQgZXhwbGljaXRseS4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWxsRW5kcG9pbnRzID0ge1xuICAgICAgICBjb250cm9sRW5kcG9pbnQ6IGRlY29kZWRUb2tlbi5jb250cm9sRW5kcG9pbnQsXG4gICAgICAgIGNhY2hlRW5kcG9pbnQ6IGRlY29kZWRUb2tlbi5jYWNoZUVuZHBvaW50LFxuICAgICAgICB0b2tlbkVuZHBvaW50OiBkZWNvZGVkVG9rZW4udG9rZW5FbmRwb2ludCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChpc0FsbEVuZHBvaW50cyhwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzO1xuICAgIH0gZWxzZSBpZiAoaXNCYXNlRW5kcG9pbnRPdmVycmlkZShwcm9wcy5lbmRwb2ludE92ZXJyaWRlcykpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHBvcHVsYXRlQWxsRW5kcG9pbnRzRnJvbUJhc2VFbmRwb2ludChcbiAgICAgICAgcHJvcHMuZW5kcG9pbnRPdmVycmlkZXNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICBgVW5zdXBwb3J0ZWQgZW5kcG9pbnRPdmVycmlkZXM6ICR7cHJvcHMuZW5kcG9pbnRPdmVycmlkZXN9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRBdXRoVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hcGlLZXk7XG4gIH1cblxuICBnZXRDYWNoZUVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNhY2hlRW5kcG9pbnQ7XG4gIH1cbiAgaXNDYWNoZUVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQ7XG4gIH1cblxuICBpc0NvbnRyb2xFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnRva2VuRW5kcG9pbnQ7XG4gIH1cblxuICBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgaXNTdG9yYWdlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgYXJlRW5kcG9pbnRzT3ZlcnJpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuO1xuICB9XG5cbiAgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hbGxFbmRwb2ludHMuc2VjdXJlQ29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnNlY3VyZUNvbm5lY3Rpb247XG4gIH1cblxuICB3aXRoTW9tZW50b0xvY2FsKCk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBNb21lbnRvTG9jYWxQcm92aWRlcigpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyBleHRlbmRzIENyZWRlbnRpYWxQcm92aWRlclByb3BzIHtcbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmcm9tIHdoaWNoIHRoZSBhdXRoIHRva2VuIHdpbGwgYmUgcmVhZFxuICAgKi9cbiAgZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgcGFyc2VzIGEgbW9tZW50byBhdXRoIHRva2VuIHN0b3JlZCBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBFbnZNb21lbnRvVG9rZW5Qcm92aWRlclxuICogQGRlcHJlY2F0ZWQgdXNlIEVudk1vbWVudG9WMlRva2VuUHJvdmlkZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY2xhc3MgRW52TW9tZW50b1Rva2VuUHJvdmlkZXIgZXh0ZW5kcyBTdHJpbmdNb21lbnRvVG9rZW5Qcm92aWRlciB7XG4gIGVudmlyb25tZW50VmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vudk1vbWVudG9Ub2tlblByb3ZpZGVyUHJvcHN9IHByb3BzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRva2VuIHByb3ZpZGVyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogRW52TW9tZW50b1Rva2VuUHJvdmlkZXJQcm9wcyB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgcHJvcHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwcm9wcyA9IHtlbnZpcm9ubWVudFZhcmlhYmxlTmFtZTogcHJvcHN9O1xuICAgIH1cbiAgICBjb25zdCBhdXRoVG9rZW4gPSBwcm9jZXNzLmVudltwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlTmFtZV07XG4gICAgaWYgKCFhdXRoVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgJHtwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIH1cbiAgICBzdXBlcih7XG4gICAgICBhdXRoVG9rZW46IGF1dGhUb2tlbixcbiAgICAgIGVuZHBvaW50T3ZlcnJpZGVzOiBwcm9wcy5lbmRwb2ludE92ZXJyaWRlcyxcbiAgICB9KTtcbiAgICB0aGlzLmVudmlyb25tZW50VmFyaWFibGVOYW1lID0gcHJvcHMuZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgZGVmYXVsdCBjcmVkZW50aWFsIHByb3ZpZGVyIGJhc2VkIG9uIHdoaWNoIGtleSB3YXMgcHJvdmlkZWQgKHYyIG9yIGxlZ2FjeSkuXG4gKiBAZXhwb3J0XG4gKiBAcmV0dXJucyB7Q3JlZGVudGlhbFByb3ZpZGVyfSB0aGUgZGVmYXVsdCBjcmVkZW50aWFsIHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0Q3JlZGVudGlhbFByb3ZpZGVyKCk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIENyZWRlbnRpYWxQcm92aWRlci5mcm9tRW52VmFyVjIoKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbFxuICAgIHJldHVybiBDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUVudlZhcignTU9NRU5UT19BUElfS0VZJyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb21lbnRvTG9jYWxQcm92aWRlclByb3BzIGV4dGVuZHMgQ3JlZGVudGlhbFByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIGhvc3RuYW1lIG9mIHRoZSBtb21lbnRvLWxvY2FsIHNlcnZpY2VcbiAgICovXG4gIGhvc3RuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBvcnQgb2YgdGhlIG1vbWVudG8tbG9jYWwgc2VydmljZVxuICAgKi9cbiAgcG9ydD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIE1vbWVudG9Mb2NhbFByb3ZpZGVyIGltcGxlbWVudHMgQ3JlZGVudGlhbFByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxFbmRwb2ludHM6IEFsbEVuZHBvaW50cztcbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludHNPdmVycmlkZGVuOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge01vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHN9IHByb3BzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgY29ubmVjdGluZyB0byBtb21lbnRvLWxvY2FsXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IE1vbWVudG9Mb2NhbFByb3ZpZGVyUHJvcHMpIHtcbiAgICBjb25zdCBob3N0bmFtZSA9IHByb3BzPy5ob3N0bmFtZSB8fCAnMTI3LjAuMC4xJztcbiAgICBjb25zdCBwb3J0ID0gcHJvcHM/LnBvcnQgfHwgODA4MDtcbiAgICBjb25zdCBtb21lbnRvTG9jYWxFbmRwb2ludCA9IGAke2hvc3RuYW1lfToke3BvcnR9YDtcblxuICAgIGlmIChwcm9wcyA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZW5kcG9pbnRzT3ZlcnJpZGRlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5hbGxFbmRwb2ludHMgPSB7XG4gICAgICAgIGNvbnRyb2xFbmRwb2ludDogbW9tZW50b0xvY2FsRW5kcG9pbnQsXG4gICAgICAgIGNhY2hlRW5kcG9pbnQ6IG1vbWVudG9Mb2NhbEVuZHBvaW50LFxuICAgICAgICB0b2tlbkVuZHBvaW50OiBtb21lbnRvTG9jYWxFbmRwb2ludCxcbiAgICAgICAgc2VjdXJlQ29ubmVjdGlvbjogZmFsc2UsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNBbGxFbmRwb2ludHMocHJvcHMuZW5kcG9pbnRPdmVycmlkZXMpKSB7XG4gICAgICB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW4gPSB0cnVlO1xuICAgICAgdGhpcy5hbGxFbmRwb2ludHMgPSBwcm9wcy5lbmRwb2ludE92ZXJyaWRlcztcbiAgICB9IGVsc2UgaWYgKGlzQmFzZUVuZHBvaW50T3ZlcnJpZGUocHJvcHMuZW5kcG9pbnRPdmVycmlkZXMpKSB7XG4gICAgICB0aGlzLmVuZHBvaW50c092ZXJyaWRkZW4gPSB0cnVlO1xuICAgICAgdGhpcy5hbGxFbmRwb2ludHMgPSBwb3B1bGF0ZUFsbEVuZHBvaW50c0Zyb21CYXNlRW5kcG9pbnQoXG4gICAgICAgIHByb3BzLmVuZHBvaW50T3ZlcnJpZGVzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgYFVuc3VwcG9ydGVkIGVuZHBvaW50T3ZlcnJpZGVzOiAke3Byb3BzLmVuZHBvaW50T3ZlcnJpZGVzfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXV0aFRva2VuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0Q2FjaGVFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5jYWNoZUVuZHBvaW50O1xuICB9XG5cbiAgaXNDYWNoZUVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldENvbnRyb2xFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5jb250cm9sRW5kcG9pbnQ7XG4gIH1cblxuICBpc0NvbnRyb2xFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBnZXRUb2tlbkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnRva2VuRW5kcG9pbnQ7XG4gIH1cblxuICBpc1Rva2VuRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgYXJlRW5kcG9pbnRzT3ZlcnJpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmRwb2ludHNPdmVycmlkZGVuO1xuICB9XG5cbiAgaXNFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hbGxFbmRwb2ludHMuc2VjdXJlQ29ubmVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLnNlY3VyZUNvbm5lY3Rpb247XG4gIH1cblxuICB3aXRoTW9tZW50b0xvY2FsKCk6IENyZWRlbnRpYWxQcm92aWRlciB7XG4gICAgcmV0dXJuIG5ldyBNb21lbnRvTG9jYWxQcm92aWRlcigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlLZXlWMlRva2VuUHJvdmlkZXIgZXh0ZW5kcyBDcmVkZW50aWFsUHJvdmlkZXJCYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxFbmRwb2ludHM6IEFsbEVuZHBvaW50cztcblxuICAvKipcbiAgICogQHBhcmFtIHtBcGlLZXlWMlRva2VuUHJvdmlkZXJQcm9wc30gcHJvcHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgdG9rZW4gcHJvdmlkZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBBcGlLZXlWMlRva2VuUHJvdmlkZXJQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gICAgbGV0IGtleTogc3RyaW5nO1xuICAgIGlmICgnYXV0aFRva2VuJyBpbiBwcm9wcykge1xuICAgICAga2V5ID0gcHJvcHMuYXV0aFRva2VuO1xuICAgIH0gZWxzZSBpZiAoJ2FwaUtleScgaW4gcHJvcHMpIHtcbiAgICAgIGtleSA9IHByb3BzLmFwaUtleTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5OiBhdXRoVG9rZW4gb3IgYXBpS2V5Jyk7XG4gICAgfVxuICAgIGlmICgha2V5Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBUEkga2V5IGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgaWYgKCFpc1YyQXBpS2V5KGtleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1JlY2VpdmVkIGFuIGludmFsaWQgdjIgQVBJIGtleS4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBrZXk/IE9yIGRpZCB5b3UgbWVhbiB0byB1c2UgYGZyb21TdHJpbmcoKWAgd2l0aCBhIGxlZ2FjeSBrZXkgaW5zdGVhZD8nXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBlbmRwb2ludDogc3RyaW5nO1xuICAgIGlmICgnZW5kcG9pbnQnIGluIHByb3BzKSB7XG4gICAgICBlbmRwb2ludCA9IHByb3BzLmVuZHBvaW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHk6IGVuZHBvaW50Jyk7XG4gICAgfVxuICAgIGlmICghZW5kcG9pbnQubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuZHBvaW50IGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFwaUtleSA9IGtleTtcbiAgICB0aGlzLmFsbEVuZHBvaW50cyA9IHtcbiAgICAgIGNvbnRyb2xFbmRwb2ludDogJ2NvbnRyb2wuJyArIGVuZHBvaW50LFxuICAgICAgY2FjaGVFbmRwb2ludDogJ2NhY2hlLicgKyBlbmRwb2ludCxcbiAgICAgIHRva2VuRW5kcG9pbnQ6ICd0b2tlbi4nICsgZW5kcG9pbnQsXG4gICAgfTtcbiAgfVxuXG4gIGdldEF1dGhUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFwaUtleTtcbiAgfVxuXG4gIGdldENhY2hlRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMuY2FjaGVFbmRwb2ludDtcbiAgfVxuICBpc0NhY2hlRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmRwb2ludFNlY3VyZSgpO1xuICB9XG5cbiAgZ2V0Q29udHJvbEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW5kcG9pbnRzLmNvbnRyb2xFbmRwb2ludDtcbiAgfVxuXG4gIGlzQ29udHJvbEVuZHBvaW50U2VjdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRW5kcG9pbnRTZWN1cmUoKTtcbiAgfVxuXG4gIGdldFRva2VuRW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFbmRwb2ludHMudG9rZW5FbmRwb2ludDtcbiAgfVxuXG4gIGlzVG9rZW5FbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBpc1N0b3JhZ2VFbmRwb2ludFNlY3VyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuZHBvaW50U2VjdXJlKCk7XG4gIH1cblxuICBhcmVFbmRwb2ludHNPdmVycmlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzRW5kcG9pbnRTZWN1cmUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuYWxsRW5kcG9pbnRzLnNlY3VyZUNvbm5lY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFsbEVuZHBvaW50cy5zZWN1cmVDb25uZWN0aW9uO1xuICB9XG5cbiAgd2l0aE1vbWVudG9Mb2NhbCgpOiBDcmVkZW50aWFsUHJvdmlkZXIge1xuICAgIHJldHVybiBuZXcgTW9tZW50b0xvY2FsUHJvdmlkZXIoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW52TW9tZW50b1YyVG9rZW5Qcm92aWRlciBleHRlbmRzIEFwaUtleVYyVG9rZW5Qcm92aWRlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vudk1vbWVudG9WMlRva2VuUHJvdmlkZXJQcm9wc30gcHJvcHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgdG9rZW4gcHJvdmlkZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzPzogRW52TW9tZW50b1YyVG9rZW5Qcm92aWRlclByb3BzKSB7XG4gICAgY29uc3QgYXBpS2V5RW52VmFyID0gcHJvcHM/LmFwaUtleUVudlZhciB8fCAnTU9NRU5UT19BUElfS0VZJztcbiAgICBjb25zdCBlbmRwb2ludEVudlZhciA9IHByb3BzPy5lbmRwb2ludEVudlZhciB8fCAnTU9NRU5UT19FTkRQT0lOVCc7XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IHByb2Nlc3MuZW52W2VuZHBvaW50RW52VmFyXTtcbiAgICBpZiAoIWVuZHBvaW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVtcHR5IHZhbHVlIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZSAke2VuZHBvaW50RW52VmFyfWApO1xuICAgIH1cbiAgICBpZiAoIWVuZHBvaW50Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRW5kcG9pbnQgZW52aXJvbm1lbnQgdmFyaWFibGUgJHtlbmRwb2ludEVudlZhcn0gY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZ2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0aFRva2VuID0gcHJvY2Vzcy5lbnZbYXBpS2V5RW52VmFyXTtcbiAgICBpZiAoIWF1dGhUb2tlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbXB0eSB2YWx1ZSBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgJHthcGlLZXlFbnZWYXJ9YCk7XG4gICAgfVxuICAgIGlmICghYXV0aFRva2VuLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQVBJIGtleSBlbnZpcm9ubWVudCB2YXJpYWJsZSAke2FwaUtleUVudlZhcn0gY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZ2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1YyQXBpS2V5KGF1dGhUb2tlbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1JlY2VpdmVkIGFuIGludmFsaWQgdjIgQVBJIGtleS4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBrZXk/IE9yIGRpZCB5b3UgbWVhbiB0byB1c2UgYGZyb21FbnZpcm9ubWVudFZhcmlhYmxlKClgIHdpdGggYSBsZWdhY3kga2V5IGluc3RlYWQ/J1xuICAgICAgKTtcbiAgICB9XG4gICAgc3VwZXIoe1xuICAgICAgYXV0aFRva2VuOiBhdXRoVG9rZW4sXG4gICAgICBlbmRwb2ludDogZW5kcG9pbnQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -165,10 +165,6 @@ function validateDisposableTokenExpiry(expiresIn) {
165
165
  if (expiresIn.seconds() < 0) {
166
166
  throw new errors_1.InvalidArgumentError('disposable token expiry must be positive');
167
167
  }
168
- if (expiresIn.seconds() > 60 * 60) {
169
- // 60 seconds * 60 minutes
170
- throw new errors_1.InvalidArgumentError('disposable tokens must expire within 1 hour');
171
- }
172
168
  }
173
169
  exports.validateDisposableTokenExpiry = validateDisposableTokenExpiry;
174
170
  function validateDisposableTokenTokenID(tokenId) {
@@ -243,4 +239,4 @@ function validateSortedSetSources(sources) {
243
239
  }
244
240
  }
245
241
  exports.validateSortedSetSources = validateSortedSetSources;
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFrRDtBQUVsRCxxQ0FBMEQ7QUFFMUQsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqQixNQUFNLElBQUksNkJBQW9CLENBQUMsOEJBQThCLENBQUMsQ0FBQztLQUNoRTtBQUNILENBQUM7QUFKRCw4Q0FJQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDNUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLDhCQUE4QixDQUFDLENBQUM7S0FDaEU7QUFDSCxDQUFDO0FBSkQsOENBSUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxJQUFZO0lBQ25ELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2pCLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0tBQzdFO0FBQ0gsQ0FBQztBQUpELDREQUlDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLElBQVk7SUFDMUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLDRCQUE0QixDQUFDLENBQUM7S0FDOUQ7QUFDSCxDQUFDO0FBSkQsMENBSUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxLQUFhO0lBQ2xELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNiLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0tBQ3JFO0FBQ0gsQ0FBQztBQUpELHdEQUlDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsS0FBYTtJQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7UUFDYixN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QUFDLEVBQUU7UUFDYixNQUFNLElBQUksNkJBQW9CLENBQzVCLDJEQUEyRCxDQUM1RCxDQUFDO0tBQ0g7QUFDSCxDQUFDO0FBTkQsc0VBTUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxPQUEwQjtJQUNqRSxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1osTUFBTSxJQUFJLDZCQUFvQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7S0FDcEU7SUFDRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtRQUM1QixNQUFNLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUV2QyxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuRSxNQUFNLElBQUksNkJBQW9CLENBQzVCLDBDQUEwQyxDQUMzQyxDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QixNQUFNLElBQUksNkJBQW9CLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNsRTtLQUNGO0FBQ0gsQ0FBQztBQWpCRCw0REFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ludmFsaWRBcmd1bWVudEVycm9yfSBmcm9tICcuLi8uLi9lcnJvcnMnO1xuaW1wb3J0IHtFeHBpcmVzSW4sIFNvcnRlZFNldFNvdXJjZX0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtkZWNvZGVGcm9tQmFzZTY0LCBlbmNvZGVUb0Jhc2U2NH0gZnJvbSAnLi9zdHJpbmcnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdG9yZU5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc0VtcHR5KG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdzdG9yZSBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ2FjaGVOYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignY2FjaGUgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNhY2hlS2V5T3JQcmVmaXgobmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc0VtcHR5KG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdjYWNoZSBrZXkgb3Iga2V5IHByZWZpeCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNldE5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc0VtcHR5KG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdzZXQgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNldFNhbXBsZUxpbWl0KGxpbWl0OiBudW1iZXIpIHtcbiAgaWYgKGxpbWl0IDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbGltaXQgbXVzdCBiZSBub24tbmVnYXRpdmUgKD49IDApJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2V0UG9wQ291bnQoY291bnQ6IG51bWJlcikge1xuICBpZiAoY291bnQgPCAxKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdjb3VudCBtdXN0IGJlIHBvc2l0aXZlICg+IDApJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU29ydGVkU2V0TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3NvcnRlZCBzZXQgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvcnRlZFNldFJhbmtzKHN0YXJ0X3Jhbms6IG51bWJlciwgZW5kX3Jhbms/OiBudW1iZXIpIHtcbiAgaWYgKGVuZF9yYW5rID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHN0YXJ0X3JhbmsgPiAwICYmIGVuZF9yYW5rID4gMCAmJiBzdGFydF9yYW5rID4gZW5kX3JhbmspIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3N0YXJ0IHJhbmsgbXVzdCBiZSBsZXNzIHRoYW4gZW5kIHJhbmsnKTtcbiAgfVxuICBpZiAoc3RhcnRfcmFuayA8IDAgJiYgZW5kX3JhbmsgPCAwICYmIHN0YXJ0X3JhbmsgPj0gZW5kX3JhbmspIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnbmVnYXRpdmUgc3RhcnQgcmFuayBtdXN0IGJlIGxlc3MgdGhhbiBuZWdhdGl2ZSBlbmQgcmFuaydcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvcnRlZFNldFNjb3JlcyhtaW5TY29yZT86IG51bWJlciwgbWF4U2NvcmU/OiBudW1iZXIpIHtcbiAgaWYgKG1pblNjb3JlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgaWYgKG1heFNjb3JlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgaWYgKG1pblNjb3JlID4gbWF4U2NvcmUpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnbWluU2NvcmUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4U2NvcmUnXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0ZWRTZXRPZmZzZXQob2Zmc2V0OiBudW1iZXIpIHtcbiAgaWYgKG9mZnNldCA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ29mZnNldCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSAoPj0gMCknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0ZWRTZXRDb3VudChjb3VudDogbnVtYmVyKSB7XG4gIGlmIChjb3VudCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2NvdW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmUgKD4gMCknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVEaWN0aW9uYXJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2RpY3Rpb25hcnkgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxpc3ROYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbGlzdCBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGlzdFNsaWNlU3RhcnRFbmQoXG4gIHN0YXJ0SW5kZXg/OiBudW1iZXIsXG4gIGVuZEluZGV4PzogbnVtYmVyXG4pIHtcbiAgaWYgKHN0YXJ0SW5kZXggPT09IHVuZGVmaW5lZCB8fCBlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIC8vIGNhbid0IHZhbGlkYXRlIGJvdW5kcyBmb3Igc3RhcnQgYW5kIGluZGV4IG9mIGVpdGhlciBvciBhcmUgbmVnYXRpdmUgd2l0aG91dCBsaXN0IGxlbmd0aFxuICBpZiAoc3RhcnRJbmRleCA+IDAgfHwgZW5kSW5kZXggPCAwKSByZXR1cm47XG4gIGlmIChlbmRJbmRleCA8PSBzdGFydEluZGV4KSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgJ2VuZEluZGV4IChleGNsdXNpdmUpIG11c3QgYmUgbGFyZ2VyIHRoYW4gc3RhcnRJbmRleCAoaW5jbHVzaXZlKSdcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRvcGljTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3RvcGljIG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVXZWJob29rTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3dlYmhvb2sgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUluZGV4TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2luZGV4IG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVOdW1EaW1lbnNpb25zKG51bURpbWVuc2lvbnM6IG51bWJlcikge1xuICBpZiAobnVtRGltZW5zaW9ucyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdudW1EaW1lbnNpb25zIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUb3BLKHRvcEs6IG51bWJlcikge1xuICBpZiAodG9wSyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd0b3BLIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUdGxNaW51dGVzKHR0bE1pbnV0ZXM6IG51bWJlcikge1xuICBpZiAodHRsTWludXRlcyA8IDAgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHR0bE1pbnV0ZXMpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd0dGxNaW51dGVzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gIH1cbn1cblxuLy8gQ3VycmVudGx5IGFjY2VwdGluZyB0dGwgaW4gc2Vjb25kcywgYnV0IGlmIHNvbWVvbmUgcmVxdWVzdHMgc3VwcG9ydCBmb3IgbWlsbGlzLFxuLy8gdGhlIHZhbGlkYXRvciB3aWxsIG5lZWQgdG8gY2hlY2sgZm9yIE51bWJlci5pc1NhZmVJbnRlZ2VyKHR0bCAqIDEwMDApLlxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVHRsU2Vjb25kcyh0dGw6IG51bWJlcikge1xuICBpZiAodHRsIDwgMCB8fCAhTnVtYmVyLmlzU2FmZUludGVnZXIodHRsKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGB0dGwgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIHJlY2VpdmVkICR7dHRsfWBcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVZhbGlkRm9yU2Vjb25kcyh2YWxpZEZvclNlY29uZHM6IG51bWJlcikge1xuICBpZiAodmFsaWRGb3JTZWNvbmRzIDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndmFsaWRGb3JTZWNvbmRzIG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUaW1lb3V0KHRpbWVvdXQ6IG51bWJlcikge1xuICBpZiAodGltZW91dCA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3RpbWVvdXQgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURpc3Bvc2FibGVUb2tlbkV4cGlyeShleHBpcmVzSW46IEV4cGlyZXNJbikge1xuICBpZiAoIWV4cGlyZXNJbi5kb2VzRXhwaXJlKCkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2Rpc3Bvc2FibGUgdG9rZW5zIG11c3QgaGF2ZSBhbiBleHBpcnknKTtcbiAgfVxuICBpZiAoZXhwaXJlc0luLnNlY29uZHMoKSA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2Rpc3Bvc2FibGUgdG9rZW4gZXhwaXJ5IG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgfVxuICBpZiAoZXhwaXJlc0luLnNlY29uZHMoKSA+IDYwICogNjApIHtcbiAgICAvLyA2MCBzZWNvbmRzICogNjAgbWludXRlc1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICdkaXNwb3NhYmxlIHRva2VucyBtdXN0IGV4cGlyZSB3aXRoaW4gMSBob3VyJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRGlzcG9zYWJsZVRva2VuVG9rZW5JRCh0b2tlbklkOiBzdHJpbmcpIHtcbiAgaWYgKHRva2VuSWQubGVuZ3RoID4gNjQpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnVG9rZW5JRCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byA2NCBjaGFyYWN0ZXJzLidcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHkoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICFzdHIudHJpbSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCYXNlNjQoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW5jb2RlVG9CYXNlNjQoZGVjb2RlRnJvbUJhc2U2NChzdHIpKSA9PT0gc3RyO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxlYWRlcmJvYXJkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2xlYWRlcmJvYXJkIG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMZWFkZXJib2FyZFJhbmtzKHN0YXJ0X3Jhbms6IG51bWJlciwgZW5kX3Jhbms6IG51bWJlcikge1xuICBpZiAoc3RhcnRfcmFuayA+IDAgJiYgZW5kX3JhbmsgPiAwICYmIHN0YXJ0X3JhbmsgPj0gZW5kX3JhbmspIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3N0YXJ0IHJhbmsgbXVzdCBiZSBsZXNzIHRoYW4gZW5kIHJhbmsnKTtcbiAgfVxuICBpZiAoc3RhcnRfcmFuayA8IDAgfHwgZW5kX3JhbmsgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdyYW5rcyBtdXN0IGJlIHBvc2l0aXZlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGVhZGVyYm9hcmRPZmZzZXQob2Zmc2V0OiBudW1iZXIpIHtcbiAgaWYgKG9mZnNldCA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ29mZnNldCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSAoPj0gMCknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMZWFkZXJib2FyZENvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgaWYgKGNvdW50IDwgMSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignY291bnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZSAoPiAwKScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxlYWRlcmJvYXJkTnVtYmVyT2ZFbGVtZW50cyhudW1FbGVtZW50czogbnVtYmVyKSB7XG4gIGlmIChudW1FbGVtZW50cyA8IDEpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ211c3QgcHJvdmlkZSBhdCBsZWFzdCBvbmUgZWxlbWVudCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU1heENvbmN1cnJlbnRSZXF1ZXN0cyhsaW1pdDogbnVtYmVyKSB7XG4gIGlmIChsaW1pdCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnY29uY3VycmVudCByZXF1ZXN0cyBsaW1pdCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlICg+IDApJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU29ydGVkU2V0U291cmNlcyhzb3VyY2VzOiBTb3J0ZWRTZXRTb3VyY2VbXSkge1xuICBpZiAoIXNvdXJjZXMpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ0F0IGxlYXN0IG9uZSBzb3VyY2VzIGlzIHJlcXVpcmVkJyk7XG4gIH1cbiAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgIGNvbnN0IHtzb3J0ZWRTZXROYW1lLCB3ZWlnaHR9ID0gc291cmNlO1xuXG4gICAgaWYgKHR5cGVvZiBzb3J0ZWRTZXROYW1lICE9PSAnc3RyaW5nJyB8fCBzb3J0ZWRTZXROYW1lLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICAnc29ydGVkU2V0TmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUod2VpZ2h0KSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd3ZWlnaHQgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXInKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFrRDtBQUVsRCxxQ0FBMEQ7QUFFMUQsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqQixNQUFNLElBQUksNkJBQW9CLENBQUMsOEJBQThCLENBQUMsQ0FBQztLQUNoRTtBQUNILENBQUM7QUFKRCw4Q0FJQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDNUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLDhCQUE4QixDQUFDLENBQUM7S0FDaEU7QUFDSCxDQUFDO0FBSkQsOENBSUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxJQUFZO0lBQ25ELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2pCLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0tBQzdFO0FBQ0gsQ0FBQztBQUpELDREQUlDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLElBQVk7SUFDMUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLDRCQUE0QixDQUFDLENBQUM7S0FDOUQ7QUFDSCxDQUFDO0FBSkQsMENBSUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxLQUFhO0lBQ2xELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNiLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0tBQ3JFO0FBQ0gsQ0FBQztBQUpELHdEQUlDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsS0FBYTtJQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7UUFDYixN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LENBQUMsT0FBTyxFQUFFO1FBQ1osTUFBTSxJQUFJLDZCQUFvQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7S0FDcEU7SUFDRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtRQUM1QixNQUFNLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUV2QyxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuRSxNQUFNLElBQUksNkJBQW9CLENBQzVCLDBDQUEwQyxDQUMzQyxDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QixNQUFNLElBQUksNkJBQW9CLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNsRTtLQUNGO0FBQ0gsQ0FBQztBQWpCRCw0REFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ludmFsaWRBcmd1bWVudEVycm9yfSBmcm9tICcuLi8uLi9lcnJvcnMnO1xuaW1wb3J0IHtFeHBpcmVzSW4sIFNvcnRlZFNldFNvdXJjZX0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtkZWNvZGVGcm9tQmFzZTY0LCBlbmNvZGVUb0Jhc2U2NH0gZnJvbSAnLi9zdHJpbmcnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdG9yZU5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc0VtcHR5KG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdzdG9yZSBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ2FjaGVOYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignY2FjaGUgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNhY2hlS2V5T3JQcmVmaXgobmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc0VtcHR5KG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdjYWNoZSBrZXkgb3Iga2V5IHByZWZpeCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNldE5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc0VtcHR5KG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdzZXQgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNldFNhbXBsZUxpbWl0KGxpbWl0OiBudW1iZXIpIHtcbiAgaWYgKGxpbWl0IDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbGltaXQgbXVzdCBiZSBub24tbmVnYXRpdmUgKD49IDApJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2V0UG9wQ291bnQoY291bnQ6IG51bWJlcikge1xuICBpZiAoY291bnQgPCAxKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdjb3VudCBtdXN0IGJlIHBvc2l0aXZlICg+IDApJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU29ydGVkU2V0TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3NvcnRlZCBzZXQgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvcnRlZFNldFJhbmtzKHN0YXJ0X3Jhbms6IG51bWJlciwgZW5kX3Jhbms/OiBudW1iZXIpIHtcbiAgaWYgKGVuZF9yYW5rID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHN0YXJ0X3JhbmsgPiAwICYmIGVuZF9yYW5rID4gMCAmJiBzdGFydF9yYW5rID4gZW5kX3JhbmspIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3N0YXJ0IHJhbmsgbXVzdCBiZSBsZXNzIHRoYW4gZW5kIHJhbmsnKTtcbiAgfVxuICBpZiAoc3RhcnRfcmFuayA8IDAgJiYgZW5kX3JhbmsgPCAwICYmIHN0YXJ0X3JhbmsgPj0gZW5kX3JhbmspIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnbmVnYXRpdmUgc3RhcnQgcmFuayBtdXN0IGJlIGxlc3MgdGhhbiBuZWdhdGl2ZSBlbmQgcmFuaydcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvcnRlZFNldFNjb3JlcyhtaW5TY29yZT86IG51bWJlciwgbWF4U2NvcmU/OiBudW1iZXIpIHtcbiAgaWYgKG1pblNjb3JlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgaWYgKG1heFNjb3JlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgaWYgKG1pblNjb3JlID4gbWF4U2NvcmUpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnbWluU2NvcmUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4U2NvcmUnXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0ZWRTZXRPZmZzZXQob2Zmc2V0OiBudW1iZXIpIHtcbiAgaWYgKG9mZnNldCA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ29mZnNldCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSAoPj0gMCknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0ZWRTZXRDb3VudChjb3VudDogbnVtYmVyKSB7XG4gIGlmIChjb3VudCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2NvdW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmUgKD4gMCknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVEaWN0aW9uYXJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2RpY3Rpb25hcnkgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxpc3ROYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbGlzdCBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGlzdFNsaWNlU3RhcnRFbmQoXG4gIHN0YXJ0SW5kZXg/OiBudW1iZXIsXG4gIGVuZEluZGV4PzogbnVtYmVyXG4pIHtcbiAgaWYgKHN0YXJ0SW5kZXggPT09IHVuZGVmaW5lZCB8fCBlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIC8vIGNhbid0IHZhbGlkYXRlIGJvdW5kcyBmb3Igc3RhcnQgYW5kIGluZGV4IG9mIGVpdGhlciBvciBhcmUgbmVnYXRpdmUgd2l0aG91dCBsaXN0IGxlbmd0aFxuICBpZiAoc3RhcnRJbmRleCA+IDAgfHwgZW5kSW5kZXggPCAwKSByZXR1cm47XG4gIGlmIChlbmRJbmRleCA8PSBzdGFydEluZGV4KSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgJ2VuZEluZGV4IChleGNsdXNpdmUpIG11c3QgYmUgbGFyZ2VyIHRoYW4gc3RhcnRJbmRleCAoaW5jbHVzaXZlKSdcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRvcGljTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3RvcGljIG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVXZWJob29rTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3dlYmhvb2sgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUluZGV4TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2luZGV4IG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVOdW1EaW1lbnNpb25zKG51bURpbWVuc2lvbnM6IG51bWJlcikge1xuICBpZiAobnVtRGltZW5zaW9ucyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdudW1EaW1lbnNpb25zIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUb3BLKHRvcEs6IG51bWJlcikge1xuICBpZiAodG9wSyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd0b3BLIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUdGxNaW51dGVzKHR0bE1pbnV0ZXM6IG51bWJlcikge1xuICBpZiAodHRsTWludXRlcyA8IDAgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHR0bE1pbnV0ZXMpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd0dGxNaW51dGVzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gIH1cbn1cblxuLy8gQ3VycmVudGx5IGFjY2VwdGluZyB0dGwgaW4gc2Vjb25kcywgYnV0IGlmIHNvbWVvbmUgcmVxdWVzdHMgc3VwcG9ydCBmb3IgbWlsbGlzLFxuLy8gdGhlIHZhbGlkYXRvciB3aWxsIG5lZWQgdG8gY2hlY2sgZm9yIE51bWJlci5pc1NhZmVJbnRlZ2VyKHR0bCAqIDEwMDApLlxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVHRsU2Vjb25kcyh0dGw6IG51bWJlcikge1xuICBpZiAodHRsIDwgMCB8fCAhTnVtYmVyLmlzU2FmZUludGVnZXIodHRsKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGB0dGwgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIHJlY2VpdmVkICR7dHRsfWBcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVZhbGlkRm9yU2Vjb25kcyh2YWxpZEZvclNlY29uZHM6IG51bWJlcikge1xuICBpZiAodmFsaWRGb3JTZWNvbmRzIDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndmFsaWRGb3JTZWNvbmRzIG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUaW1lb3V0KHRpbWVvdXQ6IG51bWJlcikge1xuICBpZiAodGltZW91dCA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3RpbWVvdXQgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURpc3Bvc2FibGVUb2tlbkV4cGlyeShleHBpcmVzSW46IEV4cGlyZXNJbikge1xuICBpZiAoIWV4cGlyZXNJbi5kb2VzRXhwaXJlKCkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2Rpc3Bvc2FibGUgdG9rZW5zIG11c3QgaGF2ZSBhbiBleHBpcnknKTtcbiAgfVxuICBpZiAoZXhwaXJlc0luLnNlY29uZHMoKSA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2Rpc3Bvc2FibGUgdG9rZW4gZXhwaXJ5IG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVEaXNwb3NhYmxlVG9rZW5Ub2tlbklEKHRva2VuSWQ6IHN0cmluZykge1xuICBpZiAodG9rZW5JZC5sZW5ndGggPiA2NCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICdUb2tlbklEIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDY0IGNoYXJhY3RlcnMuJ1xuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNFbXB0eShzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gIXN0ci50cmltKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2U2NChzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBlbmNvZGVUb0Jhc2U2NChkZWNvZGVGcm9tQmFzZTY0KHN0cikpID09PSBzdHI7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGVhZGVyYm9hcmROYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbGVhZGVyYm9hcmQgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxlYWRlcmJvYXJkUmFua3Moc3RhcnRfcmFuazogbnVtYmVyLCBlbmRfcmFuazogbnVtYmVyKSB7XG4gIGlmIChzdGFydF9yYW5rID4gMCAmJiBlbmRfcmFuayA+IDAgJiYgc3RhcnRfcmFuayA+PSBlbmRfcmFuaykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignc3RhcnQgcmFuayBtdXN0IGJlIGxlc3MgdGhhbiBlbmQgcmFuaycpO1xuICB9XG4gIGlmIChzdGFydF9yYW5rIDwgMCB8fCBlbmRfcmFuayA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3JhbmtzIG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMZWFkZXJib2FyZE9mZnNldChvZmZzZXQ6IG51bWJlcikge1xuICBpZiAob2Zmc2V0IDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignb2Zmc2V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlICg+PSAwKScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxlYWRlcmJvYXJkQ291bnQoY291bnQ6IG51bWJlcikge1xuICBpZiAoY291bnQgPCAxKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdjb3VudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlICg+IDApJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGVhZGVyYm9hcmROdW1iZXJPZkVsZW1lbnRzKG51bUVsZW1lbnRzOiBudW1iZXIpIHtcbiAgaWYgKG51bUVsZW1lbnRzIDwgMSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbXVzdCBwcm92aWRlIGF0IGxlYXN0IG9uZSBlbGVtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTWF4Q29uY3VycmVudFJlcXVlc3RzKGxpbWl0OiBudW1iZXIpIHtcbiAgaWYgKGxpbWl0IDwgMSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICdjb25jdXJyZW50IHJlcXVlc3RzIGxpbWl0IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmUgKD4gMCknXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0ZWRTZXRTb3VyY2VzKHNvdXJjZXM6IFNvcnRlZFNldFNvdXJjZVtdKSB7XG4gIGlmICghc291cmNlcykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignQXQgbGVhc3Qgb25lIHNvdXJjZXMgaXMgcmVxdWlyZWQnKTtcbiAgfVxuICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgY29uc3Qge3NvcnRlZFNldE5hbWUsIHdlaWdodH0gPSBzb3VyY2U7XG5cbiAgICBpZiAodHlwZW9mIHNvcnRlZFNldE5hbWUgIT09ICdzdHJpbmcnIHx8IHNvcnRlZFNldE5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAgICdzb3J0ZWRTZXROYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh3ZWlnaHQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3dlaWdodCBtdXN0IGJlIGEgZmluaXRlIG51bWJlcicpO1xuICAgIH1cbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gomomento/sdk-core",
3
- "version": "1.117.0",
3
+ "version": "1.117.2",
4
4
  "description": "Common code for Momento JS SDKs",
5
5
  "main": "dist/src/index.js",
6
6
  "files": [