@esolve/ng-esolve-connect 0.11.0 → 0.13.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 (92) hide show
  1. package/esm2020/lib/account/esolve-account.service.mjs +26 -4
  2. package/esm2020/lib/account/esolve-forgot-password-response.mjs +1 -1
  3. package/esm2020/lib/account/esolve-location-update-result.mjs +8 -0
  4. package/esm2020/lib/account/esolve-registration-post-response-item.mjs +1 -1
  5. package/esm2020/lib/account/esolve-registration-result.mjs +2 -1
  6. package/esm2020/lib/auth/esolve-auth-response.mjs +4 -0
  7. package/esm2020/lib/auth/esolve-auth.service.mjs +22 -9
  8. package/esm2020/lib/auth/esolve-login-post-response-item.mjs +2 -0
  9. package/esm2020/lib/manufacturers/esolve-manufacturer-options.mjs +2 -0
  10. package/esm2020/lib/manufacturers/esolve-manufacturer-record.mjs +2 -0
  11. package/esm2020/lib/manufacturers/esolve-manufacturer.mjs +38 -0
  12. package/esm2020/lib/manufacturers/esolve-manufacturers.service.mjs +73 -0
  13. package/esm2020/lib/ranges/esolve-range-options.mjs +2 -0
  14. package/esm2020/lib/ranges/esolve-range-record.mjs +2 -0
  15. package/esm2020/lib/ranges/esolve-range.mjs +33 -0
  16. package/esm2020/lib/ranges/esolve-ranges.service.mjs +76 -0
  17. package/esm2020/lib/session/esolve-session-data.mjs +2 -0
  18. package/esm2020/lib/session/esolve-session.mjs +6 -2
  19. package/esm2020/lib/session/esolve-session.service.mjs +22 -18
  20. package/esm2020/lib/session/esolve-stored-session.mjs +1 -1
  21. package/esm2020/lib/shared/assets/esolve-asset-type.mjs +2 -0
  22. package/esm2020/lib/shared/assets/esolve-linked-asset-record.mjs +2 -0
  23. package/esm2020/lib/shared/assets/esolve-linked-asset.mjs +10 -0
  24. package/esm2020/lib/shared/assets/index.mjs +4 -0
  25. package/esm2020/lib/shared/geocoder/esolve-geocode-address-record.mjs +2 -0
  26. package/esm2020/lib/shared/geocoder/esolve-geocode-address-result.mjs +12 -0
  27. package/esm2020/lib/shared/geocoder/esolve-geocode-coords-result.mjs +7 -0
  28. package/esm2020/lib/shared/geocoder/esolve-geocode-result-record.mjs +2 -0
  29. package/esm2020/lib/shared/geocoder/esolve-geocode-result.mjs +11 -0
  30. package/esm2020/lib/shared/geocoder/esolve-geocoder.service.mjs +69 -0
  31. package/esm2020/lib/specials/esolve-special-image-collection-record.mjs +2 -0
  32. package/esm2020/lib/specials/esolve-special-image-collection.mjs +25 -0
  33. package/esm2020/lib/specials/esolve-special-image-record.mjs +2 -0
  34. package/esm2020/lib/specials/esolve-special-image.mjs +9 -0
  35. package/esm2020/lib/specials/esolve-special-options.mjs +2 -0
  36. package/esm2020/lib/specials/esolve-special-record.mjs +2 -0
  37. package/esm2020/lib/specials/esolve-special.mjs +38 -0
  38. package/esm2020/lib/specials/esolve-specials.service.mjs +82 -0
  39. package/esm2020/lib/specials/index.mjs +9 -0
  40. package/esm2020/lib/stock/esolve-stock-item-options.mjs +1 -1
  41. package/esm2020/lib/stock/esolve-stock-item.mjs +4 -2
  42. package/esm2020/lib/stock/esolve-stock-record.mjs +1 -1
  43. package/esm2020/lib/stock/esolve-stock.service.mjs +11 -2
  44. package/esm2020/public-api.mjs +18 -1
  45. package/fesm2015/esolve-ng-esolve-connect.mjs +547 -33
  46. package/fesm2015/esolve-ng-esolve-connect.mjs.map +1 -1
  47. package/fesm2020/esolve-ng-esolve-connect.mjs +539 -33
  48. package/fesm2020/esolve-ng-esolve-connect.mjs.map +1 -1
  49. package/lib/account/esolve-account.service.d.ts +2 -0
  50. package/lib/account/esolve-forgot-password-response.d.ts +2 -0
  51. package/lib/account/esolve-location-update-result.d.ts +6 -0
  52. package/lib/account/esolve-registration-post-response-item.d.ts +2 -0
  53. package/lib/account/esolve-registration-result.d.ts +1 -0
  54. package/lib/auth/esolve-auth-response.d.ts +25 -0
  55. package/lib/auth/esolve-auth.service.d.ts +3 -15
  56. package/lib/auth/esolve-login-post-response-item.d.ts +6 -0
  57. package/lib/manufacturers/esolve-manufacturer-options.d.ts +3 -0
  58. package/lib/manufacturers/esolve-manufacturer-record.d.ts +16 -0
  59. package/lib/manufacturers/esolve-manufacturer.d.ts +19 -0
  60. package/lib/manufacturers/esolve-manufacturers.service.d.ts +19 -0
  61. package/lib/ranges/esolve-range-options.d.ts +4 -0
  62. package/lib/ranges/esolve-range-record.d.ts +17 -0
  63. package/lib/ranges/esolve-range.d.ts +18 -0
  64. package/lib/ranges/esolve-ranges.service.d.ts +19 -0
  65. package/lib/session/esolve-session-data.d.ts +3 -0
  66. package/lib/session/esolve-session.d.ts +5 -2
  67. package/lib/session/esolve-session.service.d.ts +9 -4
  68. package/lib/session/esolve-stored-session.d.ts +2 -1
  69. package/lib/shared/assets/esolve-asset-type.d.ts +1 -0
  70. package/lib/shared/assets/esolve-linked-asset-record.d.ts +8 -0
  71. package/lib/shared/assets/esolve-linked-asset.d.ts +10 -0
  72. package/lib/shared/assets/index.d.ts +3 -0
  73. package/lib/shared/geocoder/esolve-geocode-address-record.d.ts +9 -0
  74. package/lib/shared/geocoder/esolve-geocode-address-result.d.ts +10 -0
  75. package/lib/shared/geocoder/esolve-geocode-coords-result.d.ts +5 -0
  76. package/lib/shared/geocoder/esolve-geocode-result-record.d.ts +10 -0
  77. package/lib/shared/geocoder/esolve-geocode-result.d.ts +11 -0
  78. package/lib/shared/geocoder/esolve-geocoder.service.d.ts +15 -0
  79. package/lib/specials/esolve-special-image-collection-record.d.ts +6 -0
  80. package/lib/specials/esolve-special-image-collection.d.ts +9 -0
  81. package/lib/specials/esolve-special-image-record.d.ts +6 -0
  82. package/lib/specials/esolve-special-image.d.ts +8 -0
  83. package/lib/specials/esolve-special-options.d.ts +6 -0
  84. package/lib/specials/esolve-special-record.d.ts +24 -0
  85. package/lib/specials/esolve-special.d.ts +20 -0
  86. package/lib/specials/esolve-specials.service.d.ts +19 -0
  87. package/lib/specials/index.d.ts +8 -0
  88. package/lib/stock/esolve-stock-item-options.d.ts +3 -0
  89. package/lib/stock/esolve-stock-item.d.ts +3 -1
  90. package/lib/stock/esolve-stock-record.d.ts +2 -0
  91. package/package.json +1 -1
  92. package/public-api.d.ts +12 -0
@@ -9,9 +9,10 @@ import { EsolveRegistrationResult } from './esolve-registration-result';
9
9
  import { EsolveUserAccountResult } from './esolve-user-account-result';
10
10
  import { EsolveChangePasswordResult } from './esolve-change-password-result';
11
11
  import { EsolveResetPasswordResult } from './esolve-reset-password-result';
12
+ import { EsolveLocationUpdateResult } from './esolve-location-update-result';
12
13
  import { EsolveTransaction } from './esolve-transaction';
13
14
  import { EsolveTransactionList } from './esolve-transaction-list';
14
- import { EsolveUserAccount, EsolveUserAccountBusiness, EsolveUserAccountContact } from './esolve-user-account';
15
+ import { EsolveUserAccount, EsolveUserAccountBusiness, EsolveUserAccountContact, } from './esolve-user-account';
15
16
  import * as i0 from "@angular/core";
16
17
  import * as i1 from "@angular/common/http";
17
18
  import * as i2 from "../session/esolve-session.service";
@@ -134,7 +135,10 @@ export class EsolveAccountService {
134
135
  })
135
136
  .pipe(map((http_response) => this.responseHandler.validateSingleHttpResponse(http_response, (response) => {
136
137
  if (response.auto_login) {
137
- this.sessionService.handleUpdateSession(response.esolve_id);
138
+ this.sessionService.handleUpdateSession({
139
+ user_id: +response.esolve_id,
140
+ location_id: +response.session_data.location_id,
141
+ });
138
142
  }
139
143
  return new EsolveRegistrationResult(response);
140
144
  })), catchError((errorRes) => {
@@ -187,13 +191,31 @@ export class EsolveAccountService {
187
191
  })
188
192
  .pipe(map((http_response) => this.responseHandler.validateSingleHttpResponse(http_response, (response) => {
189
193
  if (!response.login_required) {
190
- this.sessionService.handleUpdateSession(response.esolve_id);
194
+ this.sessionService.handleUpdateSession({
195
+ user_id: +response.esolve_id,
196
+ location_id: +response.session_data.location_id,
197
+ });
191
198
  }
192
199
  return new EsolveResetPasswordResult(response);
193
200
  })), catchError((errorRes) => {
194
201
  return this.errorHandler.handleHttpPostError('set-forgot-password', errorRes);
195
202
  }));
196
203
  }
204
+ updateLocation(location_id) {
205
+ const body = { location_id };
206
+ return this.http
207
+ .post(`${this.config.api_url}/set-session-location.php`, body, {
208
+ headers: {
209
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
210
+ },
211
+ responseType: 'json',
212
+ observe: 'body',
213
+ })
214
+ .pipe(map((http_response) => this.responseHandler.validateSingleHttpResponse(http_response, (response) => {
215
+ this.sessionService.handleUpdateSession({ location_id });
216
+ return new EsolveLocationUpdateResult(response);
217
+ })));
218
+ }
197
219
  getTransactions(options = {}) {
198
220
  try {
199
221
  this.loginGuard();
@@ -294,4 +316,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
294
316
  type: Inject,
295
317
  args: [ESOLVE_CONNECT_CONFIG]
296
318
  }] }, { type: i1.HttpClient }, { type: i2.EsolveSessionService }, { type: i3.EsolveErrorHandlerService }, { type: i4.EsolveResponseHandlerService }]; } });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtYWNjb3VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBVXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUd4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBUy9HLE1BQU0sT0FBTyxvQkFBb0I7SUFlN0IsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0IsRUFDaEIsY0FBb0MsRUFDcEMsWUFBdUMsRUFDdkMsZUFBNkM7UUFKZCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDdkMsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBbkJqRCxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBcUJqQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM5QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDN0I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUF4QkQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLE9BQU8sQ0FBQyxLQUFhO1FBQzVCLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBZ0JNLGlCQUFpQixDQUFDLGlCQUF3QztRQUM3RCxNQUFNLElBQUksR0FBRztZQUNULE9BQU8sRUFBRSxpQkFBaUI7U0FDN0IsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQ0QsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sdUJBQXVCLEVBQzdDLElBQUksRUFDSjtZQUNJLE9BQU8sRUFBRTtnQkFDTCxjQUFjLEVBQUUsa0RBQWtEO2FBQ3JFO1lBQ0QsWUFBWSxFQUFFLE1BQU07WUFDcEIsT0FBTyxFQUFFLE1BQU07U0FDbEIsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQ2xFLGFBQWEsRUFDYixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FDdEQsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLFFBQWlDLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFTSxjQUFjO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxHQUFHLENBQ0EsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sa0JBQWtCLENBQzNDO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFDSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO2dCQUNoQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUNqQztnQkFDRSxNQUFNLFFBQVEsQ0FBQzthQUNsQjtZQUVELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFbkMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFTSxVQUFVLENBQUMsaUJBQXdDO1FBQ3RELE1BQU0sSUFBSSxHQUFHO1lBQ1QsT0FBTyxFQUFFLGlCQUFpQjtTQUM3QixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLElBQUksQ0FDRCxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxrQkFBa0IsRUFDeEMsSUFBSSxFQUNKO1lBQ0ksT0FBTyxFQUFFO2dCQUNMLGNBQWMsRUFBRSxrREFBa0Q7YUFDckU7WUFDRCxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsTUFBTTtTQUNsQixDQUNKO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQzNDLGFBQWEsRUFDYixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FDbEQsQ0FDSixFQUNELFVBQVUsQ0FBQyxDQUFDLFFBQWlDLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSTtZQUNBLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUVsQixPQUFPLElBQUksQ0FBQyxJQUFJO2lCQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxvQkFBb0IsRUFDMUM7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7YUFDcEMsQ0FDSjtpQkFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtvQkFDaEMsTUFBTSxRQUFRLENBQUM7aUJBQ2xCO2dCQUVELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ1Q7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNaLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxFQUFVO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxNQUFNLENBQ0gsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8scUJBQXFCLEVBQzNDO1lBQ0ksTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ2QsWUFBWSxFQUFFLE1BQU07WUFDcEIsT0FBTyxFQUFFLE1BQU07U0FDbEIsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNsQixJQUNJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUM7Z0JBQ3BDLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7Z0JBQy9CLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLEVBQzdDO2dCQUNFLE1BQU0sYUFBYSxDQUFDO2FBQ3ZCO1lBRUQsT0FBTyxJQUFJLFlBQVksQ0FDbkIsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQzNCLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUN6QixhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDL0IsQ0FBQztRQUNOLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLFFBQWlDLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFTSxRQUFRLENBQUMsaUJBQXlDO1FBQ3JELE1BQU0sSUFBSSxHQUFHO1lBQ1QsSUFBSSxFQUFFLGlCQUFpQjtTQUMxQixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLElBQUksQ0FDRCxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx1QkFBdUIsRUFDN0MsSUFBSSxFQUNKO1lBQ0ksT0FBTyxFQUFFO2dCQUNMLGNBQWMsRUFBRSxrREFBa0Q7YUFDckU7WUFDRCxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsTUFBTTtTQUNsQixDQUNKO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FDbEUsYUFBYSxFQUNiLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDVCxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9EO1lBRUQsT0FBTyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FDSixDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVNLGNBQWMsQ0FBQyxRQUFnQixFQUFFLGdCQUF3QjtRQUM1RCxNQUFNLElBQUksR0FBRztZQUNULFFBQVE7WUFDUixnQkFBZ0I7U0FDbkIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQ0QsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sMEJBQTBCLEVBQ2hELElBQUksRUFDSjtZQUNJLE9BQU8sRUFBRTtnQkFDTCxjQUFjLEVBQUUsa0RBQWtEO2FBQ3JFO1lBQ0QsWUFBWSxFQUFFLE1BQU07WUFDcEIsT0FBTyxFQUFFLE1BQU07U0FDbEIsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQ2xFLGFBQWEsRUFDYixDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1QsT0FBTyxJQUFJLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FDSixDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVNLHlCQUF5QixDQUFDLEtBQWE7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTywwQkFBMEIsRUFDaEQsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUN4QjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNiLElBQ0ksQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLGlCQUFpQixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDMUM7Z0JBQ0UsTUFBTSxRQUFRLENBQUM7YUFDbEI7WUFFRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBRU0sYUFBYSxDQUNoQixTQUFpQixFQUNqQixRQUFnQixFQUNoQixnQkFBd0IsRUFDeEIsVUFBVSxHQUFHLElBQUk7UUFFakIsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLElBQUksQ0FDRCxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTywwQkFBMEIsRUFDaEQ7WUFDSSxTQUFTO1lBQ1QsUUFBUTtZQUNSLGdCQUFnQjtZQUNoQixVQUFVO1NBQ2IsRUFDRDtZQUNJLE9BQU8sRUFBRTtnQkFDTCxjQUFjLEVBQUUsa0RBQWtEO2FBQ3JFO1lBQ0QsWUFBWSxFQUFFLE1BQU07WUFDcEIsT0FBTyxFQUFFLE1BQU07U0FDbEIsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQ2xFLGFBQWEsRUFDYixDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9EO1lBRUQsT0FBTyxJQUFJLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FDSixDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVNLGVBQWUsQ0FBQyxVQUFvQyxFQUFFO1FBQ3pELElBQUk7WUFDQSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFbEIsT0FBTyxJQUFJLENBQUMsSUFBSTtpQkFDWCxHQUFHLENBQ0EsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sdUJBQXVCLEVBQzdDO2dCQUNJLE1BQU0sRUFBRTtvQkFDSixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3JCLEdBQUcsT0FBTztpQkFDYjthQUNKLENBQ0o7aUJBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNiLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7b0JBQ2hDLE1BQU0sUUFBUSxDQUFDO2lCQUNsQjtnQkFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN6RCxNQUFNLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQztnQkFDM0QsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUUvQixPQUFPLElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQ0wsQ0FBQztTQUNUO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFTSxjQUFjLENBQUMsRUFBVTtRQUM1QixJQUFJO1lBQ0EsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRWxCLE9BQU8sSUFBSSxDQUFDLElBQUk7aUJBQ1gsR0FBRyxDQUNBLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLHVCQUF1QixFQUM3QztnQkFDSSxNQUFNLEVBQUU7b0JBQ0osT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixjQUFjLEVBQUUsRUFBRTtpQkFDckI7YUFDSixDQUNKO2lCQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDYixJQUNJLENBQUMsUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7b0JBQ2hDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQ2hDO29CQUNFLE1BQU0sUUFBUSxDQUFDO2lCQUNsQjtnQkFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUV6RCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ1Q7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNaLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE1BQStCO1FBQ3RELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNyRDtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksaUJBQWlCLENBQ3RDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDZCxNQUFNLENBQUMsS0FBSyxFQUNaLE1BQU0sQ0FBQyxpQkFBaUIsRUFDeEIsTUFBTSxDQUFDLEtBQUssRUFDWixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsT0FBTyxFQUNkLE1BQU0sQ0FBQyxRQUFRLEVBQ2YsTUFBTSxDQUFDLE1BQU0sRUFDYixNQUFNLENBQUMsUUFBUSxDQUNsQixDQUFDO1FBRUYsWUFBWSxDQUFDLGVBQWUsR0FBRyxJQUFJLHdCQUF3QixDQUN2RCxNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsVUFBVSxFQUNqQixNQUFNLENBQUMsR0FBRyxDQUNiLENBQUM7UUFFRixZQUFZLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSx5QkFBeUIsQ0FDekQsTUFBTSxDQUFDLE9BQU8sRUFDZCxNQUFNLENBQUMsTUFBTSxFQUNiLE1BQU0sQ0FBQyxXQUFXLEVBQ2xCLE1BQU0sQ0FBQyxhQUFhLENBQ3ZCLENBQUM7UUFFRixPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBOEI7UUFDckQsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUUzQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNuQyxPQUFPLGNBQWMsQ0FBQztTQUN6QjtRQUVELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xDLFNBQVM7YUFDWjtZQUVELGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQ2pDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFDVixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsWUFBWSxFQUNuQixNQUFNLENBQUMsS0FBSyxFQUNaLE1BQU0sQ0FBQyxVQUFVLEVBQ2pCLE1BQU0sQ0FBQyxhQUFhLEVBQ3BCLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLE1BQU0sRUFDYixNQUFNLENBQUMsSUFBSSxFQUNYLE1BQU0sQ0FBQyxRQUFRLEVBQ2YsTUFBTSxDQUFDLE9BQU8sRUFDZCxNQUFNLENBQUMsV0FBVyxFQUNsQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQ2hCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDcEIsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBa0M7UUFDMUQsTUFBTSxZQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUU3QyxJQUFJLE9BQU8sRUFBRTtZQUNULEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUVsRCxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2xDO1NBQ0o7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztTQUN0RTtJQUNMLENBQUM7O2lIQTViUSxvQkFBb0Isa0JBZ0JqQixxQkFBcUI7cUhBaEJ4QixvQkFBb0IsY0FGakIsTUFBTTsyRkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFpQlEsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZUNvbm5lY3RDb25maWcsIEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlc3VsdCB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzdWx0JztcclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZURlbGV0ZVJlc3BvbnNlLFxyXG4gICAgRXNvbHZlR2V0UmVzcG9uc2UsXHJcbiAgICBFc29sdmVTZXRSZXNwb25zZVxyXG59IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vycm9yLWhhbmRsZXIvZXNvbHZlLWVycm9yLWhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UtaGFuZGxlci9lc29sdmUtcmVzcG9uc2UtaGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZWdpc3RyYXRpb25Qb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi9lc29sdmUtcmVnaXN0cmF0aW9uLXBvc3QtcmVzcG9uc2UtaXRlbSc7XHJcbmltcG9ydCB7IEVzb2x2ZUFkZHJlc3MgfSBmcm9tICcuL2Vzb2x2ZS1hZGRyZXNzJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzc1JlY29yZCB9IGZyb20gJy4vZXNvbHZlLWFkZHJlc3MtcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzc1Jlc3VsdCB9IGZyb20gJy4vZXNvbHZlLWFkZHJlc3MtcmVzdWx0JztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzc1Bvc3REYXRhIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1zZXQtZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZUFkZHJlc3NSZXNwb25zZSB9IGZyb20gJy4vZXNvbHZlLWFkZHJlc3MtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZWdpc3RyYXRpb25EYXRhIH0gZnJvbSAnLi9lc29sdmUtcmVnaXN0cmF0aW9uLWRhdGEnO1xyXG5pbXBvcnQgeyBFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQgfSBmcm9tICcuL2Vzb2x2ZS1yZWdpc3RyYXRpb24tcmVzdWx0JztcclxuaW1wb3J0IHsgRXNvbHZlVXNlckFjY291bnRSZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS11c2VyLWFjY291bnQtcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlVXNlckFjY291bnREYXRhIH0gZnJvbSAnLi9lc29sdmUtdXNlci1hY2NvdW50LWRhdGEnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudFJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXVzZXItYWNjb3VudC1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVDaGFuZ2VQYXNzd29yZFJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLWNoYW5nZS1wYXNzd29yZC1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVGb3Jnb3RQYXNzd29yZFJlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtZm9yZ290LXBhc3N3b3JkLXJlc3BvbnNlJztcclxuaW1wb3J0IHsgRXNvbHZlUmVzZXRQYXNzd29yZFJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXJlc2V0LXBhc3N3b3JkLXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZVRyYW5zYWN0aW9uUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtdHJhbnNhY3Rpb24tcmVjb3JkJztcclxuaW1wb3J0IHsgRXNvbHZlVHJhbnNhY3Rpb24gfSBmcm9tICcuL2Vzb2x2ZS10cmFuc2FjdGlvbic7XHJcbmltcG9ydCB7IEVzb2x2ZVRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4vZXNvbHZlLXRyYW5zYWN0aW9uLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBFc29sdmVUcmFuc2FjdGlvbkxpc3QgfSBmcm9tICcuL2Vzb2x2ZS10cmFuc2FjdGlvbi1saXN0JztcclxuaW1wb3J0IHsgRXNvbHZlVXNlckFjY291bnQsIEVzb2x2ZVVzZXJBY2NvdW50QnVzaW5lc3MsIEVzb2x2ZVVzZXJBY2NvdW50Q29udGFjdCB9IGZyb20gJy4vZXNvbHZlLXVzZXItYWNjb3VudCc7XHJcblxyXG5pbnRlcmZhY2UgRXNvbHZlRm9yZ290UGFzc3dvcmRHZXRSZXN1bHQge1xyXG4gICAgcmVzZXRfbGlua19zZW50OiBib29sZWFuO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZUFjY291bnRTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX3VzZXJfaWQgPSAwO1xyXG5cclxuICAgIHB1YmxpYyBnZXQgdXNlcl9pZCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyX2lkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgdXNlcl9pZCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdmFsdWUgPSAoKHZhbHVlID4gMCkgPyB2YWx1ZSA6IDApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fdXNlcl9pZCAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXNlcl9pZCA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IEVzb2x2ZVNlc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVzcG9uc2VIYW5kbGVyOiBFc29sdmVSZXNwb25zZUhhbmRsZXJTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlc3Npb24uc3Vic2NyaWJlKChzZXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXNzaW9uLmtleSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlcl9pZCA9IHNlc3Npb24uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlVXNlckFjY291bnQodXNlcl9hY2NvdW50X2RhdGE6IEVzb2x2ZVVzZXJBY2NvdW50RGF0YSk6IE9ic2VydmFibGU8RXNvbHZlVXNlckFjY291bnRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBhY2NvdW50OiB1c2VyX2FjY291bnRfZGF0YVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LXVzZXItYWNjb3VudC5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlVXNlckFjY291bnRSZXN1bHQocmVzcG9uc2UpXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtdXNlci1hY2NvdW50JywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0VXNlckFjY291bnQoKTogT2JzZXJ2YWJsZTxFc29sdmVVc2VyQWNjb3VudD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVVc2VyQWNjb3VudFJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWNjb3VudC5waHBgXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkID0gcmVzcG9uc2UucmVjb3Jkc1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBY2NvdW50KHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRBZGRyZXNzKGFkZHJlc3NfcG9zdF9kYXRhOiBFc29sdmVBZGRyZXNzUG9zdERhdGEpOiBPYnNlcnZhYmxlPEVzb2x2ZUFkZHJlc3NSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzX3Bvc3RfZGF0YVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlQWRkcmVzc1Jlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtYWRkcmVzcy5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlQWRkcmVzc1Jlc3VsdChyZXNwb25zZSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1yZWdpc3RyYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBZGRyZXNzZXMoKTogT2JzZXJ2YWJsZTxFc29sdmVBZGRyZXNzW10+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luR3VhcmQoKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQWRkcmVzc1JlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFkZHJlc3Nlcy5waHBgLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IHVzZXJfaWQ6IHRoaXMudXNlcl9pZCB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBZGRyZXNzKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZUFkZHJlc3MoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RXNvbHZlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZGVsZXRlPEVzb2x2ZURlbGV0ZVJlc3BvbnNlPihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2RlbGV0ZS1hZGRyZXNzLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IG51bGwpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMgIT09ICdzdWNjZXNzJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgaHR0cF9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVzdWx0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0LmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0Lm1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cERlbGV0ZUVycm9yKCdkZWxldGUtYWRkcmVzcycsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyKHVzZXJfcmVnaXN0cmF0aW9uOiBFc29sdmVSZWdpc3RyYXRpb25EYXRhKTogT2JzZXJ2YWJsZTxFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICB1c2VyOiB1c2VyX3JlZ2lzdHJhdGlvblxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlUmVnaXN0cmF0aW9uUG9zdFJlc3BvbnNlSXRlbT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LXJlZ2lzdHJhdGlvbi5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5hdXRvX2xvZ2luKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmhhbmRsZVVwZGF0ZVNlc3Npb24ocmVzcG9uc2UuZXNvbHZlX2lkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1yZWdpc3RyYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VQYXNzd29yZChwYXNzd29yZDogc3RyaW5nLCBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgIGNvbmZpcm1fcGFzc3dvcmRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1jaGFuZ2UtcGFzc3dvcmQucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtY2hhbmdlLXBhc3N3b3JkJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2VuZEZvcmdvdFBhc3N3b3JkUmVxdWVzdChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUZvcmdvdFBhc3N3b3JkR2V0UmVzdWx0Pj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtZm9yZ290LXBhc3N3b3JkLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyBlbWFpbCB9IH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICEoJ3Jlc2V0X2xpbmtfc2VudCcgaW4gcmVzcG9uc2UucmVjb3JkcylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVjb3Jkcy5yZXNldF9saW5rX3NlbnQ7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXNldFBhc3N3b3JkKFxyXG4gICAgICAgIHJlc2V0X2tleTogc3RyaW5nLFxyXG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmcsXHJcbiAgICAgICAgY29uZmlybV9wYXNzd29yZDogc3RyaW5nLFxyXG4gICAgICAgIGF1dG9fbG9naW4gPSB0cnVlXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVJlc2V0UGFzc3dvcmRSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2U+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1mb3Jnb3QtcGFzc3dvcmQucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNldF9rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZCxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvX2xvZ2luXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5sb2dpbl9yZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5oYW5kbGVVcGRhdGVTZXNzaW9uKHJlc3BvbnNlLmVzb2x2ZV9pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVzZXRQYXNzd29yZFJlc3VsdChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWZvcmdvdC1wYXNzd29yZCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRyYW5zYWN0aW9ucyhvcHRpb25zOiBFc29sdmVUcmFuc2FjdGlvbk9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8RXNvbHZlVHJhbnNhY3Rpb25MaXN0PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbkd1YXJkKCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVRyYW5zYWN0aW9uUmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtdHJhbnNhY3Rpb25zLnBocGAsXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IHRoaXMudXNlcl9pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMucHJvY2Vzc1RyYW5zYWN0aW9ucyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMgPz8gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93cyA9IG9wdGlvbnMucm93cyA/PyB0b3RhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnMucGFnZSB8fCAxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVUcmFuc2FjdGlvbkxpc3QoaXRlbXMsIHBhZ2UsIHJvd3MsIHRvdGFsKTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUcmFuc2FjdGlvbihpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVUcmFuc2FjdGlvbj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5HdWFyZCgpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVUcmFuc2FjdGlvblJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXRyYW5zYWN0aW9ucy5waHBgLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbl9pZDogaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLnByb2Nlc3NUcmFuc2FjdGlvbnMocmVzcG9uc2UucmVjb3Jkcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NVc2VyQWNjb3VudChyZWNvcmQ6IEVzb2x2ZVVzZXJBY2NvdW50UmVjb3JkKTogRXNvbHZlVXNlckFjY291bnQge1xyXG4gICAgICAgIGlmICghcmVjb3JkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZWNvcmQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgrcmVjb3JkLnVzZXJpZCAhPT0gdGhpcy5fdXNlcl9pZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNlciBhY2NvdW50IHJldHJpZXZlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXNlcl9hY2NvdW50ID0gbmV3IEVzb2x2ZVVzZXJBY2NvdW50KFxyXG4gICAgICAgICAgICArcmVjb3JkLnVzZXJpZCxcclxuICAgICAgICAgICAgcmVjb3JkLmVtYWlsLFxyXG4gICAgICAgICAgICByZWNvcmQucmVnaXN0cmF0aW9uX3R5cGUsXHJcbiAgICAgICAgICAgIHJlY29yZC50aXRsZSxcclxuICAgICAgICAgICAgcmVjb3JkLmZpcnN0bmFtZSxcclxuICAgICAgICAgICAgcmVjb3JkLnN1cm5hbWUsXHJcbiAgICAgICAgICAgIHJlY29yZC5pbml0aWFscyxcclxuICAgICAgICAgICAgcmVjb3JkLmdlbmRlcixcclxuICAgICAgICAgICAgcmVjb3JkLmlkbnVtYmVyXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdXNlcl9hY2NvdW50LmNvbnRhY3RfZGV0YWlscyA9IG5ldyBFc29sdmVVc2VyQWNjb3VudENvbnRhY3QoXHJcbiAgICAgICAgICAgIHJlY29yZC50ZWxudW1iZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC5jZWxsbnVtYmVyLFxyXG4gICAgICAgICAgICByZWNvcmQuZmF4XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdXNlcl9hY2NvdW50LmJ1c2luZXNzX2RldGFpbHMgPSBuZXcgRXNvbHZlVXNlckFjY291bnRCdXNpbmVzcyhcclxuICAgICAgICAgICAgcmVjb3JkLmJ1c25hbWUsXHJcbiAgICAgICAgICAgIHJlY29yZC52YXRudW0sXHJcbiAgICAgICAgICAgIHJlY29yZC5idXNkZXNjcmlwdCxcclxuICAgICAgICAgICAgcmVjb3JkLmJ1c2luZXNzX3R5cGVcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4gdXNlcl9hY2NvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc1VzZXJBZGRyZXNzKHJlY29yZHM6IEVzb2x2ZUFkZHJlc3NSZWNvcmRbXSk6IEVzb2x2ZUFkZHJlc3NbXSB7XHJcbiAgICAgICAgY29uc3QgdXNlcl9hZGRyZXNzZXM6IEVzb2x2ZUFkZHJlc3NbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoIXJlY29yZHMgfHwgKHRoaXMuX3VzZXJfaWQgPT09IDApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1c2VyX2FkZHJlc3NlcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgaWYgKCtyZWNvcmQudXNlcmlkICE9PSB0aGlzLl91c2VyX2lkKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXNlcl9hZGRyZXNzZXMucHVzaChuZXcgRXNvbHZlQWRkcmVzcyhcclxuICAgICAgICAgICAgICAgICtyZWNvcmQuaWQsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucmVjaXBpZW50LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmFkZHJlc3NfdHlwZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wb2JveCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wbGFjZV9uYW1lLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnN0cmVldF9udW1iZXIsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc3RyZWV0LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnN1YnVyYixcclxuICAgICAgICAgICAgICAgIHJlY29yZC5jaXR5LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnByb3ZpbmNlLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNvdW50cnksXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucG9zdGFsX2NvZGUsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkLmxhdGl0dWRlLFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZC5sb25naXR1ZGVcclxuICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdXNlcl9hZGRyZXNzZXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVHJhbnNhY3Rpb25zKHJlY29yZHM6IEVzb2x2ZVRyYW5zYWN0aW9uUmVjb3JkW10pOiBFc29sdmVUcmFuc2FjdGlvbltdIHtcclxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbnM6IEVzb2x2ZVRyYW5zYWN0aW9uW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHJlY29yZHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgRXNvbHZlVHJhbnNhY3Rpb24ocmVjb3JkKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbnMucHVzaCh0cmFuc2FjdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cmFuc2FjdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsb2dpbkd1YXJkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnVzZXJfaWQgPD0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5lbWl0RXJyb3IoJ2xvZ2luX3JlcXVpcmVkJywgJ0xvZ2luIGlzIHJlcXVpcmVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtYWNjb3VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBVXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUd4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6Qix3QkFBd0IsR0FDM0IsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FB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QU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLElBQUksRUFDWCxNQUFNLENBQUMsUUFBUSxFQUNmLE1BQU0sQ0FBQyxPQUFPLEVBQ2QsTUFBTSxDQUFDLFdBQVcsRUFDbEIsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUNoQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ3BCLENBQUMsQ0FBQztTQUNOO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQWtDO1FBQzFELE1BQU0sWUFBWSxHQUF3QixFQUFFLENBQUM7UUFFN0MsSUFBSSxPQUFPLEVBQUU7WUFDVCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDMUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFbEQsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNsQztTQUNKO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLG1CQUFtQixDQUFDLENBQUM7U0FDdEU7SUFDTCxDQUFDOztpSEE3ZFEsb0JBQW9CLGtCQWdCakIscUJBQXFCO3FIQWhCeEIsb0JBQW9CLGNBRmpCLE1BQU07MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBaUJRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnLCBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3VsdCc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVEZWxldGVSZXNwb25zZSxcclxuICAgIEVzb2x2ZUdldFJlc3BvbnNlLFxyXG4gICAgRXNvbHZlU2V0UmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3ItaGFuZGxlci9lc29sdmUtZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZS1oYW5kbGVyL2Vzb2x2ZS1yZXNwb25zZS1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24vZXNvbHZlLXNlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvblBvc3RSZXNwb25zZUl0ZW0gfSBmcm9tICcuL2Vzb2x2ZS1yZWdpc3RyYXRpb24tcG9zdC1yZXNwb25zZS1pdGVtJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzcyB9IGZyb20gJy4vZXNvbHZlLWFkZHJlc3MnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUG9zdERhdGEgfSBmcm9tICcuL2Vzb2x2ZS1hZGRyZXNzLXNldC1kYXRhJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzc1Jlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvbkRhdGEgfSBmcm9tICcuL2Vzb2x2ZS1yZWdpc3RyYXRpb24tZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXJlZ2lzdHJhdGlvbi1yZXN1bHQnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudFJlY29yZCB9IGZyb20gJy4vZXNvbHZlLXVzZXItYWNjb3VudC1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVVc2VyQWNjb3VudERhdGEgfSBmcm9tICcuL2Vzb2x2ZS11c2VyLWFjY291bnQtZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVVzZXJBY2NvdW50UmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtdXNlci1hY2NvdW50LXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtY2hhbmdlLXBhc3N3b3JkLXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2UgfSBmcm9tICcuL2Vzb2x2ZS1mb3Jnb3QtcGFzc3dvcmQtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXNldFBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtcmVzZXQtcGFzc3dvcmQtcmVzdWx0JztcclxuaW1wb3J0IHsgRXNvbHZlTG9jYXRpb25VcGRhdGVSZXN1bHQgfSBmcm9tICcuL2Vzb2x2ZS1sb2NhdGlvbi11cGRhdGUtcmVzdWx0JztcclxuaW1wb3J0IHsgRXNvbHZlVHJhbnNhY3Rpb25SZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS10cmFuc2FjdGlvbi1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVUcmFuc2FjdGlvbiB9IGZyb20gJy4vZXNvbHZlLXRyYW5zYWN0aW9uJztcclxuaW1wb3J0IHsgRXNvbHZlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9lc29sdmUtdHJhbnNhY3Rpb24tb3B0aW9ucyc7XHJcbmltcG9ydCB7IEVzb2x2ZVRyYW5zYWN0aW9uTGlzdCB9IGZyb20gJy4vZXNvbHZlLXRyYW5zYWN0aW9uLWxpc3QnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlVXNlckFjY291bnQsXHJcbiAgICBFc29sdmVVc2VyQWNjb3VudEJ1c2luZXNzLFxyXG4gICAgRXNvbHZlVXNlckFjY291bnRDb250YWN0LFxyXG59IGZyb20gJy4vZXNvbHZlLXVzZXItYWNjb3VudCc7XHJcblxyXG5pbnRlcmZhY2UgRXNvbHZlRm9yZ290UGFzc3dvcmRHZXRSZXN1bHQge1xyXG4gICAgcmVzZXRfbGlua19zZW50OiBib29sZWFuO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZUFjY291bnRTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX3VzZXJfaWQgPSAwO1xyXG5cclxuICAgIHB1YmxpYyBnZXQgdXNlcl9pZCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyX2lkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgdXNlcl9pZCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdmFsdWUgPSAoKHZhbHVlID4gMCkgPyB2YWx1ZSA6IDApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fdXNlcl9pZCAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXNlcl9pZCA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IEVzb2x2ZVNlc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVzcG9uc2VIYW5kbGVyOiBFc29sdmVSZXNwb25zZUhhbmRsZXJTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlc3Npb24uc3Vic2NyaWJlKChzZXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXNzaW9uLmtleSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlcl9pZCA9IHNlc3Npb24uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlVXNlckFjY291bnQodXNlcl9hY2NvdW50X2RhdGE6IEVzb2x2ZVVzZXJBY2NvdW50RGF0YSk6IE9ic2VydmFibGU8RXNvbHZlVXNlckFjY291bnRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBhY2NvdW50OiB1c2VyX2FjY291bnRfZGF0YVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LXVzZXItYWNjb3VudC5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlVXNlckFjY291bnRSZXN1bHQocmVzcG9uc2UpXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtdXNlci1hY2NvdW50JywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0VXNlckFjY291bnQoKTogT2JzZXJ2YWJsZTxFc29sdmVVc2VyQWNjb3VudD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVVc2VyQWNjb3VudFJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWNjb3VudC5waHBgXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkID0gcmVzcG9uc2UucmVjb3Jkc1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBY2NvdW50KHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRBZGRyZXNzKGFkZHJlc3NfcG9zdF9kYXRhOiBFc29sdmVBZGRyZXNzUG9zdERhdGEpOiBPYnNlcnZhYmxlPEVzb2x2ZUFkZHJlc3NSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzX3Bvc3RfZGF0YVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlQWRkcmVzc1Jlc3BvbnNlPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtYWRkcmVzcy5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlQWRkcmVzc1Jlc3VsdChyZXNwb25zZSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1yZWdpc3RyYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBZGRyZXNzZXMoKTogT2JzZXJ2YWJsZTxFc29sdmVBZGRyZXNzW10+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2luR3VhcmQoKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQWRkcmVzc1JlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFkZHJlc3Nlcy5waHBgLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IHVzZXJfaWQ6IHRoaXMudXNlcl9pZCB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBZGRyZXNzKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZUFkZHJlc3MoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RXNvbHZlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZGVsZXRlPEVzb2x2ZURlbGV0ZVJlc3BvbnNlPihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2RlbGV0ZS1hZGRyZXNzLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHR0cF9yZXNwb25zZS5yZXN1bHQgPT09IG51bGwpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMgIT09ICdzdWNjZXNzJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgaHR0cF9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVzdWx0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0LmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0Lm1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cERlbGV0ZUVycm9yKCdkZWxldGUtYWRkcmVzcycsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyKHVzZXJfcmVnaXN0cmF0aW9uOiBFc29sdmVSZWdpc3RyYXRpb25EYXRhKTogT2JzZXJ2YWJsZTxFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICB1c2VyOiB1c2VyX3JlZ2lzdHJhdGlvblxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlUmVnaXN0cmF0aW9uUG9zdFJlc3BvbnNlSXRlbT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LXJlZ2lzdHJhdGlvbi5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5hdXRvX2xvZ2luKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmhhbmRsZVVwZGF0ZVNlc3Npb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6ICtyZXNwb25zZS5lc29sdmVfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6ICtyZXNwb25zZS5zZXNzaW9uX2RhdGEubG9jYXRpb25faWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoJ3NldC1yZWdpc3RyYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VQYXNzd29yZChwYXNzd29yZDogc3RyaW5nLCBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgIGNvbmZpcm1fcGFzc3dvcmRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1jaGFuZ2UtcGFzc3dvcmQucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUNoYW5nZVBhc3N3b3JkUmVzdWx0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtY2hhbmdlLXBhc3N3b3JkJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2VuZEZvcmdvdFBhc3N3b3JkUmVxdWVzdChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUZvcmdvdFBhc3N3b3JkR2V0UmVzdWx0Pj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtZm9yZ290LXBhc3N3b3JkLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyBlbWFpbCB9IH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICEoJ3Jlc2V0X2xpbmtfc2VudCcgaW4gcmVzcG9uc2UucmVjb3JkcylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVjb3Jkcy5yZXNldF9saW5rX3NlbnQ7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXNldFBhc3N3b3JkKFxyXG4gICAgICAgIHJlc2V0X2tleTogc3RyaW5nLFxyXG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmcsXHJcbiAgICAgICAgY29uZmlybV9wYXNzd29yZDogc3RyaW5nLFxyXG4gICAgICAgIGF1dG9fbG9naW4gPSB0cnVlXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVJlc2V0UGFzc3dvcmRSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2U+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1mb3Jnb3QtcGFzc3dvcmQucGhwYCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNldF9rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZCxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvX2xvZ2luXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5sb2dpbl9yZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5oYW5kbGVVcGRhdGVTZXNzaW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiArcmVzcG9uc2UuZXNvbHZlX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiArcmVzcG9uc2Uuc2Vzc2lvbl9kYXRhLmxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlUmVzZXRQYXNzd29yZFJlc3VsdChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWZvcmdvdC1wYXNzd29yZCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZUxvY2F0aW9uKGxvY2F0aW9uX2lkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVzb2x2ZUxvY2F0aW9uVXBkYXRlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHsgbG9jYXRpb25faWQgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtc2Vzc2lvbi1sb2NhdGlvbi5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmhhbmRsZVVwZGF0ZVNlc3Npb24oeyBsb2NhdGlvbl9pZCB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlTG9jYXRpb25VcGRhdGVSZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRyYW5zYWN0aW9ucyhvcHRpb25zOiBFc29sdmVUcmFuc2FjdGlvbk9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8RXNvbHZlVHJhbnNhY3Rpb25MaXN0PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbkd1YXJkKCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVRyYW5zYWN0aW9uUmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtdHJhbnNhY3Rpb25zLnBocGAsXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IHRoaXMudXNlcl9pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMucHJvY2Vzc1RyYW5zYWN0aW9ucyhyZXNwb25zZS5yZWNvcmRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMgPz8gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93cyA9IG9wdGlvbnMucm93cyA/PyB0b3RhbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnMucGFnZSB8fCAxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVUcmFuc2FjdGlvbkxpc3QoaXRlbXMsIHBhZ2UsIHJvd3MsIHRvdGFsKTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUcmFuc2FjdGlvbihpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVUcmFuc2FjdGlvbj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5HdWFyZCgpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVUcmFuc2FjdGlvblJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXRyYW5zYWN0aW9ucy5waHBgLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiB0aGlzLnVzZXJfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbl9pZDogaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLnByb2Nlc3NUcmFuc2FjdGlvbnMocmVzcG9uc2UucmVjb3Jkcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NVc2VyQWNjb3VudChyZWNvcmQ6IEVzb2x2ZVVzZXJBY2NvdW50UmVjb3JkKTogRXNvbHZlVXNlckFjY291bnQge1xyXG4gICAgICAgIGlmICghcmVjb3JkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZWNvcmQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgrcmVjb3JkLnVzZXJpZCAhPT0gdGhpcy5fdXNlcl9pZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNlciBhY2NvdW50IHJldHJpZXZlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXNlcl9hY2NvdW50ID0gbmV3IEVzb2x2ZVVzZXJBY2NvdW50KFxyXG4gICAgICAgICAgICArcmVjb3JkLnVzZXJpZCxcclxuICAgICAgICAgICAgcmVjb3JkLmVtYWlsLFxyXG4gICAgICAgICAgICByZWNvcmQucmVnaXN0cmF0aW9uX3R5cGUsXHJcbiAgICAgICAgICAgIHJlY29yZC50aXRsZSxcclxuICAgICAgICAgICAgcmVjb3JkLmZpcnN0bmFtZSxcclxuICAgICAgICAgICAgcmVjb3JkLnN1cm5hbWUsXHJcbiAgICAgICAgICAgIHJlY29yZC5pbml0aWFscyxcclxuICAgICAgICAgICAgcmVjb3JkLmdlbmRlcixcclxuICAgICAgICAgICAgcmVjb3JkLmlkbnVtYmVyXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdXNlcl9hY2NvdW50LmNvbnRhY3RfZGV0YWlscyA9IG5ldyBFc29sdmVVc2VyQWNjb3VudENvbnRhY3QoXHJcbiAgICAgICAgICAgIHJlY29yZC50ZWxudW1iZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC5jZWxsbnVtYmVyLFxyXG4gICAgICAgICAgICByZWNvcmQuZmF4XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdXNlcl9hY2NvdW50LmJ1c2luZXNzX2RldGFpbHMgPSBuZXcgRXNvbHZlVXNlckFjY291bnRCdXNpbmVzcyhcclxuICAgICAgICAgICAgcmVjb3JkLmJ1c25hbWUsXHJcbiAgICAgICAgICAgIHJlY29yZC52YXRudW0sXHJcbiAgICAgICAgICAgIHJlY29yZC5idXNkZXNjcmlwdCxcclxuICAgICAgICAgICAgcmVjb3JkLmJ1c2luZXNzX3R5cGVcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4gdXNlcl9hY2NvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc1VzZXJBZGRyZXNzKHJlY29yZHM6IEVzb2x2ZUFkZHJlc3NSZWNvcmRbXSk6IEVzb2x2ZUFkZHJlc3NbXSB7XHJcbiAgICAgICAgY29uc3QgdXNlcl9hZGRyZXNzZXM6IEVzb2x2ZUFkZHJlc3NbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoIXJlY29yZHMgfHwgKHRoaXMuX3VzZXJfaWQgPT09IDApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1c2VyX2FkZHJlc3NlcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcclxuICAgICAgICAgICAgaWYgKCtyZWNvcmQudXNlcmlkICE9PSB0aGlzLl91c2VyX2lkKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXNlcl9hZGRyZXNzZXMucHVzaChuZXcgRXNvbHZlQWRkcmVzcyhcclxuICAgICAgICAgICAgICAgICtyZWNvcmQuaWQsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucmVjaXBpZW50LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmFkZHJlc3NfdHlwZSxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wb2JveCxcclxuICAgICAgICAgICAgICAgIHJlY29yZC5wbGFjZV9uYW1lLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnN0cmVldF9udW1iZXIsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQuc3RyZWV0LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnN1YnVyYixcclxuICAgICAgICAgICAgICAgIHJlY29yZC5jaXR5LFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLnByb3ZpbmNlLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLmNvdW50cnksXHJcbiAgICAgICAgICAgICAgICByZWNvcmQucG9zdGFsX2NvZGUsXHJcbiAgICAgICAgICAgICAgICArcmVjb3JkLmxhdGl0dWRlLFxyXG4gICAgICAgICAgICAgICAgK3JlY29yZC5sb25naXR1ZGVcclxuICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdXNlcl9hZGRyZXNzZXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVHJhbnNhY3Rpb25zKHJlY29yZHM6IEVzb2x2ZVRyYW5zYWN0aW9uUmVjb3JkW10pOiBFc29sdmVUcmFuc2FjdGlvbltdIHtcclxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbnM6IEVzb2x2ZVRyYW5zYWN0aW9uW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHJlY29yZHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgRXNvbHZlVHJhbnNhY3Rpb24ocmVjb3JkKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbnMucHVzaCh0cmFuc2FjdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cmFuc2FjdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsb2dpbkd1YXJkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnVzZXJfaWQgPD0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5lbWl0RXJyb3IoJ2xvZ2luX3JlcXVpcmVkJywgJ0xvZ2luIGlzIHJlcXVpcmVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWZvcmdvdC1wYXNzd29yZC1yZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtZm9yZ290LXBhc3N3b3JkLXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXNwb25zZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVzb2x2ZUZvcmdvdFBhc3N3b3JkUmVzcG9uc2UgZXh0ZW5kcyBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIHtcclxuICAgIGVzb2x2ZV9pZDogbnVtYmVyO1xyXG4gICAgcmVzZXRfc3VjY2VzczogYm9vbGVhbjtcclxuICAgIHBhc3N3b3JkX21hdGNoZXNfb2xkOiBib29sZWFuO1xyXG4gICAgbG9naW5fcmVxdWlyZWQ6IGJvb2xlYW47XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWZvcmdvdC1wYXNzd29yZC1yZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYWNjb3VudC9lc29sdmUtZm9yZ290LXBhc3N3b3JkLXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVTZXNzaW9uRGF0YSB9IGZyb20gJy4uL3Nlc3Npb24vZXNvbHZlLXNlc3Npb24tZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVBvc3RSZXNwb25zZUl0ZW0gfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3BvbnNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlRm9yZ290UGFzc3dvcmRSZXNwb25zZSBleHRlbmRzIEVzb2x2ZVBvc3RSZXNwb25zZUl0ZW0ge1xyXG4gICAgZXNvbHZlX2lkOiBudW1iZXI7XHJcbiAgICByZXNldF9zdWNjZXNzOiBib29sZWFuO1xyXG4gICAgcGFzc3dvcmRfbWF0Y2hlc19vbGQ6IGJvb2xlYW47XHJcbiAgICBsb2dpbl9yZXF1aXJlZDogYm9vbGVhbjtcclxuICAgIHNlc3Npb25fZGF0YTogRXNvbHZlU2Vzc2lvbkRhdGE7XHJcbn1cclxuIl19
@@ -0,0 +1,8 @@
1
+ import { EsolveResponseResult } from '../shared/response-handler/esolve-response-result';
2
+ export class EsolveLocationUpdateResult extends EsolveResponseResult {
3
+ constructor(response) {
4
+ super(response);
5
+ this.location_updated = (response.esolve_id > 0);
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWxvY2F0aW9uLXVwZGF0ZS1yZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvZXNvbHZlLWxvY2F0aW9uLXVwZGF0ZS1yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFekYsTUFBTSxPQUFPLDBCQUEyQixTQUFRLG9CQUFvQjtJQUdoRSxZQUNJLFFBQWdDO1FBRWhDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZVBvc3RSZXNwb25zZUl0ZW0gfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3BvbnNlJztcclxuaW1wb3J0IHsgRXNvbHZlUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UtaGFuZGxlci9lc29sdmUtcmVzcG9uc2UtcmVzdWx0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVMb2NhdGlvblVwZGF0ZVJlc3VsdCBleHRlbmRzIEVzb2x2ZVJlc3BvbnNlUmVzdWx0IHtcclxuICAgIHB1YmxpYyBsb2NhdGlvbl91cGRhdGVkOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHJlc3BvbnNlOiBFc29sdmVQb3N0UmVzcG9uc2VJdGVtXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihyZXNwb25zZSk7XHJcblxyXG4gICAgICAgIHRoaXMubG9jYXRpb25fdXBkYXRlZCA9IChyZXNwb25zZS5lc29sdmVfaWQgPiAwKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXJlZ2lzdHJhdGlvbi1wb3N0LXJlc3BvbnNlLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvZXNvbHZlLXJlZ2lzdHJhdGlvbi1wb3N0LXJlc3BvbnNlLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZVBvc3RSZXNwb25zZUl0ZW0gfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3BvbnNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlUmVnaXN0cmF0aW9uUG9zdFJlc3BvbnNlSXRlbSBleHRlbmRzIEVzb2x2ZVBvc3RSZXNwb25zZUl0ZW0ge1xyXG4gICAgZXNvbHZlX2lkOiBudW1iZXI7XHJcbiAgICBndWVzdDogYm9vbGVhbjtcclxuICAgIGF1dGhlbnRpY2F0aW9uX3JlcXVpcmVkOiBib29sZWFuO1xyXG4gICAgYXV0b19sb2dpbjogYm9vbGVhbjtcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXJlZ2lzdHJhdGlvbi1wb3N0LXJlc3BvbnNlLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvZXNvbHZlLXJlZ2lzdHJhdGlvbi1wb3N0LXJlc3BvbnNlLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZVNlc3Npb25EYXRhIH0gZnJvbSAnLi4vc2Vzc2lvbi9lc29sdmUtc2Vzc2lvbi1kYXRhJztcclxuaW1wb3J0IHsgRXNvbHZlUG9zdFJlc3BvbnNlSXRlbSB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzcG9uc2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFc29sdmVSZWdpc3RyYXRpb25Qb3N0UmVzcG9uc2VJdGVtIGV4dGVuZHMgRXNvbHZlUG9zdFJlc3BvbnNlSXRlbSB7XHJcbiAgICBlc29sdmVfaWQ6IG51bWJlcjtcclxuICAgIGd1ZXN0OiBib29sZWFuO1xyXG4gICAgYXV0aGVudGljYXRpb25fcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgICBhdXRvX2xvZ2luOiBib29sZWFuO1xyXG4gICAgc2Vzc2lvbl9kYXRhOiBFc29sdmVTZXNzaW9uRGF0YTtcclxufVxyXG4iXX0=
@@ -6,6 +6,7 @@ export class EsolveRegistrationResult extends EsolveResponseResult {
6
6
  this.guest = response.guest;
7
7
  this.auto_login = response.auto_login;
8
8
  this.authentication_required = response.authentication_required;
9
+ this.location_id = response.session_data.location_id;
9
10
  }
10
11
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXJlZ2lzdHJhdGlvbi1yZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvZXNvbHZlLXJlZ2lzdHJhdGlvbi1yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFHekYsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG9CQUFvQjtJQU05RCxZQUNJLFFBQTRDO1FBRTVDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUN0QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsUUFBUSxDQUFDLHVCQUF1QixDQUFDO0lBQ3BFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZVJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlLWhhbmRsZXIvZXNvbHZlLXJlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IEVzb2x2ZVJlZ2lzdHJhdGlvblBvc3RSZXNwb25zZUl0ZW0gfSBmcm9tICcuL2Vzb2x2ZS1yZWdpc3RyYXRpb24tcG9zdC1yZXNwb25zZS1pdGVtJztcclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVSZWdpc3RyYXRpb25SZXN1bHQgZXh0ZW5kcyBFc29sdmVSZXNwb25zZVJlc3VsdCB7XHJcbiAgICBwdWJsaWMgdXNlcl9pZDogbnVtYmVyO1xyXG4gICAgcHVibGljIGd1ZXN0OiBib29sZWFuO1xyXG4gICAgcHVibGljIGF1dGhlbnRpY2F0aW9uX3JlcXVpcmVkOiBib29sZWFuO1xyXG4gICAgcHVibGljIGF1dG9fbG9naW46IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcmVzcG9uc2U6IEVzb2x2ZVJlZ2lzdHJhdGlvblBvc3RSZXNwb25zZUl0ZW1cclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHJlc3BvbnNlKTtcclxuXHJcbiAgICAgICAgdGhpcy51c2VyX2lkID0gcmVzcG9uc2UuZXNvbHZlX2lkO1xyXG4gICAgICAgIHRoaXMuZ3Vlc3QgPSByZXNwb25zZS5ndWVzdDtcclxuICAgICAgICB0aGlzLmF1dG9fbG9naW4gPSByZXNwb25zZS5hdXRvX2xvZ2luO1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25fcmVxdWlyZWQgPSByZXNwb25zZS5hdXRoZW50aWNhdGlvbl9yZXF1aXJlZDtcclxuICAgIH1cclxufVxyXG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXJlZ2lzdHJhdGlvbi1yZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2FjY291bnQvZXNvbHZlLXJlZ2lzdHJhdGlvbi1yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFHekYsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG9CQUFvQjtJQU85RCxZQUNJLFFBQTRDO1FBRTVDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUN0QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsUUFBUSxDQUFDLHVCQUF1QixDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDekQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXNvbHZlUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UtaGFuZGxlci9lc29sdmUtcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgRXNvbHZlUmVnaXN0cmF0aW9uUG9zdFJlc3BvbnNlSXRlbSB9IGZyb20gJy4vZXNvbHZlLXJlZ2lzdHJhdGlvbi1wb3N0LXJlc3BvbnNlLWl0ZW0nO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVJlZ2lzdHJhdGlvblJlc3VsdCBleHRlbmRzIEVzb2x2ZVJlc3BvbnNlUmVzdWx0IHtcclxuICAgIHB1YmxpYyB1c2VyX2lkOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgZ3Vlc3Q6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgYXV0aGVudGljYXRpb25fcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgYXV0b19sb2dpbjogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBsb2NhdGlvbl9pZDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHJlc3BvbnNlOiBFc29sdmVSZWdpc3RyYXRpb25Qb3N0UmVzcG9uc2VJdGVtXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihyZXNwb25zZSk7XHJcblxyXG4gICAgICAgIHRoaXMudXNlcl9pZCA9IHJlc3BvbnNlLmVzb2x2ZV9pZDtcclxuICAgICAgICB0aGlzLmd1ZXN0ID0gcmVzcG9uc2UuZ3Vlc3Q7XHJcbiAgICAgICAgdGhpcy5hdXRvX2xvZ2luID0gcmVzcG9uc2UuYXV0b19sb2dpbjtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uX3JlcXVpcmVkID0gcmVzcG9uc2UuYXV0aGVudGljYXRpb25fcmVxdWlyZWQ7XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbl9pZCA9IHJlc3BvbnNlLnNlc3Npb25fZGF0YS5sb2NhdGlvbl9pZDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ ;
2
+ ;
3
+ export {};
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGgtcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2F1dGgvZXNvbHZlLWF1dGgtcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkJ1RCxDQUFDO0FBR0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZVNlc3Npb25EYXRhIH0gZnJvbSAnLi4vc2Vzc2lvbi9lc29sdmUtc2Vzc2lvbi1kYXRhJztcclxuXHJcbmludGVyZmFjZSBFc29sdmVBdXRoRGF0YSB7XHJcbiAgICBleHBpcmVzOiBudW1iZXI7XHJcbiAgICBleHBpcnlfdGltZTogbnVtYmVyO1xyXG4gICAgdXNlcl9pZDogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRXNvbHZlQXV0aEdldERhdGEge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBFc29sdmVBdXRoQ2hlY2tEYXRhIHtcclxuICAgIGtleV9va2F5OiBib29sZWFuO1xyXG59XHJcblxyXG50eXBlIEVzb2x2ZUF1dGhSZXNwb25zZURhdGE8VD4gPVxyXG4gICAgRXNvbHZlU2Vzc2lvbkRhdGEgJiBFc29sdmVBdXRoRGF0YSAmIFQ7XHJcblxyXG5pbnRlcmZhY2UgRXNvbHZlQXV0aFJlc3BvbnNlPFQ+IHtcclxuICAgIHNlcnZpY2VfdHlwZTogc3RyaW5nO1xyXG4gICAgdHlwZTogc3RyaW5nO1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgYWRkaXRpb25hbF9kYXRhOiBFc29sdmVBdXRoUmVzcG9uc2VEYXRhPFQ+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFc29sdmVBdXRoUmVzdWx0ID0gRXNvbHZlQXV0aFJlc3BvbnNlRGF0YTxFc29sdmVBdXRoR2V0RGF0YT47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlXHJcbiAgICBleHRlbmRzIEVzb2x2ZUF1dGhSZXNwb25zZTxFc29sdmVBdXRoQ2hlY2tEYXRhPiB7IH07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVzb2x2ZUF1dGhHZXRSZXNwb25zZVxyXG4gICAgZXh0ZW5kcyBFc29sdmVBdXRoUmVzcG9uc2U8RXNvbHZlQXV0aEdldERhdGE+IHsgfTtcclxuXHJcbiJdfQ==
@@ -40,7 +40,7 @@ export class EsolveAuthService {
40
40
  throw responseData;
41
41
  }
42
42
  }), catchError(this.handleError), tap((responseData) => {
43
- this.handleAuthentication(responseData);
43
+ this.handleAuthentication(responseData.additional_data);
44
44
  }));
45
45
  }
46
46
  autoLogin() {
@@ -78,8 +78,14 @@ export class EsolveAuthService {
78
78
  for (const response_log of login_response.log) {
79
79
  if ((response_log.type === 'success') &&
80
80
  (response_log.message_code === 'login_success')) {
81
- this.session.handleUpdateSession(login_response.esolve_id);
82
- return login_response.esolve_id;
81
+ const session_data = login_response.session_data;
82
+ const user_id = +login_response.esolve_id;
83
+ const location_id = +session_data.location_id;
84
+ this.session.handleUpdateSession({
85
+ user_id: user_id,
86
+ location_id: location_id
87
+ });
88
+ return user_id;
83
89
  }
84
90
  }
85
91
  throw login_response;
@@ -108,8 +114,15 @@ export class EsolveAuthService {
108
114
  (!responseData.additional_data.key_okay)) {
109
115
  throw responseData;
110
116
  }
111
- responseData.additional_data.key = token;
112
- return responseData;
117
+ const additional_data = responseData.additional_data;
118
+ const result = {
119
+ key: token,
120
+ expires: additional_data.expires,
121
+ expiry_time: additional_data.expiry_time,
122
+ location_id: additional_data.location_id,
123
+ user_id: additional_data.user_id,
124
+ };
125
+ return result;
113
126
  }))
114
127
  .toPromise();
115
128
  }
@@ -123,11 +136,11 @@ export class EsolveAuthService {
123
136
  });
124
137
  };
125
138
  }
126
- handleAuthentication(responseData) {
127
- if (!responseData.additional_data.key) {
139
+ handleAuthentication(result) {
140
+ if (!result.key) {
128
141
  return;
129
142
  }
130
- this.session.handleSession(responseData.additional_data.user_id, responseData.additional_data.key, +responseData.additional_data.expiry_time, +responseData.additional_data.expires, this.handleExpiration());
143
+ this.session.handleSession(+result.user_id, +result.location_id, result.key, +result.expiry_time, +result.expires, this.handleExpiration());
131
144
  }
132
145
  handleError(errorRes) {
133
146
  const error = {
@@ -159,4 +172,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
159
172
  type: Inject,
160
173
  args: [ESOLVE_CONNECT_CONFIG]
161
174
  }] }, { type: i1.HttpClient }, { type: i2.EsolveSessionService }, { type: i3.EsolveErrorHandlerService }, { type: i4.EsolveCookieService }]; } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFFSCxVQUFVLEVBRVYsV0FBVyxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQXVCdEYsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQixFQUNoQixPQUE2QixFQUM3QixZQUF1QyxFQUN2QyxhQUFrQztRQUpILFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtJQUMxQyxDQUFDO0lBRUUsY0FBYyxDQUNqQixLQUFhLEVBQ2IsUUFBZ0IsRUFDaEIsWUFBcUIsS0FBSztRQUUxQixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTlCLElBQUksU0FBUyxFQUFFO1lBQ1gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ2QsTUFBTSxHQUFHLE1BQU0sQ0FB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QixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUN4QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUNyQjtZQUNFLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoQyxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDcEM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUU7WUFDMUIsS0FBSyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7OEdBeE5RLGlCQUFpQixrQkFFZCxxQkFBcUI7a0hBRnhCLGlCQUFpQixjQUZkLE1BQU07MkZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBR1EsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEh0dHBDbGllbnQsXHJcbiAgICBIdHRwUGFyYW1zLFxyXG4gICAgSHR0cEVycm9yUmVzcG9uc2UsXHJcbiAgICBIdHRwSGVhZGVycyxcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCwgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZywgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvbiB9IGZyb20gJy4uL3Nlc3Npb24vZXNvbHZlLXNlc3Npb24nO1xyXG5pbXBvcnQgeyBFc29sdmVTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24vZXNvbHZlLXNlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVNldFJlc3BvbnNlLCBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3ItaGFuZGxlci9lc29sdmUtZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlQ29va2llU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb29raWUvZXNvbHZlLWNvb2tpZS5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBFc29sdmVBdXRoUmVzcG9uc2VEYXRhIHtcclxuICAgIHNlcnZpY2VfdHlwZTogc3RyaW5nO1xyXG4gICAgdHlwZTogc3RyaW5nO1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgYWRkaXRpb25hbF9kYXRhOiB7XHJcbiAgICAgICAgZXhwaXJlczogbnVtYmVyLFxyXG4gICAgICAgIGV4cGlyeV90aW1lOiBudW1iZXIsXHJcbiAgICAgICAgdXNlcl9pZDogbnVtYmVyLFxyXG4gICAgICAgIGtleT86IHN0cmluZyxcclxuICAgICAgICBrZXlfb2theT86IGJvb2xlYW4sXHJcbiAgICB9O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVBdXRoU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbjogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBFc29sdmVDb29raWVTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBY2Nlc3NUb2tlbihcclxuICAgICAgICBlbWFpbDogc3RyaW5nLFxyXG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmcsXHJcbiAgICAgICAgYW5vbnltb3VzOiBib29sZWFuID0gZmFsc2VcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQXV0aFJlc3BvbnNlRGF0YT4ge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICBpZiAoYW5vbnltb3VzKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2Fub255bW91cycsIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVtYWlsICE9PSAnJykge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdlbWFpbCcsIGVtYWlsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChwYXNzd29yZCAhPT0gJycpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFzc3dvcmQnLCBwYXNzd29yZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlQXV0aFJlc3BvbnNlRGF0YT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWNjZXNzLXRva2VuLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnKicsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoKHJlc3BvbnNlRGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXJyb3InKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VEYXRhLnR5cGUgPT09ICdleGNlcHRpb24nKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLFxyXG4gICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3BvbnNlRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhdXRvTG9naW4oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uLnJlc3RvcmUoXHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXhwaXJhdGlvbigpLFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFjY2Vzc1Rva2VuKCcnLCAnJywgdHJ1ZSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2dpbihlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBsb2dpbjoge1xyXG4gICAgICAgICAgICAgICAgZW1haWwsXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVQb3N0UmVzcG9uc2VJdGVtPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtbG9naW4ucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlc3BvbnNlcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVzcG9uc2VzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2luX3Jlc3BvbnNlID0gcmVzcG9uc2UucmVzcG9uc2VzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2dpbl9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICdzdWNjZXNzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2luX3Jlc3BvbnNlLnN0YXR1cy5zdGF0ZSAhPT0gJ3dhcm5pbmcnKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBsb2dpbl9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzcG9uc2VfbG9nIG9mIGxvZ2luX3Jlc3BvbnNlLmxvZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VfbG9nLnR5cGUgPT09ICdzdWNjZXNzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZV9sb2cubWVzc2FnZV9jb2RlID09PSAnbG9naW5fc3VjY2VzcycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmhhbmRsZVVwZGF0ZVNlc3Npb24obG9naW5fcmVzcG9uc2UuZXNvbHZlX2lkIGFzIG51bWJlcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2luX3Jlc3BvbnNlLmVzb2x2ZV9pZCBhcyBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGxvZ2luX3Jlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWxvZ2luJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbG9nb3V0KCk6IFByb21pc2U8RXNvbHZlQXV0aFJlc3BvbnNlRGF0YT4ge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5jbGVhclRpbWVyKCk7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLmRlbGV0ZSgnX3dzX2lkJyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEFjY2Vzc1Rva2VuKCcnLCAnJywgdHJ1ZSkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0FjY2Vzc1Rva2VuKHNlc3Npb24/OiBFc29sdmVTZXNzaW9uKTogUHJvbWlzZTxFc29sdmVBdXRoUmVzcG9uc2VEYXRhPiB7XHJcbiAgICAgICAgc2Vzc2lvbiA9IHNlc3Npb24gfHwgdGhpcy5zZXNzaW9uLmN1cnJlbnRTZXNzaW9uO1xyXG5cclxuICAgICAgICBjb25zdCB0b2tlbiA9IHNlc3Npb24/LmtleSA/PyAnJztcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUF1dGhSZXNwb25zZURhdGE+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBrZXk6IHRva2VuIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICcqJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2Vycm9yJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXhjZXB0aW9uJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKCFyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmtleV9va2F5KVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmtleSA9IHRva2VuO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRhO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlcnNcclxuICAgIHByaXZhdGUgaGFuZGxlRXhwaXJhdGlvbigpOiAoc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pID0+IHZvaWQge1xyXG4gICAgICAgIHJldHVybiAoc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0FjY2Vzc1Rva2VuKHNlc3Npb24pLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlQXV0aGVudGljYXRpb24ocmVzcG9uc2VEYXRhOiBFc29sdmVBdXRoUmVzcG9uc2VEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmtleSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlc3Npb24uaGFuZGxlU2Vzc2lvbihcclxuICAgICAgICAgICAgcmVzcG9uc2VEYXRhLmFkZGl0aW9uYWxfZGF0YS51c2VyX2lkLFxyXG4gICAgICAgICAgICByZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmtleSxcclxuICAgICAgICAgICAgK3Jlc3BvbnNlRGF0YS5hZGRpdGlvbmFsX2RhdGEuZXhwaXJ5X3RpbWUsXHJcbiAgICAgICAgICAgICtyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmV4cGlyZXMsXHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXhwaXJhdGlvbigpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yUmVzOiBFc29sdmVBdXRoUmVzcG9uc2VEYXRhKTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0ge1xyXG4gICAgICAgICAgICBtZXNzYWdlOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcsXHJcbiAgICAgICAgICAgIGRhdGE6IHt9LFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgKCFlcnJvclJlcy50eXBlKSB8fFxyXG4gICAgICAgICAgICAoIWVycm9yUmVzLnNlcnZpY2VfdHlwZSkgfHxcclxuICAgICAgICAgICAgKCFlcnJvclJlcy5tZXNzYWdlKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3JSZXMubWVzc2FnZS50cmltKCkgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSBlcnJvclJlcy5tZXNzYWdlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yUmVzLmFkZGl0aW9uYWxfZGF0YSkge1xyXG4gICAgICAgICAgICBlcnJvci5kYXRhID0gZXJyb3JSZXMuYWRkaXRpb25hbF9kYXRhO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFFSCxVQUFVLEVBRVYsV0FBVyxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQWdCdEYsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQixFQUNoQixPQUE2QixFQUM3QixZQUF1QyxFQUN2QyxhQUFrQztRQUpILFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtJQUMxQyxDQUFDO0lBRUUsY0FBYyxDQUNqQixLQUFhLEVBQ2IsUUFBZ0IsRUFDaEIsWUFBcUIsS0FBSztRQUUxQixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTlCLElBQUksU0FBUyxFQUFFO1lBQ1gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ2QsTUFBTSxHQUFHLE1BQU0sQ0FB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TyxDQUFDLGFBQWEsQ0FDdEIsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUNmLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFDbkIsTUFBTSxDQUFDLEdBQUcsRUFDVixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQ25CLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFDZixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFTyxXQUFXLENBQ2YsUUFBeUQ7UUFFekQsTUFBTSxLQUFLLEdBQUc7WUFDVixPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLElBQUksRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUVGLElBQ0ksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDaEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7WUFDeEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDckI7WUFDRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtRQUVELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDaEMsS0FBSyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztTQUN6QztRQUVELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7OzhHQTFPUSxpQkFBaUIsa0JBRWQscUJBQXFCO2tIQUZ4QixpQkFBaUIsY0FGZCxNQUFNOzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUdRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBIdHRwQ2xpZW50LFxyXG4gICAgSHR0cFBhcmFtcyxcclxuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgSHR0cEhlYWRlcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZUNvbm5lY3RDb25maWcsIEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVzb2x2ZVNlc3Npb24gfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uJztcclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVTZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vycm9yLWhhbmRsZXIvZXNvbHZlLWVycm9yLWhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUNvb2tpZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvY29va2llL2Vzb2x2ZS1jb29raWUuc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUxvZ2luUG9zdFJlc3BvbnNlSXRlbSB9IGZyb20gJy4vZXNvbHZlLWxvZ2luLXBvc3QtcmVzcG9uc2UtaXRlbSc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVBdXRoQ2hlY2tSZXNwb25zZSxcclxuICAgIEVzb2x2ZUF1dGhHZXRSZXNwb25zZSxcclxuICAgIEVzb2x2ZUF1dGhSZXN1bHQsXHJcbn0gZnJvbSAnLi9lc29sdmUtYXV0aC1yZXNwb25zZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVBdXRoU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbjogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBFc29sdmVDb29raWVTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBY2Nlc3NUb2tlbihcclxuICAgICAgICBlbWFpbDogc3RyaW5nLFxyXG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmcsXHJcbiAgICAgICAgYW5vbnltb3VzOiBib29sZWFuID0gZmFsc2VcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQXV0aEdldFJlc3BvbnNlPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcblxyXG4gICAgICAgIGlmIChhbm9ueW1vdXMpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnYW5vbnltb3VzJywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZW1haWwgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2VtYWlsJywgZW1haWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhc3N3b3JkICE9PSAnJykge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVBdXRoR2V0UmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJyonLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2Vycm9yJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXhjZXB0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2VEYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcclxuICAgICAgICAgICAgICAgIHRhcCgocmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbihyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGF1dG9Mb2dpbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlc3Npb24ucmVzdG9yZShcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHBpcmF0aW9uKCksXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHsgfSxcclxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvZ2luKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGxvZ2luOiB7XHJcbiAgICAgICAgICAgICAgICBlbWFpbCxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUxvZ2luUG9zdFJlc3BvbnNlSXRlbT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWxvZ2luLnBocGAsXHJcbiAgICAgICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZXNwb25zZXMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlc3BvbnNlcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2dpbl9yZXNwb25zZSA9IHJlc3BvbnNlLnJlc3BvbnNlc1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobG9naW5fcmVzcG9uc2Uuc3RhdHVzLnN0YXRlICE9PSAnc3VjY2VzcycpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2dpbl9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICd3YXJuaW5nJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbG9naW5fcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlX2xvZyBvZiBsb2dpbl9yZXNwb25zZS5sb2cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlX2xvZy50eXBlID09PSAnc3VjY2VzcycpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VfbG9nLm1lc3NhZ2VfY29kZSA9PT0gJ2xvZ2luX3N1Y2Nlc3MnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlc3Npb25fZGF0YSA9IGxvZ2luX3Jlc3BvbnNlLnNlc3Npb25fZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJfaWQgPSArbG9naW5fcmVzcG9uc2UuZXNvbHZlX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25faWQgPSArc2Vzc2lvbl9kYXRhLmxvY2F0aW9uX2lkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5oYW5kbGVVcGRhdGVTZXNzaW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiB1c2VyX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiBsb2NhdGlvbl9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGxvZ2luX3Jlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWxvZ2luJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbG9nb3V0KCk6IFByb21pc2U8RXNvbHZlQXV0aEdldFJlc3BvbnNlPiB7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uLmNsZWFyVGltZXIoKTtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlKCdfd3NfaWQnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrQWNjZXNzVG9rZW4oc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pOiBQcm9taXNlPEVzb2x2ZUF1dGhSZXN1bHQ+IHtcclxuICAgICAgICBzZXNzaW9uID0gc2Vzc2lvbiB8fCB0aGlzLnNlc3Npb24uY3VycmVudFNlc3Npb247XHJcblxyXG4gICAgICAgIGNvbnN0IHRva2VuID0gc2Vzc2lvbj8ua2V5ID8/ICcnO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlQXV0aENoZWNrUmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBrZXk6IHRva2VuIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICcqJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2Vycm9yJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXhjZXB0aW9uJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKCFyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmtleV9va2F5KVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsX2RhdGEgPSByZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IEVzb2x2ZUF1dGhSZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdG9rZW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXM6IGFkZGl0aW9uYWxfZGF0YS5leHBpcmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcnlfdGltZTogYWRkaXRpb25hbF9kYXRhLmV4cGlyeV90aW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogYWRkaXRpb25hbF9kYXRhLmxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiBhZGRpdGlvbmFsX2RhdGEudXNlcl9pZCxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlcnNcclxuICAgIHByaXZhdGUgaGFuZGxlRXhwaXJhdGlvbigpOiAoc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pID0+IHZvaWQge1xyXG4gICAgICAgIHJldHVybiAoc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0FjY2Vzc1Rva2VuKHNlc3Npb24pLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlQXV0aGVudGljYXRpb24ocmVzdWx0OiBFc29sdmVBdXRoUmVzdWx0KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQua2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5oYW5kbGVTZXNzaW9uKFxyXG4gICAgICAgICAgICArcmVzdWx0LnVzZXJfaWQsXHJcbiAgICAgICAgICAgICtyZXN1bHQubG9jYXRpb25faWQsXHJcbiAgICAgICAgICAgIHJlc3VsdC5rZXksXHJcbiAgICAgICAgICAgICtyZXN1bHQuZXhwaXJ5X3RpbWUsXHJcbiAgICAgICAgICAgICtyZXN1bHQuZXhwaXJlcyxcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHBpcmF0aW9uKClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoXHJcbiAgICAgICAgZXJyb3JSZXM6IEVzb2x2ZUF1dGhHZXRSZXNwb25zZSB8IEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlXHJcbiAgICApOiBPYnNlcnZhYmxlPG5ldmVyPiB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJyxcclxuICAgICAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAoIWVycm9yUmVzLnR5cGUpIHx8XHJcbiAgICAgICAgICAgICghZXJyb3JSZXMuc2VydmljZV90eXBlKSB8fFxyXG4gICAgICAgICAgICAoIWVycm9yUmVzLm1lc3NhZ2UpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvclJlcy5tZXNzYWdlLnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSA9IGVycm9yUmVzLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3JSZXMuYWRkaXRpb25hbF9kYXRhKSB7XHJcbiAgICAgICAgICAgIGVycm9yLmRhdGEgPSBlcnJvclJlcy5hZGRpdGlvbmFsX2RhdGE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWxvZ2luLXBvc3QtcmVzcG9uc2UtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtbG9naW4tcG9zdC1yZXNwb25zZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVTZXNzaW9uRGF0YSB9IGZyb20gJy4uL3Nlc3Npb24vZXNvbHZlLXNlc3Npb24tZGF0YSc7XHJcbmltcG9ydCB7IEVzb2x2ZVBvc3RSZXNwb25zZUl0ZW0gfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3BvbnNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlTG9naW5Qb3N0UmVzcG9uc2VJdGVtIGV4dGVuZHMgRXNvbHZlUG9zdFJlc3BvbnNlSXRlbSB7XHJcbiAgICBlc29sdmVfaWQ6IG51bWJlcjtcclxuICAgIHNlc3Npb25fZGF0YTogRXNvbHZlU2Vzc2lvbkRhdGE7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW1hbnVmYWN0dXJlci1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9tYW51ZmFjdHVyZXJzL2Vzb2x2ZS1tYW51ZmFjdHVyZXItb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFc29sdmVNYW51ZmFjdHVyZXJPcHRpb25zIHtcclxuICAgIGZlYXR1cmVkX29ubHk/OiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW1hbnVmYWN0dXJlci1yZWNvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL21hbnVmYWN0dXJlcnMvZXNvbHZlLW1hbnVmYWN0dXJlci1yZWNvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlTWFudWZhY3R1cmVyUmVjb3JkIHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBtYW51ZmFjdHVyZXI6IHN0cmluZztcclxuICAgIHNlZl9tYW51ZmFjdHVyZXI6IHN0cmluZztcclxuICAgIHNlb19wYWdlX3ByaW9yaXR5OiBudW1iZXI7XHJcbiAgICBzZW9fcGFnZV91cGRhdGVfZnJlcXVlbmN5OiBzdHJpbmc7XHJcbiAgICBzZW9fcGFnZV90aXRsZTogc3RyaW5nO1xyXG4gICAgc2VvX2tleXdvcmRzOiBzdHJpbmc7XHJcbiAgICBzZW9fZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIGltYWdlX25hbWU6IHN0cmluZztcclxuICAgIHNvcnRfcHJpb3JpdHk6IG51bWJlcjtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBhcnRpY2xlOiBzdHJpbmc7XHJcbiAgICBpc19hY3RpdmU6IGJvb2xlYW47XHJcbiAgICBmZWF0dXJlZDogYm9vbGVhbjtcclxufVxyXG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { EsolveSEOInfo } from '../shared/seo/esolve-seo-info';
2
+ export class EsolveManufacturer {
3
+ constructor(id, manufacturer, sef_manufacturer, title, article, sort_priority, is_active, featured, image_name, seo_title = '', seo_keywords = '', seo_description = '') {
4
+ this.id = id;
5
+ this.manufacturer = manufacturer;
6
+ this.sef_manufacturer = sef_manufacturer;
7
+ this.title = title;
8
+ this.article = article;
9
+ this.sort_priority = sort_priority;
10
+ this.is_active = is_active;
11
+ this.featured = featured;
12
+ this.image_name = image_name;
13
+ this.image_path = '/images/manufacturers/';
14
+ if (this.title.trim() === '') {
15
+ this.title = this.manufacturer;
16
+ }
17
+ if (seo_title.trim() === '') {
18
+ seo_title = this.title;
19
+ }
20
+ this.seo_details = new EsolveSEOInfo(seo_title, seo_description, seo_keywords);
21
+ }
22
+ get small_image_src() {
23
+ return this.generateImagePath('small');
24
+ }
25
+ get thumbnail_image_src() {
26
+ return this.generateImagePath('thumb');
27
+ }
28
+ get tiny_image_src() {
29
+ return this.generateImagePath('tiny');
30
+ }
31
+ generateImagePath(image_size) {
32
+ if (this.image_name !== '') {
33
+ return `${this.image_path}${image_size}/${this.image_name}`;
34
+ }
35
+ return '';
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW1hbnVmYWN0dXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvbWFudWZhY3R1cmVycy9lc29sdmUtbWFudWZhY3R1cmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEYsTUFBTSxPQUFPLGtCQUFrQjtJQWlCM0IsWUFDVyxFQUFVLEVBQ1YsWUFBb0IsRUFDcEIsZ0JBQXdCLEVBQ3hCLEtBQWEsRUFDYixPQUFlLEVBQ2YsYUFBcUIsRUFDckIsU0FBa0IsRUFDbEIsUUFBaUIsRUFDakIsVUFBa0IsRUFDekIsWUFBb0IsRUFBRSxFQUN0QixlQUF1QixFQUFFLEVBQ3pCLGtCQUEwQixFQUFFO1FBWHJCLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXZCckIsZUFBVSxHQUFHLHdCQUF3QixDQUFDO1FBNEIxQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUNsQztRQUVELElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN6QixTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBbkNELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBVyxtQkFBbUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQVcsY0FBYztRQUNyQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBMkJPLGlCQUFpQixDQUFDLFVBQXNDO1FBQzVELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7WUFDeEIsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUMvRDtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXNvbHZlU0VPRGV0YWlscywgRXNvbHZlU0VPSW5mbyB9IGZyb20gJy4uL3NoYXJlZC9zZW8vZXNvbHZlLXNlby1pbmZvJztcclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVNYW51ZmFjdHVyZXIgaW1wbGVtZW50cyBFc29sdmVTRU9EZXRhaWxzIHtcclxuICAgIHB1YmxpYyBzZW9fZGV0YWlsczogRXNvbHZlU0VPSW5mbztcclxuXHJcbiAgICBwcml2YXRlIGltYWdlX3BhdGggPSAnL2ltYWdlcy9tYW51ZmFjdHVyZXJzLyc7XHJcblxyXG4gICAgcHVibGljIGdldCBzbWFsbF9pbWFnZV9zcmMoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUltYWdlUGF0aCgnc21hbGwnKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHRodW1ibmFpbF9pbWFnZV9zcmMoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUltYWdlUGF0aCgndGh1bWInKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHRpbnlfaW1hZ2Vfc3JjKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVJbWFnZVBhdGgoJ3RpbnknKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgaWQ6IG51bWJlcixcclxuICAgICAgICBwdWJsaWMgbWFudWZhY3R1cmVyOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIHNlZl9tYW51ZmFjdHVyZXI6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgdGl0bGU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgYXJ0aWNsZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBzb3J0X3ByaW9yaXR5OiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIGlzX2FjdGl2ZTogYm9vbGVhbixcclxuICAgICAgICBwdWJsaWMgZmVhdHVyZWQ6IGJvb2xlYW4sXHJcbiAgICAgICAgcHVibGljIGltYWdlX25hbWU6IHN0cmluZyxcclxuICAgICAgICBzZW9fdGl0bGU6IHN0cmluZyA9ICcnLFxyXG4gICAgICAgIHNlb19rZXl3b3Jkczogc3RyaW5nID0gJycsXHJcbiAgICAgICAgc2VvX2Rlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJyxcclxuICAgICkge1xyXG4gICAgICAgIGlmICh0aGlzLnRpdGxlLnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMubWFudWZhY3R1cmVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNlb190aXRsZS50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHNlb190aXRsZSA9IHRoaXMudGl0bGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlb19kZXRhaWxzID0gbmV3IEVzb2x2ZVNFT0luZm8oc2VvX3RpdGxlLCBzZW9fZGVzY3JpcHRpb24sIHNlb19rZXl3b3Jkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUltYWdlUGF0aChpbWFnZV9zaXplOiAnc21hbGwnIHwgJ3RodW1iJyB8ICd0aW55Jyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VfbmFtZSAhPT0gJycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuaW1hZ2VfcGF0aH0ke2ltYWdlX3NpemV9LyR7dGhpcy5pbWFnZV9uYW1lfWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,73 @@
1
+ import { HttpParams } from '@angular/common/http';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { of } from 'rxjs';
4
+ import { catchError, map } from 'rxjs/operators';
5
+ import { ESOLVE_CONNECT_CONFIG } from '../esolve-connect.config';
6
+ import { EsolveManufacturer } from './esolve-manufacturer';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common/http";
9
+ export class EsolveManufacturersService {
10
+ constructor(config, http) {
11
+ this.config = config;
12
+ this.http = http;
13
+ }
14
+ getManufacturer(id) {
15
+ const params = new HttpParams({
16
+ fromObject: { manufacturers_id: id }
17
+ });
18
+ return this.getManufacturerSingle(params);
19
+ }
20
+ getManufacturerFromSEF(sef_manufacturer) {
21
+ const params = new HttpParams({
22
+ fromObject: { sef_manufacturer }
23
+ });
24
+ return this.getManufacturerSingle(params);
25
+ }
26
+ getManufacturers(options) {
27
+ let params = new HttpParams();
28
+ if (options?.featured_only) {
29
+ params = params.set('featured_only', options.featured_only);
30
+ }
31
+ return this.getManufacturerRecords(params).pipe(map((records) => {
32
+ const manufacturers = [];
33
+ for (const record of records) {
34
+ manufacturers.push(this.processManufacturer(record));
35
+ }
36
+ return manufacturers;
37
+ }), catchError(() => {
38
+ return of([]);
39
+ }));
40
+ }
41
+ getManufacturerSingle(params) {
42
+ return this.getManufacturerRecords(params).pipe(map((records) => {
43
+ const record = records[0];
44
+ return this.processManufacturer(record);
45
+ }));
46
+ }
47
+ getManufacturerRecords(params) {
48
+ return this.http
49
+ .get(`${this.config.api_url}/get-manufacturers.php`, { params })
50
+ .pipe(map((response) => {
51
+ if ((response.records === undefined) ||
52
+ (response.records.length <= 0)) {
53
+ throw response;
54
+ }
55
+ return response.records;
56
+ }));
57
+ }
58
+ processManufacturer(record) {
59
+ return new EsolveManufacturer(+record.id, record.manufacturer, record.sef_manufacturer, record.title, record.article, +record.sort_priority, !!+record.is_active, !!+record.featured, record.image_name, record.seo_page_title, record.seo_keywords, record.seo_description);
60
+ }
61
+ }
62
+ EsolveManufacturersService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsolveManufacturersService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
63
+ EsolveManufacturersService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsolveManufacturersService, providedIn: 'root' });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsolveManufacturersService, decorators: [{
65
+ type: Injectable,
66
+ args: [{
67
+ providedIn: 'root',
68
+ }]
69
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
70
+ type: Inject,
71
+ args: [ESOLVE_CONNECT_CONFIG]
72
+ }] }, { type: i1.HttpClient }]; } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW1hbnVmYWN0dXJlcnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvbWFudWZhY3R1cmVycy9lc29sdmUtbWFudWZhY3R1cmVycy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUF1QixxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFPM0QsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQyxZQUMyQyxNQUEyQixFQUMxRCxJQUFnQjtRQURlLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7SUFDeEIsQ0FBQztJQUVFLGVBQWUsQ0FBQyxFQUFVO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzFCLFVBQVUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRTtTQUN2QyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sc0JBQXNCLENBQUMsZ0JBQXdCO1FBQ2xELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzFCLFVBQVUsRUFBRSxFQUFFLGdCQUFnQixFQUFFO1NBQ25DLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxPQUFtQztRQUN2RCxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTlCLElBQUksT0FBTyxFQUFFLGFBQWEsRUFBRTtZQUN4QixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNaLE1BQU0sYUFBYSxHQUF5QixFQUFFLENBQUM7WUFFL0MsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzFCLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDeEQ7WUFFRCxPQUFPLGFBQWEsQ0FBQztRQUN6QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osT0FBTyxFQUFFLENBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU8scUJBQXFCLENBQUMsTUFBa0I7UUFDNUMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNaLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVPLHNCQUFzQixDQUMxQixNQUFtQjtRQUVuQixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUNBLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLHdCQUF3QixFQUM5QyxFQUFFLE1BQU0sRUFBRSxDQUNiO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFDSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO2dCQUNoQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUNoQztnQkFDRSxNQUFNLFFBQVEsQ0FBQzthQUNsQjtZQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQWdDO1FBQ3hELE9BQU8sSUFBSSxrQkFBa0IsQ0FDekIsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUNWLE1BQU0sQ0FBQyxZQUFZLEVBQ25CLE1BQU0sQ0FBQyxnQkFBZ0IsRUFDdkIsTUFBTSxDQUFDLEtBQUssRUFDWixNQUFNLENBQUMsT0FBTyxFQUNkLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFDckIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFDbkIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFDbEIsTUFBTSxDQUFDLFVBQVUsRUFDakIsTUFBTSxDQUFDLGNBQWMsRUFDckIsTUFBTSxDQUFDLFlBQVksRUFDbkIsTUFBTSxDQUFDLGVBQWUsQ0FDekIsQ0FBQztJQUNOLENBQUM7O3VIQTVGUSwwQkFBMEIsa0JBRXZCLHFCQUFxQjsySEFGeEIsMEJBQTBCLGNBRnZCLE1BQU07MkZBRVQsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBR1EsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZUNvbm5lY3RDb25maWcsIEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVzb2x2ZUdldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZU1hbnVmYWN0dXJlciB9IGZyb20gJy4vZXNvbHZlLW1hbnVmYWN0dXJlcic7XHJcbmltcG9ydCB7IEVzb2x2ZU1hbnVmYWN0dXJlck9wdGlvbnMgfSBmcm9tICcuL2Vzb2x2ZS1tYW51ZmFjdHVyZXItb3B0aW9ucyc7XHJcbmltcG9ydCB7IEVzb2x2ZU1hbnVmYWN0dXJlclJlY29yZCB9IGZyb20gJy4vZXNvbHZlLW1hbnVmYWN0dXJlci1yZWNvcmQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlTWFudWZhY3R1cmVyc1NlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICkgeyB9XHJcblxyXG4gICAgcHVibGljIGdldE1hbnVmYWN0dXJlcihpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVNYW51ZmFjdHVyZXI+IHtcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XHJcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHsgbWFudWZhY3R1cmVyc19pZDogaWQgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNYW51ZmFjdHVyZXJTaW5nbGUocGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TWFudWZhY3R1cmVyRnJvbVNFRihzZWZfbWFudWZhY3R1cmVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZU1hbnVmYWN0dXJlcj4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcclxuICAgICAgICAgICAgZnJvbU9iamVjdDogeyBzZWZfbWFudWZhY3R1cmVyIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWFudWZhY3R1cmVyU2luZ2xlKHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldE1hbnVmYWN0dXJlcnMob3B0aW9ucz86IEVzb2x2ZU1hbnVmYWN0dXJlck9wdGlvbnMpOiBPYnNlcnZhYmxlPEVzb2x2ZU1hbnVmYWN0dXJlcltdPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zPy5mZWF0dXJlZF9vbmx5KSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2ZlYXR1cmVkX29ubHknLCBvcHRpb25zLmZlYXR1cmVkX29ubHkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWFudWZhY3R1cmVyUmVjb3JkcyhwYXJhbXMpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgocmVjb3JkcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFudWZhY3R1cmVyczogRXNvbHZlTWFudWZhY3R1cmVyW10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFudWZhY3R1cmVycy5wdXNoKHRoaXMucHJvY2Vzc01hbnVmYWN0dXJlcihyZWNvcmQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFudWZhY3R1cmVycztcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mPEVzb2x2ZU1hbnVmYWN0dXJlcltdPihbXSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldE1hbnVmYWN0dXJlclNpbmdsZShwYXJhbXM6IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPEVzb2x2ZU1hbnVmYWN0dXJlcj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1hbnVmYWN0dXJlclJlY29yZHMocGFyYW1zKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHJlY29yZHMpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHNbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc01hbnVmYWN0dXJlcihyZWNvcmQpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRNYW51ZmFjdHVyZXJSZWNvcmRzKFxyXG4gICAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXNcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlTWFudWZhY3R1cmVyUmVjb3JkW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlTWFudWZhY3R1cmVyUmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1tYW51ZmFjdHVyZXJzLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtcyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVjb3JkcztcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzTWFudWZhY3R1cmVyKHJlY29yZDogRXNvbHZlTWFudWZhY3R1cmVyUmVjb3JkKTogRXNvbHZlTWFudWZhY3R1cmVyIHtcclxuICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZU1hbnVmYWN0dXJlcihcclxuICAgICAgICAgICAgK3JlY29yZC5pZCxcclxuICAgICAgICAgICAgcmVjb3JkLm1hbnVmYWN0dXJlcixcclxuICAgICAgICAgICAgcmVjb3JkLnNlZl9tYW51ZmFjdHVyZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC50aXRsZSxcclxuICAgICAgICAgICAgcmVjb3JkLmFydGljbGUsXHJcbiAgICAgICAgICAgICtyZWNvcmQuc29ydF9wcmlvcml0eSxcclxuICAgICAgICAgICAgISErcmVjb3JkLmlzX2FjdGl2ZSxcclxuICAgICAgICAgICAgISErcmVjb3JkLmZlYXR1cmVkLFxyXG4gICAgICAgICAgICByZWNvcmQuaW1hZ2VfbmFtZSxcclxuICAgICAgICAgICAgcmVjb3JkLnNlb19wYWdlX3RpdGxlLFxyXG4gICAgICAgICAgICByZWNvcmQuc2VvX2tleXdvcmRzLFxyXG4gICAgICAgICAgICByZWNvcmQuc2VvX2Rlc2NyaXB0aW9uLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXJhbmdlLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3Jhbmdlcy9lc29sdmUtcmFuZ2Utb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFc29sdmVSYW5nZU9wdGlvbnMge1xyXG4gICAgbWFudWZhY3R1cmVyc19pZD86IG51bWJlcjtcclxuICAgIGZlYXR1cmVkX29ubHk/OiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXJhbmdlLXJlY29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvcmFuZ2VzL2Vzb2x2ZS1yYW5nZS1yZWNvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlUmFuZ2VSZWNvcmQge1xyXG4gICAgaWQ6IG51bWJlcjtcclxuICAgIHJhbmdlOiBzdHJpbmc7XHJcbiAgICBzZWZfcmFuZ2U6IHN0cmluZztcclxuICAgIG1hbnVmYWN0dXJlcnNfaWQ6IG51bWJlcjtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBhcnRpY2xlOiBzdHJpbmc7XHJcbiAgICBpc19hY3RpdmU6IGJvb2xlYW47XHJcbiAgICBmZWF0dXJlZDogYm9vbGVhbjtcclxuICAgIHNvcnRfcHJpb3JpdHk6IG51bWJlcjtcclxuICAgIGltYWdlX25hbWU6IHN0cmluZztcclxuICAgIHNlb19wYWdlX3RpdGxlOiBzdHJpbmc7XHJcbiAgICBzZW9fa2V5d29yZHM6IHN0cmluZztcclxuICAgIHNlb19kZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgc2VvX3BhZ2VfcHJpb3JpdHk6IG51bWJlcjtcclxuICAgIHNlb19wYWdlX3VwZGF0ZV9mcmVxdWVuY3k6IHN0cmluZztcclxufVxyXG4iXX0=