@vendasta/billing 11.0.0 → 11.2.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 (75) hide show
  1. package/esm2020/lib/_generated/host.service.mjs +3 -3
  2. package/esm2020/lib/_internal/bank-reconciliation.api.service.mjs +3 -3
  3. package/esm2020/lib/_internal/billing.api.service.mjs +9 -4
  4. package/esm2020/lib/_internal/bundle.api.service.mjs +3 -3
  5. package/esm2020/lib/_internal/contract-document.api.service.mjs +3 -3
  6. package/esm2020/lib/_internal/contract.api.service.mjs +3 -3
  7. package/esm2020/lib/_internal/credit.api.service.mjs +3 -3
  8. package/esm2020/lib/_internal/discount.api.service.mjs +3 -3
  9. package/esm2020/lib/_internal/interfaces/contract.interface.mjs +1 -1
  10. package/esm2020/lib/_internal/invoice-template.api.service.mjs +3 -3
  11. package/esm2020/lib/_internal/invoice.api.service.mjs +3 -3
  12. package/esm2020/lib/_internal/merchant.api.service.mjs +3 -3
  13. package/esm2020/lib/_internal/objects/annotations.mjs +6 -6
  14. package/esm2020/lib/_internal/objects/api.mjs +174 -174
  15. package/esm2020/lib/_internal/objects/applied-bundle.mjs +13 -13
  16. package/esm2020/lib/_internal/objects/applied-discount.mjs +7 -7
  17. package/esm2020/lib/_internal/objects/applied-tax-rate.mjs +7 -7
  18. package/esm2020/lib/_internal/objects/balance.mjs +19 -19
  19. package/esm2020/lib/_internal/objects/billable-item.mjs +120 -120
  20. package/esm2020/lib/_internal/objects/bundle.mjs +71 -71
  21. package/esm2020/lib/_internal/objects/commitment.mjs +7 -7
  22. package/esm2020/lib/_internal/objects/common.mjs +12 -12
  23. package/esm2020/lib/_internal/objects/contract-document.mjs +29 -29
  24. package/esm2020/lib/_internal/objects/contract.mjs +90 -87
  25. package/esm2020/lib/_internal/objects/credit.mjs +24 -24
  26. package/esm2020/lib/_internal/objects/customer-summary.mjs +19 -19
  27. package/esm2020/lib/_internal/objects/date-range.mjs +7 -7
  28. package/esm2020/lib/_internal/objects/discount.mjs +42 -42
  29. package/esm2020/lib/_internal/objects/external-account.mjs +32 -32
  30. package/esm2020/lib/_internal/objects/fee.mjs +13 -13
  31. package/esm2020/lib/_internal/objects/field-mask.mjs +6 -6
  32. package/esm2020/lib/_internal/objects/invoice-template.mjs +126 -126
  33. package/esm2020/lib/_internal/objects/invoice.mjs +206 -206
  34. package/esm2020/lib/_internal/objects/merchant-report.mjs +19 -19
  35. package/esm2020/lib/_internal/objects/merchant.mjs +201 -201
  36. package/esm2020/lib/_internal/objects/metered-component.mjs +18 -18
  37. package/esm2020/lib/_internal/objects/payment-card.mjs +38 -38
  38. package/esm2020/lib/_internal/objects/payment.mjs +273 -273
  39. package/esm2020/lib/_internal/objects/payout.mjs +41 -41
  40. package/esm2020/lib/_internal/objects/pricing-plan-product.mjs +92 -92
  41. package/esm2020/lib/_internal/objects/pricing-plan.mjs +53 -53
  42. package/esm2020/lib/_internal/objects/product-pricing.mjs +19 -19
  43. package/esm2020/lib/_internal/objects/product-summary.mjs +85 -85
  44. package/esm2020/lib/_internal/objects/product.mjs +59 -59
  45. package/esm2020/lib/_internal/objects/purchase.mjs +71 -71
  46. package/esm2020/lib/_internal/objects/recurring-invoice.mjs +59 -59
  47. package/esm2020/lib/_internal/objects/refund.mjs +25 -25
  48. package/esm2020/lib/_internal/objects/report-run.mjs +18 -18
  49. package/esm2020/lib/_internal/objects/retail-customer-configuration.mjs +24 -24
  50. package/esm2020/lib/_internal/objects/sales-credit-note.mjs +31 -31
  51. package/esm2020/lib/_internal/objects/sales-invoice.mjs +51 -51
  52. package/esm2020/lib/_internal/objects/subscribe-validation.mjs +7 -7
  53. package/esm2020/lib/_internal/objects/subscription.mjs +88 -88
  54. package/esm2020/lib/_internal/objects/tax-rate.mjs +62 -62
  55. package/esm2020/lib/_internal/payment-method.api.service.mjs +3 -3
  56. package/esm2020/lib/_internal/payment.api.service.mjs +3 -3
  57. package/esm2020/lib/_internal/pricing.api.service.mjs +3 -3
  58. package/esm2020/lib/_internal/product-summary.api.service.mjs +3 -3
  59. package/esm2020/lib/_internal/product.api.service.mjs +3 -3
  60. package/esm2020/lib/_internal/purchase.api.service.mjs +3 -3
  61. package/esm2020/lib/_internal/recurring-invoice.api.service.mjs +3 -3
  62. package/esm2020/lib/_internal/refund.api.service.mjs +3 -3
  63. package/esm2020/lib/_internal/retail-customer-configuration.api.service.mjs +3 -3
  64. package/esm2020/lib/_internal/sales-credit-note.api.service.mjs +3 -3
  65. package/esm2020/lib/_internal/sales-invoice.api.service.mjs +3 -3
  66. package/esm2020/lib/_internal/tax.api.service.mjs +3 -3
  67. package/esm2020/lib/_internal/vendor.api.service.mjs +3 -3
  68. package/fesm2015/vendasta-billing.mjs +2422 -2414
  69. package/fesm2015/vendasta-billing.mjs.map +1 -1
  70. package/fesm2020/vendasta-billing.mjs +2422 -2414
  71. package/fesm2020/vendasta-billing.mjs.map +1 -1
  72. package/lib/_internal/billing.api.service.d.ts +1 -0
  73. package/lib/_internal/interfaces/contract.interface.d.ts +1 -0
  74. package/lib/_internal/objects/contract.d.ts +1 -0
  75. package/package.json +3 -3
@@ -16,9 +16,9 @@ export class HostService {
16
16
  return 'https://' + this.host;
17
17
  }
18
18
  }
19
- HostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: HostService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
20
- HostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: HostService, providedIn: 'root' });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: HostService, decorators: [{
19
+ HostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: HostService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
20
+ HostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: HostService, providedIn: 'root' });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: HostService, decorators: [{
22
22
  type: Injectable,
23
23
  args: [{ providedIn: 'root' }]
24
24
  }] });
@@ -37,9 +37,9 @@ export class BankReconciliationApiService {
37
37
  .pipe(map(resp => ReconcilePayoutResponse.fromProto(resp)));
38
38
  }
39
39
  }
40
- BankReconciliationApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BankReconciliationApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
41
- BankReconciliationApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BankReconciliationApiService, providedIn: 'root' });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BankReconciliationApiService, decorators: [{
40
+ BankReconciliationApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BankReconciliationApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
41
+ BankReconciliationApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BankReconciliationApiService, providedIn: 'root' });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BankReconciliationApiService, decorators: [{
43
43
  type: Injectable,
44
44
  args: [{ providedIn: 'root' }]
45
45
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
@@ -76,6 +76,11 @@ export class BillingApiService {
76
76
  return this.http.post(this._host + "/billing.v1.Billing/ListSubscriptions", request.toApiJson(), this.apiOptions())
77
77
  .pipe(map(resp => ListSubscriptionsResponse.fromProto(resp)));
78
78
  }
79
+ listRetailSubscriptions(r) {
80
+ const request = (r.toApiJson) ? r : new ListSubscriptionsRequest(r);
81
+ return this.http.post(this._host + "/billing.v1.Billing/ListRetailSubscriptions", request.toApiJson(), this.apiOptions())
82
+ .pipe(map(resp => ListSubscriptionsResponse.fromProto(resp)));
83
+ }
79
84
  listBillableItems(r) {
80
85
  const request = (r.toApiJson) ? r : new ListBillableItemsRequest(r);
81
86
  return this.http.post(this._host + "/billing.v1.Billing/ListBillableItems", request.toApiJson(), this.apiOptions())
@@ -216,10 +221,10 @@ export class BillingApiService {
216
221
  return this.http.post(this._host + "/billing.v1.Billing/StartRevRecTemplateBackfill", request.toApiJson(), { ...this.apiOptions(), observe: 'response' });
217
222
  }
218
223
  }
219
- BillingApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BillingApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
220
- BillingApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BillingApiService, providedIn: 'root' });
221
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BillingApiService, decorators: [{
224
+ BillingApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BillingApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
225
+ BillingApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BillingApiService, providedIn: 'root' });
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BillingApiService, decorators: [{
222
227
  type: Injectable,
223
228
  args: [{ providedIn: 'root' }]
224
229
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy5hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2JpbGxpbmdfc2RrL3NyYy9saWIvX2ludGVybmFsL2JpbGxpbmcuYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DO0FBQ3BDLDJCQUEyQjtBQUMzQixnQkFBZ0I7QUFDaEIsRUFBRTtBQUNGLGVBQWU7QUFDZixvQ0FBb0M7QUFDcEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0MsZUFBZSxFQUNmLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsNEJBQTRCLEVBQzVCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsNkJBQTZCLEVBQzdCLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLCtCQUErQixFQUMvQix5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsaUNBQWlDLEVBQ2pDLGtDQUFrQyxFQUNsQywwQkFBMEIsRUFDMUIsMkJBQTJCLEVBQzNCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsNkJBQTZCLEVBQzdCLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNy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LE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQzVKLENBQUM7SUFDRCwyQkFBMkIsQ0FBQyxDQUFtRjtRQUMzRyxNQUFNLE9BQU8sR0FBRyxDQUFzQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFzQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksa0NBQWtDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLGlEQUFpRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ2xLLENBQUM7OzhHQTdQUSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQURMLE1BQU07MkZBQ2xCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIEFQSSBTZXJ2aWNlLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICAgICAgQmlsbEl0ZW1SZXF1ZXN0LFxuICAgICAgICBCaWxsTXVsdGlwbGVJdGVtc1JlcXVlc3QsXG4gICAgICAgIEJpbGxNdWx0aXBsZUl0ZW1zUmVzcG9uc2UsXG4gICAgICAgIENhbkJpbGxJdGVtUmVxdWVzdCxcbiAgICAgICAgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3QsXG4gICAgICAgIENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZSxcbiAgICAgICAgQ2hhbmdlQ3VzdG9tVW5pdFByaWNlUmVxdWVzdCxcbiAgICAgICAgQ2hhbmdlRnJlcXVlbmN5UmVxdWVzdCxcbiAgICAgICAgQ2hhbmdlUmVuZXdhbERhdGVSZXF1ZXN0LFxuICAgICAgICBDcmVhdGVNZXRlcmVkQ29tcG9uZW50UmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2UsXG4gICAgICAgIENyZWF0ZVByaWNpbmdQbGFuUmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlUHJpY2luZ1BsYW5SZXNwb25zZSxcbiAgICAgICAgQ3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3QsXG4gICAgICAgIENyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZSxcbiAgICAgICAgQ3JlYXRlVXNhZ2VSZXF1ZXN0LFxuICAgICAgICBEZWxldGVCaWxsYWJsZUl0ZW1SZXF1ZXN0LFxuICAgICAgICBEZWxldGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0LFxuICAgICAgICBFeHBpcmVCaWxsYWJsZUl0ZW1SZXF1ZXN0LFxuICAgICAgICBHZW5lcmF0ZUJpbGxhYmxlSXRlbXNDU1ZSZXF1ZXN0LFxuICAgICAgICBHZW5lcmF0ZUJpbGxhYmxlSXRlbXNDU1ZSZXNwb25zZSxcbiAgICAgICAgR2V0QmlsbGFibGVJdGVtUmVxdWVzdCxcbiAgICAgICAgR2V0QmlsbGFibGVJdGVtUmVzcG9uc2UsXG4gICAgICAgIEdldE11bHRpQ29udHJhY3RzUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlDb250cmFjdHNSZXNwb25zZSxcbiAgICAgICAgR2V0TXVsdGlQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0LFxuICAgICAgICBHZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlLFxuICAgICAgICBHZXRNdWx0aVByaWNpbmdQbGFuUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlQcmljaW5nUGxhblJlc3BvbnNlLFxuICAgICAgICBHZXRNdWx0aVByb2R1Y3RQcmljaW5nUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlQcm9kdWN0UHJpY2luZ1Jlc3BvbnNlLFxuICAgICAgICBHZXRNdWx0aVByb2R1Y3RSZXF1ZXN0LFxuICAgICAgICBHZXRNdWx0aVByb2R1Y3RSZXNwb25zZSxcbiAgICAgICAgR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVzcG9uc2UsXG4gICAgICAgIEdldFByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3QsXG4gICAgICAgIEdldFByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlLFxuICAgICAgICBHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXF1ZXN0LFxuICAgICAgICBHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXNwb25zZSxcbiAgICAgICAgR2V0UHVyY2hhc2VDb3N0UmVxdWVzdCxcbiAgICAgICAgR2V0UHVyY2hhc2VDb3N0UmVzcG9uc2UsXG4gICAgICAgIExpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdCxcbiAgICAgICAgTGlzdEJpbGxhYmxlSXRlbXNSZXNwb25zZSxcbiAgICAgICAgTGlzdENvbnRyYWN0c1JlcXVlc3QsXG4gICAgICAgIExpc3RDb250cmFjdHNSZXNwb25zZSxcbiAgICAgICAgTGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHNSZXF1ZXN0LFxuICAgICAgICBMaXN0TWVyY2hhbnRCaWxsaW5nUmVwb3J0c1Jlc3BvbnNlLFxuICAgICAgICBMaXN0UHJpY2luZ1BsYW5Qcm9kdWN0c1JlcXVlc3QsXG4gICAgICAgIExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVzcG9uc2UsXG4gICAgICAgIExpc3RQcm9kdWN0U3VtbWFyaWVzUmVxdWVzdCxcbiAgICAgICAgTGlzdFByb2R1Y3RTdW1tYXJpZXNSZXNwb25zZSxcbiAgICAgICAgTGlzdFByb2R1Y3RzUmVxdWVzdCxcbiAgICAgICAgTGlzdFByb2R1Y3RzUmVzcG9uc2UsXG4gICAgICAgIExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdCxcbiAgICAgICAgTGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZSxcbiAgICAgICAgUmVzZXRDb250cmFjdFByaWNpbmdSZXF1ZXN0LFxuICAgICAgICBSZXZlcnNlU3Vic2NyaXB0aW9uUmVxdWVzdCxcbiAgICAgICAgU2V0UmVuZXdhbFN0YXJ0UmVxdWVzdCxcbiAgICAgICAgU3RhcnRSZXZSZWNUZW1wbGF0ZUJhY2tmaWxsUmVxdWVzdCxcbiAgICAgICAgVGlja0NvbXBvbmVudFVzYWdlUmVxdWVzdCxcbiAgICAgICAgVXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdCxcbiAgICAgICAgVXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2UsXG4gICAgICAgIFVwZGF0ZVByaWNpbmdQbGFuUmVxdWVzdCxcbiAgICAgICAgVXBkYXRlUHJpY2luZ1BsYW5SZXNwb25zZSxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBCaWxsSXRlbVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEJpbGxNdWx0aXBsZUl0ZW1zUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQmlsbE11bHRpcGxlSXRlbXNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgQ2FuQmlsbEl0ZW1SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBDaGFuZ2VDdXN0b21Vbml0UHJpY2VSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDaGFuZ2VGcmVxdWVuY3lSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDaGFuZ2VSZW5ld2FsRGF0ZVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZU1ldGVyZWRDb21wb25lbnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgQ3JlYXRlUHJpY2luZ1BsYW5SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVQcmljaW5nUGxhblJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVVc2FnZVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIERlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIERlbGV0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEV4cGlyZUJpbGxhYmxlSXRlbVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRCaWxsYWJsZUl0ZW1SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRCaWxsYWJsZUl0ZW1SZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0TXVsdGlDb250cmFjdHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aUNvbnRyYWN0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJpY2luZ1BsYW5SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVByaWNpbmdQbGFuUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJvZHVjdFByaWNpbmdSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVByb2R1Y3RQcmljaW5nUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJvZHVjdFJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0UHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0UHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRQdXJjaGFzZUNvc3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRQdXJjaGFzZUNvc3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0QmlsbGFibGVJdGVtc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBMaXN0Q29udHJhY3RzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgTGlzdENvbnRyYWN0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBMaXN0TWVyY2hhbnRCaWxsaW5nUmVwb3J0c1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIExpc3RNZXJjaGFudEJpbGxpbmdSZXBvcnRzUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgTGlzdFByaWNpbmdQbGFuUHJvZHVjdHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFByb2R1Y3RTdW1tYXJpZXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0UHJvZHVjdFN1bW1hcmllc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBMaXN0UHJvZHVjdHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0UHJvZHVjdHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBSZXNldENvbnRyYWN0UHJpY2luZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTZXRSZW5ld2FsU3RhcnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTdGFydFJldlJlY1RlbXBsYXRlQmFja2ZpbGxSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBUaWNrQ29tcG9uZW50VXNhZ2VSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBVcGRhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBVcGRhdGVQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlUHJpY2luZ1BsYW5SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBVcGRhdGVQcmljaW5nUGxhblJlc3BvbnNlSW50ZXJmYWNlLFxufSBmcm9tICcuL2ludGVyZmFjZXMvJztcbmltcG9ydCB7SHR0cEhlYWRlcnMsIEh0dHBDbGllbnQsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi4vX2dlbmVyYXRlZC9ob3N0LnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIEJpbGxpbmdBcGlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9ob3N0ID0gdGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBob3N0U2VydmljZTogSG9zdFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwaU9wdGlvbnMoKToge2hlYWRlcnM6IEh0dHBIZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW59IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjYW5CaWxsSXRlbShyOiBDYW5CaWxsSXRlbVJlcXVlc3QgfCBDYW5CaWxsSXRlbVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q2FuQmlsbEl0ZW1SZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENhbkJpbGxJdGVtUmVxdWVzdD5yKSA6IG5ldyBDYW5CaWxsSXRlbVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NhbkJpbGxJdGVtXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBjYW5DcmVhdGVTdWJzY3JpcHRpb25zKHI6IENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0IHwgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3Q+cikgOiBuZXcgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBjcmVhdGVTdWJzY3JpcHRpb24ocjogQ3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdCB8IENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0PnIpIDogbmV3IENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NyZWF0ZVN1YnNjcmlwdGlvblwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgY3JlYXRlU3Vic2NyaXB0aW9ucyhyOiBDcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdCB8IENyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxDcmVhdGVTdWJzY3JpcHRpb25zUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0PnIpIDogbmV3IENyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NyZWF0ZVN1YnNjcmlwdGlvbnNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBDcmVhdGVTdWJzY3JpcHRpb25zUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgcmV2ZXJzZVN1YnNjcmlwdGlvbihyOiBSZXZlcnNlU3Vic2NyaXB0aW9uUmVxdWVzdCB8IFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0PnIpIDogbmV3IFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9SZXZlcnNlU3Vic2NyaXB0aW9uXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBzZXRSZW5ld2FsU3RhcnQocjogU2V0UmVuZXdhbFN0YXJ0UmVxdWVzdCB8IFNldFJlbmV3YWxTdGFydFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2V0UmVuZXdhbFN0YXJ0UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXRSZW5ld2FsU3RhcnRSZXF1ZXN0PnIpIDogbmV3IFNldFJlbmV3YWxTdGFydFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL1NldFJlbmV3YWxTdGFydFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgYmlsbEl0ZW0ocjogQmlsbEl0ZW1SZXF1ZXN0IHwgQmlsbEl0ZW1SZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEJpbGxJdGVtUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxCaWxsSXRlbVJlcXVlc3Q+cikgOiBuZXcgQmlsbEl0ZW1SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9CaWxsSXRlbVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgYmlsbE11bHRpcGxlSXRlbXMocjogQmlsbE11bHRpcGxlSXRlbXNSZXF1ZXN0IHwgQmlsbE11bHRpcGxlSXRlbXNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxCaWxsTXVsdGlwbGVJdGVtc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxCaWxsTXVsdGlwbGVJdGVtc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8QmlsbE11bHRpcGxlSXRlbXNSZXF1ZXN0PnIpIDogbmV3IEJpbGxNdWx0aXBsZUl0ZW1zUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEJpbGxNdWx0aXBsZUl0ZW1zUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvQmlsbE11bHRpcGxlSXRlbXNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBCaWxsTXVsdGlwbGVJdGVtc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldEJpbGxhYmxlSXRlbShyOiBHZXRCaWxsYWJsZUl0ZW1SZXF1ZXN0IHwgR2V0QmlsbGFibGVJdGVtUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0QmlsbGFibGVJdGVtUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldEJpbGxhYmxlSXRlbVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0QmlsbGFibGVJdGVtUmVxdWVzdD5yKSA6IG5ldyBHZXRCaWxsYWJsZUl0ZW1SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0QmlsbGFibGVJdGVtUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvR2V0QmlsbGFibGVJdGVtXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0QmlsbGFibGVJdGVtUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0TXVsdGlTdWJzY3JpcHRpb25zKHI6IEdldE11bHRpU3Vic2NyaXB0aW9uc1JlcXVlc3QgfCBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0PnIpIDogbmV3IEdldE11bHRpU3Vic2NyaXB0aW9uc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9HZXRNdWx0aVN1YnNjcmlwdGlvbnNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0U3Vic2NyaXB0aW9ucyhyOiBMaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3QgfCBMaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPExpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxMaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3Q+cikgOiBuZXcgTGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9MaXN0U3Vic2NyaXB0aW9uc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgbGlzdEJpbGxhYmxlSXRlbXMocjogTGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0IHwgTGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0QmlsbGFibGVJdGVtc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxMaXN0QmlsbGFibGVJdGVtc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0PnIpIDogbmV3IExpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PExpc3RCaWxsYWJsZUl0ZW1zUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvTGlzdEJpbGxhYmxlSXRlbXNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0QmlsbGFibGVJdGVtc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGV4cGlyZUJpbGxhYmxlSXRlbShyOiBFeHBpcmVCaWxsYWJsZUl0ZW1SZXF1ZXN0IHwgRXhwaXJlQmlsbGFibGVJdGVtUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxFeHBpcmVCaWxsYWJsZUl0ZW1SZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEV4cGlyZUJpbGxhYmxlSXRlbVJlcXVlc3Q+cikgOiBuZXcgRXhwaXJlQmlsbGFibGVJdGVtUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvRXhwaXJlQmlsbGFibGVJdGVtXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBkZWxldGVCaWxsYWJsZUl0ZW0ocjogRGVsZXRlQmlsbGFibGVJdGVtUmVxdWVzdCB8IERlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8RGVsZXRlQmlsbGFibGVJdGVtUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxEZWxldGVCaWxsYWJsZUl0ZW1SZXF1ZXN0PnIpIDogbmV3IERlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0RlbGV0ZUJpbGxhYmxlSXRlbVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgbGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHMocjogTGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHNSZXF1ZXN0IHwgTGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0TWVyY2hhbnRCaWxsaW5nUmVwb3J0c1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxMaXN0TWVyY2hhbnRCaWxsaW5nUmVwb3J0c1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHNSZXF1ZXN0PnIpIDogbmV3IExpc3RNZXJjaGFudEJpbGxpbmdSZXBvcnRzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PExpc3RNZXJjaGFudEJpbGxpbmdSZXBvcnRzUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvTGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0TWVyY2hhbnRCaWxsaW5nUmVwb3J0c1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGxpc3RQcm9kdWN0U3VtbWFyaWVzKHI6IExpc3RQcm9kdWN0U3VtbWFyaWVzUmVxdWVzdCB8IExpc3RQcm9kdWN0U3VtbWFyaWVzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdFByb2R1Y3RTdW1tYXJpZXNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdFByb2R1Y3RTdW1tYXJpZXNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RQcm9kdWN0U3VtbWFyaWVzUmVxdWVzdD5yKSA6IG5ldyBMaXN0UHJvZHVjdFN1bW1hcmllc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0UHJvZHVjdFN1bW1hcmllc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0xpc3RQcm9kdWN0U3VtbWFyaWVzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTGlzdFByb2R1Y3RTdW1tYXJpZXNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRQcm9kdWN0U3VtbWFyaWVzVG90YWwocjogR2V0UHJvZHVjdFN1bW1hcmllc1RvdGFsUmVxdWVzdCB8IEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlcXVlc3Q+cikgOiBuZXcgR2V0UHJvZHVjdFN1bW1hcmllc1RvdGFsUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0dldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdlbmVyYXRlQmlsbGFibGVJdGVtc0NzdihyOiBHZW5lcmF0ZUJpbGxhYmxlSXRlbXNDU1ZSZXF1ZXN0IHwgR2VuZXJhdGVCaWxsYWJsZUl0ZW1zQ1NWUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2VuZXJhdGVCaWxsYWJsZUl0ZW1zQ1NWUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2VuZXJhdGVCaWxsYWJsZUl0ZW1zQ1NWUmVxdWVzdD5yKSA6IG5ldyBHZW5lcmF0ZUJpbGxhYmxlSXRlbXNDU1ZSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2VuZXJhdGVCaWxsYWJsZUl0ZW1zQ1NWUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvR2VuZXJhdGVCaWxsYWJsZUl0ZW1zQ1NWXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2VuZXJhdGVCaWxsYWJsZUl0ZW1zQ1NWUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgY3JlYXRlUHJpY2luZ1BsYW4ocjogQ3JlYXRlUHJpY2luZ1BsYW5SZXF1ZXN0IHwgQ3JlYXRlUHJpY2luZ1BsYW5SZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxDcmVhdGVQcmljaW5nUGxhblJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVQcmljaW5nUGxhblJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q3JlYXRlUHJpY2luZ1BsYW5SZXF1ZXN0PnIpIDogbmV3IENyZWF0ZVByaWNpbmdQbGFuUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENyZWF0ZVByaWNpbmdQbGFuUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvQ3JlYXRlUHJpY2luZ1BsYW5cIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBDcmVhdGVQcmljaW5nUGxhblJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIHVwZGF0ZVByaWNpbmdQbGFuKHI6IFVwZGF0ZVByaWNpbmdQbGFuUmVxdWVzdCB8IFVwZGF0ZVByaWNpbmdQbGFuUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8VXBkYXRlUHJpY2luZ1BsYW5SZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8VXBkYXRlUHJpY2luZ1BsYW5SZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFVwZGF0ZVByaWNpbmdQbGFuUmVxdWVzdD5yKSA6IG5ldyBVcGRhdGVQcmljaW5nUGxhblJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxVcGRhdGVQcmljaW5nUGxhblJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL1VwZGF0ZVByaWNpbmdQbGFuXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gVXBkYXRlUHJpY2luZ1BsYW5SZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRNdWx0aVByaWNpbmdQbGFuKHI6IEdldE11bHRpUHJpY2luZ1BsYW5SZXF1ZXN0IHwgR2V0TXVsdGlQcmljaW5nUGxhblJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldE11bHRpUHJpY2luZ1BsYW5SZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlQcmljaW5nUGxhblJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0TXVsdGlQcmljaW5nUGxhblJlcXVlc3Q+cikgOiBuZXcgR2V0TXVsdGlQcmljaW5nUGxhblJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVByaWNpbmdQbGFuUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvR2V0TXVsdGlQcmljaW5nUGxhblwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldE11bHRpUHJpY2luZ1BsYW5SZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBjcmVhdGVQcmljaW5nUGxhblByb2R1Y3QocjogQ3JlYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdCB8IENyZWF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPENyZWF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Q+cikgOiBuZXcgQ3JlYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENyZWF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NyZWF0ZVByaWNpbmdQbGFuUHJvZHVjdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IENyZWF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIHVwZGF0ZVByaWNpbmdQbGFuUHJvZHVjdChyOiBVcGRhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0IHwgVXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8VXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdD5yKSA6IG5ldyBVcGRhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvVXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gVXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZGVsZXRlUHJpY2luZ1BsYW5Qcm9kdWN0KHI6IERlbGV0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3QgfCBEZWxldGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPERlbGV0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8RGVsZXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdD5yKSA6IG5ldyBEZWxldGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9EZWxldGVQcmljaW5nUGxhblByb2R1Y3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGxpc3RQcmljaW5nUGxhblByb2R1Y3RzKHI6IExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVxdWVzdCB8IExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdFByaWNpbmdQbGFuUHJvZHVjdHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdFByaWNpbmdQbGFuUHJvZHVjdHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVxdWVzdD5yKSA6IG5ldyBMaXN0UHJpY2luZ1BsYW5Qcm9kdWN0c1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0UHJpY2luZ1BsYW5Qcm9kdWN0c1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0xpc3RQcmljaW5nUGxhblByb2R1Y3RzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTGlzdFByaWNpbmdQbGFuUHJvZHVjdHNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRQcmljaW5nUGxhblByb2R1Y3QocjogR2V0UHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdCB8IEdldFByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldFByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldFByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Q+cikgOiBuZXcgR2V0UHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldFByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0dldFByaWNpbmdQbGFuUHJvZHVjdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldFByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0KHI6IEdldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdCB8IEdldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0TXVsdGlQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdD5yKSA6IG5ldyBHZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0dldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0TXVsdGlQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRNdWx0aVByb2R1Y3RQcmljaW5nKHI6IEdldE11bHRpUHJvZHVjdFByaWNpbmdSZXF1ZXN0IHwgR2V0TXVsdGlQcm9kdWN0UHJpY2luZ1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldE11bHRpUHJvZHVjdFByaWNpbmdSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlQcm9kdWN0UHJpY2luZ1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0TXVsdGlQcm9kdWN0UHJpY2luZ1JlcXVlc3Q+cikgOiBuZXcgR2V0TXVsdGlQcm9kdWN0UHJpY2luZ1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVByb2R1Y3RQcmljaW5nUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvR2V0TXVsdGlQcm9kdWN0UHJpY2luZ1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldE11bHRpUHJvZHVjdFByaWNpbmdSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICB0aWNrQ29tcG9uZW50VXNhZ2UocjogVGlja0NvbXBvbmVudFVzYWdlUmVxdWVzdCB8IFRpY2tDb21wb25lbnRVc2FnZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8VGlja0NvbXBvbmVudFVzYWdlUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxUaWNrQ29tcG9uZW50VXNhZ2VSZXF1ZXN0PnIpIDogbmV3IFRpY2tDb21wb25lbnRVc2FnZVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL1RpY2tDb21wb25lbnRVc2FnZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgY3JlYXRlTWV0ZXJlZENvbXBvbmVudChyOiBDcmVhdGVNZXRlcmVkQ29tcG9uZW50UmVxdWVzdCB8IENyZWF0ZU1ldGVyZWRDb21wb25lbnRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENyZWF0ZU1ldGVyZWRDb21wb25lbnRSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZU1ldGVyZWRDb21wb25lbnRSZXF1ZXN0PnIpIDogbmV3IENyZWF0ZU1ldGVyZWRDb21wb25lbnRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9DcmVhdGVNZXRlcmVkQ29tcG9uZW50XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBjcmVhdGVVc2FnZShyOiBDcmVhdGVVc2FnZVJlcXVlc3QgfCBDcmVhdGVVc2FnZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q3JlYXRlVXNhZ2VSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZVVzYWdlUmVxdWVzdD5yKSA6IG5ldyBDcmVhdGVVc2FnZVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NyZWF0ZVVzYWdlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBsaXN0Q29udHJhY3RzKHI6IExpc3RDb250cmFjdHNSZXF1ZXN0IHwgTGlzdENvbnRyYWN0c1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPExpc3RDb250cmFjdHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdENvbnRyYWN0c1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdENvbnRyYWN0c1JlcXVlc3Q+cikgOiBuZXcgTGlzdENvbnRyYWN0c1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0Q29udHJhY3RzUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvTGlzdENvbnRyYWN0c1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RDb250cmFjdHNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRNdWx0aUNvbnRyYWN0KHI6IEdldE11bHRpQ29udHJhY3RzUmVxdWVzdCB8IEdldE11bHRpQ29udHJhY3RzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0TXVsdGlDb250cmFjdHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlDb250cmFjdHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldE11bHRpQ29udHJhY3RzUmVxdWVzdD5yKSA6IG5ldyBHZXRNdWx0aUNvbnRyYWN0c1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aUNvbnRyYWN0c1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0dldE11bHRpQ29udHJhY3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNdWx0aUNvbnRyYWN0c1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGxpc3RQcm9kdWN0cyhyOiBMaXN0UHJvZHVjdHNSZXF1ZXN0IHwgTGlzdFByb2R1Y3RzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdFByb2R1Y3RzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPExpc3RQcm9kdWN0c1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdFByb2R1Y3RzUmVxdWVzdD5yKSA6IG5ldyBMaXN0UHJvZHVjdHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TGlzdFByb2R1Y3RzUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvTGlzdFByb2R1Y3RzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTGlzdFByb2R1Y3RzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0TXVsdGlQcm9kdWN0KHI6IEdldE11bHRpUHJvZHVjdFJlcXVlc3QgfCBHZXRNdWx0aVByb2R1Y3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNdWx0aVByb2R1Y3RSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlQcm9kdWN0UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRNdWx0aVByb2R1Y3RSZXF1ZXN0PnIpIDogbmV3IEdldE11bHRpUHJvZHVjdFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVByb2R1Y3RSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9HZXRNdWx0aVByb2R1Y3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNdWx0aVByb2R1Y3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICByZXNldENvbnRyYWN0UHJpY2luZyhyOiBSZXNldENvbnRyYWN0UHJpY2luZ1JlcXVlc3QgfCBSZXNldENvbnRyYWN0UHJpY2luZ1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8UmVzZXRDb250cmFjdFByaWNpbmdSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFJlc2V0Q29udHJhY3RQcmljaW5nUmVxdWVzdD5yKSA6IG5ldyBSZXNldENvbnRyYWN0UHJpY2luZ1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL1Jlc2V0Q29udHJhY3RQcmljaW5nXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBnZXRQdXJjaGFzZUNvc3QocjogR2V0UHVyY2hhc2VDb3N0UmVxdWVzdCB8IEdldFB1cmNoYXNlQ29zdFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldFB1cmNoYXNlQ29zdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRQdXJjaGFzZUNvc3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldFB1cmNoYXNlQ29zdFJlcXVlc3Q+cikgOiBuZXcgR2V0UHVyY2hhc2VDb3N0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldFB1cmNoYXNlQ29zdFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0dldFB1cmNoYXNlQ29zdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldFB1cmNoYXNlQ29zdFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGNoYW5nZUZyZXF1ZW5jeShyOiBDaGFuZ2VGcmVxdWVuY3lSZXF1ZXN0IHwgQ2hhbmdlRnJlcXVlbmN5UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDaGFuZ2VGcmVxdWVuY3lSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENoYW5nZUZyZXF1ZW5jeVJlcXVlc3Q+cikgOiBuZXcgQ2hhbmdlRnJlcXVlbmN5UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvQ2hhbmdlRnJlcXVlbmN5XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBjaGFuZ2VSZW5ld2FsRGF0ZShyOiBDaGFuZ2VSZW5ld2FsRGF0ZVJlcXVlc3QgfCBDaGFuZ2VSZW5ld2FsRGF0ZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q2hhbmdlUmVuZXdhbERhdGVSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENoYW5nZVJlbmV3YWxEYXRlUmVxdWVzdD5yKSA6IG5ldyBDaGFuZ2VSZW5ld2FsRGF0ZVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NoYW5nZVJlbmV3YWxEYXRlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBjaGFuZ2VDdXN0b21Vbml0UHJpY2UocjogQ2hhbmdlQ3VzdG9tVW5pdFByaWNlUmVxdWVzdCB8IENoYW5nZUN1c3RvbVVuaXRQcmljZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q2hhbmdlQ3VzdG9tVW5pdFByaWNlUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDaGFuZ2VDdXN0b21Vbml0UHJpY2VSZXF1ZXN0PnIpIDogbmV3IENoYW5nZUN1c3RvbVVuaXRQcmljZVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NoYW5nZUN1c3RvbVVuaXRQcmljZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgc3RhcnRSZXZSZWNUZW1wbGF0ZUJhY2tmaWxsKHI6IFN0YXJ0UmV2UmVjVGVtcGxhdGVCYWNrZmlsbFJlcXVlc3QgfCBTdGFydFJldlJlY1RlbXBsYXRlQmFja2ZpbGxSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFN0YXJ0UmV2UmVjVGVtcGxhdGVCYWNrZmlsbFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8U3RhcnRSZXZSZWNUZW1wbGF0ZUJhY2tmaWxsUmVxdWVzdD5yKSA6IG5ldyBTdGFydFJldlJlY1RlbXBsYXRlQmFja2ZpbGxSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9TdGFydFJldlJlY1RlbXBsYXRlQmFja2ZpbGxcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIFxufVxuIl19
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy5hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2JpbGxpbmdfc2RrL3NyYy9saWIvX2ludGVybmFsL2JpbGxpbmcuYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DO0FBQ3BDLDJCQUEyQjtBQUMzQixnQkFBZ0I7QUFDaEIsRUFBRTtBQUNGLGVBQWU7QUFDZixvQ0FBb0M7QUFDcEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0MsZUFBZSxFQUNmLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsNEJBQTRCLEVBQzVCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsNkJBQTZCLEVBQzdCLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLCtCQUErQixFQUMvQix5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsaUNBQWlDLEVBQ2pDLGtDQUFrQyxFQUNsQywwQkFBMEIsRUFDMUIsMkJBQTJCLEVBQzNCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsNkJBQTZCLEVBQzdCLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixpQ0FBaUMsRUFDakMsa0NBQWtDLEVBQ2xDLDhCQUE4QixFQUM5QiwrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1QixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsa0NBQWtDLEVBQ2xDLHlCQUF5QixFQUN6QiwrQkFBK0IsRUFDL0IsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4Qix5QkFBeUIsR0FDaEMsTUFBTSxZQUFZLENBQUM7QUFxRXBCLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXZELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUduQyxNQUFNLE9BQU8saUJBQWlCO0lBRzFCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0I7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRjlELFVBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztJQUdoRCxDQUFDO0lBRU8sVUFBVTtRQUNkLE9BQU87WUFDSCxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3JCLGNBQWMsRUFBRSxrQkFBa0I7YUFDckMsQ0FBQztZQUNGLGVBQWUsRUFBRSxJQUFJO1NBQ3hCLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVyxDQUFDLENBQW1EO1FBQzNELE1BQU0sT0FBTyxHQUFHLENBQXNCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXNCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsaUNBQWlDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDbEosQ0FBQztJQUNELHNCQUFzQixDQUFDLENBQXlFO1FBQzVGLE1BQU0sT0FBTyxHQUFHLENBQWlDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQWlDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUEwQyxJQUFJLENBQUMsS0FBSyxHQUFHLDRDQUE0QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDNUosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLDhCQUE4QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM5RCxDQUFDO0lBQ1YsQ0FBQztJQUNELGtCQUFrQixDQUFDLENBQWlFO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLENBQTZCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTZCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsd0NBQXdDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDekosQ0FBQztJQUNELG1CQUFtQixDQUFDLENBQW1FO1FBQ25GLE1BQU0sT0FBTyxHQUFHLENBQThCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQThCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUF1QyxJQUFJLENBQUMsS0FBSyxHQUFHLHlDQUF5QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDdEosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMzRCxDQUFDO0lBQ1YsQ0FBQztJQUNELG1CQUFtQixDQUFDLENBQW1FO1FBQ25GLE1BQU0sT0FBTyxHQUFHLENBQThCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQThCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcseUNBQXlDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDMUosQ0FBQztJQUNELGVBQWUsQ0FBQyxDQUEyRDtRQUN2RSxNQUFNLE9BQU8sR0FBRyxDQUEwQixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUEwQixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLHFDQUFxQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3RKLENBQUM7SUFDRCxRQUFRLENBQUMsQ0FBNkM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBbUIsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBbUIsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsOEJBQThCLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDL0ksQ0FBQztJQUNELGlCQUFpQixDQUFDLENBQStEO1FBQzdFLE1BQU0sT0FBTyxHQUFHLENBQTRCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTRCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFxQyxJQUFJLENBQUMsS0FBSyxHQUFHLHVDQUF1QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbEosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ1YsQ0FBQztJQUNELGVBQWUsQ0FBQyxDQUEyRDtRQUN2RSxNQUFNLE9BQU8sR0FBRyxDQUEwQixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUEwQixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBbUMsSUFBSSxDQUFDLEtBQUssR0FBRyxxQ0FBcUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQzlJLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDdkQsQ0FBQztJQUNWLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxDQUF1RTtRQUN6RixNQUFNLE9BQU8sR0FBRyxDQUFnQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFnQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBeUMsSUFBSSxDQUFDLEtBQUssR0FBRywyQ0FBMkMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQzFKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDN0QsQ0FBQztJQUNWLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxDQUErRDtRQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUE0QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBcUMsSUFBSSxDQUFDLEtBQUssR0FBRyx1Q0FBdUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2xKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNWLENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxDQUErRDtRQUNuRixNQUFNLE9BQU8sR0FBRyxDQUE0QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBcUMsSUFBSSxDQUFDLEtBQUssR0FBRyw2Q0FBNkMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3hKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNWLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxDQUErRDtRQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUE0QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBcUMsSUFBSSxDQUFDLEtBQUssR0FBRyx1Q0FBdUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2xKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNWLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxDQUFpRTtRQUNoRixNQUFNLE9BQU8sR0FBRyxDQUE2QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE2QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUkseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLHdDQUF3QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3pKLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxDQUFpRTtRQUNoRixNQUFNLE9BQU8sR0FBRyxDQUE2QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE2QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUkseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLHdDQUF3QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3pKLENBQUM7SUFDRCwwQkFBMEIsQ0FBQyxDQUFpRjtRQUN4RyxNQUFNLE9BQU8sR0FBRyxDQUFxQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFxQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksaUNBQWlDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBOEMsSUFBSSxDQUFDLEtBQUssR0FBRyxnREFBZ0QsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3BLLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDbEUsQ0FBQztJQUNWLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxDQUFxRTtRQUN0RixNQUFNLE9BQU8sR0FBRyxDQUErQixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUErQixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksMkJBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBd0MsSUFBSSxDQUFDLEtBQUssR0FBRywwQ0FBMEMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3hKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDNUQsQ0FBQztJQUNWLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxDQUE2RTtRQUNsRyxNQUFNLE9BQU8sR0FBRyxDQUFtQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFtQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBNEMsSUFBSSxDQUFDLEtBQUssR0FBRyw4Q0FBOEMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2hLLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDaEUsQ0FBQztJQUNWLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxDQUE2RTtRQUNsRyxNQUFNLE9BQU8sR0FBRyxDQUFtQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFtQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBNEMsSUFBSSxDQUFDLEtBQUssR0FBRyw4Q0FBOEMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2hLLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDaEUsQ0FBQztJQUNWLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxDQUErRDtRQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUE0QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBcUMsSUFBSSxDQUFDLEtBQUssR0FBRyx1Q0FBdUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2xKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNWLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxDQUErRDtRQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUE0QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBcUMsSUFBSSxDQUFDLEtBQUssR0FBRyx1Q0FBdUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2xKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNWLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxDQUFtRTtRQUNuRixNQUFNLE9BQU8sR0FBRyxDQUE4QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE4QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBdUMsSUFBSSxDQUFDLEtBQUssR0FBRyx5Q0FBeUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3RKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDM0QsQ0FBQztJQUNWLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxDQUE2RTtRQUNsRyxNQUFNLE9BQU8sR0FBRyxDQUFtQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFtQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBNEMsSUFBSSxDQUFDLEtBQUssR0FBRyw4Q0FBOEMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2hLLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDaEUsQ0FBQztJQUNWLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxDQUE2RTtRQUNsRyxNQUFNLE9BQU8sR0FBRyxDQUFtQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFtQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBNEMsSUFBSSxDQUFDLEtBQUssR0FBRyw4Q0FBOEMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2hLLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDaEUsQ0FBQztJQUNWLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxDQUE2RTtRQUNsRyxNQUFNLE9BQU8sR0FBRyxDQUFtQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFtQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLDhDQUE4QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQy9KLENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxDQUEyRTtRQUMvRixNQUFNLE9BQU8sR0FBRyxDQUFrQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFrQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBMkMsSUFBSSxDQUFDLEtBQUssR0FBRyw2Q0FBNkMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQzlKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDL0QsQ0FBQztJQUNWLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxDQUF1RTtRQUN6RixNQUFNLE9BQU8sR0FBRyxDQUFnQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFnQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBeUMsSUFBSSxDQUFDLEtBQUssR0FBRywyQ0FBMkMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQzFKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDN0QsQ0FBQztJQUNWLENBQUM7SUFDRCwwQkFBMEIsQ0FBQyxDQUFpRjtRQUN4RyxNQUFNLE9BQU8sR0FBRyxDQUFxQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFxQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksaUNBQWlDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBOEMsSUFBSSxDQUFDLEtBQUssR0FBRyxnREFBZ0QsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3BLLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDbEUsQ0FBQztJQUNWLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxDQUF5RTtRQUM1RixNQUFNLE9BQU8sR0FBRyxDQUFpQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFpQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksNkJBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0ksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBMEMsSUFBSSxDQUFDLEtBQUssR0FBRyw0Q0FBNEMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQzVKLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDOUQsQ0FBQztJQUNWLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxDQUFpRTtRQUNoRixNQUFNLE9BQU8sR0FBRyxDQUE2QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE2QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUkseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLHdDQUF3QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3pKLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxDQUF5RTtRQUM1RixNQUFNLE9BQU8sR0FBRyxDQUFpQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFpQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksNkJBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0ksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLDRDQUE0QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQzdKLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBbUQ7UUFDM0QsTUFBTSxPQUFPLEdBQUcsQ0FBc0IsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBc0IsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxpQ0FBaUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztJQUNsSixDQUFDO0lBQ0QsYUFBYSxDQUFDLENBQXVEO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLENBQXdCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXdCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFpQyxJQUFJLENBQUMsS0FBSyxHQUFHLG1DQUFtQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDMUksSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNyRCxDQUFDO0lBQ1YsQ0FBQztJQUNELGdCQUFnQixDQUFDLENBQStEO1FBQzVFLE1BQU0sT0FBTyxHQUFHLENBQTRCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTRCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFxQyxJQUFJLENBQUMsS0FBSyxHQUFHLHNDQUFzQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDakosSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ1YsQ0FBQztJQUNELFlBQVksQ0FBQyxDQUFxRDtRQUM5RCxNQUFNLE9BQU8sR0FBRyxDQUF1QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUF1QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0csT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBZ0MsSUFBSSxDQUFDLEtBQUssR0FBRyxrQ0FBa0MsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3hJLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDcEQsQ0FBQztJQUNWLENBQUM7SUFDRCxlQUFlLENBQUMsQ0FBMkQ7UUFDdkUsTUFBTSxPQUFPLEdBQUcsQ0FBMEIsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBMEIsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQW1DLElBQUksQ0FBQyxLQUFLLEdBQUcscUNBQXFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUM5SSxJQUFJLENBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3ZELENBQUM7SUFDVixDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsQ0FBcUU7UUFDdEYsTUFBTSxPQUFPLEdBQUcsQ0FBK0IsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBK0IsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU8sSUFBSSxDQUFDLEtBQUssR0FBRywwQ0FBMEMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztJQUMzSixDQUFDO0lBQ0QsZUFBZSxDQUFDLENBQTJEO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLENBQTBCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTBCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFtQyxJQUFJLENBQUMsS0FBSyxHQUFHLHFDQUFxQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDOUksSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN2RCxDQUFDO0lBQ1YsQ0FBQztJQUNELGVBQWUsQ0FBQyxDQUEyRDtRQUN2RSxNQUFNLE9BQU8sR0FBRyxDQUEwQixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUEwQixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLHFDQUFxQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3RKLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxDQUErRDtRQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUE0QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLHVDQUF1QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3hKLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxDQUF1RTtRQUN6RixNQUFNLE9BQU8sR0FBRyxDQUFnQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFnQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLDJDQUEyQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQzVKLENBQUM7SUFDRCwyQkFBMkIsQ0FBQyxDQUFtRjtRQUMzRyxNQUFNLE9BQU8sR0FBRyxDQUFzQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFzQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksa0NBQWtDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLGlEQUFpRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ2xLLENBQUM7OzhHQXBRUSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQURMLE1BQU07MkZBQ2xCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIEFQSSBTZXJ2aWNlLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICAgICAgQmlsbEl0ZW1SZXF1ZXN0LFxuICAgICAgICBCaWxsTXVsdGlwbGVJdGVtc1JlcXVlc3QsXG4gICAgICAgIEJpbGxNdWx0aXBsZUl0ZW1zUmVzcG9uc2UsXG4gICAgICAgIENhbkJpbGxJdGVtUmVxdWVzdCxcbiAgICAgICAgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3QsXG4gICAgICAgIENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZSxcbiAgICAgICAgQ2hhbmdlQ3VzdG9tVW5pdFByaWNlUmVxdWVzdCxcbiAgICAgICAgQ2hhbmdlRnJlcXVlbmN5UmVxdWVzdCxcbiAgICAgICAgQ2hhbmdlUmVuZXdhbERhdGVSZXF1ZXN0LFxuICAgICAgICBDcmVhdGVNZXRlcmVkQ29tcG9uZW50UmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2UsXG4gICAgICAgIENyZWF0ZVByaWNpbmdQbGFuUmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlUHJpY2luZ1BsYW5SZXNwb25zZSxcbiAgICAgICAgQ3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3QsXG4gICAgICAgIENyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZSxcbiAgICAgICAgQ3JlYXRlVXNhZ2VSZXF1ZXN0LFxuICAgICAgICBEZWxldGVCaWxsYWJsZUl0ZW1SZXF1ZXN0LFxuICAgICAgICBEZWxldGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0LFxuICAgICAgICBFeHBpcmVCaWxsYWJsZUl0ZW1SZXF1ZXN0LFxuICAgICAgICBHZW5lcmF0ZUJpbGxhYmxlSXRlbXNDU1ZSZXF1ZXN0LFxuICAgICAgICBHZW5lcmF0ZUJpbGxhYmxlSXRlbXNDU1ZSZXNwb25zZSxcbiAgICAgICAgR2V0QmlsbGFibGVJdGVtUmVxdWVzdCxcbiAgICAgICAgR2V0QmlsbGFibGVJdGVtUmVzcG9uc2UsXG4gICAgICAgIEdldE11bHRpQ29udHJhY3RzUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlDb250cmFjdHNSZXNwb25zZSxcbiAgICAgICAgR2V0TXVsdGlQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0LFxuICAgICAgICBHZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlLFxuICAgICAgICBHZXRNdWx0aVByaWNpbmdQbGFuUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlQcmljaW5nUGxhblJlc3BvbnNlLFxuICAgICAgICBHZXRNdWx0aVByb2R1Y3RQcmljaW5nUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlQcm9kdWN0UHJpY2luZ1Jlc3BvbnNlLFxuICAgICAgICBHZXRNdWx0aVByb2R1Y3RSZXF1ZXN0LFxuICAgICAgICBHZXRNdWx0aVByb2R1Y3RSZXNwb25zZSxcbiAgICAgICAgR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdCxcbiAgICAgICAgR2V0TXVsdGlTdWJzY3JpcHRpb25zUmVzcG9uc2UsXG4gICAgICAgIEdldFByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3QsXG4gICAgICAgIEdldFByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlLFxuICAgICAgICBHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXF1ZXN0LFxuICAgICAgICBHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXNwb25zZSxcbiAgICAgICAgR2V0UHVyY2hhc2VDb3N0UmVxdWVzdCxcbiAgICAgICAgR2V0UHVyY2hhc2VDb3N0UmVzcG9uc2UsXG4gICAgICAgIExpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdCxcbiAgICAgICAgTGlzdEJpbGxhYmxlSXRlbXNSZXNwb25zZSxcbiAgICAgICAgTGlzdENvbnRyYWN0c1JlcXVlc3QsXG4gICAgICAgIExpc3RDb250cmFjdHNSZXNwb25zZSxcbiAgICAgICAgTGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHNSZXF1ZXN0LFxuICAgICAgICBMaXN0TWVyY2hhbnRCaWxsaW5nUmVwb3J0c1Jlc3BvbnNlLFxuICAgICAgICBMaXN0UHJpY2luZ1BsYW5Qcm9kdWN0c1JlcXVlc3QsXG4gICAgICAgIExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVzcG9uc2UsXG4gICAgICAgIExpc3RQcm9kdWN0U3VtbWFyaWVzUmVxdWVzdCxcbiAgICAgICAgTGlzdFByb2R1Y3RTdW1tYXJpZXNSZXNwb25zZSxcbiAgICAgICAgTGlzdFByb2R1Y3RzUmVxdWVzdCxcbiAgICAgICAgTGlzdFByb2R1Y3RzUmVzcG9uc2UsXG4gICAgICAgIExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdCxcbiAgICAgICAgTGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZSxcbiAgICAgICAgUmVzZXRDb250cmFjdFByaWNpbmdSZXF1ZXN0LFxuICAgICAgICBSZXZlcnNlU3Vic2NyaXB0aW9uUmVxdWVzdCxcbiAgICAgICAgU2V0UmVuZXdhbFN0YXJ0UmVxdWVzdCxcbiAgICAgICAgU3RhcnRSZXZSZWNUZW1wbGF0ZUJhY2tmaWxsUmVxdWVzdCxcbiAgICAgICAgVGlja0NvbXBvbmVudFVzYWdlUmVxdWVzdCxcbiAgICAgICAgVXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdCxcbiAgICAgICAgVXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2UsXG4gICAgICAgIFVwZGF0ZVByaWNpbmdQbGFuUmVxdWVzdCxcbiAgICAgICAgVXBkYXRlUHJpY2luZ1BsYW5SZXNwb25zZSxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBCaWxsSXRlbVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEJpbGxNdWx0aXBsZUl0ZW1zUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQmlsbE11bHRpcGxlSXRlbXNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgQ2FuQmlsbEl0ZW1SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBDaGFuZ2VDdXN0b21Vbml0UHJpY2VSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDaGFuZ2VGcmVxdWVuY3lSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDaGFuZ2VSZW5ld2FsRGF0ZVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZU1ldGVyZWRDb21wb25lbnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgQ3JlYXRlUHJpY2luZ1BsYW5SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVQcmljaW5nUGxhblJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVVc2FnZVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIERlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIERlbGV0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEV4cGlyZUJpbGxhYmxlSXRlbVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRCaWxsYWJsZUl0ZW1SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRCaWxsYWJsZUl0ZW1SZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0TXVsdGlDb250cmFjdHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aUNvbnRyYWN0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJpY2luZ1BsYW5SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVByaWNpbmdQbGFuUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJvZHVjdFByaWNpbmdSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVByb2R1Y3RQcmljaW5nUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldE11bHRpUHJvZHVjdFJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0UHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0UHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRQdXJjaGFzZUNvc3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRQdXJjaGFzZUNvc3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0QmlsbGFibGVJdGVtc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBMaXN0Q29udHJhY3RzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgTGlzdENvbnRyYWN0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBMaXN0TWVyY2hhbnRCaWxsaW5nUmVwb3J0c1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIExpc3RNZXJjaGFudEJpbGxpbmdSZXBvcnRzUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgTGlzdFByaWNpbmdQbGFuUHJvZHVjdHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFByb2R1Y3RTdW1tYXJpZXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0UHJvZHVjdFN1bW1hcmllc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBMaXN0UHJvZHVjdHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0UHJvZHVjdHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBSZXNldENvbnRyYWN0UHJpY2luZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTZXRSZW5ld2FsU3RhcnRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBTdGFydFJldlJlY1RlbXBsYXRlQmFja2ZpbGxSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBUaWNrQ29tcG9uZW50VXNhZ2VSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBVcGRhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBVcGRhdGVQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlUHJpY2luZ1BsYW5SZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBVcGRhdGVQcmljaW5nUGxhblJlc3BvbnNlSW50ZXJmYWNlLFxufSBmcm9tICcuL2ludGVyZmFjZXMvJztcbmltcG9ydCB7SHR0cEhlYWRlcnMsIEh0dHBDbGllbnQsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi4vX2dlbmVyYXRlZC9ob3N0LnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIEJpbGxpbmdBcGlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9ob3N0ID0gdGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBob3N0U2VydmljZTogSG9zdFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwaU9wdGlvbnMoKToge2hlYWRlcnM6IEh0dHBIZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW59IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjYW5CaWxsSXRlbShyOiBDYW5CaWxsSXRlbVJlcXVlc3QgfCBDYW5CaWxsSXRlbVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q2FuQmlsbEl0ZW1SZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENhbkJpbGxJdGVtUmVxdWVzdD5yKSA6IG5ldyBDYW5CaWxsSXRlbVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NhbkJpbGxJdGVtXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBjYW5DcmVhdGVTdWJzY3JpcHRpb25zKHI6IENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0IHwgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3Q+cikgOiBuZXcgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBjcmVhdGVTdWJzY3JpcHRpb24ocjogQ3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdCB8IENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0PnIpIDogbmV3IENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NyZWF0ZVN1YnNjcmlwdGlvblwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgY3JlYXRlU3Vic2NyaXB0aW9ucyhyOiBDcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdCB8IENyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxDcmVhdGVTdWJzY3JpcHRpb25zUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0PnIpIDogbmV3IENyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NyZWF0ZVN1YnNjcmlwdGlvbnNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBDcmVhdGVTdWJzY3JpcHRpb25zUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgcmV2ZXJzZVN1YnNjcmlwdGlvbihyOiBSZXZlcnNlU3Vic2NyaXB0aW9uUmVxdWVzdCB8IFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0PnIpIDogbmV3IFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9SZXZlcnNlU3Vic2NyaXB0aW9uXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBzZXRSZW5ld2FsU3RhcnQocjogU2V0UmVuZXdhbFN0YXJ0UmVxdWVzdCB8IFNldFJlbmV3YWxTdGFydFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2V0UmVuZXdhbFN0YXJ0UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXRSZW5ld2FsU3RhcnRSZXF1ZXN0PnIpIDogbmV3IFNldFJlbmV3YWxTdGFydFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL1NldFJlbmV3YWxTdGFydFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgYmlsbEl0ZW0ocjogQmlsbEl0ZW1SZXF1ZXN0IHwgQmlsbEl0ZW1SZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEJpbGxJdGVtUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxCaWxsSXRlbVJlcXVlc3Q+cikgOiBuZXcgQmlsbEl0ZW1SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9CaWxsSXRlbVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgYmlsbE11bHRpcGxlSXRlbXMocjogQmlsbE11bHRpcGxlSXRlbXNSZXF1ZXN0IHwgQmlsbE11bHRpcGxlSXRlbXNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxCaWxsTXVsdGlwbGVJdGVtc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxCaWxsTXVsdGlwbGVJdGVtc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8QmlsbE11bHRpcGxlSXRlbXNSZXF1ZXN0PnIpIDogbmV3IEJpbGxNdWx0aXBsZUl0ZW1zUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEJpbGxNdWx0aXBsZUl0ZW1zUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvQmlsbE11bHRpcGxlSXRlbXNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBCaWxsTXVsdGlwbGVJdGVtc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldEJpbGxhYmxlSXRlbShyOiBHZXRCaWxsYWJsZUl0ZW1SZXF1ZXN0IHwgR2V0QmlsbGFibGVJdGVtUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0QmlsbGFibGVJdGVtUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldEJpbGxhYmxlSXRlbVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0QmlsbGFibGVJdGVtUmVxdWVzdD5yKSA6IG5ldyBHZXRCaWxsYWJsZUl0ZW1SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0QmlsbGFibGVJdGVtUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvR2V0QmlsbGFibGVJdGVtXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0QmlsbGFibGVJdGVtUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0TXVsdGlTdWJzY3JpcHRpb25zKHI6IEdldE11bHRpU3Vic2NyaXB0aW9uc1JlcXVlc3QgfCBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlTdWJzY3JpcHRpb25zUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXF1ZXN0PnIpIDogbmV3IEdldE11bHRpU3Vic2NyaXB0aW9uc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9HZXRNdWx0aVN1YnNjcmlwdGlvbnNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNdWx0aVN1YnNjcmlwdGlvbnNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0U3Vic2NyaXB0aW9ucyhyOiBMaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3QgfCBMaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPExpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxMaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3Q+cikgOiBuZXcgTGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9MaXN0U3Vic2NyaXB0aW9uc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgbGlzdFJldGFpbFN1YnNjcmlwdGlvbnMocjogTGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0IHwgTGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxMaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0PnIpIDogbmV3IExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PExpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvTGlzdFJldGFpbFN1YnNjcmlwdGlvbnNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGxpc3RCaWxsYWJsZUl0ZW1zKHI6IExpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdCB8IExpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdEJpbGxhYmxlSXRlbXNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdEJpbGxhYmxlSXRlbXNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RCaWxsYWJsZUl0ZW1zUmVxdWVzdD5yKSA6IG5ldyBMaXN0QmlsbGFibGVJdGVtc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0QmlsbGFibGVJdGVtc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0xpc3RCaWxsYWJsZUl0ZW1zXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTGlzdEJpbGxhYmxlSXRlbXNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBleHBpcmVCaWxsYWJsZUl0ZW0ocjogRXhwaXJlQmlsbGFibGVJdGVtUmVxdWVzdCB8IEV4cGlyZUJpbGxhYmxlSXRlbVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8RXhwaXJlQmlsbGFibGVJdGVtUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxFeHBpcmVCaWxsYWJsZUl0ZW1SZXF1ZXN0PnIpIDogbmV3IEV4cGlyZUJpbGxhYmxlSXRlbVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0V4cGlyZUJpbGxhYmxlSXRlbVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZGVsZXRlQmlsbGFibGVJdGVtKHI6IERlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3QgfCBEZWxldGVCaWxsYWJsZUl0ZW1SZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPERlbGV0ZUJpbGxhYmxlSXRlbVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8RGVsZXRlQmlsbGFibGVJdGVtUmVxdWVzdD5yKSA6IG5ldyBEZWxldGVCaWxsYWJsZUl0ZW1SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9EZWxldGVCaWxsYWJsZUl0ZW1cIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGxpc3RNZXJjaGFudEJpbGxpbmdSZXBvcnRzKHI6IExpc3RNZXJjaGFudEJpbGxpbmdSZXBvcnRzUmVxdWVzdCB8IExpc3RNZXJjaGFudEJpbGxpbmdSZXBvcnRzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RNZXJjaGFudEJpbGxpbmdSZXBvcnRzUmVxdWVzdD5yKSA6IG5ldyBMaXN0TWVyY2hhbnRCaWxsaW5nUmVwb3J0c1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0TWVyY2hhbnRCaWxsaW5nUmVwb3J0c1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0xpc3RNZXJjaGFudEJpbGxpbmdSZXBvcnRzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTGlzdE1lcmNoYW50QmlsbGluZ1JlcG9ydHNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0UHJvZHVjdFN1bW1hcmllcyhyOiBMaXN0UHJvZHVjdFN1bW1hcmllc1JlcXVlc3QgfCBMaXN0UHJvZHVjdFN1bW1hcmllc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPExpc3RQcm9kdWN0U3VtbWFyaWVzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPExpc3RQcm9kdWN0U3VtbWFyaWVzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxMaXN0UHJvZHVjdFN1bW1hcmllc1JlcXVlc3Q+cikgOiBuZXcgTGlzdFByb2R1Y3RTdW1tYXJpZXNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TGlzdFByb2R1Y3RTdW1tYXJpZXNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9MaXN0UHJvZHVjdFN1bW1hcmllc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RQcm9kdWN0U3VtbWFyaWVzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0UHJvZHVjdFN1bW1hcmllc1RvdGFsKHI6IEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlcXVlc3QgfCBHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0UHJvZHVjdFN1bW1hcmllc1RvdGFsUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXF1ZXN0PnIpIDogbmV3IEdldFByb2R1Y3RTdW1tYXJpZXNUb3RhbFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9HZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRQcm9kdWN0U3VtbWFyaWVzVG90YWxSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZW5lcmF0ZUJpbGxhYmxlSXRlbXNDc3YocjogR2VuZXJhdGVCaWxsYWJsZUl0ZW1zQ1NWUmVxdWVzdCB8IEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZW5lcmF0ZUJpbGxhYmxlSXRlbXNDU1ZSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlcXVlc3Q+cikgOiBuZXcgR2VuZXJhdGVCaWxsYWJsZUl0ZW1zQ1NWUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0dlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdlbmVyYXRlQmlsbGFibGVJdGVtc0NTVlJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGNyZWF0ZVByaWNpbmdQbGFuKHI6IENyZWF0ZVByaWNpbmdQbGFuUmVxdWVzdCB8IENyZWF0ZVByaWNpbmdQbGFuUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8Q3JlYXRlUHJpY2luZ1BsYW5SZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q3JlYXRlUHJpY2luZ1BsYW5SZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZVByaWNpbmdQbGFuUmVxdWVzdD5yKSA6IG5ldyBDcmVhdGVQcmljaW5nUGxhblJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDcmVhdGVQcmljaW5nUGxhblJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NyZWF0ZVByaWNpbmdQbGFuXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gQ3JlYXRlUHJpY2luZ1BsYW5SZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICB1cGRhdGVQcmljaW5nUGxhbihyOiBVcGRhdGVQcmljaW5nUGxhblJlcXVlc3QgfCBVcGRhdGVQcmljaW5nUGxhblJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPFVwZGF0ZVByaWNpbmdQbGFuUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZVByaWNpbmdQbGFuUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxVcGRhdGVQcmljaW5nUGxhblJlcXVlc3Q+cikgOiBuZXcgVXBkYXRlUHJpY2luZ1BsYW5SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VXBkYXRlUHJpY2luZ1BsYW5SZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9VcGRhdGVQcmljaW5nUGxhblwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IFVwZGF0ZVByaWNpbmdQbGFuUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0TXVsdGlQcmljaW5nUGxhbihyOiBHZXRNdWx0aVByaWNpbmdQbGFuUmVxdWVzdCB8IEdldE11bHRpUHJpY2luZ1BsYW5SZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNdWx0aVByaWNpbmdQbGFuUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE11bHRpUHJpY2luZ1BsYW5SZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldE11bHRpUHJpY2luZ1BsYW5SZXF1ZXN0PnIpIDogbmV3IEdldE11bHRpUHJpY2luZ1BsYW5SZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0TXVsdGlQcmljaW5nUGxhblJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0dldE11bHRpUHJpY2luZ1BsYW5cIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNdWx0aVByaWNpbmdQbGFuUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgY3JlYXRlUHJpY2luZ1BsYW5Qcm9kdWN0KHI6IENyZWF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3QgfCBDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q3JlYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0PnIpIDogbmV3IENyZWF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9DcmVhdGVQcmljaW5nUGxhblByb2R1Y3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBDcmVhdGVQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICB1cGRhdGVQcmljaW5nUGxhblByb2R1Y3QocjogVXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdCB8IFVwZGF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPFVwZGF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxVcGRhdGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFVwZGF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Q+cikgOiBuZXcgVXBkYXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFVwZGF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL1VwZGF0ZVByaWNpbmdQbGFuUHJvZHVjdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IFVwZGF0ZVByaWNpbmdQbGFuUHJvZHVjdFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGRlbGV0ZVByaWNpbmdQbGFuUHJvZHVjdChyOiBEZWxldGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0IHwgRGVsZXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxEZWxldGVQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPERlbGV0ZVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Q+cikgOiBuZXcgRGVsZXRlUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvRGVsZXRlUHJpY2luZ1BsYW5Qcm9kdWN0XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBsaXN0UHJpY2luZ1BsYW5Qcm9kdWN0cyhyOiBMaXN0UHJpY2luZ1BsYW5Qcm9kdWN0c1JlcXVlc3QgfCBMaXN0UHJpY2luZ1BsYW5Qcm9kdWN0c1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxMaXN0UHJpY2luZ1BsYW5Qcm9kdWN0c1JlcXVlc3Q+cikgOiBuZXcgTGlzdFByaWNpbmdQbGFuUHJvZHVjdHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TGlzdFByaWNpbmdQbGFuUHJvZHVjdHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9MaXN0UHJpY2luZ1BsYW5Qcm9kdWN0c1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RQcmljaW5nUGxhblByb2R1Y3RzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0UHJpY2luZ1BsYW5Qcm9kdWN0KHI6IEdldFByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3QgfCBHZXRQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0UHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0PnIpIDogbmV3IEdldFByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9HZXRQcmljaW5nUGxhblByb2R1Y3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdChyOiBHZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3QgfCBHZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFJlcXVlc3Q+cikgOiBuZXcgR2V0TXVsdGlQcmljaW5nUGxhblByb2R1Y3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0TXVsdGlQcmljaW5nUGxhblByb2R1Y3RSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9HZXRNdWx0aVByaWNpbmdQbGFuUHJvZHVjdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldE11bHRpUHJpY2luZ1BsYW5Qcm9kdWN0UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0TXVsdGlQcm9kdWN0UHJpY2luZyhyOiBHZXRNdWx0aVByb2R1Y3RQcmljaW5nUmVxdWVzdCB8IEdldE11bHRpUHJvZHVjdFByaWNpbmdSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNdWx0aVByb2R1Y3RQcmljaW5nUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE11bHRpUHJvZHVjdFByaWNpbmdSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldE11bHRpUHJvZHVjdFByaWNpbmdSZXF1ZXN0PnIpIDogbmV3IEdldE11bHRpUHJvZHVjdFByaWNpbmdSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0TXVsdGlQcm9kdWN0UHJpY2luZ1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0dldE11bHRpUHJvZHVjdFByaWNpbmdcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNdWx0aVByb2R1Y3RQcmljaW5nUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdGlja0NvbXBvbmVudFVzYWdlKHI6IFRpY2tDb21wb25lbnRVc2FnZVJlcXVlc3QgfCBUaWNrQ29tcG9uZW50VXNhZ2VSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFRpY2tDb21wb25lbnRVc2FnZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VGlja0NvbXBvbmVudFVzYWdlUmVxdWVzdD5yKSA6IG5ldyBUaWNrQ29tcG9uZW50VXNhZ2VSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9UaWNrQ29tcG9uZW50VXNhZ2VcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGNyZWF0ZU1ldGVyZWRDb21wb25lbnQocjogQ3JlYXRlTWV0ZXJlZENvbXBvbmVudFJlcXVlc3QgfCBDcmVhdGVNZXRlcmVkQ29tcG9uZW50UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVNZXRlcmVkQ29tcG9uZW50UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVNZXRlcmVkQ29tcG9uZW50UmVxdWVzdD5yKSA6IG5ldyBDcmVhdGVNZXRlcmVkQ29tcG9uZW50UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvQ3JlYXRlTWV0ZXJlZENvbXBvbmVudFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgY3JlYXRlVXNhZ2UocjogQ3JlYXRlVXNhZ2VSZXF1ZXN0IHwgQ3JlYXRlVXNhZ2VSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENyZWF0ZVVzYWdlUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVVc2FnZVJlcXVlc3Q+cikgOiBuZXcgQ3JlYXRlVXNhZ2VSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9DcmVhdGVVc2FnZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgbGlzdENvbnRyYWN0cyhyOiBMaXN0Q29udHJhY3RzUmVxdWVzdCB8IExpc3RDb250cmFjdHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0Q29udHJhY3RzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPExpc3RDb250cmFjdHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RDb250cmFjdHNSZXF1ZXN0PnIpIDogbmV3IExpc3RDb250cmFjdHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TGlzdENvbnRyYWN0c1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0xpc3RDb250cmFjdHNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0Q29udHJhY3RzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0TXVsdGlDb250cmFjdChyOiBHZXRNdWx0aUNvbnRyYWN0c1JlcXVlc3QgfCBHZXRNdWx0aUNvbnRyYWN0c1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldE11bHRpQ29udHJhY3RzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE11bHRpQ29udHJhY3RzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRNdWx0aUNvbnRyYWN0c1JlcXVlc3Q+cikgOiBuZXcgR2V0TXVsdGlDb250cmFjdHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0TXVsdGlDb250cmFjdHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9HZXRNdWx0aUNvbnRyYWN0XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0TXVsdGlDb250cmFjdHNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0UHJvZHVjdHMocjogTGlzdFByb2R1Y3RzUmVxdWVzdCB8IExpc3RQcm9kdWN0c1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPExpc3RQcm9kdWN0c1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxMaXN0UHJvZHVjdHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RQcm9kdWN0c1JlcXVlc3Q+cikgOiBuZXcgTGlzdFByb2R1Y3RzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PExpc3RQcm9kdWN0c1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0xpc3RQcm9kdWN0c1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RQcm9kdWN0c1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldE11bHRpUHJvZHVjdChyOiBHZXRNdWx0aVByb2R1Y3RSZXF1ZXN0IHwgR2V0TXVsdGlQcm9kdWN0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0TXVsdGlQcm9kdWN0UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE11bHRpUHJvZHVjdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0TXVsdGlQcm9kdWN0UmVxdWVzdD5yKSA6IG5ldyBHZXRNdWx0aVByb2R1Y3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0TXVsdGlQcm9kdWN0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvR2V0TXVsdGlQcm9kdWN0XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0TXVsdGlQcm9kdWN0UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgcmVzZXRDb250cmFjdFByaWNpbmcocjogUmVzZXRDb250cmFjdFByaWNpbmdSZXF1ZXN0IHwgUmVzZXRDb250cmFjdFByaWNpbmdSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFJlc2V0Q29udHJhY3RQcmljaW5nUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxSZXNldENvbnRyYWN0UHJpY2luZ1JlcXVlc3Q+cikgOiBuZXcgUmVzZXRDb250cmFjdFByaWNpbmdSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9SZXNldENvbnRyYWN0UHJpY2luZ1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZ2V0UHVyY2hhc2VDb3N0KHI6IEdldFB1cmNoYXNlQ29zdFJlcXVlc3QgfCBHZXRQdXJjaGFzZUNvc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRQdXJjaGFzZUNvc3RSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0UHVyY2hhc2VDb3N0UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRQdXJjaGFzZUNvc3RSZXF1ZXN0PnIpIDogbmV3IEdldFB1cmNoYXNlQ29zdFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRQdXJjaGFzZUNvc3RSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9HZXRQdXJjaGFzZUNvc3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRQdXJjaGFzZUNvc3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBjaGFuZ2VGcmVxdWVuY3kocjogQ2hhbmdlRnJlcXVlbmN5UmVxdWVzdCB8IENoYW5nZUZyZXF1ZW5jeVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8Q2hhbmdlRnJlcXVlbmN5UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDaGFuZ2VGcmVxdWVuY3lSZXF1ZXN0PnIpIDogbmV3IENoYW5nZUZyZXF1ZW5jeVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5CaWxsaW5nL0NoYW5nZUZyZXF1ZW5jeVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgY2hhbmdlUmVuZXdhbERhdGUocjogQ2hhbmdlUmVuZXdhbERhdGVSZXF1ZXN0IHwgQ2hhbmdlUmVuZXdhbERhdGVSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENoYW5nZVJlbmV3YWxEYXRlUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDaGFuZ2VSZW5ld2FsRGF0ZVJlcXVlc3Q+cikgOiBuZXcgQ2hhbmdlUmVuZXdhbERhdGVSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9DaGFuZ2VSZW5ld2FsRGF0ZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgY2hhbmdlQ3VzdG9tVW5pdFByaWNlKHI6IENoYW5nZUN1c3RvbVVuaXRQcmljZVJlcXVlc3QgfCBDaGFuZ2VDdXN0b21Vbml0UHJpY2VSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPENoYW5nZUN1c3RvbVVuaXRQcmljZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q2hhbmdlQ3VzdG9tVW5pdFByaWNlUmVxdWVzdD5yKSA6IG5ldyBDaGFuZ2VDdXN0b21Vbml0UHJpY2VSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuQmlsbGluZy9DaGFuZ2VDdXN0b21Vbml0UHJpY2VcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIHN0YXJ0UmV2UmVjVGVtcGxhdGVCYWNrZmlsbChyOiBTdGFydFJldlJlY1RlbXBsYXRlQmFja2ZpbGxSZXF1ZXN0IHwgU3RhcnRSZXZSZWNUZW1wbGF0ZUJhY2tmaWxsUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxTdGFydFJldlJlY1RlbXBsYXRlQmFja2ZpbGxSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFN0YXJ0UmV2UmVjVGVtcGxhdGVCYWNrZmlsbFJlcXVlc3Q+cikgOiBuZXcgU3RhcnRSZXZSZWNUZW1wbGF0ZUJhY2tmaWxsUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9iaWxsaW5nLnYxLkJpbGxpbmcvU3RhcnRSZXZSZWNUZW1wbGF0ZUJhY2tmaWxsXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBcbn1cbiJdfQ==
@@ -41,9 +41,9 @@ export class BundleApiService {
41
41
  .pipe(map(resp => ListBundlesResponse.fromProto(resp)));
42
42
  }
43
43
  }
44
- BundleApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BundleApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
45
- BundleApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BundleApiService, providedIn: 'root' });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BundleApiService, decorators: [{
44
+ BundleApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BundleApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
45
+ BundleApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BundleApiService, providedIn: 'root' });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BundleApiService, decorators: [{
47
47
  type: Injectable,
48
48
  args: [{ providedIn: 'root' }]
49
49
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
@@ -36,9 +36,9 @@ export class ContractDocumentApiService {
36
36
  return this.http.post(this._host + "/billing.v1.ContractDocumentService/Delete", request.toApiJson(), { ...this.apiOptions(), observe: 'response' });
37
37
  }
38
38
  }
39
- ContractDocumentApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ContractDocumentApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
40
- ContractDocumentApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ContractDocumentApiService, providedIn: 'root' });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ContractDocumentApiService, decorators: [{
39
+ ContractDocumentApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: ContractDocumentApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
40
+ ContractDocumentApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: ContractDocumentApiService, providedIn: 'root' });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: ContractDocumentApiService, decorators: [{
42
42
  type: Injectable,
43
43
  args: [{ providedIn: 'root' }]
44
44
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
@@ -46,9 +46,9 @@ export class ContractApiService {
46
46
  .pipe(map(resp => UpdateContractResponse.fromProto(resp)));
47
47
  }
48
48
  }
49
- ContractApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ContractApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
50
- ContractApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ContractApiService, providedIn: 'root' });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ContractApiService, decorators: [{
49
+ ContractApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: ContractApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
50
+ ContractApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: ContractApiService, providedIn: 'root' });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: ContractApiService, decorators: [{
52
52
  type: Injectable,
53
53
  args: [{ providedIn: 'root' }]
54
54
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
@@ -36,9 +36,9 @@ export class CreditApiService {
36
36
  .pipe(map(resp => GetBalanceResponse.fromProto(resp)));
37
37
  }
38
38
  }
39
- CreditApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: CreditApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
40
- CreditApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: CreditApiService, providedIn: 'root' });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: CreditApiService, decorators: [{
39
+ CreditApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: CreditApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
40
+ CreditApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: CreditApiService, providedIn: 'root' });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: CreditApiService, decorators: [{
42
42
  type: Injectable,
43
43
  args: [{ providedIn: 'root' }]
44
44
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
@@ -44,9 +44,9 @@ export class DiscountApiService {
44
44
  return this.http.post(this._host + "/billing.v1.DiscountService/Expire", request.toApiJson(), { ...this.apiOptions(), observe: 'response' });
45
45
  }
46
46
  }
47
- DiscountApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DiscountApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
48
- DiscountApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DiscountApiService, providedIn: 'root' });
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DiscountApiService, decorators: [{
47
+ DiscountApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: DiscountApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
48
+ DiscountApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: DiscountApiService, providedIn: 'root' });
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: DiscountApiService, decorators: [{
50
50
  type: Injectable,
51
51
  args: [{ providedIn: 'root' }]
52
52
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYmlsbGluZ19zZGsvc3JjL2xpYi9faW50ZXJuYWwvaW50ZXJmYWNlcy9jb250cmFjdC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gSW50ZXJmYWNlcy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHsgUGFnZWRSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSwgUGFnZWRSZXNwb25zZU1ldGFkYXRhSW50ZXJmYWNlIH0gZnJvbSAnLi9jb21tb24uaW50ZXJmYWNlJztcbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkPzogc3RyaW5nO1xuICAgIG5ldEQ/OiBudW1iZXI7XG4gICAgY3JlYXRlZD86IERhdGU7XG4gICAgc3Vic2NyaXB0aW9uSWQ/OiBzdHJpbmc7XG4gICAgY3VycmVuY3k/OiBlLkN1cnJlbmN5O1xuICAgIHNpZ25lZD86IERhdGU7XG4gICAgYWN0aXZhdGVkPzogRGF0ZTtcbiAgICBtb2RpZmllZD86IERhdGU7XG4gICAgdmVyaWZpZWQ/OiBEYXRlO1xuICAgIHN0YXR1cz86IHN0cmluZztcbiAgICBjcmVkaXRMaW1pdD86IG51bWJlcjtcbiAgICBkaW1lbnNpb24/OiBzdHJpbmc7XG4gICAgcHJpY2luZ1BsYW5JZD86IHN0cmluZztcbiAgICBlbmQ/OiBEYXRlO1xuICAgIHN1YnNjcmlwdGlvblVwZGF0ZVN0YXR1cz86IGUuQ29udHJhY3RTdWJzY3JpcHRpb25TdGF0dXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TXVsdGlDb250cmFjdHNSZXNwb25zZUNvbnRyYWN0c0VudHJ5SW50ZXJmYWNlIHtcbiAgICBrZXk/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBDb250cmFjdEludGVyZmFjZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb250cmFjdFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ/OiBzdHJpbmc7XG4gICAgY3VycmVuY3lDb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRyYWN0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGNvbnRyYWN0PzogQ29udHJhY3RJbnRlcmZhY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q29udHJhY3RSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldENvbnRyYWN0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGNvbnRyYWN0PzogQ29udHJhY3RJbnRlcmZhY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TXVsdGlDb250cmFjdHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldE11bHRpQ29udHJhY3RzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGNvbnRyYWN0cz86IHtba2V5OiBzdHJpbmddOiBDb250cmFjdEludGVyZmFjZX07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdENvbnRyYWN0c1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHBhZ2luZ09wdGlvbnM/OiBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb250cmFjdHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgY29udHJhY3RzPzogQ29udHJhY3RJbnRlcmZhY2VbXTtcbiAgICBwYWdpbmdNZXRhZGF0YT86IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YUludGVyZmFjZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDb250cmFjdFJlcXVlc3RNdXRhdGlvbkludGVyZmFjZSB7XG4gICAgbmV0RD86IG51bWJlcjtcbiAgICBjdXJyZW5jeUNvZGU/OiBzdHJpbmc7XG4gICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIGRpbWVuc2lvbj86IHN0cmluZztcbiAgICBzaWduZWQ/OiBEYXRlO1xuICAgIGFjdGl2YXRlZD86IERhdGU7XG4gICAgZW5kPzogRGF0ZTtcbiAgICBtb2RpZmllZD86IERhdGU7XG4gICAgY3JlZGl0TGltaXQ/OiBudW1iZXI7XG4gICAgc3Vic2NyaXB0aW9uSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRDb250cmFjdFByaWNpbmdSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNvbnRyYWN0UmVxdWVzdEludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZD86IHN0cmluZztcbiAgICBtdXRhdGlvbnM/OiBVcGRhdGVDb250cmFjdFJlcXVlc3RNdXRhdGlvbkludGVyZmFjZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNvbnRyYWN0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGNvbnRyYWN0PzogQ29udHJhY3RJbnRlcmZhY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlQ29udHJhY3RTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkPzogc3RyaW5nO1xuICAgIHN1YnNjcmlwdGlvbklkPzogc3RyaW5nO1xuICAgIGZyZXF1ZW5jeT86IGUuRnJlcXVlbmN5O1xufVxuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYmlsbGluZ19zZGsvc3JjL2xpYi9faW50ZXJuYWwvaW50ZXJmYWNlcy9jb250cmFjdC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gSW50ZXJmYWNlcy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHsgUGFnZWRSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSwgUGFnZWRSZXNwb25zZU1ldGFkYXRhSW50ZXJmYWNlIH0gZnJvbSAnLi9jb21tb24uaW50ZXJmYWNlJztcbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkPzogc3RyaW5nO1xuICAgIG5ldEQ/OiBudW1iZXI7XG4gICAgY3JlYXRlZD86IERhdGU7XG4gICAgc3Vic2NyaXB0aW9uSWQ/OiBzdHJpbmc7XG4gICAgY3VycmVuY3k/OiBlLkN1cnJlbmN5O1xuICAgIHNpZ25lZD86IERhdGU7XG4gICAgYWN0aXZhdGVkPzogRGF0ZTtcbiAgICBtb2RpZmllZD86IERhdGU7XG4gICAgdmVyaWZpZWQ/OiBEYXRlO1xuICAgIHN0YXR1cz86IHN0cmluZztcbiAgICBjcmVkaXRMaW1pdD86IG51bWJlcjtcbiAgICBkaW1lbnNpb24/OiBzdHJpbmc7XG4gICAgcHJpY2luZ1BsYW5JZD86IHN0cmluZztcbiAgICBlbmQ/OiBEYXRlO1xuICAgIHN1YnNjcmlwdGlvblVwZGF0ZVN0YXR1cz86IGUuQ29udHJhY3RTdWJzY3JpcHRpb25TdGF0dXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TXVsdGlDb250cmFjdHNSZXNwb25zZUNvbnRyYWN0c0VudHJ5SW50ZXJmYWNlIHtcbiAgICBrZXk/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBDb250cmFjdEludGVyZmFjZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb250cmFjdFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ/OiBzdHJpbmc7XG4gICAgY3VycmVuY3lDb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRyYWN0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGNvbnRyYWN0PzogQ29udHJhY3RJbnRlcmZhY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q29udHJhY3RSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldENvbnRyYWN0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGNvbnRyYWN0PzogQ29udHJhY3RJbnRlcmZhY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TXVsdGlDb250cmFjdHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldE11bHRpQ29udHJhY3RzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGNvbnRyYWN0cz86IHtba2V5OiBzdHJpbmddOiBDb250cmFjdEludGVyZmFjZX07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdENvbnRyYWN0c1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHBhZ2luZ09wdGlvbnM/OiBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb250cmFjdHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgY29udHJhY3RzPzogQ29udHJhY3RJbnRlcmZhY2VbXTtcbiAgICBwYWdpbmdNZXRhZGF0YT86IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YUludGVyZmFjZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDb250cmFjdFJlcXVlc3RNdXRhdGlvbkludGVyZmFjZSB7XG4gICAgbmV0RD86IG51bWJlcjtcbiAgICBjdXJyZW5jeUNvZGU/OiBzdHJpbmc7XG4gICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIGRpbWVuc2lvbj86IHN0cmluZztcbiAgICBzaWduZWQ/OiBEYXRlO1xuICAgIGFjdGl2YXRlZD86IERhdGU7XG4gICAgZW5kPzogRGF0ZTtcbiAgICBtb2RpZmllZD86IERhdGU7XG4gICAgY3JlZGl0TGltaXQ/OiBudW1iZXI7XG4gICAgc3Vic2NyaXB0aW9uSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRDb250cmFjdFByaWNpbmdSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNvbnRyYWN0UmVxdWVzdEludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZD86IHN0cmluZztcbiAgICBtdXRhdGlvbnM/OiBVcGRhdGVDb250cmFjdFJlcXVlc3RNdXRhdGlvbkludGVyZmFjZVtdO1xuICAgIHBlcmZvcm1lZEJ5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNvbnRyYWN0UmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGNvbnRyYWN0PzogQ29udHJhY3RJbnRlcmZhY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlQ29udHJhY3RTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkPzogc3RyaW5nO1xuICAgIHN1YnNjcmlwdGlvbklkPzogc3RyaW5nO1xuICAgIGZyZXF1ZW5jeT86IGUuRnJlcXVlbmN5O1xufVxuXG4iXX0=
@@ -76,9 +76,9 @@ export class InvoiceTemplateApiService {
76
76
  .pipe(map(resp => UpdateTemplateDefaultTaxRatesResponse.fromProto(resp)));
77
77
  }
78
78
  }
79
- InvoiceTemplateApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: InvoiceTemplateApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
80
- InvoiceTemplateApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: InvoiceTemplateApiService, providedIn: 'root' });
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: InvoiceTemplateApiService, decorators: [{
79
+ InvoiceTemplateApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: InvoiceTemplateApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
80
+ InvoiceTemplateApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: InvoiceTemplateApiService, providedIn: 'root' });
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: InvoiceTemplateApiService, decorators: [{
82
82
  type: Injectable,
83
83
  args: [{ providedIn: 'root' }]
84
84
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
@@ -112,9 +112,9 @@ export class InvoiceApiService {
112
112
  .pipe(map(resp => CreatePaymentLinkResponse.fromProto(resp)));
113
113
  }
114
114
  }
115
- InvoiceApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: InvoiceApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
116
- InvoiceApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: InvoiceApiService, providedIn: 'root' });
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: InvoiceApiService, decorators: [{
115
+ InvoiceApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: InvoiceApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ InvoiceApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: InvoiceApiService, providedIn: 'root' });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: InvoiceApiService, decorators: [{
118
118
  type: Injectable,
119
119
  args: [{ providedIn: 'root' }]
120
120
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
@@ -165,9 +165,9 @@ export class MerchantApiService {
165
165
  .pipe(map(resp => GetRetailAccountBalanceResponse.fromProto(resp)));
166
166
  }
167
167
  }
168
- MerchantApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: MerchantApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
169
- MerchantApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: MerchantApiService, providedIn: 'root' });
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: MerchantApiService, decorators: [{
168
+ MerchantApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MerchantApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
169
+ MerchantApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MerchantApiService, providedIn: 'root' });
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MerchantApiService, decorators: [{
171
171
  type: Injectable,
172
172
  args: [{ providedIn: 'root' }]
173
173
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
@@ -5,17 +5,17 @@ export function enumStringToValue(enumRef, value) {
5
5
  return enumRef[value];
6
6
  }
7
7
  export class Access {
8
+ static fromProto(proto) {
9
+ let m = new Access();
10
+ m = Object.assign(m, proto);
11
+ return m;
12
+ }
8
13
  constructor(kwargs) {
9
14
  if (!kwargs) {
10
15
  return;
11
16
  }
12
17
  Object.assign(this, kwargs);
13
18
  }
14
- static fromProto(proto) {
15
- let m = new Access();
16
- m = Object.assign(m, proto);
17
- return m;
18
- }
19
19
  toApiJson() {
20
20
  const toReturn = {};
21
21
  if (typeof this.scope !== 'undefined') {
@@ -27,4 +27,4 @@ export class Access {
27
27
  return toReturn;
28
28
  }
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9iaWxsaW5nX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2Fubm90YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxNQUFNO0lBVWYsWUFBWSxNQUEwQjtRQUNsQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQVhELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFTRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBQztRQUN4RSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUFDO1FBQzNFLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQWNjZXNzIGltcGxlbWVudHMgaS5BY2Nlc3NJbnRlcmZhY2Uge1xuICAgIHNjb3BlOiBzdHJpbmdbXTtcbiAgICBwdWJsaWM6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBBY2Nlc3Mge1xuICAgICAgICBsZXQgbSA9IG5ldyBBY2Nlc3MoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkFjY2Vzc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNjb3BlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzY29wZSddID0gdGhpcy5zY29wZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wdWJsaWMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3B1YmxpYyddID0gdGhpcy5wdWJsaWM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9iaWxsaW5nX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2Fubm90YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxNQUFNO0lBSWYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDckIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBMEI7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBQztRQUN4RSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUFDO1FBQzNFLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQWNjZXNzIGltcGxlbWVudHMgaS5BY2Nlc3NJbnRlcmZhY2Uge1xuICAgIHNjb3BlOiBzdHJpbmdbXTtcbiAgICBwdWJsaWM6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBBY2Nlc3Mge1xuICAgICAgICBsZXQgbSA9IG5ldyBBY2Nlc3MoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkFjY2Vzc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNjb3BlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzY29wZSddID0gdGhpcy5zY29wZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wdWJsaWMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3B1YmxpYyddID0gdGhpcy5wdWJsaWM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=