@vendure/admin-ui 3.1.0-next.1 → 3.1.0-next.3

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 (117) hide show
  1. package/catalog/components/collection-data-table/collection-data-table.component.d.ts +3 -5
  2. package/catalog/components/collection-list/collection-list.component.d.ts +1 -0
  3. package/catalog/components/facet-list/facet-list.component.d.ts +1 -0
  4. package/catalog/components/product-list/product-list.component.d.ts +2 -0
  5. package/core/common/base-list.component.d.ts +13 -0
  6. package/core/common/version.d.ts +1 -1
  7. package/core/data/providers/base-data.service.d.ts +19 -2
  8. package/core/data/providers/collection-data.service.d.ts +2 -2
  9. package/core/data/providers/data.service.d.ts +3 -3
  10. package/core/data/query-result.d.ts +60 -4
  11. package/core/data/utils/add-custom-fields.d.ts +1 -1
  12. package/core/providers/alerts/alerts.service.d.ts +3 -0
  13. package/core/providers/auth/auth.service.d.ts +3 -1
  14. package/core/providers/data-table/data-table-config.service.d.ts +12 -0
  15. package/core/public_api.d.ts +1 -0
  16. package/core/shared/components/asset-preview-links/asset-preview-links.component.d.ts +1 -0
  17. package/core/shared/components/assets/assets.component.d.ts +2 -1
  18. package/core/shared/components/data-table-2/data-table2.component.d.ts +5 -5
  19. package/core/shared/components/data-table-filter-presets/filter-preset.service.d.ts +3 -4
  20. package/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.d.ts +21 -2
  21. package/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.d.ts +2 -1
  22. package/customer/components/customer-group-list/customer-group-list.component.d.ts +2 -0
  23. package/customer/components/customer-list/customer-list.component.d.ts +1 -0
  24. package/esm2022/catalog/components/collection-contents/collection-contents.component.mjs +1 -1
  25. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +10 -12
  26. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +1 -1
  27. package/esm2022/catalog/components/collection-list/collection-list.component.mjs +4 -3
  28. package/esm2022/catalog/components/facet-list/facet-list.component.mjs +14 -13
  29. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +1 -1
  30. package/esm2022/catalog/components/product-list/product-list.component.mjs +5 -3
  31. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +1 -1
  32. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +1 -1
  33. package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +1 -1
  34. package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +1 -1
  35. package/esm2022/core/common/base-list.component.mjs +20 -4
  36. package/esm2022/core/common/version.mjs +2 -2
  37. package/esm2022/core/components/app-shell/app-shell.component.mjs +3 -3
  38. package/esm2022/core/data/data.module.mjs +3 -3
  39. package/esm2022/core/data/providers/base-data.service.mjs +7 -8
  40. package/esm2022/core/data/providers/collection-data.service.mjs +3 -3
  41. package/esm2022/core/data/providers/data.service.mjs +5 -5
  42. package/esm2022/core/data/providers/product-data.service.mjs +4 -2
  43. package/esm2022/core/data/query-result.mjs +96 -10
  44. package/esm2022/core/data/utils/add-custom-fields.mjs +48 -30
  45. package/esm2022/core/providers/alerts/alerts.service.mjs +13 -3
  46. package/esm2022/core/providers/auth/auth.service.mjs +11 -7
  47. package/esm2022/core/providers/data-table/data-table-config.service.mjs +43 -0
  48. package/esm2022/core/public_api.mjs +2 -1
  49. package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +1 -1
  50. package/esm2022/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +3 -2
  51. package/esm2022/core/shared/components/assets/assets.component.mjs +10 -4
  52. package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +3 -3
  53. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +44 -52
  54. package/esm2022/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +23 -35
  55. package/esm2022/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +78 -13
  56. package/esm2022/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.mjs +33 -1
  57. package/esm2022/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +3 -2
  58. package/esm2022/core/shared/pipes/locale-base.pipe.mjs +2 -2
  59. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +1 -1
  60. package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +15 -13
  61. package/esm2022/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +1 -1
  62. package/esm2022/customer/components/customer-list/customer-list.component.mjs +27 -26
  63. package/esm2022/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +1 -1
  64. package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +14 -13
  65. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +1 -14
  66. package/esm2022/order/components/order-detail/order-detail.component.mjs +3 -3
  67. package/esm2022/order/components/order-editor/order-editor.component.mjs +1 -1
  68. package/esm2022/order/components/order-list/order-list.component.mjs +4 -3
  69. package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +1 -1
  70. package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +33 -32
  71. package/esm2022/settings/components/channel-list/channel-list.component.mjs +14 -13
  72. package/esm2022/settings/components/country-list/country-list.component.mjs +22 -21
  73. package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +22 -21
  74. package/esm2022/settings/components/role-list/role-list.component.mjs +14 -13
  75. package/esm2022/settings/components/seller-list/seller-list.component.mjs +19 -18
  76. package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +22 -21
  77. package/esm2022/settings/components/stock-location-list/stock-location-list.component.mjs +20 -19
  78. package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +14 -13
  79. package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +14 -13
  80. package/esm2022/settings/components/zone-list/zone-list.component.mjs +19 -18
  81. package/esm2022/settings/components/zone-member-list/zone-member-list.component.mjs +1 -1
  82. package/esm2022/system/components/job-list/job-list.component.mjs +1 -1
  83. package/fesm2022/vendure-admin-ui-catalog.mjs +35 -33
  84. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  85. package/fesm2022/vendure-admin-ui-core.mjs +536 -288
  86. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  87. package/fesm2022/vendure-admin-ui-customer.mjs +42 -39
  88. package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
  89. package/fesm2022/vendure-admin-ui-dashboard.mjs +1 -1
  90. package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
  91. package/fesm2022/vendure-admin-ui-marketing.mjs +13 -12
  92. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  93. package/fesm2022/vendure-admin-ui-order.mjs +7 -19
  94. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  95. package/fesm2022/vendure-admin-ui-react.mjs.map +1 -1
  96. package/fesm2022/vendure-admin-ui-settings.mjs +203 -192
  97. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  98. package/fesm2022/vendure-admin-ui-system.mjs +1 -1
  99. package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
  100. package/marketing/components/promotion-list/promotion-list.component.d.ts +1 -0
  101. package/order/components/order-data-table/order-data-table.component.d.ts +2 -3
  102. package/order/components/order-list/order-list.component.d.ts +1 -0
  103. package/package.json +14 -14
  104. package/settings/components/administrator-list/administrator-list.component.d.ts +1 -0
  105. package/settings/components/channel-list/channel-list.component.d.ts +1 -0
  106. package/settings/components/country-list/country-list.component.d.ts +1 -0
  107. package/settings/components/payment-method-list/payment-method-list.component.d.ts +1 -0
  108. package/settings/components/role-list/role-list.component.d.ts +1 -0
  109. package/settings/components/seller-list/seller-list.component.d.ts +1 -0
  110. package/settings/components/shipping-method-list/shipping-method-list.component.d.ts +1 -0
  111. package/settings/components/stock-location-list/stock-location-list.component.d.ts +1 -0
  112. package/settings/components/tax-category-list/tax-category-list.component.d.ts +1 -0
  113. package/settings/components/tax-rate-list/tax-rate-list.component.d.ts +1 -0
  114. package/settings/components/zone-list/zone-list.component.d.ts +1 -0
  115. package/static/i18n-messages/en.json +6 -2
  116. package/static/i18n-messages/pt_PT.json +1 -0
  117. package/static/styles/component/prosemirror.scss +2 -0
@@ -58,8 +58,8 @@ export class DataService {
58
58
  * ).mapSingle(data => data.product);
59
59
  * ```
60
60
  */
61
- query(query, variables, fetchPolicy = 'cache-and-network') {
62
- return this.baseDataService.query(query, variables, fetchPolicy);
61
+ query(query, variables, fetchPolicy = 'cache-and-network', options = {}) {
62
+ return this.baseDataService.query(query, variables, fetchPolicy, options);
63
63
  }
64
64
  /**
65
65
  * @description
@@ -78,8 +78,8 @@ export class DataService {
78
78
  * );
79
79
  * ```
80
80
  */
81
- mutate(mutation, variables, update) {
82
- return this.baseDataService.mutate(mutation, variables, update);
81
+ mutate(mutation, variables, update, options = {}) {
82
+ return this.baseDataService.mutate(mutation, variables, update, options);
83
83
  }
84
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DataService, deps: [{ token: i1.BaseDataService }], target: i0.ɵɵFactoryTarget.Injectable }); }
85
85
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DataService }); }
@@ -87,4 +87,4 @@ export class DataService {
87
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DataService, decorators: [{
88
88
  type: Injectable
89
89
  }], ctorParameters: () => [{ type: i1.BaseDataService }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9kYXRhL3Byb3ZpZGVycy9kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQUUzRTs7Ozs7Ozs7OztHQVVHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUFhcEIsZ0JBQWdCO0lBQ2hCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCRztJQUNILEtBQUssQ0FDRCxLQUE2QyxFQUM3QyxTQUFhLEVBQ2IsY0FBcUMsbUJBQW1CO1FBRXhELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxNQUFNLENBQ0YsUUFBZ0QsRUFDaEQsU0FBYSxFQUNiLE1BQTZCO1FBRTdCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDOzhHQTlFUSxXQUFXO2tIQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE11dGF0aW9uVXBkYXRlckZuLCBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3kgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcclxuaW1wb3J0IHsgVHlwZWREb2N1bWVudE5vZGUgfSBmcm9tICdAZ3JhcGhxbC10eXBlZC1kb2N1bWVudC1ub2RlL2NvcmUnO1xyXG5pbXBvcnQgeyBEb2N1bWVudE5vZGUgfSBmcm9tICdncmFwaHFsJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgUXVlcnlSZXN1bHQgfSBmcm9tICcuLi9xdWVyeS1yZXN1bHQnO1xyXG5cclxuaW1wb3J0IHsgQWRtaW5pc3RyYXRvckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9hZG1pbmlzdHJhdG9yLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhEYXRhU2VydmljZSB9IGZyb20gJy4vYXV0aC1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlRGF0YVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xpZW50RGF0YVNlcnZpY2UgfSBmcm9tICcuL2NsaWVudC1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb2xsZWN0aW9uRGF0YVNlcnZpY2UgfSBmcm9tICcuL2NvbGxlY3Rpb24tZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VzdG9tZXJEYXRhU2VydmljZSB9IGZyb20gJy4vY3VzdG9tZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmFjZXREYXRhU2VydmljZSB9IGZyb20gJy4vZmFjZXQtZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JkZXJEYXRhU2VydmljZSB9IGZyb20gJy4vb3JkZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvZHVjdERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9wcm9kdWN0LWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21vdGlvbkRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9wcm9tb3Rpb24tZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2V0dGluZ3NEYXRhU2VydmljZSB9IGZyb20gJy4vc2V0dGluZ3MtZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2hpcHBpbmdNZXRob2REYXRhU2VydmljZSB9IGZyb20gJy4vc2hpcHBpbmctbWV0aG9kLWRhdGEuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIFVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQWRtaW4gQVBJIHZpYSBHcmFwaFFMIHF1ZXJpZXMuIEludGVybmFsbHkgdGhpcyBzZXJ2aWNlIHVzZXMgdGhlXHJcbiAqIEFwb2xsbyBDbGllbnQsIHdoaWNoIG1lYW5zIGl0IG1haW50YWlucyBhIG5vcm1hbGl6ZWQgZW50aXR5IGNhY2hlLiBGb3IgdGhpcyByZWFzb24sIGl0IGlzXHJcbiAqIGFkdmlzYWJsZSB0byBhbHdheXMgc2VsZWN0IHRoZSBgaWRgIGZpZWxkIG9mIGFueSBlbnRpdHksIHdoaWNoIHdpbGwgYWxsb3cgdGhlIHJldHVybmVkIGRhdGFcclxuICogdG8gYmUgZWZmZWN0aXZlbHkgY2FjaGVkLlxyXG4gKlxyXG4gKiBAZG9jc0NhdGVnb3J5IHNlcnZpY2VzXHJcbiAqIEBkb2NzUGFnZSBEYXRhU2VydmljZVxyXG4gKiBAZG9jc1dlaWdodCAwXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEYXRhU2VydmljZSB7XHJcbiAgICAvKiogQGludGVybmFsICovIHByb21vdGlvbjogUHJvbW90aW9uRGF0YVNlcnZpY2U7XHJcbiAgICAvKiogQGludGVybmFsICovIGFkbWluaXN0cmF0b3I6IEFkbWluaXN0cmF0b3JEYXRhU2VydmljZTtcclxuICAgIC8qKiBAaW50ZXJuYWwgKi8gYXV0aDogQXV0aERhdGFTZXJ2aWNlO1xyXG4gICAgLyoqIEBpbnRlcm5hbCAqLyBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uRGF0YVNlcnZpY2U7XHJcbiAgICAvKiogQGludGVybmFsICovIHByb2R1Y3Q6IFByb2R1Y3REYXRhU2VydmljZTtcclxuICAgIC8qKiBAaW50ZXJuYWwgKi8gY2xpZW50OiBDbGllbnREYXRhU2VydmljZTtcclxuICAgIC8qKiBAaW50ZXJuYWwgKi8gZmFjZXQ6IEZhY2V0RGF0YVNlcnZpY2U7XHJcbiAgICAvKiogQGludGVybmFsICovIG9yZGVyOiBPcmRlckRhdGFTZXJ2aWNlO1xyXG4gICAgLyoqIEBpbnRlcm5hbCAqLyBzZXR0aW5nczogU2V0dGluZ3NEYXRhU2VydmljZTtcclxuICAgIC8qKiBAaW50ZXJuYWwgKi8gY3VzdG9tZXI6IEN1c3RvbWVyRGF0YVNlcnZpY2U7XHJcbiAgICAvKiogQGludGVybmFsICovIHNoaXBwaW5nTWV0aG9kOiBTaGlwcGluZ01ldGhvZERhdGFTZXJ2aWNlO1xyXG5cclxuICAgIC8qKiBAaW50ZXJuYWwgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFzZURhdGFTZXJ2aWNlOiBCYXNlRGF0YVNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLnByb21vdGlvbiA9IG5ldyBQcm9tb3Rpb25EYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuYWRtaW5pc3RyYXRvciA9IG5ldyBBZG1pbmlzdHJhdG9yRGF0YVNlcnZpY2UoYmFzZURhdGFTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLmF1dGggPSBuZXcgQXV0aERhdGFTZXJ2aWNlKGJhc2VEYXRhU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gbmV3IENvbGxlY3Rpb25EYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdCA9IG5ldyBQcm9kdWN0RGF0YVNlcnZpY2UoYmFzZURhdGFTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLmNsaWVudCA9IG5ldyBDbGllbnREYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuZmFjZXQgPSBuZXcgRmFjZXREYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMub3JkZXIgPSBuZXcgT3JkZXJEYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgU2V0dGluZ3NEYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tZXIgPSBuZXcgQ3VzdG9tZXJEYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuc2hpcHBpbmdNZXRob2QgPSBuZXcgU2hpcHBpbmdNZXRob2REYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBQZXJmb3JtIGEgR3JhcGhRTCBxdWVyeS4gUmV0dXJucyBhIHtAbGluayBRdWVyeVJlc3VsdH0gd2hpY2ggYWxsb3dzIGZ1cnRoZXIgY29udHJvbCBvdmVyXHJcbiAgICAgKiB0aGV5IHR5cGUgb2YgcmVzdWx0IHJldHVybmVkLCBlLmcuIHN0cmVhbSBvZiB2YWx1ZXMsIHNpbmdsZSB2YWx1ZSBldGMuXHJcbiAgICAgKlxyXG4gICAgICogQGV4YW1wbGVcclxuICAgICAqIGBgYHRzXHJcbiAgICAgKiBjb25zdCByZXN1bHQkID0gdGhpcy5kYXRhU2VydmljZS5xdWVyeShncWxgXHJcbiAgICAgKiAgIHF1ZXJ5IE15UXVlcnkoJGlkOiBJRCEpIHtcclxuICAgICAqICAgICBwcm9kdWN0KGlkOiAkaWQpIHtcclxuICAgICAqICAgICAgIGlkXHJcbiAgICAgKiAgICAgICBuYW1lXHJcbiAgICAgKiAgICAgICBzbHVnXHJcbiAgICAgKiAgICAgfVxyXG4gICAgICogICB9LFxyXG4gICAgICogICB7IGlkOiAxMjMgfSxcclxuICAgICAqICkubWFwU2luZ2xlKGRhdGEgPT4gZGF0YS5wcm9kdWN0KTtcclxuICAgICAqIGBgYFxyXG4gICAgICovXHJcbiAgICBxdWVyeTxULCBWIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxyXG4gICAgICAgIHF1ZXJ5OiBEb2N1bWVudE5vZGUgfCBUeXBlZERvY3VtZW50Tm9kZTxULCBWPixcclxuICAgICAgICB2YXJpYWJsZXM/OiBWLFxyXG4gICAgICAgIGZldGNoUG9saWN5OiBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3kgPSAnY2FjaGUtYW5kLW5ldHdvcmsnLFxyXG4gICAgKTogUXVlcnlSZXN1bHQ8VCwgVj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeShxdWVyeSwgdmFyaWFibGVzLCBmZXRjaFBvbGljeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFBlcmZvcm0gYSBHcmFwaFFMIG11dGF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEBleGFtcGxlXHJcbiAgICAgKiBgYGB0c1xyXG4gICAgICogY29uc3QgcmVzdWx0JCA9IHRoaXMuZGF0YVNlcnZpY2UubXV0YXRlKGdxbGBcclxuICAgICAqICAgbXV0YXRpb24gTXlNdXRhdGlvbigkQ29kZWdlbi5VcGRhdGVFbnRpdHlJbnB1dCEpIHtcclxuICAgICAqICAgICB1cGRhdGVFbnRpdHkoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICogICAgICAgaWRcclxuICAgICAqICAgICAgIG5hbWVcclxuICAgICAqICAgICB9XHJcbiAgICAgKiAgIH0sXHJcbiAgICAgKiAgIHsgQ29kZWdlbi51cGRhdGVFbnRpdHlJbnB1dCB9LFxyXG4gICAgICogKTtcclxuICAgICAqIGBgYFxyXG4gICAgICovXHJcbiAgICBtdXRhdGU8VCwgViBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihcclxuICAgICAgICBtdXRhdGlvbjogRG9jdW1lbnROb2RlIHwgVHlwZWREb2N1bWVudE5vZGU8VCwgVj4sXHJcbiAgICAgICAgdmFyaWFibGVzPzogVixcclxuICAgICAgICB1cGRhdGU/OiBNdXRhdGlvblVwZGF0ZXJGbjxUPixcclxuICAgICk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGUobXV0YXRpb24sIHZhcmlhYmxlcywgdXBkYXRlKTtcclxuICAgIH1cclxufVxyXG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9kYXRhL3Byb3ZpZGVycy9kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQUUzRTs7Ozs7Ozs7OztHQVVHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUFhcEIsZ0JBQWdCO0lBQ2hCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCRztJQUNILEtBQUssQ0FDRCxLQUE2QyxFQUM3QyxTQUFhLEVBQ2IsY0FBcUMsbUJBQW1CLEVBQ3hELFVBQWdDLEVBQUU7UUFFbEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxNQUFNLENBQ0YsUUFBZ0QsRUFDaEQsU0FBYSxFQUNiLE1BQTZCLEVBQzdCLFVBQWdDLEVBQUU7UUFFbEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDOzhHQWhGUSxXQUFXO2tIQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNdXRhdGlvblVwZGF0ZXJGbiwgV2F0Y2hRdWVyeUZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGUgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUXVlcnlSZXN1bHQgfSBmcm9tICcuLi9xdWVyeS1yZXN1bHQnO1xuXG5pbXBvcnQgeyBBZG1pbmlzdHJhdG9yRGF0YVNlcnZpY2UgfSBmcm9tICcuL2FkbWluaXN0cmF0b3ItZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhEYXRhU2VydmljZSB9IGZyb20gJy4vYXV0aC1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZURhdGFTZXJ2aWNlLCBFeHRlbmRlZFF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vYmFzZS1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xpZW50RGF0YVNlcnZpY2UgfSBmcm9tICcuL2NsaWVudC1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9jb2xsZWN0aW9uLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21lckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9jdXN0b21lci1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmFjZXREYXRhU2VydmljZSB9IGZyb20gJy4vZmFjZXQtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuL29yZGVyLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWN0RGF0YVNlcnZpY2UgfSBmcm9tICcuL3Byb2R1Y3QtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFByb21vdGlvbkRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9wcm9tb3Rpb24tZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFNldHRpbmdzRGF0YVNlcnZpY2UgfSBmcm9tICcuL3NldHRpbmdzLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBTaGlwcGluZ01ldGhvZERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9zaGlwcGluZy1tZXRob2QtZGF0YS5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQWRtaW4gQVBJIHZpYSBHcmFwaFFMIHF1ZXJpZXMuIEludGVybmFsbHkgdGhpcyBzZXJ2aWNlIHVzZXMgdGhlXG4gKiBBcG9sbG8gQ2xpZW50LCB3aGljaCBtZWFucyBpdCBtYWludGFpbnMgYSBub3JtYWxpemVkIGVudGl0eSBjYWNoZS4gRm9yIHRoaXMgcmVhc29uLCBpdCBpc1xuICogYWR2aXNhYmxlIHRvIGFsd2F5cyBzZWxlY3QgdGhlIGBpZGAgZmllbGQgb2YgYW55IGVudGl0eSwgd2hpY2ggd2lsbCBhbGxvdyB0aGUgcmV0dXJuZWQgZGF0YVxuICogdG8gYmUgZWZmZWN0aXZlbHkgY2FjaGVkLlxuICpcbiAqIEBkb2NzQ2F0ZWdvcnkgc2VydmljZXNcbiAqIEBkb2NzUGFnZSBEYXRhU2VydmljZVxuICogQGRvY3NXZWlnaHQgMFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGF0YVNlcnZpY2Uge1xuICAgIC8qKiBAaW50ZXJuYWwgKi8gcHJvbW90aW9uOiBQcm9tb3Rpb25EYXRhU2VydmljZTtcbiAgICAvKiogQGludGVybmFsICovIGFkbWluaXN0cmF0b3I6IEFkbWluaXN0cmF0b3JEYXRhU2VydmljZTtcbiAgICAvKiogQGludGVybmFsICovIGF1dGg6IEF1dGhEYXRhU2VydmljZTtcbiAgICAvKiogQGludGVybmFsICovIGNvbGxlY3Rpb246IENvbGxlY3Rpb25EYXRhU2VydmljZTtcbiAgICAvKiogQGludGVybmFsICovIHByb2R1Y3Q6IFByb2R1Y3REYXRhU2VydmljZTtcbiAgICAvKiogQGludGVybmFsICovIGNsaWVudDogQ2xpZW50RGF0YVNlcnZpY2U7XG4gICAgLyoqIEBpbnRlcm5hbCAqLyBmYWNldDogRmFjZXREYXRhU2VydmljZTtcbiAgICAvKiogQGludGVybmFsICovIG9yZGVyOiBPcmRlckRhdGFTZXJ2aWNlO1xuICAgIC8qKiBAaW50ZXJuYWwgKi8gc2V0dGluZ3M6IFNldHRpbmdzRGF0YVNlcnZpY2U7XG4gICAgLyoqIEBpbnRlcm5hbCAqLyBjdXN0b21lcjogQ3VzdG9tZXJEYXRhU2VydmljZTtcbiAgICAvKiogQGludGVybmFsICovIHNoaXBwaW5nTWV0aG9kOiBTaGlwcGluZ01ldGhvZERhdGFTZXJ2aWNlO1xuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFzZURhdGFTZXJ2aWNlOiBCYXNlRGF0YVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5wcm9tb3Rpb24gPSBuZXcgUHJvbW90aW9uRGF0YVNlcnZpY2UoYmFzZURhdGFTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5hZG1pbmlzdHJhdG9yID0gbmV3IEFkbWluaXN0cmF0b3JEYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xuICAgICAgICB0aGlzLmF1dGggPSBuZXcgQXV0aERhdGFTZXJ2aWNlKGJhc2VEYXRhU2VydmljZSk7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IG5ldyBDb2xsZWN0aW9uRGF0YVNlcnZpY2UoYmFzZURhdGFTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5wcm9kdWN0ID0gbmV3IFByb2R1Y3REYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xuICAgICAgICB0aGlzLmNsaWVudCA9IG5ldyBDbGllbnREYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xuICAgICAgICB0aGlzLmZhY2V0ID0gbmV3IEZhY2V0RGF0YVNlcnZpY2UoYmFzZURhdGFTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5vcmRlciA9IG5ldyBPcmRlckRhdGFTZXJ2aWNlKGJhc2VEYXRhU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgU2V0dGluZ3NEYXRhU2VydmljZShiYXNlRGF0YVNlcnZpY2UpO1xuICAgICAgICB0aGlzLmN1c3RvbWVyID0gbmV3IEN1c3RvbWVyRGF0YVNlcnZpY2UoYmFzZURhdGFTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zaGlwcGluZ01ldGhvZCA9IG5ldyBTaGlwcGluZ01ldGhvZERhdGFTZXJ2aWNlKGJhc2VEYXRhU2VydmljZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUGVyZm9ybSBhIEdyYXBoUUwgcXVlcnkuIFJldHVybnMgYSB7QGxpbmsgUXVlcnlSZXN1bHR9IHdoaWNoIGFsbG93cyBmdXJ0aGVyIGNvbnRyb2wgb3ZlclxuICAgICAqIHRoZXkgdHlwZSBvZiByZXN1bHQgcmV0dXJuZWQsIGUuZy4gc3RyZWFtIG9mIHZhbHVlcywgc2luZ2xlIHZhbHVlIGV0Yy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHNcbiAgICAgKiBjb25zdCByZXN1bHQkID0gdGhpcy5kYXRhU2VydmljZS5xdWVyeShncWxgXG4gICAgICogICBxdWVyeSBNeVF1ZXJ5KCRpZDogSUQhKSB7XG4gICAgICogICAgIHByb2R1Y3QoaWQ6ICRpZCkge1xuICAgICAqICAgICAgIGlkXG4gICAgICogICAgICAgbmFtZVxuICAgICAqICAgICAgIHNsdWdcbiAgICAgKiAgICAgfVxuICAgICAqICAgfSxcbiAgICAgKiAgIHsgaWQ6IDEyMyB9LFxuICAgICAqICkubWFwU2luZ2xlKGRhdGEgPT4gZGF0YS5wcm9kdWN0KTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBxdWVyeTxULCBWIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICAgICAgICBxdWVyeTogRG9jdW1lbnROb2RlIHwgVHlwZWREb2N1bWVudE5vZGU8VCwgVj4sXG4gICAgICAgIHZhcmlhYmxlcz86IFYsXG4gICAgICAgIGZldGNoUG9saWN5OiBXYXRjaFF1ZXJ5RmV0Y2hQb2xpY3kgPSAnY2FjaGUtYW5kLW5ldHdvcmsnLFxuICAgICAgICBvcHRpb25zOiBFeHRlbmRlZFF1ZXJ5T3B0aW9ucyA9IHt9LFxuICAgICk6IFF1ZXJ5UmVzdWx0PFQsIFY+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5KHF1ZXJ5LCB2YXJpYWJsZXMsIGZldGNoUG9saWN5LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBQZXJmb3JtIGEgR3JhcGhRTCBtdXRhdGlvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHNcbiAgICAgKiBjb25zdCByZXN1bHQkID0gdGhpcy5kYXRhU2VydmljZS5tdXRhdGUoZ3FsYFxuICAgICAqICAgbXV0YXRpb24gTXlNdXRhdGlvbigkQ29kZWdlbi5VcGRhdGVFbnRpdHlJbnB1dCEpIHtcbiAgICAgKiAgICAgdXBkYXRlRW50aXR5KGlucHV0OiAkaW5wdXQpIHtcbiAgICAgKiAgICAgICBpZFxuICAgICAqICAgICAgIG5hbWVcbiAgICAgKiAgICAgfVxuICAgICAqICAgfSxcbiAgICAgKiAgIHsgQ29kZWdlbi51cGRhdGVFbnRpdHlJbnB1dCB9LFxuICAgICAqICk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgbXV0YXRlPFQsIFYgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4oXG4gICAgICAgIG11dGF0aW9uOiBEb2N1bWVudE5vZGUgfCBUeXBlZERvY3VtZW50Tm9kZTxULCBWPixcbiAgICAgICAgdmFyaWFibGVzPzogVixcbiAgICAgICAgdXBkYXRlPzogTXV0YXRpb25VcGRhdGVyRm48VD4sXG4gICAgICAgIG9wdGlvbnM6IEV4dGVuZGVkUXVlcnlPcHRpb25zID0ge30sXG4gICAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGUobXV0YXRpb24sIHZhcmlhYmxlcywgdXBkYXRlLCBvcHRpb25zKTtcbiAgICB9XG59XG4iXX0=
@@ -185,7 +185,9 @@ export class ProductDataService {
185
185
  createdAt: SortOrder.DESC,
186
186
  },
187
187
  },
188
- });
188
+ }, undefined,
189
+ // By default do not load custom fields in the list view
190
+ { includeCustomFields: [] });
189
191
  }
190
192
  getAsset(id) {
191
193
  return this.baseDataService.query(GET_ASSET, {
@@ -254,4 +256,4 @@ export class ProductDataService {
254
256
  });
255
257
  }
256
258
  }
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvcHJvdmlkZXJzL3Byb2R1Y3QtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUNILDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsY0FBYyxFQUNkLDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLGFBQWEsRUFDYixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFVBQVUsRUFDVixTQUFTLEVBQ1QsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLG9DQUFvQyxFQUNwQywrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixPQUFPLEVBQ1AsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixnQ0FBZ0MsRUFDaEMsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixlQUFlLEVBQ2YsWUFBWSxFQUNaLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixVQUFVLEdBQ2IsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQ0gsZ0NBQWdDLEVBQ2hDLE9BQU8sRUFDUCxnQ0FBZ0MsR0FDbkMsTUFBTSxxQ0FBcUMsQ0FBQztBQUk3QyxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdB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SztTQUNSLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQW9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQztRQUN2QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUM3QixZQUFZLEVBQ1o7WUFDSSxPQUFPO1NBQ1YsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUE2QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUM5QixVQUFVLEVBQ1Y7WUFDSSxLQUFLO1NBQ1IsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUE2QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUM5QixVQUFVLEVBQ1Y7WUFDSSxLQUFLO1NBQ1IsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQzlCLFVBQVUsRUFDVjtZQUNJLEVBQUU7U0FDTCxDQUNKLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwaWNrIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9waWNrJztcclxuXHJcbmltcG9ydCAqIGFzIENvZGVnZW4gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7IFNvcnRPcmRlciB9IGZyb20gJy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gICAgQUREX09QVElPTl9HUk9VUF9UT19QUk9EVUNULFxyXG4gICAgQUREX09QVElPTl9UT19HUk9VUCxcclxuICAgIEFTU0lHTl9QUk9EVUNUU19UT19DSEFOTkVMLFxyXG4gICAgQVNTSUdOX1ZBUklBTlRTX1RPX0NIQU5ORUwsXHJcbiAgICBDUkVBVEVfQVNTRVRTLFxyXG4gICAgQ1JFQVRFX1BST0RVQ1QsXHJcbiAgICBDUkVBVEVfUFJPRFVDVF9PUFRJT05fR1JPVVAsXHJcbiAgICBDUkVBVEVfUFJPRFVDVF9WQVJJQU5UUyxcclxuICAgIENSRUFURV9UQUcsXHJcbiAgICBERUxFVEVfQVNTRVRTLFxyXG4gICAgREVMRVRFX1BST0RVQ1QsXHJcbiAgICBERUxFVEVfUFJPRFVDVF9PUFRJT04sXHJcbiAgICBERUxFVEVfUFJPRFVDVF9WQVJJQU5ULFxyXG4gICAgREVMRVRFX1BST0RVQ1RfVkFSSUFOVFMsXHJcbiAgICBERUxFVEVfUFJPRFVDVFMsXHJcbiAgICBERUxFVEVfVEFHLFxyXG4gICAgR0VUX0FTU0VULFxyXG4gICAgR0VUX0FTU0VUX0xJU1QsXHJcbiAgICBHRVRfUFJPRFVDVF9MSVNULFxyXG4gICAgR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQLFxyXG4gICAgR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQUyxcclxuICAgIEdFVF9QUk9EVUNUX1NJTVBMRSxcclxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlQsXHJcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1QsXHJcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1RfRk9SX1BST0RVQ1QsXHJcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1RfU0lNUExFLFxyXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVF9PUFRJT05TLFxyXG4gICAgR0VUX1BST0RVQ1RfV0lUSF9WQVJJQU5UUyxcclxuICAgIEdFVF9UQUcsXHJcbiAgICBHRVRfVEFHX0xJU1QsXHJcbiAgICBQUk9EVUNUX1NFTEVDVE9SX1NFQVJDSCxcclxuICAgIFJFTU9WRV9PUFRJT05fR1JPVVBfRlJPTV9QUk9EVUNULFxyXG4gICAgUkVNT1ZFX1BST0RVQ1RTX0ZST01fQ0hBTk5FTCxcclxuICAgIFJFTU9WRV9WQVJJQU5UU19GUk9NX0NIQU5ORUwsXHJcbiAgICBTRUFSQ0hfUFJPRFVDVFMsXHJcbiAgICBVUERBVEVfQVNTRVQsXHJcbiAgICBVUERBVEVfUFJPRFVDVCxcclxuICAgIFVQREFURV9QUk9EVUNUX09QVElPTixcclxuICAgIFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCxcclxuICAgIFVQREFURV9QUk9EVUNUX1ZBUklBTlRTLFxyXG4gICAgVVBEQVRFX1RBRyxcclxufSBmcm9tICcuLi9kZWZpbml0aW9ucy9wcm9kdWN0LWRlZmluaXRpb25zJztcclxuaW1wb3J0IHtcclxuICAgIEdFVF9QRU5ESU5HX1NFQVJDSF9JTkRFWF9VUERBVEVTLFxyXG4gICAgUkVJTkRFWCxcclxuICAgIFJVTl9QRU5ESU5HX1NFQVJDSF9JTkRFWF9VUERBVEVTLFxyXG59IGZyb20gJy4uL2RlZmluaXRpb25zL3NldHRpbmdzLWRlZmluaXRpb25zJztcclxuXHJcbmltcG9ydCB7IEJhc2VEYXRhU2VydmljZSB9IGZyb20gJy4vYmFzZS1kYXRhLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFByb2R1Y3REYXRhU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhc2VEYXRhU2VydmljZTogQmFzZURhdGFTZXJ2aWNlKSB7fVxyXG5cclxuICAgIHNlYXJjaFByb2R1Y3RzKHRlcm06IHN0cmluZywgdGFrZSA9IDEwLCBza2lwID0gMCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLlNlYXJjaFByb2R1Y3RzUXVlcnksIENvZGVnZW4uU2VhcmNoUHJvZHVjdHNRdWVyeVZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIFNFQVJDSF9QUk9EVUNUUyxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgIHRha2UsXHJcbiAgICAgICAgICAgICAgICAgICAgc2tpcCxcclxuICAgICAgICAgICAgICAgICAgICBncm91cEJ5UHJvZHVjdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm9kdWN0U2VsZWN0b3JTZWFyY2godGVybTogc3RyaW5nLCB0YWtlOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uUHJvZHVjdFNlbGVjdG9yU2VhcmNoUXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uUHJvZHVjdFNlbGVjdG9yU2VhcmNoUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KFBST0RVQ1RfU0VMRUNUT1JfU0VBUkNILCB7XHJcbiAgICAgICAgICAgIHRha2UsXHJcbiAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVpbmRleCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uUmVpbmRleE11dGF0aW9uPihSRUlOREVYKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQZW5kaW5nU2VhcmNoSW5kZXhVcGRhdGVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldFBlbmRpbmdTZWFyY2hJbmRleFVwZGF0ZXNRdWVyeT4oXHJcbiAgICAgICAgICAgIEdFVF9QRU5ESU5HX1NFQVJDSF9JTkRFWF9VUERBVEVTLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcnVuUGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uUnVuUGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlc011dGF0aW9uPihcclxuICAgICAgICAgICAgUlVOX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0cyhvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldFByb2R1Y3RMaXN0UXVlcnksIENvZGVnZW4uR2V0UHJvZHVjdExpc3RRdWVyeVZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIEdFVF9QUk9EVUNUX0xJU1QsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0KGlkOiBzdHJpbmcsIHZhcmlhbnRMaXN0T3B0aW9ucz86IENvZGVnZW4uUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0V2l0aFZhcmlhbnRzUXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFdpdGhWYXJpYW50c1F1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9XSVRIX1ZBUklBTlRTLCB7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICB2YXJpYW50TGlzdE9wdGlvbnMsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdFNpbXBsZShpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RTaW1wbGVRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0U2ltcGxlUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1NJTVBMRSwge1xyXG4gICAgICAgICAgICBpZCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQcm9kdWN0VmFyaWFudHNTaW1wbGUob3B0aW9uczogQ29kZWdlbi5Qcm9kdWN0VmFyaWFudExpc3RPcHRpb25zLCBwcm9kdWN0SWQ/OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0U2ltcGxlUXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0U2ltcGxlUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9TSU1QTEUsIHsgb3B0aW9ucywgcHJvZHVjdElkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50cyhvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0UXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0UXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVCwgeyBvcHRpb25zIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50c0ZvclByb2R1Y3Qob3B0aW9uczogQ29kZWdlbi5Qcm9kdWN0VmFyaWFudExpc3RPcHRpb25zLCBwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RGb3JQcm9kdWN0UXVlcnksXHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0Rm9yUHJvZHVjdFF1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1RfRk9SX1BST0RVQ1QsIHsgb3B0aW9ucywgcHJvZHVjdElkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50KGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XHJcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudFF1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5ULCB7IGlkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50c09wdGlvbnMoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudE9wdGlvbnNRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudE9wdGlvbnNRdWVyeVZhcmlhYmxlc1xyXG4gICAgICAgID4oR0VUX1BST0RVQ1RfVkFSSUFOVF9PUFRJT05TLCB7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y3RPcHRpb25Hcm91cChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cFF1ZXJ5LFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cFF1ZXJ5VmFyaWFibGVzXHJcbiAgICAgICAgPihHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVAsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUHJvZHVjdChwcm9kdWN0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RJbnB1dCkge1xyXG4gICAgICAgIGNvbnN0IGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlcyA9IHtcclxuICAgICAgICAgICAgaW5wdXQ6IHBpY2socHJvZHVjdCwgW1xyXG4gICAgICAgICAgICAgICAgJ2VuYWJsZWQnLFxyXG4gICAgICAgICAgICAgICAgJ3RyYW5zbGF0aW9ucycsXHJcbiAgICAgICAgICAgICAgICAnY3VzdG9tRmllbGRzJyxcclxuICAgICAgICAgICAgICAgICdhc3NldElkcycsXHJcbiAgICAgICAgICAgICAgICAnZmVhdHVyZWRBc3NldElkJyxcclxuICAgICAgICAgICAgICAgICdmYWNldFZhbHVlSWRzJyxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KENSRUFURV9QUk9EVUNULCBpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdChwcm9kdWN0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RJbnB1dCkge1xyXG4gICAgICAgIGNvbnN0IGlucHV0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlcyA9IHtcclxuICAgICAgICAgICAgaW5wdXQ6IHBpY2socHJvZHVjdCwgW1xyXG4gICAgICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgICAgICdlbmFibGVkJyxcclxuICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxyXG4gICAgICAgICAgICAgICAgJ2N1c3RvbUZpZWxkcycsXHJcbiAgICAgICAgICAgICAgICAnYXNzZXRJZHMnLFxyXG4gICAgICAgICAgICAgICAgJ2ZlYXR1cmVkQXNzZXRJZCcsXHJcbiAgICAgICAgICAgICAgICAnZmFjZXRWYWx1ZUlkcycsXHJcbiAgICAgICAgICAgIF0pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0TXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihVUERBVEVfUFJPRFVDVCwgaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVByb2R1Y3QoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1QsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlUHJvZHVjdHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVFMsIHtcclxuICAgICAgICAgICAgaWRzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVByb2R1Y3RWYXJpYW50cyhpbnB1dDogQ29kZWdlbi5DcmVhdGVQcm9kdWN0VmFyaWFudElucHV0W10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihDUkVBVEVfUFJPRFVDVF9WQVJJQU5UUywge1xyXG4gICAgICAgICAgICBpbnB1dCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVQcm9kdWN0VmFyaWFudHModmFyaWFudHM6IENvZGVnZW4uVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dFtdKSB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uVXBkYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb25WYXJpYWJsZXMgPSB7XHJcbiAgICAgICAgICAgIGlucHV0OiB2YXJpYW50cy5tYXAoXHJcbiAgICAgICAgICAgICAgICBwaWNrKFtcclxuICAgICAgICAgICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAgICAgICAgICdlbmFibGVkJyxcclxuICAgICAgICAgICAgICAgICAgICAndHJhbnNsYXRpb25zJyxcclxuICAgICAgICAgICAgICAgICAgICAnc2t1JyxcclxuICAgICAgICAgICAgICAgICAgICAncHJpY2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICd0YXhDYXRlZ29yeUlkJyxcclxuICAgICAgICAgICAgICAgICAgICAnZmFjZXRWYWx1ZUlkcycsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2ZlYXR1cmVkQXNzZXRJZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2Fzc2V0SWRzJyxcclxuICAgICAgICAgICAgICAgICAgICAnb3B0aW9uSWRzJyxcclxuICAgICAgICAgICAgICAgICAgICAndHJhY2tJbnZlbnRvcnknLFxyXG4gICAgICAgICAgICAgICAgICAgICdvdXRPZlN0b2NrVGhyZXNob2xkJyxcclxuICAgICAgICAgICAgICAgICAgICAndXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgJ3N0b2NrT25IYW5kJyxcclxuICAgICAgICAgICAgICAgICAgICAnY3VzdG9tRmllbGRzJyxcclxuICAgICAgICAgICAgICAgIF0pLFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudHNNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oVVBEQVRFX1BST0RVQ1RfVkFSSUFOVFMsIGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQcm9kdWN0VmFyaWFudChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0VmFyaWFudE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KERFTEVURV9QUk9EVUNUX1ZBUklBTlQsIHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlUHJvZHVjdFZhcmlhbnRzKGlkczogc3RyaW5nW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVF9WQVJJQU5UUywge1xyXG4gICAgICAgICAgICBpZHMsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUHJvZHVjdE9wdGlvbkdyb3Vwcyhwcm9kdWN0T3B0aW9uR3JvdXA6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQpIHtcclxuICAgICAgICBjb25zdCBpbnB1dDogQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvblZhcmlhYmxlcyA9IHtcclxuICAgICAgICAgICAgaW5wdXQ6IHByb2R1Y3RPcHRpb25Hcm91cCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KENSRUFURV9QUk9EVUNUX09QVElPTl9HUk9VUCwgaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0KHZhcmlhYmxlczogQ29kZWdlbi5BZGRPcHRpb25Hcm91cFRvUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5BZGRPcHRpb25Hcm91cFRvUHJvZHVjdE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KEFERF9PUFRJT05fR1JPVVBfVE9fUFJPRFVDVCwgdmFyaWFibGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRPcHRpb25Ub0dyb3VwKGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RPcHRpb25JbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uQWRkT3B0aW9uVG9Hcm91cE11dGF0aW9uLFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFkZE9wdGlvblRvR3JvdXBNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQUREX09QVElPTl9UT19HUk9VUCwgeyBpbnB1dCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQcm9kdWN0T3B0aW9uKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RPcHRpb25NdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0T3B0aW9uTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KERFTEVURV9QUk9EVUNUX09QVElPTiwgeyBpZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVPcHRpb25Hcm91cEZyb21Qcm9kdWN0KHZhcmlhYmxlczogQ29kZWdlbi5SZW1vdmVPcHRpb25Hcm91cEZyb21Qcm9kdWN0TXV0YXRpb25WYXJpYWJsZXMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3RNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVPcHRpb25Hcm91cEZyb21Qcm9kdWN0TXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFJFTU9WRV9PUFRJT05fR1JPVVBfRlJPTV9QUk9EVUNULCB2YXJpYWJsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVByb2R1Y3RPcHRpb24oaW5wdXQ6IENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbklucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbk11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihVUERBVEVfUFJPRFVDVF9PUFRJT04sIHtcclxuICAgICAgICAgICAgaW5wdXQ6IHBpY2soaW5wdXQsIFsnaWQnLCAnY29kZScsICd0cmFuc2xhdGlvbnMnLCAnY3VzdG9tRmllbGRzJ10pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cChpbnB1dDogQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XHJcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCwge1xyXG4gICAgICAgICAgICBpbnB1dDogcGljayhpbnB1dCwgWydpZCcsICdjb2RlJywgJ3RyYW5zbGF0aW9ucycsICdjdXN0b21GaWVsZHMnXSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjdE9wdGlvbkdyb3VwcyhmaWx0ZXJUZXJtPzogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cHNRdWVyeSxcclxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0T3B0aW9uR3JvdXBzUXVlcnlWYXJpYWJsZXNcclxuICAgICAgICA+KEdFVF9QUk9EVUNUX09QVElPTl9HUk9VUFMsIHtcclxuICAgICAgICAgICAgZmlsdGVyVGVybSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBc3NldExpc3QodGFrZSA9IDEwLCBza2lwID0gMCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldEFzc2V0TGlzdFF1ZXJ5LCBDb2RlZ2VuLkdldEFzc2V0TGlzdFF1ZXJ5VmFyaWFibGVzPihcclxuICAgICAgICAgICAgR0VUX0FTU0VUX0xJU1QsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBza2lwLFxyXG4gICAgICAgICAgICAgICAgICAgIHRha2UsXHJcbiAgICAgICAgICAgICAgICAgICAgc29ydDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFNvcnRPcmRlci5ERVNDLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXNzZXQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldEFzc2V0UXVlcnksIENvZGVnZW4uR2V0QXNzZXRRdWVyeVZhcmlhYmxlcz4oR0VUX0FTU0VULCB7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUFzc2V0cyhmaWxlczogRmlsZVtdKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVBc3NldHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQ1JFQVRFX0FTU0VUUywge1xyXG4gICAgICAgICAgICBpbnB1dDogZmlsZXMubWFwKGZpbGUgPT4gKHsgZmlsZSB9KSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQXNzZXQoaW5wdXQ6IENvZGVnZW4uVXBkYXRlQXNzZXRJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5VcGRhdGVBc3NldE11dGF0aW9uLCBDb2RlZ2VuLlVwZGF0ZUFzc2V0TXV0YXRpb25WYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBVUERBVEVfQVNTRVQsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQXNzZXRzKGlkczogc3RyaW5nW10sIGZvcmNlOiBib29sZWFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVBc3NldHNNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oREVMRVRFX0FTU0VUUywge1xyXG4gICAgICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgICAgICAgYXNzZXRJZHM6IGlkcyxcclxuICAgICAgICAgICAgICAgIGZvcmNlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzc2lnblByb2R1Y3RzVG9DaGFubmVsKGlucHV0OiBDb2RlZ2VuLkFzc2lnblByb2R1Y3RzVG9DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFzc2lnblByb2R1Y3RzVG9DaGFubmVsTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQVNTSUdOX1BST0RVQ1RTX1RPX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWxNdXRhdGlvbixcclxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsTXV0YXRpb25WYXJpYWJsZXNcclxuICAgICAgICA+KFJFTU9WRV9QUk9EVUNUU19GUk9NX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXNzaWduVmFyaWFudHNUb0NoYW5uZWwoaW5wdXQ6IENvZGVnZW4uQXNzaWduUHJvZHVjdFZhcmlhbnRzVG9DaGFubmVsSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxyXG4gICAgICAgICAgICBDb2RlZ2VuLkFzc2lnblZhcmlhbnRzVG9DaGFubmVsTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduVmFyaWFudHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xyXG4gICAgICAgID4oQVNTSUdOX1ZBUklBTlRTX1RPX0NIQU5ORUwsIHtcclxuICAgICAgICAgICAgaW5wdXQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0VmFyaWFudHNGcm9tQ2hhbm5lbElucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcclxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVWYXJpYW50c0Zyb21DaGFubmVsTXV0YXRpb24sXHJcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbE11dGF0aW9uVmFyaWFibGVzXHJcbiAgICAgICAgPihSRU1PVkVfVkFSSUFOVFNfRlJPTV9DSEFOTkVMLCB7XHJcbiAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRhZyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0VGFnUXVlcnksIENvZGVnZW4uR2V0VGFnUXVlcnlWYXJpYWJsZXM+KEdFVF9UQUcsIHsgaWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFnTGlzdChvcHRpb25zPzogQ29kZWdlbi5UYWdMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldFRhZ0xpc3RRdWVyeSwgQ29kZWdlbi5HZXRUYWdMaXN0UXVlcnlWYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBHRVRfVEFHX0xJU1QsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVUYWcoaW5wdXQ6IENvZGVnZW4uQ3JlYXRlVGFnSW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uQ3JlYXRlVGFnTXV0YXRpb24sIENvZGVnZW4uQ3JlYXRlVGFnTXV0YXRpb25WYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBDUkVBVEVfVEFHLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpbnB1dCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVRhZyhpbnB1dDogQ29kZWdlbi5VcGRhdGVUYWdJbnB1dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5VcGRhdGVUYWdNdXRhdGlvbiwgQ29kZWdlbi5VcGRhdGVUYWdNdXRhdGlvblZhcmlhYmxlcz4oXHJcbiAgICAgICAgICAgIFVQREFURV9UQUcsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlVGFnKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uRGVsZXRlVGFnTXV0YXRpb24sIENvZGVnZW4uRGVsZXRlVGFnTXV0YXRpb25WYXJpYWJsZXM+KFxyXG4gICAgICAgICAgICBERUxFVEVfVEFHLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvcHJvdmlkZXJzL3Byb2R1Y3QtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUNILDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsY0FBYyxFQUNkLDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLGFBQWEsRUFDYixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFVBQVUsRUFDVixTQUFTLEVBQ1QsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLG9DQUFvQyxFQUNwQywrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixPQUFPLEVBQ1AsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixnQ0FBZ0MsRUFDaEMsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixlQUFlLEVBQ2YsWUFBWSxFQUNaLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixVQUFVLEdBQ2IsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQ0gsZ0NBQWdDLEVBQ2hDLE9BQU8sRUFDUCxnQ0FBZ0MsR0FDbkMsTUFBTSxxQ0FBcUMsQ0FBQztBQUk3QyxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdB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QUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUdoQyw0QkFBNEIsRUFBRTtZQUM1QixLQUFLO1NBQ1IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBb0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQzdCLFlBQVksRUFDWjtZQUNJLE9BQU87U0FDVixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTZCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQzlCLFVBQVUsRUFDVjtZQUNJLEtBQUs7U0FDUixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTZCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQzlCLFVBQVUsRUFDVjtZQUNJLEtBQUs7U0FDUixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDOUIsVUFBVSxFQUNWO1lBQ0ksRUFBRTtTQUNMLENBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBpY2sgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3BpY2snO1xuXG5pbXBvcnQgKiBhcyBDb2RlZ2VuIGZyb20gJy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xuaW1wb3J0IHsgU29ydE9yZGVyIH0gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XG5pbXBvcnQge1xuICAgIEFERF9PUFRJT05fR1JPVVBfVE9fUFJPRFVDVCxcbiAgICBBRERfT1BUSU9OX1RPX0dST1VQLFxuICAgIEFTU0lHTl9QUk9EVUNUU19UT19DSEFOTkVMLFxuICAgIEFTU0lHTl9WQVJJQU5UU19UT19DSEFOTkVMLFxuICAgIENSRUFURV9BU1NFVFMsXG4gICAgQ1JFQVRFX1BST0RVQ1QsXG4gICAgQ1JFQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQLFxuICAgIENSRUFURV9QUk9EVUNUX1ZBUklBTlRTLFxuICAgIENSRUFURV9UQUcsXG4gICAgREVMRVRFX0FTU0VUUyxcbiAgICBERUxFVEVfUFJPRFVDVCxcbiAgICBERUxFVEVfUFJPRFVDVF9PUFRJT04sXG4gICAgREVMRVRFX1BST0RVQ1RfVkFSSUFOVCxcbiAgICBERUxFVEVfUFJPRFVDVF9WQVJJQU5UUyxcbiAgICBERUxFVEVfUFJPRFVDVFMsXG4gICAgREVMRVRFX1RBRyxcbiAgICBHRVRfQVNTRVQsXG4gICAgR0VUX0FTU0VUX0xJU1QsXG4gICAgR0VUX1BST0RVQ1RfTElTVCxcbiAgICBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVAsXG4gICAgR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQUyxcbiAgICBHRVRfUFJPRFVDVF9TSU1QTEUsXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVCxcbiAgICBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1QsXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNUX0ZPUl9QUk9EVUNULFxuICAgIEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9TSU1QTEUsXG4gICAgR0VUX1BST0RVQ1RfVkFSSUFOVF9PUFRJT05TLFxuICAgIEdFVF9QUk9EVUNUX1dJVEhfVkFSSUFOVFMsXG4gICAgR0VUX1RBRyxcbiAgICBHRVRfVEFHX0xJU1QsXG4gICAgUFJPRFVDVF9TRUxFQ1RPUl9TRUFSQ0gsXG4gICAgUkVNT1ZFX09QVElPTl9HUk9VUF9GUk9NX1BST0RVQ1QsXG4gICAgUkVNT1ZFX1BST0RVQ1RTX0ZST01fQ0hBTk5FTCxcbiAgICBSRU1PVkVfVkFSSUFOVFNfRlJPTV9DSEFOTkVMLFxuICAgIFNFQVJDSF9QUk9EVUNUUyxcbiAgICBVUERBVEVfQVNTRVQsXG4gICAgVVBEQVRFX1BST0RVQ1QsXG4gICAgVVBEQVRFX1BST0RVQ1RfT1BUSU9OLFxuICAgIFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCxcbiAgICBVUERBVEVfUFJPRFVDVF9WQVJJQU5UUyxcbiAgICBVUERBVEVfVEFHLFxufSBmcm9tICcuLi9kZWZpbml0aW9ucy9wcm9kdWN0LWRlZmluaXRpb25zJztcbmltcG9ydCB7XG4gICAgR0VUX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXG4gICAgUkVJTkRFWCxcbiAgICBSVU5fUEVORElOR19TRUFSQ0hfSU5ERVhfVVBEQVRFUyxcbn0gZnJvbSAnLi4vZGVmaW5pdGlvbnMvc2V0dGluZ3MtZGVmaW5pdGlvbnMnO1xuXG5pbXBvcnQgeyBCYXNlRGF0YVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtZGF0YS5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3REYXRhU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBiYXNlRGF0YVNlcnZpY2U6IEJhc2VEYXRhU2VydmljZSkge31cblxuICAgIHNlYXJjaFByb2R1Y3RzKHRlcm06IHN0cmluZywgdGFrZSA9IDEwLCBza2lwID0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8Q29kZWdlbi5TZWFyY2hQcm9kdWN0c1F1ZXJ5LCBDb2RlZ2VuLlNlYXJjaFByb2R1Y3RzUXVlcnlWYXJpYWJsZXM+KFxuICAgICAgICAgICAgU0VBUkNIX1BST0RVQ1RTLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgIHRha2UsXG4gICAgICAgICAgICAgICAgICAgIHNraXAsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQnlQcm9kdWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb2R1Y3RTZWxlY3RvclNlYXJjaCh0ZXJtOiBzdHJpbmcsIHRha2U6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XG4gICAgICAgICAgICBDb2RlZ2VuLlByb2R1Y3RTZWxlY3RvclNlYXJjaFF1ZXJ5LFxuICAgICAgICAgICAgQ29kZWdlbi5Qcm9kdWN0U2VsZWN0b3JTZWFyY2hRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KFBST0RVQ1RfU0VMRUNUT1JfU0VBUkNILCB7XG4gICAgICAgICAgICB0YWtlLFxuICAgICAgICAgICAgdGVybSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVpbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxDb2RlZ2VuLlJlaW5kZXhNdXRhdGlvbj4oUkVJTkRFWCk7XG4gICAgfVxuXG4gICAgZ2V0UGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0UGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlc1F1ZXJ5PihcbiAgICAgICAgICAgIEdFVF9QRU5ESU5HX1NFQVJDSF9JTkRFWF9VUERBVEVTLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJ1blBlbmRpbmdTZWFyY2hJbmRleFVwZGF0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5SdW5QZW5kaW5nU2VhcmNoSW5kZXhVcGRhdGVzTXV0YXRpb24+KFxuICAgICAgICAgICAgUlVOX1BFTkRJTkdfU0VBUkNIX0lOREVYX1VQREFURVMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0UHJvZHVjdHMob3B0aW9uczogQ29kZWdlbi5Qcm9kdWN0TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0UHJvZHVjdExpc3RRdWVyeSwgQ29kZWdlbi5HZXRQcm9kdWN0TGlzdFF1ZXJ5VmFyaWFibGVzPihcbiAgICAgICAgICAgIEdFVF9QUk9EVUNUX0xJU1QsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0UHJvZHVjdChpZDogc3RyaW5nLCB2YXJpYW50TGlzdE9wdGlvbnM/OiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0V2l0aFZhcmlhbnRzUXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RXaXRoVmFyaWFudHNRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1dJVEhfVkFSSUFOVFMsIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgdmFyaWFudExpc3RPcHRpb25zLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRQcm9kdWN0U2ltcGxlKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0U2ltcGxlUXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RTaW1wbGVRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1NJTVBMRSwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFByb2R1Y3RWYXJpYW50c1NpbXBsZShvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMsIHByb2R1Y3RJZD86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50TGlzdFNpbXBsZVF1ZXJ5LFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RTaW1wbGVRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9TSU1QTEUsIHsgb3B0aW9ucywgcHJvZHVjdElkIH0pO1xuICAgIH1cblxuICAgIGdldFByb2R1Y3RWYXJpYW50cyhvcHRpb25zOiBDb2RlZ2VuLlByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RRdWVyeSxcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdFZhcmlhbnRMaXN0UXVlcnlWYXJpYWJsZXNcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1QsIHsgb3B0aW9ucyB9KTtcbiAgICB9XG5cbiAgICBnZXRQcm9kdWN0VmFyaWFudHNGb3JQcm9kdWN0KG9wdGlvbnM6IENvZGVnZW4uUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucywgcHJvZHVjdElkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudExpc3RGb3JQcm9kdWN0UXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50TGlzdEZvclByb2R1Y3RRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVF9GT1JfUFJPRFVDVCwgeyBvcHRpb25zLCBwcm9kdWN0SWQgfSk7XG4gICAgfVxuXG4gICAgZ2V0UHJvZHVjdFZhcmlhbnQoaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50UXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50UXVlcnlWYXJpYWJsZXNcbiAgICAgICAgPihHRVRfUFJPRFVDVF9WQVJJQU5ULCB7IGlkIH0pO1xuICAgIH1cblxuICAgIGdldFByb2R1Y3RWYXJpYW50c09wdGlvbnMoaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8XG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RWYXJpYW50T3B0aW9uc1F1ZXJ5LFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0VmFyaWFudE9wdGlvbnNRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX1ZBUklBTlRfT1BUSU9OUywge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFByb2R1Y3RPcHRpb25Hcm91cChpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxcbiAgICAgICAgICAgIENvZGVnZW4uR2V0UHJvZHVjdE9wdGlvbkdyb3VwUXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cFF1ZXJ5VmFyaWFibGVzXG4gICAgICAgID4oR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQLCB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUHJvZHVjdChwcm9kdWN0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RJbnB1dCkge1xuICAgICAgICBjb25zdCBpbnB1dDogQ29kZWdlbi5DcmVhdGVQcm9kdWN0TXV0YXRpb25WYXJpYWJsZXMgPSB7XG4gICAgICAgICAgICBpbnB1dDogcGljayhwcm9kdWN0LCBbXG4gICAgICAgICAgICAgICAgJ2VuYWJsZWQnLFxuICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxuICAgICAgICAgICAgICAgICdjdXN0b21GaWVsZHMnLFxuICAgICAgICAgICAgICAgICdhc3NldElkcycsXG4gICAgICAgICAgICAgICAgJ2ZlYXR1cmVkQXNzZXRJZCcsXG4gICAgICAgICAgICAgICAgJ2ZhY2V0VmFsdWVJZHMnLFxuICAgICAgICAgICAgXSksXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oQ1JFQVRFX1BST0RVQ1QsIGlucHV0KTtcbiAgICB9XG5cbiAgICB1cGRhdGVQcm9kdWN0KHByb2R1Y3Q6IENvZGVnZW4uVXBkYXRlUHJvZHVjdElucHV0KSB7XG4gICAgICAgIGNvbnN0IGlucHV0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlcyA9IHtcbiAgICAgICAgICAgIGlucHV0OiBwaWNrKHByb2R1Y3QsIFtcbiAgICAgICAgICAgICAgICAnaWQnLFxuICAgICAgICAgICAgICAgICdlbmFibGVkJyxcbiAgICAgICAgICAgICAgICAndHJhbnNsYXRpb25zJyxcbiAgICAgICAgICAgICAgICAnY3VzdG9tRmllbGRzJyxcbiAgICAgICAgICAgICAgICAnYXNzZXRJZHMnLFxuICAgICAgICAgICAgICAgICdmZWF0dXJlZEFzc2V0SWQnLFxuICAgICAgICAgICAgICAgICdmYWNldFZhbHVlSWRzJyxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0TXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KFVQREFURV9QUk9EVUNULCBpbnB1dCk7XG4gICAgfVxuXG4gICAgZGVsZXRlUHJvZHVjdChpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1QsIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVQcm9kdWN0cyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RzTXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RzTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVFMsIHtcbiAgICAgICAgICAgIGlkcyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUHJvZHVjdFZhcmlhbnRzKGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVByb2R1Y3RWYXJpYW50SW5wdXRbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0VmFyaWFudHNNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihDUkVBVEVfUFJPRFVDVF9WQVJJQU5UUywge1xuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZVByb2R1Y3RWYXJpYW50cyh2YXJpYW50czogQ29kZWdlbi5VcGRhdGVQcm9kdWN0VmFyaWFudElucHV0W10pIHtcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uVXBkYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb25WYXJpYWJsZXMgPSB7XG4gICAgICAgICAgICBpbnB1dDogdmFyaWFudHMubWFwKFxuICAgICAgICAgICAgICAgIHBpY2soW1xuICAgICAgICAgICAgICAgICAgICAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAnZW5hYmxlZCcsXG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2xhdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICAnc2t1JyxcbiAgICAgICAgICAgICAgICAgICAgJ3ByaWNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ3RheENhdGVnb3J5SWQnLFxuICAgICAgICAgICAgICAgICAgICAnZmFjZXRWYWx1ZUlkcycsXG4gICAgICAgICAgICAgICAgICAgICdmZWF0dXJlZEFzc2V0SWQnLFxuICAgICAgICAgICAgICAgICAgICAnYXNzZXRJZHMnLFxuICAgICAgICAgICAgICAgICAgICAnb3B0aW9uSWRzJyxcbiAgICAgICAgICAgICAgICAgICAgJ3RyYWNrSW52ZW50b3J5JyxcbiAgICAgICAgICAgICAgICAgICAgJ291dE9mU3RvY2tUaHJlc2hvbGQnLFxuICAgICAgICAgICAgICAgICAgICAndXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZCcsXG4gICAgICAgICAgICAgICAgICAgICdzdG9ja09uSGFuZCcsXG4gICAgICAgICAgICAgICAgICAgICdjdXN0b21GaWVsZHMnLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oVVBEQVRFX1BST0RVQ1RfVkFSSUFOVFMsIGlucHV0KTtcbiAgICB9XG5cbiAgICBkZWxldGVQcm9kdWN0VmFyaWFudChpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50TXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50TXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVF9WQVJJQU5ULCB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlUHJvZHVjdFZhcmlhbnRzKGlkczogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdFZhcmlhbnRzTXV0YXRpb24sXG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZVByb2R1Y3RWYXJpYW50c011dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oREVMRVRFX1BST0RVQ1RfVkFSSUFOVFMsIHtcbiAgICAgICAgICAgIGlkcyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUHJvZHVjdE9wdGlvbkdyb3Vwcyhwcm9kdWN0T3B0aW9uR3JvdXA6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQpIHtcbiAgICAgICAgY29uc3QgaW5wdXQ6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb25WYXJpYWJsZXMgPSB7XG4gICAgICAgICAgICBpbnB1dDogcHJvZHVjdE9wdGlvbkdyb3VwLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihDUkVBVEVfUFJPRFVDVF9PUFRJT05fR1JPVVAsIGlucHV0KTtcbiAgICB9XG5cbiAgICBhZGRPcHRpb25Hcm91cFRvUHJvZHVjdCh2YXJpYWJsZXM6IENvZGVnZW4uQWRkT3B0aW9uR3JvdXBUb1Byb2R1Y3RNdXRhdGlvblZhcmlhYmxlcykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPFxuICAgICAgICAgICAgQ29kZWdlbi5BZGRPcHRpb25Hcm91cFRvUHJvZHVjdE11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5BZGRPcHRpb25Hcm91cFRvUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oQUREX09QVElPTl9HUk9VUF9UT19QUk9EVUNULCB2YXJpYWJsZXMpO1xuICAgIH1cblxuICAgIGFkZE9wdGlvblRvR3JvdXAoaW5wdXQ6IENvZGVnZW4uQ3JlYXRlUHJvZHVjdE9wdGlvbklucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkFkZE9wdGlvblRvR3JvdXBNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQWRkT3B0aW9uVG9Hcm91cE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oQUREX09QVElPTl9UT19HUk9VUCwgeyBpbnB1dCB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVQcm9kdWN0T3B0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uRGVsZXRlUHJvZHVjdE9wdGlvbk11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVQcm9kdWN0T3B0aW9uTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihERUxFVEVfUFJPRFVDVF9PUFRJT04sIHsgaWQgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdCh2YXJpYWJsZXM6IENvZGVnZW4uUmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3RNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oUkVNT1ZFX09QVElPTl9HUk9VUF9GUk9NX1BST0RVQ1QsIHZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlUHJvZHVjdE9wdGlvbihpbnB1dDogQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uVXBkYXRlUHJvZHVjdE9wdGlvbk11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihVUERBVEVfUFJPRFVDVF9PUFRJT04sIHtcbiAgICAgICAgICAgIGlucHV0OiBwaWNrKGlucHV0LCBbJ2lkJywgJ2NvZGUnLCAndHJhbnNsYXRpb25zJywgJ2N1c3RvbUZpZWxkcyddKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwKGlucHV0OiBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cElucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLlVwZGF0ZVByb2R1Y3RPcHRpb25Hcm91cE11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5VcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCwge1xuICAgICAgICAgICAgaW5wdXQ6IHBpY2soaW5wdXQsIFsnaWQnLCAnY29kZScsICd0cmFuc2xhdGlvbnMnLCAnY3VzdG9tRmllbGRzJ10pLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRQcm9kdWN0T3B0aW9uR3JvdXBzKGZpbHRlclRlcm0/OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PFxuICAgICAgICAgICAgQ29kZWdlbi5HZXRQcm9kdWN0T3B0aW9uR3JvdXBzUXVlcnksXG4gICAgICAgICAgICBDb2RlZ2VuLkdldFByb2R1Y3RPcHRpb25Hcm91cHNRdWVyeVZhcmlhYmxlc1xuICAgICAgICA+KEdFVF9QUk9EVUNUX09QVElPTl9HUk9VUFMsIHtcbiAgICAgICAgICAgIGZpbHRlclRlcm0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFzc2V0TGlzdCh0YWtlID0gMTAsIHNraXAgPSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldEFzc2V0TGlzdFF1ZXJ5LCBDb2RlZ2VuLkdldEFzc2V0TGlzdFF1ZXJ5VmFyaWFibGVzPihcbiAgICAgICAgICAgIEdFVF9BU1NFVF9MSVNULFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgc2tpcCxcbiAgICAgICAgICAgICAgICAgICAgdGFrZSxcbiAgICAgICAgICAgICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0OiBTb3J0T3JkZXIuREVTQyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQgZG8gbm90IGxvYWQgY3VzdG9tIGZpZWxkcyBpbiB0aGUgbGlzdCB2aWV3XG4gICAgICAgICAgICB7IGluY2x1ZGVDdXN0b21GaWVsZHM6IFtdIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QXNzZXQoaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UucXVlcnk8Q29kZWdlbi5HZXRBc3NldFF1ZXJ5LCBDb2RlZ2VuLkdldEFzc2V0UXVlcnlWYXJpYWJsZXM+KEdFVF9BU1NFVCwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNyZWF0ZUFzc2V0cyhmaWxlczogRmlsZVtdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkNyZWF0ZUFzc2V0c011dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5DcmVhdGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KENSRUFURV9BU1NFVFMsIHtcbiAgICAgICAgICAgIGlucHV0OiBmaWxlcy5tYXAoZmlsZSA9PiAoeyBmaWxlIH0pKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQXNzZXQoaW5wdXQ6IENvZGVnZW4uVXBkYXRlQXNzZXRJbnB1dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRGF0YVNlcnZpY2UubXV0YXRlPENvZGVnZW4uVXBkYXRlQXNzZXRNdXRhdGlvbiwgQ29kZWdlbi5VcGRhdGVBc3NldE11dGF0aW9uVmFyaWFibGVzPihcbiAgICAgICAgICAgIFVQREFURV9BU1NFVCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGVsZXRlQXNzZXRzKGlkczogc3RyaW5nW10sIGZvcmNlOiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLkRlbGV0ZUFzc2V0c011dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5EZWxldGVBc3NldHNNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KERFTEVURV9BU1NFVFMsIHtcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgYXNzZXRJZHM6IGlkcyxcbiAgICAgICAgICAgICAgICBmb3JjZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzc2lnblByb2R1Y3RzVG9DaGFubmVsKGlucHV0OiBDb2RlZ2VuLkFzc2lnblByb2R1Y3RzVG9DaGFubmVsSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KEFTU0lHTl9QUk9EVUNUU19UT19DSEFOTkVMLCB7XG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbE11dGF0aW9uLFxuICAgICAgICAgICAgQ29kZWdlbi5SZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsTXV0YXRpb25WYXJpYWJsZXNcbiAgICAgICAgPihSRU1PVkVfUFJPRFVDVFNfRlJPTV9DSEFOTkVMLCB7XG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXNzaWduVmFyaWFudHNUb0NoYW5uZWwoaW5wdXQ6IENvZGVnZW4uQXNzaWduUHJvZHVjdFZhcmlhbnRzVG9DaGFubmVsSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduVmFyaWFudHNUb0NoYW5uZWxNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uQXNzaWduVmFyaWFudHNUb0NoYW5uZWxNdXRhdGlvblZhcmlhYmxlc1xuICAgICAgICA+KEFTU0lHTl9WQVJJQU5UU19UT19DSEFOTkVMLCB7XG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbChpbnB1dDogQ29kZWdlbi5SZW1vdmVQcm9kdWN0VmFyaWFudHNGcm9tQ2hhbm5lbElucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8XG4gICAgICAgICAgICBDb2RlZ2VuLlJlbW92ZVZhcmlhbnRzRnJvbUNoYW5uZWxNdXRhdGlvbixcbiAgICAgICAgICAgIENvZGVnZW4uUmVtb3ZlVmFyaWFudHNGcm9tQ2hhbm5lbE11dGF0aW9uVmFyaWFibGVzXG4gICAgICAgID4oUkVNT1ZFX1ZBUklBTlRTX0ZST01fQ0hBTk5FTCwge1xuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFRhZyhpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5xdWVyeTxDb2RlZ2VuLkdldFRhZ1F1ZXJ5LCBDb2RlZ2VuLkdldFRhZ1F1ZXJ5VmFyaWFibGVzPihHRVRfVEFHLCB7IGlkIH0pO1xuICAgIH1cblxuICAgIGdldFRhZ0xpc3Qob3B0aW9ucz86IENvZGVnZW4uVGFnTGlzdE9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLnF1ZXJ5PENvZGVnZW4uR2V0VGFnTGlzdFF1ZXJ5LCBDb2RlZ2VuLkdldFRhZ0xpc3RRdWVyeVZhcmlhYmxlcz4oXG4gICAgICAgICAgICBHRVRfVEFHX0xJU1QsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY3JlYXRlVGFnKGlucHV0OiBDb2RlZ2VuLkNyZWF0ZVRhZ0lucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5DcmVhdGVUYWdNdXRhdGlvbiwgQ29kZWdlbi5DcmVhdGVUYWdNdXRhdGlvblZhcmlhYmxlcz4oXG4gICAgICAgICAgICBDUkVBVEVfVEFHLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVUYWcoaW5wdXQ6IENvZGVnZW4uVXBkYXRlVGFnSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZURhdGFTZXJ2aWNlLm11dGF0ZTxDb2RlZ2VuLlVwZGF0ZVRhZ011dGF0aW9uLCBDb2RlZ2VuLlVwZGF0ZVRhZ011dGF0aW9uVmFyaWFibGVzPihcbiAgICAgICAgICAgIFVQREFURV9UQUcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZVRhZyhpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VEYXRhU2VydmljZS5tdXRhdGU8Q29kZWdlbi5EZWxldGVUYWdNdXRhdGlvbiwgQ29kZWdlbi5EZWxldGVUYWdNdXRhdGlvblZhcmlhYmxlcz4oXG4gICAgICAgICAgICBERUxFVEVfVEFHLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -1,8 +1,9 @@
1
1
  import { NetworkStatus } from '@apollo/client/core';
2
2
  import { notNullOrUndefined } from '@vendure/common/lib/shared-utils';
3
- import { merge, Subject } from 'rxjs';
4
- import { distinctUntilChanged, filter, finalize, map, skip, take, takeUntil, tap } from 'rxjs/operators';
3
+ import { merge, Observable, Subject } from 'rxjs';
4
+ import { distinctUntilChanged, filter, finalize, map, skip, take, takeUntil } from 'rxjs/operators';
5
5
  import { GET_USER_STATUS } from './definitions/client-definitions';
6
+ import { addCustomFields } from './utils/add-custom-fields';
6
7
  /**
7
8
  * @description
8
9
  * This class wraps the Apollo Angular QueryRef object and exposes some getters
@@ -12,11 +13,27 @@ import { GET_USER_STATUS } from './definitions/client-definitions';
12
13
  * @docsPage DataService
13
14
  */
14
15
  export class QueryResult {
15
- constructor(queryRef, apollo) {
16
+ constructor(queryRef, apollo, customFieldMap) {
16
17
  this.queryRef = queryRef;
17
18
  this.apollo = apollo;
19
+ this.customFieldMap = customFieldMap;
20
+ /**
21
+ * Causes any subscriptions to the QueryRef to complete, via the use
22
+ * of the `takeUntil` operator.
23
+ */
18
24
  this.completed$ = new Subject();
19
- this.valueChanges = queryRef.valueChanges;
25
+ /**
26
+ * This Subject is used to emit new values from the QueryRef.valueChanges Observable.
27
+ * We use this rather than directly subscribing to the QueryRef.valueChanges Observable
28
+ * so that we are able to change the QueryRef and re-subscribe when necessary.
29
+ */
30
+ this.valueChangeSubject = new Subject();
31
+ /**
32
+ * We keep track of the QueryRefs which have been subscribed to so that we can avoid
33
+ * re-subscribing to the same QueryRef multiple times.
34
+ */
35
+ this.queryRefSubscribed = new WeakMap();
36
+ this.lastQuery = queryRef.options.query;
20
37
  }
21
38
  /**
22
39
  * @description
@@ -28,12 +45,40 @@ export class QueryResult {
28
45
  }).valueChanges;
29
46
  const activeChannelId$ = userStatus$.pipe(map(data => data.data.userStatus.activeChannelId), filter(notNullOrUndefined), distinctUntilChanged(), skip(1), takeUntil(this.completed$));
30
47
  const loggedOut$ = userStatus$.pipe(map(data => data.data.userStatus.isLoggedIn), distinctUntilChanged(), skip(1), filter(isLoggedIn => !isLoggedIn), takeUntil(this.completed$));
31
- this.valueChanges = merge(activeChannelId$, this.queryRef.valueChanges).pipe(tap(val => {
48
+ merge(activeChannelId$, this.valueChangeSubject)
49
+ .pipe(takeUntil(loggedOut$), takeUntil(this.completed$))
50
+ .subscribe(val => {
32
51
  if (typeof val === 'string') {
33
52
  new Promise(resolve => setTimeout(resolve, 50)).then(() => this.queryRef.refetch());
34
53
  }
35
- }), filter(val => typeof val !== 'string'), takeUntil(loggedOut$), takeUntil(this.completed$));
36
- this.queryRef.valueChanges = this.valueChanges;
54
+ });
55
+ return this;
56
+ }
57
+ /**
58
+ * @description
59
+ * Re-fetch this query whenever the custom fields change, updating the query to include the
60
+ * specified custom fields.
61
+ *
62
+ * @since 3.0.4
63
+ */
64
+ refetchOnCustomFieldsChange(customFieldsToInclude$) {
65
+ customFieldsToInclude$
66
+ .pipe(filter(customFields => {
67
+ const newQuery = addCustomFields(this.lastQuery, this.customFieldMap, customFields);
68
+ const hasChanged = JSON.stringify(newQuery) !== JSON.stringify(this.lastQuery);
69
+ return hasChanged;
70
+ }), takeUntil(this.completed$))
71
+ .subscribe(customFields => {
72
+ const newQuery = addCustomFields(this.lastQuery, this.customFieldMap, customFields);
73
+ this.lastQuery = newQuery;
74
+ const queryRef = this.apollo.watchQuery({
75
+ query: newQuery,
76
+ variables: this.queryRef.variables,
77
+ fetchPolicy: this.queryRef.options.fetchPolicy,
78
+ });
79
+ this.queryRef = queryRef;
80
+ this.subscribeToQueryRef(queryRef);
81
+ });
37
82
  return this;
38
83
  }
39
84
  /**
@@ -41,7 +86,7 @@ export class QueryResult {
41
86
  * Returns an Observable which emits a single result and then completes.
42
87
  */
43
88
  get single$() {
44
- return this.valueChanges.pipe(filter(result => result.networkStatus === NetworkStatus.ready), take(1), map(result => result.data), finalize(() => {
89
+ return this.currentQueryRefValueChanges.pipe(filter(result => result.networkStatus === NetworkStatus.ready), take(1), map(result => result.data), finalize(() => {
45
90
  this.completed$.next();
46
91
  this.completed$.complete();
47
92
  }));
@@ -51,7 +96,7 @@ export class QueryResult {
51
96
  * Returns an Observable which emits until unsubscribed.
52
97
  */
53
98
  get stream$() {
54
- return this.valueChanges.pipe(filter(result => result.networkStatus === NetworkStatus.ready), map(result => result.data), finalize(() => {
99
+ return this.currentQueryRefValueChanges.pipe(filter(result => result.networkStatus === NetworkStatus.ready), map(result => result.data), finalize(() => {
55
100
  this.completed$.next();
56
101
  this.completed$.complete();
57
102
  }));
@@ -73,5 +118,46 @@ export class QueryResult {
73
118
  mapStream(mapFn) {
74
119
  return this.stream$.pipe(map(mapFn));
75
120
  }
121
+ /**
122
+ * @description
123
+ * Signals to the internal Observable subscriptions that they should complete.
124
+ */
125
+ destroy() {
126
+ this.completed$.next();
127
+ this.completed$.complete();
128
+ }
129
+ /**
130
+ * @description
131
+ * Returns an Observable which emits the current value of the QueryRef.valueChanges Observable.
132
+ *
133
+ * We wrap the valueChanges Observable in a new Observable so that we can have a lazy
134
+ * evaluation of the valueChanges Observable. That is, we only fire the HTTP request when
135
+ * the returned Observable is subscribed to.
136
+ */
137
+ get currentQueryRefValueChanges() {
138
+ return new Observable(subscriber => {
139
+ if (!this.queryRefSubscribed.get(this.queryRef)) {
140
+ this.subscribeToQueryRef(this.queryRef);
141
+ this.queryRefSubscribed.set(this.queryRef, true);
142
+ }
143
+ this.valueChangeSubject.subscribe(subscriber);
144
+ return () => {
145
+ this.queryRefSubscribed.delete(this.queryRef);
146
+ };
147
+ });
148
+ }
149
+ /**
150
+ * @description
151
+ * Subscribes to the valueChanges Observable of the given QueryRef, and stores the subscription
152
+ * so that it can be unsubscribed from when the QueryRef changes.
153
+ */
154
+ subscribeToQueryRef(queryRef) {
155
+ if (this.valueChangesSubscription) {
156
+ this.valueChangesSubscription.unsubscribe();
157
+ }
158
+ this.valueChangesSubscription = queryRef.valueChanges
159
+ .pipe(takeUntil(this.completed$))
160
+ .subscribe(this.valueChangeSubject);
161
+ }
76
162
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9kYXRhL3F1ZXJ5LXJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFlBQW9CLFFBQXdCLEVBQVUsTUFBYztRQUFoRCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFJcEUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFIN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzlDLENBQUM7SUFLRDs7O09BR0c7SUFDSCxzQkFBc0I7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQXFCO1lBQzNELEtBQUssRUFBRSxlQUFlO1NBQ3pCLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDaEIsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUNyQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFDakQsTUFBTSxDQUFD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QUksS0FBcUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcG9sbG9RdWVyeVJlc3VsdCwgTmV0d29ya1N0YXR1cyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xyXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC11dGlscyc7XHJcbmltcG9ydCB7IEFwb2xsbywgUXVlcnlSZWYgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XHJcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHNraXAsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgR2V0VXNlclN0YXR1c1F1ZXJ5IH0gZnJvbSAnLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcblxyXG5pbXBvcnQgeyBHRVRfVVNFUl9TVEFUVVMgfSBmcm9tICcuL2RlZmluaXRpb25zL2NsaWVudC1kZWZpbml0aW9ucyc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIFRoaXMgY2xhc3Mgd3JhcHMgdGhlIEFwb2xsbyBBbmd1bGFyIFF1ZXJ5UmVmIG9iamVjdCBhbmQgZXhwb3NlcyBzb21lIGdldHRlcnNcclxuICogZm9yIGNvbnZlbmllbmNlLlxyXG4gKlxyXG4gKiBAZG9jc0NhdGVnb3J5IHNlcnZpY2VzXHJcbiAqIEBkb2NzUGFnZSBEYXRhU2VydmljZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFF1ZXJ5UmVzdWx0PFQsIFYgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBxdWVyeVJlZjogUXVlcnlSZWY8VCwgVj4sIHByaXZhdGUgYXBvbGxvOiBBcG9sbG8pIHtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlcyA9IHF1ZXJ5UmVmLnZhbHVlQ2hhbmdlcztcclxuICAgIH1cclxuXHJcbiAgICBjb21wbGV0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgdmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPEFwb2xsb1F1ZXJ5UmVzdWx0PFQ+PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogUmUtZmV0Y2ggdGhpcyBxdWVyeSB3aGVuZXZlciB0aGUgYWN0aXZlIENoYW5uZWwgY2hhbmdlcy5cclxuICAgICAqL1xyXG4gICAgcmVmZXRjaE9uQ2hhbm5lbENoYW5nZSgpOiBRdWVyeVJlc3VsdDxULCBWPiB7XHJcbiAgICAgICAgY29uc3QgdXNlclN0YXR1cyQgPSB0aGlzLmFwb2xsby53YXRjaFF1ZXJ5PEdldFVzZXJTdGF0dXNRdWVyeT4oe1xyXG4gICAgICAgICAgICBxdWVyeTogR0VUX1VTRVJfU1RBVFVTLFxyXG4gICAgICAgIH0pLnZhbHVlQ2hhbmdlcztcclxuICAgICAgICBjb25zdCBhY3RpdmVDaGFubmVsSWQkID0gdXNlclN0YXR1cyQucGlwZShcclxuICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YS5kYXRhLnVzZXJTdGF0dXMuYWN0aXZlQ2hhbm5lbElkKSxcclxuICAgICAgICAgICAgZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIHNraXAoMSksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBsZXRlZCQpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgbG9nZ2VkT3V0JCA9IHVzZXJTdGF0dXMkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChkYXRhID0+IGRhdGEuZGF0YS51c2VyU3RhdHVzLmlzTG9nZ2VkSW4pLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICBza2lwKDEpLFxyXG4gICAgICAgICAgICBmaWx0ZXIoaXNMb2dnZWRJbiA9PiAhaXNMb2dnZWRJbiksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBsZXRlZCQpLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VzID0gbWVyZ2UoYWN0aXZlQ2hhbm5lbElkJCwgdGhpcy5xdWVyeVJlZi52YWx1ZUNoYW5nZXMpLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCh2YWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSkudGhlbigoKSA9PiB0aGlzLnF1ZXJ5UmVmLnJlZmV0Y2goKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBmaWx0ZXI8YW55Pih2YWwgPT4gdHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwobG9nZ2VkT3V0JCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBsZXRlZCQpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5xdWVyeVJlZi52YWx1ZUNoYW5nZXMgPSB0aGlzLnZhbHVlQ2hhbmdlcztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogUmV0dXJucyBhbiBPYnNlcnZhYmxlIHdoaWNoIGVtaXRzIGEgc2luZ2xlIHJlc3VsdCBhbmQgdGhlbiBjb21wbGV0ZXMuXHJcbiAgICAgKi9cclxuICAgIGdldCBzaW5nbGUkKCk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgICBmaWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5uZXR3b3JrU3RhdHVzID09PSBOZXR3b3JrU3RhdHVzLnJlYWR5KSxcclxuICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHQuZGF0YSksXHJcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVkJC5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlZCQuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogUmV0dXJucyBhbiBPYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHVudGlsIHVuc3Vic2NyaWJlZC5cclxuICAgICAqL1xyXG4gICAgZ2V0IHN0cmVhbSQoKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIGZpbHRlcihyZXN1bHQgPT4gcmVzdWx0Lm5ldHdvcmtTdGF0dXMgPT09IE5ldHdvcmtTdGF0dXMucmVhZHkpLFxyXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5kYXRhKSxcclxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZWQkLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVkJC5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByZWYoKTogUXVlcnlSZWY8VCwgVj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5UmVmO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBSZXR1cm5zIGEgc2luZ2xlLXJlc3VsdCBPYnNlcnZhYmxlIGFmdGVyIGFwcGx5aW5nIHRoZSBtYXAgZnVuY3Rpb24uXHJcbiAgICAgKi9cclxuICAgIG1hcFNpbmdsZTxSPihtYXBGbjogKGl0ZW06IFQpID0+IFIpOiBPYnNlcnZhYmxlPFI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaW5nbGUkLnBpcGUobWFwKG1hcEZuKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFJldHVybnMgYSBtdWx0aXBsZS1yZXN1bHQgT2JzZXJ2YWJsZSBhZnRlciBhcHBseWluZyB0aGUgbWFwIGZ1bmN0aW9uLlxyXG4gICAgICovXHJcbiAgICBtYXBTdHJlYW08Uj4obWFwRm46IChpdGVtOiBUKSA9PiBSKTogT2JzZXJ2YWJsZTxSPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyZWFtJC5waXBlKG1hcChtYXBGbikpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9kYXRhL3F1ZXJ5LXJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFDWSxRQUF3QixFQUN4QixNQUFjLEVBQ2QsY0FBZ0Q7UUFGaEQsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFrQztRQUs1RDs7O1dBR0c7UUFDSyxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU96Qzs7OztXQUlHO1FBQ0ssdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQXdCLENBQUM7UUFDakU7OztXQUdHO1FBQ0ssdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7UUF4QmhFLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUMsQ0FBQztJQStCRDs7O09BR0c7SUFDSCxzQkFBc0I7UUFDbEIsTUFBTSxXQUFXLEdB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Q0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcG9sbG9RdWVyeVJlc3VsdCwgTmV0d29ya1N0YXR1cyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xuaW1wb3J0IHsgQXBvbGxvLCBRdWVyeVJlZiB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZmluYWxpemUsIG1hcCwgc2tpcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDdXN0b21GaWVsZENvbmZpZywgR2V0VXNlclN0YXR1c1F1ZXJ5IH0gZnJvbSAnLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XG5cbmltcG9ydCB7IEdFVF9VU0VSX1NUQVRVUyB9IGZyb20gJy4vZGVmaW5pdGlvbnMvY2xpZW50LWRlZmluaXRpb25zJztcbmltcG9ydCB7IGFkZEN1c3RvbUZpZWxkcyB9IGZyb20gJy4vdXRpbHMvYWRkLWN1c3RvbS1maWVsZHMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBjbGFzcyB3cmFwcyB0aGUgQXBvbGxvIEFuZ3VsYXIgUXVlcnlSZWYgb2JqZWN0IGFuZCBleHBvc2VzIHNvbWUgZ2V0dGVyc1xuICogZm9yIGNvbnZlbmllbmNlLlxuICpcbiAqIEBkb2NzQ2F0ZWdvcnkgc2VydmljZXNcbiAqIEBkb2NzUGFnZSBEYXRhU2VydmljZVxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlSZXN1bHQ8VCwgViBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcXVlcnlSZWY6IFF1ZXJ5UmVmPFQsIFY+LFxuICAgICAgICBwcml2YXRlIGFwb2xsbzogQXBvbGxvLFxuICAgICAgICBwcml2YXRlIGN1c3RvbUZpZWxkTWFwOiBNYXA8c3RyaW5nLCBDdXN0b21GaWVsZENvbmZpZ1tdPixcbiAgICApIHtcbiAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBxdWVyeVJlZi5vcHRpb25zLnF1ZXJ5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhdXNlcyBhbnkgc3Vic2NyaXB0aW9ucyB0byB0aGUgUXVlcnlSZWYgdG8gY29tcGxldGUsIHZpYSB0aGUgdXNlXG4gICAgICogb2YgdGhlIGB0YWtlVW50aWxgIG9wZXJhdG9yLlxuICAgICAqL1xuICAgIHByaXZhdGUgY29tcGxldGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqXG4gICAgICogVGhlIHN1YnNjcmlwdGlvbiB0byB0aGUgY3VycmVudCBRdWVyeVJlZi52YWx1ZUNoYW5nZXMgT2JzZXJ2YWJsZS5cbiAgICAgKiBUaGlzIGlzIHN0b3JlZCBzbyB0aGF0IGl0IGNhbiBiZSB1bnN1YnNjcmliZWQgZnJvbSB3aGVuIHRoZSBRdWVyeVJlZlxuICAgICAqIGNoYW5nZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICAvKipcbiAgICAgKiBUaGlzIFN1YmplY3QgaXMgdXNlZCB0byBlbWl0IG5ldyB2YWx1ZXMgZnJvbSB0aGUgUXVlcnlSZWYudmFsdWVDaGFuZ2VzIE9ic2VydmFibGUuXG4gICAgICogV2UgdXNlIHRoaXMgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc3Vic2NyaWJpbmcgdG8gdGhlIFF1ZXJ5UmVmLnZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlXG4gICAgICogc28gdGhhdCB3ZSBhcmUgYWJsZSB0byBjaGFuZ2UgdGhlIFF1ZXJ5UmVmIGFuZCByZS1zdWJzY3JpYmUgd2hlbiBuZWNlc3NhcnkuXG4gICAgICovXG4gICAgcHJpdmF0ZSB2YWx1ZUNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDxBcG9sbG9RdWVyeVJlc3VsdDxUPj4oKTtcbiAgICAvKipcbiAgICAgKiBXZSBrZWVwIHRyYWNrIG9mIHRoZSBRdWVyeVJlZnMgd2hpY2ggaGF2ZSBiZWVuIHN1YnNjcmliZWQgdG8gc28gdGhhdCB3ZSBjYW4gYXZvaWRcbiAgICAgKiByZS1zdWJzY3JpYmluZyB0byB0aGUgc2FtZSBRdWVyeVJlZiBtdWx0aXBsZSB0aW1lcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHF1ZXJ5UmVmU3Vic2NyaWJlZCA9IG5ldyBXZWFrTWFwPFF1ZXJ5UmVmPFQsIFY+LCBib29sZWFuPigpO1xuICAgIC8qKlxuICAgICAqIFdlIHN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBsYXN0IHF1ZXJ5IHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgaXQgd2l0aCB0aGUgbmV4dCBxdWVyeVxuICAgICAqIGFuZCBhdm9pZCByZS1mZXRjaGluZyB0aGUgc2FtZSBxdWVyeSBtdWx0aXBsZSB0aW1lcy4gVGhpcyBpcyBhcHBsaWNhYmxlIHRvIHRoZSBjb2RlXG4gICAgICogcGF0aHMgdGhhdCBhY3R1YWxseSBjaGFuZ2UgdGhlIHF1ZXJ5LCBpLmUuIHJlZmV0Y2hPbkN1c3RvbUZpZWxkc0NoYW5nZSgpLlxuICAgICAqL1xuICAgIHByaXZhdGUgbGFzdFF1ZXJ5OiBEb2N1bWVudE5vZGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZS1mZXRjaCB0aGlzIHF1ZXJ5IHdoZW5ldmVyIHRoZSBhY3RpdmUgQ2hhbm5lbCBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHJlZmV0Y2hPbkNoYW5uZWxDaGFuZ2UoKTogUXVlcnlSZXN1bHQ8VCwgVj4ge1xuICAgICAgICBjb25zdCB1c2VyU3RhdHVzJCA9IHRoaXMuYXBvbGxvLndhdGNoUXVlcnk8R2V0VXNlclN0YXR1c1F1ZXJ5Pih7XG4gICAgICAgICAgICBxdWVyeTogR0VUX1VTRVJfU1RBVFVTLFxuICAgICAgICB9KS52YWx1ZUNoYW5nZXM7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUNoYW5uZWxJZCQgPSB1c2VyU3RhdHVzJC5waXBlKFxuICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YS5kYXRhLnVzZXJTdGF0dXMuYWN0aXZlQ2hhbm5lbElkKSxcbiAgICAgICAgICAgIGZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wbGV0ZWQkKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbG9nZ2VkT3V0JCA9IHVzZXJTdGF0dXMkLnBpcGUoXG4gICAgICAgICAgICBtYXAoZGF0YSA9PiBkYXRhLmRhdGEudXNlclN0YXR1cy5pc0xvZ2dlZEluKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgZmlsdGVyKGlzTG9nZ2VkSW4gPT4gIWlzTG9nZ2VkSW4pLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcGxldGVkJCksXG4gICAgICAgICk7XG5cbiAgICAgICAgbWVyZ2UoYWN0aXZlQ2hhbm5lbElkJCwgdGhpcy52YWx1ZUNoYW5nZVN1YmplY3QpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwobG9nZ2VkT3V0JCksIHRha2VVbnRpbCh0aGlzLmNvbXBsZXRlZCQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTApKS50aGVuKCgpID0+IHRoaXMucXVlcnlSZWYucmVmZXRjaCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmUtZmV0Y2ggdGhpcyBxdWVyeSB3aGVuZXZlciB0aGUgY3VzdG9tIGZpZWxkcyBjaGFuZ2UsIHVwZGF0aW5nIHRoZSBxdWVyeSB0byBpbmNsdWRlIHRoZVxuICAgICAqIHNwZWNpZmllZCBjdXN0b20gZmllbGRzLlxuICAgICAqXG4gICAgICogQHNpbmNlIDMuMC40XG4gICAgICovXG4gICAgcmVmZXRjaE9uQ3VzdG9tRmllbGRzQ2hhbmdlKGN1c3RvbUZpZWxkc1RvSW5jbHVkZSQ6IE9ic2VydmFibGU8c3RyaW5nW10+KTogUXVlcnlSZXN1bHQ8VCwgVj4ge1xuICAgICAgICBjdXN0b21GaWVsZHNUb0luY2x1ZGUkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoY3VzdG9tRmllbGRzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3UXVlcnkgPSBhZGRDdXN0b21GaWVsZHModGhpcy5sYXN0UXVlcnksIHRoaXMuY3VzdG9tRmllbGRNYXAsIGN1c3RvbUZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0NoYW5nZWQgPSBKU09OLnN0cmluZ2lmeShuZXdRdWVyeSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMubGFzdFF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NoYW5nZWQ7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcGxldGVkJCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGN1c3RvbUZpZWxkcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3UXVlcnkgPSBhZGRDdXN0b21GaWVsZHModGhpcy5sYXN0UXVlcnksIHRoaXMuY3VzdG9tRmllbGRNYXAsIGN1c3RvbUZpZWxkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBuZXdRdWVyeTtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeVJlZiA9IHRoaXMuYXBvbGxvLndhdGNoUXVlcnk8VCwgVj4oe1xuICAgICAgICAgICAgICAgICAgICBxdWVyeTogbmV3UXVlcnksXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdGhpcy5xdWVyeVJlZi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgIGZldGNoUG9saWN5OiB0aGlzLnF1ZXJ5UmVmLm9wdGlvbnMuZmV0Y2hQb2xpY3ksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJlZiA9IHF1ZXJ5UmVmO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9RdWVyeVJlZihxdWVyeVJlZik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogUmV0dXJucyBhbiBPYnNlcnZhYmxlIHdoaWNoIGVtaXRzIGEgc2luZ2xlIHJlc3VsdCBhbmQgdGhlbiBjb21wbGV0ZXMuXG4gICAgICovXG4gICAgZ2V0IHNpbmdsZSQoKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRRdWVyeVJlZlZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQubmV0d29ya1N0YXR1cyA9PT0gTmV0d29ya1N0YXR1cy5yZWFkeSksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHQuZGF0YSksXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZWQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlZCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJldHVybnMgYW4gT2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB1bnRpbCB1bnN1YnNjcmliZWQuXG4gICAgICovXG4gICAgZ2V0IHN0cmVhbSQoKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRRdWVyeVJlZlZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQubmV0d29ya1N0YXR1cyA9PT0gTmV0d29ya1N0YXR1cy5yZWFkeSksXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5kYXRhKSxcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlZCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHJlZigpOiBRdWVyeVJlZjxULCBWPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5UmVmO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFJldHVybnMgYSBzaW5nbGUtcmVzdWx0IE9ic2VydmFibGUgYWZ0ZXIgYXBwbHlpbmcgdGhlIG1hcCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBtYXBTaW5nbGU8Uj4obWFwRm46IChpdGVtOiBUKSA9PiBSKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbmdsZSQucGlwZShtYXAobWFwRm4pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZXR1cm5zIGEgbXVsdGlwbGUtcmVzdWx0IE9ic2VydmFibGUgYWZ0ZXIgYXBwbHlpbmcgdGhlIG1hcCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBtYXBTdHJlYW08Uj4obWFwRm46IChpdGVtOiBUKSA9PiBSKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmVhbSQucGlwZShtYXAobWFwRm4pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBTaWduYWxzIHRvIHRoZSBpbnRlcm5hbCBPYnNlcnZhYmxlIHN1YnNjcmlwdGlvbnMgdGhhdCB0aGV5IHNob3VsZCBjb21wbGV0ZS5cbiAgICAgKi9cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNvbXBsZXRlZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBSZXR1cm5zIGFuIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIFF1ZXJ5UmVmLnZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlLlxuICAgICAqXG4gICAgICogV2Ugd3JhcCB0aGUgdmFsdWVDaGFuZ2VzIE9ic2VydmFibGUgaW4gYSBuZXcgT2JzZXJ2YWJsZSBzbyB0aGF0IHdlIGNhbiBoYXZlIGEgbGF6eVxuICAgICAqIGV2YWx1YXRpb24gb2YgdGhlIHZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlLiBUaGF0IGlzLCB3ZSBvbmx5IGZpcmUgdGhlIEhUVFAgcmVxdWVzdCB3aGVuXG4gICAgICogdGhlIHJldHVybmVkIE9ic2VydmFibGUgaXMgc3Vic2NyaWJlZCB0by5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldCBjdXJyZW50UXVlcnlSZWZWYWx1ZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxBcG9sbG9RdWVyeVJlc3VsdDxUPj4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucXVlcnlSZWZTdWJzY3JpYmVkLmdldCh0aGlzLnF1ZXJ5UmVmKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9RdWVyeVJlZih0aGlzLnF1ZXJ5UmVmKTtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UmVmU3Vic2NyaWJlZC5zZXQodGhpcy5xdWVyeVJlZiwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3ViamVjdC5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlSZWZTdWJzY3JpYmVkLmRlbGV0ZSh0aGlzLnF1ZXJ5UmVmKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIFN1YnNjcmliZXMgdG8gdGhlIHZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlIG9mIHRoZSBnaXZlbiBRdWVyeVJlZiwgYW5kIHN0b3JlcyB0aGUgc3Vic2NyaXB0aW9uXG4gICAgICogc28gdGhhdCBpdCBjYW4gYmUgdW5zdWJzY3JpYmVkIGZyb20gd2hlbiB0aGUgUXVlcnlSZWYgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN1YnNjcmliZVRvUXVlcnlSZWYocXVlcnlSZWY6IFF1ZXJ5UmVmPFQsIFY+KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHF1ZXJ5UmVmLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcGxldGVkJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMudmFsdWVDaGFuZ2VTdWJqZWN0KTtcbiAgICB9XG59XG4iXX0=
@@ -3,8 +3,9 @@ import { Kind, } from 'graphql';
3
3
  * Given a GraphQL AST (DocumentNode), this function looks for fragment definitions and adds and configured
4
4
  * custom fields to those fragments.
5
5
  */
6
- export function addCustomFields(documentNode, customFields) {
7
- const fragmentDefs = documentNode.definitions.filter(isFragmentDefinition);
6
+ export function addCustomFields(documentNode, customFields, includeCustomFields) {
7
+ const clone = JSON.parse(JSON.stringify(documentNode));
8
+ const fragmentDefs = clone.definitions.filter(isFragmentDefinition);
8
9
  for (const fragmentDef of fragmentDefs) {
9
10
  let entityType = fragmentDef.typeCondition.name.value;
10
11
  if (entityType === 'OrderAddress') {
@@ -18,36 +19,53 @@ export function addCustomFields(documentNode, customFields) {
18
19
  }
19
20
  const customFieldsForType = customFields.get(entityType);
20
21
  if (customFieldsForType && customFieldsForType.length) {
21
- fragmentDef.selectionSet.selections.push({
22
+ // Check if there is already a customFields field in the fragment
23
+ // to avoid duplication
24
+ const existingCustomFieldsField = fragmentDef.selectionSet.selections.find(selection => isFieldNode(selection) && selection.name.value === 'customFields');
25
+ const selectionNodes = customFieldsForType
26
+ .filter(field => !includeCustomFields || includeCustomFields.includes(field.name))
27
+ .map(customField => ({
28
+ kind: Kind.FIELD,
22
29
  name: {
23
30
  kind: Kind.NAME,
24
- value: 'customFields',
31
+ value: customField.name,
25
32
  },
26
- kind: Kind.FIELD,
27
- selectionSet: {
28
- kind: Kind.SELECTION_SET,
29
- selections: customFieldsForType.map(customField => ({
30
- kind: Kind.FIELD,
31
- name: {
32
- kind: Kind.NAME,
33
- value: customField.name,
33
+ // For "relation" custom fields, we need to also select
34
+ // all the scalar fields of the related type
35
+ ...(customField.type === 'relation'
36
+ ? {
37
+ selectionSet: {
38
+ kind: Kind.SELECTION_SET,
39
+ selections: customField.scalarFields.map(f => ({
40
+ kind: Kind.FIELD,
41
+ name: { kind: Kind.NAME, value: f },
42
+ })),
34
43
  },
35
- // For "relation" custom fields, we need to also select
36
- // all the scalar fields of the related type
37
- ...(customField.type === 'relation'
38
- ? {
39
- selectionSet: {
40
- kind: Kind.SELECTION_SET,
41
- selections: customField.scalarFields.map(f => ({
42
- kind: Kind.FIELD,
43
- name: { kind: Kind.NAME, value: f },
44
- })),
45
- },
46
- }
47
- : {}),
48
- })),
49
- },
50
- });
44
+ }
45
+ : {}),
46
+ }));
47
+ if (!existingCustomFieldsField) {
48
+ // If no customFields field exists, add one
49
+ fragmentDef.selectionSet.selections.push({
50
+ kind: Kind.FIELD,
51
+ name: {
52
+ kind: Kind.NAME,
53
+ value: 'customFields',
54
+ },
55
+ selectionSet: {
56
+ kind: Kind.SELECTION_SET,
57
+ selections: selectionNodes,
58
+ },
59
+ });
60
+ }
61
+ else {
62
+ // If a customFields field already exists, add the custom fields
63
+ // to the existing selection set
64
+ existingCustomFieldsField.selectionSet = {
65
+ kind: Kind.SELECTION_SET,
66
+ selections: selectionNodes,
67
+ };
68
+ }
51
69
  const localizedFields = customFieldsForType.filter(field => field.type === 'localeString' || field.type === 'localeText');
52
70
  const translationsField = fragmentDef.selectionSet.selections
53
71
  .filter(isFieldNode)
@@ -73,7 +91,7 @@ export function addCustomFields(documentNode, customFields) {
73
91
  }
74
92
  }
75
93
  }
76
- return documentNode;
94
+ return clone;
77
95
  }
78
96
  function isFragmentDefinition(value) {
79
97
  return value.kind === Kind.FRAGMENT_DEFINITION;
@@ -81,4 +99,4 @@ function isFragmentDefinition(value) {
81
99
  function isFieldNode(value) {
82
100
  return value.kind === Kind.FIELD;
83
101
  }
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWN1c3RvbS1maWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvdXRpbHMvYWRkLWN1c3RvbS1maWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtILElBQUksR0FFUCxNQUFNLFNBQVMsQ0FBQztBQVNqQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUMzQixZQUEwQixFQUMxQixZQUE4QztJQUU5QyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTNFLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FHL0MsQ0FBQztRQUVGLElBQUksVUFBVSxLQUFNLGNBQXNCLEVBQUUsQ0FBQztZQUN6QyxxRkFBcUY7WUFDckYsNkJBQTZCO1lBQzdCLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksVUFBVSxLQUFNLFNBQWlCLEVBQUUsQ0FBQztZQUNwQyxnQ0FBZ0M7WUFDaEMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUMxQixDQUFDO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pELElBQUksbUJBQW1CLElBQUksbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkQsV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUE4QixDQUFDLElBQUksQ0FBQztnQkFDMUQsSUFBSSxFQUFFO29CQUNGLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDZixLQUFLLEVBQUUsY0FBYztpQkFDeEI7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNoQixZQUFZLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhO29CQUN4QixVQUFVLEVBQUUsbUJBQW1CLENBQUMsR0FBRyxDQUMvQixXQUFXLENBQUMsRUFBRSxDQUNWLENBQUM7d0JBQ0csSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO3dCQUNoQixJQUFJLEVBQUU7NEJBQ0YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNmLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSTt5QkFDMUI7d0JBQ0QsdURBQXVEO3dCQUN2RCw0Q0FBNEM7d0JBQzVDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFVBQVU7NEJBQy9CLENBQUMsQ0FBQztnQ0FDSSxZQUFZLEVBQUU7b0NBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhO29DQUN4QixVQUFVLEVBQ04sV0FDSCxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dDQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7d0NBQ2hCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7cUNBQ3RDLENBQUMsQ0FBQztpQ0FDTjs2QkFDSjs0QkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO3FCQUNFLENBQUEsQ0FDdEI7aUJBQ0o7YUFDSixDQUFDLENBQUM7WUFFSCxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQzlDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLENBQ3hFLENBQUM7WUFFRixNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVTtpQkFDeEQsTUFBTSxDQUFDLFdBQVcsQ0FBQztpQkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssY0FBYyxDQUFDLENBQUM7WUFFeEQsSUFBSSxlQUFlLENBQUMsTUFBTSxJQUFJLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMvRSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsVUFBOEIsQ0FBQyxJQUFJLENBQUM7b0JBQ2hFLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsS0FBSyxFQUFFLGNBQWM7cUJBQ3hCO29CQUNELElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDaEIsWUFBWSxFQUFFO3dCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTt3QkFDeEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQzNCLFdBQVcsQ0FBQyxFQUFFLENBQ1YsQ0FBQzs0QkFDRyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7NEJBQ2hCLElBQUksRUFBRTtnQ0FDRixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0NBQ2YsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJOzZCQUMxQjt5QkFDVSxDQUFBLENBQ3RCO3FCQUNKO2lCQUNKLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLEtBQXFCO0lBQy9DLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUM7QUFDbkQsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQW9CO0lBQ3JDLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgRGVmaW5pdGlvbk5vZGUsXHJcbiAgICBEb2N1bWVudE5vZGUsXHJcbiAgICBGaWVsZE5vZGUsXHJcbiAgICBGcmFnbWVudERlZmluaXRpb25Ob2RlLFxyXG4gICAgS2luZCxcclxuICAgIFNlbGVjdGlvbk5vZGUsXHJcbn0gZnJvbSAnZ3JhcGhxbCc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQ3VzdG9tRmllbGRDb25maWcsXHJcbiAgICBDdXN0b21GaWVsZHMsXHJcbiAgICBFbnRpdHlDdXN0b21GaWVsZHMsXHJcbiAgICBSZWxhdGlvbkN1c3RvbUZpZWxkRnJhZ21lbnQsXHJcbn0gZnJvbSAnLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcblxyXG4vKipcclxuICogR2l2ZW4gYSBHcmFwaFFMIEFTVCAoRG9jdW1lbnROb2RlKSwgdGhpcyBmdW5jdGlvbiBsb29rcyBmb3IgZnJhZ21lbnQgZGVmaW5pdGlvbnMgYW5kIGFkZHMgYW5kIGNvbmZpZ3VyZWRcclxuICogY3VzdG9tIGZpZWxkcyB0byB0aG9zZSBmcmFnbWVudHMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkQ3VzdG9tRmllbGRzKFxyXG4gICAgZG9jdW1lbnROb2RlOiBEb2N1bWVudE5vZGUsXHJcbiAgICBjdXN0b21GaWVsZHM6IE1hcDxzdHJpbmcsIEN1c3RvbUZpZWxkQ29uZmlnW10+LFxyXG4pOiBEb2N1bWVudE5vZGUge1xyXG4gICAgY29uc3QgZnJhZ21lbnREZWZzID0gZG9jdW1lbnROb2RlLmRlZmluaXRpb25zLmZpbHRlcihpc0ZyYWdtZW50RGVmaW5pdGlvbik7XHJcblxyXG4gICAgZm9yIChjb25zdCBmcmFnbWVudERlZiBvZiBmcmFnbWVudERlZnMpIHtcclxuICAgICAgICBsZXQgZW50aXR5VHlwZSA9IGZyYWdtZW50RGVmLnR5cGVDb25kaXRpb24ubmFtZS52YWx1ZSBhcyBrZXlvZiBQaWNrPFxyXG4gICAgICAgICAgICBDdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgIEV4Y2x1ZGU8a2V5b2YgQ3VzdG9tRmllbGRzLCAnX190eXBlbmFtZSc+XHJcbiAgICAgICAgPjtcclxuXHJcbiAgICAgICAgaWYgKGVudGl0eVR5cGUgPT09ICgnT3JkZXJBZGRyZXNzJyBhcyBhbnkpKSB7XHJcbiAgICAgICAgICAgIC8vIE9yZGVyQWRkcmVzcyBpcyBhIHNwZWNpYWwgY2FzZSBvZiB0aGUgQWRkcmVzcyBlbnRpdHksIGFuZCBzaGFyZXMgaXRzIGN1c3RvbSBmaWVsZHNcclxuICAgICAgICAgICAgLy8gc28gd2UgdHJlYXQgaXQgYXMgYW4gYWxpYXNcclxuICAgICAgICAgICAgZW50aXR5VHlwZSA9ICdBZGRyZXNzJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHlUeXBlID09PSAoJ0NvdW50cnknIGFzIGFueSkpIHtcclxuICAgICAgICAgICAgLy8gQ291bnRyeSBpcyBhbiBhbGlhcyBvZiBSZWdpb25cclxuICAgICAgICAgICAgZW50aXR5VHlwZSA9ICdSZWdpb24nO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzRm9yVHlwZSA9IGN1c3RvbUZpZWxkcy5nZXQoZW50aXR5VHlwZSk7XHJcbiAgICAgICAgaWYgKGN1c3RvbUZpZWxkc0ZvclR5cGUgJiYgY3VzdG9tRmllbGRzRm9yVHlwZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgKGZyYWdtZW50RGVmLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zIGFzIFNlbGVjdGlvbk5vZGVbXSkucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5OQU1FLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tRmllbGRzJyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBraW5kOiBLaW5kLkZJRUxELFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5TRUxFQ1RJT05fU0VULFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM6IGN1c3RvbUZpZWxkc0ZvclR5cGUubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZCA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLkZJRUxELFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5OQU1FLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY3VzdG9tRmllbGQubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBcInJlbGF0aW9uXCIgY3VzdG9tIGZpZWxkcywgd2UgbmVlZCB0byBhbHNvIHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbCB0aGUgc2NhbGFyIGZpZWxkcyBvZiB0aGUgcmVsYXRlZCB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGN1c3RvbUZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblNldDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5TRUxFQ1RJT05fU0VULFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uczogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkIGFzIFJlbGF0aW9uQ3VzdG9tRmllbGRGcmFnbWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zY2FsYXJGaWVsZHMubWFwKGYgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLkZJRUxELFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHsga2luZDogS2luZC5OQU1FLCB2YWx1ZTogZiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEZpZWxkTm9kZSksXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgbG9jYWxpemVkRmllbGRzID0gY3VzdG9tRmllbGRzRm9yVHlwZS5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICBmaWVsZCA9PiBmaWVsZC50eXBlID09PSAnbG9jYWxlU3RyaW5nJyB8fCBmaWVsZC50eXBlID09PSAnbG9jYWxlVGV4dCcsXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnNGaWVsZCA9IGZyYWdtZW50RGVmLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGlzRmllbGROb2RlKVxyXG4gICAgICAgICAgICAgICAgLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZS52YWx1ZSA9PT0gJ3RyYW5zbGF0aW9ucycpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGxvY2FsaXplZEZpZWxkcy5sZW5ndGggJiYgdHJhbnNsYXRpb25zRmllbGQgJiYgdHJhbnNsYXRpb25zRmllbGQuc2VsZWN0aW9uU2V0KSB7XHJcbiAgICAgICAgICAgICAgICAodHJhbnNsYXRpb25zRmllbGQuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMgYXMgU2VsZWN0aW9uTm9kZVtdKS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdjdXN0b21GaWVsZHMnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5GSUVMRCxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5TRUxFQ1RJT05fU0VULFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25zOiBsb2NhbGl6ZWRGaWVsZHMubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGQgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLkZJRUxELFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLk5BTUUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY3VzdG9tRmllbGQubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEZpZWxkTm9kZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkb2N1bWVudE5vZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzRnJhZ21lbnREZWZpbml0aW9uKHZhbHVlOiBEZWZpbml0aW9uTm9kZSk6IHZhbHVlIGlzIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUge1xyXG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09IEtpbmQuRlJBR01FTlRfREVGSU5JVElPTjtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNGaWVsZE5vZGUodmFsdWU6IFNlbGVjdGlvbk5vZGUpOiB2YWx1ZSBpcyBGaWVsZE5vZGUge1xyXG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09IEtpbmQuRklFTEQ7XHJcbn1cclxuIl19
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWN1c3RvbS1maWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL2RhdGEvdXRpbHMvYWRkLWN1c3RvbS1maWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtILElBQUksR0FFUCxNQUFNLFNBQVMsQ0FBQztBQVNqQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUMzQixZQUEwQixFQUMxQixZQUE4QyxFQUM5QyxtQkFBOEI7SUFFOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFpQixDQUFDO0lBQ3ZFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFcEUsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyQyxJQUFJLFVBQVUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUcvQyxDQUFDO1FBRUYsSUFBSSxVQUFVLEtBQU0sY0FBc0IsRUFBRSxDQUFDO1lBQ3pDLHFGQUFxRjtZQUNyRiw2QkFBNkI7WUFDN0IsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxVQUFVLEtBQU0sU0FBaUIsRUFBRSxDQUFDO1lBQ3BDLGdDQUFnQztZQUNoQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsSUFBSSxtQkFBbUIsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRCxpRUFBaUU7WUFDakUsdUJBQXVCO1lBQ3ZCLE1BQU0seUJBQXlCLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxD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Q0FBQyxHQUFHLENBQzNCLFdBQVcsQ0FBQyxFQUFFLENBQ1YsQ0FBQzs0QkFDRyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7NEJBQ2hCLElBQUksRUFBRTtnQ0FDRixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0NBQ2YsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJOzZCQUMxQjt5QkFDSixDQUFjLENBQ3RCO3FCQUNKO2lCQUNKLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLEtBQXFCO0lBQy9DLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUM7QUFDbkQsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQW9CO0lBQ3JDLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERlZmluaXRpb25Ob2RlLFxuICAgIERvY3VtZW50Tm9kZSxcbiAgICBGaWVsZE5vZGUsXG4gICAgRnJhZ21lbnREZWZpbml0aW9uTm9kZSxcbiAgICBLaW5kLFxuICAgIFNlbGVjdGlvbk5vZGUsXG59IGZyb20gJ2dyYXBocWwnO1xuXG5pbXBvcnQge1xuICAgIEN1c3RvbUZpZWxkQ29uZmlnLFxuICAgIEN1c3RvbUZpZWxkcyxcbiAgICBFbnRpdHlDdXN0b21GaWVsZHMsXG4gICAgUmVsYXRpb25DdXN0b21GaWVsZEZyYWdtZW50LFxufSBmcm9tICcuLi8uLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcblxuLyoqXG4gKiBHaXZlbiBhIEdyYXBoUUwgQVNUIChEb2N1bWVudE5vZGUpLCB0aGlzIGZ1bmN0aW9uIGxvb2tzIGZvciBmcmFnbWVudCBkZWZpbml0aW9ucyBhbmQgYWRkcyBhbmQgY29uZmlndXJlZFxuICogY3VzdG9tIGZpZWxkcyB0byB0aG9zZSBmcmFnbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDdXN0b21GaWVsZHMoXG4gICAgZG9jdW1lbnROb2RlOiBEb2N1bWVudE5vZGUsXG4gICAgY3VzdG9tRmllbGRzOiBNYXA8c3RyaW5nLCBDdXN0b21GaWVsZENvbmZpZ1tdPixcbiAgICBpbmNsdWRlQ3VzdG9tRmllbGRzPzogc3RyaW5nW10sXG4pOiBEb2N1bWVudE5vZGUge1xuICAgIGNvbnN0IGNsb25lID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkb2N1bWVudE5vZGUpKSBhcyBEb2N1bWVudE5vZGU7XG4gICAgY29uc3QgZnJhZ21lbnREZWZzID0gY2xvbmUuZGVmaW5pdGlvbnMuZmlsdGVyKGlzRnJhZ21lbnREZWZpbml0aW9uKTtcblxuICAgIGZvciAoY29uc3QgZnJhZ21lbnREZWYgb2YgZnJhZ21lbnREZWZzKSB7XG4gICAgICAgIGxldCBlbnRpdHlUeXBlID0gZnJhZ21lbnREZWYudHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlIGFzIGtleW9mIFBpY2s8XG4gICAgICAgICAgICBDdXN0b21GaWVsZHMsXG4gICAgICAgICAgICBFeGNsdWRlPGtleW9mIEN1c3RvbUZpZWxkcywgJ19fdHlwZW5hbWUnPlxuICAgICAgICA+O1xuXG4gICAgICAgIGlmIChlbnRpdHlUeXBlID09PSAoJ09yZGVyQWRkcmVzcycgYXMgYW55KSkge1xuICAgICAgICAgICAgLy8gT3JkZXJBZGRyZXNzIGlzIGEgc3BlY2lhbCBjYXNlIG9mIHRoZSBBZGRyZXNzIGVudGl0eSwgYW5kIHNoYXJlcyBpdHMgY3VzdG9tIGZpZWxkc1xuICAgICAgICAgICAgLy8gc28gd2UgdHJlYXQgaXQgYXMgYW4gYWxpYXNcbiAgICAgICAgICAgIGVudGl0eVR5cGUgPSAnQWRkcmVzcyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50aXR5VHlwZSA9PT0gKCdDb3VudHJ5JyBhcyBhbnkpKSB7XG4gICAgICAgICAgICAvLyBDb3VudHJ5IGlzIGFuIGFsaWFzIG9mIFJlZ2lvblxuICAgICAgICAgICAgZW50aXR5VHlwZSA9ICdSZWdpb24nO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzRm9yVHlwZSA9IGN1c3RvbUZpZWxkcy5nZXQoZW50aXR5VHlwZSk7XG4gICAgICAgIGlmIChjdXN0b21GaWVsZHNGb3JUeXBlICYmIGN1c3RvbUZpZWxkc0ZvclR5cGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgY3VzdG9tRmllbGRzIGZpZWxkIGluIHRoZSBmcmFnbWVudFxuICAgICAgICAgICAgLy8gdG8gYXZvaWQgZHVwbGljYXRpb25cbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ3VzdG9tRmllbGRzRmllbGQgPSBmcmFnbWVudERlZi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9PiBpc0ZpZWxkTm9kZShzZWxlY3Rpb24pICYmIHNlbGVjdGlvbi5uYW1lLnZhbHVlID09PSAnY3VzdG9tRmllbGRzJyxcbiAgICAgICAgICAgICkgYXMgRmllbGROb2RlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uTm9kZXM6IFNlbGVjdGlvbk5vZGVbXSA9IGN1c3RvbUZpZWxkc0ZvclR5cGVcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZpZWxkID0+ICFpbmNsdWRlQ3VzdG9tRmllbGRzIHx8IGluY2x1ZGVDdXN0b21GaWVsZHMuaW5jbHVkZXMoZmllbGQubmFtZSkpXG4gICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5GSUVMRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGN1c3RvbUZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgXCJyZWxhdGlvblwiIGN1c3RvbSBmaWVsZHMsIHdlIG5lZWQgdG8gYWxzbyBzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGwgdGhlIHNjYWxhciBmaWVsZHMgb2YgdGhlIHJlbGF0ZWQgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihjdXN0b21GaWVsZC50eXBlID09PSAncmVsYXRpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuU0VMRUNUSU9OX1NFVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZCBhcyBSZWxhdGlvbkN1c3RvbUZpZWxkRnJhZ21lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc2NhbGFyRmllbGRzLm1hcChmID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5GSUVMRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7IGtpbmQ6IEtpbmQuTkFNRSwgdmFsdWU6IGYgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRmllbGROb2RlLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIWV4aXN0aW5nQ3VzdG9tRmllbGRzRmllbGQpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBubyBjdXN0b21GaWVsZHMgZmllbGQgZXhpc3RzLCBhZGQgb25lXG4gICAgICAgICAgICAgICAgKGZyYWdtZW50RGVmLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zIGFzIFNlbGVjdGlvbk5vZGVbXSkucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRklFTEQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tRmllbGRzJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLlNFTEVDVElPTl9TRVQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25zOiBzZWxlY3Rpb25Ob2RlcyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgYSBjdXN0b21GaWVsZHMgZmllbGQgYWxyZWFkeSBleGlzdHMsIGFkZCB0aGUgY3VzdG9tIGZpZWxkc1xuICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBleGlzdGluZyBzZWxlY3Rpb24gc2V0XG4gICAgICAgICAgICAgICAgKGV4aXN0aW5nQ3VzdG9tRmllbGRzRmllbGQuc2VsZWN0aW9uU2V0IGFzIGFueSkgPSB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuU0VMRUNUSU9OX1NFVCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uczogc2VsZWN0aW9uTm9kZXMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbG9jYWxpemVkRmllbGRzID0gY3VzdG9tRmllbGRzRm9yVHlwZS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgZmllbGQgPT4gZmllbGQudHlwZSA9PT0gJ2xvY2FsZVN0cmluZycgfHwgZmllbGQudHlwZSA9PT0gJ2xvY2FsZVRleHQnLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zRmllbGQgPSBmcmFnbWVudERlZi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoaXNGaWVsZE5vZGUpXG4gICAgICAgICAgICAgICAgLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZS52YWx1ZSA9PT0gJ3RyYW5zbGF0aW9ucycpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxpemVkRmllbGRzLmxlbmd0aCAmJiB0cmFuc2xhdGlvbnNGaWVsZCAmJiB0cmFuc2xhdGlvbnNGaWVsZC5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgICAgICAodHJhbnNsYXRpb25zRmllbGQuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMgYXMgU2VsZWN0aW9uTm9kZVtdKS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5OQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdjdXN0b21GaWVsZHMnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBraW5kOiBLaW5kLkZJRUxELFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuU0VMRUNUSU9OX1NFVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM6IGxvY2FsaXplZEZpZWxkcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRklFTEQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogS2luZC5OQU1FLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjdXN0b21GaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRmllbGROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbG9uZTtcbn1cblxuZnVuY3Rpb24gaXNGcmFnbWVudERlZmluaXRpb24odmFsdWU6IERlZmluaXRpb25Ob2RlKTogdmFsdWUgaXMgRnJhZ21lbnREZWZpbml0aW9uTm9kZSB7XG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09IEtpbmQuRlJBR01FTlRfREVGSU5JVElPTjtcbn1cblxuZnVuY3Rpb24gaXNGaWVsZE5vZGUodmFsdWU6IFNlbGVjdGlvbk5vZGUpOiB2YWx1ZSBpcyBGaWVsZE5vZGUge1xuICAgIHJldHVybiB2YWx1ZS5raW5kID09PSBLaW5kLkZJRUxEO1xufVxuIl19