@auth0/auth0-angular 1.8.1 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { __rest } from "tslib";
2
- import { InjectionToken } from '@angular/core';
2
+ import { InjectionToken, VERSION } from '@angular/core';
3
3
  import { Auth0Client } from '@auth0/auth0-spa-js';
4
4
  import useragent from '../useragent';
5
5
  export class Auth0ClientFactory {
@@ -12,8 +12,11 @@ export class Auth0ClientFactory {
12
12
  return new Auth0Client(Object.assign(Object.assign({ redirect_uri: redirectUri || window.location.origin, client_id: clientId, max_age: maxAge }, rest), { auth0Client: {
13
13
  name: useragent.name,
14
14
  version: useragent.version,
15
+ env: {
16
+ 'angular/core': VERSION.full
17
+ }
15
18
  } }));
16
19
  }
17
20
  }
18
21
  export const Auth0ClientService = new InjectionToken('auth0.client');
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUVyQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBK0I7UUFDakQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxNQUFNLElBQUksS0FBSyxDQUNiLG1HQUFtRyxDQUNwRyxDQUFDO1NBQ0g7UUFFRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsZUFBZSxLQUFjLE1BQU0sRUFBZixJQUFJLFVBQUssTUFBTSxFQUFwRSx3REFBMkQsQ0FBUyxDQUFDO1FBRTNFLE9BQU8sSUFBSSxXQUFXLCtCQUNwQixZQUFZLEVBQUUsV0FBVyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUNuRCxTQUFTLEVBQUUsUUFBUSxFQUNuQixPQUFPLEVBQUUsTUFBTSxJQUNaLElBQUksS0FDUCxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2dCQUNwQixPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87YUFDM0IsSUFDRCxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELGNBQWMsQ0FDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGgwQ2xpZW50IH0gZnJvbSAnQGF1dGgwL2F1dGgwLXNwYS1qcyc7XG5pbXBvcnQgeyBBdXRoQ2xpZW50Q29uZmlnIH0gZnJvbSAnLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgdXNlcmFnZW50IGZyb20gJy4uL3VzZXJhZ2VudCc7XG5cbmV4cG9ydCBjbGFzcyBBdXRoMENsaWVudEZhY3Rvcnkge1xuICBzdGF0aWMgY3JlYXRlQ2xpZW50KGNvbmZpZ0ZhY3Rvcnk6IEF1dGhDbGllbnRDb25maWcpOiBBdXRoMENsaWVudCB7XG4gICAgY29uc3QgY29uZmlnID0gY29uZmlnRmFjdG9yeS5nZXQoKTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDb25maWd1cmF0aW9uIG11c3QgYmUgc3BlY2lmaWVkIGVpdGhlciB0aHJvdWdoIEF1dGhNb2R1bGUuZm9yUm9vdCBvciB0aHJvdWdoIEF1dGhDbGllbnRDb25maWcuc2V0J1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlZGlyZWN0VXJpLCBjbGllbnRJZCwgbWF4QWdlLCBodHRwSW50ZXJjZXB0b3IsIC4uLnJlc3QgfSA9IGNvbmZpZztcblxuICAgIHJldHVybiBuZXcgQXV0aDBDbGllbnQoe1xuICAgICAgcmVkaXJlY3RfdXJpOiByZWRpcmVjdFVyaSB8fCB3aW5kb3cubG9jYXRpb24ub3JpZ2luLFxuICAgICAgY2xpZW50X2lkOiBjbGllbnRJZCxcbiAgICAgIG1heF9hZ2U6IG1heEFnZSxcbiAgICAgIC4uLnJlc3QsXG4gICAgICBhdXRoMENsaWVudDoge1xuICAgICAgICBuYW1lOiB1c2VyYWdlbnQubmFtZSxcbiAgICAgICAgdmVyc2lvbjogdXNlcmFnZW50LnZlcnNpb24sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBdXRoMENsaWVudFNlcnZpY2UgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aDBDbGllbnQ+KFxuICAnYXV0aDAuY2xpZW50J1xuKTtcbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFFckMsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsWUFBWSxDQUFDLGFBQStCO1FBQ2pELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYixtR0FBbUcsQ0FDcEcsQ0FBQztTQUNIO1FBRUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGVBQWUsS0FBYyxNQUFNLEVBQWYsSUFBSSxVQUFLLE1BQU0sRUFBcEUsd0RBQTJELENBQVMsQ0FBQztRQUUzRSxPQUFPLElBQUksV0FBVywrQkFDcEIsWUFBWSxFQUFFLFdBQVcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDbkQsU0FBUyxFQUFFLFFBQVEsRUFDbkIsT0FBTyxFQUFFLE1BQU0sSUFDWixJQUFJLEtBQ1AsV0FBVyxFQUFFO2dCQUNYLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtnQkFDcEIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO2dCQUMxQixHQUFHLEVBQUU7b0JBQ0gsY0FBYyxFQUFFLE9BQU8sQ0FBQyxJQUFJO2lCQUM3QjthQUNLLElBQ1IsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUNsRCxjQUFjLENBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoMENsaWVudCB9IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuaW1wb3J0IHsgQXV0aENsaWVudENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHVzZXJhZ2VudCBmcm9tICcuLi91c2VyYWdlbnQnO1xuXG5leHBvcnQgY2xhc3MgQXV0aDBDbGllbnRGYWN0b3J5IHtcbiAgc3RhdGljIGNyZWF0ZUNsaWVudChjb25maWdGYWN0b3J5OiBBdXRoQ2xpZW50Q29uZmlnKTogQXV0aDBDbGllbnQge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNvbmZpZ0ZhY3RvcnkuZ2V0KCk7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ29uZmlndXJhdGlvbiBtdXN0IGJlIHNwZWNpZmllZCBlaXRoZXIgdGhyb3VnaCBBdXRoTW9kdWxlLmZvclJvb3Qgb3IgdGhyb3VnaCBBdXRoQ2xpZW50Q29uZmlnLnNldCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyByZWRpcmVjdFVyaSwgY2xpZW50SWQsIG1heEFnZSwgaHR0cEludGVyY2VwdG9yLCAuLi5yZXN0IH0gPSBjb25maWc7XG5cbiAgICByZXR1cm4gbmV3IEF1dGgwQ2xpZW50KHtcbiAgICAgIHJlZGlyZWN0X3VyaTogcmVkaXJlY3RVcmkgfHwgd2luZG93LmxvY2F0aW9uLm9yaWdpbixcbiAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXG4gICAgICBtYXhfYWdlOiBtYXhBZ2UsXG4gICAgICAuLi5yZXN0LFxuICAgICAgYXV0aDBDbGllbnQ6IHtcbiAgICAgICAgbmFtZTogdXNlcmFnZW50Lm5hbWUsXG4gICAgICAgIHZlcnNpb246IHVzZXJhZ2VudC52ZXJzaW9uLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICAnYW5ndWxhci9jb3JlJzogVkVSU0lPTi5mdWxsXG4gICAgICAgIH1cbiAgICAgIH0gYXMgYW55LFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBdXRoMENsaWVudFNlcnZpY2UgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aDBDbGllbnQ+KFxuICAnYXV0aDAuY2xpZW50J1xuKTtcbiJdfQ==
@@ -88,4 +88,4 @@ AuthClientConfig.ctorParameters = () => [
88
88
  * ```
89
89
  */
90
90
  export const AuthConfigService = new InjectionToken('auth0-angular.config');
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFzQjdFOzs7R0FHRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsR0FBdUI7SUFFdkIsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUM7QUFDakMsQ0FBQztBQXFQRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q0c7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQW1ELE1BQW1CO1FBQ3BFLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsTUFBa0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQW9CLENBQUM7SUFDbkMsQ0FBQzs7OztZQXZCRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7NENBSW5CLFFBQVEsWUFBSSxNQUFNLFNBQUMsaUJBQWlCOztBQXNCbkQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhY2hlTG9jYXRpb24sXG4gIEdldFRva2VuU2lsZW50bHlPcHRpb25zLFxuICBJQ2FjaGUsXG59IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb21tb24gc2V0IG9mIEhUVFAgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gSHR0cE1ldGhvZCB7XG4gIEdldCA9ICdHRVQnLFxuICBQb3N0ID0gJ1BPU1QnLFxuICBQdXQgPSAnUFVUJyxcbiAgUGF0Y2ggPSAnUEFUQ0gnLFxuICBEZWxldGUgPSAnREVMRVRFJyxcbiAgSGVhZCA9ICdIRUFEJyxcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSB0eXBlIGZvciBhIHJvdXRlIGNvbmZpZyBlbnRyeS4gQ2FuIGVpdGhlciBiZTpcbiAqXG4gKiAtIGFuIG9iamVjdCBvZiB0eXBlIEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnXG4gKiAtIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCB0eXBlIEFwaVJvdXRlRGVmaW5pdGlvbiA9IEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnIHwgc3RyaW5nO1xuXG4vKipcbiAqIEEgY3VzdG9tIHR5cGUgZ3VhcmQgdG8gaGVscCBpZGVudGlmeSByb3V0ZSBkZWZpbml0aW9ucyB0aGF0IGFyZSBhY3R1YWxseSBIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyB0eXBlcy5cbiAqIEBwYXJhbSBkZWYgVGhlIHJvdXRlIGRlZmluaXRpb24gdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyhcbiAgZGVmOiBBcGlSb3V0ZURlZmluaXRpb25cbik6IGRlZiBpcyBIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyB7XG4gIHJldHVybiB0eXBlb2YgZGVmICE9PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgSHR0cEludGVyY2VwdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEludGVyY2VwdG9yQ29uZmlnIHtcbiAgYWxsb3dlZExpc3Q6IEFwaVJvdXRlRGVmaW5pdGlvbltdO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGludGVyY2VwdG9yIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcge1xuICAvKipcbiAgICogVGhlIFVSTCB0byB0ZXN0LCBieSBzdXBwbHlpbmcgdGhlIFVSTCB0byBtYXRjaC5cbiAgICogSWYgYHRlc3RgIGlzIGEgbWF0Y2ggZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QgcGF0aCBmcm9tIHRoZSBIVFRQIGNsaWVudCwgdGhlblxuICAgKiBhbiBhY2Nlc3MgdG9rZW4gaXMgYXR0YWNoZWQgdG8gdGhlIHJlcXVlc3QgaW4gdGhlXG4gICAqICBbXCJBdXRob3JpemF0aW9uXCIgaGVhZGVyXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1vYXV0aC12Mi1iZWFyZXItMjAjc2VjdGlvbi0yLjEpLlxuICAgKlxuICAgKiBJZiB0aGUgdGVzdCBkb2VzIG5vdCBwYXNzLCB0aGUgcmVxdWVzdCBwcm9jZWVkcyB3aXRob3V0IHRoZSBhY2Nlc3MgdG9rZW4gYXR0YWNoZWQuXG4gICAqXG4gICAqIEEgd2lsZGNhcmQgY2hhcmFjdGVyIGNhbiBiZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIHN0YXJ0IG9mIHRoZSBVUkwuXG4gICAqXG4gICAqIEB1c2FnZW5vdGVzXG4gICAqXG4gICAqICcvYXBpJyAtIGV4YWN0bHkgbWF0Y2ggdGhlIHJvdXRlIC9hcGlcbiAgICogJy9hcGkvKicgLSBtYXRjaCBhbnkgcm91dGUgdGhhdCBzdGFydHMgd2l0aCAvYXBpL1xuICAgKi9cbiAgdXJpPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgSHR0cFJlcXVlc3QudXJsIHZhbHVlLCBhbGxvd2luZyB5b3UgdG8gZG9cbiAgICogYW55IGtpbmQgb2YgZmxleGlibGUgbWF0Y2hpbmcuXG4gICAqXG4gICAqIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGVuXG4gICAqIGFuIGFjY2VzcyB0b2tlbiBpcyBhdHRhY2hlZCB0byB0aGUgcmVxdWVzdCBpbiB0aGVcbiAgICogIFtcIkF1dGhvcml6YXRpb25cIiBoZWFkZXJdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLW9hdXRoLXYyLWJlYXJlci0yMCNzZWN0aW9uLTIuMSkuXG4gICAqXG4gICAqIElmIGl0IHJldHVybnMgZmFsc2UsIHRoZSByZXF1ZXN0IHByb2NlZWRzIHdpdGhvdXQgdGhlIGFjY2VzcyB0b2tlbiBhdHRhY2hlZC5cbiAgICovXG4gIHVyaU1hdGNoZXI/OiAodXJpOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIHRoYXQgYXJlIHBhc3NlZCB0byB0aGUgU0RLIHdoZW4gcmV0cmlldmluZyB0aGVcbiAgICogYWNjZXNzIHRva2VuIHRvIGF0dGFjaCB0byB0aGUgb3V0Z29pbmcgcmVxdWVzdC5cbiAgICovXG4gIHRva2VuT3B0aW9ucz86IEdldFRva2VuU2lsZW50bHlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRUUCBtZXRob2QgdG8gbWF0Y2ggb24uIElmIHNwZWNpZmllZCwgdGhlIEhUVFAgbWV0aG9kIG9mXG4gICAqIHRoZSBvdXRnb2luZyByZXF1ZXN0IHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoaXMuIElmIHRoZXJlIGlzIG5vIG1hdGNoLCB0aGVcbiAgICogQXV0aG9yaXphdGlvbiBoZWFkZXIgaXMgbm90IGF0dGFjaGVkLlxuICAgKlxuICAgKiBUaGUgSFRUUCBtZXRob2QgbmFtZSBpcyBjYXNlLXNlbnNpdGl2ZS5cbiAgICovXG4gIGh0dHBNZXRob2Q/OiBIdHRwTWV0aG9kIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvdyB0aGUgSFRUUCBjYWxsIHRvIGJlIGV4ZWN1dGVkIGFub255bW91c2x5LCB3aGVuIG5vIHRva2VuIGlzIGF2YWlsYWJsZS5cbiAgICpcbiAgICogV2hlbiBvbWl0dGVkIChvciBzZXQgdG8gZmFsc2UpLCBjYWxscyB0aGF0IG1hdGNoIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgZmFpbCB3aGVuIG5vIHRva2VuIGlzIGF2YWlsYWJsZS5cbiAgICovXG4gIGFsbG93QW5vbnltb3VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYXV0aGVudGljYXRpb24gc2VydmljZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICAvKipcbiAgICogWW91ciBBdXRoMCBhY2NvdW50IGRvbWFpbiBzdWNoIGFzIGAnZXhhbXBsZS5hdXRoMC5jb20nYCxcbiAgICogYCdleGFtcGxlLmV1LmF1dGgwLmNvbSdgIG9yICwgYCdleGFtcGxlLm15Y29tcGFueS5jb20nYFxuICAgKiAod2hlbiB1c2luZyBbY3VzdG9tIGRvbWFpbnNdKGh0dHBzOi8vYXV0aDAuY29tL2RvY3MvY3VzdG9tLWRvbWFpbnMpKVxuICAgKi9cbiAgZG9tYWluOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpc3N1ZXIgdG8gYmUgdXNlZCBmb3IgdmFsaWRhdGlvbiBvZiBKV1RzLCBvcHRpb25hbGx5IGRlZmF1bHRzIHRvIHRoZSBkb21haW4gYWJvdmVcbiAgICovXG4gIGlzc3Vlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENsaWVudCBJRCBmb3VuZCBvbiB5b3VyIEFwcGxpY2F0aW9uIHNldHRpbmdzIHBhZ2VcbiAgICovXG4gIGNsaWVudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IFVSTCB3aGVyZSBBdXRoMCB3aWxsIHJlZGlyZWN0IHlvdXIgYnJvd3NlciB0byB3aXRoXG4gICAqIHRoZSBhdXRoZW50aWNhdGlvbiByZXN1bHQuIEl0IG11c3QgYmUgYWRkZWQgdG8gdGhlXG4gICAqIFwiQWxsb3dlZCBDYWxsYmFjayBVUkxzXCIgZmllbGQgaW4geW91ciBBdXRoMCBBcHBsaWNhdGlvbidzXG4gICAqIHNldHRpbmdzLiBJZiBub3QgcHJvdmlkZWQgaGVyZSwgaXQgc2hvdWxkIGJlIHByb3ZpZGVkIGluIHRoZSBvdGhlclxuICAgKiBtZXRob2RzIHRoYXQgcHJvdmlkZSBhdXRoZW50aWNhdGlvbi5cbiAgICovXG4gIHJlZGlyZWN0VXJpPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBpZiB0aGUgcGFnZSBVUkwgaGFzIGNvZGUgYW5kIHN0YXRlIHBhcmFtZXRlcnMsIHRoZSBTREsgd2lsbCBhc3N1bWUgdGhleSBhcmUgZm9yXG4gICAqIGFuIEF1dGgwIGFwcGxpY2F0aW9uIGFuZCBhdHRlbXB0IHRvIGV4Y2hhbmdlIHRoZSBjb2RlIGZvciBhIHRva2VuLlxuICAgKiBJbiBzb21lIGNhc2VzIHRoZSBjb2RlIG1pZ2h0IGJlIGZvciBzb21ldGhpbmcgZWxzZSAoZS5nLiBhbm90aGVyIE9BdXRoIFNESykuIEluIHRoZXNlXG4gICAqIGluc3RhbmNlcyB5b3UgY2FuIGluc3RydWN0IHRoZSBjbGllbnQgdG8gaWdub3JlIHRoZW0gYnkgc2V0dGluZyBgc2tpcFJlZGlyZWN0Q2FsbGJhY2tgLlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBBdXRoTW9kdWxlLmZvclJvb3Qoe1xuICAgKiAgIHNraXBSZWRpcmVjdENhbGxiYWNrOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgPT09ICcvb3RoZXItY2FsbGJhY2snXG4gICAqIH0pXG4gICAqIGBgYFxuICAgKlxuICAgKiAqKk5vdGUqKjogSW4gdGhlIGFib3ZlIGV4YW1wbGUsIGAvb3RoZXItY2FsbGJhY2tgIGlzIGFuIGV4aXN0aW5nIHJvdXRlIHRoYXQgd2lsbCBiZSBjYWxsZWRcbiAgICogYnkgYW55IG90aGVyIE9BdXRoIHByb3ZpZGVyIHdpdGggYSBgY29kZWAgKG9yIGBlcnJvcmAgaW4gY2FzZSB3aGVuIHNvbWV0aGluZyB3ZW50IHdyb25nKSBhbmQgYHN0YXRlYC5cbiAgICpcbiAgICovXG4gIHNraXBSZWRpcmVjdENhbGxiYWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIGluIHNlY29uZHMgdXNlZCB0byBhY2NvdW50IGZvciBjbG9jayBza2V3IGluIEpXVCBleHBpcmF0aW9ucy5cbiAgICogVHlwaWNhbGx5LCB0aGlzIHZhbHVlIGlzIG5vIG1vcmUgdGhhbiBhIG1pbnV0ZSBvciB0d28gYXQgbWF4aW11bS5cbiAgICogRGVmYXVsdHMgdG8gNjBzLlxuICAgKi9cbiAgbGVld2F5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gdG8gdXNlIHdoZW4gc3RvcmluZyBjYWNoZSBkYXRhLiBWYWxpZCB2YWx1ZXMgYXJlIGBtZW1vcnlgIG9yIGBsb2NhbHN0b3JhZ2VgLlxuICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIGBtZW1vcnlgLlxuICAgKi9cbiAgY2FjaGVMb2NhdGlvbj86IENhY2hlTG9jYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gY2FjaGUgaW1wbGVtZW50YXRpb24gdG8gdXNlIGZvciB0b2tlbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwuXG4gICAqIFRoaXMgc2V0dGluZyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYGNhY2hlTG9jYXRpb25gIGlmIHRoZXkgYXJlIGJvdGggc3BlY2lmaWVkLlxuICAgKlxuICAgKiBSZWFkIG1vcmUgYWJvdXQgW2NyZWF0aW5nIGEgY3VzdG9tIGNhY2hlXShodHRwczovL2dpdGh1Yi5jb20vYXV0aDAvYXV0aDAtc3BhLWpzI2NyZWF0aW5nLWEtY3VzdG9tLWNhY2hlKVxuICAgKi9cbiAgY2FjaGU/OiBJQ2FjaGU7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlZnJlc2ggdG9rZW5zIGFyZSB1c2VkIHRvIGZldGNoIG5ldyBhY2Nlc3MgdG9rZW5zIGZyb20gdGhlIEF1dGgwIHNlcnZlci5cbiAgICogSWYgZmFsc2UsIHRoZSBsZWdhY3kgdGVjaG5pcXVlIG9mIHVzaW5nIGEgaGlkZGVuIGlmcmFtZSBhbmQgdGhlIGBhdXRob3JpemF0aW9uX2NvZGVgIGdyYW50IHdpdGggYHByb21wdD1ub25lYCBpcyB1c2VkLlxuICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIGBmYWxzZWAuXG4gICAqXG4gICAqICoqTm90ZSoqOiBVc2Ugb2YgcmVmcmVzaCB0b2tlbnMgbXVzdCBiZSBlbmFibGVkIGJ5IGFuIGFkbWluaXN0cmF0b3Igb24geW91ciBBdXRoMCBjbGllbnQgYXBwbGljYXRpb24uXG4gICAqL1xuICB1c2VSZWZyZXNoVG9rZW5zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGRlY2xhcmluZyBiYWNrZ3JvdW5kIGNhbGxzIHRvIC9hdXRob3JpemUgYXMgZmFpbGVkIGZvciB0aW1lb3V0XG4gICAqIERlZmF1bHRzIHRvIDYwcy5cbiAgICovXG4gIGF1dGhvcml6ZVRpbWVvdXRJblNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdG8gcmVjb21tZW5kZWQgZGVmYXVsdHMsIGxpa2UgZGVmYXVsdFNjb3BlXG4gICAqL1xuICBhZHZhbmNlZE9wdGlvbnM/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgc2NvcGUgdG8gYmUgaW5jbHVkZWQgd2l0aCBhbGwgcmVxdWVzdHMuXG4gICAgICogSWYgbm90IHByb3ZpZGVkLCAnb3BlbmlkIHByb2ZpbGUgZW1haWwnIGlzIHVzZWQuIFRoaXMgY2FuIGJlIHNldCB0byBgbnVsbGAgaW4gb3JkZXIgdG8gZWZmZWN0aXZlbHkgcmVtb3ZlIHRoZSBkZWZhdWx0IHNjb3Blcy5cbiAgICAgKlxuICAgICAqIE5vdGU6IFRoZSBgb3BlbmlkYCBzY29wZSBpcyAqKmFsd2F5cyBhcHBsaWVkKiogcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuXG4gICAgICovXG4gICAgZGVmYXVsdFNjb3BlPzogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFsbG93YWJsZSBlbGFwc2VkIHRpbWUgKGluIHNlY29uZHMpIHNpbmNlIGF1dGhlbnRpY2F0aW9uLlxuICAgKiBJZiB0aGUgbGFzdCB0aW1lIHRoZSB1c2VyIGF1dGhlbnRpY2F0ZWQgaXMgZ3JlYXRlciB0aGFuIHRoaXMgdmFsdWUsXG4gICAqIHRoZSB1c2VyIG11c3QgYmUgcmVhdXRoZW50aWNhdGVkLlxuICAgKi9cbiAgbWF4QWdlPzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBzY29wZSB0byBiZSB1c2VkIG9uIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3RzLlxuICAgKiBUaGUgZGVmYXVsdFNjb3BlIGRlZmluZWQgaW4gdGhlIEF1dGgwQ2xpZW50IGlzIGluY2x1ZGVkXG4gICAqIGFsb25nIHdpdGggdGhpcyBzY29wZVxuICAgKi9cbiAgc2NvcGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGF1ZGllbmNlIHRvIGJlIHVzZWQgZm9yIHJlcXVlc3RpbmcgQVBJIGFjY2Vzcy5cbiAgICovXG4gIGF1ZGllbmNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYnVpbHQtaW4gSHR0cCBJbnRlcmNlcHRvciwgdXNlZCBmb3JcbiAgICogYXV0b21hdGljYWxseSBhdHRhY2hpbmcgYWNjZXNzIHRva2Vucy5cbiAgICovXG4gIGh0dHBJbnRlcmNlcHRvcj86IEh0dHBJbnRlcmNlcHRvckNvbmZpZztcblxuICAvKipcbiAgICogUGF0aCBpbiB5b3VyIGFwcGxpY2F0aW9uIHRvIHJlZGlyZWN0IHRvIHdoZW4gdGhlIEF1dGhvcml6YXRpb24gc2VydmVyXG4gICAqIHJldHVybnMgYW4gZXJyb3IuIERlZmF1bHRzIHRvIGAvYFxuICAgKi9cbiAgZXJyb3JQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSWQgb2YgYW4gb3JnYW5pemF0aW9uIHRvIGxvZyBpbiB0b1xuICAgKlxuICAgKiBUaGlzIHdpbGwgc3BlY2lmeSBhbiBgb3JnYW5pemF0aW9uYCBwYXJhbWV0ZXIgaW4geW91ciB1c2VyJ3MgbG9naW4gcmVxdWVzdCBhbmQgd2lsbCBhZGQgYSBzdGVwIHRvIHZhbGlkYXRlXG4gICAqIHRoZSBgb3JnX2lkYCBjbGFpbSBpbiB5b3VyIHVzZXIncyBJRCBUb2tlbi5cbiAgICovXG4gIG9yZ2FuaXphdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElkIG9mIGFuIGludml0YXRpb24gdG8gYWNjZXB0LlxuICAgKlxuICAgKiBUaGlzIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSB1c2VyIGludml0YXRpb24gVVJMIHRoYXQgaXMgZ2l2ZW4gd2hlbiBwYXJ0aWNpcGF0aW5nIGluIGEgdXNlciBpbnZpdGF0aW9uIGZsb3cuXG4gICAqL1xuICBpbnZpdGF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29ubmVjdGlvbiBjb25maWd1cmVkIGZvciB5b3VyIGFwcGxpY2F0aW9uLlxuICAgKiBJZiBudWxsLCBpdCB3aWxsIHJlZGlyZWN0IHRvIHRoZSBBdXRoMCBMb2dpbiBQYWdlIGFuZCBzaG93XG4gICAqIHRoZSBMb2dpbiBXaWRnZXQuXG4gICAqL1xuICBjb25uZWN0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNb2RpZnkgdGhlIHZhbHVlIHVzZWQgYXMgdGhlIGN1cnJlbnQgdGltZSBkdXJpbmcgdGhlIHRva2VuIHZhbGlkYXRpb24uXG4gICAqXG4gICAqICoqTm90ZSoqOiBVc2luZyB0aGlzIGltcHJvcGVybHkgY2FuIHBvdGVudGlhbGx5IGNvbXByb21pc2UgdGhlIHRva2VuIHZhbGlkYXRpb24uXG4gICAqL1xuICBub3dQcm92aWRlcj86ICgpID0+IFByb21pc2U8bnVtYmVyPiB8IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgeW91IG5lZWQgdG8gc2VuZCBjdXN0b20gcGFyYW1ldGVycyB0byB0aGUgQXV0aG9yaXphdGlvbiBTZXJ2ZXIsXG4gICAqIG1ha2Ugc3VyZSB0byB1c2UgdGhlIG9yaWdpbmFsIHBhcmFtZXRlciBuYW1lLlxuICAgKi9cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIEFuZ3VsYXIgc3BlY2lmaWMgc3RhdGUgdG8gYmUgc3RvcmVkIGJlZm9yZSByZWRpcmVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN0YXRlIHtcbiAgLyoqXG4gICAqIFRhcmdldCBwYXRoIHRoZSBhcHAgZ2V0cyByb3V0ZWQgdG8gYWZ0ZXJcbiAgICogaGFuZGxpbmcgdGhlIGNhbGxiYWNrIGZyb20gQXV0aDAgKGRlZmF1bHRzIHRvICcvJylcbiAgICovXG4gIHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogQW55IGN1c3RvbSBwYXJhbWV0ZXIgdG8gYmUgc3RvcmVkIGluIGFwcFN0YXRlXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogR2V0cyBhbmQgc2V0cyBjb25maWd1cmF0aW9uIGZvciB0aGUgaW50ZXJuYWwgQXV0aDAgY2xpZW50LiBUaGlzIGNhbiBiZVxuICogdXNlZCB0byBwcm92aWRlIGNvbmZpZ3VyYXRpb24gb3V0c2lkZSBvZiB1c2luZyBBdXRoTW9kdWxlLmZvclJvb3QsIGkuZS4gZnJvbVxuICogYSBmYWN0b3J5IHByb3ZpZGVkIGJ5IEFQUF9JTklUSUFMSVpFUi5cbiAqXG4gKiBAdXNhZ2VcbiAqXG4gKiBgYGBqc1xuICogLy8gYXBwLm1vZHVsZS50c1xuICogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBpbXBvcnQgeyBBdXRoTW9kdWxlLCBBdXRoQ2xpZW50Q29uZmlnIH0gZnJvbSAnQGF1dGgwL2F1dGgwLWFuZ3VsYXInO1xuICpcbiAqIC8vIFByb3ZpZGUgYW4gaW5pdGlhbGl6ZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgUHJvbWlzZVxuICogZnVuY3Rpb24gY29uZmlnSW5pdGlhbGl6ZXIoXG4gKiAgIGh0dHA6IEh0dHBDbGllbnQsXG4gKiAgIGNvbmZpZzogQXV0aENsaWVudENvbmZpZ1xuICogKSB7XG4gKiAgIHJldHVybiAoKSA9PlxuICogICAgIGh0dHBcbiAqICAgICAgIC5nZXQoJy9jb25maWcnKVxuICogICAgICAgLnRvUHJvbWlzZSgpXG4gKiAgICAgICAudGhlbigobG9hZGVkQ29uZmlnOiBhbnkpID0+IGNvbmZpZy5zZXQobG9hZGVkQ29uZmlnKSk7ICAgLy8gU2V0IHRoZSBjb25maWcgdGhhdCB3YXMgbG9hZGVkIGFzeW5jaHJvbm91c2x5IGhlcmVcbiAqIH1cbiAqXG4gKiAvLyBQcm92aWRlIEFQUF9JTklUSUFMSVpFUiB3aXRoIHRoaXMgZnVuY3Rpb24uIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25maWcgcGFzc2VkIHRvIEF1dGhNb2R1bGUuZm9yUm9vdFxuICogaW1wb3J0czogW1xuICogICAvLyBvdGhlciBpbXBvcnRzLi5cbiAqXG4gKiAgIEh0dHBDbGllbnRNb2R1bGUsXG4gKiAgIEF1dGhNb2R1bGUuZm9yUm9vdCgpLCAgIC8vPC0gZG9uJ3QgcGFzcyBhbnkgY29uZmlnIGhlcmVcbiAqIF0sXG4gKiBwcm92aWRlcnM6IFtcbiAqICAge1xuICogICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAqICAgICB1c2VGYWN0b3J5OiBjb25maWdJbml0aWFsaXplciwgICAgLy8gPC0gcGFzcyB5b3VyIGluaXRpYWxpemVyIGZ1bmN0aW9uIGhlcmVcbiAqICAgICBkZXBzOiBbSHR0cENsaWVudCwgQXV0aENsaWVudENvbmZpZ10sXG4gKiAgICAgbXVsdGk6IHRydWUsXG4gKiAgIH0sXG4gKiBdLFxuICogYGBgXG4gKlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhDbGllbnRDb25maWcge1xuICBwcml2YXRlIGNvbmZpZz86IEF1dGhDb25maWc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChBdXRoQ29uZmlnU2VydmljZSkgY29uZmlnPzogQXV0aENvbmZpZykge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgY29uZmlndXJhdGlvbiB0byBiZSByZWFkIGJ5IG90aGVyIGNvbnN1bWVycyBvZiB0aGUgc2VydmljZSAoc2VlIHVzYWdlIG5vdGVzKVxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uIHRvIHNldFxuICAgKi9cbiAgc2V0KGNvbmZpZzogQXV0aENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNvbmZpZyB0aGF0IGhhcyBiZWVuIHNldCBieSBvdGhlciBjb25zdW1lcnMgb2YgdGhlIHNlcnZpY2VcbiAgICovXG4gIGdldCgpOiBBdXRoQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcgYXMgQXV0aENvbmZpZztcbiAgfVxufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgYWNjZXNzaW5nIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqXG4gKiBVc2UgdGhlIGBJbmplY3RgIGRlY29yYXRvciB0byBhY2Nlc3MgdGhlIGNvbmZpZ3VyYXRpb24gZnJvbSBhIHNlcnZpY2Ugb3IgY29tcG9uZW50OlxuICpcbiAqIGBgYFxuICogY2xhc3MgTXlTZXJ2aWNlKEBJbmplY3QoQXV0aENvbmZpZ1NlcnZpY2UpIGNvbmZpZzogQXV0aENvbmZpZykge31cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQXV0aENvbmZpZ1NlcnZpY2UgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aENvbmZpZz4oXG4gICdhdXRoMC1hbmd1bGFyLmNvbmZpZydcbik7XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFzQjdFOzs7R0FHRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsR0FBdUI7SUFFdkIsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUM7QUFDakMsQ0FBQztBQTJRRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q0c7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQW1ELE1BQW1CO1FBQ3BFLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsTUFBa0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQW9CLENBQUM7SUFDbkMsQ0FBQzs7OztZQXZCRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7NENBSW5CLFFBQVEsWUFBSSxNQUFNLFNBQUMsaUJBQWlCOztBQXNCbkQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhY2hlTG9jYXRpb24sXG4gIEdldFRva2VuU2lsZW50bHlPcHRpb25zLFxuICBJQ2FjaGUsXG59IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb21tb24gc2V0IG9mIEhUVFAgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gSHR0cE1ldGhvZCB7XG4gIEdldCA9ICdHRVQnLFxuICBQb3N0ID0gJ1BPU1QnLFxuICBQdXQgPSAnUFVUJyxcbiAgUGF0Y2ggPSAnUEFUQ0gnLFxuICBEZWxldGUgPSAnREVMRVRFJyxcbiAgSGVhZCA9ICdIRUFEJyxcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSB0eXBlIGZvciBhIHJvdXRlIGNvbmZpZyBlbnRyeS4gQ2FuIGVpdGhlciBiZTpcbiAqXG4gKiAtIGFuIG9iamVjdCBvZiB0eXBlIEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnXG4gKiAtIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCB0eXBlIEFwaVJvdXRlRGVmaW5pdGlvbiA9IEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnIHwgc3RyaW5nO1xuXG4vKipcbiAqIEEgY3VzdG9tIHR5cGUgZ3VhcmQgdG8gaGVscCBpZGVudGlmeSByb3V0ZSBkZWZpbml0aW9ucyB0aGF0IGFyZSBhY3R1YWxseSBIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyB0eXBlcy5cbiAqIEBwYXJhbSBkZWYgVGhlIHJvdXRlIGRlZmluaXRpb24gdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyhcbiAgZGVmOiBBcGlSb3V0ZURlZmluaXRpb25cbik6IGRlZiBpcyBIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyB7XG4gIHJldHVybiB0eXBlb2YgZGVmICE9PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgSHR0cEludGVyY2VwdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEludGVyY2VwdG9yQ29uZmlnIHtcbiAgYWxsb3dlZExpc3Q6IEFwaVJvdXRlRGVmaW5pdGlvbltdO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGludGVyY2VwdG9yIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcge1xuICAvKipcbiAgICogVGhlIFVSTCB0byB0ZXN0LCBieSBzdXBwbHlpbmcgdGhlIFVSTCB0byBtYXRjaC5cbiAgICogSWYgYHRlc3RgIGlzIGEgbWF0Y2ggZm9yIHRoZSBjdXJyZW50IHJlcXVlc3QgcGF0aCBmcm9tIHRoZSBIVFRQIGNsaWVudCwgdGhlblxuICAgKiBhbiBhY2Nlc3MgdG9rZW4gaXMgYXR0YWNoZWQgdG8gdGhlIHJlcXVlc3QgaW4gdGhlXG4gICAqICBbXCJBdXRob3JpemF0aW9uXCIgaGVhZGVyXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1vYXV0aC12Mi1iZWFyZXItMjAjc2VjdGlvbi0yLjEpLlxuICAgKlxuICAgKiBJZiB0aGUgdGVzdCBkb2VzIG5vdCBwYXNzLCB0aGUgcmVxdWVzdCBwcm9jZWVkcyB3aXRob3V0IHRoZSBhY2Nlc3MgdG9rZW4gYXR0YWNoZWQuXG4gICAqXG4gICAqIEEgd2lsZGNhcmQgY2hhcmFjdGVyIGNhbiBiZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIHN0YXJ0IG9mIHRoZSBVUkwuXG4gICAqXG4gICAqIEB1c2FnZW5vdGVzXG4gICAqXG4gICAqICcvYXBpJyAtIGV4YWN0bHkgbWF0Y2ggdGhlIHJvdXRlIC9hcGlcbiAgICogJy9hcGkvKicgLSBtYXRjaCBhbnkgcm91dGUgdGhhdCBzdGFydHMgd2l0aCAvYXBpL1xuICAgKi9cbiAgdXJpPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgSHR0cFJlcXVlc3QudXJsIHZhbHVlLCBhbGxvd2luZyB5b3UgdG8gZG9cbiAgICogYW55IGtpbmQgb2YgZmxleGlibGUgbWF0Y2hpbmcuXG4gICAqXG4gICAqIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGVuXG4gICAqIGFuIGFjY2VzcyB0b2tlbiBpcyBhdHRhY2hlZCB0byB0aGUgcmVxdWVzdCBpbiB0aGVcbiAgICogIFtcIkF1dGhvcml6YXRpb25cIiBoZWFkZXJdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLW9hdXRoLXYyLWJlYXJlci0yMCNzZWN0aW9uLTIuMSkuXG4gICAqXG4gICAqIElmIGl0IHJldHVybnMgZmFsc2UsIHRoZSByZXF1ZXN0IHByb2NlZWRzIHdpdGhvdXQgdGhlIGFjY2VzcyB0b2tlbiBhdHRhY2hlZC5cbiAgICovXG4gIHVyaU1hdGNoZXI/OiAodXJpOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIHRoYXQgYXJlIHBhc3NlZCB0byB0aGUgU0RLIHdoZW4gcmV0cmlldmluZyB0aGVcbiAgICogYWNjZXNzIHRva2VuIHRvIGF0dGFjaCB0byB0aGUgb3V0Z29pbmcgcmVxdWVzdC5cbiAgICovXG4gIHRva2VuT3B0aW9ucz86IEdldFRva2VuU2lsZW50bHlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRUUCBtZXRob2QgdG8gbWF0Y2ggb24uIElmIHNwZWNpZmllZCwgdGhlIEhUVFAgbWV0aG9kIG9mXG4gICAqIHRoZSBvdXRnb2luZyByZXF1ZXN0IHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoaXMuIElmIHRoZXJlIGlzIG5vIG1hdGNoLCB0aGVcbiAgICogQXV0aG9yaXphdGlvbiBoZWFkZXIgaXMgbm90IGF0dGFjaGVkLlxuICAgKlxuICAgKiBUaGUgSFRUUCBtZXRob2QgbmFtZSBpcyBjYXNlLXNlbnNpdGl2ZS5cbiAgICovXG4gIGh0dHBNZXRob2Q/OiBIdHRwTWV0aG9kIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvdyB0aGUgSFRUUCBjYWxsIHRvIGJlIGV4ZWN1dGVkIGFub255bW91c2x5LCB3aGVuIG5vIHRva2VuIGlzIGF2YWlsYWJsZS5cbiAgICpcbiAgICogV2hlbiBvbWl0dGVkIChvciBzZXQgdG8gZmFsc2UpLCBjYWxscyB0aGF0IG1hdGNoIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgZmFpbCB3aGVuIG5vIHRva2VuIGlzIGF2YWlsYWJsZS5cbiAgICovXG4gIGFsbG93QW5vbnltb3VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYXV0aGVudGljYXRpb24gc2VydmljZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICAvKipcbiAgICogWW91ciBBdXRoMCBhY2NvdW50IGRvbWFpbiBzdWNoIGFzIGAnZXhhbXBsZS5hdXRoMC5jb20nYCxcbiAgICogYCdleGFtcGxlLmV1LmF1dGgwLmNvbSdgIG9yICwgYCdleGFtcGxlLm15Y29tcGFueS5jb20nYFxuICAgKiAod2hlbiB1c2luZyBbY3VzdG9tIGRvbWFpbnNdKGh0dHBzOi8vYXV0aDAuY29tL2RvY3MvY3VzdG9tLWRvbWFpbnMpKVxuICAgKi9cbiAgZG9tYWluOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpc3N1ZXIgdG8gYmUgdXNlZCBmb3IgdmFsaWRhdGlvbiBvZiBKV1RzLCBvcHRpb25hbGx5IGRlZmF1bHRzIHRvIHRoZSBkb21haW4gYWJvdmVcbiAgICovXG4gIGlzc3Vlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENsaWVudCBJRCBmb3VuZCBvbiB5b3VyIEFwcGxpY2F0aW9uIHNldHRpbmdzIHBhZ2VcbiAgICovXG4gIGNsaWVudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IFVSTCB3aGVyZSBBdXRoMCB3aWxsIHJlZGlyZWN0IHlvdXIgYnJvd3NlciB0byB3aXRoXG4gICAqIHRoZSBhdXRoZW50aWNhdGlvbiByZXN1bHQuIEl0IG11c3QgYmUgYWRkZWQgdG8gdGhlXG4gICAqIFwiQWxsb3dlZCBDYWxsYmFjayBVUkxzXCIgZmllbGQgaW4geW91ciBBdXRoMCBBcHBsaWNhdGlvbidzXG4gICAqIHNldHRpbmdzLiBJZiBub3QgcHJvdmlkZWQgaGVyZSwgaXQgc2hvdWxkIGJlIHByb3ZpZGVkIGluIHRoZSBvdGhlclxuICAgKiBtZXRob2RzIHRoYXQgcHJvdmlkZSBhdXRoZW50aWNhdGlvbi5cbiAgICovXG4gIHJlZGlyZWN0VXJpPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBpZiB0aGUgcGFnZSBVUkwgaGFzIGNvZGUgYW5kIHN0YXRlIHBhcmFtZXRlcnMsIHRoZSBTREsgd2lsbCBhc3N1bWUgdGhleSBhcmUgZm9yXG4gICAqIGFuIEF1dGgwIGFwcGxpY2F0aW9uIGFuZCBhdHRlbXB0IHRvIGV4Y2hhbmdlIHRoZSBjb2RlIGZvciBhIHRva2VuLlxuICAgKiBJbiBzb21lIGNhc2VzIHRoZSBjb2RlIG1pZ2h0IGJlIGZvciBzb21ldGhpbmcgZWxzZSAoZS5nLiBhbm90aGVyIE9BdXRoIFNESykuIEluIHRoZXNlXG4gICAqIGluc3RhbmNlcyB5b3UgY2FuIGluc3RydWN0IHRoZSBjbGllbnQgdG8gaWdub3JlIHRoZW0gYnkgc2V0dGluZyBgc2tpcFJlZGlyZWN0Q2FsbGJhY2tgLlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBBdXRoTW9kdWxlLmZvclJvb3Qoe1xuICAgKiAgIHNraXBSZWRpcmVjdENhbGxiYWNrOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgPT09ICcvb3RoZXItY2FsbGJhY2snXG4gICAqIH0pXG4gICAqIGBgYFxuICAgKlxuICAgKiAqKk5vdGUqKjogSW4gdGhlIGFib3ZlIGV4YW1wbGUsIGAvb3RoZXItY2FsbGJhY2tgIGlzIGFuIGV4aXN0aW5nIHJvdXRlIHRoYXQgd2lsbCBiZSBjYWxsZWRcbiAgICogYnkgYW55IG90aGVyIE9BdXRoIHByb3ZpZGVyIHdpdGggYSBgY29kZWAgKG9yIGBlcnJvcmAgaW4gY2FzZSB3aGVuIHNvbWV0aGluZyB3ZW50IHdyb25nKSBhbmQgYHN0YXRlYC5cbiAgICpcbiAgICovXG4gIHNraXBSZWRpcmVjdENhbGxiYWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIGluIHNlY29uZHMgdXNlZCB0byBhY2NvdW50IGZvciBjbG9jayBza2V3IGluIEpXVCBleHBpcmF0aW9ucy5cbiAgICogVHlwaWNhbGx5LCB0aGlzIHZhbHVlIGlzIG5vIG1vcmUgdGhhbiBhIG1pbnV0ZSBvciB0d28gYXQgbWF4aW11bS5cbiAgICogRGVmYXVsdHMgdG8gNjBzLlxuICAgKi9cbiAgbGVld2F5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gdG8gdXNlIHdoZW4gc3RvcmluZyBjYWNoZSBkYXRhLiBWYWxpZCB2YWx1ZXMgYXJlIGBtZW1vcnlgIG9yIGBsb2NhbHN0b3JhZ2VgLlxuICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIGBtZW1vcnlgLlxuICAgKi9cbiAgY2FjaGVMb2NhdGlvbj86IENhY2hlTG9jYXRpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gY2FjaGUgaW1wbGVtZW50YXRpb24gdG8gdXNlIGZvciB0b2tlbiBzdG9yYWdlIGFuZCByZXRyaWV2YWwuXG4gICAqIFRoaXMgc2V0dGluZyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYGNhY2hlTG9jYXRpb25gIGlmIHRoZXkgYXJlIGJvdGggc3BlY2lmaWVkLlxuICAgKlxuICAgKiBSZWFkIG1vcmUgYWJvdXQgW2NyZWF0aW5nIGEgY3VzdG9tIGNhY2hlXShodHRwczovL2dpdGh1Yi5jb20vYXV0aDAvYXV0aDAtc3BhLWpzI2NyZWF0aW5nLWEtY3VzdG9tLWNhY2hlKVxuICAgKi9cbiAgY2FjaGU/OiBJQ2FjaGU7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlZnJlc2ggdG9rZW5zIGFyZSB1c2VkIHRvIGZldGNoIG5ldyBhY2Nlc3MgdG9rZW5zIGZyb20gdGhlIEF1dGgwIHNlcnZlci5cbiAgICogSWYgZmFsc2UsIHRoZSBsZWdhY3kgdGVjaG5pcXVlIG9mIHVzaW5nIGEgaGlkZGVuIGlmcmFtZSBhbmQgdGhlIGBhdXRob3JpemF0aW9uX2NvZGVgIGdyYW50IHdpdGggYHByb21wdD1ub25lYCBpcyB1c2VkLlxuICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIGBmYWxzZWAuXG4gICAqXG4gICAqICoqTm90ZSoqOiBVc2Ugb2YgcmVmcmVzaCB0b2tlbnMgbXVzdCBiZSBlbmFibGVkIGJ5IGFuIGFkbWluaXN0cmF0b3Igb24geW91ciBBdXRoMCBjbGllbnQgYXBwbGljYXRpb24uXG4gICAqL1xuICB1c2VSZWZyZXNoVG9rZW5zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgZmFsbGJhY2sgdG8gdGhlIHRlY2huaXF1ZSBvZiB1c2luZyBhIGhpZGRlbiBpZnJhbWUgYW5kIHRoZSBgYXV0aG9yaXphdGlvbl9jb2RlYCBncmFudCB3aXRoIGBwcm9tcHQ9bm9uZWBcbiAgICogd2hlbiB1bmFibGUgdG8gdXNlIHJlZnJlc2ggdG9rZW5zLlxuICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIGB0cnVlYC5cbiAgICpcbiAgICogKipOb3RlKio6IFRoZXJlIG1pZ2h0IGJlIHNpdHVhdGlvbnMgd2hlcmUgZG9pbmcgc2lsZW50IGF1dGggd2l0aCBhIFdlYiBNZXNzYWdlIHJlc3BvbnNlIGZyb20gYW4gaWZyYW1lIGlzIG5vdCBwb3NzaWJsZSxcbiAgICogbGlrZSB3aGVuIHlvdSdyZSBzZXJ2aW5nIHlvdXIgYXBwbGljYXRpb24gZnJvbSB0aGUgZmlsZSBzeXN0ZW0gb3IgYSBjdXN0b20gcHJvdG9jb2wgKGxpa2UgaW4gYSBEZXNrdG9wIG9yIE5hdGl2ZSBhcHApLlxuICAgKiBJbiBzaXR1YXRpb25zIGxpa2UgdGhpcyB5b3UgY2FuIGRpc2FibGUgdGhlIGlmcmFtZSBmYWxsYmFjayBhbmQgaGFuZGxlIHRoZSBmYWlsZWQgUmVmcmVzaCBHcmFudCBhbmQgcHJvbXB0XG4gICAqIHRoZSB1c2VyIHRvIGxvZ2luIGludGVyYWN0aXZlbHkgd2l0aCBgbG9naW5XaXRoUmVkaXJlY3RgIG9yIGBsb2dpbldpdGhQb3B1cGAuXCJcbiAgICpcbiAgICogRS5nLiBVc2luZyB0aGUgYGZpbGU6YCBwcm90b2NvbCBpbiBhbiBFbGVjdHJvbiBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgbGVnYWN5IHRlY2huaXF1ZS5cbiAgICpcbiAgICogIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW5TaWxlbnRseSgpLnN1YnNjcmliZSh7XG4gICAqICAgIGVycm9yOiAoZSkgPT4ge1xuICAgKiAgICAgIGlmIChlLmVycm9yID09PSAnbWlzc2luZ19yZWZyZXNoX3Rva2VuJyB8fCBlLmVycm9yID09PSAnaW52YWxpZF9ncmFudCcpIHtcbiAgICogICAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9naW5XaXRoUmVkaXJlY3QoKTtcbiAgICogICAgICB9XG4gICAqICAgIH1cbiAgICogIH0pO1xuICAgKi9cbiAgdXNlUmVmcmVzaFRva2Vuc0ZhbGxiYWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGRlY2xhcmluZyBiYWNrZ3JvdW5kIGNhbGxzIHRvIC9hdXRob3JpemUgYXMgZmFpbGVkIGZvciB0aW1lb3V0XG4gICAqIERlZmF1bHRzIHRvIDYwcy5cbiAgICovXG4gIGF1dGhvcml6ZVRpbWVvdXRJblNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdG8gcmVjb21tZW5kZWQgZGVmYXVsdHMsIGxpa2UgZGVmYXVsdFNjb3BlXG4gICAqL1xuICBhZHZhbmNlZE9wdGlvbnM/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgc2NvcGUgdG8gYmUgaW5jbHVkZWQgd2l0aCBhbGwgcmVxdWVzdHMuXG4gICAgICogSWYgbm90IHByb3ZpZGVkLCAnb3BlbmlkIHByb2ZpbGUgZW1haWwnIGlzIHVzZWQuIFRoaXMgY2FuIGJlIHNldCB0byBgbnVsbGAgaW4gb3JkZXIgdG8gZWZmZWN0aXZlbHkgcmVtb3ZlIHRoZSBkZWZhdWx0IHNjb3Blcy5cbiAgICAgKlxuICAgICAqIE5vdGU6IFRoZSBgb3BlbmlkYCBzY29wZSBpcyAqKmFsd2F5cyBhcHBsaWVkKiogcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuXG4gICAgICovXG4gICAgZGVmYXVsdFNjb3BlPzogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFsbG93YWJsZSBlbGFwc2VkIHRpbWUgKGluIHNlY29uZHMpIHNpbmNlIGF1dGhlbnRpY2F0aW9uLlxuICAgKiBJZiB0aGUgbGFzdCB0aW1lIHRoZSB1c2VyIGF1dGhlbnRpY2F0ZWQgaXMgZ3JlYXRlciB0aGFuIHRoaXMgdmFsdWUsXG4gICAqIHRoZSB1c2VyIG11c3QgYmUgcmVhdXRoZW50aWNhdGVkLlxuICAgKi9cbiAgbWF4QWdlPzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBzY29wZSB0byBiZSB1c2VkIG9uIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3RzLlxuICAgKiBUaGUgZGVmYXVsdFNjb3BlIGRlZmluZWQgaW4gdGhlIEF1dGgwQ2xpZW50IGlzIGluY2x1ZGVkXG4gICAqIGFsb25nIHdpdGggdGhpcyBzY29wZVxuICAgKi9cbiAgc2NvcGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGF1ZGllbmNlIHRvIGJlIHVzZWQgZm9yIHJlcXVlc3RpbmcgQVBJIGFjY2Vzcy5cbiAgICovXG4gIGF1ZGllbmNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYnVpbHQtaW4gSHR0cCBJbnRlcmNlcHRvciwgdXNlZCBmb3JcbiAgICogYXV0b21hdGljYWxseSBhdHRhY2hpbmcgYWNjZXNzIHRva2Vucy5cbiAgICovXG4gIGh0dHBJbnRlcmNlcHRvcj86IEh0dHBJbnRlcmNlcHRvckNvbmZpZztcblxuICAvKipcbiAgICogUGF0aCBpbiB5b3VyIGFwcGxpY2F0aW9uIHRvIHJlZGlyZWN0IHRvIHdoZW4gdGhlIEF1dGhvcml6YXRpb24gc2VydmVyXG4gICAqIHJldHVybnMgYW4gZXJyb3IuIERlZmF1bHRzIHRvIGAvYFxuICAgKi9cbiAgZXJyb3JQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSWQgb2YgYW4gb3JnYW5pemF0aW9uIHRvIGxvZyBpbiB0b1xuICAgKlxuICAgKiBUaGlzIHdpbGwgc3BlY2lmeSBhbiBgb3JnYW5pemF0aW9uYCBwYXJhbWV0ZXIgaW4geW91ciB1c2VyJ3MgbG9naW4gcmVxdWVzdCBhbmQgd2lsbCBhZGQgYSBzdGVwIHRvIHZhbGlkYXRlXG4gICAqIHRoZSBgb3JnX2lkYCBjbGFpbSBpbiB5b3VyIHVzZXIncyBJRCBUb2tlbi5cbiAgICovXG4gIG9yZ2FuaXphdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElkIG9mIGFuIGludml0YXRpb24gdG8gYWNjZXB0LlxuICAgKlxuICAgKiBUaGlzIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSB1c2VyIGludml0YXRpb24gVVJMIHRoYXQgaXMgZ2l2ZW4gd2hlbiBwYXJ0aWNpcGF0aW5nIGluIGEgdXNlciBpbnZpdGF0aW9uIGZsb3cuXG4gICAqL1xuICBpbnZpdGF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29ubmVjdGlvbiBjb25maWd1cmVkIGZvciB5b3VyIGFwcGxpY2F0aW9uLlxuICAgKiBJZiBudWxsLCBpdCB3aWxsIHJlZGlyZWN0IHRvIHRoZSBBdXRoMCBMb2dpbiBQYWdlIGFuZCBzaG93XG4gICAqIHRoZSBMb2dpbiBXaWRnZXQuXG4gICAqL1xuICBjb25uZWN0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNb2RpZnkgdGhlIHZhbHVlIHVzZWQgYXMgdGhlIGN1cnJlbnQgdGltZSBkdXJpbmcgdGhlIHRva2VuIHZhbGlkYXRpb24uXG4gICAqXG4gICAqICoqTm90ZSoqOiBVc2luZyB0aGlzIGltcHJvcGVybHkgY2FuIHBvdGVudGlhbGx5IGNvbXByb21pc2UgdGhlIHRva2VuIHZhbGlkYXRpb24uXG4gICAqL1xuICBub3dQcm92aWRlcj86ICgpID0+IFByb21pc2U8bnVtYmVyPiB8IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgeW91IG5lZWQgdG8gc2VuZCBjdXN0b20gcGFyYW1ldGVycyB0byB0aGUgQXV0aG9yaXphdGlvbiBTZXJ2ZXIsXG4gICAqIG1ha2Ugc3VyZSB0byB1c2UgdGhlIG9yaWdpbmFsIHBhcmFtZXRlciBuYW1lLlxuICAgKi9cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIEFuZ3VsYXIgc3BlY2lmaWMgc3RhdGUgdG8gYmUgc3RvcmVkIGJlZm9yZSByZWRpcmVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN0YXRlIHtcbiAgLyoqXG4gICAqIFRhcmdldCBwYXRoIHRoZSBhcHAgZ2V0cyByb3V0ZWQgdG8gYWZ0ZXJcbiAgICogaGFuZGxpbmcgdGhlIGNhbGxiYWNrIGZyb20gQXV0aDAgKGRlZmF1bHRzIHRvICcvJylcbiAgICovXG4gIHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogQW55IGN1c3RvbSBwYXJhbWV0ZXIgdG8gYmUgc3RvcmVkIGluIGFwcFN0YXRlXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogR2V0cyBhbmQgc2V0cyBjb25maWd1cmF0aW9uIGZvciB0aGUgaW50ZXJuYWwgQXV0aDAgY2xpZW50LiBUaGlzIGNhbiBiZVxuICogdXNlZCB0byBwcm92aWRlIGNvbmZpZ3VyYXRpb24gb3V0c2lkZSBvZiB1c2luZyBBdXRoTW9kdWxlLmZvclJvb3QsIGkuZS4gZnJvbVxuICogYSBmYWN0b3J5IHByb3ZpZGVkIGJ5IEFQUF9JTklUSUFMSVpFUi5cbiAqXG4gKiBAdXNhZ2VcbiAqXG4gKiBgYGBqc1xuICogLy8gYXBwLm1vZHVsZS50c1xuICogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBpbXBvcnQgeyBBdXRoTW9kdWxlLCBBdXRoQ2xpZW50Q29uZmlnIH0gZnJvbSAnQGF1dGgwL2F1dGgwLWFuZ3VsYXInO1xuICpcbiAqIC8vIFByb3ZpZGUgYW4gaW5pdGlhbGl6ZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgUHJvbWlzZVxuICogZnVuY3Rpb24gY29uZmlnSW5pdGlhbGl6ZXIoXG4gKiAgIGh0dHA6IEh0dHBDbGllbnQsXG4gKiAgIGNvbmZpZzogQXV0aENsaWVudENvbmZpZ1xuICogKSB7XG4gKiAgIHJldHVybiAoKSA9PlxuICogICAgIGh0dHBcbiAqICAgICAgIC5nZXQoJy9jb25maWcnKVxuICogICAgICAgLnRvUHJvbWlzZSgpXG4gKiAgICAgICAudGhlbigobG9hZGVkQ29uZmlnOiBhbnkpID0+IGNvbmZpZy5zZXQobG9hZGVkQ29uZmlnKSk7ICAgLy8gU2V0IHRoZSBjb25maWcgdGhhdCB3YXMgbG9hZGVkIGFzeW5jaHJvbm91c2x5IGhlcmVcbiAqIH1cbiAqXG4gKiAvLyBQcm92aWRlIEFQUF9JTklUSUFMSVpFUiB3aXRoIHRoaXMgZnVuY3Rpb24uIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25maWcgcGFzc2VkIHRvIEF1dGhNb2R1bGUuZm9yUm9vdFxuICogaW1wb3J0czogW1xuICogICAvLyBvdGhlciBpbXBvcnRzLi5cbiAqXG4gKiAgIEh0dHBDbGllbnRNb2R1bGUsXG4gKiAgIEF1dGhNb2R1bGUuZm9yUm9vdCgpLCAgIC8vPC0gZG9uJ3QgcGFzcyBhbnkgY29uZmlnIGhlcmVcbiAqIF0sXG4gKiBwcm92aWRlcnM6IFtcbiAqICAge1xuICogICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAqICAgICB1c2VGYWN0b3J5OiBjb25maWdJbml0aWFsaXplciwgICAgLy8gPC0gcGFzcyB5b3VyIGluaXRpYWxpemVyIGZ1bmN0aW9uIGhlcmVcbiAqICAgICBkZXBzOiBbSHR0cENsaWVudCwgQXV0aENsaWVudENvbmZpZ10sXG4gKiAgICAgbXVsdGk6IHRydWUsXG4gKiAgIH0sXG4gKiBdLFxuICogYGBgXG4gKlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhDbGllbnRDb25maWcge1xuICBwcml2YXRlIGNvbmZpZz86IEF1dGhDb25maWc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChBdXRoQ29uZmlnU2VydmljZSkgY29uZmlnPzogQXV0aENvbmZpZykge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgY29uZmlndXJhdGlvbiB0byBiZSByZWFkIGJ5IG90aGVyIGNvbnN1bWVycyBvZiB0aGUgc2VydmljZSAoc2VlIHVzYWdlIG5vdGVzKVxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uIHRvIHNldFxuICAgKi9cbiAgc2V0KGNvbmZpZzogQXV0aENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNvbmZpZyB0aGF0IGhhcyBiZWVuIHNldCBieSBvdGhlciBjb25zdW1lcnMgb2YgdGhlIHNlcnZpY2VcbiAgICovXG4gIGdldCgpOiBBdXRoQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcgYXMgQXV0aENvbmZpZztcbiAgfVxufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgYWNjZXNzaW5nIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqXG4gKiBVc2UgdGhlIGBJbmplY3RgIGRlY29yYXRvciB0byBhY2Nlc3MgdGhlIGNvbmZpZ3VyYXRpb24gZnJvbSBhIHNlcnZpY2Ugb3IgY29tcG9uZW50OlxuICpcbiAqIGBgYFxuICogY2xhc3MgTXlTZXJ2aWNlKEBJbmplY3QoQXV0aENvbmZpZ1NlcnZpY2UpIGNvbmZpZzogQXV0aENvbmZpZykge31cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQXV0aENvbmZpZ1NlcnZpY2UgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aENvbmZpZz4oXG4gICdhdXRoMC1hbmd1bGFyLmNvbmZpZydcbik7XG4iXX0=
@@ -4,7 +4,7 @@ import { of, from, Subject, iif, defer, ReplaySubject, throwError, } from 'rxjs'
4
4
  import { concatMap, tap, map, takeUntil, catchError, switchMap, withLatestFrom, } from 'rxjs/operators';
5
5
  import { Auth0ClientService } from './auth.client';
6
6
  import { AbstractNavigator } from './abstract-navigator';
7
- import { AuthClientConfig, } from './auth.config';
7
+ import { AuthClientConfig } from './auth.config';
8
8
  import { AuthState } from './auth.state';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "./auth.client";
@@ -180,6 +180,48 @@ export class AuthService {
180
180
  return throwError(error);
181
181
  }));
182
182
  }
183
+ /**
184
+ * ```js
185
+ * getUser(options).subscribe(user => ...);
186
+ * ```
187
+ *
188
+ * Returns the user information if available (decoded
189
+ * from the `id_token`).
190
+ *
191
+ * If you provide an audience or scope, they should match an existing Access Token
192
+ * (the SDK stores a corresponding ID Token with every Access Token, and uses the
193
+ * scope and audience to look up the ID Token)
194
+ *
195
+ * @remarks
196
+ *
197
+ * The returned observable will emit once and then complete.
198
+ *
199
+ * @typeparam TUser The type to return, has to extend {@link User}.
200
+ * @param options The options to get the user
201
+ */
202
+ getUser(options) {
203
+ return defer(() => this.auth0Client.getUser(options));
204
+ }
205
+ /**
206
+ * ```js
207
+ * getIdTokenClaims(options).subscribe(claims => ...);
208
+ * ```
209
+ *
210
+ * Returns all claims from the id_token if available.
211
+ *
212
+ * If you provide an audience or scope, they should match an existing Access Token
213
+ * (the SDK stores a corresponding ID Token with every Access Token, and uses the
214
+ * scope and audience to look up the ID Token)
215
+ *
216
+ * @remarks
217
+ *
218
+ * The returned observable will emit once and then complete.
219
+ *
220
+ * @param options The options to get the Id token claims
221
+ */
222
+ getIdTokenClaims(options) {
223
+ return defer(() => this.auth0Client.getIdTokenClaims(options));
224
+ }
183
225
  /**
184
226
  * ```js
185
227
  * handleRedirectCallback(url).subscribe(result => ...)
@@ -254,4 +296,4 @@ AuthService.ctorParameters = () => [
254
296
  { type: AbstractNavigator },
255
297
  { type: AuthState }
256
298
  ];
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsV0FBVyxHQVVaLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLEVBQUUsRUFDRixJQUFJLEVBQ0osT0FBTyxFQUVQLEdBQUcsRUFDSCxLQUFLLEVBQ0wsYUFBYSxFQUNiLFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxTQUFTLEVBQ1QsR0FBRyxFQUNILEdBQUcsRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUNMLGdCQUFnQixHQUVqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7QUFLekMsTUFBTSxPQUFPLFdBQVc7SUFxQ3RCLFlBQ3NDLFdBQXdCLEVBQ3BELGFBQStCLEVBQy9CLFNBQTRCLEVBQzVCLFNBQW9CO1FBSFEsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDcEQsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUF4Q3RCLHFCQUFnQixHQUFHLElBQUksYUFBYSxDQUFZLENBQUMsQ0FBQyxDQUFDO1FBRTNELHVDQUF1QztRQUMvQixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFR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UUFDdkMsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILGlCQUFpQixDQUFDLE9BQThCO1FBQzlDLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxjQUFjLENBQUMsT0FBMEI7UUFDdkMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2IsT0FBTyxDQUNMLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDekIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUMvQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Ozs7WUF6VEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUEzQ0MsV0FBVyx1QkFrRlIsTUFBTSxTQUFDLGtCQUFrQjtZQTlDNUIsZ0JBQWdCO1lBRlQsaUJBQWlCO1lBS2pCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBBdXRoMENsaWVudCxcbiAgUmVkaXJlY3RMb2dpbk9wdGlvbnMsXG4gIFBvcHVwTG9naW5PcHRpb25zLFxuICBQb3B1cENvbmZpZ09wdGlvbnMsXG4gIExvZ291dE9wdGlvbnMsXG4gIEdldFRva2VuU2lsZW50bHlPcHRpb25zLFxuICBHZXRUb2tlbldpdGhQb3B1cE9wdGlvbnMsXG4gIFJlZGlyZWN0TG9naW5SZXN1bHQsXG4gIExvZ291dFVybE9wdGlvbnMsXG4gIEdldFRva2VuU2lsZW50bHlWZXJib3NlUmVzcG9uc2UsXG59IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuXG5pbXBvcnQge1xuICBvZixcbiAgZnJvbSxcbiAgU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgaWlmLFxuICBkZWZlcixcbiAgUmVwbGF5U3ViamVjdCxcbiAgdGhyb3dFcnJvcixcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGNvbmNhdE1hcCxcbiAgdGFwLFxuICBtYXAsXG4gIHRha2VVbnRpbCxcbiAgY2F0Y2hFcnJvcixcbiAgc3dpdGNoTWFwLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoMENsaWVudFNlcnZpY2UgfSBmcm9tICcuL2F1dGguY2xpZW50JztcbmltcG9ydCB7IEFic3RyYWN0TmF2aWdhdG9yIH0gZnJvbSAnLi9hYnN0cmFjdC1uYXZpZ2F0b3InO1xuaW1wb3J0IHtcbiAgQXV0aENsaWVudENvbmZpZyxcbiAgQXBwU3RhdGUsXG59IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aFN0YXRlIH0gZnJvbSAnLi9hdXRoLnN0YXRlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlPFRBcHBTdGF0ZSBleHRlbmRzIEFwcFN0YXRlID0gQXBwU3RhdGU+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBhcHBTdGF0ZVN1YmplY3QkID0gbmV3IFJlcGxheVN1YmplY3Q8VEFwcFN0YXRlPigxKTtcblxuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDExNzcxNjNcbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIC8qKlxuICAgKiBFbWl0cyBib29sZWFuIHZhbHVlcyBpbmRpY2F0aW5nIHRoZSBsb2FkaW5nIHN0YXRlIG9mIHRoZSBTREsuXG4gICAqL1xuICByZWFkb25seSBpc0xvYWRpbmckID0gdGhpcy5hdXRoU3RhdGUuaXNMb2FkaW5nJDtcblxuICAvKipcbiAgICogRW1pdHMgYm9vbGVhbiB2YWx1ZXMgaW5kaWNhdGluZyB0aGUgYXV0aGVudGljYXRpb24gc3RhdGUgb2YgdGhlIHVzZXIuIElmIGB0cnVlYCwgaXQgbWVhbnMgYSB1c2VyIGhhcyBhdXRoZW50aWNhdGVkLlxuICAgKiBUaGlzIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIGBpc0xvYWRpbmckYCwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBtYW51YWxseSBjaGVjayB0aGUgbG9hZGluZyBzdGF0ZSBvZiB0aGUgU0RLLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNBdXRoZW50aWNhdGVkJCA9IHRoaXMuYXV0aFN0YXRlLmlzQXV0aGVudGljYXRlZCQ7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGRldGFpbHMgYWJvdXQgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlciwgb3IgbnVsbCBpZiBub3QgYXV0aGVudGljYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXIkID0gdGhpcy5hdXRoU3RhdGUudXNlciQ7XG5cbiAgLyoqXG4gICAqIEVtaXRzIElEIHRva2VuIGNsYWltcyB3aGVuIGF1dGhlbnRpY2F0ZWQsIG9yIG51bGwgaWYgbm90IGF1dGhlbnRpY2F0ZWQuXG4gICAqL1xuICByZWFkb25seSBpZFRva2VuQ2xhaW1zJCA9IHRoaXMuYXV0aFN0YXRlLmlkVG9rZW5DbGFpbXMkO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBlcnJvcnMgdGhhdCBvY2N1ciBkdXJpbmcgbG9naW4sIG9yIHdoZW4gY2hlY2tpbmcgZm9yIGFuIGFjdGl2ZSBzZXNzaW9uIG9uIHN0YXJ0dXAuXG4gICAqL1xuICByZWFkb25seSBlcnJvciQgPSB0aGlzLmF1dGhTdGF0ZS5lcnJvciQ7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSAoaWYgYW55KSB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGBsb2dpbldpdGhSZWRpcmVjdGAgbWV0aG9kIGNhbGxcbiAgICogYnV0IG9ubHkgKiphZnRlcioqIGBoYW5kbGVSZWRpcmVjdENhbGxiYWNrYCBpcyBmaXJzdCBjYWxsZWRcbiAgICovXG4gIHJlYWRvbmx5IGFwcFN0YXRlJCA9IHRoaXMuYXBwU3RhdGVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEF1dGgwQ2xpZW50U2VydmljZSkgcHJpdmF0ZSBhdXRoMENsaWVudDogQXV0aDBDbGllbnQsXG4gICAgcHJpdmF0ZSBjb25maWdGYWN0b3J5OiBBdXRoQ2xpZW50Q29uZmlnLFxuICAgIHByaXZhdGUgbmF2aWdhdG9yOiBBYnN0cmFjdE5hdmlnYXRvcixcbiAgICBwcml2YXRlIGF1dGhTdGF0ZTogQXV0aFN0YXRlXG4gICkge1xuICAgIGNvbnN0IGNoZWNrU2Vzc2lvbk9yQ2FsbGJhY2skID0gKGlzQ2FsbGJhY2s6IGJvb2xlYW4pID0+XG4gICAgICBpaWYoXG4gICAgICAgICgpID0+IGlzQ2FsbGJhY2ssXG4gICAgICAgIHRoaXMuaGFuZGxlUmVkaXJlY3RDYWxsYmFjaygpLFxuICAgICAgICBkZWZlcigoKSA9PiB0aGlzLmF1dGgwQ2xpZW50LmNoZWNrU2Vzc2lvbigpKVxuICAgICAgKTtcblxuICAgIHRoaXMuc2hvdWxkSGFuZGxlQ2FsbGJhY2soKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoaXNDYWxsYmFjaykgPT5cbiAgICAgICAgICBjaGVja1Nlc3Npb25PckNhbGxiYWNrJChpc0NhbGxiYWNrKS5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdGYWN0b3J5LmdldCgpO1xuICAgICAgICAgICAgICB0aGlzLmF1dGhTdGF0ZS5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yLm5hdmlnYXRlQnlVcmwoY29uZmlnLmVycm9yUGF0aCB8fCAnLycpO1xuICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0aFN0YXRlLnNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgc2VydmljZSBpcyBkZXN0cm95ZWRcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MTE3NzE2M1xuICAgIHRoaXMubmdVbnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBsb2dpbldpdGhSZWRpcmVjdChvcHRpb25zKTtcbiAgICogYGBgXG4gICAqXG4gICAqIFBlcmZvcm1zIGEgcmVkaXJlY3QgdG8gYC9hdXRob3JpemVgIHVzaW5nIHRoZSBwYXJhbWV0ZXJzXG4gICAqIHByb3ZpZGVkIGFzIGFyZ3VtZW50cy4gUmFuZG9tIGFuZCBzZWN1cmUgYHN0YXRlYCBhbmQgYG5vbmNlYFxuICAgKiBwYXJhbWV0ZXJzIHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBsb2dpbiBvcHRpb25zXG4gICAqL1xuICBsb2dpbldpdGhSZWRpcmVjdChvcHRpb25zPzogUmVkaXJlY3RMb2dpbk9wdGlvbnM8VEFwcFN0YXRlPik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuYXV0aDBDbGllbnQubG9naW5XaXRoUmVkaXJlY3Qob3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGF3YWl0IGxvZ2luV2l0aFBvcHVwKG9wdGlvbnMpO1xuICAgKiBgYGBcbiAgICpcbiAgICogT3BlbnMgYSBwb3B1cCB3aXRoIHRoZSBgL2F1dGhvcml6ZWAgVVJMIHVzaW5nIHRoZSBwYXJhbWV0ZXJzXG4gICAqIHByb3ZpZGVkIGFzIGFyZ3VtZW50cy4gUmFuZG9tIGFuZCBzZWN1cmUgYHN0YXRlYCBhbmQgYG5vbmNlYFxuICAgKiBwYXJhbWV0ZXJzIHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuIElmIHRoZSByZXNwb25zZSBpcyBzdWNjZXNzZnVsLFxuICAgKiByZXN1bHRzIHdpbGwgYmUgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZWlyIGV4cGlyYXRpb24gdGltZXMuXG4gICAqXG4gICAqIElNUE9SVEFOVDogVGhpcyBtZXRob2QgaGFzIHRvIGJlIGNhbGxlZCBmcm9tIGFuIGV2ZW50IGhhbmRsZXJcbiAgICogdGhhdCB3YXMgc3RhcnRlZCBieSB0aGUgdXNlciBsaWtlIGEgYnV0dG9uIGNsaWNrLCBmb3IgZXhhbXBsZSxcbiAgICogb3RoZXJ3aXNlIHRoZSBwb3B1cCB3aWxsIGJlIGJsb2NrZWQgaW4gbW9zdCBicm93c2Vycy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGxvZ2luIG9wdGlvbnNcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgcG9wdXAgd2luZG93XG4gICAqL1xuICBsb2dpbldpdGhQb3B1cChcbiAgICBvcHRpb25zPzogUG9wdXBMb2dpbk9wdGlvbnMsXG4gICAgY29uZmlnPzogUG9wdXBDb25maWdPcHRpb25zXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5hdXRoMENsaWVudC5sb2dpbldpdGhQb3B1cChvcHRpb25zLCBjb25maWcpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmF1dGhTdGF0ZS5yZWZyZXNoKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogbG9nb3V0KCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBDbGVhcnMgdGhlIGFwcGxpY2F0aW9uIHNlc3Npb24gYW5kIHBlcmZvcm1zIGEgcmVkaXJlY3QgdG8gYC92Mi9sb2dvdXRgLCB1c2luZ1xuICAgKiB0aGUgcGFyYW1ldGVycyBwcm92aWRlZCBhcyBhcmd1bWVudHMsIHRvIGNsZWFyIHRoZSBBdXRoMCBzZXNzaW9uLlxuICAgKiBJZiB0aGUgYGZlZGVyYXRlZGAgb3B0aW9uIGlzIHNwZWNpZmllZCBpdCBhbHNvIGNsZWFycyB0aGUgSWRlbnRpdHkgUHJvdmlkZXIgc2Vzc2lvbi5cbiAgICogSWYgdGhlIGBsb2NhbE9ubHlgIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGl0IG9ubHkgY2xlYXJzIHRoZSBhcHBsaWNhdGlvbiBzZXNzaW9uLlxuICAgKiBJdCBpcyBpbnZhbGlkIHRvIHNldCBib3RoIHRoZSBgZmVkZXJhdGVkYCBhbmQgYGxvY2FsT25seWAgb3B0aW9ucyB0byBgdHJ1ZWAsXG4gICAqIGFuZCBhbiBlcnJvciB3aWxsIGJlIHRocm93biBpZiB5b3UgZG8uXG4gICAqIFtSZWFkIG1vcmUgYWJvdXQgaG93IExvZ291dCB3b3JrcyBhdCBBdXRoMF0oaHR0cHM6Ly9hdXRoMC5jb20vZG9jcy9sb2dvdXQpLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgbG9nb3V0IG9wdGlvbnNcbiAgICovXG4gIGxvZ291dChvcHRpb25zPzogTG9nb3V0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGxvZ291dCA9IHRoaXMuYXV0aDBDbGllbnQubG9nb3V0KG9wdGlvbnMpIHx8IG9mKG51bGwpO1xuXG4gICAgZnJvbShsb2dvdXQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAob3B0aW9ucz8ubG9jYWxPbmx5KSB7XG4gICAgICAgIHRoaXMuYXV0aFN0YXRlLnJlZnJlc2goKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgbmV3IGFjY2VzcyB0b2tlbiBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgL29hdXRoL3Rva2VuIGVuZHBvaW50LCBvbWl0dGluZyB0aGUgcmVmcmVzaCB0b2tlbi5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSB0b2tlbiBmZXRjaC5cbiAgICovXG4gIGdldEFjY2Vzc1Rva2VuU2lsZW50bHkoXG4gICAgb3B0aW9uczogR2V0VG9rZW5TaWxlbnRseU9wdGlvbnMgJiB7IGRldGFpbGVkUmVzcG9uc2U6IHRydWUgfVxuICApOiBPYnNlcnZhYmxlPEdldFRva2VuU2lsZW50bHlWZXJib3NlUmVzcG9uc2U+O1xuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgbmV3IGFjY2VzcyB0b2tlbiBhbmQgcmV0dXJucyBpdC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSB0b2tlbiBmZXRjaC5cbiAgICovXG4gIGdldEFjY2Vzc1Rva2VuU2lsZW50bHkob3B0aW9ucz86IEdldFRva2VuU2lsZW50bHlPcHRpb25zKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBnZXRBY2Nlc3NUb2tlblNpbGVudGx5KG9wdGlvbnMpLnN1YnNjcmliZSh0b2tlbiA9PiAuLi4pXG4gICAqIGBgYFxuICAgKlxuICAgKiBJZiB0aGVyZSdzIGEgdmFsaWQgdG9rZW4gc3RvcmVkLCByZXR1cm4gaXQuIE90aGVyd2lzZSwgb3BlbnMgYW5cbiAgICogaWZyYW1lIHdpdGggdGhlIGAvYXV0aG9yaXplYCBVUkwgdXNpbmcgdGhlIHBhcmFtZXRlcnMgcHJvdmlkZWRcbiAgICogYXMgYXJndW1lbnRzLiBSYW5kb20gYW5kIHNlY3VyZSBgc3RhdGVgIGFuZCBgbm9uY2VgIHBhcmFtZXRlcnNcbiAgICogd2lsbCBiZSBhdXRvLWdlbmVyYXRlZC4gSWYgdGhlIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWwsIHJlc3VsdHNcbiAgICogd2lsbCBiZSB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlaXIgZXhwaXJhdGlvbiB0aW1lcy5cbiAgICpcbiAgICogSWYgcmVmcmVzaCB0b2tlbnMgYXJlIHVzZWQsIHRoZSB0b2tlbiBlbmRwb2ludCBpcyBjYWxsZWQgZGlyZWN0bHkgd2l0aCB0aGVcbiAgICogJ3JlZnJlc2hfdG9rZW4nIGdyYW50LiBJZiBubyByZWZyZXNoIHRva2VuIGlzIGF2YWlsYWJsZSB0byBtYWtlIHRoaXMgY2FsbCxcbiAgICogdGhlIFNESyBmYWxscyBiYWNrIHRvIHVzaW5nIGFuIGlmcmFtZSB0byB0aGUgJy9hdXRob3JpemUnIFVSTC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgbWF5IHVzZSBhIHdlYiB3b3JrZXIgdG8gcGVyZm9ybSB0aGUgdG9rZW4gY2FsbCBpZiB0aGUgaW4tbWVtb3J5XG4gICAqIGNhY2hlIGlzIHVzZWQuXG4gICAqXG4gICAqIElmIGFuIGBhdWRpZW5jZWAgdmFsdWUgaXMgZ2l2ZW4gdG8gdGhpcyBmdW5jdGlvbiwgdGhlIFNESyBhbHdheXMgZmFsbHNcbiAgICogYmFjayB0byB1c2luZyBhbiBpZnJhbWUgdG8gbWFrZSB0aGUgdG9rZW4gZXhjaGFuZ2UuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBpbiBhbGwgY2FzZXMsIGZhbGxpbmcgYmFjayB0byBhbiBpZnJhbWUgcmVxdWlyZXMgYWNjZXNzIHRvXG4gICAqIHRoZSBgYXV0aDBgIGNvb2tpZSwgYW5kIHRodXMgd2lsbCBub3Qgd29yayBpbiBicm93c2VycyB0aGF0IGJsb2NrIHRoaXJkLXBhcnR5XG4gICAqIGNvb2tpZXMgYnkgZGVmYXVsdCAoU2FmYXJpLCBCcmF2ZSwgZXRjKS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSB0b2tlbiBmZXRjaC5cbiAgICovXG4gIGdldEFjY2Vzc1Rva2VuU2lsZW50bHkoXG4gICAgb3B0aW9uczogR2V0VG9rZW5TaWxlbnRseU9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPHN0cmluZyB8IEdldFRva2VuU2lsZW50bHlWZXJib3NlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gb2YodGhpcy5hdXRoMENsaWVudCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2xpZW50KSA9PlxuICAgICAgICBvcHRpb25zLmRldGFpbGVkUmVzcG9uc2UgPT09IHRydWVcbiAgICAgICAgICA/IGNsaWVudC5nZXRUb2tlblNpbGVudGx5KHsgLi4ub3B0aW9ucywgZGV0YWlsZWRSZXNwb25zZTogdHJ1ZSB9KVxuICAgICAgICAgIDogY2xpZW50LmdldFRva2VuU2lsZW50bHkob3B0aW9ucylcbiAgICAgICksXG4gICAgICB0YXAoKHRva2VuKSA9PlxuICAgICAgICB0aGlzLmF1dGhTdGF0ZS5zZXRBY2Nlc3NUb2tlbihcbiAgICAgICAgICB0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnID8gdG9rZW4gOiB0b2tlbi5hY2Nlc3NfdG9rZW5cbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuYXV0aFN0YXRlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgdGhpcy5hdXRoU3RhdGUucmVmcmVzaCgpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogZ2V0VG9rZW5XaXRoUG9wdXAob3B0aW9ucykuc3Vic2NyaWJlKHRva2VuID0+IC4uLilcbiAgICogYGBgXG4gICAqXG4gICAqIEdldCBhbiBhY2Nlc3MgdG9rZW4gaW50ZXJhY3RpdmVseS5cbiAgICpcbiAgICogT3BlbnMgYSBwb3B1cCB3aXRoIHRoZSBgL2F1dGhvcml6ZWAgVVJMIHVzaW5nIHRoZSBwYXJhbWV0ZXJzXG4gICAqIHByb3ZpZGVkIGFzIGFyZ3VtZW50cy4gUmFuZG9tIGFuZCBzZWN1cmUgYHN0YXRlYCBhbmQgYG5vbmNlYFxuICAgKiBwYXJhbWV0ZXJzIHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuIElmIHRoZSByZXNwb25zZSBpcyBzdWNjZXNzZnVsLFxuICAgKiByZXN1bHRzIHdpbGwgYmUgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZWlyIGV4cGlyYXRpb24gdGltZXMuXG4gICAqL1xuICBnZXRBY2Nlc3NUb2tlbldpdGhQb3B1cChcbiAgICBvcHRpb25zPzogR2V0VG9rZW5XaXRoUG9wdXBPcHRpb25zXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuYXV0aDBDbGllbnQpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNsaWVudCkgPT4gY2xpZW50LmdldFRva2VuV2l0aFBvcHVwKG9wdGlvbnMpKSxcbiAgICAgIHRhcCgodG9rZW4pID0+IHRoaXMuYXV0aFN0YXRlLnNldEFjY2Vzc1Rva2VuKHRva2VuKSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmF1dGhTdGF0ZS5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgIHRoaXMuYXV0aFN0YXRlLnJlZnJlc2goKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGhhbmRsZVJlZGlyZWN0Q2FsbGJhY2sodXJsKS5zdWJzY3JpYmUocmVzdWx0ID0+IC4uLilcbiAgICogYGBgXG4gICAqXG4gICAqIEFmdGVyIHRoZSBicm93c2VyIHJlZGlyZWN0cyBiYWNrIHRvIHRoZSBjYWxsYmFjayBwYWdlLFxuICAgKiBjYWxsIGBoYW5kbGVSZWRpcmVjdENhbGxiYWNrYCB0byBoYW5kbGUgc3VjY2VzcyBhbmQgZXJyb3JcbiAgICogcmVzcG9uc2VzIGZyb20gQXV0aDAuIElmIHRoZSByZXNwb25zZSBpcyBzdWNjZXNzZnVsLCByZXN1bHRzXG4gICAqIHdpbGwgYmUgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZWlyIGV4cGlyYXRpb24gdGltZXMuXG4gICAqXG4gICAqIENhbGxpbmcgdGhpcyBtZXRob2QgYWxzbyByZWZyZXNoZXMgdGhlIGF1dGhlbnRpY2F0aW9uIGFuZCB1c2VyIHN0YXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gcmV0cmlldmUgdGhlIGBzdGF0ZWAgYW5kIGBjb2RlYCB2YWx1ZXMuIERlZmF1bHRzIHRvIGB3aW5kb3cubG9jYXRpb24uaHJlZmAgaWYgbm90IGdpdmVuLlxuICAgKi9cbiAgaGFuZGxlUmVkaXJlY3RDYWxsYmFjayh1cmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlZGlyZWN0TG9naW5SZXN1bHQ8VEFwcFN0YXRlPj4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiB0aGlzLmF1dGgwQ2xpZW50LmhhbmRsZVJlZGlyZWN0Q2FsbGJhY2s8VEFwcFN0YXRlPih1cmwpKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5hdXRoU3RhdGUuaXNMb2FkaW5nJCksXG4gICAgICB0YXAoKFtyZXN1bHQsIGlzTG9hZGluZ10pID0+IHtcbiAgICAgICAgaWYgKCFpc0xvYWRpbmcpIHtcbiAgICAgICAgICB0aGlzLmF1dGhTdGF0ZS5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBwU3RhdGUgPSByZXN1bHQ/LmFwcFN0YXRlO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBhcHBTdGF0ZT8udGFyZ2V0ID8/ICcvJztcblxuICAgICAgICBpZiAoYXBwU3RhdGUpIHtcbiAgICAgICAgICB0aGlzLmFwcFN0YXRlU3ViamVjdCQubmV4dChhcHBTdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5hdmlnYXRvci5uYXZpZ2F0ZUJ5VXJsKHRhcmdldCk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoW3Jlc3VsdF0pID0+IHJlc3VsdClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGJ1aWxkQXV0aG9yaXplVXJsKCkuc3Vic2NyaWJlKHVybCA9PiAuLi4pXG4gICAqIGBgYFxuICAgKlxuICAgKiBCdWlsZHMgYW4gYC9hdXRob3JpemVgIFVSTCBmb3IgbG9naW5XaXRoUmVkaXJlY3QgdXNpbmcgdGhlIHBhcmFtZXRlcnNcbiAgICogcHJvdmlkZWQgYXMgYXJndW1lbnRzLiBSYW5kb20gYW5kIHNlY3VyZSBgc3RhdGVgIGFuZCBgbm9uY2VgXG4gICAqIHBhcmFtZXRlcnMgd2lsbCBiZSBhdXRvLWdlbmVyYXRlZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnNcbiAgICogQHJldHVybnMgQSBVUkwgdG8gdGhlIGF1dGhvcml6ZSBlbmRwb2ludFxuICAgKi9cbiAgYnVpbGRBdXRob3JpemVVcmwob3B0aW9ucz86IFJlZGlyZWN0TG9naW5PcHRpb25zKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5hdXRoMENsaWVudC5idWlsZEF1dGhvcml6ZVVybChvcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogYnVpbGRMb2dvdXRVcmwoKS5zdWJzY3JpYmUodXJsID0+IC4uLilcbiAgICogYGBgXG4gICAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgbG9nb3V0IGVuZHBvaW50LlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgcGFyYW1ldGVycyB0aGF0IGFwcGVhciBpbiB0aGUgbG9nb3V0IGVuZHBvaW50IFVSTC5cbiAgICogQHJldHVybnMgYSBVUkwgdG8gdGhlIGxvZ291dCBlbmRwb2ludCB1c2luZyB0aGUgcGFyYW1ldGVycyBwcm92aWRlZCBhcyBhcmd1bWVudHMuXG4gICAqL1xuICBidWlsZExvZ291dFVybChvcHRpb25zPzogTG9nb3V0VXJsT3B0aW9ucyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuYXV0aDBDbGllbnQuYnVpbGRMb2dvdXRVcmwob3B0aW9ucykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRIYW5kbGVDYWxsYmFjaygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gb2YobG9jYXRpb24uc2VhcmNoKS5waXBlKFxuICAgICAgbWFwKChzZWFyY2gpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAoc2VhcmNoLmluY2x1ZGVzKCdjb2RlPScpIHx8IHNlYXJjaC5pbmNsdWRlcygnZXJyb3I9JykpICYmXG4gICAgICAgICAgc2VhcmNoLmluY2x1ZGVzKCdzdGF0ZT0nKSAmJlxuICAgICAgICAgICF0aGlzLmNvbmZpZ0ZhY3RvcnkuZ2V0KCkuc2tpcFJlZGlyZWN0Q2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsV0FBVyxHQWNaLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLEVBQUUsRUFDRixJQUFJLEVBQ0osT0FBTyxFQUVQLEdBQUcsRUFDSCxLQUFLLEVBQ0wsYUFBYSxFQUNiLFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxTQUFTLEVBQ1QsR0FBRyxFQUNILEdBQUcsRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7OztBQUt6QyxNQUFNLE9BQU8sV0FBVztJQXNDdEIsWUFDc0MsV0FBd0IsRUFDcEQsYUFBK0IsRUFDL0IsU0FBNEIsRUFDNUIsU0FBb0I7UUFIUSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNwRCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXhDdEIscUJBQWdCLEdBQUcsSUFBSSxhQUFhLENBQVksQ0FBQyxDQUFDLENBQUM7UUFFM0QsdUNBQXVDO1FBQy9CLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEs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YUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUMvQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Ozs7WUFoWEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUE1Q0MsV0FBVyx1QkFvRlIsTUFBTSxTQUFDLGtCQUFrQjtZQTdDckIsZ0JBQWdCO1lBRGhCLGlCQUFpQjtZQUVqQixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQXV0aDBDbGllbnQsXG4gIFJlZGlyZWN0TG9naW5PcHRpb25zLFxuICBQb3B1cExvZ2luT3B0aW9ucyxcbiAgUG9wdXBDb25maWdPcHRpb25zLFxuICBMb2dvdXRPcHRpb25zLFxuICBHZXRUb2tlblNpbGVudGx5T3B0aW9ucyxcbiAgR2V0VG9rZW5XaXRoUG9wdXBPcHRpb25zLFxuICBSZWRpcmVjdExvZ2luUmVzdWx0LFxuICBMb2dvdXRVcmxPcHRpb25zLFxuICBHZXRUb2tlblNpbGVudGx5VmVyYm9zZVJlc3BvbnNlLFxuICBHZXRVc2VyT3B0aW9ucyxcbiAgVXNlcixcbiAgR2V0SWRUb2tlbkNsYWltc09wdGlvbnMsXG4gIElkVG9rZW4sXG59IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuXG5pbXBvcnQge1xuICBvZixcbiAgZnJvbSxcbiAgU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgaWlmLFxuICBkZWZlcixcbiAgUmVwbGF5U3ViamVjdCxcbiAgdGhyb3dFcnJvcixcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGNvbmNhdE1hcCxcbiAgdGFwLFxuICBtYXAsXG4gIHRha2VVbnRpbCxcbiAgY2F0Y2hFcnJvcixcbiAgc3dpdGNoTWFwLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRoMENsaWVudFNlcnZpY2UgfSBmcm9tICcuL2F1dGguY2xpZW50JztcbmltcG9ydCB7IEFic3RyYWN0TmF2aWdhdG9yIH0gZnJvbSAnLi9hYnN0cmFjdC1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgQXV0aENsaWVudENvbmZpZywgQXBwU3RhdGUgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhTdGF0ZSB9IGZyb20gJy4vYXV0aC5zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZTxUQXBwU3RhdGUgZXh0ZW5kcyBBcHBTdGF0ZSA9IEFwcFN0YXRlPlxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgYXBwU3RhdGVTdWJqZWN0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PFRBcHBTdGF0ZT4oMSk7XG5cbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQxMTc3MTYzXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAvKipcbiAgICogRW1pdHMgYm9vbGVhbiB2YWx1ZXMgaW5kaWNhdGluZyB0aGUgbG9hZGluZyBzdGF0ZSBvZiB0aGUgU0RLLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNMb2FkaW5nJCA9IHRoaXMuYXV0aFN0YXRlLmlzTG9hZGluZyQ7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGJvb2xlYW4gdmFsdWVzIGluZGljYXRpbmcgdGhlIGF1dGhlbnRpY2F0aW9uIHN0YXRlIG9mIHRoZSB1c2VyLiBJZiBgdHJ1ZWAsIGl0IG1lYW5zIGEgdXNlciBoYXMgYXV0aGVudGljYXRlZC5cbiAgICogVGhpcyBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiBgaXNMb2FkaW5nJGAsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gbWFudWFsbHkgY2hlY2sgdGhlIGxvYWRpbmcgc3RhdGUgb2YgdGhlIFNESy5cbiAgICovXG4gIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCQgPSB0aGlzLmF1dGhTdGF0ZS5pc0F1dGhlbnRpY2F0ZWQkO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBkZXRhaWxzIGFib3V0IHRoZSBhdXRoZW50aWNhdGVkIHVzZXIsIG9yIG51bGwgaWYgbm90IGF1dGhlbnRpY2F0ZWQuXG4gICAqL1xuICByZWFkb25seSB1c2VyJCA9IHRoaXMuYXV0aFN0YXRlLnVzZXIkO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBJRCB0b2tlbiBjbGFpbXMgd2hlbiBhdXRoZW50aWNhdGVkLCBvciBudWxsIGlmIG5vdCBhdXRoZW50aWNhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaWRUb2tlbkNsYWltcyQgPSB0aGlzLmF1dGhTdGF0ZS5pZFRva2VuQ2xhaW1zJDtcblxuICAvKipcbiAgICogRW1pdHMgZXJyb3JzIHRoYXQgb2NjdXIgZHVyaW5nIGxvZ2luLCBvciB3aGVuIGNoZWNraW5nIGZvciBhbiBhY3RpdmUgc2Vzc2lvbiBvbiBzdGFydHVwLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3IkID0gdGhpcy5hdXRoU3RhdGUuZXJyb3IkO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgdmFsdWUgKGlmIGFueSkgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBgbG9naW5XaXRoUmVkaXJlY3RgIG1ldGhvZCBjYWxsXG4gICAqIGJ1dCBvbmx5ICoqYWZ0ZXIqKiBgaGFuZGxlUmVkaXJlY3RDYWxsYmFja2AgaXMgZmlyc3QgY2FsbGVkXG4gICAqL1xuICByZWFkb25seSBhcHBTdGF0ZSQgPSB0aGlzLmFwcFN0YXRlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBdXRoMENsaWVudFNlcnZpY2UpIHByaXZhdGUgYXV0aDBDbGllbnQ6IEF1dGgwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnRmFjdG9yeTogQXV0aENsaWVudENvbmZpZyxcbiAgICBwcml2YXRlIG5hdmlnYXRvcjogQWJzdHJhY3ROYXZpZ2F0b3IsXG4gICAgcHJpdmF0ZSBhdXRoU3RhdGU6IEF1dGhTdGF0ZVxuICApIHtcbiAgICBjb25zdCBjaGVja1Nlc3Npb25PckNhbGxiYWNrJCA9IChpc0NhbGxiYWNrOiBib29sZWFuKSA9PlxuICAgICAgaWlmKFxuICAgICAgICAoKSA9PiBpc0NhbGxiYWNrLFxuICAgICAgICB0aGlzLmhhbmRsZVJlZGlyZWN0Q2FsbGJhY2soKSxcbiAgICAgICAgZGVmZXIoKCkgPT4gdGhpcy5hdXRoMENsaWVudC5jaGVja1Nlc3Npb24oKSlcbiAgICAgICk7XG5cbiAgICB0aGlzLnNob3VsZEhhbmRsZUNhbGxiYWNrKClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGlzQ2FsbGJhY2spID0+XG4gICAgICAgICAgY2hlY2tTZXNzaW9uT3JDYWxsYmFjayQoaXNDYWxsYmFjaykucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnRmFjdG9yeS5nZXQoKTtcbiAgICAgICAgICAgICAgdGhpcy5hdXRoU3RhdGUuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRvci5uYXZpZ2F0ZUJ5VXJsKGNvbmZpZy5lcnJvclBhdGggfHwgJy8nKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmF1dGhTdGF0ZS5zZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHNlcnZpY2UgaXMgZGVzdHJveWVkXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDExNzcxNjNcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogbG9naW5XaXRoUmVkaXJlY3Qob3B0aW9ucyk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBQZXJmb3JtcyBhIHJlZGlyZWN0IHRvIGAvYXV0aG9yaXplYCB1c2luZyB0aGUgcGFyYW1ldGVyc1xuICAgKiBwcm92aWRlZCBhcyBhcmd1bWVudHMuIFJhbmRvbSBhbmQgc2VjdXJlIGBzdGF0ZWAgYW5kIGBub25jZWBcbiAgICogcGFyYW1ldGVycyB3aWxsIGJlIGF1dG8tZ2VuZXJhdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgbG9naW4gb3B0aW9uc1xuICAgKi9cbiAgbG9naW5XaXRoUmVkaXJlY3QoXG4gICAgb3B0aW9ucz86IFJlZGlyZWN0TG9naW5PcHRpb25zPFRBcHBTdGF0ZT5cbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5hdXRoMENsaWVudC5sb2dpbldpdGhSZWRpcmVjdChvcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogYXdhaXQgbG9naW5XaXRoUG9wdXAob3B0aW9ucyk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBPcGVucyBhIHBvcHVwIHdpdGggdGhlIGAvYXV0aG9yaXplYCBVUkwgdXNpbmcgdGhlIHBhcmFtZXRlcnNcbiAgICogcHJvdmlkZWQgYXMgYXJndW1lbnRzLiBSYW5kb20gYW5kIHNlY3VyZSBgc3RhdGVgIGFuZCBgbm9uY2VgXG4gICAqIHBhcmFtZXRlcnMgd2lsbCBiZSBhdXRvLWdlbmVyYXRlZC4gSWYgdGhlIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWwsXG4gICAqIHJlc3VsdHMgd2lsbCBiZSB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlaXIgZXhwaXJhdGlvbiB0aW1lcy5cbiAgICpcbiAgICogSU1QT1JUQU5UOiBUaGlzIG1ldGhvZCBoYXMgdG8gYmUgY2FsbGVkIGZyb20gYW4gZXZlbnQgaGFuZGxlclxuICAgKiB0aGF0IHdhcyBzdGFydGVkIGJ5IHRoZSB1c2VyIGxpa2UgYSBidXR0b24gY2xpY2ssIGZvciBleGFtcGxlLFxuICAgKiBvdGhlcndpc2UgdGhlIHBvcHVwIHdpbGwgYmUgYmxvY2tlZCBpbiBtb3N0IGJyb3dzZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgbG9naW4gb3B0aW9uc1xuICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBwb3B1cCB3aW5kb3dcbiAgICovXG4gIGxvZ2luV2l0aFBvcHVwKFxuICAgIG9wdGlvbnM/OiBQb3B1cExvZ2luT3B0aW9ucyxcbiAgICBjb25maWc/OiBQb3B1cENvbmZpZ09wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICB0aGlzLmF1dGgwQ2xpZW50LmxvZ2luV2l0aFBvcHVwKG9wdGlvbnMsIGNvbmZpZykudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuYXV0aFN0YXRlLnJlZnJlc2goKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBsb2dvdXQoKTtcbiAgICogYGBgXG4gICAqXG4gICAqIENsZWFycyB0aGUgYXBwbGljYXRpb24gc2Vzc2lvbiBhbmQgcGVyZm9ybXMgYSByZWRpcmVjdCB0byBgL3YyL2xvZ291dGAsIHVzaW5nXG4gICAqIHRoZSBwYXJhbWV0ZXJzIHByb3ZpZGVkIGFzIGFyZ3VtZW50cywgdG8gY2xlYXIgdGhlIEF1dGgwIHNlc3Npb24uXG4gICAqIElmIHRoZSBgZmVkZXJhdGVkYCBvcHRpb24gaXMgc3BlY2lmaWVkIGl0IGFsc28gY2xlYXJzIHRoZSBJZGVudGl0eSBQcm92aWRlciBzZXNzaW9uLlxuICAgKiBJZiB0aGUgYGxvY2FsT25seWAgb3B0aW9uIGlzIHNwZWNpZmllZCwgaXQgb25seSBjbGVhcnMgdGhlIGFwcGxpY2F0aW9uIHNlc3Npb24uXG4gICAqIEl0IGlzIGludmFsaWQgdG8gc2V0IGJvdGggdGhlIGBmZWRlcmF0ZWRgIGFuZCBgbG9jYWxPbmx5YCBvcHRpb25zIHRvIGB0cnVlYCxcbiAgICogYW5kIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duIGlmIHlvdSBkby5cbiAgICogW1JlYWQgbW9yZSBhYm91dCBob3cgTG9nb3V0IHdvcmtzIGF0IEF1dGgwXShodHRwczovL2F1dGgwLmNvbS9kb2NzL2xvZ291dCkuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBsb2dvdXQgb3B0aW9uc1xuICAgKi9cbiAgbG9nb3V0KG9wdGlvbnM/OiBMb2dvdXRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgbG9nb3V0ID0gdGhpcy5hdXRoMENsaWVudC5sb2dvdXQob3B0aW9ucykgfHwgb2YobnVsbCk7XG5cbiAgICBmcm9tKGxvZ291dCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmIChvcHRpb25zPy5sb2NhbE9ubHkpIHtcbiAgICAgICAgdGhpcy5hdXRoU3RhdGUucmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYSBuZXcgYWNjZXNzIHRva2VuIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBmcm9tIHRoZSAvb2F1dGgvdG9rZW4gZW5kcG9pbnQsIG9taXR0aW5nIHRoZSByZWZyZXNoIHRva2VuLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIHRva2VuIGZldGNoLlxuICAgKi9cbiAgZ2V0QWNjZXNzVG9rZW5TaWxlbnRseShcbiAgICBvcHRpb25zOiBHZXRUb2tlblNpbGVudGx5T3B0aW9ucyAmIHsgZGV0YWlsZWRSZXNwb25zZTogdHJ1ZSB9XG4gICk6IE9ic2VydmFibGU8R2V0VG9rZW5TaWxlbnRseVZlcmJvc2VSZXNwb25zZT47XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYSBuZXcgYWNjZXNzIHRva2VuIGFuZCByZXR1cm5zIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIHRva2VuIGZldGNoLlxuICAgKi9cbiAgZ2V0QWNjZXNzVG9rZW5TaWxlbnRseShvcHRpb25zPzogR2V0VG9rZW5TaWxlbnRseU9wdGlvbnMpOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGdldEFjY2Vzc1Rva2VuU2lsZW50bHkob3B0aW9ucykuc3Vic2NyaWJlKHRva2VuID0+IC4uLilcbiAgICogYGBgXG4gICAqXG4gICAqIElmIHRoZXJlJ3MgYSB2YWxpZCB0b2tlbiBzdG9yZWQsIHJldHVybiBpdC4gT3RoZXJ3aXNlLCBvcGVucyBhblxuICAgKiBpZnJhbWUgd2l0aCB0aGUgYC9hdXRob3JpemVgIFVSTCB1c2luZyB0aGUgcGFyYW1ldGVycyBwcm92aWRlZFxuICAgKiBhcyBhcmd1bWVudHMuIFJhbmRvbSBhbmQgc2VjdXJlIGBzdGF0ZWAgYW5kIGBub25jZWAgcGFyYW1ldGVyc1xuICAgKiB3aWxsIGJlIGF1dG8tZ2VuZXJhdGVkLiBJZiB0aGUgcmVzcG9uc2UgaXMgc3VjY2Vzc2Z1bCwgcmVzdWx0c1xuICAgKiB3aWxsIGJlIHZhbGlkIGFjY29yZGluZyB0byB0aGVpciBleHBpcmF0aW9uIHRpbWVzLlxuICAgKlxuICAgKiBJZiByZWZyZXNoIHRva2VucyBhcmUgdXNlZCwgdGhlIHRva2VuIGVuZHBvaW50IGlzIGNhbGxlZCBkaXJlY3RseSB3aXRoIHRoZVxuICAgKiAncmVmcmVzaF90b2tlbicgZ3JhbnQuIElmIG5vIHJlZnJlc2ggdG9rZW4gaXMgYXZhaWxhYmxlIHRvIG1ha2UgdGhpcyBjYWxsLFxuICAgKiB0aGUgU0RLIGZhbGxzIGJhY2sgdG8gdXNpbmcgYW4gaWZyYW1lIHRvIHRoZSAnL2F1dGhvcml6ZScgVVJMLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBtYXkgdXNlIGEgd2ViIHdvcmtlciB0byBwZXJmb3JtIHRoZSB0b2tlbiBjYWxsIGlmIHRoZSBpbi1tZW1vcnlcbiAgICogY2FjaGUgaXMgdXNlZC5cbiAgICpcbiAgICogSWYgYW4gYGF1ZGllbmNlYCB2YWx1ZSBpcyBnaXZlbiB0byB0aGlzIGZ1bmN0aW9uLCB0aGUgU0RLIGFsd2F5cyBmYWxsc1xuICAgKiBiYWNrIHRvIHVzaW5nIGFuIGlmcmFtZSB0byBtYWtlIHRoZSB0b2tlbiBleGNoYW5nZS5cbiAgICpcbiAgICogTm90ZSB0aGF0IGluIGFsbCBjYXNlcywgZmFsbGluZyBiYWNrIHRvIGFuIGlmcmFtZSByZXF1aXJlcyBhY2Nlc3MgdG9cbiAgICogdGhlIGBhdXRoMGAgY29va2llLCBhbmQgdGh1cyB3aWxsIG5vdCB3b3JrIGluIGJyb3dzZXJzIHRoYXQgYmxvY2sgdGhpcmQtcGFydHlcbiAgICogY29va2llcyBieSBkZWZhdWx0IChTYWZhcmksIEJyYXZlLCBldGMpLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIHRva2VuIGZldGNoLlxuICAgKi9cbiAgZ2V0QWNjZXNzVG9rZW5TaWxlbnRseShcbiAgICBvcHRpb25zOiBHZXRUb2tlblNpbGVudGx5T3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8c3RyaW5nIHwgR2V0VG9rZW5TaWxlbnRseVZlcmJvc2VSZXNwb25zZT4ge1xuICAgIHJldHVybiBvZih0aGlzLmF1dGgwQ2xpZW50KS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjbGllbnQpID0+XG4gICAgICAgIG9wdGlvbnMuZGV0YWlsZWRSZXNwb25zZSA9PT0gdHJ1ZVxuICAgICAgICAgID8gY2xpZW50LmdldFRva2VuU2lsZW50bHkoeyAuLi5vcHRpb25zLCBkZXRhaWxlZFJlc3BvbnNlOiB0cnVlIH0pXG4gICAgICAgICAgOiBjbGllbnQuZ2V0VG9rZW5TaWxlbnRseShvcHRpb25zKVxuICAgICAgKSxcbiAgICAgIHRhcCgodG9rZW4pID0+XG4gICAgICAgIHRoaXMuYXV0aFN0YXRlLnNldEFjY2Vzc1Rva2VuKFxuICAgICAgICAgIHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycgPyB0b2tlbiA6IHRva2VuLmFjY2Vzc190b2tlblxuICAgICAgICApXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5hdXRoU3RhdGUuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICB0aGlzLmF1dGhTdGF0ZS5yZWZyZXNoKCk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBnZXRUb2tlbldpdGhQb3B1cChvcHRpb25zKS5zdWJzY3JpYmUodG9rZW4gPT4gLi4uKVxuICAgKiBgYGBcbiAgICpcbiAgICogR2V0IGFuIGFjY2VzcyB0b2tlbiBpbnRlcmFjdGl2ZWx5LlxuICAgKlxuICAgKiBPcGVucyBhIHBvcHVwIHdpdGggdGhlIGAvYXV0aG9yaXplYCBVUkwgdXNpbmcgdGhlIHBhcmFtZXRlcnNcbiAgICogcHJvdmlkZWQgYXMgYXJndW1lbnRzLiBSYW5kb20gYW5kIHNlY3VyZSBgc3RhdGVgIGFuZCBgbm9uY2VgXG4gICAqIHBhcmFtZXRlcnMgd2lsbCBiZSBhdXRvLWdlbmVyYXRlZC4gSWYgdGhlIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWwsXG4gICAqIHJlc3VsdHMgd2lsbCBiZSB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlaXIgZXhwaXJhdGlvbiB0aW1lcy5cbiAgICovXG4gIGdldEFjY2Vzc1Rva2VuV2l0aFBvcHVwKFxuICAgIG9wdGlvbnM/OiBHZXRUb2tlbldpdGhQb3B1cE9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gb2YodGhpcy5hdXRoMENsaWVudCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2xpZW50KSA9PiBjbGllbnQuZ2V0VG9rZW5XaXRoUG9wdXAob3B0aW9ucykpLFxuICAgICAgdGFwKCh0b2tlbikgPT4gdGhpcy5hdXRoU3RhdGUuc2V0QWNjZXNzVG9rZW4odG9rZW4pKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuYXV0aFN0YXRlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgdGhpcy5hdXRoU3RhdGUucmVmcmVzaCgpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogZ2V0VXNlcihvcHRpb25zKS5zdWJzY3JpYmUodXNlciA9PiAuLi4pO1xuICAgKiBgYGBcbiAgICpcbiAgICogUmV0dXJucyB0aGUgdXNlciBpbmZvcm1hdGlvbiBpZiBhdmFpbGFibGUgKGRlY29kZWRcbiAgICogZnJvbSB0aGUgYGlkX3Rva2VuYCkuXG4gICAqXG4gICAqIElmIHlvdSBwcm92aWRlIGFuIGF1ZGllbmNlIG9yIHNjb3BlLCB0aGV5IHNob3VsZCBtYXRjaCBhbiBleGlzdGluZyBBY2Nlc3MgVG9rZW5cbiAgICogKHRoZSBTREsgc3RvcmVzIGEgY29ycmVzcG9uZGluZyBJRCBUb2tlbiB3aXRoIGV2ZXJ5IEFjY2VzcyBUb2tlbiwgYW5kIHVzZXMgdGhlXG4gICAqIHNjb3BlIGFuZCBhdWRpZW5jZSB0byBsb29rIHVwIHRoZSBJRCBUb2tlbilcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICpcbiAgICogVGhlIHJldHVybmVkIG9ic2VydmFibGUgd2lsbCBlbWl0IG9uY2UgYW5kIHRoZW4gY29tcGxldGUuXG4gICAqXG4gICAqIEB0eXBlcGFyYW0gVFVzZXIgVGhlIHR5cGUgdG8gcmV0dXJuLCBoYXMgdG8gZXh0ZW5kIHtAbGluayBVc2VyfS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdG8gZ2V0IHRoZSB1c2VyXG4gICAqL1xuICBnZXRVc2VyPFRVc2VyIGV4dGVuZHMgVXNlcj4oXG4gICAgb3B0aW9ucz86IEdldFVzZXJPcHRpb25zXG4gICk6IE9ic2VydmFibGU8VFVzZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5hdXRoMENsaWVudC5nZXRVc2VyPFRVc2VyPihvcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogZ2V0SWRUb2tlbkNsYWltcyhvcHRpb25zKS5zdWJzY3JpYmUoY2xhaW1zID0+IC4uLik7XG4gICAqIGBgYFxuICAgKlxuICAgKiBSZXR1cm5zIGFsbCBjbGFpbXMgZnJvbSB0aGUgaWRfdG9rZW4gaWYgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBJZiB5b3UgcHJvdmlkZSBhbiBhdWRpZW5jZSBvciBzY29wZSwgdGhleSBzaG91bGQgbWF0Y2ggYW4gZXhpc3RpbmcgQWNjZXNzIFRva2VuXG4gICAqICh0aGUgU0RLIHN0b3JlcyBhIGNvcnJlc3BvbmRpbmcgSUQgVG9rZW4gd2l0aCBldmVyeSBBY2Nlc3MgVG9rZW4sIGFuZCB1c2VzIHRoZVxuICAgKiBzY29wZSBhbmQgYXVkaWVuY2UgdG8gbG9vayB1cCB0aGUgSUQgVG9rZW4pXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqXG4gICAqIFRoZSByZXR1cm5lZCBvYnNlcnZhYmxlIHdpbGwgZW1pdCBvbmNlIGFuZCB0aGVuIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byBnZXQgdGhlIElkIHRva2VuIGNsYWltc1xuICAgKi9cbiAgZ2V0SWRUb2tlbkNsYWltcyhcbiAgICBvcHRpb25zPzogR2V0SWRUb2tlbkNsYWltc09wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxJZFRva2VuIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IHRoaXMuYXV0aDBDbGllbnQuZ2V0SWRUb2tlbkNsYWltcyhvcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogaGFuZGxlUmVkaXJlY3RDYWxsYmFjayh1cmwpLnN1YnNjcmliZShyZXN1bHQgPT4gLi4uKVxuICAgKiBgYGBcbiAgICpcbiAgICogQWZ0ZXIgdGhlIGJyb3dzZXIgcmVkaXJlY3RzIGJhY2sgdG8gdGhlIGNhbGxiYWNrIHBhZ2UsXG4gICAqIGNhbGwgYGhhbmRsZVJlZGlyZWN0Q2FsbGJhY2tgIHRvIGhhbmRsZSBzdWNjZXNzIGFuZCBlcnJvclxuICAgKiByZXNwb25zZXMgZnJvbSBBdXRoMC4gSWYgdGhlIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWwsIHJlc3VsdHNcbiAgICogd2lsbCBiZSB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlaXIgZXhwaXJhdGlvbiB0aW1lcy5cbiAgICpcbiAgICogQ2FsbGluZyB0aGlzIG1ldGhvZCBhbHNvIHJlZnJlc2hlcyB0aGUgYXV0aGVudGljYXRpb24gYW5kIHVzZXIgc3RhdGVzLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gdGhhdCBzaG91bGQgYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgYHN0YXRlYCBhbmQgYGNvZGVgIHZhbHVlcy4gRGVmYXVsdHMgdG8gYHdpbmRvdy5sb2NhdGlvbi5ocmVmYCBpZiBub3QgZ2l2ZW4uXG4gICAqL1xuICBoYW5kbGVSZWRpcmVjdENhbGxiYWNrKFxuICAgIHVybD86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFJlZGlyZWN0TG9naW5SZXN1bHQ8VEFwcFN0YXRlPj4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgdGhpcy5hdXRoMENsaWVudC5oYW5kbGVSZWRpcmVjdENhbGxiYWNrPFRBcHBTdGF0ZT4odXJsKVxuICAgICkucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuYXV0aFN0YXRlLmlzTG9hZGluZyQpLFxuICAgICAgdGFwKChbcmVzdWx0LCBpc0xvYWRpbmddKSA9PiB7XG4gICAgICAgIGlmICghaXNMb2FkaW5nKSB7XG4gICAgICAgICAgdGhpcy5hdXRoU3RhdGUucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwcFN0YXRlID0gcmVzdWx0Py5hcHBTdGF0ZTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gYXBwU3RhdGU/LnRhcmdldCA/PyAnLyc7XG5cbiAgICAgICAgaWYgKGFwcFN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5hcHBTdGF0ZVN1YmplY3QkLm5leHQoYXBwU3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXZpZ2F0b3IubmF2aWdhdGVCeVVybCh0YXJnZXQpO1xuICAgICAgfSksXG4gICAgICBtYXAoKFtyZXN1bHRdKSA9PiByZXN1bHQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBidWlsZEF1dGhvcml6ZVVybCgpLnN1YnNjcmliZSh1cmwgPT4gLi4uKVxuICAgKiBgYGBcbiAgICpcbiAgICogQnVpbGRzIGFuIGAvYXV0aG9yaXplYCBVUkwgZm9yIGxvZ2luV2l0aFJlZGlyZWN0IHVzaW5nIHRoZSBwYXJhbWV0ZXJzXG4gICAqIHByb3ZpZGVkIGFzIGFyZ3VtZW50cy4gUmFuZG9tIGFuZCBzZWN1cmUgYHN0YXRlYCBhbmQgYG5vbmNlYFxuICAgKiBwYXJhbWV0ZXJzIHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zXG4gICAqIEByZXR1cm5zIEEgVVJMIHRvIHRoZSBhdXRob3JpemUgZW5kcG9pbnRcbiAgICovXG4gIGJ1aWxkQXV0aG9yaXplVXJsKG9wdGlvbnM/OiBSZWRpcmVjdExvZ2luT3B0aW9ucyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IHRoaXMuYXV0aDBDbGllbnQuYnVpbGRBdXRob3JpemVVcmwob3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGJ1aWxkTG9nb3V0VXJsKCkuc3Vic2NyaWJlKHVybCA9PiAuLi4pXG4gICAqIGBgYFxuICAgKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGxvZ291dCBlbmRwb2ludC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdXNlZCB0byBjb25maWd1cmUgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcHBlYXIgaW4gdGhlIGxvZ291dCBlbmRwb2ludCBVUkwuXG4gICAqIEByZXR1cm5zIGEgVVJMIHRvIHRoZSBsb2dvdXQgZW5kcG9pbnQgdXNpbmcgdGhlIHBhcmFtZXRlcnMgcHJvdmlkZWQgYXMgYXJndW1lbnRzLlxuICAgKi9cbiAgYnVpbGRMb2dvdXRVcmwob3B0aW9ucz86IExvZ291dFVybE9wdGlvbnMpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBvZih0aGlzLmF1dGgwQ2xpZW50LmJ1aWxkTG9nb3V0VXJsKG9wdGlvbnMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkSGFuZGxlQ2FsbGJhY2soKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG9mKGxvY2F0aW9uLnNlYXJjaCkucGlwZShcbiAgICAgIG1hcCgoc2VhcmNoKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKHNlYXJjaC5pbmNsdWRlcygnY29kZT0nKSB8fCBzZWFyY2guaW5jbHVkZXMoJ2Vycm9yPScpKSAmJlxuICAgICAgICAgIHNlYXJjaC5pbmNsdWRlcygnc3RhdGU9JykgJiZcbiAgICAgICAgICAhdGhpcy5jb25maWdGYWN0b3J5LmdldCgpLnNraXBSZWRpcmVjdENhbGxiYWNrXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export default { name: '@auth0/auth0-angular', version: '1.8.1' };
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcmFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvdXNlcmFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgeyBuYW1lOiAnQGF1dGgwL2F1dGgwLWFuZ3VsYXInLCB2ZXJzaW9uOiAnMS44LjEnIH07XG4iXX0=
1
+ export default { name: '@auth0/auth0-angular', version: '1.10.0' };
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcmFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvdXNlcmFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgeyBuYW1lOiAnQGF1dGgwL2F1dGgwLWFuZ3VsYXInLCB2ZXJzaW9uOiAnMS4xMC4wJyB9O1xuIl19
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, Injector, Optional, Inject, NgModule } from '@angular/core';
2
+ import { VERSION, InjectionToken, Injectable, Injector, Optional, Inject, NgModule } from '@angular/core';
3
3
  import { Auth0Client } from '@auth0/auth0-spa-js';
4
4
  export { InMemoryCache, LocalStorageCache, User } from '@auth0/auth0-spa-js';
5
5
  import { BehaviorSubject, Subject, ReplaySubject, merge, defer, of, iif, from, throwError } from 'rxjs';
@@ -9,7 +9,7 @@ import { Router } from '@angular/router';
9
9
  import * as i1 from '@angular/common';
10
10
  import { Location } from '@angular/common';
11
11
 
12
- var useragent = { name: '@auth0/auth0-angular', version: '1.8.1' };
12
+ var useragent = { name: '@auth0/auth0-angular', version: '1.10.0' };
13
13
 
14
14
  class Auth0ClientFactory {
15
15
  static createClient(configFactory) {
@@ -21,6 +21,9 @@ class Auth0ClientFactory {
21
21
  return new Auth0Client(Object.assign(Object.assign({ redirect_uri: redirectUri || window.location.origin, client_id: clientId, max_age: maxAge }, rest), { auth0Client: {
22
22
  name: useragent.name,
23
23
  version: useragent.version,
24
+ env: {
25
+ 'angular/core': VERSION.full
26
+ }
24
27
  } }));
25
28
  }
26
29
  }
@@ -407,6 +410,48 @@ class AuthService {
407
410
  return throwError(error);
408
411
  }));
409
412
  }
413
+ /**
414
+ * ```js
415
+ * getUser(options).subscribe(user => ...);
416
+ * ```
417
+ *
418
+ * Returns the user information if available (decoded
419
+ * from the `id_token`).
420
+ *
421
+ * If you provide an audience or scope, they should match an existing Access Token
422
+ * (the SDK stores a corresponding ID Token with every Access Token, and uses the
423
+ * scope and audience to look up the ID Token)
424
+ *
425
+ * @remarks
426
+ *
427
+ * The returned observable will emit once and then complete.
428
+ *
429
+ * @typeparam TUser The type to return, has to extend {@link User}.
430
+ * @param options The options to get the user
431
+ */
432
+ getUser(options) {
433
+ return defer(() => this.auth0Client.getUser(options));
434
+ }
435
+ /**
436
+ * ```js
437
+ * getIdTokenClaims(options).subscribe(claims => ...);
438
+ * ```
439
+ *
440
+ * Returns all claims from the id_token if available.
441
+ *
442
+ * If you provide an audience or scope, they should match an existing Access Token
443
+ * (the SDK stores a corresponding ID Token with every Access Token, and uses the
444
+ * scope and audience to look up the ID Token)
445
+ *
446
+ * @remarks
447
+ *
448
+ * The returned observable will emit once and then complete.
449
+ *
450
+ * @param options The options to get the Id token claims
451
+ */
452
+ getIdTokenClaims(options) {
453
+ return defer(() => this.auth0Client.getIdTokenClaims(options));
454
+ }
410
455
  /**
411
456
  * ```js
412
457
  * handleRedirectCallback(url).subscribe(result => ...)