@ethlete/query 5.17.0 → 5.18.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/esm2022/index.mjs +2 -1
  3. package/esm2022/lib/devtools/components/query-devtools/query-devtools.component.mjs +3 -3
  4. package/esm2022/lib/devtools/pipes/query-short-name.pipe.mjs +3 -3
  5. package/esm2022/lib/directives/infinity-query-trigger.directive.mjs +3 -3
  6. package/esm2022/lib/directives/infinity-query.directive.mjs +3 -3
  7. package/esm2022/lib/directives/query.directive.mjs +3 -3
  8. package/esm2022/lib/experimental/bearer-auth-provider-config.mjs +19 -0
  9. package/esm2022/lib/experimental/bearer-auth-provider.mjs +245 -0
  10. package/esm2022/lib/experimental/http-request.mjs +153 -0
  11. package/esm2022/lib/experimental/index.mjs +21 -0
  12. package/esm2022/lib/experimental/query-client-config.mjs +13 -0
  13. package/esm2022/lib/experimental/query-client.mjs +16 -0
  14. package/esm2022/lib/experimental/query-creator-templates.mjs +33 -0
  15. package/esm2022/lib/experimental/query-creator.mjs +28 -0
  16. package/esm2022/lib/experimental/query-dependencies.mjs +14 -0
  17. package/esm2022/lib/experimental/query-errors.mjs +55 -0
  18. package/esm2022/lib/experimental/query-execute-utils.mjs +57 -0
  19. package/esm2022/lib/experimental/query-execute.mjs +12 -0
  20. package/esm2022/lib/experimental/query-features.mjs +126 -0
  21. package/esm2022/lib/experimental/query-repository.mjs +91 -0
  22. package/esm2022/lib/experimental/query-snapshot.mjs +44 -0
  23. package/esm2022/lib/experimental/query-state.mjs +20 -0
  24. package/esm2022/lib/experimental/query-utils.mjs +148 -0
  25. package/esm2022/lib/experimental/query.mjs +37 -0
  26. package/esm2022/lib/experimental/secure-query-creator.mjs +15 -0
  27. package/esm2022/lib/experimental/secure-query-execute.mjs +77 -0
  28. package/esm2022/lib/experimental/secure-query.mjs +41 -0
  29. package/esm2022/lib/query/query.types.mjs +1 -1
  30. package/fesm2022/ethlete-query.mjs +1283 -23
  31. package/fesm2022/ethlete-query.mjs.map +1 -1
  32. package/index.d.ts +1 -0
  33. package/lib/experimental/bearer-auth-provider-config.d.ts +111 -0
  34. package/lib/experimental/bearer-auth-provider.d.ts +63 -0
  35. package/lib/experimental/http-request.d.ts +55 -0
  36. package/lib/experimental/index.d.ts +20 -0
  37. package/lib/experimental/query-client-config.d.ts +18 -0
  38. package/lib/experimental/query-client.d.ts +10 -0
  39. package/lib/experimental/query-creator-templates.d.ts +14 -0
  40. package/lib/experimental/query-creator.d.ts +39 -0
  41. package/lib/experimental/query-dependencies.d.ts +12 -0
  42. package/lib/experimental/query-errors.d.ts +39 -0
  43. package/lib/experimental/query-execute-utils.d.ts +20 -0
  44. package/lib/experimental/query-execute.d.ts +16 -0
  45. package/lib/experimental/query-features.d.ts +45 -0
  46. package/lib/experimental/query-repository.d.ts +31 -0
  47. package/lib/experimental/query-snapshot.d.ts +8 -0
  48. package/lib/experimental/query-state.d.ts +14 -0
  49. package/lib/experimental/query-utils.d.ts +41 -0
  50. package/lib/experimental/query.d.ts +41 -0
  51. package/lib/experimental/secure-query-creator.d.ts +7 -0
  52. package/lib/experimental/secure-query-execute.d.ts +7 -0
  53. package/lib/experimental/secure-query.d.ts +6 -0
  54. package/package.json +1 -1
@@ -0,0 +1,77 @@
1
+ import { HttpHeaders } from '@angular/common/http';
2
+ import { inject } from '@angular/core';
3
+ import { toObservable } from '@angular/core/rxjs-interop';
4
+ import { of, Subscription, switchMap, tap } from 'rxjs';
5
+ import { cleanupPreviousExecute, queryExecute, resetExecuteState, setupQueryExecuteState } from './query-execute-utils';
6
+ const AUTH_HEADER = 'Authorization';
7
+ export const createSecureExecuteFn = (options) => {
8
+ const executeState = setupQueryExecuteState();
9
+ const authProvider = inject(options.creatorInternals.authProvider.token);
10
+ let authQuerySubscription = Subscription.EMPTY;
11
+ const reset = () => {
12
+ authQuerySubscription.unsubscribe();
13
+ authQuerySubscription = Subscription.EMPTY;
14
+ resetExecuteState({ executeState, executeOptions: options });
15
+ };
16
+ const error = (query) => {
17
+ const state = options.state;
18
+ state.error.set(query.error());
19
+ state.loading.set(null);
20
+ state.response.set(null);
21
+ state.latestHttpEvent.set(null);
22
+ state.args.set(null);
23
+ };
24
+ const authAndExec = (args) => {
25
+ const tokens = authProvider.tokens();
26
+ let headers = args?.headers || new HttpHeaders();
27
+ if (!tokens) {
28
+ throw new Error('Tokens are not available inside authAndExec');
29
+ }
30
+ if (!headers.has(AUTH_HEADER)) {
31
+ headers = headers.set(AUTH_HEADER, `Bearer ${tokens.accessToken}`);
32
+ }
33
+ const updatedArgs = { ...(args ?? {}), headers };
34
+ queryExecute({
35
+ executeOptions: options,
36
+ executeState,
37
+ args: updatedArgs,
38
+ });
39
+ };
40
+ const exec = (args = options.state.args()) => {
41
+ authQuerySubscription.unsubscribe();
42
+ authQuerySubscription = Subscription.EMPTY;
43
+ cleanupPreviousExecute({ executeOptions: options, executeState, args });
44
+ const authQuery = authProvider.latestExecutedQuery();
45
+ if (!authQuery || authQuery.loading()) {
46
+ options.state.loading.set({ executeTime: Date.now(), progress: null });
47
+ authQuerySubscription = toObservable(authProvider.latestExecutedQuery, { injector: options.deps.injector })
48
+ .pipe(switchMap((query) => {
49
+ if (!query)
50
+ return of(null);
51
+ return toObservable(query.isAlive, { injector: options.deps.injector }).pipe(tap((isAlive) => {
52
+ if (isAlive)
53
+ return;
54
+ if (query.error()) {
55
+ error(query);
56
+ }
57
+ else if (query.response()) {
58
+ authAndExec(args);
59
+ }
60
+ }));
61
+ }))
62
+ .subscribe();
63
+ }
64
+ else if (authQuery.response()) {
65
+ authAndExec(args);
66
+ }
67
+ else if (authQuery.error()) {
68
+ error(authQuery);
69
+ }
70
+ else {
71
+ throw new Error('Invalid state ocurred inside createSecureExecuteFn');
72
+ }
73
+ };
74
+ exec['reset'] = reset;
75
+ return exec;
76
+ };
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlLXF1ZXJ5LWV4ZWN1dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvZXhwZXJpbWVudGFsL3NlY3VyZS1xdWVyeS1leGVjdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd4SCxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUM7QUFTcEMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsT0FBK0MsRUFDMUIsRUFBRTtJQUN2QixNQUFNLFlBQVksR0FBRyxzQkFBc0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXpFLElBQUkscUJBQXFCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUUvQyxNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUU7UUFDakIscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMscUJBQXFCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUMzQyxpQkFBaUIsQ0FBQyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUM7SUFFRixNQUFNLEtBQUssR0FBRyxDQUFD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SSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQzt3QkFDNUIsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNwQixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDLENBQUMsQ0FDSDtpQkFDQSxTQUFTLEVBQUUsQ0FBQztRQUNqQixDQUFDO2FBQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNoQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDN0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBRXRCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbnlRdWVyeVNuYXBzaG90LCBRdWVyeUFyZ3MsIFJlcXVlc3RBcmdzIH0gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgeyBDcmVhdGVRdWVyeUV4ZWN1dGVPcHRpb25zLCBRdWVyeUV4ZWN1dGUgfSBmcm9tICcuL3F1ZXJ5LWV4ZWN1dGUnO1xuaW1wb3J0IHsgY2xlYW51cFByZXZpb3VzRXhlY3V0ZSwgcXVlcnlFeGVjdXRlLCByZXNldEV4ZWN1dGVTdGF0ZSwgc2V0dXBRdWVyeUV4ZWN1dGVTdGF0ZSB9IGZyb20gJy4vcXVlcnktZXhlY3V0ZS11dGlscyc7XG5pbXBvcnQgeyBJbnRlcm5hbFNlY3VyZUNyZWF0ZVF1ZXJ5Q3JlYXRvck9wdGlvbnMgfSBmcm9tICcuL3NlY3VyZS1xdWVyeS1jcmVhdG9yJztcblxuY29uc3QgQVVUSF9IRUFERVIgPSAnQXV0aG9yaXphdGlvbic7XG5cbmV4cG9ydCB0eXBlIENyZWF0ZVNlY3VyZVF1ZXJ5RXhlY3V0ZU9wdGlvbnM8VEFyZ3MgZXh0ZW5kcyBRdWVyeUFyZ3M+ID0gT21pdDxcbiAgQ3JlYXRlUXVlcnlFeGVjdXRlT3B0aW9uczxUQXJncz4sXG4gICdjcmVhdG9ySW50ZXJuYWxzJ1xuPiAmIHtcbiAgY3JlYXRvckludGVybmFsczogSW50ZXJuYWxTZWN1cmVDcmVhdGVRdWVyeUNyZWF0b3JPcHRpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNlY3VyZUV4ZWN1dGVGbiA9IDxUQXJncyBleHRlbmRzIFF1ZXJ5QXJncz4oXG4gIG9wdGlvbnM6IENyZWF0ZVNlY3VyZVF1ZXJ5RXhlY3V0ZU9wdGlvbnM8VEFyZ3M+LFxuKTogUXVlcnlFeGVjdXRlPFRBcmdzPiA9PiB7XG4gIGNvbnN0IGV4ZWN1dGVTdGF0ZSA9IHNldHVwUXVlcnlFeGVjdXRlU3RhdGUoKTtcbiAgY29uc3QgYXV0aFByb3ZpZGVyID0gaW5qZWN0KG9wdGlvbnMuY3JlYXRvckludGVybmFscy5hdXRoUHJvdmlkZXIudG9rZW4pO1xuXG4gIGxldCBhdXRoUXVlcnlTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgYXV0aFF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgYXV0aFF1ZXJ5U3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuICAgIHJlc2V0RXhlY3V0ZVN0YXRlKHsgZXhlY3V0ZVN0YXRlLCBleGVjdXRlT3B0aW9uczogb3B0aW9ucyB9KTtcbiAgfTtcblxuICBjb25zdCBlcnJvciA9IChxdWVyeTogQW55UXVlcnlTbmFwc2hvdCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gb3B0aW9ucy5zdGF0ZTtcblxuICAgIHN0YXRlLmVycm9yLnNldChxdWVyeS5lcnJvcigpKTtcbiAgICBzdGF0ZS5sb2FkaW5nLnNldChudWxsKTtcbiAgICBzdGF0ZS5yZXNwb25zZS5zZXQobnVsbCk7XG4gICAgc3RhdGUubGF0ZXN0SHR0cEV2ZW50LnNldChudWxsKTtcbiAgICBzdGF0ZS5hcmdzLnNldChudWxsKTtcbiAgfTtcblxuICBjb25zdCBhdXRoQW5kRXhlYyA9IChhcmdzOiBSZXF1ZXN0QXJnczxUQXJncz4gfCBudWxsKSA9PiB7XG4gICAgY29uc3QgdG9rZW5zID0gYXV0aFByb3ZpZGVyLnRva2VucygpO1xuICAgIGxldCBoZWFkZXJzID0gYXJncz8uaGVhZGVycyB8fCBuZXcgSHR0cEhlYWRlcnMoKTtcblxuICAgIGlmICghdG9rZW5zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VucyBhcmUgbm90IGF2YWlsYWJsZSBpbnNpZGUgYXV0aEFuZEV4ZWMnKTtcbiAgICB9XG5cbiAgICBpZiAoIWhlYWRlcnMuaGFzKEFVVEhfSEVBREVSKSkge1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KEFVVEhfSEVBREVSLCBgQmVhcmVyICR7dG9rZW5zLmFjY2Vzc1Rva2VufWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRBcmdzID0geyAuLi4oYXJncyA/PyAoe30gYXMgUmVxdWVzdEFyZ3M8VEFyZ3M+KSksIGhlYWRlcnMgfTtcblxuICAgIHF1ZXJ5RXhlY3V0ZSh7XG4gICAgICBleGVjdXRlT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIGV4ZWN1dGVTdGF0ZSxcbiAgICAgIGFyZ3M6IHVwZGF0ZWRBcmdzLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGV4ZWMgPSAoYXJncyA9IG9wdGlvbnMuc3RhdGUuYXJncygpKSA9PiB7XG4gICAgYXV0aFF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgYXV0aFF1ZXJ5U3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuICAgIGNsZWFudXBQcmV2aW91c0V4ZWN1dGUoeyBleGVjdXRlT3B0aW9uczogb3B0aW9ucywgZXhlY3V0ZVN0YXRlLCBhcmdzIH0pO1xuXG4gICAgY29uc3QgYXV0aFF1ZXJ5ID0gYXV0aFByb3ZpZGVyLmxhdGVzdEV4ZWN1dGVkUXVlcnkoKTtcblxuICAgIGlmICghYXV0aFF1ZXJ5IHx8IGF1dGhRdWVyeS5sb2FkaW5nKCkpIHtcbiAgICAgIG9wdGlvbnMuc3RhdGUubG9hZGluZy5zZXQoeyBleGVjdXRlVGltZTogRGF0ZS5ub3coKSwgcHJvZ3Jlc3M6IG51bGwgfSk7XG5cbiAgICAgIGF1dGhRdWVyeVN1YnNjcmlwdGlvbiA9IHRvT2JzZXJ2YWJsZShhdXRoUHJvdmlkZXIubGF0ZXN0RXhlY3V0ZWRRdWVyeSwgeyBpbmplY3Rvcjogb3B0aW9ucy5kZXBzLmluamVjdG9yIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgocXVlcnkpID0+IHtcbiAgICAgICAgICAgIGlmICghcXVlcnkpIHJldHVybiBvZihudWxsKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRvT2JzZXJ2YWJsZShxdWVyeS5pc0FsaXZlLCB7IGluamVjdG9yOiBvcHRpb25zLmRlcHMuaW5qZWN0b3IgfSkucGlwZShcbiAgICAgICAgICAgICAgdGFwKChpc0FsaXZlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzQWxpdmUpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGlmIChxdWVyeS5lcnJvcigpKSB7XG4gICAgICAgICAgICAgICAgICBlcnJvcihxdWVyeSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChxdWVyeS5yZXNwb25zZSgpKSB7XG4gICAgICAgICAgICAgICAgICBhdXRoQW5kRXhlYyhhcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfSBlbHNlIGlmIChhdXRoUXVlcnkucmVzcG9uc2UoKSkge1xuICAgICAgYXV0aEFuZEV4ZWMoYXJncyk7XG4gICAgfSBlbHNlIGlmIChhdXRoUXVlcnkuZXJyb3IoKSkge1xuICAgICAgZXJyb3IoYXV0aFF1ZXJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0YXRlIG9jdXJyZWQgaW5zaWRlIGNyZWF0ZVNlY3VyZUV4ZWN1dGVGbicpO1xuICAgIH1cbiAgfTtcblxuICBleGVjWydyZXNldCddID0gcmVzZXQ7XG5cbiAgcmV0dXJuIGV4ZWM7XG59O1xuIl19
@@ -0,0 +1,41 @@
1
+ import { setupQueryDependencies } from './query-dependencies';
2
+ import { createQuerySnapshotFn } from './query-snapshot';
3
+ import { setupQueryState } from './query-state';
4
+ import { applyQueryFeatures, getQueryFeatureUsage, maybeExecute } from './query-utils';
5
+ import { createSecureExecuteFn } from './secure-query-execute';
6
+ export const createSecureQuery = (options) => {
7
+ const deps = setupQueryDependencies({ clientConfig: options.creatorInternals.client });
8
+ const state = setupQueryState({});
9
+ const { creator, creatorInternals, queryConfig } = options;
10
+ const flags = getQueryFeatureUsage(options);
11
+ const execute = createSecureExecuteFn({
12
+ deps,
13
+ state,
14
+ creator,
15
+ creatorInternals,
16
+ queryConfig: options.queryConfig,
17
+ });
18
+ const createSnapshot = createQuerySnapshotFn({ state, deps });
19
+ const featureFnContext = {
20
+ state,
21
+ queryConfig,
22
+ creatorConfig: creator,
23
+ creatorInternals,
24
+ execute,
25
+ flags,
26
+ };
27
+ applyQueryFeatures(options, featureFnContext);
28
+ maybeExecute({ execute, flags });
29
+ const query = {
30
+ execute,
31
+ args: state.args.asReadonly(),
32
+ response: state.response.asReadonly(),
33
+ latestHttpEvent: state.latestHttpEvent.asReadonly(),
34
+ loading: state.loading.asReadonly(),
35
+ error: state.error.asReadonly(),
36
+ lastTimeExecutedAt: state.lastTimeExecutedAt.asReadonly(),
37
+ createSnapshot,
38
+ };
39
+ return query;
40
+ };
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlLXF1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2V4cGVyaW1lbnRhbC9zZWN1cmUtcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTS9ELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQTBCLE9BQXdDLEVBQUUsRUFBRTtJQUNyRyxNQUFNLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RixNQUFNLEtBQUssR0FBRyxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7SUFDekMsTUFBTSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDM0QsTUFBTSxLQUFLLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFNUMsTUFBTSxPQUFPLEdBQUcscUJBQXFCLENBQVE7UUFDM0MsSUFBSTtRQUNKLEtBQUs7UUFDTCxPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztLQUNqQyxDQUFDLENBQUM7SUFDSCxNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTlELE1BQU0sZ0JBQWdCLEdBQStCO1FBQ25ELEtBQUs7UUFDTCxXQUFXO1FBQ1gsYUFBYSxFQUFFLE9BQU87UUFDdEIsZ0JBQWdCO1FBQ2hCLE9BQU87UUFDUCxLQUFLO0tBQ04sQ0FBQztJQUVGLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTlDLFlBQVksQ0FBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sS0FBSyxHQUFpQjtRQUMxQixPQUFPO1FBQ1AsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQzdCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtRQUNyQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUU7UUFDbkQsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1FBQ25DLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtRQUMvQixrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFO1FBQ3pELGNBQWM7S0FDZixDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVRdWVyeU9wdGlvbnMsIFF1ZXJ5LCBRdWVyeUFyZ3MgfSBmcm9tICcuL3F1ZXJ5JztcbmltcG9ydCB7IHNldHVwUXVlcnlEZXBlbmRlbmNpZXMgfSBmcm9tICcuL3F1ZXJ5LWRlcGVuZGVuY2llcyc7XG5pbXBvcnQgeyBRdWVyeUZlYXR1cmVDb250ZXh0IH0gZnJvbSAnLi9xdWVyeS1mZWF0dXJlcyc7XG5pbXBvcnQgeyBjcmVhdGVRdWVyeVNuYXBzaG90Rm4gfSBmcm9tICcuL3F1ZXJ5LXNuYXBzaG90JztcbmltcG9ydCB7IHNldHVwUXVlcnlTdGF0ZSB9IGZyb20gJy4vcXVlcnktc3RhdGUnO1xuaW1wb3J0IHsgYXBwbHlRdWVyeUZlYXR1cmVzLCBnZXRRdWVyeUZlYXR1cmVVc2FnZSwgbWF5YmVFeGVjdXRlIH0gZnJvbSAnLi9xdWVyeS11dGlscyc7XG5pbXBvcnQgeyBJbnRlcm5hbFNlY3VyZUNyZWF0ZVF1ZXJ5Q3JlYXRvck9wdGlvbnMgfSBmcm9tICcuL3NlY3VyZS1xdWVyeS1jcmVhdG9yJztcbmltcG9ydCB7IGNyZWF0ZVNlY3VyZUV4ZWN1dGVGbiB9IGZyb20gJy4vc2VjdXJlLXF1ZXJ5LWV4ZWN1dGUnO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVTZWN1cmVRdWVyeU9wdGlvbnM8VEFyZ3MgZXh0ZW5kcyBRdWVyeUFyZ3M+ID0gT21pdDxDcmVhdGVRdWVyeU9wdGlvbnM8VEFyZ3M+LCAnY3JlYXRvckludGVybmFscyc+ICYge1xuICBjcmVhdG9ySW50ZXJuYWxzOiBJbnRlcm5hbFNlY3VyZUNyZWF0ZVF1ZXJ5Q3JlYXRvck9wdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlU2VjdXJlUXVlcnkgPSA8VEFyZ3MgZXh0ZW5kcyBRdWVyeUFyZ3M+KG9wdGlvbnM6IENyZWF0ZVNlY3VyZVF1ZXJ5T3B0aW9uczxUQXJncz4pID0+IHtcbiAgY29uc3QgZGVwcyA9IHNldHVwUXVlcnlEZXBlbmRlbmNpZXMoeyBjbGllbnRDb25maWc6IG9wdGlvbnMuY3JlYXRvckludGVybmFscy5jbGllbnQgfSk7XG4gIGNvbnN0IHN0YXRlID0gc2V0dXBRdWVyeVN0YXRlPFRBcmdzPih7fSk7XG4gIGNvbnN0IHsgY3JlYXRvciwgY3JlYXRvckludGVybmFscywgcXVlcnlDb25maWcgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGZsYWdzID0gZ2V0UXVlcnlGZWF0dXJlVXNhZ2Uob3B0aW9ucyk7XG5cbiAgY29uc3QgZXhlY3V0ZSA9IGNyZWF0ZVNlY3VyZUV4ZWN1dGVGbjxUQXJncz4oe1xuICAgIGRlcHMsXG4gICAgc3RhdGUsXG4gICAgY3JlYXRvcixcbiAgICBjcmVhdG9ySW50ZXJuYWxzLFxuICAgIHF1ZXJ5Q29uZmlnOiBvcHRpb25zLnF1ZXJ5Q29uZmlnLFxuICB9KTtcbiAgY29uc3QgY3JlYXRlU25hcHNob3QgPSBjcmVhdGVRdWVyeVNuYXBzaG90Rm4oeyBzdGF0ZSwgZGVwcyB9KTtcblxuICBjb25zdCBmZWF0dXJlRm5Db250ZXh0OiBRdWVyeUZlYXR1cmVDb250ZXh0PFRBcmdzPiA9IHtcbiAgICBzdGF0ZSxcbiAgICBxdWVyeUNvbmZpZyxcbiAgICBjcmVhdG9yQ29uZmlnOiBjcmVhdG9yLFxuICAgIGNyZWF0b3JJbnRlcm5hbHMsXG4gICAgZXhlY3V0ZSxcbiAgICBmbGFncyxcbiAgfTtcblxuICBhcHBseVF1ZXJ5RmVhdHVyZXMob3B0aW9ucywgZmVhdHVyZUZuQ29udGV4dCk7XG5cbiAgbWF5YmVFeGVjdXRlPFRBcmdzPih7IGV4ZWN1dGUsIGZsYWdzIH0pO1xuXG4gIGNvbnN0IHF1ZXJ5OiBRdWVyeTxUQXJncz4gPSB7XG4gICAgZXhlY3V0ZSxcbiAgICBhcmdzOiBzdGF0ZS5hcmdzLmFzUmVhZG9ubHkoKSxcbiAgICByZXNwb25zZTogc3RhdGUucmVzcG9uc2UuYXNSZWFkb25seSgpLFxuICAgIGxhdGVzdEh0dHBFdmVudDogc3RhdGUubGF0ZXN0SHR0cEV2ZW50LmFzUmVhZG9ubHkoKSxcbiAgICBsb2FkaW5nOiBzdGF0ZS5sb2FkaW5nLmFzUmVhZG9ubHkoKSxcbiAgICBlcnJvcjogc3RhdGUuZXJyb3IuYXNSZWFkb25seSgpLFxuICAgIGxhc3RUaW1lRXhlY3V0ZWRBdDogc3RhdGUubGFzdFRpbWVFeGVjdXRlZEF0LmFzUmVhZG9ubHkoKSxcbiAgICBjcmVhdGVTbmFwc2hvdCxcbiAgfTtcblxuICByZXR1cm4gcXVlcnk7XG59O1xuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi4vZW50aXR5JztcbmltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgQ29uc3RydWN0UXVlcnksIFF1ZXJ5RGF0YU9mLCBRdWVyeVJlc3BvbnNlT2YgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcbmltcG9ydCB7IFF1ZXJ5Rm9ybSB9IGZyb20gJy4uL3F1ZXJ5LWZvcm0nO1xuaW1wb3J0IHsgTWV0aG9kLCBQYXRoUGFyYW1zLCBRdWVyeVBhcmFtcywgUmVxdWVzdEVycm9yLCBSZXF1ZXN0SGVhZGVycywgUmVxdWVzdFByb2dyZXNzIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gJy4vcXVlcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5QXV0b1JlZnJlc2hDb25maWcge1xuICAvKipcbiAgICogUmVmcmVzaCB0aGUgcXVlcnkgd2hlbiB0aGUgcXVlcnkgY2xpZW50J3MgaGVhZGVycyBjaGFuZ2UuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHF1ZXJ5Q2xpZW50RGVmYXVsdEhlYWRlcnNDaGFuZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZWZyZXNoIHRoZSBxdWVyeSB3aGVuIHRoZSB3aW5kb3cgcmVnYWlucyBmb2N1cy5cbiAgICpcbiAgICogVGhpcyBjYW4gb25seSBiZSBkaXNhYmxlZCBpZiBgYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1c2AgaXMgZW5hYmxlZCBvbiB0aGUgcXVlcnkgY2xpZW50LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB3aW5kb3dGb2N1cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5U2V0UGFyYW1zPFN0b3JlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZD4ge1xuICAvKipcbiAgICogVGhlIHJlc3BvbnNlIGRhdGEuXG4gICAqL1xuICByZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBpZChzKSByZXR1cm5lZCBieSB0aGUgYGlkYCBmdW5jdGlvbi5cbiAgICovXG4gIGlkOiBJZDtcblxuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHF1ZXJ5LlxuICAgKi9cbiAgYXJnczogQXJndW1lbnRzO1xuXG4gIC8qKlxuICAgKiBUaGUgZW50aXR5IHN0b3JlLlxuICAgKi9cbiAgc3RvcmU6IFN0b3JlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUdldFBhcmFtczxTdG9yZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQ+IHtcbiAgLyoqXG4gICAqIFRoZSByZXNwb25zZSBkYXRhLlxuICAgKi9cbiAgcmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQocykgcmV0dXJuZWQgYnkgdGhlIGBpZGAgZnVuY3Rpb24uXG4gICAqL1xuICBpZDogSWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBxdWVyeS5cbiAgICovXG4gIGFyZ3M6IEFyZ3VtZW50cztcblxuICAvKipcbiAgICogVGhlIGVudGl0eSBzdG9yZS5cbiAgICovXG4gIHN0b3JlOiBTdG9yZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlJZFBhcmFtczxSZXNwb25zZSwgQXJndW1lbnRzPiB7XG4gIC8qKlxuICAgKiBUaGUgcmVzcG9uc2UgZGF0YS5cbiAgICovXG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHF1ZXJ5LlxuICAgKi9cbiAgYXJnczogQXJndW1lbnRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RW50aXR5Q29uZmlnPFN0b3JlLCBEYXRhLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZD4ge1xuICAvKipcbiAgICogVGhlIGVudGl0eSBzdG9yZSB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIHN0b3JlOiBTdG9yZTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGlkIG9mIHRoZSBlbnRpdHkuIENhbiBhbHNvIHJldHVybiBhbiBhcnJheSBvZiBpZHMuXG4gICAqL1xuICBpZDogKGRhdGE6IEVudGl0eUlkUGFyYW1zPFJlc3BvbnNlLCBBcmd1bWVudHM+KSA9PiBJZDtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3BvbnNlIGRhdGEgKGNhbiBiZSBhIHN1YnNldCBvZiB0aGUgcmVzcG9uc2UpLlxuICAgKi9cbiAgZ2V0PzogKGRhdGE6IEVudGl0eUdldFBhcmFtczxTdG9yZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQ+KSA9PiBPYnNlcnZhYmxlPERhdGE+O1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgZW50aXR5IHN0b3JlIGV2ZXJ5IHRpbWUgYSBuZXcgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuXG4gICAqL1xuICBzZXQ/OiAoZGF0YTogRW50aXR5U2V0UGFyYW1zPFN0b3JlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZD4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5Q29uZmlnQmFzZTxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiA9IHtcbiAgLyoqXG4gICAqIFRoZSBodHRwIG1ldGhvZCB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIG1ldGhvZDogTWV0aG9kO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBhdXRoIHByb3ZpZGVyIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzIHF1ZXJ5LlxuICAgKiBUaGUgcXVlcnkgKip3aWxsIHRocm93KiogaWYgdGhlIHF1ZXJ5IGNsaWVudCdzIGF1dGggcHJvdmlkZXIgaXMgdW5zZXQuXG4gICAqL1xuICBzZWN1cmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBxdWVyeSBzaG91bGQgZW1pdCBwcm9ncmVzcyBldmVudHMuXG4gICAqL1xuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIHF1ZXJ5J3MgcmVzcG9uc2UgdHlwZS5cbiAgICogQGRlZmF1bHQgJ2pzb24nXG4gICAqL1xuICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVxdWVzdCBzaG91bGQgYmUgc2VudCB3aXRoIG91dGdvaW5nIGNyZWRlbnRpYWxzIChjb29raWVzKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGhhbmRsaW5nIGF1dG8gcmVmcmVzaCB0cmlnZ2Vycy5cbiAgICpcbiAgICogKipOb3RlOioqIFRoaXMgaXMgb25seSBhdmFpbGFibGUgZm9yIHF1ZXJpZXMgdGhhdCBjYW4gYmUgcmVmcmVzaGVkLiAoYEdFVGAsIGBIRUFEYCwgYE9QVElPTlNgLCBgR1FMX1FVRVJZYClcbiAgICovXG4gIGF1dG9SZWZyZXNoT24/OiBRdWVyeUF1dG9SZWZyZXNoQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgc3RvcCBwb2xsaW5nIGZvciB0aGlzIHF1ZXJ5IHdoZW4gdGhlIHdpbmRvdyBsb3NlcyBmb2N1cy5cbiAgICogUG9sbGluZyB3aWxsIHJlc3VtZSB3aGVuIHRoZSB3aW5kb3cgcmVnYWlucyBmb2N1cy5cbiAgICpcbiAgICogVGhpcyBjYW4gb25seSBiZSBkaXNhYmxlZCBpZiBgZW5hYmxlU21hcnRQb2xsaW5nYCBpcyBlbmFibGVkIG9uIHRoZSBxdWVyeSBjbGllbnQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGVuYWJsZVNtYXJ0UG9sbGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9iamVjdCBjb250YWluaW5nIHRoZSBxdWVyeSdzIHR5cGUgaW5mb3JtYXRpb24uXG4gICAqL1xuICB0eXBlcz86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXNwb25zZS5cbiAgICAgKi9cbiAgICByZXNwb25zZT86IFJlc3BvbnNlO1xuXG4gICAgLyoqXG4gICAgICogQXJndW1lbnRzIGZvciBleGVjdXRpbmcgdGhlIHF1ZXJ5LlxuICAgICAqXG4gICAgICogLSBgcGF0aFBhcmFtc2A6IFRoZSBwYXRoIHBhcmFtZXRlcnMgZm9yIHRoZSBxdWVyeS4gKGluIGZyb250IG9mIHRoZSA/IGluIHRoZSB1cmwpXG4gICAgICogLSBgcXVlcnlQYXJhbXNgOiBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIHF1ZXJ5LiAoYWZ0ZXIgdGhlID8gaW4gdGhlIHVybClcbiAgICAgKiAtIGBib2R5YDogVGhlIGJvZHkgZm9yIHRoZSBxdWVyeS4gVW5hdmFpbGFibGUgZm9yIEdFVCwgSEVBRCBhbmQgT1BUSU9OUyByZXF1ZXN0cy5cbiAgICAgKiAtIGBoZWFkZXJzYDogVGhlIGhlYWRlcnMgZm9yIHRoZSBxdWVyeS5cbiAgICAgKiAtIGB2YXJpYWJsZXNgOiBUaGUgdmFyaWFibGVzIGZvciB0aGUgcXVlcnkuIChncmFwaHFsIG9ubHkpXG4gICAgICovXG4gICAgYXJncz86IEFyZ3VtZW50cztcbiAgfTtcblxuICAvKipcbiAgICogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHF1ZXJ5J3MgZW50aXR5IHN0b3JlIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgZW50aXR5PzogUXVlcnlFbnRpdHlDb25maWc8U3RvcmUsIERhdGEsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc3RRdWVyeUNvbmZpZzxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiA9IFF1ZXJ5Q29uZmlnQmFzZTxSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+ICYge1xuICAvKipcbiAgICogVGhlIGFwaSByb3V0ZSB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIHJvdXRlOiBSb3V0ZTtcbn07XG5cbmV4cG9ydCB0eXBlIEdxbFRyYW5zZmVyT3B0aW9uID0gJ0dFVCcgfCAnUE9TVCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3FsUXVlcnlDb25maWc8XG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4gfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4gZXh0ZW5kcyBRdWVyeUNvbmZpZ0Jhc2U8UmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPiB7XG4gIC8qKlxuICAgKiBUaGUgZ3JhcGhxbCBxdWVyeSB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIHF1ZXJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHF1ZXJ5IHNob3VsZCBiZSBzZW50IHZpYSBHRVQgb3IgUE9TVC5cbiAgICogLSBgR0VUYDogVGhlIHF1ZXJ5IHdpbGwgYmUgc2VudCB2aWEgcXVlcnkgcGFyYW1ldGVycy5cbiAgICogLSBgUE9TVGA6IFRoZSBxdWVyeSB3aWxsIGJlIHNlbnQgdmlhIHRoZSBib2R5LlxuICAgKiBAZGVmYXVsdCAnUE9TVCdcbiAgICovXG4gIHRyYW5zZmVyVmlhPzogR3FsVHJhbnNmZXJPcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnJvdXRlIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcm91dGU/OiBSb3V0ZTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEFueVJlc3RRdWVyeUNvbmZpZyA9IFJlc3RRdWVyeUNvbmZpZzxhbnksIGFueSwgYW55LCBhbnksIGFueSwgYW55Pjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBBbnlHcWxRdWVyeUNvbmZpZyA9IEdxbFF1ZXJ5Q29uZmlnPGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuXG5leHBvcnQgdHlwZSBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8XG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4gPSBPbWl0PFJlc3RRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPiwgJ21ldGhvZCc+O1xuXG5leHBvcnQgdHlwZSBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8XG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4gPSBPbWl0PEdxbFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LCAnbWV0aG9kJz47XG5cbmV4cG9ydCB0eXBlIEJhc2VBcmd1bWVudHMgPSBXaXRoSGVhZGVycyAmXG4gIFdpdGhWYXJpYWJsZXMgJlxuICBXaXRoQm9keSAmXG4gIFdpdGhRdWVyeVBhcmFtcyAmXG4gIFdpdGhQYXRoUGFyYW1zICZcbiAgV2l0aE1vY2s8dW5rbm93bj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aEhlYWRlcnMge1xuICAvKipcbiAgICogVGhlIGhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSBxdWVyeS5cbiAgICovXG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5TW9ja0NvbmZpZzxNb2NrUmVzcG9uc2U+IHtcbiAgLyoqXG4gICAqIFRoZSBtb2NrIHJlc3BvbnNlIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcmVzcG9uc2U/OiBNb2NrUmVzcG9uc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBtb2NrIGVycm9yIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgZXJyb3I/OiBSZXF1ZXN0RXJyb3I7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWxheSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgcmVzb2x2aW5nIHRoZSBtb2NrLlxuICAgKiBJZiBwcm9ncmVzcyBpcyBlbmFibGVkLCB0aGUgZGVsYXkgd2lsbCBiZSB1c2VkIGZvciBlYWNoIHByb2dyZXNzIGV2ZW50LlxuICAgKiBAZGVmYXVsdCAyMDBcbiAgICovXG4gIGRlbGF5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlcG9ydCBwcm9ncmVzcyBmb3IgdGhlIG1vY2suXG4gICAqIEZvciB0ZXN0aW5nIGUuZy4gZmlsZSB1cGxvYWRzLlxuICAgKi9cbiAgcHJvZ3Jlc3M/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBwcm9ncmVzcyBldmVudHMgdG8gcmVwb3J0LlxuICAgICAqIEBkZWZhdWx0IDVcbiAgICAgKi9cbiAgICBldmVudENvdW50PzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHR5cGUgb2YgcHJvZ3Jlc3MgZXZlbnQgdG8gcmVwb3J0LlxuICAgICAqIEBkZWZhdWx0ICd1cGxvYWQnXG4gICAgICovXG4gICAgZXZlbnRUeXBlPzogJ2Rvd25sb2FkJyB8ICd1cGxvYWQnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRvdGFsIHNpemUgb2YgdGhlIGZpbGUgdG8gcmVwb3J0IHByb2dyZXNzIGZvciBpbiBieXRlcy5cbiAgICAgKiBAZGVmYXVsdCAxXzAwMF8wMDAgKDFNQilcbiAgICAgKi9cbiAgICBmaWxlU2l6ZT86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBmaWxlIHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSBwcm9ncmVzcyBldmVudC5cbiAgICAgKiBVc2VmdWwgZm9yIHRlc3RpbmcgZS5nLiBkb3dubG9hZCBwcm9ncmVzcyB3aGVuIHRoZSBzZXJ2ZXIgZG9lcyBub3QgcHJvdmlkZSBhIHRvdGFsIHNpemUuXG4gICAgICovXG4gICAgb21pdFRvdGFsPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZSBwYXJ0aWFsIHRleHQgd2lsbCBiZSBvbWl0dGVkIGZyb20gdGhlIHByb2dyZXNzIGV2ZW50LlxuICAgICAqIFVzZWZ1bCBmb3IgdGVzdGluZyBlLmcuIGRvd25sb2FkIHByb2dyZXNzIHdoZW4gdGhlIHNlcnZlciBkb2VzIG5vdCBwcm92aWRlIGEgcGFydGlhbCB0ZXh0LlxuICAgICAqL1xuICAgIG9taXRQYXJ0aWFsVGV4dD86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBtb2NrIHRoZSByZXF1ZXN0IGZhaWxpbmcgYW5kIGdldHRpbmcgcmV0cmllZCAzIHRpbWVzLiBBZnRlciwgdGhlIHJlcXVlc3Qgd2lsbCBzdWNjZWVkIHdpdGggdGhlIHByb3ZpZGVkIHJlc3BvbnNlLlxuICAgKiBDYW4gbm90IGJlIHVzZWQgd2l0aCBgcHJvZ3Jlc3NgIGVuYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXRyeUludG9SZXNwb25zZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aE1vY2s8TW9ja1Jlc3BvbnNlPiB7XG4gIG1vY2s/OiBRdWVyeU1vY2tDb25maWc8TW9ja1Jlc3BvbnNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUNvbmZpZyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcXVlcnkgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBpbnRlcm5hbCBxdWVyeSBzdG9yZS5cbiAgICpcbiAgICogR2VuZXJhbGx5IHRoaXMgc2hvdWxkIGJlIGxlZnQgb24gYGZhbHNlYCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcFF1ZXJ5U3RvcmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FjaGUga2V5IHRvIHVzZSBmb3IgdGhpcyBxdWVyeS5cbiAgICogVXNlZnVsIGZvciBxdWVyaWVzIHRoYXQgYXJlIGVxdWFsIGJ1dCBzaG91bGQgYmUgc3RvcmVkIHNlcGFyYXRlbHkuXG4gICAqIFdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgaWYgbm90IHByb3ZpZGVkLlxuICAgKlxuICAgKiBHZW5lcmFsbHkgdGhpcyBzaG91bGQgYmUgbGVmdCBvbiBgdW5kZWZpbmVkYCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxuICAgKi9cbiAgcXVlcnlTdG9yZUNhY2hlS2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhDb25maWcge1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHF1ZXJ5LlxuICAgKi9cbiAgY29uZmlnPzogUXVlcnlDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFZhcmlhYmxlcyB7XG4gIC8qKlxuICAgKiBUaGUgdmFyaWFibGVzIGZvciB0aGUgcXVlcnkuIChncmFwaHFsIG9ubHkpXG4gICAqL1xuICB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoQm9keSB7XG4gIC8qKlxuICAgKiBUaGUgYm9keSBmb3IgdGhlIHF1ZXJ5LiBVbmF2YWlsYWJsZSBmb3IgR0VULCBIRUFEIGFuZCBPUFRJT05TIHJlcXVlc3RzLlxuICAgKi9cbiAgYm9keT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFF1ZXJ5UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgcXVlcnkuIChhZnRlciB0aGUgPyBpbiB0aGUgdXJsKVxuICAgKi9cbiAgcXVlcnlQYXJhbXM/OiBRdWVyeVBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGF0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCBwYXJhbWV0ZXJzIGZvciB0aGUgcXVlcnkuIChpbiBmcm9udCBvZiB0aGUgPyBpbiB0aGUgdXJsKVxuICAgKi9cbiAgcGF0aFBhcmFtcz86IFBhdGhQYXJhbXM7XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5VHJpZ2dlciA9ICdwcm9ncmFtJyB8ICdwb2xsJyB8ICdhdXRvJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbmV4cG9ydCB0eXBlIEVtcHR5T2JqZWN0ID0ge307XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZVF1ZXJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNraXAgdGhlIGNhY2hlIGZvciB0aGlzIHF1ZXJ5LiBUaGlzIHdpbGwgZm9yY2UgdGhlIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkLiBJdCBtaWdodCBzdGlsbCBiZSBjYXVnaHQgYnkgdGhlIG5hdGl2ZSBicm93c2VyIGNhY2hlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcENhY2hlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBjYW5jZWwgdGhlIHByZXZpb3VzIHJlcXVlc3QgaWYgaXQgaXMgc3RpbGwgbG9hZGluZy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNhbmNlbFByZXZpb3VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRyaWdnZXIgdHlwZSBmb3IgdGhpcyBxdWVyeS5cbiAgICogLSBgcHJvZ3JhbWA6IFRoZSBxdWVyeSB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyLlxuICAgKiAtIGBwb2xsYDogVGhlIHF1ZXJ5IHdhcyB0cmlnZ2VyZWQgYnkgcG9sbGluZy5cbiAgICogLSBgYXV0b2A6IFRoZSBxdWVyeSB3YXMgdHJpZ2dlcmVkIGJ5IGFuIGF1dG8gcmVmcmVzaCBldmVudC5cbiAgICogQGRlZmF1bHQgJ3Byb2dyYW0nXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3RyaWdnZXJlZFZpYT86IFF1ZXJ5VHJpZ2dlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGEgcmV0cnkgb2YgYW4gdW5hdXRob3JpemVkIHJlcXVlc3QuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2lzVW5hdXRob3JpemVkUmV0cnk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBSb3V0ZVR5cGU8QXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZD4gPSBBcmd1bWVudHMgZXh0ZW5kcyB7XG4gIHBhdGhQYXJhbXM6IGluZmVyIFBhdGhQYXJhbXM7XG59XG4gID8gKHA6IFBhdGhQYXJhbXMpID0+IFJvdXRlU3RyaW5nXG4gIDogUm91dGVTdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFJvdXRlU3RyaW5nID0gYC8ke3N0cmluZ31gO1xuXG5leHBvcnQgdHlwZSBBbnlSb3V0ZSA9ICgocDogUGF0aFBhcmFtcykgPT4gc3RyaW5nKSB8IFJvdXRlU3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvbGxDb25maWcge1xuICAvKipcbiAgICogVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBwb2xsIHRoZSBxdWVyeS5cbiAgICovXG4gIGludGVydmFsOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgc3RvcCB0aGUgcG9sbGluZyB3aGVuIGl0IGVtaXRzLlxuICAgKi9cbiAgdGFrZVVudGlsOiBPYnNlcnZhYmxlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHRyaWdnZXIgdGhlIHF1ZXJ5IGltbWVkaWF0ZWx5IGFmdGVyIHBvbGxpbmcgc3RhcnRzLlxuICAgKi9cbiAgdHJpZ2dlckltbWVkaWF0ZWx5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gUXVlcnlTdGF0ZVR5cGUge1xuICBQcmVwYXJlZCA9ICdQUkVQQVJFRCcsXG4gIExvYWRpbmcgPSAnTE9BRElORycsXG4gIFN1Y2Nlc3MgPSAnU1VDQ0VTUycsXG4gIEZhaWx1cmUgPSAnRkFJTFVSRScsXG4gIENhbmNlbGxlZCA9ICdDQU5DRUxMRUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVkIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuUHJlcGFyZWQ7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1Y2Nlc3M8UmVzcG9uc2UgPSB1bmtub3duPiB7XG4gIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3M7XG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgaGVhZGVyczogUmVxdWVzdEhlYWRlcnM7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVTdWNjZXNzTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWlsdXJlIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuRmFpbHVyZTtcbiAgZXJyb3I6IFJlcXVlc3RFcnJvcjtcbiAgbWV0YTogUXVlcnlTdGF0ZU1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZyB7XG4gIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmc7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xuICBwYXJ0aWFsVGV4dD86IHN0cmluZztcbiAgcHJvZ3Jlc3M/OiBSZXF1ZXN0UHJvZ3Jlc3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsbGVkIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuQ2FuY2VsbGVkO1xuICBtZXRhOiBRdWVyeVN0YXRlTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVN0YXRlTWV0YSB7XG4gIGlkOiBudW1iZXI7XG4gIHRyaWdnZXJlZFZpYTogUXVlcnlUcmlnZ2VyO1xuICBpc1dhaXRpbmdGb3JSZXRyeT86IGJvb2xlYW47XG4gIHJldHJ5TnVtYmVyPzogbnVtYmVyO1xuICByZXRyeURlbGF5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U3RhdGVTdWNjZXNzTWV0YSBleHRlbmRzIFF1ZXJ5U3RhdGVNZXRhIHtcbiAgZXhwaXJlc0F0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBRdWVyeVN0YXRlPFJlc3BvbnNlID0gdW5rbm93bj4gPSBMb2FkaW5nIHwgU3VjY2VzczxSZXNwb25zZT4gfCBGYWlsdXJlIHwgQ2FuY2VsbGVkIHwgUHJlcGFyZWQ7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5U3RhdGVSZXNwb25zZU9mPFQgZXh0ZW5kcyBRdWVyeVN0YXRlID0gUXVlcnlTdGF0ZT4gPVxuICBUIGV4dGVuZHMgU3VjY2VzczxpbmZlciBSZXNwb25zZT4gPyBSZXNwb25zZSA6IG5ldmVyO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgQW55UXVlcnkgPSBRdWVyeTxhbnksIGFueSwgYW55LCBhbnksIGFueSwgYW55PjtcblxuZXhwb3J0IHR5cGUgQW55UXVlcnlDcmVhdG9yQ29sbGVjdGlvbiA9IHsgW25hbWU6IHN0cmluZ106IEFueVF1ZXJ5Q3JlYXRvciB9O1xuXG5leHBvcnQgdHlwZSBRdWVyeUNvbGxlY3Rpb25PZjxUIGV4dGVuZHMgeyBbbmFtZTogc3RyaW5nXTogQW55UXVlcnlDcmVhdG9yIH0+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogeyB0eXBlOiBLOyBxdWVyeTogQ29uc3RydWN0UXVlcnk8VFtLXT4gfTtcbn1ba2V5b2YgVF07XG5cbmV4cG9ydCB0eXBlIEFueVF1ZXJ5Q29sbGVjdGlvbiA9IFF1ZXJ5Q29sbGVjdGlvbk9mPEFueVF1ZXJ5Q3JlYXRvckNvbGxlY3Rpb24+O1xuXG5leHBvcnQgdHlwZSBRdWVyeU9mPFQgZXh0ZW5kcyBBbnlRdWVyeUNvbGxlY3Rpb24gfCBBbnlRdWVyeSB8IG51bGw+ID0gVCBleHRlbmRzIEFueVF1ZXJ5XG4gID8gVFxuICA6IFQgZXh0ZW5kcyBBbnlRdWVyeUNvbGxlY3Rpb25cbiAgICA/IFRbJ3F1ZXJ5J11cbiAgICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBBbnlRdWVyeUNvbGxlY3Rpb25SZXNwb25zZTxUIGV4dGVuZHMgQW55UXVlcnlDb2xsZWN0aW9uPiA9IFF1ZXJ5UmVzcG9uc2VPZjxUWydxdWVyeSddPjtcbmV4cG9ydCB0eXBlIEFueVF1ZXJ5Q29sbGVjdGlvbkRhdGE8VCBleHRlbmRzIEFueVF1ZXJ5Q29sbGVjdGlvbj4gPSBRdWVyeURhdGFPZjxUWydxdWVyeSddPjtcblxuZXhwb3J0IHR5cGUgUXVlcnlDb2xsZWN0aW9uS2V5c09mPFQgZXh0ZW5kcyBBbnlRdWVyeUNvbGxlY3Rpb24gfCBBbnlRdWVyeSB8IG51bGw+ID0gVCBleHRlbmRzIEFueVF1ZXJ5Q29sbGVjdGlvblxuICA/IFRbJ3R5cGUnXVxuICA6IG5ldmVyO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhZ2VPbkVycm9yT3BlcmF0b3JDb25maWc8SiBleHRlbmRzIFF1ZXJ5Rm9ybTxhbnk+PiB7XG4gIC8qKlxuICAgKiBUaGUgcXVlcnkgZm9ybSB0byByZXNldCB0aGUgcGFnZSBvZi5cbiAgICovXG4gIHF1ZXJ5Rm9ybTogSjtcblxuICAvKipcbiAgICogVGhlIGtleSBvZiB0aGUgcGFnZSBjb250cm9sIGluIHRoZSBxdWVyeSBmb3JtLlxuICAgKiBAZGVmYXVsdCAncGFnZSdcbiAgICovXG4gIHBhZ2VDb250cm9sS2V5Pzogc3RyaW5nO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi4vZW50aXR5JztcbmltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgQ29uc3RydWN0UXVlcnksIFF1ZXJ5RGF0YU9mLCBRdWVyeVJlc3BvbnNlT2YgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcbmltcG9ydCB7IFF1ZXJ5Rm9ybSB9IGZyb20gJy4uL3F1ZXJ5LWZvcm0nO1xuaW1wb3J0IHsgTWV0aG9kLCBQYXRoUGFyYW1zLCBRdWVyeVBhcmFtcywgUmVxdWVzdEVycm9yLCBSZXF1ZXN0SGVhZGVycywgUmVxdWVzdFByb2dyZXNzIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gJy4vcXVlcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5QXV0b1JlZnJlc2hDb25maWcge1xuICAvKipcbiAgICogUmVmcmVzaCB0aGUgcXVlcnkgd2hlbiB0aGUgcXVlcnkgY2xpZW50J3MgaGVhZGVycyBjaGFuZ2UuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHF1ZXJ5Q2xpZW50RGVmYXVsdEhlYWRlcnNDaGFuZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZWZyZXNoIHRoZSBxdWVyeSB3aGVuIHRoZSB3aW5kb3cgcmVnYWlucyBmb2N1cy5cbiAgICpcbiAgICogVGhpcyBjYW4gb25seSBiZSBkaXNhYmxlZCBpZiBgYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1c2AgaXMgZW5hYmxlZCBvbiB0aGUgcXVlcnkgY2xpZW50LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB3aW5kb3dGb2N1cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5U2V0UGFyYW1zPFN0b3JlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZD4ge1xuICAvKipcbiAgICogVGhlIHJlc3BvbnNlIGRhdGEuXG4gICAqL1xuICByZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBpZChzKSByZXR1cm5lZCBieSB0aGUgYGlkYCBmdW5jdGlvbi5cbiAgICovXG4gIGlkOiBJZDtcblxuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHF1ZXJ5LlxuICAgKi9cbiAgYXJnczogQXJndW1lbnRzO1xuXG4gIC8qKlxuICAgKiBUaGUgZW50aXR5IHN0b3JlLlxuICAgKi9cbiAgc3RvcmU6IFN0b3JlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUdldFBhcmFtczxTdG9yZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQ+IHtcbiAgLyoqXG4gICAqIFRoZSByZXNwb25zZSBkYXRhLlxuICAgKi9cbiAgcmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQocykgcmV0dXJuZWQgYnkgdGhlIGBpZGAgZnVuY3Rpb24uXG4gICAqL1xuICBpZDogSWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBxdWVyeS5cbiAgICovXG4gIGFyZ3M6IEFyZ3VtZW50cztcblxuICAvKipcbiAgICogVGhlIGVudGl0eSBzdG9yZS5cbiAgICovXG4gIHN0b3JlOiBTdG9yZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlJZFBhcmFtczxSZXNwb25zZSwgQXJndW1lbnRzPiB7XG4gIC8qKlxuICAgKiBUaGUgcmVzcG9uc2UgZGF0YS5cbiAgICovXG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHF1ZXJ5LlxuICAgKi9cbiAgYXJnczogQXJndW1lbnRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RW50aXR5Q29uZmlnPFN0b3JlLCBEYXRhLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZD4ge1xuICAvKipcbiAgICogVGhlIGVudGl0eSBzdG9yZSB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIHN0b3JlOiBTdG9yZTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGlkIG9mIHRoZSBlbnRpdHkuIENhbiBhbHNvIHJldHVybiBhbiBhcnJheSBvZiBpZHMuXG4gICAqL1xuICBpZDogKGRhdGE6IEVudGl0eUlkUGFyYW1zPFJlc3BvbnNlLCBBcmd1bWVudHM+KSA9PiBJZDtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3BvbnNlIGRhdGEgKGNhbiBiZSBhIHN1YnNldCBvZiB0aGUgcmVzcG9uc2UpLlxuICAgKi9cbiAgZ2V0PzogKGRhdGE6IEVudGl0eUdldFBhcmFtczxTdG9yZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQ+KSA9PiBPYnNlcnZhYmxlPERhdGE+O1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgZW50aXR5IHN0b3JlIGV2ZXJ5IHRpbWUgYSBuZXcgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuXG4gICAqL1xuICBzZXQ/OiAoZGF0YTogRW50aXR5U2V0UGFyYW1zPFN0b3JlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZD4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5Q29uZmlnQmFzZTxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiA9IHtcbiAgLyoqXG4gICAqIFRoZSBodHRwIG1ldGhvZCB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIG1ldGhvZDogTWV0aG9kO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBhdXRoIHByb3ZpZGVyIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzIHF1ZXJ5LlxuICAgKiBUaGUgcXVlcnkgKip3aWxsIHRocm93KiogaWYgdGhlIHF1ZXJ5IGNsaWVudCdzIGF1dGggcHJvdmlkZXIgaXMgdW5zZXQuXG4gICAqL1xuICBzZWN1cmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBxdWVyeSBzaG91bGQgZW1pdCBwcm9ncmVzcyBldmVudHMuXG4gICAqL1xuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIHF1ZXJ5J3MgcmVzcG9uc2UgdHlwZS5cbiAgICogQGRlZmF1bHQgJ2pzb24nXG4gICAqL1xuICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVxdWVzdCBzaG91bGQgYmUgc2VudCB3aXRoIG91dGdvaW5nIGNyZWRlbnRpYWxzIChjb29raWVzKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGhhbmRsaW5nIGF1dG8gcmVmcmVzaCB0cmlnZ2Vycy5cbiAgICpcbiAgICogKipOb3RlOioqIFRoaXMgaXMgb25seSBhdmFpbGFibGUgZm9yIHF1ZXJpZXMgdGhhdCBjYW4gYmUgcmVmcmVzaGVkLiAoYEdFVGAsIGBIRUFEYCwgYE9QVElPTlNgLCBgR1FMX1FVRVJZYClcbiAgICovXG4gIGF1dG9SZWZyZXNoT24/OiBRdWVyeUF1dG9SZWZyZXNoQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgc3RvcCBwb2xsaW5nIGZvciB0aGlzIHF1ZXJ5IHdoZW4gdGhlIHdpbmRvdyBsb3NlcyBmb2N1cy5cbiAgICogUG9sbGluZyB3aWxsIHJlc3VtZSB3aGVuIHRoZSB3aW5kb3cgcmVnYWlucyBmb2N1cy5cbiAgICpcbiAgICogVGhpcyBjYW4gb25seSBiZSBkaXNhYmxlZCBpZiBgZW5hYmxlU21hcnRQb2xsaW5nYCBpcyBlbmFibGVkIG9uIHRoZSBxdWVyeSBjbGllbnQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGVuYWJsZVNtYXJ0UG9sbGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9iamVjdCBjb250YWluaW5nIHRoZSBxdWVyeSdzIHR5cGUgaW5mb3JtYXRpb24uXG4gICAqL1xuICB0eXBlcz86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXNwb25zZS5cbiAgICAgKi9cbiAgICByZXNwb25zZT86IFJlc3BvbnNlO1xuXG4gICAgLyoqXG4gICAgICogQXJndW1lbnRzIGZvciBleGVjdXRpbmcgdGhlIHF1ZXJ5LlxuICAgICAqXG4gICAgICogLSBgcGF0aFBhcmFtc2A6IFRoZSBwYXRoIHBhcmFtZXRlcnMgZm9yIHRoZSBxdWVyeS4gKGluIGZyb250IG9mIHRoZSA/IGluIHRoZSB1cmwpXG4gICAgICogLSBgcXVlcnlQYXJhbXNgOiBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIHF1ZXJ5LiAoYWZ0ZXIgdGhlID8gaW4gdGhlIHVybClcbiAgICAgKiAtIGBib2R5YDogVGhlIGJvZHkgZm9yIHRoZSBxdWVyeS4gVW5hdmFpbGFibGUgZm9yIEdFVCwgSEVBRCBhbmQgT1BUSU9OUyByZXF1ZXN0cy5cbiAgICAgKiAtIGBoZWFkZXJzYDogVGhlIGhlYWRlcnMgZm9yIHRoZSBxdWVyeS5cbiAgICAgKiAtIGB2YXJpYWJsZXNgOiBUaGUgdmFyaWFibGVzIGZvciB0aGUgcXVlcnkuIChncmFwaHFsIG9ubHkpXG4gICAgICovXG4gICAgYXJncz86IEFyZ3VtZW50cztcbiAgfTtcblxuICAvKipcbiAgICogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHF1ZXJ5J3MgZW50aXR5IHN0b3JlIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgZW50aXR5PzogUXVlcnlFbnRpdHlDb25maWc8U3RvcmUsIERhdGEsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc3RRdWVyeUNvbmZpZzxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiA9IFF1ZXJ5Q29uZmlnQmFzZTxSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+ICYge1xuICAvKipcbiAgICogVGhlIGFwaSByb3V0ZSB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIHJvdXRlOiBSb3V0ZTtcbn07XG5cbmV4cG9ydCB0eXBlIEdxbFRyYW5zZmVyT3B0aW9uID0gJ0dFVCcgfCAnUE9TVCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3FsUXVlcnlDb25maWc8XG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4gfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4gZXh0ZW5kcyBRdWVyeUNvbmZpZ0Jhc2U8UmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPiB7XG4gIC8qKlxuICAgKiBUaGUgZ3JhcGhxbCBxdWVyeSB0byB1c2UgZm9yIHRoZSBxdWVyeS5cbiAgICovXG4gIHF1ZXJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHF1ZXJ5IHNob3VsZCBiZSBzZW50IHZpYSBHRVQgb3IgUE9TVC5cbiAgICogLSBgR0VUYDogVGhlIHF1ZXJ5IHdpbGwgYmUgc2VudCB2aWEgcXVlcnkgcGFyYW1ldGVycy5cbiAgICogLSBgUE9TVGA6IFRoZSBxdWVyeSB3aWxsIGJlIHNlbnQgdmlhIHRoZSBib2R5LlxuICAgKiBAZGVmYXVsdCAnUE9TVCdcbiAgICovXG4gIHRyYW5zZmVyVmlhPzogR3FsVHJhbnNmZXJPcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnJvdXRlIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcm91dGU/OiBSb3V0ZTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEFueVJlc3RRdWVyeUNvbmZpZyA9IFJlc3RRdWVyeUNvbmZpZzxhbnksIGFueSwgYW55LCBhbnksIGFueSwgYW55Pjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBBbnlHcWxRdWVyeUNvbmZpZyA9IEdxbFF1ZXJ5Q29uZmlnPGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuXG5leHBvcnQgdHlwZSBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8XG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4gPSBPbWl0PFJlc3RRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPiwgJ21ldGhvZCc+O1xuXG5leHBvcnQgdHlwZSBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8XG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4gPSBPbWl0PEdxbFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LCAnbWV0aG9kJz47XG5cbmV4cG9ydCB0eXBlIEJhc2VBcmd1bWVudHMgPSBXaXRoSGVhZGVycyAmXG4gIFdpdGhWYXJpYWJsZXMgJlxuICBXaXRoQm9keSAmXG4gIFdpdGhRdWVyeVBhcmFtcyAmXG4gIFdpdGhQYXRoUGFyYW1zICZcbiAgV2l0aE1vY2s8dW5rbm93bj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aEhlYWRlcnMge1xuICAvKipcbiAgICogVGhlIGhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSBxdWVyeS5cbiAgICovXG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5TW9ja0NvbmZpZzxNb2NrUmVzcG9uc2U+IHtcbiAgLyoqXG4gICAqIFRoZSBtb2NrIHJlc3BvbnNlIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcmVzcG9uc2U/OiBNb2NrUmVzcG9uc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBtb2NrIGVycm9yIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgZXJyb3I/OiBSZXF1ZXN0RXJyb3I7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWxheSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgcmVzb2x2aW5nIHRoZSBtb2NrLlxuICAgKiBJZiBwcm9ncmVzcyBpcyBlbmFibGVkLCB0aGUgZGVsYXkgd2lsbCBiZSB1c2VkIGZvciBlYWNoIHByb2dyZXNzIGV2ZW50LlxuICAgKiBAZGVmYXVsdCAyMDBcbiAgICovXG4gIGRlbGF5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlcG9ydCBwcm9ncmVzcyBmb3IgdGhlIG1vY2suXG4gICAqIEZvciB0ZXN0aW5nIGUuZy4gZmlsZSB1cGxvYWRzLlxuICAgKi9cbiAgcHJvZ3Jlc3M/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBwcm9ncmVzcyBldmVudHMgdG8gcmVwb3J0LlxuICAgICAqIEBkZWZhdWx0IDVcbiAgICAgKi9cbiAgICBldmVudENvdW50PzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHR5cGUgb2YgcHJvZ3Jlc3MgZXZlbnQgdG8gcmVwb3J0LlxuICAgICAqIEBkZWZhdWx0ICd1cGxvYWQnXG4gICAgICovXG4gICAgZXZlbnRUeXBlPzogJ2Rvd25sb2FkJyB8ICd1cGxvYWQnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRvdGFsIHNpemUgb2YgdGhlIGZpbGUgdG8gcmVwb3J0IHByb2dyZXNzIGZvciBpbiBieXRlcy5cbiAgICAgKiBAZGVmYXVsdCAxXzAwMF8wMDAgKDFNQilcbiAgICAgKi9cbiAgICBmaWxlU2l6ZT86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBmaWxlIHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSBwcm9ncmVzcyBldmVudC5cbiAgICAgKiBVc2VmdWwgZm9yIHRlc3RpbmcgZS5nLiBkb3dubG9hZCBwcm9ncmVzcyB3aGVuIHRoZSBzZXJ2ZXIgZG9lcyBub3QgcHJvdmlkZSBhIHRvdGFsIHNpemUuXG4gICAgICovXG4gICAgb21pdFRvdGFsPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZSBwYXJ0aWFsIHRleHQgd2lsbCBiZSBvbWl0dGVkIGZyb20gdGhlIHByb2dyZXNzIGV2ZW50LlxuICAgICAqIFVzZWZ1bCBmb3IgdGVzdGluZyBlLmcuIGRvd25sb2FkIHByb2dyZXNzIHdoZW4gdGhlIHNlcnZlciBkb2VzIG5vdCBwcm92aWRlIGEgcGFydGlhbCB0ZXh0LlxuICAgICAqL1xuICAgIG9taXRQYXJ0aWFsVGV4dD86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBtb2NrIHRoZSByZXF1ZXN0IGZhaWxpbmcgYW5kIGdldHRpbmcgcmV0cmllZCAzIHRpbWVzLiBBZnRlciwgdGhlIHJlcXVlc3Qgd2lsbCBzdWNjZWVkIHdpdGggdGhlIHByb3ZpZGVkIHJlc3BvbnNlLlxuICAgKiBDYW4gbm90IGJlIHVzZWQgd2l0aCBgcHJvZ3Jlc3NgIGVuYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXRyeUludG9SZXNwb25zZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aE1vY2s8TW9ja1Jlc3BvbnNlPiB7XG4gIG1vY2s/OiBRdWVyeU1vY2tDb25maWc8TW9ja1Jlc3BvbnNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUNvbmZpZyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcXVlcnkgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBpbnRlcm5hbCBxdWVyeSBzdG9yZS5cbiAgICpcbiAgICogR2VuZXJhbGx5IHRoaXMgc2hvdWxkIGJlIGxlZnQgb24gYGZhbHNlYCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcFF1ZXJ5U3RvcmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FjaGUga2V5IHRvIHVzZSBmb3IgdGhpcyBxdWVyeS5cbiAgICogVXNlZnVsIGZvciBxdWVyaWVzIHRoYXQgYXJlIGVxdWFsIGJ1dCBzaG91bGQgYmUgc3RvcmVkIHNlcGFyYXRlbHkuXG4gICAqIFdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgaWYgbm90IHByb3ZpZGVkLlxuICAgKlxuICAgKiBHZW5lcmFsbHkgdGhpcyBzaG91bGQgYmUgbGVmdCBvbiBgdW5kZWZpbmVkYCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLlxuICAgKi9cbiAgcXVlcnlTdG9yZUNhY2hlS2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhDb25maWcge1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIHF1ZXJ5LlxuICAgKi9cbiAgY29uZmlnPzogUXVlcnlDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFZhcmlhYmxlcyB7XG4gIC8qKlxuICAgKiBUaGUgdmFyaWFibGVzIGZvciB0aGUgcXVlcnkuIChncmFwaHFsIG9ubHkpXG4gICAqL1xuICB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoQm9keSB7XG4gIC8qKlxuICAgKiBUaGUgYm9keSBmb3IgdGhlIHF1ZXJ5LiBVbmF2YWlsYWJsZSBmb3IgR0VULCBIRUFEIGFuZCBPUFRJT05TIHJlcXVlc3RzLlxuICAgKi9cbiAgYm9keT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFF1ZXJ5UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgcXVlcnkuIChhZnRlciB0aGUgPyBpbiB0aGUgdXJsKVxuICAgKi9cbiAgcXVlcnlQYXJhbXM/OiBRdWVyeVBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGF0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCBwYXJhbWV0ZXJzIGZvciB0aGUgcXVlcnkuIChpbiBmcm9udCBvZiB0aGUgPyBpbiB0aGUgdXJsKVxuICAgKi9cbiAgcGF0aFBhcmFtcz86IFBhdGhQYXJhbXM7XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5VHJpZ2dlciA9ICdwcm9ncmFtJyB8ICdwb2xsJyB8ICdhdXRvJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IHR5cGUgRW1wdHlPYmplY3QgPSB7fTtcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlUXVlcnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2tpcCB0aGUgY2FjaGUgZm9yIHRoaXMgcXVlcnkuIFRoaXMgd2lsbCBmb3JjZSB0aGUgcXVlcnkgdG8gYmUgZXhlY3V0ZWQuIEl0IG1pZ2h0IHN0aWxsIGJlIGNhdWdodCBieSB0aGUgbmF0aXZlIGJyb3dzZXIgY2FjaGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBza2lwQ2FjaGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNhbmNlbCB0aGUgcHJldmlvdXMgcmVxdWVzdCBpZiBpdCBpcyBzdGlsbCBsb2FkaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY2FuY2VsUHJldmlvdXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdHJpZ2dlciB0eXBlIGZvciB0aGlzIHF1ZXJ5LlxuICAgKiAtIGBwcm9ncmFtYDogVGhlIHF1ZXJ5IHdhcyB0cmlnZ2VyZWQgYnkgdGhlIHVzZXIuXG4gICAqIC0gYHBvbGxgOiBUaGUgcXVlcnkgd2FzIHRyaWdnZXJlZCBieSBwb2xsaW5nLlxuICAgKiAtIGBhdXRvYDogVGhlIHF1ZXJ5IHdhcyB0cmlnZ2VyZWQgYnkgYW4gYXV0byByZWZyZXNoIGV2ZW50LlxuICAgKiBAZGVmYXVsdCAncHJvZ3JhbSdcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfdHJpZ2dlcmVkVmlhPzogUXVlcnlUcmlnZ2VyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYSByZXRyeSBvZiBhbiB1bmF1dGhvcml6ZWQgcmVxdWVzdC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaXNVbmF1dGhvcml6ZWRSZXRyeT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFJvdXRlVHlwZTxBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkPiA9IEFyZ3VtZW50cyBleHRlbmRzIHtcbiAgcGF0aFBhcmFtczogaW5mZXIgUGF0aFBhcmFtcztcbn1cbiAgPyAocDogUGF0aFBhcmFtcykgPT4gUm91dGVTdHJpbmdcbiAgOiBSb3V0ZVN0cmluZztcblxuZXhwb3J0IHR5cGUgUm91dGVTdHJpbmcgPSBgLyR7c3RyaW5nfWA7XG5cbmV4cG9ydCB0eXBlIEFueVJvdXRlID0gKChwOiBQYXRoUGFyYW1zKSA9PiBzdHJpbmcpIHwgUm91dGVTdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9sbENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIHBvbGwgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgaW50ZXJ2YWw6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBvYnNlcnZhYmxlIHRoYXQgd2lsbCBzdG9wIHRoZSBwb2xsaW5nIHdoZW4gaXQgZW1pdHMuXG4gICAqL1xuICB0YWtlVW50aWw6IE9ic2VydmFibGU8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHJpZ2dlciB0aGUgcXVlcnkgaW1tZWRpYXRlbHkgYWZ0ZXIgcG9sbGluZyBzdGFydHMuXG4gICAqL1xuICB0cmlnZ2VySW1tZWRpYXRlbHk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgZW51bSBRdWVyeVN0YXRlVHlwZSB7XG4gIFByZXBhcmVkID0gJ1BSRVBBUkVEJyxcbiAgTG9hZGluZyA9ICdMT0FESU5HJyxcbiAgU3VjY2VzcyA9ICdTVUNDRVNTJyxcbiAgRmFpbHVyZSA9ICdGQUlMVVJFJyxcbiAgQ2FuY2VsbGVkID0gJ0NBTkNFTExFRCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZWQge1xuICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5QcmVwYXJlZDtcbiAgbWV0YTogUXVlcnlTdGF0ZU1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VjY2VzczxSZXNwb25zZSA9IHVua25vd24+IHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuU3VjY2VzcztcbiAgcmVzcG9uc2U6IFJlc3BvbnNlO1xuICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycztcbiAgbWV0YTogUXVlcnlTdGF0ZVN1Y2Nlc3NNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhaWx1cmUge1xuICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5GYWlsdXJlO1xuICBlcnJvcjogUmVxdWVzdEVycm9yO1xuICBtZXRhOiBRdWVyeVN0YXRlTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2FkaW5nIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuTG9hZGluZztcbiAgbWV0YTogUXVlcnlTdGF0ZU1ldGE7XG4gIHBhcnRpYWxUZXh0Pzogc3RyaW5nO1xuICBwcm9ncmVzcz86IFJlcXVlc3RQcm9ncmVzcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsZWQge1xuICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQ7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U3RhdGVNZXRhIHtcbiAgaWQ6IG51bWJlcjtcbiAgdHJpZ2dlcmVkVmlhOiBRdWVyeVRyaWdnZXI7XG4gIGlzV2FpdGluZ0ZvclJldHJ5PzogYm9vbGVhbjtcbiAgcmV0cnlOdW1iZXI/OiBudW1iZXI7XG4gIHJldHJ5RGVsYXk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlTdGF0ZVN1Y2Nlc3NNZXRhIGV4dGVuZHMgUXVlcnlTdGF0ZU1ldGEge1xuICBleHBpcmVzQXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5U3RhdGU8UmVzcG9uc2UgPSB1bmtub3duPiA9IExvYWRpbmcgfCBTdWNjZXNzPFJlc3BvbnNlPiB8IEZhaWx1cmUgfCBDYW5jZWxsZWQgfCBQcmVwYXJlZDtcblxuZXhwb3J0IHR5cGUgUXVlcnlTdGF0ZVJlc3BvbnNlT2Y8VCBleHRlbmRzIFF1ZXJ5U3RhdGUgPSBRdWVyeVN0YXRlPiA9XG4gIFQgZXh0ZW5kcyBTdWNjZXNzPGluZmVyIFJlc3BvbnNlPiA/IFJlc3BvbnNlIDogbmV2ZXI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBBbnlRdWVyeSA9IFF1ZXJ5PGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuXG5leHBvcnQgdHlwZSBBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uID0geyBbbmFtZTogc3RyaW5nXTogQW55UXVlcnlDcmVhdG9yIH07XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5Q29sbGVjdGlvbk9mPFQgZXh0ZW5kcyB7IFtuYW1lOiBzdHJpbmddOiBBbnlRdWVyeUNyZWF0b3IgfT4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiB7IHR5cGU6IEs7IHF1ZXJ5OiBDb25zdHJ1Y3RRdWVyeTxUW0tdPiB9O1xufVtrZXlvZiBUXTtcblxuZXhwb3J0IHR5cGUgQW55UXVlcnlDb2xsZWN0aW9uID0gUXVlcnlDb2xsZWN0aW9uT2Y8QW55UXVlcnlDcmVhdG9yQ29sbGVjdGlvbj47XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T2Y8VCBleHRlbmRzIEFueVF1ZXJ5Q29sbGVjdGlvbiB8IEFueVF1ZXJ5IHwgbnVsbD4gPSBUIGV4dGVuZHMgQW55UXVlcnlcbiAgPyBUXG4gIDogVCBleHRlbmRzIEFueVF1ZXJ5Q29sbGVjdGlvblxuICAgID8gVFsncXVlcnknXVxuICAgIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEFueVF1ZXJ5Q29sbGVjdGlvblJlc3BvbnNlPFQgZXh0ZW5kcyBBbnlRdWVyeUNvbGxlY3Rpb24+ID0gUXVlcnlSZXNwb25zZU9mPFRbJ3F1ZXJ5J10+O1xuZXhwb3J0IHR5cGUgQW55UXVlcnlDb2xsZWN0aW9uRGF0YTxUIGV4dGVuZHMgQW55UXVlcnlDb2xsZWN0aW9uPiA9IFF1ZXJ5RGF0YU9mPFRbJ3F1ZXJ5J10+O1xuXG5leHBvcnQgdHlwZSBRdWVyeUNvbGxlY3Rpb25LZXlzT2Y8VCBleHRlbmRzIEFueVF1ZXJ5Q29sbGVjdGlvbiB8IEFueVF1ZXJ5IHwgbnVsbD4gPSBUIGV4dGVuZHMgQW55UXVlcnlDb2xsZWN0aW9uXG4gID8gVFsndHlwZSddXG4gIDogbmV2ZXI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgaW50ZXJmYWNlIFJlc2V0UGFnZU9uRXJyb3JPcGVyYXRvckNvbmZpZzxKIGV4dGVuZHMgUXVlcnlGb3JtPGFueT4+IHtcbiAgLyoqXG4gICAqIFRoZSBxdWVyeSBmb3JtIHRvIHJlc2V0IHRoZSBwYWdlIG9mLlxuICAgKi9cbiAgcXVlcnlGb3JtOiBKO1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IG9mIHRoZSBwYWdlIGNvbnRyb2wgaW4gdGhlIHF1ZXJ5IGZvcm0uXG4gICAqIEBkZWZhdWx0ICdwYWdlJ1xuICAgKi9cbiAgcGFnZUNvbnRyb2xLZXk/OiBzdHJpbmc7XG59XG4iXX0=