@vendasta/billing 9.3.0 → 9.6.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 (53) hide show
  1. package/esm2020/lib/_internal/enums/fee.enum.mjs +18 -0
  2. package/esm2020/lib/_internal/enums/index.mjs +4 -2
  3. package/esm2020/lib/_internal/enums/merchant.enum.mjs +7 -1
  4. package/esm2020/lib/_internal/enums/report-run.enum.mjs +19 -0
  5. package/esm2020/lib/_internal/interfaces/api.interface.mjs +1 -1
  6. package/esm2020/lib/_internal/interfaces/fee.interface.mjs +8 -0
  7. package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
  8. package/esm2020/lib/_internal/interfaces/invoice.interface.mjs +1 -1
  9. package/esm2020/lib/_internal/interfaces/merchant.interface.mjs +1 -1
  10. package/esm2020/lib/_internal/interfaces/pricing-plan-product.interface.mjs +1 -1
  11. package/esm2020/lib/_internal/interfaces/pricing-plan.interface.mjs +1 -1
  12. package/esm2020/lib/_internal/interfaces/product-pricing.interface.mjs +1 -1
  13. package/esm2020/lib/_internal/interfaces/report-run.interface.mjs +8 -0
  14. package/esm2020/lib/_internal/invoice.api.service.mjs +7 -2
  15. package/esm2020/lib/_internal/merchant.api.service.mjs +12 -2
  16. package/esm2020/lib/_internal/objects/api.mjs +13 -1
  17. package/esm2020/lib/_internal/objects/fee.mjs +40 -0
  18. package/esm2020/lib/_internal/objects/index.mjs +4 -2
  19. package/esm2020/lib/_internal/objects/invoice.mjs +82 -1
  20. package/esm2020/lib/_internal/objects/merchant.mjs +19 -1
  21. package/esm2020/lib/_internal/objects/pricing-plan-product.mjs +49 -1
  22. package/esm2020/lib/_internal/objects/pricing-plan.mjs +8 -1
  23. package/esm2020/lib/_internal/objects/product-pricing.mjs +8 -1
  24. package/esm2020/lib/_internal/objects/report-run.mjs +110 -0
  25. package/fesm2015/vendasta-billing.mjs +515 -138
  26. package/fesm2015/vendasta-billing.mjs.map +1 -1
  27. package/fesm2020/vendasta-billing.mjs +515 -138
  28. package/fesm2020/vendasta-billing.mjs.map +1 -1
  29. package/lib/_internal/enums/fee.enum.d.ts +9 -0
  30. package/lib/_internal/enums/index.d.ts +3 -1
  31. package/lib/_internal/enums/merchant.enum.d.ts +5 -0
  32. package/lib/_internal/enums/report-run.enum.d.ts +10 -0
  33. package/lib/_internal/interfaces/api.interface.d.ts +2 -0
  34. package/lib/_internal/interfaces/fee.interface.d.ts +6 -0
  35. package/lib/_internal/interfaces/index.d.ts +3 -1
  36. package/lib/_internal/interfaces/invoice.interface.d.ts +14 -0
  37. package/lib/_internal/interfaces/merchant.interface.d.ts +3 -0
  38. package/lib/_internal/interfaces/pricing-plan-product.interface.d.ts +8 -0
  39. package/lib/_internal/interfaces/pricing-plan.interface.d.ts +2 -0
  40. package/lib/_internal/interfaces/product-pricing.interface.d.ts +2 -0
  41. package/lib/_internal/interfaces/report-run.interface.d.ts +18 -0
  42. package/lib/_internal/invoice.api.service.d.ts +3 -2
  43. package/lib/_internal/merchant.api.service.d.ts +4 -2
  44. package/lib/_internal/objects/api.d.ts +2 -0
  45. package/lib/_internal/objects/fee.d.ts +11 -0
  46. package/lib/_internal/objects/index.d.ts +3 -1
  47. package/lib/_internal/objects/invoice.d.ts +23 -0
  48. package/lib/_internal/objects/merchant.d.ts +3 -0
  49. package/lib/_internal/objects/pricing-plan-product.d.ts +8 -0
  50. package/lib/_internal/objects/pricing-plan.d.ts +2 -0
  51. package/lib/_internal/objects/product-pricing.d.ts +2 -0
  52. package/lib/_internal/objects/report-run.d.ts +29 -0
  53. package/package.json +1 -1
@@ -5,7 +5,7 @@
5
5
  // API Service.
6
6
  // *********************************
7
7
  import { Injectable } from '@angular/core';
8
- import { ChargeSalesInvoiceRequest, CreateMerchantRequest, CreatePaymentCardRequest, CreateStripeExternalAccountRequest, DeleteBankAccountRequest, GetMerchantRequest, GetMerchantResponse, GetMultiRetailConfigurationsRequest, GetMultiRetailConfigurationsResponse, GetOutstandingBalanceRequest, GetOutstandingBalanceResponse, GetPayoutSummaryRequest, GetPayoutSummaryResponse, GetRetailBalanceRequest, GetRetailBalanceResponse, GetRetailPayoutRequest, GetRetailPayoutResponse, GetStatisticsRequest, GetStatisticsResponse, ListBankAccountsRequest, ListBankAccountsResponse, ListPaymentCardsRequest, ListPaymentCardsResponse, ListRetailPayoutsRequest, ListRetailPayoutsResponse, SearchMerchantsRequest, SearchMerchantsResponse, SendSalesInvoiceEmailRequest, SendSalesInvoiceReceiptEmailRequest, SetAutoChargeInvoicesRequest, SetAutoPostInvoicesRequest, SetDefaultBankAccountRequest, SetDefaultPaymentCardRequest, SetHasAlternativePaymentMethodRequest, SetIncludeInFinancialRecordsRequest, UpdateMerchantRequest, UpdatePaymentCardRequest, UpsertDefaultRetailCustomerConfigurationRequest, UpsertRetailConfigurationRequest, } from './objects/';
8
+ import { ChargeSalesInvoiceRequest, CreateMerchantRequest, CreateMerchantServicesReportRun, CreatePaymentCardRequest, CreateStripeExternalAccountRequest, DeleteBankAccountRequest, GetMerchantRequest, GetMerchantResponse, GetMerchantServicesReportRun, GetMultiRetailConfigurationsRequest, GetMultiRetailConfigurationsResponse, GetOutstandingBalanceRequest, GetOutstandingBalanceResponse, GetPayoutSummaryRequest, GetPayoutSummaryResponse, GetRetailBalanceRequest, GetRetailBalanceResponse, GetRetailPayoutRequest, GetRetailPayoutResponse, GetStatisticsRequest, GetStatisticsResponse, ListBankAccountsRequest, ListBankAccountsResponse, ListPaymentCardsRequest, ListPaymentCardsResponse, ListRetailPayoutsRequest, ListRetailPayoutsResponse, MerchantServicesReportRun, SearchMerchantsRequest, SearchMerchantsResponse, SendSalesInvoiceEmailRequest, SendSalesInvoiceReceiptEmailRequest, SetAutoChargeInvoicesRequest, SetAutoPostInvoicesRequest, SetDefaultBankAccountRequest, SetDefaultPaymentCardRequest, SetHasAlternativePaymentMethodRequest, SetIncludeInFinancialRecordsRequest, UpdateMerchantRequest, UpdatePaymentCardRequest, UpsertDefaultRetailCustomerConfigurationRequest, UpsertRetailConfigurationRequest, } from './objects/';
9
9
  import { HttpHeaders, HttpClient } from '@angular/common/http';
10
10
  import { HostService } from '../_generated/host.service';
11
11
  import { map } from 'rxjs/operators';
@@ -149,6 +149,16 @@ export class MerchantApiService {
149
149
  return this.http.post(this._host + "/billing.v1.MerchantService/GetRetailPayout", request.toApiJson(), this.apiOptions())
150
150
  .pipe(map(resp => GetRetailPayoutResponse.fromProto(resp)));
151
151
  }
152
+ createReportRun(r) {
153
+ const request = (r.toApiJson) ? r : new CreateMerchantServicesReportRun(r);
154
+ return this.http.post(this._host + "/billing.v1.MerchantService/CreateReportRun", request.toApiJson(), this.apiOptions())
155
+ .pipe(map(resp => MerchantServicesReportRun.fromProto(resp)));
156
+ }
157
+ getReportRun(r) {
158
+ const request = (r.toApiJson) ? r : new GetMerchantServicesReportRun(r);
159
+ return this.http.post(this._host + "/billing.v1.MerchantService/GetReportRun", request.toApiJson(), this.apiOptions())
160
+ .pipe(map(resp => MerchantServicesReportRun.fromProto(resp)));
161
+ }
152
162
  }
153
163
  MerchantApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MerchantApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
154
164
  MerchantApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MerchantApiService, providedIn: 'root' });
@@ -156,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
156
166
  type: Injectable,
157
167
  args: [{ providedIn: 'root' }]
158
168
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2hhbnQuYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9iaWxsaW5nX3Nkay9zcmMvbGliL19pbnRlcm5hbC9tZXJjaGFudC5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsZUFBZTtBQUNmLG9DQUFvQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDQyx5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixrQ0FBa0MsRUFDbEMsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsbUNBQW1DLEVBQ25DLG9DQUFvQyxFQUNwQyw0QkFBNEIsRUFDNUIsNkJBQTZCLEVBQzdCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsbUNBQW1DLEVBQ25DLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixxQ0FBcUMsRUFDckMsbUNBQW1DLEVBQ25DLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsK0NBQStDLEVBQy9DLGdDQUFnQyxHQUN2QyxNQUFNLFlBQVksQ0FBQztBQTBDcEIsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1B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LENBQUMsQ0FBQyxDQUFDLENBQTRCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFxQyxJQUFJLENBQUMsS0FBSyxHQUFHLCtDQUErQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDMUosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ1YsQ0FBQztJQUNELGVBQWUsQ0FBQyxDQUEyRDtRQUN2RSxNQUFNLE9BQU8sR0FBRyxDQUEwQixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUEwQixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBbUMsSUFBSSxDQUFDLEtBQUssR0FBRyw2Q0FBNkMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3RKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDdkQsQ0FBQztJQUNWLENBQUM7OytHQS9KUSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUROLE1BQU07MkZBQ2xCLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIEFQSSBTZXJ2aWNlLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICAgICAgQ2hhcmdlU2FsZXNJbnZvaWNlUmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlTWVyY2hhbnRSZXF1ZXN0LFxuICAgICAgICBDcmVhdGVQYXltZW50Q2FyZFJlcXVlc3QsXG4gICAgICAgIENyZWF0ZVN0cmlwZUV4dGVybmFsQWNjb3VudFJlcXVlc3QsXG4gICAgICAgIERlbGV0ZUJhbmtBY2NvdW50UmVxdWVzdCxcbiAgICAgICAgR2V0TWVyY2hhbnRSZXF1ZXN0LFxuICAgICAgICBHZXRNZXJjaGFudFJlc3BvbnNlLFxuICAgICAgICBHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlSZXRhaWxDb25maWd1cmF0aW9uc1Jlc3BvbnNlLFxuICAgICAgICBHZXRPdXRzdGFuZGluZ0JhbGFuY2VSZXF1ZXN0LFxuICAgICAgICBHZXRPdXRzdGFuZGluZ0JhbGFuY2VSZXNwb25zZSxcbiAgICAgICAgR2V0UGF5b3V0U3VtbWFyeVJlcXVlc3QsXG4gICAgICAgIEdldFBheW91dFN1bW1hcnlSZXNwb25zZSxcbiAgICAgICAgR2V0UmV0YWlsQmFsYW5jZVJlcXVlc3QsXG4gICAgICAgIEdldFJldGFpbEJhbGFuY2VSZXNwb25zZSxcbiAgICAgICAgR2V0UmV0YWlsUGF5b3V0UmVxdWVzdCxcbiAgICAgICAgR2V0UmV0YWlsUGF5b3V0UmVzcG9uc2UsXG4gICAgICAgIEdldFN0YXRpc3RpY3NSZXF1ZXN0LFxuICAgICAgICBHZXRTdGF0aXN0aWNzUmVzcG9uc2UsXG4gICAgICAgIExpc3RCYW5rQWNjb3VudHNSZXF1ZXN0LFxuICAgICAgICBMaXN0QmFua0FjY291bnRzUmVzcG9uc2UsXG4gICAgICAgIExpc3RQYXltZW50Q2FyZHNSZXF1ZXN0LFxuICAgICAgICBMaXN0UGF5bWVudENhcmRzUmVzcG9uc2UsXG4gICAgICAgIExpc3RSZXRhaWxQYXlvdXRzUmVxdWVzdCxcbiAgICAgICAgTGlzdFJldGFpbFBheW91dHNSZXNwb25zZSxcbiAgICAgICAgU2VhcmNoTWVyY2hhbnRzUmVxdWVzdCxcbiAgICAgICAgU2VhcmNoTWVyY2hhbnRzUmVzcG9uc2UsXG4gICAgICAgIFNlbmRTYWxlc0ludm9pY2VFbWFpbFJlcXVlc3QsXG4gICAgICAgIFNlbmRTYWxlc0ludm9pY2VSZWNlaXB0RW1haWxSZXF1ZXN0LFxuICAgICAgICBTZXRBdXRvQ2hhcmdlSW52b2ljZXNSZXF1ZXN0LFxuICAgICAgICBTZXRBdXRvUG9zdEludm9pY2VzUmVxdWVzdCxcbiAgICAgICAgU2V0RGVmYXVsdEJhbmtBY2NvdW50UmVxdWVzdCxcbiAgICAgICAgU2V0RGVmYXVsdFBheW1lbnRDYXJkUmVxdWVzdCxcbiAgICAgICAgU2V0SGFzQWx0ZXJuYXRpdmVQYXltZW50TWV0aG9kUmVxdWVzdCxcbiAgICAgICAgU2V0SW5jbHVkZUluRmluYW5jaWFsUmVjb3Jkc1JlcXVlc3QsXG4gICAgICAgIFVwZGF0ZU1lcmNoYW50UmVxdWVzdCxcbiAgICAgICAgVXBkYXRlUGF5bWVudENhcmRSZXF1ZXN0LFxuICAgICAgICBVcHNlcnREZWZhdWx0UmV0YWlsQ3VzdG9tZXJDb25maWd1cmF0aW9uUmVxdWVzdCxcbiAgICAgICAgVXBzZXJ0UmV0YWlsQ29uZmlndXJhdGlvblJlcXVlc3QsXG59IGZyb20gJy4vb2JqZWN0cy8nO1xuaW1wb3J0IHtcbiAgICAgICAgQ2hhcmdlU2FsZXNJbnZvaWNlUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQ3JlYXRlTWVyY2hhbnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVQYXltZW50Q2FyZFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZVN0cmlwZUV4dGVybmFsQWNjb3VudFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIERlbGV0ZUJhbmtBY2NvdW50UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0TWVyY2hhbnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNZXJjaGFudFJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0TXVsdGlSZXRhaWxDb25maWd1cmF0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRPdXRzdGFuZGluZ0JhbGFuY2VSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRPdXRzdGFuZGluZ0JhbGFuY2VSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0UGF5b3V0U3VtbWFyeVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldFBheW91dFN1bW1hcnlSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0UmV0YWlsQmFsYW5jZVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldFJldGFpbEJhbGFuY2VSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0UmV0YWlsUGF5b3V0UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0UmV0YWlsUGF5b3V0UmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldFN0YXRpc3RpY3NSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRTdGF0aXN0aWNzUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIExpc3RCYW5rQWNjb3VudHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0QmFua0FjY291bnRzUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIExpc3RQYXltZW50Q2FyZHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0UGF5bWVudENhcmRzUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIExpc3RSZXRhaWxQYXlvdXRzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgTGlzdFJldGFpbFBheW91dHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgU2VhcmNoTWVyY2hhbnRzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgU2VhcmNoTWVyY2hhbnRzUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIFNlbmRTYWxlc0ludm9pY2VFbWFpbFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFNlbmRTYWxlc0ludm9pY2VSZWNlaXB0RW1haWxSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTZXRBdXRvQ2hhcmdlSW52b2ljZXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTZXRBdXRvUG9zdEludm9pY2VzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgU2V0RGVmYXVsdEJhbmtBY2NvdW50UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgU2V0RGVmYXVsdFBheW1lbnRDYXJkUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgU2V0SGFzQWx0ZXJuYXRpdmVQYXltZW50TWV0aG9kUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgU2V0SW5jbHVkZUluRmluYW5jaWFsUmVjb3Jkc1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFVwZGF0ZU1lcmNoYW50UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlUGF5bWVudENhcmRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBVcHNlcnREZWZhdWx0UmV0YWlsQ3VzdG9tZXJDb25maWd1cmF0aW9uUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgVXBzZXJ0UmV0YWlsQ29uZmlndXJhdGlvblJlcXVlc3RJbnRlcmZhY2UsXG59IGZyb20gJy4vaW50ZXJmYWNlcy8nO1xuaW1wb3J0IHtIdHRwSGVhZGVycywgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0hvc3RTZXJ2aWNlfSBmcm9tICcuLi9fZ2VuZXJhdGVkL2hvc3Quc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTWVyY2hhbnRBcGlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9ob3N0ID0gdGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBob3N0U2VydmljZTogSG9zdFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwaU9wdGlvbnMoKToge2hlYWRlcnM6IEh0dHBIZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW59IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjcmVhdGUocjogQ3JlYXRlTWVyY2hhbnRSZXF1ZXN0IHwgQ3JlYXRlTWVyY2hhbnRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENyZWF0ZU1lcmNoYW50UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVNZXJjaGFudFJlcXVlc3Q+cikgOiBuZXcgQ3JlYXRlTWVyY2hhbnRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0NyZWF0ZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZ2V0KHI6IEdldE1lcmNoYW50UmVxdWVzdCB8IEdldE1lcmNoYW50UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0TWVyY2hhbnRSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TWVyY2hhbnRSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldE1lcmNoYW50UmVxdWVzdD5yKSA6IG5ldyBHZXRNZXJjaGFudFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNZXJjaGFudFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvR2V0XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0TWVyY2hhbnRSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRPdXRzdGFuZGluZ0JhbGFuY2UocjogR2V0T3V0c3RhbmRpbmdCYWxhbmNlUmVxdWVzdCB8IEdldE91dHN0YW5kaW5nQmFsYW5jZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldE91dHN0YW5kaW5nQmFsYW5jZVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRPdXRzdGFuZGluZ0JhbGFuY2VSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldE91dHN0YW5kaW5nQmFsYW5jZVJlcXVlc3Q+cikgOiBuZXcgR2V0T3V0c3RhbmRpbmdCYWxhbmNlUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldE91dHN0YW5kaW5nQmFsYW5jZVJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvR2V0T3V0c3RhbmRpbmdCYWxhbmNlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0T3V0c3RhbmRpbmdCYWxhbmNlUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlKHI6IFVwZGF0ZU1lcmNoYW50UmVxdWVzdCB8IFVwZGF0ZU1lcmNoYW50UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxVcGRhdGVNZXJjaGFudFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VXBkYXRlTWVyY2hhbnRSZXF1ZXN0PnIpIDogbmV3IFVwZGF0ZU1lcmNoYW50UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9VcGRhdGVcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGNyZWF0ZVBheW1lbnRDYXJkKHI6IENyZWF0ZVBheW1lbnRDYXJkUmVxdWVzdCB8IENyZWF0ZVBheW1lbnRDYXJkUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVQYXltZW50Q2FyZFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q3JlYXRlUGF5bWVudENhcmRSZXF1ZXN0PnIpIDogbmV3IENyZWF0ZVBheW1lbnRDYXJkUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9DcmVhdGVQYXltZW50Q2FyZFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgc2V0RGVmYXVsdFBheW1lbnRDYXJkKHI6IFNldERlZmF1bHRQYXltZW50Q2FyZFJlcXVlc3QgfCBTZXREZWZhdWx0UGF5bWVudENhcmRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFNldERlZmF1bHRQYXltZW50Q2FyZFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8U2V0RGVmYXVsdFBheW1lbnRDYXJkUmVxdWVzdD5yKSA6IG5ldyBTZXREZWZhdWx0UGF5bWVudENhcmRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL1NldERlZmF1bHRQYXltZW50Q2FyZFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgbGlzdFBheW1lbnRDYXJkcyhyOiBMaXN0UGF5bWVudENhcmRzUmVxdWVzdCB8IExpc3RQYXltZW50Q2FyZHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0UGF5bWVudENhcmRzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPExpc3RQYXltZW50Q2FyZHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RQYXltZW50Q2FyZHNSZXF1ZXN0PnIpIDogbmV3IExpc3RQYXltZW50Q2FyZHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TGlzdFBheW1lbnRDYXJkc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvTGlzdFBheW1lbnRDYXJkc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RQYXltZW50Q2FyZHNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICB1cGRhdGVQYXltZW50Q2FyZChyOiBVcGRhdGVQYXltZW50Q2FyZFJlcXVlc3QgfCBVcGRhdGVQYXltZW50Q2FyZFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8VXBkYXRlUGF5bWVudENhcmRSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFVwZGF0ZVBheW1lbnRDYXJkUmVxdWVzdD5yKSA6IG5ldyBVcGRhdGVQYXltZW50Q2FyZFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvVXBkYXRlUGF5bWVudENhcmRcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGdldFN0YXRpc3RpY3MocjogR2V0U3RhdGlzdGljc1JlcXVlc3QgfCBHZXRTdGF0aXN0aWNzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0U3RhdGlzdGljc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRTdGF0aXN0aWNzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRTdGF0aXN0aWNzUmVxdWVzdD5yKSA6IG5ldyBHZXRTdGF0aXN0aWNzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldFN0YXRpc3RpY3NSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0dldFN0YXRpc3RpY3NcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRTdGF0aXN0aWNzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgc2VhcmNoKHI6IFNlYXJjaE1lcmNoYW50c1JlcXVlc3QgfCBTZWFyY2hNZXJjaGFudHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxTZWFyY2hNZXJjaGFudHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2VhcmNoTWVyY2hhbnRzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZWFyY2hNZXJjaGFudHNSZXF1ZXN0PnIpIDogbmV3IFNlYXJjaE1lcmNoYW50c1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxTZWFyY2hNZXJjaGFudHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL1NlYXJjaFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IFNlYXJjaE1lcmNoYW50c1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIHNldEF1dG9Qb3N0SW52b2ljZXMocjogU2V0QXV0b1Bvc3RJbnZvaWNlc1JlcXVlc3QgfCBTZXRBdXRvUG9zdEludm9pY2VzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxTZXRBdXRvUG9zdEludm9pY2VzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXRBdXRvUG9zdEludm9pY2VzUmVxdWVzdD5yKSA6IG5ldyBTZXRBdXRvUG9zdEludm9pY2VzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9TZXRBdXRvUG9zdEludm9pY2VzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBzZXRBdXRvQ2hhcmdlSW52b2ljZXMocjogU2V0QXV0b0NoYXJnZUludm9pY2VzUmVxdWVzdCB8IFNldEF1dG9DaGFyZ2VJbnZvaWNlc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2V0QXV0b0NoYXJnZUludm9pY2VzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXRBdXRvQ2hhcmdlSW52b2ljZXNSZXF1ZXN0PnIpIDogbmV3IFNldEF1dG9DaGFyZ2VJbnZvaWNlc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvU2V0QXV0b0NoYXJnZUludm9pY2VzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBzZXRJbmNsdWRlSW5GaW5hbmNpYWxSZWNvcmRzKHI6IFNldEluY2x1ZGVJbkZpbmFuY2lhbFJlY29yZHNSZXF1ZXN0IHwgU2V0SW5jbHVkZUluRmluYW5jaWFsUmVjb3Jkc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2V0SW5jbHVkZUluRmluYW5jaWFsUmVjb3Jkc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8U2V0SW5jbHVkZUluRmluYW5jaWFsUmVjb3Jkc1JlcXVlc3Q+cikgOiBuZXcgU2V0SW5jbHVkZUluRmluYW5jaWFsUmVjb3Jkc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvU2V0SW5jbHVkZUluRmluYW5jaWFsUmVjb3Jkc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgc2V0SGFzQWx0ZXJuYXRpdmVQYXltZW50TWV0aG9kKHI6IFNldEhhc0FsdGVybmF0aXZlUGF5bWVudE1ldGhvZFJlcXVlc3QgfCBTZXRIYXNBbHRlcm5hdGl2ZVBheW1lbnRNZXRob2RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFNldEhhc0FsdGVybmF0aXZlUGF5bWVudE1ldGhvZFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8U2V0SGFzQWx0ZXJuYXRpdmVQYXltZW50TWV0aG9kUmVxdWVzdD5yKSA6IG5ldyBTZXRIYXNBbHRlcm5hdGl2ZVBheW1lbnRNZXRob2RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL1NldEhhc0FsdGVybmF0aXZlUGF5bWVudE1ldGhvZFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgc2VuZFNhbGVzSW52b2ljZUVtYWlsKHI6IFNlbmRTYWxlc0ludm9pY2VFbWFpbFJlcXVlc3QgfCBTZW5kU2FsZXNJbnZvaWNlRW1haWxSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFNlbmRTYWxlc0ludm9pY2VFbWFpbFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8U2VuZFNhbGVzSW52b2ljZUVtYWlsUmVxdWVzdD5yKSA6IG5ldyBTZW5kU2FsZXNJbnZvaWNlRW1haWxSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL1NlbmRTYWxlc0ludm9pY2VFbWFpbFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgY2hhcmdlU2FsZXNJbnZvaWNlKHI6IENoYXJnZVNhbGVzSW52b2ljZVJlcXVlc3QgfCBDaGFyZ2VTYWxlc0ludm9pY2VSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENoYXJnZVNhbGVzSW52b2ljZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q2hhcmdlU2FsZXNJbnZvaWNlUmVxdWVzdD5yKSA6IG5ldyBDaGFyZ2VTYWxlc0ludm9pY2VSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0NoYXJnZVNhbGVzSW52b2ljZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgc2VuZFNhbGVzSW52b2ljZVJlY2VpcHRFbWFpbChyOiBTZW5kU2FsZXNJbnZvaWNlUmVjZWlwdEVtYWlsUmVxdWVzdCB8IFNlbmRTYWxlc0ludm9pY2VSZWNlaXB0RW1haWxSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFNlbmRTYWxlc0ludm9pY2VSZWNlaXB0RW1haWxSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFNlbmRTYWxlc0ludm9pY2VSZWNlaXB0RW1haWxSZXF1ZXN0PnIpIDogbmV3IFNlbmRTYWxlc0ludm9pY2VSZWNlaXB0RW1haWxSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL1NlbmRTYWxlc0ludm9pY2VSZWNlaXB0RW1haWxcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGNyZWF0ZVN0cmlwZUV4dGVybmFsQWNjb3VudChyOiBDcmVhdGVTdHJpcGVFeHRlcm5hbEFjY291bnRSZXF1ZXN0IHwgQ3JlYXRlU3RyaXBlRXh0ZXJuYWxBY2NvdW50UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVTdHJpcGVFeHRlcm5hbEFjY291bnRSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZVN0cmlwZUV4dGVybmFsQWNjb3VudFJlcXVlc3Q+cikgOiBuZXcgQ3JlYXRlU3RyaXBlRXh0ZXJuYWxBY2NvdW50UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9DcmVhdGVTdHJpcGVFeHRlcm5hbEFjY291bnRcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGxpc3RCYW5rQWNjb3VudHMocjogTGlzdEJhbmtBY2NvdW50c1JlcXVlc3QgfCBMaXN0QmFua0FjY291bnRzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdEJhbmtBY2NvdW50c1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxMaXN0QmFua0FjY291bnRzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxMaXN0QmFua0FjY291bnRzUmVxdWVzdD5yKSA6IG5ldyBMaXN0QmFua0FjY291bnRzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PExpc3RCYW5rQWNjb3VudHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0xpc3RCYW5rQWNjb3VudHNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0QmFua0FjY291bnRzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgc2V0RGVmYXVsdEJhbmtBY2NvdW50KHI6IFNldERlZmF1bHRCYW5rQWNjb3VudFJlcXVlc3QgfCBTZXREZWZhdWx0QmFua0FjY291bnRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFNldERlZmF1bHRCYW5rQWNjb3VudFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8U2V0RGVmYXVsdEJhbmtBY2NvdW50UmVxdWVzdD5yKSA6IG5ldyBTZXREZWZhdWx0QmFua0FjY291bnRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL1NldERlZmF1bHRCYW5rQWNjb3VudFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZGVsZXRlQmFua0FjY291bnQocjogRGVsZXRlQmFua0FjY291bnRSZXF1ZXN0IHwgRGVsZXRlQmFua0FjY291bnRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPERlbGV0ZUJhbmtBY2NvdW50UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxEZWxldGVCYW5rQWNjb3VudFJlcXVlc3Q+cikgOiBuZXcgRGVsZXRlQmFua0FjY291bnRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0RlbGV0ZUJhbmtBY2NvdW50XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBnZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zKHI6IEdldE11bHRpUmV0YWlsQ29uZmlndXJhdGlvbnNSZXF1ZXN0IHwgR2V0TXVsdGlSZXRhaWxDb25maWd1cmF0aW9uc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldE11bHRpUmV0YWlsQ29uZmlndXJhdGlvbnNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlSZXRhaWxDb25maWd1cmF0aW9uc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0TXVsdGlSZXRhaWxDb25maWd1cmF0aW9uc1JlcXVlc3Q+cikgOiBuZXcgR2V0TXVsdGlSZXRhaWxDb25maWd1cmF0aW9uc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9HZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0TXVsdGlSZXRhaWxDb25maWd1cmF0aW9uc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIHVwc2VydFJldGFpbENvbmZpZ3VyYXRpb24ocjogVXBzZXJ0UmV0YWlsQ29uZmlndXJhdGlvblJlcXVlc3QgfCBVcHNlcnRSZXRhaWxDb25maWd1cmF0aW9uUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxVcHNlcnRSZXRhaWxDb25maWd1cmF0aW9uUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxVcHNlcnRSZXRhaWxDb25maWd1cmF0aW9uUmVxdWVzdD5yKSA6IG5ldyBVcHNlcnRSZXRhaWxDb25maWd1cmF0aW9uUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9VcHNlcnRSZXRhaWxDb25maWd1cmF0aW9uXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICB1cHNlcnREZWZhdWx0UmV0YWlsQ3VzdG9tZXJDb25maWd1cmF0aW9uKHI6IFVwc2VydERlZmF1bHRSZXRhaWxDdXN0b21lckNvbmZpZ3VyYXRpb25SZXF1ZXN0IHwgVXBzZXJ0RGVmYXVsdFJldGFpbEN1c3RvbWVyQ29uZmlndXJhdGlvblJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8VXBzZXJ0RGVmYXVsdFJldGFpbEN1c3RvbWVyQ29uZmlndXJhdGlvblJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VXBzZXJ0RGVmYXVsdFJldGFpbEN1c3RvbWVyQ29uZmlndXJhdGlvblJlcXVlc3Q+cikgOiBuZXcgVXBzZXJ0RGVmYXVsdFJldGFpbEN1c3RvbWVyQ29uZmlndXJhdGlvblJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvVXBzZXJ0RGVmYXVsdFJldGFpbEN1c3RvbWVyQ29uZmlndXJhdGlvblwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZ2V0UmV0YWlsQmFsYW5jZShyOiBHZXRSZXRhaWxCYWxhbmNlUmVxdWVzdCB8IEdldFJldGFpbEJhbGFuY2VSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRSZXRhaWxCYWxhbmNlUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldFJldGFpbEJhbGFuY2VSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldFJldGFpbEJhbGFuY2VSZXF1ZXN0PnIpIDogbmV3IEdldFJldGFpbEJhbGFuY2VSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0UmV0YWlsQmFsYW5jZVJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvR2V0UmV0YWlsQmFsYW5jZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldFJldGFpbEJhbGFuY2VSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRQYXlvdXRTdW1tYXJ5KHI6IEdldFBheW91dFN1bW1hcnlSZXF1ZXN0IHwgR2V0UGF5b3V0U3VtbWFyeVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldFBheW91dFN1bW1hcnlSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0UGF5b3V0U3VtbWFyeVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0UGF5b3V0U3VtbWFyeVJlcXVlc3Q+cikgOiBuZXcgR2V0UGF5b3V0U3VtbWFyeVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRQYXlvdXRTdW1tYXJ5UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9HZXRQYXlvdXRTdW1tYXJ5XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0UGF5b3V0U3VtbWFyeVJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGxpc3RSZXRhaWxQYXlvdXRzKHI6IExpc3RSZXRhaWxQYXlvdXRzUmVxdWVzdCB8IExpc3RSZXRhaWxQYXlvdXRzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdFJldGFpbFBheW91dHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdFJldGFpbFBheW91dHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RSZXRhaWxQYXlvdXRzUmVxdWVzdD5yKSA6IG5ldyBMaXN0UmV0YWlsUGF5b3V0c1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0UmV0YWlsUGF5b3V0c1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvTGlzdFJldGFpbFBheW91dHNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0UmV0YWlsUGF5b3V0c1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldFJldGFpbFBheW91dChyOiBHZXRSZXRhaWxQYXlvdXRSZXF1ZXN0IHwgR2V0UmV0YWlsUGF5b3V0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0UmV0YWlsUGF5b3V0UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldFJldGFpbFBheW91dFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0UmV0YWlsUGF5b3V0UmVxdWVzdD5yKSA6IG5ldyBHZXRSZXRhaWxQYXlvdXRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0UmV0YWlsUGF5b3V0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9HZXRSZXRhaWxQYXlvdXRcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRSZXRhaWxQYXlvdXRSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBcbn1cbiJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2hhbnQuYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9iaWxsaW5nX3Nkay9zcmMvbGliL19pbnRlcm5hbC9tZXJjaGFudC5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsZUFBZTtBQUNmLG9DQUFvQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDQyx5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLCtCQUErQixFQUMvQix3QkFBd0IsRUFDeEIsa0NBQWtDLEVBQ2xDLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsb0NBQW9DLEVBQ3BDLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsbUNBQW1DLEVBQ25DLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixxQ0FBcUMsRUFDckMsbUNBQW1DLEVBQ25DLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsK0NBQStDLEVBQy9DLGdDQUFnQyxHQUN2QyxNQUFNLFlBQVksQ0FBQztBQTZDcEIsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBR25DLE1BQU0sT0FBTyxrQkFBa0I7SUFHM0IsWUFBb0IsSUFBZ0IsRUFBVSxXQUF3QjtRQUFsRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFGOUQsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0lBR2hELENBQUM7SUFFTyxVQUFVO1FBQ2QsT0FBTztZQUNILE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsY0FBYyxFQUFFLGtCQUFrQjthQUNyQyxDQUFDO1lBQ0YsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMsQ0FBeUQ7UUFDNUQsTUFBTSxPQUFPLEdBQUcsQ0FBeUIsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBeUIsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxvQ0FBb0MsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztJQUNySixDQUFDO0lBQ0QsR0FBRyxDQUFDLENBQW1EO1FBQ25ELE1BQU0sT0FBTyxHQUFHLENBQXNCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXNCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUErQixJQUFJLENBQUMsS0FBSyxHQUFHLGlDQUFpQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDdEksSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNuRCxDQUFDO0lBQ1YsQ0FBQztJQUNELHFCQUFxQixDQUFDLENBQXVFO1FBQ3pGLE1BQU0sT0FBTyxHQUFHLENBQWdDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQWdDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4SSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUF5QyxJQUFJLENBQUMsS0FBSyxHQUFHLG1EQUFtRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbEssSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM3RCxDQUFDO0lBQ1YsQ0FBQztJQUNELE1BQU0sQ0FBQyxDQUF5RDtRQUM1RCxNQUFNLE9BQU8sR0FBRyxDQUF5QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUF5QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUkscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLG9DQUFvQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3JKLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxDQUErRDtRQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUE0QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLCtDQUErQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ2hLLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxDQUF1RTtRQUN6RixNQUFNLE9BQU8sR0FBRyxDQUFnQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFnQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLG1EQUFtRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3BLLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxDQUE2RDtRQUMxRSxNQUFNLE9BQU8sR0FBRyxDQUEyQixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUEyQixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBb0MsSUFBSSxDQUFDLEtBQUssR0FBRyw4Q0FBOEMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3hKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDeEQsQ0FBQztJQUNWLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxDQUErRDtRQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUE0QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLCtDQUErQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ2hLLENBQUM7SUFDRCxhQUFhLENBQUMsQ0FBdUQ7UUFDakUsTUFBTSxPQUFPLEdBQUcsQ0FBd0IsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBd0IsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWlDLElBQUksQ0FBQyxLQUFLLEdBQUcsMkNBQTJDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNsSixJQUFJLENBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3JELENBQUM7SUFDVixDQUFDO0lBQ0QsTUFBTSxDQUFDLENBQTJEO1FBQzlELE1BQU0sT0FBTyxHQUFHLENBQTBCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTBCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFtQyxJQUFJLENBQUMsS0FBSyxHQUFHLG9DQUFvQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDN0ksSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN2RCxDQUFDO0lBQ1YsQ0FBQztJQUNELG1CQUFtQixDQUFDLENBQW1FO1FBQ25GLE1BQU0sT0FBTyxHQUFHLENBQThCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQThCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsaURBQWlELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDbEssQ0FBQztJQUNELHFCQUFxQixDQUFDLENBQXVFO1FBQ3pGLE1BQU0sT0FBTyxHQUFHLENBQWdDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQWdDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4SSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsbURBQW1ELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDcEssQ0FBQztJQUNELDRCQUE0QixDQUFDLENBQXFGO1FBQzlHLE1BQU0sT0FBTyxHQUFHLENBQXVDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXVDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3SixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsMERBQTBELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDM0ssQ0FBQztJQUNELDhCQUE4QixDQUFDLENBQXlGO1FBQ3BILE1BQU0sT0FBTyxHQUFHLENBQXlDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXlDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsNERBQTRELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDN0ssQ0FBQztJQUNELHFCQUFxQixDQUFDLENBQXVFO1FBQ3pGLE1BQU0sT0FBTyxHQUFHLENBQWdDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQWdDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4SSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsbURBQW1ELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDcEssQ0FBQztJQUNELGtCQUFrQixDQUFDLENBQWlFO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLENBQTZCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTZCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0RBQWdELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDakssQ0FBQztJQUNELDRCQUE0QixDQUFDLENBQXFGO1FBQzlHLE1BQU0sT0FBTyxHQUFHLENBQXVDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXVDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3SixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsMERBQTBELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDM0ssQ0FBQztJQUNELDJCQUEyQixDQUFDLENBQW1GO1FBQzNHLE1BQU0sT0FBTyxHQUFHLENBQXNDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXNDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxrQ0FBa0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcseURBQXlELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDMUssQ0FBQztJQUNELGdCQUFnQixDQUFDLENBQTZEO1FBQzFFLE1BQU0sT0FBTyxHQUFHLENBQTJCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFvQyxJQUFJLENBQUMsS0FBSyxHQUFHLDhDQUE4QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDeEosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN4RCxDQUFDO0lBQ1YsQ0FBQztJQUNELHFCQUFxQixDQUFDLENBQXVFO1FBQ3pGLE1BQU0sT0FBTyxHQUFHLENBQWdDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQWdDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4SSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsbURBQW1ELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDcEssQ0FBQztJQUNELGlCQUFpQixDQUFDLENBQStEO1FBQzdFLE1BQU0sT0FBTyxHQUFHLENBQTRCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTRCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsK0NBQStDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDaEssQ0FBQztJQUNELDRCQUE0QixDQUFDLENBQXFGO1FBQzlHLE1BQU0sT0FBTyxHQUFHLENBQXVDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXVDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3SixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFnRCxJQUFJLENBQUMsS0FBSyxHQUFHLDBEQUEwRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDaEwsSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLG9DQUFvQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNwRSxDQUFDO0lBQ1YsQ0FBQztJQUNELHlCQUF5QixDQUFDLENBQStFO1FBQ3JHLE1BQU0sT0FBTyxHQUFHLENBQW9DLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQW9DLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsdURBQXVELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDeEssQ0FBQztJQUNELHdDQUF3QyxDQUFDLENBQTZHO1FBQ2xKLE1BQU0sT0FBTyxHQUFHLENBQW1ELENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQW1ELENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSwrQ0FBK0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqTSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsc0VBQXNFLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDdkwsQ0FBQztJQUNELGdCQUFnQixDQUFDLENBQTZEO1FBQzFFLE1BQU0sT0FBTyxHQUFHLENBQTJCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFvQyxJQUFJLENBQUMsS0FBSyxHQUFHLDhDQUE4QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDeEosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN4RCxDQUFDO0lBQ1YsQ0FBQztJQUNELGdCQUFnQixDQUFDLENBQTZEO1FBQzFFLE1BQU0sT0FBTyxHQUFHLENBQTJCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFvQyxJQUFJLENBQUMsS0FBSyxHQUFHLDhDQUE4QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDeEosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN4RCxDQUFDO0lBQ1YsQ0FBQztJQUNELGlCQUFpQixDQUFDLENBQStEO1FBQzdFLE1BQU0sT0FBTyxHQUFHLENBQTRCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTRCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFxQyxJQUFJLENBQUMsS0FBSyxHQUFHLCtDQUErQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDMUosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ1YsQ0FBQztJQUNELGVBQWUsQ0FBQyxDQUEyRDtRQUN2RSxNQUFNLE9BQU8sR0FBRyxDQUEwQixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUEwQixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBbUMsSUFBSSxDQUFDLEtBQUssR0FBRyw2Q0FBNkMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3RKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDdkQsQ0FBQztJQUNWLENBQUM7SUFDRCxlQUFlLENBQUMsQ0FBNkU7UUFDekYsTUFBTSxPQUFPLEdBQUcsQ0FBbUMsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBbUMsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLCtCQUErQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQXFDLElBQUksQ0FBQyxLQUFLLEdBQUcsNkNBQTZDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUN4SixJQUFJLENBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3pELENBQUM7SUFDVixDQUFDO0lBQ0QsWUFBWSxDQUFDLENBQXVFO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLENBQWdDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQWdDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4SSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFxQyxJQUFJLENBQUMsS0FBSyxHQUFHLDBDQUEwQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDckosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ1YsQ0FBQzs7K0dBN0tRLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRE4sTUFBTTsyRkFDbEIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gQVBJIFNlcnZpY2UuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgICAgICBDaGFyZ2VTYWxlc0ludm9pY2VSZXF1ZXN0LFxuICAgICAgICBDcmVhdGVNZXJjaGFudFJlcXVlc3QsXG4gICAgICAgIENyZWF0ZU1lcmNoYW50U2VydmljZXNSZXBvcnRSdW4sXG4gICAgICAgIENyZWF0ZVBheW1lbnRDYXJkUmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlU3RyaXBlRXh0ZXJuYWxBY2NvdW50UmVxdWVzdCxcbiAgICAgICAgRGVsZXRlQmFua0FjY291bnRSZXF1ZXN0LFxuICAgICAgICBHZXRNZXJjaGFudFJlcXVlc3QsXG4gICAgICAgIEdldE1lcmNoYW50UmVzcG9uc2UsXG4gICAgICAgIEdldE1lcmNoYW50U2VydmljZXNSZXBvcnRSdW4sXG4gICAgICAgIEdldE11bHRpUmV0YWlsQ29uZmlndXJhdGlvbnNSZXF1ZXN0LFxuICAgICAgICBHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVzcG9uc2UsXG4gICAgICAgIEdldE91dHN0YW5kaW5nQmFsYW5jZVJlcXVlc3QsXG4gICAgICAgIEdldE91dHN0YW5kaW5nQmFsYW5jZVJlc3BvbnNlLFxuICAgICAgICBHZXRQYXlvdXRTdW1tYXJ5UmVxdWVzdCxcbiAgICAgICAgR2V0UGF5b3V0U3VtbWFyeVJlc3BvbnNlLFxuICAgICAgICBHZXRSZXRhaWxCYWxhbmNlUmVxdWVzdCxcbiAgICAgICAgR2V0UmV0YWlsQmFsYW5jZVJlc3BvbnNlLFxuICAgICAgICBHZXRSZXRhaWxQYXlvdXRSZXF1ZXN0LFxuICAgICAgICBHZXRSZXRhaWxQYXlvdXRSZXNwb25zZSxcbiAgICAgICAgR2V0U3RhdGlzdGljc1JlcXVlc3QsXG4gICAgICAgIEdldFN0YXRpc3RpY3NSZXNwb25zZSxcbiAgICAgICAgTGlzdEJhbmtBY2NvdW50c1JlcXVlc3QsXG4gICAgICAgIExpc3RCYW5rQWNjb3VudHNSZXNwb25zZSxcbiAgICAgICAgTGlzdFBheW1lbnRDYXJkc1JlcXVlc3QsXG4gICAgICAgIExpc3RQYXltZW50Q2FyZHNSZXNwb25zZSxcbiAgICAgICAgTGlzdFJldGFpbFBheW91dHNSZXF1ZXN0LFxuICAgICAgICBMaXN0UmV0YWlsUGF5b3V0c1Jlc3BvbnNlLFxuICAgICAgICBNZXJjaGFudFNlcnZpY2VzUmVwb3J0UnVuLFxuICAgICAgICBTZWFyY2hNZXJjaGFudHNSZXF1ZXN0LFxuICAgICAgICBTZWFyY2hNZXJjaGFudHNSZXNwb25zZSxcbiAgICAgICAgU2VuZFNhbGVzSW52b2ljZUVtYWlsUmVxdWVzdCxcbiAgICAgICAgU2VuZFNhbGVzSW52b2ljZVJlY2VpcHRFbWFpbFJlcXVlc3QsXG4gICAgICAgIFNldEF1dG9DaGFyZ2VJbnZvaWNlc1JlcXVlc3QsXG4gICAgICAgIFNldEF1dG9Qb3N0SW52b2ljZXNSZXF1ZXN0LFxuICAgICAgICBTZXREZWZhdWx0QmFua0FjY291bnRSZXF1ZXN0LFxuICAgICAgICBTZXREZWZhdWx0UGF5bWVudENhcmRSZXF1ZXN0LFxuICAgICAgICBTZXRIYXNBbHRlcm5hdGl2ZVBheW1lbnRNZXRob2RSZXF1ZXN0LFxuICAgICAgICBTZXRJbmNsdWRlSW5GaW5hbmNpYWxSZWNvcmRzUmVxdWVzdCxcbiAgICAgICAgVXBkYXRlTWVyY2hhbnRSZXF1ZXN0LFxuICAgICAgICBVcGRhdGVQYXltZW50Q2FyZFJlcXVlc3QsXG4gICAgICAgIFVwc2VydERlZmF1bHRSZXRhaWxDdXN0b21lckNvbmZpZ3VyYXRpb25SZXF1ZXN0LFxuICAgICAgICBVcHNlcnRSZXRhaWxDb25maWd1cmF0aW9uUmVxdWVzdCxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBDaGFyZ2VTYWxlc0ludm9pY2VSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVNZXJjaGFudFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZU1lcmNoYW50U2VydmljZXNSZXBvcnRSdW5JbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZVBheW1lbnRDYXJkUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQ3JlYXRlU3RyaXBlRXh0ZXJuYWxBY2NvdW50UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgRGVsZXRlQmFua0FjY291bnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNZXJjaGFudFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldE1lcmNoYW50UmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldE1lcmNoYW50U2VydmljZXNSZXBvcnRSdW5JbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUmV0YWlsQ29uZmlndXJhdGlvbnNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldE91dHN0YW5kaW5nQmFsYW5jZVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldE91dHN0YW5kaW5nQmFsYW5jZVJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRQYXlvdXRTdW1tYXJ5UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0UGF5b3V0U3VtbWFyeVJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRSZXRhaWxCYWxhbmNlUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0UmV0YWlsQmFsYW5jZVJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRSZXRhaWxQYXlvdXRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRSZXRhaWxQYXlvdXRSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0U3RhdGlzdGljc1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldFN0YXRpc3RpY3NSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdEJhbmtBY2NvdW50c1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIExpc3RCYW5rQWNjb3VudHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFBheW1lbnRDYXJkc1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIExpc3RQYXltZW50Q2FyZHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFJldGFpbFBheW91dHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0UmV0YWlsUGF5b3V0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBNZXJjaGFudFNlcnZpY2VzUmVwb3J0UnVuSW50ZXJmYWNlLFxuICAgICAgICBTZWFyY2hNZXJjaGFudHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTZWFyY2hNZXJjaGFudHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgU2VuZFNhbGVzSW52b2ljZUVtYWlsUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgU2VuZFNhbGVzSW52b2ljZVJlY2VpcHRFbWFpbFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFNldEF1dG9DaGFyZ2VJbnZvaWNlc1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFNldEF1dG9Qb3N0SW52b2ljZXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTZXREZWZhdWx0QmFua0FjY291bnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTZXREZWZhdWx0UGF5bWVudENhcmRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTZXRIYXNBbHRlcm5hdGl2ZVBheW1lbnRNZXRob2RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTZXRJbmNsdWRlSW5GaW5hbmNpYWxSZWNvcmRzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlTWVyY2hhbnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBVcGRhdGVQYXltZW50Q2FyZFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFVwc2VydERlZmF1bHRSZXRhaWxDdXN0b21lckNvbmZpZ3VyYXRpb25SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBVcHNlcnRSZXRhaWxDb25maWd1cmF0aW9uUmVxdWVzdEludGVyZmFjZSxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzLyc7XG5pbXBvcnQge0h0dHBIZWFkZXJzLCBIdHRwQ2xpZW50LCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SG9zdFNlcnZpY2V9IGZyb20gJy4uL19nZW5lcmF0ZWQvaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBNZXJjaGFudEFwaVNlcnZpY2Uge1xuICAgIHByaXZhdGUgX2hvc3QgPSB0aGlzLmhvc3RTZXJ2aWNlLmhvc3RXaXRoU2NoZW1lO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGhvc3RTZXJ2aWNlOiBIb3N0U2VydmljZSkge1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBpT3B0aW9ucygpOiB7aGVhZGVyczogSHR0cEhlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbn0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNyZWF0ZShyOiBDcmVhdGVNZXJjaGFudFJlcXVlc3QgfCBDcmVhdGVNZXJjaGFudFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q3JlYXRlTWVyY2hhbnRSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZU1lcmNoYW50UmVxdWVzdD5yKSA6IG5ldyBDcmVhdGVNZXJjaGFudFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvQ3JlYXRlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBnZXQocjogR2V0TWVyY2hhbnRSZXF1ZXN0IHwgR2V0TWVyY2hhbnRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNZXJjaGFudFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRNZXJjaGFudFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0TWVyY2hhbnRSZXF1ZXN0PnIpIDogbmV3IEdldE1lcmNoYW50UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldE1lcmNoYW50UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9HZXRcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNZXJjaGFudFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldE91dHN0YW5kaW5nQmFsYW5jZShyOiBHZXRPdXRzdGFuZGluZ0JhbGFuY2VSZXF1ZXN0IHwgR2V0T3V0c3RhbmRpbmdCYWxhbmNlUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0T3V0c3RhbmRpbmdCYWxhbmNlUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE91dHN0YW5kaW5nQmFsYW5jZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0T3V0c3RhbmRpbmdCYWxhbmNlUmVxdWVzdD5yKSA6IG5ldyBHZXRPdXRzdGFuZGluZ0JhbGFuY2VSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0T3V0c3RhbmRpbmdCYWxhbmNlUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9HZXRPdXRzdGFuZGluZ0JhbGFuY2VcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRPdXRzdGFuZGluZ0JhbGFuY2VSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICB1cGRhdGUocjogVXBkYXRlTWVyY2hhbnRSZXF1ZXN0IHwgVXBkYXRlTWVyY2hhbnRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZU1lcmNoYW50UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxVcGRhdGVNZXJjaGFudFJlcXVlc3Q+cikgOiBuZXcgVXBkYXRlTWVyY2hhbnRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL1VwZGF0ZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgY3JlYXRlUGF5bWVudENhcmQocjogQ3JlYXRlUGF5bWVudENhcmRSZXF1ZXN0IHwgQ3JlYXRlUGF5bWVudENhcmRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENyZWF0ZVBheW1lbnRDYXJkUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVQYXltZW50Q2FyZFJlcXVlc3Q+cikgOiBuZXcgQ3JlYXRlUGF5bWVudENhcmRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0NyZWF0ZVBheW1lbnRDYXJkXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBzZXREZWZhdWx0UGF5bWVudENhcmQocjogU2V0RGVmYXVsdFBheW1lbnRDYXJkUmVxdWVzdCB8IFNldERlZmF1bHRQYXltZW50Q2FyZFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2V0RGVmYXVsdFBheW1lbnRDYXJkUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXREZWZhdWx0UGF5bWVudENhcmRSZXF1ZXN0PnIpIDogbmV3IFNldERlZmF1bHRQYXltZW50Q2FyZFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvU2V0RGVmYXVsdFBheW1lbnRDYXJkXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBsaXN0UGF5bWVudENhcmRzKHI6IExpc3RQYXltZW50Q2FyZHNSZXF1ZXN0IHwgTGlzdFBheW1lbnRDYXJkc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPExpc3RQYXltZW50Q2FyZHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdFBheW1lbnRDYXJkc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdFBheW1lbnRDYXJkc1JlcXVlc3Q+cikgOiBuZXcgTGlzdFBheW1lbnRDYXJkc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0UGF5bWVudENhcmRzUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9MaXN0UGF5bWVudENhcmRzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTGlzdFBheW1lbnRDYXJkc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIHVwZGF0ZVBheW1lbnRDYXJkKHI6IFVwZGF0ZVBheW1lbnRDYXJkUmVxdWVzdCB8IFVwZGF0ZVBheW1lbnRDYXJkUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxVcGRhdGVQYXltZW50Q2FyZFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VXBkYXRlUGF5bWVudENhcmRSZXF1ZXN0PnIpIDogbmV3IFVwZGF0ZVBheW1lbnRDYXJkUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9VcGRhdGVQYXltZW50Q2FyZFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZ2V0U3RhdGlzdGljcyhyOiBHZXRTdGF0aXN0aWNzUmVxdWVzdCB8IEdldFN0YXRpc3RpY3NSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRTdGF0aXN0aWNzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldFN0YXRpc3RpY3NSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldFN0YXRpc3RpY3NSZXF1ZXN0PnIpIDogbmV3IEdldFN0YXRpc3RpY3NSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0U3RhdGlzdGljc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvR2V0U3RhdGlzdGljc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldFN0YXRpc3RpY3NSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBzZWFyY2gocjogU2VhcmNoTWVyY2hhbnRzUmVxdWVzdCB8IFNlYXJjaE1lcmNoYW50c1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPFNlYXJjaE1lcmNoYW50c1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxTZWFyY2hNZXJjaGFudHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFNlYXJjaE1lcmNoYW50c1JlcXVlc3Q+cikgOiBuZXcgU2VhcmNoTWVyY2hhbnRzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFNlYXJjaE1lcmNoYW50c1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvU2VhcmNoXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gU2VhcmNoTWVyY2hhbnRzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgc2V0QXV0b1Bvc3RJbnZvaWNlcyhyOiBTZXRBdXRvUG9zdEludm9pY2VzUmVxdWVzdCB8IFNldEF1dG9Qb3N0SW52b2ljZXNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFNldEF1dG9Qb3N0SW52b2ljZXNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFNldEF1dG9Qb3N0SW52b2ljZXNSZXF1ZXN0PnIpIDogbmV3IFNldEF1dG9Qb3N0SW52b2ljZXNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL1NldEF1dG9Qb3N0SW52b2ljZXNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIHNldEF1dG9DaGFyZ2VJbnZvaWNlcyhyOiBTZXRBdXRvQ2hhcmdlSW52b2ljZXNSZXF1ZXN0IHwgU2V0QXV0b0NoYXJnZUludm9pY2VzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxTZXRBdXRvQ2hhcmdlSW52b2ljZXNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFNldEF1dG9DaGFyZ2VJbnZvaWNlc1JlcXVlc3Q+cikgOiBuZXcgU2V0QXV0b0NoYXJnZUludm9pY2VzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9TZXRBdXRvQ2hhcmdlSW52b2ljZXNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIHNldEluY2x1ZGVJbkZpbmFuY2lhbFJlY29yZHMocjogU2V0SW5jbHVkZUluRmluYW5jaWFsUmVjb3Jkc1JlcXVlc3QgfCBTZXRJbmNsdWRlSW5GaW5hbmNpYWxSZWNvcmRzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxTZXRJbmNsdWRlSW5GaW5hbmNpYWxSZWNvcmRzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXRJbmNsdWRlSW5GaW5hbmNpYWxSZWNvcmRzUmVxdWVzdD5yKSA6IG5ldyBTZXRJbmNsdWRlSW5GaW5hbmNpYWxSZWNvcmRzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9TZXRJbmNsdWRlSW5GaW5hbmNpYWxSZWNvcmRzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBzZXRIYXNBbHRlcm5hdGl2ZVBheW1lbnRNZXRob2QocjogU2V0SGFzQWx0ZXJuYXRpdmVQYXltZW50TWV0aG9kUmVxdWVzdCB8IFNldEhhc0FsdGVybmF0aXZlUGF5bWVudE1ldGhvZFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2V0SGFzQWx0ZXJuYXRpdmVQYXltZW50TWV0aG9kUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXRIYXNBbHRlcm5hdGl2ZVBheW1lbnRNZXRob2RSZXF1ZXN0PnIpIDogbmV3IFNldEhhc0FsdGVybmF0aXZlUGF5bWVudE1ldGhvZFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvU2V0SGFzQWx0ZXJuYXRpdmVQYXltZW50TWV0aG9kXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBzZW5kU2FsZXNJbnZvaWNlRW1haWwocjogU2VuZFNhbGVzSW52b2ljZUVtYWlsUmVxdWVzdCB8IFNlbmRTYWxlc0ludm9pY2VFbWFpbFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2VuZFNhbGVzSW52b2ljZUVtYWlsUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZW5kU2FsZXNJbnZvaWNlRW1haWxSZXF1ZXN0PnIpIDogbmV3IFNlbmRTYWxlc0ludm9pY2VFbWFpbFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvU2VuZFNhbGVzSW52b2ljZUVtYWlsXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBjaGFyZ2VTYWxlc0ludm9pY2UocjogQ2hhcmdlU2FsZXNJbnZvaWNlUmVxdWVzdCB8IENoYXJnZVNhbGVzSW52b2ljZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q2hhcmdlU2FsZXNJbnZvaWNlUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDaGFyZ2VTYWxlc0ludm9pY2VSZXF1ZXN0PnIpIDogbmV3IENoYXJnZVNhbGVzSW52b2ljZVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvQ2hhcmdlU2FsZXNJbnZvaWNlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBzZW5kU2FsZXNJbnZvaWNlUmVjZWlwdEVtYWlsKHI6IFNlbmRTYWxlc0ludm9pY2VSZWNlaXB0RW1haWxSZXF1ZXN0IHwgU2VuZFNhbGVzSW52b2ljZVJlY2VpcHRFbWFpbFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2VuZFNhbGVzSW52b2ljZVJlY2VpcHRFbWFpbFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8U2VuZFNhbGVzSW52b2ljZVJlY2VpcHRFbWFpbFJlcXVlc3Q+cikgOiBuZXcgU2VuZFNhbGVzSW52b2ljZVJlY2VpcHRFbWFpbFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvU2VuZFNhbGVzSW52b2ljZVJlY2VpcHRFbWFpbFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgY3JlYXRlU3RyaXBlRXh0ZXJuYWxBY2NvdW50KHI6IENyZWF0ZVN0cmlwZUV4dGVybmFsQWNjb3VudFJlcXVlc3QgfCBDcmVhdGVTdHJpcGVFeHRlcm5hbEFjY291bnRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENyZWF0ZVN0cmlwZUV4dGVybmFsQWNjb3VudFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q3JlYXRlU3RyaXBlRXh0ZXJuYWxBY2NvdW50UmVxdWVzdD5yKSA6IG5ldyBDcmVhdGVTdHJpcGVFeHRlcm5hbEFjY291bnRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0NyZWF0ZVN0cmlwZUV4dGVybmFsQWNjb3VudFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgbGlzdEJhbmtBY2NvdW50cyhyOiBMaXN0QmFua0FjY291bnRzUmVxdWVzdCB8IExpc3RCYW5rQWNjb3VudHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0QmFua0FjY291bnRzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPExpc3RCYW5rQWNjb3VudHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RCYW5rQWNjb3VudHNSZXF1ZXN0PnIpIDogbmV3IExpc3RCYW5rQWNjb3VudHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TGlzdEJhbmtBY2NvdW50c1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvTGlzdEJhbmtBY2NvdW50c1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RCYW5rQWNjb3VudHNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBzZXREZWZhdWx0QmFua0FjY291bnQocjogU2V0RGVmYXVsdEJhbmtBY2NvdW50UmVxdWVzdCB8IFNldERlZmF1bHRCYW5rQWNjb3VudFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2V0RGVmYXVsdEJhbmtBY2NvdW50UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXREZWZhdWx0QmFua0FjY291bnRSZXF1ZXN0PnIpIDogbmV3IFNldERlZmF1bHRCYW5rQWNjb3VudFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvU2V0RGVmYXVsdEJhbmtBY2NvdW50XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBkZWxldGVCYW5rQWNjb3VudChyOiBEZWxldGVCYW5rQWNjb3VudFJlcXVlc3QgfCBEZWxldGVCYW5rQWNjb3VudFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8RGVsZXRlQmFua0FjY291bnRSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPERlbGV0ZUJhbmtBY2NvdW50UmVxdWVzdD5yKSA6IG5ldyBEZWxldGVCYW5rQWNjb3VudFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvRGVsZXRlQmFua0FjY291bnRcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGdldE11bHRpUmV0YWlsQ29uZmlndXJhdGlvbnMocjogR2V0TXVsdGlSZXRhaWxDb25maWd1cmF0aW9uc1JlcXVlc3QgfCBHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0TXVsdGlSZXRhaWxDb25maWd1cmF0aW9uc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVxdWVzdD5yKSA6IG5ldyBHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldE11bHRpUmV0YWlsQ29uZmlndXJhdGlvbnNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0dldE11bHRpUmV0YWlsQ29uZmlndXJhdGlvbnNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNdWx0aVJldGFpbENvbmZpZ3VyYXRpb25zUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBzZXJ0UmV0YWlsQ29uZmlndXJhdGlvbihyOiBVcHNlcnRSZXRhaWxDb25maWd1cmF0aW9uUmVxdWVzdCB8IFVwc2VydFJldGFpbENvbmZpZ3VyYXRpb25SZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwc2VydFJldGFpbENvbmZpZ3VyYXRpb25SZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFVwc2VydFJldGFpbENvbmZpZ3VyYXRpb25SZXF1ZXN0PnIpIDogbmV3IFVwc2VydFJldGFpbENvbmZpZ3VyYXRpb25SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL1Vwc2VydFJldGFpbENvbmZpZ3VyYXRpb25cIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIHVwc2VydERlZmF1bHRSZXRhaWxDdXN0b21lckNvbmZpZ3VyYXRpb24ocjogVXBzZXJ0RGVmYXVsdFJldGFpbEN1c3RvbWVyQ29uZmlndXJhdGlvblJlcXVlc3QgfCBVcHNlcnREZWZhdWx0UmV0YWlsQ3VzdG9tZXJDb25maWd1cmF0aW9uUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxVcHNlcnREZWZhdWx0UmV0YWlsQ3VzdG9tZXJDb25maWd1cmF0aW9uUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxVcHNlcnREZWZhdWx0UmV0YWlsQ3VzdG9tZXJDb25maWd1cmF0aW9uUmVxdWVzdD5yKSA6IG5ldyBVcHNlcnREZWZhdWx0UmV0YWlsQ3VzdG9tZXJDb25maWd1cmF0aW9uUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9VcHNlcnREZWZhdWx0UmV0YWlsQ3VzdG9tZXJDb25maWd1cmF0aW9uXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBnZXRSZXRhaWxCYWxhbmNlKHI6IEdldFJldGFpbEJhbGFuY2VSZXF1ZXN0IHwgR2V0UmV0YWlsQmFsYW5jZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldFJldGFpbEJhbGFuY2VSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0UmV0YWlsQmFsYW5jZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0UmV0YWlsQmFsYW5jZVJlcXVlc3Q+cikgOiBuZXcgR2V0UmV0YWlsQmFsYW5jZVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRSZXRhaWxCYWxhbmNlUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9HZXRSZXRhaWxCYWxhbmNlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0UmV0YWlsQmFsYW5jZVJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldFBheW91dFN1bW1hcnkocjogR2V0UGF5b3V0U3VtbWFyeVJlcXVlc3QgfCBHZXRQYXlvdXRTdW1tYXJ5UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0UGF5b3V0U3VtbWFyeVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRQYXlvdXRTdW1tYXJ5UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRQYXlvdXRTdW1tYXJ5UmVxdWVzdD5yKSA6IG5ldyBHZXRQYXlvdXRTdW1tYXJ5UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldFBheW91dFN1bW1hcnlSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0dldFBheW91dFN1bW1hcnlcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRQYXlvdXRTdW1tYXJ5UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgbGlzdFJldGFpbFBheW91dHMocjogTGlzdFJldGFpbFBheW91dHNSZXF1ZXN0IHwgTGlzdFJldGFpbFBheW91dHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0UmV0YWlsUGF5b3V0c1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxMaXN0UmV0YWlsUGF5b3V0c1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdFJldGFpbFBheW91dHNSZXF1ZXN0PnIpIDogbmV3IExpc3RSZXRhaWxQYXlvdXRzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PExpc3RSZXRhaWxQYXlvdXRzUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLk1lcmNoYW50U2VydmljZS9MaXN0UmV0YWlsUGF5b3V0c1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RSZXRhaWxQYXlvdXRzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0UmV0YWlsUGF5b3V0KHI6IEdldFJldGFpbFBheW91dFJlcXVlc3QgfCBHZXRSZXRhaWxQYXlvdXRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRSZXRhaWxQYXlvdXRSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0UmV0YWlsUGF5b3V0UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRSZXRhaWxQYXlvdXRSZXF1ZXN0PnIpIDogbmV3IEdldFJldGFpbFBheW91dFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRSZXRhaWxQYXlvdXRSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0dldFJldGFpbFBheW91dFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldFJldGFpbFBheW91dFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGNyZWF0ZVJlcG9ydFJ1bihyOiBDcmVhdGVNZXJjaGFudFNlcnZpY2VzUmVwb3J0UnVuIHwgQ3JlYXRlTWVyY2hhbnRTZXJ2aWNlc1JlcG9ydFJ1bkludGVyZmFjZSk6IE9ic2VydmFibGU8TWVyY2hhbnRTZXJ2aWNlc1JlcG9ydFJ1bj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q3JlYXRlTWVyY2hhbnRTZXJ2aWNlc1JlcG9ydFJ1bj5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVNZXJjaGFudFNlcnZpY2VzUmVwb3J0UnVuPnIpIDogbmV3IENyZWF0ZU1lcmNoYW50U2VydmljZXNSZXBvcnRSdW4ocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxNZXJjaGFudFNlcnZpY2VzUmVwb3J0UnVuSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5NZXJjaGFudFNlcnZpY2UvQ3JlYXRlUmVwb3J0UnVuXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTWVyY2hhbnRTZXJ2aWNlc1JlcG9ydFJ1bi5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRSZXBvcnRSdW4ocjogR2V0TWVyY2hhbnRTZXJ2aWNlc1JlcG9ydFJ1biB8IEdldE1lcmNoYW50U2VydmljZXNSZXBvcnRSdW5JbnRlcmZhY2UpOiBPYnNlcnZhYmxlPE1lcmNoYW50U2VydmljZXNSZXBvcnRSdW4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE1lcmNoYW50U2VydmljZXNSZXBvcnRSdW4+cikudG9BcGlKc29uKSA/ICg8R2V0TWVyY2hhbnRTZXJ2aWNlc1JlcG9ydFJ1bj5yKSA6IG5ldyBHZXRNZXJjaGFudFNlcnZpY2VzUmVwb3J0UnVuKHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TWVyY2hhbnRTZXJ2aWNlc1JlcG9ydFJ1bkludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuTWVyY2hhbnRTZXJ2aWNlL0dldFJlcG9ydFJ1blwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IE1lcmNoYW50U2VydmljZXNSZXBvcnRSdW4uZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgXG59XG4iXX0=