ng-easycommerce-v18 0.4.4-beta.2 → 0.4.6

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 (206) hide show
  1. package/README.md +130 -125
  2. package/assets/decidirFormEc.html +514 -514
  3. package/assets/ec-i18n/ct.json +286 -282
  4. package/assets/ec-i18n/en.json +12 -1
  5. package/assets/ec-i18n/es.json +445 -434
  6. package/assets/ec-i18n/fr.json +4 -0
  7. package/assets/ec-i18n/gl.json +286 -282
  8. package/assets/ec-i18n/pr.json +286 -282
  9. package/assets/images/cards-occasional.svg +21 -21
  10. package/assets/recaptcha/recaptcha-site-keys.json +3 -3
  11. package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
  12. package/assets/recaptcha/recaptcha-sites.json +52 -52
  13. package/esm2022/lib/api/connection.service.mjs +7 -6
  14. package/esm2022/lib/classes/checkout/steps.mjs +1 -1
  15. package/esm2022/lib/classes/component-helper.mjs +1 -1
  16. package/esm2022/lib/classes/filters/attributes-filter.mjs +1 -1
  17. package/esm2022/lib/classes/filters/category-filter.mjs +1 -1
  18. package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
  19. package/esm2022/lib/classes/filters/filter-factory.mjs +1 -1
  20. package/esm2022/lib/classes/filters/filter.mjs +1 -1
  21. package/esm2022/lib/classes/filters/index.mjs +1 -1
  22. package/esm2022/lib/classes/filters/price_range-filter.mjs +1 -1
  23. package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
  24. package/esm2022/lib/classes/index.mjs +1 -1
  25. package/esm2022/lib/classes/user.mjs +1 -1
  26. package/esm2022/lib/constants/api.constants.service.mjs +1 -1
  27. package/esm2022/lib/constants/core.constants.service.mjs +1 -1
  28. package/esm2022/lib/constants/index.mjs +1 -1
  29. package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
  30. package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
  31. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -1
  32. package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
  33. package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
  34. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +5 -9
  35. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +11 -5
  36. package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
  37. package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
  38. package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
  39. package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
  40. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +3 -3
  41. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +3 -3
  42. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
  43. package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
  44. package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
  45. package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +3 -3
  46. package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
  47. package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
  48. package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +3 -4
  49. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +3 -3
  50. package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
  51. package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
  52. package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
  53. package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +12 -3
  54. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +3 -3
  55. package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
  56. package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +10 -3
  57. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +11 -4
  58. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
  59. package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +5 -3
  60. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +44 -4
  61. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
  62. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
  63. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +3 -3
  64. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
  65. package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
  66. package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
  67. package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +4 -3
  68. package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +3 -3
  69. package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +1 -1
  70. package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
  71. package/esm2022/lib/ec-components/credit-account-banner-ec/credit-account-banner-ec.component.mjs +79 -0
  72. package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
  73. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +3 -3
  74. package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
  75. package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
  76. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +27 -13
  77. package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
  78. package/esm2022/lib/ec-components/index.mjs +2 -1
  79. package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +3 -3
  80. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +1 -1
  81. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +3 -3
  82. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +3 -3
  83. package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
  84. package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
  85. package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
  86. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
  87. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
  88. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
  89. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
  90. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
  91. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
  92. package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
  93. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +5 -7
  94. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
  95. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
  96. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +3 -3
  97. package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
  98. package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
  99. package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
  100. package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
  101. package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
  102. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +3 -3
  103. package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +5 -11
  104. package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
  105. package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
  106. package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +3 -3
  107. package/esm2022/lib/ec-directive/index.mjs +1 -1
  108. package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
  109. package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
  110. package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
  111. package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
  112. package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
  113. package/esm2022/lib/ec-pipe/index.mjs +1 -1
  114. package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
  115. package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
  116. package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
  117. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
  118. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +1 -1
  119. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +1 -1
  120. package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
  121. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
  122. package/esm2022/lib/ec-services/auth.service.mjs +1 -1
  123. package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
  124. package/esm2022/lib/ec-services/base-api.service.mjs +1 -1
  125. package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
  126. package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
  127. package/esm2022/lib/ec-services/cart.service.mjs +42 -7
  128. package/esm2022/lib/ec-services/channel.service.mjs +1 -1
  129. package/esm2022/lib/ec-services/checkout.service.mjs +1 -1
  130. package/esm2022/lib/ec-services/currency.service.mjs +1 -1
  131. package/esm2022/lib/ec-services/filters.service.mjs +1 -1
  132. package/esm2022/lib/ec-services/form.service.mjs +1 -1
  133. package/esm2022/lib/ec-services/index.mjs +2 -1
  134. package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
  135. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
  136. package/esm2022/lib/ec-services/options.service.mjs +1 -1
  137. package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
  138. package/esm2022/lib/ec-services/orders.service.mjs +1 -1
  139. package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
  140. package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
  141. package/esm2022/lib/ec-services/payment.service.mjs +1 -1
  142. package/esm2022/lib/ec-services/price-visibility.service.mjs +40 -0
  143. package/esm2022/lib/ec-services/product-detail.service.mjs +45 -7
  144. package/esm2022/lib/ec-services/products.service.mjs +1 -1
  145. package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
  146. package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
  147. package/esm2022/lib/ec-services/runtime-config.service.mjs +13 -31
  148. package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
  149. package/esm2022/lib/ec-services/stores.service.mjs +1 -1
  150. package/esm2022/lib/ec-services/test.service.mjs +1 -1
  151. package/esm2022/lib/ec-services/toast.service.mjs +1 -1
  152. package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
  153. package/esm2022/lib/interceptors/index.mjs +1 -1
  154. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +1 -1
  155. package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
  156. package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
  157. package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
  158. package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
  159. package/esm2022/lib/interfaces/blocks.mjs +1 -1
  160. package/esm2022/lib/interfaces/checkout.mjs +1 -1
  161. package/esm2022/lib/interfaces/connection.mjs +1 -1
  162. package/esm2022/lib/interfaces/coupon.mjs +1 -1
  163. package/esm2022/lib/interfaces/currency.mjs +1 -1
  164. package/esm2022/lib/interfaces/deserializable.mjs +1 -1
  165. package/esm2022/lib/interfaces/environment.mjs +1 -1
  166. package/esm2022/lib/interfaces/faqs.mjs +1 -1
  167. package/esm2022/lib/interfaces/filter.mjs +1 -1
  168. package/esm2022/lib/interfaces/index.mjs +1 -1
  169. package/esm2022/lib/interfaces/options.mjs +1 -1
  170. package/esm2022/lib/interfaces/pagination.mjs +1 -1
  171. package/esm2022/lib/interfaces/parameter.mjs +1 -1
  172. package/esm2022/lib/interfaces/product.mjs +1 -1
  173. package/esm2022/lib/interfaces/runtime-config.mjs +1 -1
  174. package/esm2022/lib/interfaces/step.mjs +1 -1
  175. package/esm2022/lib/interfaces/storage.mjs +1 -1
  176. package/esm2022/lib/interfaces/store.mjs +1 -1
  177. package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
  178. package/esm2022/lib/providers/index.mjs +1 -2
  179. package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
  180. package/esm2022/lib/providers/provideRuntimeConfig.mjs +1 -1
  181. package/esm2022/lib/stores/currency.store.mjs +1 -1
  182. package/esm2022/public-api.mjs +1 -1
  183. package/fesm2022/ng-easycommerce-v18.mjs +437 -232
  184. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  185. package/lib/api/connection.service.d.ts +4 -3
  186. package/lib/ec-components/account-ec/order-ec/order-ec.component.d.ts +2 -2
  187. package/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.d.ts +3 -0
  188. package/lib/ec-components/cart-ec/cart-ec.component.d.ts +4 -2
  189. package/lib/ec-components/checkout-ec/checkout-ec.component.d.ts +2 -0
  190. package/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +2 -0
  191. package/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.d.ts +6 -0
  192. package/lib/ec-components/checkout-ec/success-ec/success-ec.component.d.ts +1 -0
  193. package/lib/ec-components/credit-account-banner-ec/credit-account-banner-ec.component.d.ts +27 -0
  194. package/lib/ec-components/header-ec/header-ec.component.d.ts +12 -4
  195. package/lib/ec-components/index.d.ts +1 -0
  196. package/lib/ec-components/sidebar-ec/sidebar-ec.component.d.ts +2 -1
  197. package/lib/ec-components/widgets-ec/price-ec/price-ec.component.d.ts +2 -4
  198. package/lib/ec-services/cart.service.d.ts +1 -0
  199. package/lib/ec-services/index.d.ts +1 -0
  200. package/lib/ec-services/price-visibility.service.d.ts +23 -0
  201. package/lib/ec-services/product-detail.service.d.ts +3 -0
  202. package/lib/ec-services/runtime-config.service.d.ts +2 -3
  203. package/lib/providers/index.d.ts +0 -1
  204. package/package.json +1 -1
  205. package/esm2022/lib/providers/provideServerRuntimeConfig.mjs +0 -20
  206. package/lib/providers/provideServerRuntimeConfig.d.ts +0 -13
@@ -223,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
223
223
  providedIn: 'root'
224
224
  }]
225
225
  }], ctorParameters: () => [] });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUNwRDs7Ozs7Ozs7O0dBU0c7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBRXJCLGtCQUFrQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxlQUFlLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN4RCxVQUFVLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhFOzs7Ozs7Ozs7T0FTRztJQUNJLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFELEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNkLENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNoQixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFBRSxPQUFPLEtBQUssQ0FBQztRQUU5QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsRUFBRSxNQUFNLENBQUM7UUFFeEUsTUFBTSxlQUFlLEdBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEtBQUssWUFBWSxDQUFDO1FBRW5ELGtFQUFrRTtRQUNsRSw2RUFBNkU7UUFDN0UsSUFBSSxlQUFlLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzdDLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0lBRUYsZ0NBQWdDO0lBQ2hDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDLENBQUM7SUFFRixvRUFBb0U7SUFDcEUsb0JBQW9CLEVBQUU7SUFFdEIsK0NBQStDO0lBQy9DLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUNWLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbkMsaUZBQWlGO0lBQ2pGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZCxDQUFDO0lBRU0sZUFBZSxHQUFRLE1BQU0sQ0FBYTtRQUNqRCxVQUFVLEVBQUUsRUFBRTtRQUNkLFFBQVEsRUFBRSxFQUFFO1FBQ1osT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksRUFBRSxDQUFDO1FBQ1AsS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLEVBQUUsQ0FBQztRQUNSLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEtBQUs7UUFDYixTQUFTLEVBQUUsQ0FBQztRQUNaLFNBQVMsRUFBRSxDQUFDO0tBQ1osQ0FBQyxDQUFDO0lBRUssUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFDckIsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUV4QixvQkFBb0IsR0FBK0IsSUFBSSxlQUFlLENBQVksRUFBRSxDQUFDLENBQUM7SUFDdkYsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUV4RCxhQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQy9FLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTFDLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUEyQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkgsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUzRCxnQkFBZ0IsQ0FBQztJQUVqQjs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLE1BQWMsRUFBRSxLQUFjO1FBQ3hDLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMzRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLElBQVU7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBLHNDQUFzQztRQUN0RixJQUFJLFlBQVksQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDMUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDUCxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBRUQsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQ3hDLENBQUMsUUFBb0IsRUFBRSxFQUFFO1lBQ3hCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDdEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUNELENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFDRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsUUFBb0I7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsNkVBQTZFO1FBQzdFLHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1lBQzNCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztZQUM3QixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7U0FDN0IsQ0FBQyxDQUFDO0lBRUosQ0FBQztJQUNEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxRQUFvQjtRQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0ksZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUNEOzs7T0FHRztJQUNJLFVBQVUsS0FBYyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3REOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxLQUFjLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQ2pFOzs7T0FHRztJQUNJLFdBQVcsS0FBYyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3hEOzs7T0FHRztJQUNJLGFBQWE7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDbkUsQ0FBQztJQUNEOzs7T0FHRztJQUNJLG9CQUFvQjtRQUMxQixPQUFPO1lBQ04sWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRO1lBQzdDLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVTtZQUMvQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE9BQU87U0FDekMsQ0FBQTtJQUNGLENBQUM7SUFDRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLE9BQWlCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVztZQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUNwRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTNDLE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsR0FBVztRQUV6QiwyRUFBMkU7UUFDM0UsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEQscURBQXFEO1FBQ3JELElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDaEUsR0FBRyxDQUFDLENBQUMsR0FBZSxFQUFFLEVBQUU7WUFDdkIsdURBQXVEO1lBQ3ZELEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsR0FBZSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFFOUIsMkRBQTJEO1lBQzNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEMsd0RBQXdEO1lBQ3hELE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7d0dBek9XLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmpCLE1BQU07OzRGQUVOLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5hdGlvbiwgUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJzU2VydmljZSB9IGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHBhcmEgbWFuZWphciBsYSBwYWdpbmFjacOzbiB5IGxhIGNhcmdhIGRlIHByb2R1Y3Rvcy5cclxuICpcclxuICogU2UgZW5jYXJnYSBkZTpcclxuICogLSBFc2N1Y2hhciBsb3MgY2FtYmlvcyBlbiBsb3MgZmlsdHJvcyAoY2F0ZWdvcsOtYXMsIGF0cmlidXRvcywgcHJlY2lvLCBiw7pzcXVlZGEsIGV0Yy4pLlxyXG4gKiAtIENvbnN0cnVpciBsYSBVUkwgYWwgYmFja2VuZCBjb24gZXNvcyBmaWx0cm9zLlxyXG4gKiAtIFBlZGlyIGxvcyBwcm9kdWN0b3MgYWwgZW5kcG9pbnQgZGUgcHJvZHVjdC1zZWFyY2guXHJcbiAqIC0gRXhwb25lciB1biBvYnNlcnZhYmxlIGNvbiBsYSDDumx0aW1hIHDDoWdpbmEgZGUgcHJvZHVjdG9zIChgcGFnaW5hdGlvbkRhdGEkYClcclxuICogICB5IG90cm9zIGhlbHBlcnMgKHByZWNpbyBtw61uaW1vL23DoXhpbW8sIHNpZ3VpZW50ZSBww6FnaW5hLCBldGMuKS5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25TZXJ2aWNlIHtcclxuXHJcblx0cHJpdmF0ZSBfY29ubmVjdGlvblNlcnZpY2U6IENvbm5lY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9maWx0ZXJzU2VydmljZTogRmlsdGVyc1NlcnZpY2UgPSBpbmplY3QoRmlsdGVyc1NlcnZpY2UpXHJcblx0cHJpdmF0ZSBfY29uc3RhbnRzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZsdWpvIHByaW5jaXBhbDogYSBwYXJ0aXIgZGUgbG9zIGZpbHRyb3Mg4oaSIGFybWEgVVJMIOKGkiBjb25zdWx0YSBiYWNrZW5kIOKGkiBkZXZ1ZWx2ZSBwcm9kdWN0b3MuXHJcblx0ICpcclxuXHQgKiBQYXNvczpcclxuXHQgKiAxKSBFc3BlcmEgYSBxdWUgYEZpbHRlcnNTZXJ2aWNlYCBlbWl0YSBmaWx0cm9zIHbDoWxpZG9zLlxyXG5cdCAqIDIpIENvbnN0cnV5ZSBsYSBVUkwgZmluYWwgY29uIGBidWlsZFVybCgpYC5cclxuXHQgKiAzKSBFdml0YSByZXBldGlyIGxsYW1hZGFzIHNpIGxhIFVSTCBubyBjYW1iacOzIChgZGlzdGluY3RVbnRpbENoYW5nZWRgKS5cclxuXHQgKiA0KSBMbGFtYSBhbCBiYWNrZW5kIGNvbiBgZ2V0RGF0YSh1cmwpYC5cclxuXHQgKiA1KSBDb21wYXJ0ZSBlbCDDumx0aW1vIHJlc3VsdGFkbyBjb24gdG9kb3MgbG9zIHN1c2NyaXB0b3JlcyAoYHNoYXJlUmVwbGF5KDEpYCkuXHJcblx0ICovXHJcblx0cHVibGljIHBhZ2luYXRpb25EYXRhJCA9IHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLmZpbHRlcnMkLnBpcGUoXHJcblx0XHR0YXAoZmlsdGVycyA9PiB7XHJcblx0XHR9KSxcclxuXHRcdGZpbHRlcihmaWx0ZXJzID0+IHtcclxuXHRcdFx0aWYgKCFmaWx0ZXJzIHx8ICFmaWx0ZXJzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdFx0Y29uc3QgY2F0ZWdvcnlGaWx0ZXIgPSBmaWx0ZXJzLmZpbmQoZiA9PiBmLnR5cGUoKSA9PT0gJ2NhdGVnb3JpZXMnKTtcclxuXHRcdFx0Y29uc3QgaGFzQ2F0ZWdvcnlTZWxlY3RlZCA9ICEhY2F0ZWdvcnlGaWx0ZXI/LmdldFNlbGVjdGVkTGlzdCgpPy5sZW5ndGg7XHJcblxyXG5cdFx0XHRjb25zdCBpc0NhdGVnb3J5Um91dGUgPVxyXG5cdFx0XHRcdHRoaXMuX2NvbnN0YW50cy5jdXJyZW50Um91dGVUeXBlID09PSAnY2F0ZWdvcmllcyc7XHJcblxyXG5cdFx0XHQvLyBTaSBlc3RhbW9zIGVuIHJ1dGEgZGUgY2F0ZWdvcsOtYXMgeSB0b2RhdsOtYSBubyBzZSBtYXJjw7MgbmluZ3VuYSxcclxuXHRcdFx0Ly8gZXNwZXJhbW9zIGEgcXVlIGVsIENhdGVnb3J5RmlsdGVyIHNlIGhpZHJhdGUgYW50ZXMgZGUgZGlzcGFyYXIgbGEgbGxhbWFkYS5cclxuXHRcdFx0aWYgKGlzQ2F0ZWdvcnlSb3V0ZSAmJiAhaGFzQ2F0ZWdvcnlTZWxlY3RlZCkge1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9KSxcclxuXHJcblx0XHQvLyAyKSBDb252ZXJ0aW1vcyBmaWx0cm9zIC0+IFVSTFxyXG5cdFx0bWFwKGZpbHRlcnMgPT4ge1xyXG5cdFx0XHRjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKGZpbHRlcnMpO1xyXG5cdFx0XHRyZXR1cm4gdXJsO1xyXG5cdFx0fSksXHJcblxyXG5cdFx0Ly8gMykgU29sbyBzZWd1aW1vcyBzaSBsYSBVUkwgY2FtYmnDsyByZXNwZWN0byBkZSBsYSBlbWlzacOzbiBhbnRlcmlvclxyXG5cdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuXHJcblx0XHQvLyA0KSBMbGFtYW1vcyBhbCBiYWNrZW5kIGNvbiBsYSBVUkwgY29uc3RydWlkYVxyXG5cdFx0dGFwKHVybCA9PiB7XHJcblx0XHR9KSxcclxuXHRcdHN3aXRjaE1hcCh1cmwgPT4gdGhpcy5nZXREYXRhKHVybCkpLFxyXG5cclxuXHRcdC8vIDUpIFJldXRpbGl6YXIgcmVzdWx0YWRvIHNpIGFsZ3VpZW4gbcOhcyBzZSBzdXNjcmliZSAoZXZpdGEgcmVwZXRpciBsYSBwZXRpY2nDs24pXHJcblx0XHRzaGFyZVJlcGxheSgxKVxyXG5cdCk7XHJcblxyXG5cdHByaXZhdGUgX2RhdGFQYWdpbmF0aW9uOiBhbnkgPSBzaWduYWw8UGFnaW5hdGlvbj4oe1xyXG5cdFx0YXR0cmlidXRlczogW10sXHJcblx0XHRjYXRlZ29yeTogW10sXHJcblx0XHRvcHRpb25zOiBbXSxcclxuXHRcdGxpbWl0OiAwLFxyXG5cdFx0cGFnZTogMCxcclxuXHRcdHBhZ2VzOiAwLFxyXG5cdFx0dG90YWw6IDAsXHJcblx0XHRpdGVtczogW10sXHJcblx0XHRjYWxsZWQ6IGZhbHNlLFxyXG5cdFx0cHJpY2VfbWF4OiAwLFxyXG5cdFx0cHJpY2VfbWluOiAwXHJcblx0fSk7XHJcblxyXG5cdHByaXZhdGUgX3dhaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwcml2YXRlIF9maW5pc2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX2FwaVVybDogc3RyaW5nID0gJyc7XHJcblx0cHJpdmF0ZSBfc3RhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSBfbmV4dFByb2R1Y3RzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4oW10pO1xyXG5cdHB1YmxpYyBuZXh0UHJvZHVjdHMkID0gdGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cHJpdmF0ZSBfcmVzZXRTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwdWJsaWMgcmVzZXQkID0gdGhpcy5fcmVzZXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRwcml2YXRlIHByaWNlUmFuZ2VTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHByaWNlX21pbjogbnVtYmVyLCBwcmljZV9tYXg6IG51bWJlciB9Pih7IHByaWNlX21pbjogMCwgcHJpY2VfbWF4OiAwIH0pO1xyXG5cdHB1YmxpYyBwcmljZVJhbmdlJCA9IHRoaXMucHJpY2VSYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluaWNpYWxpemEgbGEgY29uZmlndXJhY2nDs24gcGFyYSBlbCBTZXJ2aWNpbyBkZSBQYWdpbmFjacOzbi5cclxuXHQgKiBAcGFyYW0gYXBpVXJsIFVybCBjb24gbG9zIGZpbHRyb3MgYXBsaWNhZG9zLiBcclxuXHQgKiBAcGFyYW0gbGltaXQgbGltaXRlIGRlIHByb2R1Y3RvcyBlbiBjYWRhIHBldGljacOzbi5cclxuXHQgKi9cclxuXHRpbml0aWFsaXplKGFwaVVybDogc3RyaW5nLCBsaW1pdD86IG51bWJlcikge1xyXG5cdFx0Ly9jb25zb2xlLmxvZyhhcGlVcmwpXHJcblx0XHR0aGlzLl9hcGlVcmwgPSBhcGlVcmw7XHJcblx0XHR0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmxpbWl0ID0gbGltaXQgfHwgdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5saW1pdCB8fCAxMDtcclxuXHRcdHRoaXMuX2ZpbmlzaGVkID0gZmFsc2U7XHJcblx0XHR0aGlzLl9zdGFydCA9IHRydWU7XHJcblx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRlbmdvIGxvcyBkYXRvcyBkZSBsYSBzaWd1aWVudGUgcMOhZ2luYS5cclxuXHQgKiBAcGFyYW0gbmV4dCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXROZXh0KG5leHQ/OiBhbnkpOiBib29sZWFuIHtcclxuXHRcdHRoaXMuX3dhaXRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5uZXh0KFtdKTtcclxuXHRcdHRoaXMuX2FwaVVybCA9IHRoaXMuX2FwaVVybC5yZXBsYWNlKCclMjAnLCAnICcpOy8vIG1hcyBwYXJhIGN1YW5kbyBlcyB1biBzZWFyY2ggdmFsdWUuXHJcblx0XHRsZXQgbmV4dFByb2R1Y3RzO1xyXG5cdFx0aWYgKHRoaXMuX3N0YXJ0KSB7XHJcblx0XHRcdG5leHRQcm9kdWN0cyA9IHRoaXMuX2Nvbm5lY3Rpb25TZXJ2aWNlLmdldCh0aGlzLl9hcGlVcmwsIHsgbGltaXQ6IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQsIHBhZ2U6IDEgfSlcclxuXHRcdFx0dGhpcy5fc3RhcnQgPSBmYWxzZVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bmV4dFByb2R1Y3RzID0gdGhpcy5fY29ubmVjdGlvblNlcnZpY2UuZ2V0KHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGlua3MubmV4dC5zbGljZSgxKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0IXRoaXMuX2ZpbmlzaGVkICYmIG5leHRQcm9kdWN0cy5zdWJzY3JpYmUoXHJcblx0XHRcdChyZXNwb25zZTogUGFnaW5hdGlvbikgPT4ge1xyXG5cdFx0XHRcdHJlc3BvbnNlLmxpbmtzID8gdGhpcy51cGRhdGVQYWdlRGF0YShyZXNwb25zZSkgOiB0aGlzLmZpbmlzaChyZXNwb25zZSlcclxuXHRcdFx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQocmVzcG9uc2UuaXRlbXMpO1xyXG5cdFx0XHR9XHJcblx0XHQpXHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxvcyBkYXRvcyBkZSBsYSBwYWdpbmEuXHJcblx0ICogQHBhcmFtIHJlc3BvbnNlIHJlc3B1ZXN0YSBkZWwgYmFja2VuZCBvIG9iamVjdG8gZGVsIHRpcG8gYFBhZ2luYXRpb25gLlxyXG5cdCAqL1xyXG5cdHVwZGF0ZVBhZ2VEYXRhKHJlc3BvbnNlOiBQYWdpbmF0aW9uKTogdm9pZCB7XHJcblx0XHR0aGlzLl9kYXRhUGFnaW5hdGlvbi5zZXQoeyAuLi5yZXNwb25zZSwgY2FsbGVkOiB0cnVlIH0pXHJcblx0XHR0aGlzLl9maW5pc2hlZCA9IChyZXNwb25zZS5wYWdlID09IHJlc3BvbnNlLnBhZ2VzKVxyXG5cdFx0dGhpcy5fd2FpdGluZyA9IGZhbHNlO1xyXG5cdFx0Ly8gRW1pdGlyIGxvcyB2YWxvcmVzIGRlIHByaWNlX21pbiB5IHByaWNlX21heCBhIHRyYXbDqXMgZGUgcHJpY2VSYW5nZVN1YmplY3QsXHJcblx0XHQvLyBwYXJhIHF1ZSBvdHJvcyBjb21wb25lbnRlcyAoZWouIGZpbHRybyBkZSBwcmVjaW8pIHB1ZWRhbiBtb3N0cmFybG9zLlxyXG5cdFx0dGhpcy5wcmljZVJhbmdlU3ViamVjdC5uZXh0KHtcclxuXHRcdFx0cHJpY2VfbWluOiByZXNwb25zZS5wcmljZV9taW4sXHJcblx0XHRcdHByaWNlX21heDogcmVzcG9uc2UucHJpY2VfbWF4XHJcblx0XHR9KTtcclxuXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1hcmNhIGVsIGZpbmFsIGRlIGxhcyBwYWdpbmFzLCBlcyBkZWNpciBjdWFuZG8geWEgbm8gcXVlZGEgbWFzIGVsZW1lbnRvcyBxdWUgbW9zdHJhci5cclxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgXHJcblx0ICovXHJcblx0ZmluaXNoKHJlc3BvbnNlOiBQYWdpbmF0aW9uKTogdm9pZCB7XHJcblx0XHR0aGlzLl9maW5pc2hlZCA9IHRydWU7XHJcblx0XHR0aGlzLl93YWl0aW5nID0gZmFsc2U7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGVuZ28gbG9zIHByb2R1Y3RvcyBkZSBsYSBwYWdpbmEgY2FyZ2FkYSBhY3R1YWwuIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXROZXh0UHJvZHVjdHMoKTogUHJvZHVjdFtdIHtcclxuXHRcdHJldHVybiB0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0LnZhbHVlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBzaSBlc3RhIGVzcGVyYW5kbyBvIG5vIGxhIHBldGljacOzbiBhbCBiYWNrZW5kLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRXYWl0aW5nKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fd2FpdGluZzsgfVxyXG5cdC8qKlxyXG5cdCAqIFNldGVhIGxhIHZhcmlhYmxlIHdhaXRpbmcuXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRXYWl0aW5nKHZhbHVlOiBib29sZWFuKTogdm9pZCB7IHRoaXMuX3dhaXRpbmcgPSB2YWx1ZSB9XHJcblx0LyoqXHJcblx0ICogR2V0dGVyIHBhcmEgbGEgdmFyaWFibGUgYF9maW5pc2hlZGAuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldEZpbmlzaGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZmluaXNoZWQ7IH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBlbCB0b3RhbCBkZSBJdGVtcy5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0VG90YWxJdGVtcygpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQgKiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLnBhZ2U7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGVuZ28gdW4gb2JqZWN0byBjb24gbG9zIGRhdG9zIGRlIGxvcyBmaWx0cm9zIHJlc3VsdGFudGVzLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRGaWx0ZXJzUGFnaW5hdGlvbigpOiBhbnkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0XCJjYXRlZ29yaWVzXCI6IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkuY2F0ZWdvcnksXHJcblx0XHRcdFwiYXR0cmlidXRlc1wiOiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmF0dHJpYnV0ZXMsXHJcblx0XHRcdFwib3B0aW9uc1wiOiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLm9wdGlvbnNcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogUGFyYSBjb250cnVpc3RlIGxhIHVybCBlbiBiYXNlIGEgbG9zIGZpbHRyb3MgYXBsaWNhZG9zLlxyXG5cdCAqIEBwYXJhbSBmaWx0ZXJzIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBidWlsZFVybChmaWx0ZXJzOiBGaWx0ZXJbXSkge1xyXG5cdFx0Y29uc3QgdXJsID0gdGhpcy5fY29uc3RhbnRzLnNlYXJjaFZhbHVlXHJcblx0XHRcdD8gdGhpcy5fZmlsdGVyc1NlcnZpY2UuZ2VuZXJhdGVGaW5hbEFwaSh0aGlzLl9jb25zdGFudHMuc2VhcmNoVmFsdWUpXHJcblx0XHRcdDogdGhpcy5fZmlsdGVyc1NlcnZpY2UuZ2VuZXJhdGVGaW5hbEFwaSgpO1xyXG5cclxuXHRcdHJldHVybiB1cmw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSB1biBvYnNlcnZhYmxlIGRlIGxvcyBwcm9kdWN0b3MgcXVlIGRldm9sdmnDsyBsYSDDumx0aW1hIHDDoWdpbmEgb2J0ZW5pZGEuXHJcblx0ICogQHBhcmFtIHVybCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0RGF0YSh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8UHJvZHVjdFtdPiB7XHJcblxyXG5cdFx0Ly8gRGV0ZWN0YXIgbGEgcMOhZ2luYSBkZXNkZSBsYSBVUkwgKD9wYWdlPW4pLiBTaSBubyB2aWVuZSwgYXN1bWltb3MgcGFnZT0xLlxyXG5cdFx0Y29uc3QgcGFnZU1hdGNoID0gdXJsLm1hdGNoKC9bPyZdcGFnZT0oXFxkKykvKTtcclxuXHRcdGNvbnN0IHBhZ2UgPSBwYWdlTWF0Y2ggPyBOdW1iZXIocGFnZU1hdGNoWzFdKSA6IDE7XHJcblxyXG5cdFx0Ly8gU2kgZXMgbGEgcHJpbWVyYSBww6FnaW5hLCByZXNldGVhbW9zIGVzdGFkbyBpbnRlcm5vXHJcblx0XHRpZiAocGFnZSA9PT0gMSkge1xyXG5cdFx0XHR0aGlzLl9yZXNldFN1YmplY3QubmV4dCh0cnVlKTtcclxuXHRcdFx0dGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5uZXh0KFtdKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBMbGFtYW1vcyBhbCBiYWNrZW5kIGNvbiBlbCBwYWdlIGNvcnJlY3RvXHJcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvblNlcnZpY2UuZ2V0KHVybCwgeyBsaW1pdDogMTAsIHBhZ2UgfSkucGlwZShcclxuXHRcdFx0dGFwKChyZXM6IFBhZ2luYXRpb24pID0+IHtcclxuXHRcdFx0XHQvLyBBY3R1YWxpemFyIGRhdG9zIGRlIHBhZ2luYWNpw7NuICsgcHJpY2VfbWluL3ByaWNlX21heFxyXG5cdFx0XHRcdHJlcy5saW5rcyA/IHRoaXMudXBkYXRlUGFnZURhdGEocmVzKSA6IHRoaXMuZmluaXNoKHJlcyk7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRtYXAoKHJlczogUGFnaW5hdGlvbikgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGl0ZW1zID0gcmVzLml0ZW1zID8/IFtdO1xyXG5cclxuXHRcdFx0XHQvLyBNYW50ZW5lciBuZXh0UHJvZHVjdHMkIHNpbmNyb25pemFkbyAocG9yIGNvbXBhdGliaWxpZGFkKVxyXG5cdFx0XHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChpdGVtcyk7XHJcblxyXG5cdFx0XHRcdC8vIExvIHF1ZSB2ZSBwYWdpbmF0aW9uRGF0YSQgKHN3aXRjaE1hcCkgc29uIGVzdG9zIGl0ZW1zXHJcblx0XHRcdFx0cmV0dXJuIGl0ZW1zO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuXHJcbiJdfQ==
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUNwRDs7Ozs7Ozs7O0dBU0c7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBRXJCLGtCQUFrQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxlQUFlLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN4RCxVQUFVLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhFOzs7Ozs7Ozs7T0FTRztJQUNJLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFELEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNkLENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNoQixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFBRSxPQUFPLEtBQUssQ0FBQztRQUU5QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFD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QUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsR0FBZSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFFOUIsMkRBQTJEO1lBQzNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEMsd0RBQXdEO1lBQ3hELE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7d0dBek9XLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmpCLE1BQU07OzRGQUVOLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbiwgUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuL2ZpbHRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi9jbGFzc2VzJztcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbi8qKlxuICogU2VydmljaW8gcGFyYSBtYW5lamFyIGxhIHBhZ2luYWNpw7NuIHkgbGEgY2FyZ2EgZGUgcHJvZHVjdG9zLlxuICpcbiAqIFNlIGVuY2FyZ2EgZGU6XG4gKiAtIEVzY3VjaGFyIGxvcyBjYW1iaW9zIGVuIGxvcyBmaWx0cm9zIChjYXRlZ29yw61hcywgYXRyaWJ1dG9zLCBwcmVjaW8sIGLDunNxdWVkYSwgZXRjLikuXG4gKiAtIENvbnN0cnVpciBsYSBVUkwgYWwgYmFja2VuZCBjb24gZXNvcyBmaWx0cm9zLlxuICogLSBQZWRpciBsb3MgcHJvZHVjdG9zIGFsIGVuZHBvaW50IGRlIHByb2R1Y3Qtc2VhcmNoLlxuICogLSBFeHBvbmVyIHVuIG9ic2VydmFibGUgY29uIGxhIMO6bHRpbWEgcMOhZ2luYSBkZSBwcm9kdWN0b3MgKGBwYWdpbmF0aW9uRGF0YSRgKVxuICogICB5IG90cm9zIGhlbHBlcnMgKHByZWNpbyBtw61uaW1vL23DoXhpbW8sIHNpZ3VpZW50ZSBww6FnaW5hLCBldGMuKS5cbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvblNlcnZpY2Uge1xuXG5cdHByaXZhdGUgX2Nvbm5lY3Rpb25TZXJ2aWNlOiBDb25uZWN0aW9uU2VydmljZSA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSk7XG5cdHByaXZhdGUgX2ZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSA9IGluamVjdChGaWx0ZXJzU2VydmljZSlcblx0cHJpdmF0ZSBfY29uc3RhbnRzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XG5cblx0LyoqXG5cdCAqIEZsdWpvIHByaW5jaXBhbDogYSBwYXJ0aXIgZGUgbG9zIGZpbHRyb3Mg4oaSIGFybWEgVVJMIOKGkiBjb25zdWx0YSBiYWNrZW5kIOKGkiBkZXZ1ZWx2ZSBwcm9kdWN0b3MuXG5cdCAqXG5cdCAqIFBhc29zOlxuXHQgKiAxKSBFc3BlcmEgYSBxdWUgYEZpbHRlcnNTZXJ2aWNlYCBlbWl0YSBmaWx0cm9zIHbDoWxpZG9zLlxuXHQgKiAyKSBDb25zdHJ1eWUgbGEgVVJMIGZpbmFsIGNvbiBgYnVpbGRVcmwoKWAuXG5cdCAqIDMpIEV2aXRhIHJlcGV0aXIgbGxhbWFkYXMgc2kgbGEgVVJMIG5vIGNhbWJpw7MgKGBkaXN0aW5jdFVudGlsQ2hhbmdlZGApLlxuXHQgKiA0KSBMbGFtYSBhbCBiYWNrZW5kIGNvbiBgZ2V0RGF0YSh1cmwpYC5cblx0ICogNSkgQ29tcGFydGUgZWwgw7psdGltbyByZXN1bHRhZG8gY29uIHRvZG9zIGxvcyBzdXNjcmlwdG9yZXMgKGBzaGFyZVJlcGxheSgxKWApLlxuXHQgKi9cblx0cHVibGljIHBhZ2luYXRpb25EYXRhJCA9IHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLmZpbHRlcnMkLnBpcGUoXG5cdFx0dGFwKGZpbHRlcnMgPT4ge1xuXHRcdH0pLFxuXHRcdGZpbHRlcihmaWx0ZXJzID0+IHtcblx0XHRcdGlmICghZmlsdGVycyB8fCAhZmlsdGVycy5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuXHRcdFx0Y29uc3QgY2F0ZWdvcnlGaWx0ZXIgPSBmaWx0ZXJzLmZpbmQoZiA9PiBmLnR5cGUoKSA9PT0gJ2NhdGVnb3JpZXMnKTtcblx0XHRcdGNvbnN0IGhhc0NhdGVnb3J5U2VsZWN0ZWQgPSAhIWNhdGVnb3J5RmlsdGVyPy5nZXRTZWxlY3RlZExpc3QoKT8ubGVuZ3RoO1xuXG5cdFx0XHRjb25zdCBpc0NhdGVnb3J5Um91dGUgPVxuXHRcdFx0XHR0aGlzLl9jb25zdGFudHMuY3VycmVudFJvdXRlVHlwZSA9PT0gJ2NhdGVnb3JpZXMnO1xuXG5cdFx0XHQvLyBTaSBlc3RhbW9zIGVuIHJ1dGEgZGUgY2F0ZWdvcsOtYXMgeSB0b2RhdsOtYSBubyBzZSBtYXJjw7MgbmluZ3VuYSxcblx0XHRcdC8vIGVzcGVyYW1vcyBhIHF1ZSBlbCBDYXRlZ29yeUZpbHRlciBzZSBoaWRyYXRlIGFudGVzIGRlIGRpc3BhcmFyIGxhIGxsYW1hZGEuXG5cdFx0XHRpZiAoaXNDYXRlZ29yeVJvdXRlICYmICFoYXNDYXRlZ29yeVNlbGVjdGVkKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSksXG5cblx0XHQvLyAyKSBDb252ZXJ0aW1vcyBmaWx0cm9zIC0+IFVSTFxuXHRcdG1hcChmaWx0ZXJzID0+IHtcblx0XHRcdGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoZmlsdGVycyk7XG5cdFx0XHRyZXR1cm4gdXJsO1xuXHRcdH0pLFxuXG5cdFx0Ly8gMykgU29sbyBzZWd1aW1vcyBzaSBsYSBVUkwgY2FtYmnDsyByZXNwZWN0byBkZSBsYSBlbWlzacOzbiBhbnRlcmlvclxuXHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG5cblx0XHQvLyA0KSBMbGFtYW1vcyBhbCBiYWNrZW5kIGNvbiBsYSBVUkwgY29uc3RydWlkYVxuXHRcdHRhcCh1cmwgPT4ge1xuXHRcdH0pLFxuXHRcdHN3aXRjaE1hcCh1cmwgPT4gdGhpcy5nZXREYXRhKHVybCkpLFxuXG5cdFx0Ly8gNSkgUmV1dGlsaXphciByZXN1bHRhZG8gc2kgYWxndWllbiBtw6FzIHNlIHN1c2NyaWJlIChldml0YSByZXBldGlyIGxhIHBldGljacOzbilcblx0XHRzaGFyZVJlcGxheSgxKVxuXHQpO1xuXG5cdHByaXZhdGUgX2RhdGFQYWdpbmF0aW9uOiBhbnkgPSBzaWduYWw8UGFnaW5hdGlvbj4oe1xuXHRcdGF0dHJpYnV0ZXM6IFtdLFxuXHRcdGNhdGVnb3J5OiBbXSxcblx0XHRvcHRpb25zOiBbXSxcblx0XHRsaW1pdDogMCxcblx0XHRwYWdlOiAwLFxuXHRcdHBhZ2VzOiAwLFxuXHRcdHRvdGFsOiAwLFxuXHRcdGl0ZW1zOiBbXSxcblx0XHRjYWxsZWQ6IGZhbHNlLFxuXHRcdHByaWNlX21heDogMCxcblx0XHRwcmljZV9taW46IDBcblx0fSk7XG5cblx0cHJpdmF0ZSBfd2FpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXHRwcml2YXRlIF9maW5pc2hlZDogYm9vbGVhbiA9IGZhbHNlO1xuXHRwcml2YXRlIF9hcGlVcmw6IHN0cmluZyA9ICcnO1xuXHRwcml2YXRlIF9zdGFydDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdHByaXZhdGUgX25leHRQcm9kdWN0c1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxQcm9kdWN0W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQcm9kdWN0W10+KFtdKTtcblx0cHVibGljIG5leHRQcm9kdWN0cyQgPSB0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdHByaXZhdGUgX3Jlc2V0U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cdHB1YmxpYyByZXNldCQgPSB0aGlzLl9yZXNldFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cblx0cHJpdmF0ZSBwcmljZVJhbmdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBwcmljZV9taW46IG51bWJlciwgcHJpY2VfbWF4OiBudW1iZXIgfT4oeyBwcmljZV9taW46IDAsIHByaWNlX21heDogMCB9KTtcblx0cHVibGljIHByaWNlUmFuZ2UkID0gdGhpcy5wcmljZVJhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHRjb25zdHJ1Y3RvcigpIHsgfVxuXG5cdC8qKlxuXHQgKiBJbmljaWFsaXphIGxhIGNvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgU2VydmljaW8gZGUgUGFnaW5hY2nDs24uXG5cdCAqIEBwYXJhbSBhcGlVcmwgVXJsIGNvbiBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuIFxuXHQgKiBAcGFyYW0gbGltaXQgbGltaXRlIGRlIHByb2R1Y3RvcyBlbiBjYWRhIHBldGljacOzbi5cblx0ICovXG5cdGluaXRpYWxpemUoYXBpVXJsOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKSB7XG5cdFx0Ly9jb25zb2xlLmxvZyhhcGlVcmwpXG5cdFx0dGhpcy5fYXBpVXJsID0gYXBpVXJsO1xuXHRcdHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQgPSBsaW1pdCB8fCB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmxpbWl0IHx8IDEwO1xuXHRcdHRoaXMuX2ZpbmlzaGVkID0gZmFsc2U7XG5cdFx0dGhpcy5fc3RhcnQgPSB0cnVlO1xuXHRcdHRoaXMuX25leHRQcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XG5cdH1cblx0LyoqXG5cdCAqIE9idGVuZ28gbG9zIGRhdG9zIGRlIGxhIHNpZ3VpZW50ZSBww6FnaW5hLlxuXHQgKiBAcGFyYW0gbmV4dCBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRnZXROZXh0KG5leHQ/OiBhbnkpOiBib29sZWFuIHtcblx0XHR0aGlzLl93YWl0aW5nID0gdHJ1ZTtcblx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xuXHRcdHRoaXMuX2FwaVVybCA9IHRoaXMuX2FwaVVybC5yZXBsYWNlKCclMjAnLCAnICcpOy8vIG1hcyBwYXJhIGN1YW5kbyBlcyB1biBzZWFyY2ggdmFsdWUuXG5cdFx0bGV0IG5leHRQcm9kdWN0cztcblx0XHRpZiAodGhpcy5fc3RhcnQpIHtcblx0XHRcdG5leHRQcm9kdWN0cyA9IHRoaXMuX2Nvbm5lY3Rpb25TZXJ2aWNlLmdldCh0aGlzLl9hcGlVcmwsIHsgbGltaXQ6IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGltaXQsIHBhZ2U6IDEgfSlcblx0XHRcdHRoaXMuX3N0YXJ0ID0gZmFsc2Vcblx0XHR9IGVsc2Uge1xuXHRcdFx0bmV4dFByb2R1Y3RzID0gdGhpcy5fY29ubmVjdGlvblNlcnZpY2UuZ2V0KHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkubGlua3MubmV4dC5zbGljZSgxKSk7XG5cdFx0fVxuXG5cdFx0IXRoaXMuX2ZpbmlzaGVkICYmIG5leHRQcm9kdWN0cy5zdWJzY3JpYmUoXG5cdFx0XHQocmVzcG9uc2U6IFBhZ2luYXRpb24pID0+IHtcblx0XHRcdFx0cmVzcG9uc2UubGlua3MgPyB0aGlzLnVwZGF0ZVBhZ2VEYXRhKHJlc3BvbnNlKSA6IHRoaXMuZmluaXNoKHJlc3BvbnNlKVxuXHRcdFx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQocmVzcG9uc2UuaXRlbXMpO1xuXHRcdFx0fVxuXHRcdClcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHQvKipcblx0ICogQWN0dWFsaXphIGxvcyBkYXRvcyBkZSBsYSBwYWdpbmEuXG5cdCAqIEBwYXJhbSByZXNwb25zZSByZXNwdWVzdGEgZGVsIGJhY2tlbmQgbyBvYmplY3RvIGRlbCB0aXBvIGBQYWdpbmF0aW9uYC5cblx0ICovXG5cdHVwZGF0ZVBhZ2VEYXRhKHJlc3BvbnNlOiBQYWdpbmF0aW9uKTogdm9pZCB7XG5cdFx0dGhpcy5fZGF0YVBhZ2luYXRpb24uc2V0KHsgLi4ucmVzcG9uc2UsIGNhbGxlZDogdHJ1ZSB9KVxuXHRcdHRoaXMuX2ZpbmlzaGVkID0gKHJlc3BvbnNlLnBhZ2UgPT0gcmVzcG9uc2UucGFnZXMpXG5cdFx0dGhpcy5fd2FpdGluZyA9IGZhbHNlO1xuXHRcdC8vIEVtaXRpciBsb3MgdmFsb3JlcyBkZSBwcmljZV9taW4geSBwcmljZV9tYXggYSB0cmF2w6lzIGRlIHByaWNlUmFuZ2VTdWJqZWN0LFxuXHRcdC8vIHBhcmEgcXVlIG90cm9zIGNvbXBvbmVudGVzIChlai4gZmlsdHJvIGRlIHByZWNpbykgcHVlZGFuIG1vc3RyYXJsb3MuXG5cdFx0dGhpcy5wcmljZVJhbmdlU3ViamVjdC5uZXh0KHtcblx0XHRcdHByaWNlX21pbjogcmVzcG9uc2UucHJpY2VfbWluLFxuXHRcdFx0cHJpY2VfbWF4OiByZXNwb25zZS5wcmljZV9tYXhcblx0XHR9KTtcblxuXHR9XG5cdC8qKlxuXHQgKiBNYXJjYSBlbCBmaW5hbCBkZSBsYXMgcGFnaW5hcywgZXMgZGVjaXIgY3VhbmRvIHlhIG5vIHF1ZWRhIG1hcyBlbGVtZW50b3MgcXVlIG1vc3RyYXIuXG5cdCAqIEBwYXJhbSByZXNwb25zZSBcblx0ICovXG5cdGZpbmlzaChyZXNwb25zZTogUGFnaW5hdGlvbik6IHZvaWQge1xuXHRcdHRoaXMuX2ZpbmlzaGVkID0gdHJ1ZTtcblx0XHR0aGlzLl93YWl0aW5nID0gZmFsc2U7XG5cdH1cblx0LyoqXG5cdCAqIE9idGVuZ28gbG9zIHByb2R1Y3RvcyBkZSBsYSBwYWdpbmEgY2FyZ2FkYSBhY3R1YWwuIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHB1YmxpYyBnZXROZXh0UHJvZHVjdHMoKTogUHJvZHVjdFtdIHtcblx0XHRyZXR1cm4gdGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC52YWx1ZTtcblx0fVxuXHQvKipcblx0ICogRGV2dWVsdmUgc2kgZXN0YSBlc3BlcmFuZG8gbyBubyBsYSBwZXRpY2nDs24gYWwgYmFja2VuZC5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgZ2V0V2FpdGluZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3dhaXRpbmc7IH1cblx0LyoqXG5cdCAqIFNldGVhIGxhIHZhcmlhYmxlIHdhaXRpbmcuXG5cdCAqIEBwYXJhbSB2YWx1ZSBcblx0ICovXG5cdHB1YmxpYyBzZXRXYWl0aW5nKHZhbHVlOiBib29sZWFuKTogdm9pZCB7IHRoaXMuX3dhaXRpbmcgPSB2YWx1ZSB9XG5cdC8qKlxuXHQgKiBHZXR0ZXIgcGFyYSBsYSB2YXJpYWJsZSBgX2ZpbmlzaGVkYC5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgZ2V0RmluaXNoZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9maW5pc2hlZDsgfVxuXHQvKipcblx0ICogRGV2dWVsdmUgZWwgdG90YWwgZGUgSXRlbXMuXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdldFRvdGFsSXRlbXMoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5fZGF0YVBhZ2luYXRpb24oKS5saW1pdCAqIHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkucGFnZTtcblx0fVxuXHQvKipcblx0ICogT2J0ZW5nbyB1biBvYmplY3RvIGNvbiBsb3MgZGF0b3MgZGUgbG9zIGZpbHRyb3MgcmVzdWx0YW50ZXMuXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdldEZpbHRlcnNQYWdpbmF0aW9uKCk6IGFueSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFwiY2F0ZWdvcmllc1wiOiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLmNhdGVnb3J5LFxuXHRcdFx0XCJhdHRyaWJ1dGVzXCI6IHRoaXMuX2RhdGFQYWdpbmF0aW9uKCkuYXR0cmlidXRlcyxcblx0XHRcdFwib3B0aW9uc1wiOiB0aGlzLl9kYXRhUGFnaW5hdGlvbigpLm9wdGlvbnNcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIFBhcmEgY29udHJ1aXN0ZSBsYSB1cmwgZW4gYmFzZSBhIGxvcyBmaWx0cm9zIGFwbGljYWRvcy5cblx0ICogQHBhcmFtIGZpbHRlcnMgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGJ1aWxkVXJsKGZpbHRlcnM6IEZpbHRlcltdKSB7XG5cdFx0Y29uc3QgdXJsID0gdGhpcy5fY29uc3RhbnRzLnNlYXJjaFZhbHVlXG5cdFx0XHQ/IHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLmdlbmVyYXRlRmluYWxBcGkodGhpcy5fY29uc3RhbnRzLnNlYXJjaFZhbHVlKVxuXHRcdFx0OiB0aGlzLl9maWx0ZXJzU2VydmljZS5nZW5lcmF0ZUZpbmFsQXBpKCk7XG5cblx0XHRyZXR1cm4gdXJsO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldnVlbHZlIHVuIG9ic2VydmFibGUgZGUgbG9zIHByb2R1Y3RvcyBxdWUgZGV2b2x2acOzIGxhIMO6bHRpbWEgcMOhZ2luYSBvYnRlbmlkYS5cblx0ICogQHBhcmFtIHVybCBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgZ2V0RGF0YSh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8UHJvZHVjdFtdPiB7XG5cblx0XHQvLyBEZXRlY3RhciBsYSBww6FnaW5hIGRlc2RlIGxhIFVSTCAoP3BhZ2U9bikuIFNpIG5vIHZpZW5lLCBhc3VtaW1vcyBwYWdlPTEuXG5cdFx0Y29uc3QgcGFnZU1hdGNoID0gdXJsLm1hdGNoKC9bPyZdcGFnZT0oXFxkKykvKTtcblx0XHRjb25zdCBwYWdlID0gcGFnZU1hdGNoID8gTnVtYmVyKHBhZ2VNYXRjaFsxXSkgOiAxO1xuXG5cdFx0Ly8gU2kgZXMgbGEgcHJpbWVyYSBww6FnaW5hLCByZXNldGVhbW9zIGVzdGFkbyBpbnRlcm5vXG5cdFx0aWYgKHBhZ2UgPT09IDEpIHtcblx0XHRcdHRoaXMuX3Jlc2V0U3ViamVjdC5uZXh0KHRydWUpO1xuXHRcdFx0dGhpcy5fbmV4dFByb2R1Y3RzU3ViamVjdC5uZXh0KFtdKTtcblx0XHR9XG5cblx0XHQvLyBMbGFtYW1vcyBhbCBiYWNrZW5kIGNvbiBlbCBwYWdlIGNvcnJlY3RvXG5cdFx0cmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25TZXJ2aWNlLmdldCh1cmwsIHsgbGltaXQ6IDEwLCBwYWdlIH0pLnBpcGUoXG5cdFx0XHR0YXAoKHJlczogUGFnaW5hdGlvbikgPT4ge1xuXHRcdFx0XHQvLyBBY3R1YWxpemFyIGRhdG9zIGRlIHBhZ2luYWNpw7NuICsgcHJpY2VfbWluL3ByaWNlX21heFxuXHRcdFx0XHRyZXMubGlua3MgPyB0aGlzLnVwZGF0ZVBhZ2VEYXRhKHJlcykgOiB0aGlzLmZpbmlzaChyZXMpO1xuXHRcdFx0fSksXG5cdFx0XHRtYXAoKHJlczogUGFnaW5hdGlvbikgPT4ge1xuXHRcdFx0XHRjb25zdCBpdGVtcyA9IHJlcy5pdGVtcyA/PyBbXTtcblxuXHRcdFx0XHQvLyBNYW50ZW5lciBuZXh0UHJvZHVjdHMkIHNpbmNyb25pemFkbyAocG9yIGNvbXBhdGliaWxpZGFkKVxuXHRcdFx0XHR0aGlzLl9uZXh0UHJvZHVjdHNTdWJqZWN0Lm5leHQoaXRlbXMpO1xuXG5cdFx0XHRcdC8vIExvIHF1ZSB2ZSBwYWdpbmF0aW9uRGF0YSQgKHN3aXRjaE1hcCkgc29uIGVzdG9zIGl0ZW1zXG5cdFx0XHRcdHJldHVybiBpdGVtcztcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxufVxuXG4iXX0=
@@ -102,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
102
102
  providedIn: 'root'
103
103
  }]
104
104
  }], ctorParameters: () => [] });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BhcmFtZXRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFDL0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBQzdCOztPQUVHO0lBQ0ssWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ2xEOztPQUVHO0lBQ0ssVUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBRTlDOztPQUVHO0lBQ0ssZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFcEQsVUFBVTtJQUNWOzs7T0FHRztJQUNLLG1CQUFtQixLQUFLLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sYUFBYSxDQUFBLENBQUMsQ0FBQztJQUVuSCxhQUFhO0lBQ2I7O09BRUc7SUFDSyxpQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7SUFDbEUsV0FBVyxHQUFtQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFNUYsU0FB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LGtCQUFrQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTNELElBQUksUUFBUTtZQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkUsSUFBSSxNQUFNO1lBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLEdBQUc7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLFNBQVM7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLElBQUksT0FBTztZQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGdCQUFnQixDQUFDO3dHQXJHTCxpQkFBaUI7NEdBQWpCLGlCQUFpQixjQUZqQixNQUFNOzs0RkFFTixpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcyc7XHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBxdWUgbWFuZWphIGxvcyBwYXJhbWV0cm9zIGRlIGxhIGFwbGljYWNpw7NuLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyc1NlcnZpY2Uge1xyXG5cdC8qKlxyXG5cdCAqIENvbnN0YW50ZXMgZGUgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBhcGlDb25zdGFudHMgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSlcclxuXHQvKipcclxuXHQgKiBNYW5lamEgbGFzIHBldGljaW9uZXMgYSBsYSBBUElcclxuXHQgKi9cclxuXHRwcml2YXRlIGNvbm5lY3Rpb24gPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpXHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlcnZpY2lvIGRlIEFuYWx5dGljc1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgYW5hbHl0aWNzU2VydmljZSA9IGluamVjdChBbmFseXRpY3NTZXJ2aWNlKTtcclxuXHJcblx0Ly9BUEkgVVJMU1xyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIGxhIFVSTCBwYXJhIG9idGVuZXIgdG9kb3MgbG9zIHBhcmFtZXRyb3MuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRBbGxQYXJhbWV0ZXJzQVBJKCkgeyByZXR1cm4gYCR7dGhpcy5hcGlDb25zdGFudHMuU0hPUF9BUElfVVJMfSR7dGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTH0vcGFyYW1ldGVyc2AgfVxyXG5cclxuXHQvL09CU0VSVkFCTEVTXHJcblx0LyoqXHJcblx0ICogU3ViamVjdCBwYXJhIG1hbmVqYXIgbG9zIGNhbWJpb3MgZW4gbG9zIGRhdG9zIGRlIGxvcyBwYXJhbWV0cm9zXHJcblx0ICovXHJcblx0cHJpdmF0ZSBwYXJhbWV0ZXJzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFyYW1ldGVyW10gfCBudWxsPihudWxsKTtcclxuXHRwcml2YXRlIHBhcmFtZXRlcnMkOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdIHwgbnVsbD4gPSB0aGlzLnBhcmFtZXRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHQvL01FVEhPRFNcclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGxvcyBwYXLDoW1ldHJvcyBkZWwgYmFja2VuZC4gXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldFBhcmFtZXRlcnMoKTogT2JzZXJ2YWJsZTxQYXJhbWV0ZXJbXSB8IG51bGw+IHtcclxuXHRcdGlmICh0aGlzLnBhcmFtZXRlcnNTdWJqZWN0LmdldFZhbHVlKCkgPT09IG51bGwpIHtcclxuXHRcdFx0dGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldEFsbFBhcmFtZXRlcnNBUEkoKSkucGlwZShcclxuXHRcdFx0XHRzaGFyZVJlcGxheSgxKSxcclxuXHRcdFx0XHRtYXAoKHJlc3BvbnNlOiBQYXJhbWV0ZXJbXSkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5wYXJhbWV0ZXJzU3ViamVjdC5uZXh0KHJlc3BvbnNlKVxyXG5cdFx0XHRcdFx0dGhpcy5pbml0QW5hbHl0aWNzRnJvbVBhcmFtcyhyZXNwb25zZSk7XHJcblx0XHRcdFx0XHRyZXR1cm4gcmVzcG9uc2VcclxuXHRcdFx0XHR9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYEVycm9yOiAke2Vycm9yfWApXHJcblx0XHRcdFx0XHR0aGlzLnBhcmFtZXRlcnNTdWJqZWN0Lm5leHQoW10pXHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoW10pXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnBhcmFtZXRlcnMkXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENvbXBydWViYSBzaSBlbCBjw7NkaWdvIGRlIHVuIHBhcsOhbWV0cm8gZXhpc3RlIGVuIGxhIGxpc3RhIGRlIHBhcsOhbWV0cm9zLlxyXG5cdCAqIEBwYXJhbSBwYXJhbXMgTGlzdGEgZGUgcGFyw6FtZXRyb3NcclxuXHQgKiBAcGFyYW0gY29kZSBDw7NkaWdvIGRlbCBwYXLDoW1ldHJvIGEgYnVzY2FyXHJcblx0ICogQHJldHVybnMgRWwgb2JqZXRvIGNvbiBsb3MgZGF0b3MgZGVsIHBhcsOhbWV0cm8gZW5jb250cmFkbywgc2lubyByZXRvcm5hIGBudWxsYFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYXNQYXJhbXMocGFyYW1zOiBhbnksIGNvZGU6IHN0cmluZyk6IGFueSB7IHJldHVybiBwYXJhbXMgJiYgcGFyYW1zLmZpbmQoKHBhcmFtOiBhbnkpID0+IHBhcmFtLmNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY29kZS50b0xvd2VyQ2FzZSgpKSkgfVxyXG5cclxuXHRcclxuXHRwcml2YXRlIGZpbmRBbmFseXRpY3NQYXJhbShcclxuXHRcdHBhcmFtczogUGFyYW1ldGVyW10sXHJcblx0XHRzZXJ2aWNlOiAnZmFjZWJvb2snIHwgJ2dvb2dsZScgfCAnZ3RtJyB8ICdtZXRyaWNvb2wnIHwgJ2RvcHBsZXInXHJcblx0KTogUGFyYW1ldGVyIHwgdW5kZWZpbmVkIHtcclxuXHRcdGNvbnN0IGNoYW5uZWwgPSB0aGlzLmFwaUNvbnN0YW50cy5DSEFOTkVMPy50b0xvd2VyQ2FzZSgpID8/ICcnO1xyXG5cclxuXHRcdC8vIEPDs2RpZ28gZXNwZWPDrWZpY28gcG9yIGNhbmFsOiBmYWNlYm9va19ub21icmVjYW5hbF9pZFxyXG5cdFx0Y29uc3QgY29kZUNoYW5uZWwgPSBgJHtzZXJ2aWNlfV8ke2NoYW5uZWx9X2lkYDtcclxuXHJcblx0XHQvLyBDw7NkaWdvIGdlbsOpcmljbzogZmFjZWJvb2tfaWRcclxuXHRcdGNvbnN0IGNvZGVHZW5lcmljID0gYCR7c2VydmljZX1faWRgO1xyXG5cclxuXHRcdGNvbnN0IG5vcm1hbGl6ZSA9IChjb2RlPzogc3RyaW5nKSA9PiAoY29kZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuXHJcblx0XHRsZXQgcGFyYW0gPSBwYXJhbXMuZmluZChwID0+IG5vcm1hbGl6ZShwLmNvZGUpID09PSBjb2RlQ2hhbm5lbCk7XHJcblxyXG5cdFx0aWYgKCFwYXJhbSkge1xyXG5cdFx0XHRwYXJhbSA9IHBhcmFtcy5maW5kKHAgPT4gbm9ybWFsaXplKHAuY29kZSkgPT09IGNvZGVHZW5lcmljKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcGFyYW07XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRBbmFseXRpY3NGcm9tUGFyYW1zKHBhcmFtczogUGFyYW1ldGVyW10gfCBudWxsKSB7XHJcblx0XHRpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuXHRcdGlmICghdGhpcy5hcGlDb25zdGFudHMuSVNfUFJPRFVDVElPTikgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IGZhY2Vib29rID0gdGhpcy5maW5kQW5hbHl0aWNzUGFyYW0ocGFyYW1zLCAnZmFjZWJvb2snKTtcclxuXHRcdGNvbnN0IGdvb2dsZSA9IHRoaXMuZmluZEFuYWx5dGljc1BhcmFtKHBhcmFtcywgJ2dvb2dsZScpO1xyXG5cdFx0Y29uc3QgZ3RtID0gdGhpcy5maW5kQW5hbHl0aWNzUGFyYW0ocGFyYW1zLCAnZ3RtJyk7XHJcblx0XHRjb25zdCBtZXRyaWNvb2wgPSB0aGlzLmZpbmRBbmFseXRpY3NQYXJhbShwYXJhbXMsICdtZXRyaWNvb2wnKTtcclxuXHRcdGNvbnN0IGRvcHBsZXIgPSB0aGlzLmZpbmRBbmFseXRpY3NQYXJhbShwYXJhbXMsICdkb3BwbGVyJyk7XHJcblxyXG5cdFx0aWYgKGZhY2Vib29rKSB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaW5pdGlhbGl6ZUZhY2Vib29rKGZhY2Vib29rLnZhbHVlKTtcclxuXHRcdGlmIChnb29nbGUpIHRoaXMuYW5hbHl0aWNzU2VydmljZS5pbml0aWFsaXplR29vZ2xlKGdvb2dsZS52YWx1ZSk7XHJcblx0XHRpZiAoZ3RtKSB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaW5pdGlhbGl6ZUdUTShndG0udmFsdWUpO1xyXG5cdFx0aWYgKG1ldHJpY29vbCkgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmluaXRpYWxpemVNZXRyaWNvb2wobWV0cmljb29sLnZhbHVlKTtcclxuXHRcdGlmIChkb3BwbGVyKSB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaW5pdGlhbGl6ZURvcHBsZXIoZG9wcGxlci52YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxufVxyXG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BhcmFtZXRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFDL0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBQzdCOztPQUVHO0lBQ0ssWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ2xEOztPQUVHO0lBQ0ssVUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBRTlDOztPQUVHO0lBQ0ssZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFcEQsVUFBVTtJQUNWOzs7T0FHRztJQUNLLG1CQUFtQixLQUFLLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sYUFBYSxDQUFBLENBQUMsQ0FBQztJQUVuSCxhQUFhO0lBQ2I7O09BRUc7SUFDSyxpQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7SUFDbEUsV0FBVyxHQUFtQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFNUYsU0FB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LGtCQUFrQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTNELElBQUksUUFBUTtZQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkUsSUFBSSxNQUFNO1lBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLEdBQUc7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLFNBQVM7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLElBQUksT0FBTztZQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGdCQUFnQixDQUFDO3dHQXJHTCxpQkFBaUI7NEdBQWpCLGlCQUFpQixjQUZqQixNQUFNOzs0RkFFTixpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzJztcbi8qKlxuICogU2VydmljaW8gcXVlIG1hbmVqYSBsb3MgcGFyYW1ldHJvcyBkZSBsYSBhcGxpY2FjacOzbi5cbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyc1NlcnZpY2Uge1xuXHQvKipcblx0ICogQ29uc3RhbnRlcyBkZSBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpXG5cdC8qKlxuXHQgKiBNYW5lamEgbGFzIHBldGljaW9uZXMgYSBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgY29ubmVjdGlvbiA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSlcblxuXHQvKipcblx0ICogU2VydmljaW8gZGUgQW5hbHl0aWNzXG5cdCAqL1xuXHRwcml2YXRlIGFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XG5cblx0Ly9BUEkgVVJMU1xuXHQvKipcblx0ICogRGV2dWVsdmUgbGEgVVJMIHBhcmEgb2J0ZW5lciB0b2RvcyBsb3MgcGFyYW1ldHJvcy5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIGdldEFsbFBhcmFtZXRlcnNBUEkoKSB7IHJldHVybiBgJHt0aGlzLmFwaUNvbnN0YW50cy5TSE9QX0FQSV9VUkx9JHt0aGlzLmFwaUNvbnN0YW50cy5DSEFOTkVMfS9wYXJhbWV0ZXJzYCB9XG5cblx0Ly9PQlNFUlZBQkxFU1xuXHQvKipcblx0ICogU3ViamVjdCBwYXJhIG1hbmVqYXIgbG9zIGNhbWJpb3MgZW4gbG9zIGRhdG9zIGRlIGxvcyBwYXJhbWV0cm9zXG5cdCAqL1xuXHRwcml2YXRlIHBhcmFtZXRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJhbWV0ZXJbXSB8IG51bGw+KG51bGwpO1xuXHRwcml2YXRlIHBhcmFtZXRlcnMkOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdIHwgbnVsbD4gPSB0aGlzLnBhcmFtZXRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8vTUVUSE9EU1xuXHQvKipcblx0ICogT2J0aWVuZSBsb3MgcGFyw6FtZXRyb3MgZGVsIGJhY2tlbmQuIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHB1YmxpYyBnZXRQYXJhbWV0ZXJzKCk6IE9ic2VydmFibGU8UGFyYW1ldGVyW10gfCBudWxsPiB7XG5cdFx0aWYgKHRoaXMucGFyYW1ldGVyc1N1YmplY3QuZ2V0VmFsdWUoKSA9PT0gbnVsbCkge1xuXHRcdFx0dGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldEFsbFBhcmFtZXRlcnNBUEkoKSkucGlwZShcblx0XHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0XHRcdG1hcCgocmVzcG9uc2U6IFBhcmFtZXRlcltdKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wYXJhbWV0ZXJzU3ViamVjdC5uZXh0KHJlc3BvbnNlKVxuXHRcdFx0XHRcdHRoaXMuaW5pdEFuYWx5dGljc0Zyb21QYXJhbXMocmVzcG9uc2UpO1xuXHRcdFx0XHRcdHJldHVybiByZXNwb25zZVxuXHRcdFx0XHR9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBFcnJvcjogJHtlcnJvcn1gKVxuXHRcdFx0XHRcdHRoaXMucGFyYW1ldGVyc1N1YmplY3QubmV4dChbXSlcblx0XHRcdFx0XHRyZXR1cm4gb2YoW10pXG5cdFx0XHRcdH0pXG5cdFx0XHQpLnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzJFxuXHR9XG5cdC8qKlxuXHQgKiBDb21wcnVlYmEgc2kgZWwgY8OzZGlnbyBkZSB1biBwYXLDoW1ldHJvIGV4aXN0ZSBlbiBsYSBsaXN0YSBkZSBwYXLDoW1ldHJvcy5cblx0ICogQHBhcmFtIHBhcmFtcyBMaXN0YSBkZSBwYXLDoW1ldHJvc1xuXHQgKiBAcGFyYW0gY29kZSBDw7NkaWdvIGRlbCBwYXLDoW1ldHJvIGEgYnVzY2FyXG5cdCAqIEByZXR1cm5zIEVsIG9iamV0byBjb24gbG9zIGRhdG9zIGRlbCBwYXLDoW1ldHJvIGVuY29udHJhZG8sIHNpbm8gcmV0b3JuYSBgbnVsbGBcblx0ICovXG5cdHB1YmxpYyBoYXNQYXJhbXMocGFyYW1zOiBhbnksIGNvZGU6IHN0cmluZyk6IGFueSB7IHJldHVybiBwYXJhbXMgJiYgcGFyYW1zLmZpbmQoKHBhcmFtOiBhbnkpID0+IHBhcmFtLmNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY29kZS50b0xvd2VyQ2FzZSgpKSkgfVxuXG5cdFxuXHRwcml2YXRlIGZpbmRBbmFseXRpY3NQYXJhbShcblx0XHRwYXJhbXM6IFBhcmFtZXRlcltdLFxuXHRcdHNlcnZpY2U6ICdmYWNlYm9vaycgfCAnZ29vZ2xlJyB8ICdndG0nIHwgJ21ldHJpY29vbCcgfCAnZG9wcGxlcidcblx0KTogUGFyYW1ldGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjaGFubmVsID0gdGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTD8udG9Mb3dlckNhc2UoKSA/PyAnJztcblxuXHRcdC8vIEPDs2RpZ28gZXNwZWPDrWZpY28gcG9yIGNhbmFsOiBmYWNlYm9va19ub21icmVjYW5hbF9pZFxuXHRcdGNvbnN0IGNvZGVDaGFubmVsID0gYCR7c2VydmljZX1fJHtjaGFubmVsfV9pZGA7XG5cblx0XHQvLyBDw7NkaWdvIGdlbsOpcmljbzogZmFjZWJvb2tfaWRcblx0XHRjb25zdCBjb2RlR2VuZXJpYyA9IGAke3NlcnZpY2V9X2lkYDtcblxuXHRcdGNvbnN0IG5vcm1hbGl6ZSA9IChjb2RlPzogc3RyaW5nKSA9PiAoY29kZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcblxuXHRcdGxldCBwYXJhbSA9IHBhcmFtcy5maW5kKHAgPT4gbm9ybWFsaXplKHAuY29kZSkgPT09IGNvZGVDaGFubmVsKTtcblxuXHRcdGlmICghcGFyYW0pIHtcblx0XHRcdHBhcmFtID0gcGFyYW1zLmZpbmQocCA9PiBub3JtYWxpemUocC5jb2RlKSA9PT0gY29kZUdlbmVyaWMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBwYXJhbTtcblx0fVxuXG5cdHByaXZhdGUgaW5pdEFuYWx5dGljc0Zyb21QYXJhbXMocGFyYW1zOiBQYXJhbWV0ZXJbXSB8IG51bGwpIHtcblx0XHRpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLmxlbmd0aCkgcmV0dXJuO1xuXG5cdFx0aWYgKCF0aGlzLmFwaUNvbnN0YW50cy5JU19QUk9EVUNUSU9OKSByZXR1cm47XG5cblx0XHRjb25zdCBmYWNlYm9vayA9IHRoaXMuZmluZEFuYWx5dGljc1BhcmFtKHBhcmFtcywgJ2ZhY2Vib29rJyk7XG5cdFx0Y29uc3QgZ29vZ2xlID0gdGhpcy5maW5kQW5hbHl0aWNzUGFyYW0ocGFyYW1zLCAnZ29vZ2xlJyk7XG5cdFx0Y29uc3QgZ3RtID0gdGhpcy5maW5kQW5hbHl0aWNzUGFyYW0ocGFyYW1zLCAnZ3RtJyk7XG5cdFx0Y29uc3QgbWV0cmljb29sID0gdGhpcy5maW5kQW5hbHl0aWNzUGFyYW0ocGFyYW1zLCAnbWV0cmljb29sJyk7XG5cdFx0Y29uc3QgZG9wcGxlciA9IHRoaXMuZmluZEFuYWx5dGljc1BhcmFtKHBhcmFtcywgJ2RvcHBsZXInKTtcblxuXHRcdGlmIChmYWNlYm9vaykgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmluaXRpYWxpemVGYWNlYm9vayhmYWNlYm9vay52YWx1ZSk7XG5cdFx0aWYgKGdvb2dsZSkgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmluaXRpYWxpemVHb29nbGUoZ29vZ2xlLnZhbHVlKTtcblx0XHRpZiAoZ3RtKSB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaW5pdGlhbGl6ZUdUTShndG0udmFsdWUpO1xuXHRcdGlmIChtZXRyaWNvb2wpIHRoaXMuYW5hbHl0aWNzU2VydmljZS5pbml0aWFsaXplTWV0cmljb29sKG1ldHJpY29vbC52YWx1ZSk7XG5cdFx0aWYgKGRvcHBsZXIpIHRoaXMuYW5hbHl0aWNzU2VydmljZS5pbml0aWFsaXplRG9wcGxlcihkb3BwbGVyLnZhbHVlKTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKCkgeyB9XG5cbn1cbiJdfQ==
@@ -53,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
53
53
  providedIn: 'root'
54
54
  }]
55
55
  }], ctorParameters: () => [] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BheW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBS3JELE1BQU0sT0FBTyxjQUFjO0lBRWxCLGtCQUFrQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxhQUFhLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuRCxVQUFVLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzlELFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELGlCQUFpQixHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvRCxnQkFBZ0IsR0FBb0IsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRTVELHFCQUFxQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsR0FBRyxJQUFJ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QUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFakUsZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7d0dBcEQxRCxjQUFjOzRHQUFkLGNBQWMsY0FGZCxNQUFNOzs0RkFFTixjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tLCBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcyc7XHJcbmltcG9ydCB7IENoZWNrb3V0U2VydmljZSB9IGZyb20gJy4vY2hlY2tvdXQuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50U2VydmljZSB7XHJcblxyXG5cdHByaXZhdGUgX2Nvbm5lY3Rpb25TZXJ2aWNlOiBDb25uZWN0aW9uU2VydmljZSA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9hcGlDb25zdHM6IEFwaUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9hbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlID0gaW5qZWN0KENoZWNrb3V0U2VydmljZSk7XHJcblxyXG5cdHByaXZhdGUgcGF5bWVudE1ldGhvZHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xyXG5cdHB1YmxpYyBtZXRob2RzJCA9IHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHQvL0FQSSBVUkxcclxuXHRiYXNlQXBpKCkgeyByZXR1cm4gJ3Nob3AtYXBpLycgKyB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCArICcvJyArICdjaGVja291dC8nICsgdGhpcy5fY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7IH1cclxuXHRnZXRQYXltZW50TWV0aG9kc0FwaSgpIHsgcmV0dXJuIHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50JzsgfVxyXG5cdHB1dFBheW1lbnRBcGkobWV0aG9kOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50LycgKyBtZXRob2Q7IH1cclxuXHRnZXRQcmVmZXJlbmNlQXBpICgpeyByZXR1cm4gJ3Nob3AtYXBpLycgKyB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCArICcvbWVyY2Fkby1wYWdvLycgKyB0aGlzLl9jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJlZmVyZW5jZSc7IH1cclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHR0aGlzLmdldFBheW1lbnRNZXRob2RzKCk7XHJcblx0fVxyXG5cclxuXHRnZXRQYXltZW50TWV0aG9kcygpIHtcclxuXHRcdHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uU2VydmljZS5nZXQodGhpcy5nZXRQYXltZW50TWV0aG9kc0FwaSgpKSkudGhlbihcclxuXHRcdFx0cmVzID0+IHJlcy5wYXltZW50cz8ubGVuZ3RoICYmIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQoT2JqZWN0LmtleXMocmVzLnBheW1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzLnBheW1lbnRzWzBdLm1ldGhvZHNba2V5XSkpLFxyXG5cdFx0XHRlcnIgPT4gdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHV0UGF5bWVudChtZXRob2Q6IGFueSkge1xyXG5cdFx0cmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2Nvbm5lY3Rpb25TZXJ2aWNlXHJcblx0XHRcdC5wdXQodGhpcy5wdXRQYXltZW50QXBpKG1ldGhvZCksIHsgbWV0aG9kIH0pKS50aGVuKFxyXG5cdFx0XHRcdHJlcyA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnYWRkX3BheW1lbnRfaW5mbycsIHJlcyk7XHJcblx0XHRcdFx0XHRyZXR1cm4gcmVzXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnIgPT4ge1xyXG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyLmVycm9yKSkpXHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpXHJcblx0fVxyXG5cclxuXHRnZXRQcmVmZXJlbmNlKHNoaXBtZW50X2RhdGE6YW55KXtcclxuXHRcdHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uU2VydmljZS5wb3N0KHRoaXMuZ2V0UHJlZmVyZW5jZUFwaSgpLCBzaGlwbWVudF9kYXRhKS5waXBlKG1hcChyZXMgPT4gKHJlcy5wcmVmZXJlbmNlIHx8IHJlcykpKSk7XHJcblx0fVxyXG5cclxuXHRzZXRQYXltZW50KGRhdGE6YW55KSB7XHJcblx0XHRyZXR1cm4gIHRoaXMuX2NoZWNrb3V0U2VydmljZS5zZXRTdGVwRGF0YSgncGF5bWVudCcsZGF0YSk7XHJcblx0fVxyXG5cclxuXHRnZXRVc2VyRGF0YSA9ICgpID0+IHRoaXMuX2NoZWNrb3V0U2VydmljZS5nZXRTdGVwRGF0YSgnYWRkcmVzcycpO1xyXG5cclxuXHRnZXRTaGlwbWVudERhdGEgPSAoKSA9PiB0aGlzLl9jaGVja291dFNlcnZpY2UuZ2V0U3RlcERhdGEoJ3NoaXBtZW50Jyk7XHJcblxyXG59XHJcbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BheW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBS3JELE1BQU0sT0FBTyxjQUFjO0lBRWxCLGtCQUFrQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxhQUFhLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuRCxVQUFVLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzlELFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELGlCQUFpQixHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvRCxnQkFBZ0IsR0FBb0IsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRTVELHFCQUFxQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsR0FBRyxJQUFJ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QUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFakUsZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7d0dBcEQxRCxjQUFjOzRHQUFkLGNBQWMsY0FGZCxNQUFNOzs0RkFFTixjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQYXltZW50U2VydmljZSB7XG5cblx0cHJpdmF0ZSBfY29ubmVjdGlvblNlcnZpY2U6IENvbm5lY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKTtcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcblx0cHJpdmF0ZSBfYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuXHRwcml2YXRlIF9jYXJ0U2VydmljZTogQ2FydFNlcnZpY2UgPSBpbmplY3QoQ2FydFNlcnZpY2UpO1xuXHRwcml2YXRlIF9hbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpO1xuXHRwcml2YXRlIF9jaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSA9IGluamVjdChDaGVja291dFNlcnZpY2UpO1xuXG5cdHByaXZhdGUgcGF5bWVudE1ldGhvZHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuXHRwdWJsaWMgbWV0aG9kcyQgPSB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHQvL0FQSSBVUkxcblx0YmFzZUFwaSgpIHsgcmV0dXJuICdzaG9wLWFwaS8nICsgdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwgKyAnLycgKyAnY2hlY2tvdXQvJyArIHRoaXMuX2NhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpOyB9XG5cdGdldFBheW1lbnRNZXRob2RzQXBpKCkgeyByZXR1cm4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQnOyB9XG5cdHB1dFBheW1lbnRBcGkobWV0aG9kOiBzdHJpbmcpIHsgcmV0dXJuIHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50LycgKyBtZXRob2Q7IH1cblx0Z2V0UHJlZmVyZW5jZUFwaSAoKXsgcmV0dXJuICdzaG9wLWFwaS8nICsgdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwgKyAnL21lcmNhZG8tcGFnby8nICsgdGhpcy5fY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3ByZWZlcmVuY2UnOyB9XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5nZXRQYXltZW50TWV0aG9kcygpO1xuXHR9XG5cblx0Z2V0UGF5bWVudE1ldGhvZHMoKSB7XG5cdFx0cmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2Nvbm5lY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmdldFBheW1lbnRNZXRob2RzQXBpKCkpKS50aGVuKFxuXHRcdFx0cmVzID0+IHJlcy5wYXltZW50cz8ubGVuZ3RoICYmIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQoT2JqZWN0LmtleXMocmVzLnBheW1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzLnBheW1lbnRzWzBdLm1ldGhvZHNba2V5XSkpLFxuXHRcdFx0ZXJyID0+IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvcGVyYXRpb24tZXJyb3InKVxuXHRcdCk7XG5cdH1cblxuXHRwdXRQYXltZW50KG1ldGhvZDogYW55KSB7XG5cdFx0cmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuX2Nvbm5lY3Rpb25TZXJ2aWNlXG5cdFx0XHQucHV0KHRoaXMucHV0UGF5bWVudEFwaShtZXRob2QpLCB7IG1ldGhvZCB9KSkudGhlbihcblx0XHRcdFx0cmVzID0+IHtcblx0XHRcdFx0XHR0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnYWRkX3BheW1lbnRfaW5mbycsIHJlcyk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlcnIgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZWplY3QobmV3IEVycm9yKGVyci5lcnJvcikpKVxuXHRcdFx0XHR9XG5cdFx0XHQpLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpXG5cdH1cblxuXHRnZXRQcmVmZXJlbmNlKHNoaXBtZW50X2RhdGE6YW55KXtcblx0XHRyZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5fY29ubmVjdGlvblNlcnZpY2UucG9zdCh0aGlzLmdldFByZWZlcmVuY2VBcGkoKSwgc2hpcG1lbnRfZGF0YSkucGlwZShtYXAocmVzID0+IChyZXMucHJlZmVyZW5jZSB8fCByZXMpKSkpO1xuXHR9XG5cblx0c2V0UGF5bWVudChkYXRhOmFueSkge1xuXHRcdHJldHVybiAgdGhpcy5fY2hlY2tvdXRTZXJ2aWNlLnNldFN0ZXBEYXRhKCdwYXltZW50JyxkYXRhKTtcblx0fVxuXG5cdGdldFVzZXJEYXRhID0gKCkgPT4gdGhpcy5fY2hlY2tvdXRTZXJ2aWNlLmdldFN0ZXBEYXRhKCdhZGRyZXNzJyk7XG5cblx0Z2V0U2hpcG1lbnREYXRhID0gKCkgPT4gdGhpcy5fY2hlY2tvdXRTZXJ2aWNlLmdldFN0ZXBEYXRhKCdzaGlwbWVudCcpO1xuXG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { computed, inject, Injectable } from '@angular/core';
2
+ import { toObservable, toSignal } from '@angular/core/rxjs-interop';
3
+ import { AuthService } from './auth.service';
4
+ import { CartService } from './cart.service';
5
+ import { ChannelService } from './channel.service';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Gestiona la visibilidad global de precios según:
9
+ * - configuración del canal (hidePrices, showPricesOnlyToLoggedUsers)
10
+ * - estado de autenticación
11
+ * - restricciones por cuenta corriente (showPrice desde balance)
12
+ *
13
+ * Nota: este servicio no contempla reglas por producto (shouldShowPrice, etc.).
14
+ */
15
+ export class PriceVisibilityService {
16
+ channelService = inject(ChannelService);
17
+ authService = inject(AuthService);
18
+ cartService = inject(CartService);
19
+ channelConfig = toSignal(this.channelService.channel$, { initialValue: null });
20
+ loggedIn = toSignal(this.authService.loggedIn$, { initialValue: this.authService.isAuthenticated() });
21
+ creditAccountShowPrices = toSignal(this.cartService.showPrice$, { initialValue: null });
22
+ hidePrices = computed(() => !!this.channelConfig()?.hidePrices);
23
+ showPricesOnlyToLoggedUsers = computed(() => !!this.channelConfig()?.showPricesOnlyToLoggedUsers);
24
+ canShowPrices = computed(() => {
25
+ const hide = this.hidePrices();
26
+ const onlyLogged = this.showPricesOnlyToLoggedUsers();
27
+ const logged = this.loggedIn();
28
+ const creditAllowed = this.creditAccountShowPrices();
29
+ const creditPass = creditAllowed === null ? true : !!creditAllowed;
30
+ return !hide && (!onlyLogged || logged) && creditPass;
31
+ });
32
+ canShowPrices$ = toObservable(this.canShowPrices);
33
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceVisibilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
34
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceVisibilityService, providedIn: 'root' });
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceVisibilityService, decorators: [{
37
+ type: Injectable,
38
+ args: [{ providedIn: 'root' }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtdmlzaWJpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3ByaWNlLXZpc2liaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFbkQ7Ozs7Ozs7R0FPRztBQUVILE1BQU0sT0FBTyxzQkFBc0I7SUFDakIsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbEMsYUFBYSxHQUFHLFFBQVEsQ0FBYSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEcsdUJBQXVCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFaEcsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLDJCQUEyQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFFbEcsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFVBQVUsR0FBRyxhQUFhLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFbkUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQztJQUN2RCxDQUFDLENBQUMsQ0FBQztJQUVNLGNBQWMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dHQXRCL0Msc0JBQXNCOzRHQUF0QixzQkFBc0IsY0FEVCxNQUFNOzs0RkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuL2NoYW5uZWwuc2VydmljZSc7XG5cbi8qKlxuICogR2VzdGlvbmEgbGEgdmlzaWJpbGlkYWQgZ2xvYmFsIGRlIHByZWNpb3Mgc2Vnw7puOlxuICogLSBjb25maWd1cmFjacOzbiBkZWwgY2FuYWwgKGhpZGVQcmljZXMsIHNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycylcbiAqIC0gZXN0YWRvIGRlIGF1dGVudGljYWNpw7NuXG4gKiAtIHJlc3RyaWNjaW9uZXMgcG9yIGN1ZW50YSBjb3JyaWVudGUgKHNob3dQcmljZSBkZXNkZSBiYWxhbmNlKVxuICpcbiAqIE5vdGE6IGVzdGUgc2VydmljaW8gbm8gY29udGVtcGxhIHJlZ2xhcyBwb3IgcHJvZHVjdG8gKHNob3VsZFNob3dQcmljZSwgZXRjLikuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUHJpY2VWaXNpYmlsaXR5U2VydmljZSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgY2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpO1xuXHRwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcblx0cHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBjaGFubmVsQ29uZmlnID0gdG9TaWduYWw8YW55IHwgbnVsbD4odGhpcy5jaGFubmVsU2VydmljZS5jaGFubmVsJCwgeyBpbml0aWFsVmFsdWU6IG51bGwgfSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VkSW4gPSB0b1NpZ25hbCh0aGlzLmF1dGhTZXJ2aWNlLmxvZ2dlZEluJCwgeyBpbml0aWFsVmFsdWU6IHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkgfSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgY3JlZGl0QWNjb3VudFNob3dQcmljZXMgPSB0b1NpZ25hbCh0aGlzLmNhcnRTZXJ2aWNlLnNob3dQcmljZSQsIHsgaW5pdGlhbFZhbHVlOiBudWxsIH0pO1xuXG5cdHJlYWRvbmx5IGhpZGVQcmljZXMgPSBjb21wdXRlZCgoKSA9PiAhIXRoaXMuY2hhbm5lbENvbmZpZygpPy5oaWRlUHJpY2VzKTtcblx0cmVhZG9ubHkgc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLmNoYW5uZWxDb25maWcoKT8uc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzKTtcblxuXHRyZWFkb25seSBjYW5TaG93UHJpY2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGhpZGUgPSB0aGlzLmhpZGVQcmljZXMoKTtcblx0XHRjb25zdCBvbmx5TG9nZ2VkID0gdGhpcy5zaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnMoKTtcblx0XHRjb25zdCBsb2dnZWQgPSB0aGlzLmxvZ2dlZEluKCk7XG5cdFx0Y29uc3QgY3JlZGl0QWxsb3dlZCA9IHRoaXMuY3JlZGl0QWNjb3VudFNob3dQcmljZXMoKTtcblx0XHRjb25zdCBjcmVkaXRQYXNzID0gY3JlZGl0QWxsb3dlZCA9PT0gbnVsbCA/IHRydWUgOiAhIWNyZWRpdEFsbG93ZWQ7XG5cblx0XHRyZXR1cm4gIWhpZGUgJiYgKCFvbmx5TG9nZ2VkIHx8IGxvZ2dlZCkgJiYgY3JlZGl0UGFzcztcblx0fSk7XG5cblx0cmVhZG9ubHkgY2FuU2hvd1ByaWNlcyQgPSB0b09ic2VydmFibGUodGhpcy5jYW5TaG93UHJpY2VzKTtcbn1cblxuIl19
@@ -15,7 +15,16 @@ export class ProductDetailService {
15
15
  options$ = this._optionsSubject.asObservable();
16
16
  associatedData$ = this._associatedDataSubject.asObservable();
17
17
  variants = [];
18
- constructor() { }
18
+ _currentTotalAmount = null;
19
+ _balanceCustomer = null;
20
+ constructor() {
21
+ this._cartService.getTotalAmount().subscribe(total => {
22
+ this._currentTotalAmount = total ?? null;
23
+ });
24
+ this._cartService.balanceCustomer$.subscribe(balanceCustomer => {
25
+ this._balanceCustomer = balanceCustomer;
26
+ });
27
+ }
19
28
  /**
20
29
  * Obtengo el producto a traves de su codigo e inicializo la configuración
21
30
  * del Servicio.
@@ -265,7 +274,12 @@ export class ProductDetailService {
265
274
  }
266
275
  if (!variant)
267
276
  return;
268
- if (!this.validateQuantity(quantity))
277
+ if (!this.validateQuantity(quantity, variant.code))
278
+ return;
279
+ const priceToValidate = productSelected.saleprice
280
+ ? productSelected.saleprice * quantity
281
+ : productSelected.price * quantity;
282
+ if (!this.validatePriceAndCredits(priceToValidate))
269
283
  return;
270
284
  //agregar al servicio del carrito
271
285
  this._cartService.addToCart(this.makeAffordableProduct(productSelected), quantity, variant.code);
@@ -289,14 +303,22 @@ export class ProductDetailService {
289
303
  * @param quantity
290
304
  * @returns
291
305
  */
292
- validateQuantity = (quantity) => {
293
- const actualQuantity = this._cartService.getCountFromItemInCart(this.variants[0].code);
306
+ validateQuantity = (quantity, variantCode) => {
307
+ const codeToCheck = variantCode || this.variants[0].code;
308
+ const actualQuantity = this._cartService.getCountFromItemInCart(codeToCheck);
294
309
  const asociatedData = this._associatedDataSubject.value;
295
- if ((actualQuantity + quantity) > asociatedData.maximumItemsQuantity) {
310
+ const variant = this.variants.find(v => v.code === codeToCheck);
311
+ const stock = variant?.stock ?? 0;
312
+ const totalQuantity = actualQuantity + quantity;
313
+ if (totalQuantity > stock) {
314
+ this._toastService.show('out-of-stock-actually');
315
+ return false;
316
+ }
317
+ if ((totalQuantity) > asociatedData.maximumItemsQuantity) {
296
318
  this._toastService.show('maximum-items-quantity', { quantity: asociatedData.maximumItemsQuantity });
297
319
  return false;
298
320
  }
299
- if ((actualQuantity + quantity) < asociatedData.minimumItemsQuantity) {
321
+ if ((totalQuantity) < asociatedData.minimumItemsQuantity) {
300
322
  this._toastService.show('minimum-items-quantity', { quantity: asociatedData.minimumItemsQuantity });
301
323
  return false;
302
324
  }
@@ -311,6 +333,22 @@ export class ProductDetailService {
311
333
  }
312
334
  return true;
313
335
  };
336
+ validatePriceAndCredits = (price) => {
337
+ if (this._balanceCustomer === null) {
338
+ return true;
339
+ }
340
+ if (this._balanceCustomer.allowAnyPaymentMethod) {
341
+ return true;
342
+ }
343
+ if (this._balanceCustomer.remainingCredits === undefined) {
344
+ return false;
345
+ }
346
+ if (price > this._balanceCustomer.remainingCredits) {
347
+ this._toastService.show('not-enough-credits');
348
+ return false;
349
+ }
350
+ return true;
351
+ };
314
352
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductDetailService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
315
353
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductDetailService, providedIn: 'root' });
316
354
  }
@@ -320,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
320
358
  providedIn: 'root'
321
359
  }]
322
360
  }], ctorParameters: () => [] });
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUs3QyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFaEQsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztJQUMxRCxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7SUFDL0Msc0JBQXNCLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFekYsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsZUFBZSxHQUFHLElBQUksQ0FB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LFFBQVEsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUE7WUFDbkcsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN0RSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFBO1lBQ25HLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksYUFBYSxDQUFDLGdCQUFnQixJQUFJLGFBQWEsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDeEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUU7b0JBQ3JELFFBQVEsRUFBRSxhQUFhLENBQUMsZ0JBQWdCO29CQUN4QyxPQUFPLEVBQUUsY0FBYyxHQUFHLFFBQVE7aUJBQ2xDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEtBQUssQ0FBQztZQUNkLENBQUM7UUFDRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDWixDQUFDLENBQUE7d0dBOVRXLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRnBCLE1BQU07OzRGQUVOLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnLi9wcm9kdWN0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBPcHRpb25zLCBPcHRpb25WYWx1ZSwgUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4vY2FydC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3REZXRhaWxTZXJ2aWNlIHtcclxuXHRwcml2YXRlIF9wcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSA9IGluamVjdChQcm9kdWN0c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKTtcclxuXHJcblx0cHJpdmF0ZSBfcHJvZHVjdFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3QgfCBudWxsPih7fSk7XHJcblx0cHJpdmF0ZSBfb3B0aW9uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pO1xyXG5cdHByaXZhdGUgX2Fzc29jaWF0ZWREYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7IHByaWNlOiAnJywgc3RvY2s6IDAsIHBpY3R1cmU6ICcnIH0pO1xyXG5cclxuXHRwdWJsaWMgcHJvZHVjdCQgPSB0aGlzLl9wcm9kdWN0U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRwdWJsaWMgb3B0aW9ucyQgPSB0aGlzLl9vcHRpb25zU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRwdWJsaWMgYXNzb2NpYXRlZERhdGEkID0gdGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRwcml2YXRlIHZhcmlhbnRzOiBhbnlbXSA9IFtdXHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblx0LyoqXHJcblx0ICogT2J0ZW5nbyBlbCBwcm9kdWN0byBhIHRyYXZlcyBkZSBzdSBjb2RpZ28gZSBpbmljaWFsaXpvIGxhIGNvbmZpZ3VyYWNpw7NuXHJcblx0ICogZGVsIFNlcnZpY2lvLlxyXG5cdCAqIEBwYXJhbSBjb2RlIFxyXG5cdCAqIEBwYXJhbSB2YXJpYW50IFxyXG5cdCAqL1xyXG5cdGxvYWRQcm9kdWN0KGNvZGU6IHN0cmluZywgdmFyaWFudDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcblx0XHRmaXJzdFZhbHVlRnJvbSh0aGlzLl9wcm9kdWN0c1NlcnZpY2UuZ2V0UHJvZHVjdEJ5Q29kZShjb2RlLCB2YXJpYW50KSlcclxuXHRcdFx0LnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHR2YXJpYW50ID8gdGhpcy5pbml0aWFsaXplKHJlcywgY29kZSkgOiB0aGlzLmluaXRpYWxpemUocmVzKVxyXG5cdFx0XHR9KVxyXG5cdFx0XHQuY2F0Y2goZXJyID0+IHsgY29uc29sZS5sb2coZXJyKTsgdGhpcy5fcHJvZHVjdFN1YmplY3QubmV4dChudWxsKSB9KTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ2FyZ2EgZWwgcHJvZHVjdG8gZW4gZWwgb2JzZXJ2YWJsZSB5IGxhIGNvbmZpZ3VyYWNpw7NuIGRlIGxhcyB2YXJpYW50ZXMuXHJcblx0ICogQHBhcmFtIHByb2R1Y3QgXHJcblx0ICogQHBhcmFtIHZhcmlhbnRDb2RlIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgaW5pdGlhbGl6ZShwcm9kdWN0OiBQcm9kdWN0LCB2YXJpYW50Q29kZT86IHN0cmluZykge1xyXG5cdFx0dGhpcy5fcHJvZHVjdFN1YmplY3QubmV4dChwcm9kdWN0KTtcclxuXHRcdGNvbnN0IGF1eDogUHJvZHVjdFsnb3B0aW9ucyddID0gcHJvZHVjdC5vcHRpb25zIHx8IFtdO1xyXG5cdFx0Y29uc3Qgb3B0aW9ucyA9IGF1eD8ubWFwKG9wdGlvbiA9PiB0aGlzLnRvT3B0aW9uKG9wdGlvbikpXHJcblx0XHR0aGlzLl9vcHRpb25zU3ViamVjdC5uZXh0KG9wdGlvbnMpO1xyXG5cdFx0dmFyaWFudENvZGUgPyB0aGlzLnVwZGF0ZVZhcmlhbnRzKHZhcmlhbnRDb2RlKSA6IHRoaXMudXBkYXRlVmFyaWFudHMoKTtcclxuXHRcdHRoaXMudmFyaWFudHMubGVuZ3RoICYmIHRoaXMuZ2VuZXJhdGVBc3NvY2lhdGVkRGF0YUZyb21WYXJpYW50cygpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBGb3JtYXRlIGxvcyBkYXRvcyBwYXJhIGxhcyBvcGNpb25lcyBkZWwgcHJvZHVjdG8uXHJcblx0ICogQHBhcmFtIG9wdGlvbiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIHRvT3B0aW9uKG9wdGlvbjogT3B0aW9ucykge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0bmFtZTogb3B0aW9uLmxhYmVsLFxyXG5cdFx0XHRjb2RlOiBvcHRpb24uY29kZSxcclxuXHRcdFx0dHlwZTogb3B0aW9uLnR5cGUsXHJcblx0XHRcdHZhbHVlczogb3B0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBhbnkpID0+ICh7IG5hbWU6IHZhbHVlLmNvZGUsIGRlc2NyaXB0aW9uOiB2YWx1ZS5uYW1lLCBpbWFnZTogdmFsdWUuaW1hZ2UsIG1vYmlsZUltYWdlOiB2YWx1ZS5tb2JpbGVJbWFnZSwgc2VsZWN0ZWQ6IGZhbHNlIH0pKVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FtYmlhIGxhcyBvcGNpb25lcywgb2J0aWVuZSBlbCBwcm9kdWN0byBhc29jaWFkbyBhIGxhIG9wY2lvbiBlbGVnaWRhLlxyXG5cdCAqL1xyXG5cdHNldE9wdGlvbihvcHRpb25Db2RlOiBhbnksIG9wdGlvblZhbHVlOiBhbnkpIHtcclxuXHRcdGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9vcHRpb25zU3ViamVjdC52YWx1ZTtcclxuXHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LmNvZGUgPT0gb3B0aW9uQ29kZSkudmFsdWVzLmZpbmQoKHZhbHVlOiBhbnkpID0+IHZhbHVlLm5hbWUgPT0gb3B0aW9uVmFsdWUpO1xyXG5cdFx0b3B0aW9uLnNlbGVjdGVkID0gIW9wdGlvbi5zZWxlY3RlZDtcclxuXHRcdG9wdGlvbnMuZmluZCgoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LmNvZGUgPT0gb3B0aW9uQ29kZSkudmFsdWVzLmZvckVhY2goXHJcblx0XHRcdCh2YWx1ZTogYW55KSA9PiB7IGlmICh2YWx1ZS5uYW1lICE9IG9wdGlvbi5uYW1lKSB2YWx1ZS5zZWxlY3RlZCA9IGZhbHNlIH1cclxuXHRcdCk7XHJcblx0XHR0aGlzLl9vcHRpb25zU3ViamVjdC5uZXh0KG9wdGlvbnMpO1xyXG5cdFx0dGhpcy51cGRhdGVWYXJpYW50cygpO1xyXG5cdFx0dGhpcy52YXJpYW50cy5sZW5ndGggPiAwID8gdGhpcy5nZW5lcmF0ZUFzc29jaWF0ZWREYXRhRnJvbVZhcmlhbnRzKCkgOiB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnc2VsZWN0aW9uLW5vdC1hdmFpbGFibGUnKVxyXG5cdH1cclxuXHQvKipcclxuICogQWN0dWFsaXphIGVsIG9ic2VydmFibGUgZGUgYGFzc29jaWF0ZWREYXRhYCBlbCBjdWFsIHNlIHV0aWxpemEgcGFyYSBtb3N0cmFyIGxvcyBkYXRvc1xyXG4gKiBlbiBlbCBmcm9udGVuZCBzZWfDum4gZWwgcHJvZHVjdG8geS9vIHZhcmlhbnRlIGVsZWdpZGEuXHJcbiAqIE9idGllbmUgbG9zIGRhdG9zIGRlIGxhIHZhcmlhbnRlIHkgbG9zIGZvcm1hdGVhLlxyXG4gKi9cclxuXHRnZW5lcmF0ZUFzc29jaWF0ZWREYXRhRnJvbVZhcmlhbnRzKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgYXNzb2NpYXRlZDogYW55ID0ge307XHJcblxyXG5cdFx0Ly8gU2kgc8OzbG8gaGF5IHVuYSB2YXJpYW50ZSwgdG9tYW1vcyB0b2RvcyBzdXMgZGF0b3MgZGlyZWN0YW1lbnRlXHJcblx0XHRpZiAodGhpcy52YXJpYW50cy5sZW5ndGggPT09IDEpIHtcclxuXHRcdFx0Y29uc3QgdiA9IHRoaXMudmFyaWFudHNbMF07XHJcblxyXG5cdFx0XHRhc3NvY2lhdGVkLnN0b2NrID0gdi5zdG9jaztcclxuXHRcdFx0Ly8gUHJlY2lvOiBzaSB2aWVuZSB0YXhMZWdlbmRJbmZvIHVzYW1vcyBzdSBwcmljZSwgc2kgbm8gZWwgdi5wcmljZVxyXG5cdFx0XHRjb25zdCByYXdQcmljZSA9IHYudGF4TGVnZW5kSW5mbz8ucHJpY2UgPz8gdi5wcmljZTtcclxuXHRcdFx0YXNzb2NpYXRlZC5wcmljZSA9IHJhd1ByaWNlLnRvU3RyaW5nKCk7XHJcblx0XHRcdGNvbnN0IHJhd1NhbGVQcmljZSA9IHYudGF4TGVnZW5kSW5mbz8uc2FsZXByaWNlID8/IHYuc2FsZXByaWNlO1xyXG5cdFx0XHRhc3NvY2lhdGVkLnNhbGVwcmljZSA9IHJhd1NhbGVQcmljZSA/IHJhd1NhbGVQcmljZS50b1N0cmluZygpIDogdW5kZWZpbmVkO1xyXG5cdFx0XHRhc3NvY2lhdGVkLmRpc2NvdW50ID0gdi5kaXNjb3VudCA/PyB1bmRlZmluZWQ7XHJcblx0XHRcdGFzc29jaWF0ZWQucHJvcGVydGllcyA9IHYucHJvcGVydGllcyA/IHRoaXMuYmVhdXRpZnlQcm9wZXJ0aWVzKHYucHJvcGVydGllcykgOiB1bmRlZmluZWQ7XHJcblx0XHRcdGFzc29jaWF0ZWQudW5pcXVlRXh0ZXJuYWxDb2RlID0gdi51bmlxdWVFeHRlcm5hbENvZGUgPz8gdW5kZWZpbmVkO1xyXG5cdFx0XHRhc3NvY2lhdGVkLm11bHRpcGxlUXVhbnRpdHkgPSB2Lm11bHRpcGxlUXVhbnRpdHkgPz8gdW5kZWZpbmVkO1xyXG5cclxuXHRcdFx0Ly8gTMOtbWl0ZXMgZGUgY2FudGlkYWQvc3RvY2tcclxuXHRcdFx0YXNzb2NpYXRlZC5tYXhpbXVtQW1vdW50ID0gdi5tYXhpbXVtQW1vdW50ID8/IDA7XHJcblx0XHRcdGFzc29jaWF0ZWQubWluaW11bUFtb3VudCA9IHYubWluaW11bUFtb3VudCA/PyAwO1xyXG5cdFx0XHRhc3NvY2lhdGVkLm1heGltdW1JdGVtc1F1YW50aXR5ID0gdi5zdG9jayA+IDAgJiYgJ21heGltdW1JdGVtc1F1YW50aXR5JyBpbiB2XHJcblx0XHRcdFx0PyB2Lm1heGltdW1JdGVtc1F1YW50aXR5XHJcblx0XHRcdFx0OiB2LnN0b2NrO1xyXG5cdFx0XHRhc3NvY2lhdGVkLm1pbmltdW1JdGVtc1F1YW50aXR5ID0gdi5zdG9jayA+IDAgJiYgJ21pbmltdW1JdGVtc1F1YW50aXR5JyBpbiB2ICYmIHYubWluaW11bUl0ZW1zUXVhbnRpdHkhID4gMFxyXG5cdFx0XHRcdD8gdi5taW5pbXVtSXRlbXNRdWFudGl0eVxyXG5cdFx0XHRcdDogKHYubXVsdGlwbGVRdWFudGl0eSA/PyAxKTtcclxuXHRcdFx0YXNzb2NpYXRlZC5tdWx0aXBsZVF1YW50aXR5ID0gdi5tdWx0aXBsZVF1YW50aXR5ID8/IDE7XHJcblxyXG5cdFx0XHQvLyBQcmVjaW9zIGFsIGNvbnN1bWlkb3IgZmluYWxcclxuXHRcdFx0YXNzb2NpYXRlZC5maW5hbENvbnN1bWVyID0ge1xyXG5cdFx0XHRcdGZpbmFsQ29uc3VtZXJQcmljZTogdi5maW5hbF9jb25zdW1lcl9wcmljZSxcclxuXHRcdFx0XHRvcmlnaW5hbEZpbmFsQ29uc3VtZXJQcmljZTogdi5vcmlnaW5hbF9maW5hbF9jb25zdW1lcl9wcmljZVxyXG5cdFx0XHR9O1xyXG5cclxuXHRcdFx0Ly8gSW1wdWVzdG9zXHJcblx0XHRcdGFzc29jaWF0ZWQudGF4ZXMgPSB7XHJcblx0XHRcdFx0dGF4SW5jbHVkZWQ6IHYudGF4SW5jbHVkZWQsXHJcblx0XHRcdFx0dGF4Q2F0ZWdvcnk6IHYudGF4Q2F0ZWdvcnlcclxuXHRcdFx0fTtcclxuXHRcdFx0Ly8gU2VndW4gdmVyc2lvbiBkZWwgYmFja2VuZFxyXG5cdFx0XHRpZiAodi50YXhMZWdlbmRJbmZvKSB7XHJcblx0XHRcdFx0Ly8gTnVldm8gYmFja2VuZFxyXG5cdFx0XHRcdGFzc29jaWF0ZWQucHJpY2VXaXRob3V0VGF4ZXMgPSB2LnRheExlZ2VuZEluZm8ucHJpY2VXaXRob3V0VGF4ZXM7XHJcblx0XHRcdFx0YXNzb2NpYXRlZC50YXhlQW1vdW50ID0gdi50YXhMZWdlbmRJbmZvLnRheGVzO1xyXG5cdFx0XHRcdGFzc29jaWF0ZWQudGF4UmF0ZSA9IHYudGF4TGVnZW5kSW5mby50YXhSYXRlO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8vIEJhY2tlbmQgYW50aWd1b1xyXG5cdFx0XHRcdGFzc29jaWF0ZWQucHJpY2VXaXRob3V0VGF4ZXMgPSB2LnByaWNlV2l0aG91dFRheGVzID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRhc3NvY2lhdGVkLnRheGVBbW91bnQgPSB2LnRheGVzID8/IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRhc3NvY2lhdGVkLnRheFJhdGUgPSB2LnRheFJhdGUgPz8gdW5kZWZpbmVkO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gU2kgaGF5IHZhcmlhcyB2YXJpYW50ZXMsIHJlc3VtaW1vc1xyXG5cdFx0XHRhc3NvY2lhdGVkLnByaWNlID0gdGhpcy5jcmVhdGVQcmljZSgpO1xyXG5cdFx0XHRhc3NvY2lhdGVkLnNhbGVwcmljZSA9IHRoaXMuY3JlYXRlU2FsZVByaWNlKCk7XHJcblx0XHRcdGFzc29jaWF0ZWQuc3RvY2sgPSB0aGlzLnZhcmlhbnRzLm1hcCh2ID0+IHYuc3RvY2spLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xyXG5cdFx0XHRhc3NvY2lhdGVkLmRpc2NvdW50ID0gdGhpcy5jcmVhdGVEaXNjb3VudCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEltYWdlbiBwcmluY2lwYWxcclxuXHRcdGNvbnN0IGZpcnN0ID0gdGhpcy52YXJpYW50c1swXTtcclxuXHRcdGlmICgnaW1hZ2VzJyBpbiBmaXJzdCAmJiBmaXJzdC5pbWFnZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhc3NvY2lhdGVkLnBpY3R1cmUgPSBmaXJzdC5pbWFnZXNbMF07XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRhc3NvY2lhdGVkLnBpY3R1cmUgPSB0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWU/LnBpY3R1cmVcclxuXHRcdFx0XHQ/PyB0aGlzLl9wcm9kdWN0U3ViamVjdC52YWx1ZT8ucGljdHVyZXNkZWZhdWx0Py5bMF07XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRW1pdGltb3MgZWwgb2JqZXRvIGNvbXBsZXRvXHJcblx0XHR0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QubmV4dChhc3NvY2lhdGVkKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTWVqb3JhIGxvcyBkYXRvcyBkZSBsYXMgYHByb3BlcnRpZXNgLlxyXG5cdCAqIEBwYXJhbSBwcm9wZXJ0aWVzIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGJlYXV0aWZ5UHJvcGVydGllcyhwcm9wZXJ0aWVzOiBhbnkpOiBhbnkge1xyXG5cdFx0bGV0IGJlYXV0aWZ5RGF0YTogYW55ID0gW107XHJcblx0XHRwcm9wZXJ0aWVzLmZvckVhY2goKHByb3A6IGFueSkgPT4ge1xyXG5cdFx0XHRmb3IgKGxldCBrZXkgaW4gcHJvcCkge1xyXG5cdFx0XHRcdGJlYXV0aWZ5RGF0YS5wdXNoKHsgbmFtZToga2V5LCB2YWx1ZTogcHJvcFtrZXldIH0pXHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0XHRyZXR1cm4gYmVhdXRpZnlEYXRhXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIHVuIGRlc2N1ZW50byBlbiBjYXNvIGRlIGV4aXN0aXIuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Y3JlYXRlRGlzY291bnQoKTogYW55IHtcclxuXHRcdGxldCBhbGxEaXNjb3VudHM6IHN0cmluZyA9ICcnO1xyXG5cdFx0dGhpcy52YXJpYW50cy5mb3JFYWNoKHZhcmlhbnQgPT4ge1xyXG5cdFx0XHR2YXJpYW50LmRpc2NvdW50ICYmIChhbGxEaXNjb3VudHMgKz0gJywgJyArIHZhcmlhbnQuZGlzY291bnQpO1xyXG5cdFx0fSlcclxuXHRcdGlmIChhbGxEaXNjb3VudHMgPT0gJycpIHJldHVybiB1bmRlZmluZWQ7XHJcblx0XHRyZXR1cm4gYWxsRGlzY291bnRzO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBlbCBwcmVjaW8gZGUgdmVudGEuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Y3JlYXRlU2FsZVByaWNlKCk6IGFueSB7XHJcblx0XHRsZXQgbWluUHJpY2U6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgbWF4UHJpY2U6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgYWxsUHJpY2VzOiBhbnkgPSB0aGlzLnZhcmlhbnRzLm1hcCh2ID0+IHYuc2FsZXByaWNlKS5maWx0ZXIoZSA9PiBlICE9PSB1bmRlZmluZWQpO1xyXG5cdFx0aWYgKGFsbFByaWNlcy5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkXHJcblx0XHR9XHJcblx0XHRtaW5QcmljZSA9IGFsbFByaWNlcy5yZWR1Y2UoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBNYXRoLm1pbihhLCBiKSk7XHJcblx0XHRtYXhQcmljZSA9IGFsbFByaWNlcy5yZWR1Y2UoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBNYXRoLm1heChhLCBiKSk7XHJcblx0XHRyZXR1cm4gbWluUHJpY2UgPT0gbWF4UHJpY2UgPyBtYXhQcmljZS50b1N0cmluZygpIDogbWluUHJpY2UgKyAnIC0gJyArIG1heFByaWNlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBlbCBwcmVjaW8gbyBsb3MgcHJlY2lvcyBlbiBjYXNvIGRlIHRlbmVyIHZhcmlhcyB2YXJpYW50ZXMgY29uIGRpc3RpbnRvcyBwcmVjaW9zLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGNyZWF0ZVByaWNlKCk6IGFueSB7XHJcblx0XHRsZXQgbWluUHJpY2U6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgbWF4UHJpY2U6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgYWxsUHJpY2U6IGFueSA9IHRoaXMudmFyaWFudHMubWFwKHYgPT4gdi5wcmljZSlcclxuXHRcdG1pblByaWNlID0gYWxsUHJpY2UucmVkdWNlKChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gTWF0aC5taW4oYSwgYikpO1xyXG5cdFx0bWF4UHJpY2UgPSBhbGxQcmljZS5yZWR1Y2UoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBNYXRoLm1heChhLCBiKSk7XHJcblx0XHRyZXR1cm4gbWluUHJpY2UgPT0gbWF4UHJpY2UgPyBtYXhQcmljZS50b1N0cmluZygpIDogbWluUHJpY2UgKyAnIC0gJyArIG1heFByaWNlO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgbGFzIHZhcmlhbnRlcy5cclxuXHQgKiBAcGFyYW0gY29kZSBcclxuXHQgKi9cclxuXHR1cGRhdGVWYXJpYW50cyA9IChjb2RlPzogc3RyaW5nKSA9PiB7XHJcblx0XHRsZXQgdmFyaWFudHMgPSB0aGlzLl9wcm9kdWN0U3ViamVjdC52YWx1ZT8udmFyaWFudHNcclxuXHRcdC8vY29uc29sZS5sb2codmFyaWFudHMpXHJcblx0XHRpZiAoIWNvZGUpIHtcclxuXHRcdFx0dGhpcy5fb3B0aW9uc1N1YmplY3QudmFsdWUuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcclxuXHRcdFx0XHRvcHRpb24udmFsdWVzLmZvckVhY2goKHZhbHVlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmICh2YWx1ZS5zZWxlY3RlZCkge1xyXG5cdFx0XHRcdFx0XHR2YXJpYW50cyA9IHZhcmlhbnRzPy5maWx0ZXIodmFyaWFudCA9PiB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhcmlhbnQub3B0aW9ucy5zb21lKCh2YXJpYW50T3B0aW9uOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAob3B0aW9uLmNvZGUgaW4gdmFyaWFudE9wdGlvbiAmJiB2YXJpYW50T3B0aW9uW29wdGlvbi5jb2RlXSA9PSB2YWx1ZS5uYW1lKTtcclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR2YXJpYW50cyA9IHZhcmlhbnRzPy5maWx0ZXIodmFyaWFudCA9PiB2YXJpYW50LmNvZGUgPT0gY29kZSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLnZhcmlhbnRzID0gdmFyaWFudHMgfHwgW107XHJcblx0XHRjb2RlICYmIHRoaXMudXBkYXRlT3B0aW9ucygpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgbGFzIG9wY2lvbmVzXHJcblx0ICovXHJcblx0cHJpdmF0ZSB1cGRhdGVPcHRpb25zID0gKCkgPT4ge1xyXG5cdFx0bGV0IHsgb3B0aW9ucyB9ID0gdGhpcy52YXJpYW50cy5sZW5ndGggJiYgdGhpcy52YXJpYW50c1swXTtcclxuXHRcdG9wdGlvbnMgJiYgb3B0aW9ucy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4gT2JqZWN0LmtleXMob3B0aW9uKS5mb3JFYWNoKGtleSA9PiB0aGlzLnNldE9wdGlvbihrZXksIG9wdGlvbltrZXldKSkpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEFncmVnYSBlbCBwcm9kdWN0byBhbCBjYXJyaXRvLlxyXG5cdCAqIEBwYXJhbSBxdWFudGl0eSBDYW50aWRhZCBkZWwgcHJvZHVjdG8gYSBhZ3JlZ2FyXHJcblx0ICogQHBhcmFtIHZhcmlhbnRDb2RlIENvZGlnbyBkZSBsYSB2YXJpYW50ZS5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRhZGRUb0NhcnQocXVhbnRpdHk6IG51bWJlciwgdmFyaWFudENvZGU/OiBzdHJpbmcpIHtcclxuXHJcblxyXG5cdFx0aWYgKCF0aGlzLnZhcmlhbnRzLmxlbmd0aCkge1xyXG5cclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2NhbnQtYnV5JylcclxuXHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGxldCBwcm9kdWN0U2VsZWN0ZWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KCh0aGlzLl9wcm9kdWN0U3ViamVjdC5nZXRWYWx1ZSgpKSkpO1xyXG5cclxuXHRcdGxldCB2YXJpYW50OiBhbnk7XHJcblx0XHRzd2l0Y2ggKHRoaXMudmFyaWFudHMubGVuZ3RoKSB7XHJcblx0XHRcdGNhc2UgMDpcclxuXHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbm8tdmFyaWFudHMnKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAxOlxyXG5cclxuXHRcdFx0XHR0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUuc3RvY2sgPT0gMFxyXG5cdFx0XHRcdFx0PyB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrJylcclxuXHRcdFx0XHRcdDogdmFyaWFudCA9IHRoaXMudmFyaWFudHNbMF1cclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRpZiAodmFyaWFudENvZGUpIHtcclxuXHRcdFx0XHRcdHZhcmlhbnQgPSB0aGlzLnZhcmlhbnRzLmZpbmQodmFyaWFudCA9PiB2YXJpYW50LmNvZGUgPT09IHZhcmlhbnRDb2RlKVxyXG5cdFx0XHRcdFx0aWYgKHZhcmlhbnQuc3RvY2sgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrJylcclxuXHRcdFx0XHRcdFx0dmFyaWFudCA9IHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygndmFyaWFudHMtbGVmdCcpXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCF2YXJpYW50KSByZXR1cm47XHJcblx0XHRpZiAoIXRoaXMudmFsaWRhdGVRdWFudGl0eShxdWFudGl0eSkpIHJldHVybjtcclxuXHRcdC8vYWdyZWdhciBhbCBzZXJ2aWNpbyBkZWwgY2Fycml0b1xyXG5cdFx0dGhpcy5fY2FydFNlcnZpY2UuYWRkVG9DYXJ0KHRoaXMubWFrZUFmZm9yZGFibGVQcm9kdWN0KHByb2R1Y3RTZWxlY3RlZCksIHF1YW50aXR5LCB2YXJpYW50LmNvZGUpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBHZW5lcmEgdW4gcHJvZHVjdG8gcGFyYSBoYWNlciBtYXMgZmFjw61sIGVsIGVudmlvIGRlbCBlbGVtZW50byBhbCBiYWNrZW5kLlxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0U2VsZWN0ZWQgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBtYWtlQWZmb3JkYWJsZVByb2R1Y3QocHJvZHVjdFNlbGVjdGVkOiBQcm9kdWN0KSB7XHJcblx0XHRwcm9kdWN0U2VsZWN0ZWQucHJpY2UgPSBwYXJzZUZsb2F0KHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5wcmljZSk7XHJcblx0XHRwcm9kdWN0U2VsZWN0ZWQuc2FsZXByaWNlID0gcGFyc2VGbG9hdCh0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUucHJpY2UpO1xyXG5cdFx0cHJvZHVjdFNlbGVjdGVkLm9wdGlvbnMgPSBbXTtcclxuXHRcdHRoaXMudmFyaWFudHNbMF0ub3B0aW9ucy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4gcHJvZHVjdFNlbGVjdGVkLm9wdGlvbnMgPSB7IC4uLnByb2R1Y3RTZWxlY3RlZC5vcHRpb25zLCAuLi5vcHRpb24gfSlcclxuXHRcdHJldHVybiBwcm9kdWN0U2VsZWN0ZWQ7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFZhbGlkYSBsYSBjYW50aWRhZCBxdWUgc2UgcXVpZXJlIGFncmVnYXIgZGUgdW4gcHJvZHVjdG8uXHJcblx0ICogUmV2aXNhIHF1ZSBubyBzdXBlcmUgZWwgc3RvY2ssIGVsIG1heGltbyBkZSBpdGVtcyBxdWUgc2UgcHVlZGUgYWdyZWdhclxyXG5cdCAqIGFzaSBjb21vIGVsIG1pbmltby5cclxuXHQgKiBAcGFyYW0gcXVhbnRpdHkgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB2YWxpZGF0ZVF1YW50aXR5ID0gKHF1YW50aXR5OiBudW1iZXIpID0+IHtcclxuXHRcdGNvbnN0IGFjdHVhbFF1YW50aXR5ID0gdGhpcy5fY2FydFNlcnZpY2UuZ2V0Q291bnRGcm9tSXRlbUluQ2FydCh0aGlzLnZhcmlhbnRzWzBdLmNvZGUpO1xyXG5cdFx0Y29uc3QgYXNvY2lhdGVkRGF0YSA9IHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZTtcclxuXHRcdGlmICgoYWN0dWFsUXVhbnRpdHkgKyBxdWFudGl0eSkgPiBhc29jaWF0ZWREYXRhLm1heGltdW1JdGVtc1F1YW50aXR5KSB7XHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdtYXhpbXVtLWl0ZW1zLXF1YW50aXR5JywgeyBxdWFudGl0eTogYXNvY2lhdGVkRGF0YS5tYXhpbXVtSXRlbXNRdWFudGl0eSB9KVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0XHRpZiAoKGFjdHVhbFF1YW50aXR5ICsgcXVhbnRpdHkpIDwgYXNvY2lhdGVkRGF0YS5taW5pbXVtSXRlbXNRdWFudGl0eSkge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWluaW11bS1pdGVtcy1xdWFudGl0eScsIHsgcXVhbnRpdHk6IGFzb2NpYXRlZERhdGEubWluaW11bUl0ZW1zUXVhbnRpdHkgfSlcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGFzb2NpYXRlZERhdGEubXVsdGlwbGVRdWFudGl0eSAmJiBhc29jaWF0ZWREYXRhLm11bHRpcGxlUXVhbnRpdHkgPiAxKSB7XHJcblx0XHRcdGlmICgoYWN0dWFsUXVhbnRpdHkgKyBxdWFudGl0eSkgJSBhc29jaWF0ZWREYXRhLm11bHRpcGxlUXVhbnRpdHkgIT09IDApIHtcclxuXHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbXVsdGlwbGUtcXVhbnRpdHktcmVxdWlyZWQnLCB7XHJcblx0XHRcdFx0XHRtdWx0aXBsZTogYXNvY2lhdGVkRGF0YS5tdWx0aXBsZVF1YW50aXR5LFxyXG5cdFx0XHRcdFx0Y3VycmVudDogYWN0dWFsUXVhbnRpdHkgKyBxdWFudGl0eVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRydWVcclxuXHR9XHJcbn1cclxuIl19
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUs3QyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFaEQsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztJQUMxRCxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7SUFDL0Msc0JBQXNCLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFekYsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsZUFBZSxHQUFHLElBQUksQ0FB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QUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFELE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDOUMsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDLENBQUM7d0dBOVdVLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRnBCLE1BQU07OzRGQUVOLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4vcHJvZHVjdHMuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPcHRpb25zLCBPcHRpb25WYWx1ZSwgUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi9jYXJ0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RGV0YWlsU2VydmljZSB7XG5cdHByaXZhdGUgX3Byb2R1Y3RzU2VydmljZTogUHJvZHVjdHNTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RzU2VydmljZSk7XG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG5cdHByaXZhdGUgX2NhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSk7XG5cblx0cHJpdmF0ZSBfcHJvZHVjdFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3QgfCBudWxsPih7fSk7XG5cdHByaXZhdGUgX29wdGlvbnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcblx0cHJpdmF0ZSBfYXNzb2NpYXRlZERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHsgcHJpY2U6ICcnLCBzdG9jazogMCwgcGljdHVyZTogJycgfSk7XG5cblx0cHVibGljIHByb2R1Y3QkID0gdGhpcy5fcHJvZHVjdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdHB1YmxpYyBvcHRpb25zJCA9IHRoaXMuX29wdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHRwdWJsaWMgYXNzb2NpYXRlZERhdGEkID0gdGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdHByaXZhdGUgdmFyaWFudHM6IGFueVtdID0gW11cblx0cHJpdmF0ZSBfY3VycmVudFRvdGFsQW1vdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBfYmFsYW5jZUN1c3RvbWVyOiBhbnkgPSBudWxsO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuX2NhcnRTZXJ2aWNlLmdldFRvdGFsQW1vdW50KCkuc3Vic2NyaWJlKHRvdGFsID0+IHtcblx0XHRcdHRoaXMuX2N1cnJlbnRUb3RhbEFtb3VudCA9IHRvdGFsID8/IG51bGw7XG5cdFx0fSk7XG5cblx0XHR0aGlzLl9jYXJ0U2VydmljZS5iYWxhbmNlQ3VzdG9tZXIkLnN1YnNjcmliZShiYWxhbmNlQ3VzdG9tZXIgPT4ge1xuXHRcdFx0dGhpcy5fYmFsYW5jZUN1c3RvbWVyID0gYmFsYW5jZUN1c3RvbWVyO1xuXHRcdH0pO1xuXHR9XG5cdC8qKlxuXHQgKiBPYnRlbmdvIGVsIHByb2R1Y3RvIGEgdHJhdmVzIGRlIHN1IGNvZGlnbyBlIGluaWNpYWxpem8gbGEgY29uZmlndXJhY2nDs25cblx0ICogZGVsIFNlcnZpY2lvLlxuXHQgKiBAcGFyYW0gY29kZSBcblx0ICogQHBhcmFtIHZhcmlhbnQgXG5cdCAqL1xuXHRsb2FkUHJvZHVjdChjb2RlOiBzdHJpbmcsIHZhcmlhbnQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuXHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX3Byb2R1Y3RzU2VydmljZS5nZXRQcm9kdWN0QnlDb2RlKGNvZGUsIHZhcmlhbnQpKVxuXHRcdFx0LnRoZW4ocmVzID0+IHtcblx0XHRcdFx0dmFyaWFudCA/IHRoaXMuaW5pdGlhbGl6ZShyZXMsIGNvZGUpIDogdGhpcy5pbml0aWFsaXplKHJlcylcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZXJyID0+IHsgY29uc29sZS5sb2coZXJyKTsgdGhpcy5fcHJvZHVjdFN1YmplY3QubmV4dChudWxsKSB9KTtcblx0fVxuXHQvKipcblx0ICogQ2FyZ2EgZWwgcHJvZHVjdG8gZW4gZWwgb2JzZXJ2YWJsZSB5IGxhIGNvbmZpZ3VyYWNpw7NuIGRlIGxhcyB2YXJpYW50ZXMuXG5cdCAqIEBwYXJhbSBwcm9kdWN0IFxuXHQgKiBAcGFyYW0gdmFyaWFudENvZGUgXG5cdCAqL1xuXHRwcml2YXRlIGluaXRpYWxpemUocHJvZHVjdDogUHJvZHVjdCwgdmFyaWFudENvZGU/OiBzdHJpbmcpIHtcblx0XHR0aGlzLl9wcm9kdWN0U3ViamVjdC5uZXh0KHByb2R1Y3QpO1xuXHRcdGNvbnN0IGF1eDogUHJvZHVjdFsnb3B0aW9ucyddID0gcHJvZHVjdC5vcHRpb25zIHx8IFtdO1xuXHRcdGNvbnN0IG9wdGlvbnMgPSBhdXg/Lm1hcChvcHRpb24gPT4gdGhpcy50b09wdGlvbihvcHRpb24pKVxuXHRcdHRoaXMuX29wdGlvbnNTdWJqZWN0Lm5leHQob3B0aW9ucyk7XG5cdFx0dmFyaWFudENvZGUgPyB0aGlzLnVwZGF0ZVZhcmlhbnRzKHZhcmlhbnRDb2RlKSA6IHRoaXMudXBkYXRlVmFyaWFudHMoKTtcblx0XHR0aGlzLnZhcmlhbnRzLmxlbmd0aCAmJiB0aGlzLmdlbmVyYXRlQXNzb2NpYXRlZERhdGFGcm9tVmFyaWFudHMoKTtcblx0fVxuXHQvKipcblx0ICogRm9ybWF0ZSBsb3MgZGF0b3MgcGFyYSBsYXMgb3BjaW9uZXMgZGVsIHByb2R1Y3RvLlxuXHQgKiBAcGFyYW0gb3B0aW9uIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgdG9PcHRpb24ob3B0aW9uOiBPcHRpb25zKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWU6IG9wdGlvbi5sYWJlbCxcblx0XHRcdGNvZGU6IG9wdGlvbi5jb2RlLFxuXHRcdFx0dHlwZTogb3B0aW9uLnR5cGUsXG5cdFx0XHR2YWx1ZXM6IG9wdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogYW55KSA9PiAoeyBuYW1lOiB2YWx1ZS5jb2RlLCBkZXNjcmlwdGlvbjogdmFsdWUubmFtZSwgaW1hZ2U6IHZhbHVlLmltYWdlLCBtb2JpbGVJbWFnZTogdmFsdWUubW9iaWxlSW1hZ2UsIHNlbGVjdGVkOiBmYWxzZSB9KSlcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2FtYmlhIGxhcyBvcGNpb25lcywgb2J0aWVuZSBlbCBwcm9kdWN0byBhc29jaWFkbyBhIGxhIG9wY2lvbiBlbGVnaWRhLlxuXHQgKi9cblx0c2V0T3B0aW9uKG9wdGlvbkNvZGU6IGFueSwgb3B0aW9uVmFsdWU6IGFueSkge1xuXHRcdGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9vcHRpb25zU3ViamVjdC52YWx1ZTtcblx0XHRjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5jb2RlID09IG9wdGlvbkNvZGUpLnZhbHVlcy5maW5kKCh2YWx1ZTogYW55KSA9PiB2YWx1ZS5uYW1lID09IG9wdGlvblZhbHVlKTtcblx0XHRvcHRpb24uc2VsZWN0ZWQgPSAhb3B0aW9uLnNlbGVjdGVkO1xuXHRcdG9wdGlvbnMuZmluZCgoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LmNvZGUgPT0gb3B0aW9uQ29kZSkudmFsdWVzLmZvckVhY2goXG5cdFx0XHQodmFsdWU6IGFueSkgPT4geyBpZiAodmFsdWUubmFtZSAhPSBvcHRpb24ubmFtZSkgdmFsdWUuc2VsZWN0ZWQgPSBmYWxzZSB9XG5cdFx0KTtcblx0XHR0aGlzLl9vcHRpb25zU3ViamVjdC5uZXh0KG9wdGlvbnMpO1xuXHRcdHRoaXMudXBkYXRlVmFyaWFudHMoKTtcblx0XHR0aGlzLnZhcmlhbnRzLmxlbmd0aCA+IDAgPyB0aGlzLmdlbmVyYXRlQXNzb2NpYXRlZERhdGFGcm9tVmFyaWFudHMoKSA6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdzZWxlY3Rpb24tbm90LWF2YWlsYWJsZScpXG5cdH1cblx0LyoqXG4gKiBBY3R1YWxpemEgZWwgb2JzZXJ2YWJsZSBkZSBgYXNzb2NpYXRlZERhdGFgIGVsIGN1YWwgc2UgdXRpbGl6YSBwYXJhIG1vc3RyYXIgbG9zIGRhdG9zXG4gKiBlbiBlbCBmcm9udGVuZCBzZWfDum4gZWwgcHJvZHVjdG8geS9vIHZhcmlhbnRlIGVsZWdpZGEuXG4gKiBPYnRpZW5lIGxvcyBkYXRvcyBkZSBsYSB2YXJpYW50ZSB5IGxvcyBmb3JtYXRlYS5cbiAqL1xuXHRnZW5lcmF0ZUFzc29jaWF0ZWREYXRhRnJvbVZhcmlhbnRzKCk6IHZvaWQge1xuXHRcdGNvbnN0IGFzc29jaWF0ZWQ6IGFueSA9IHt9O1xuXG5cdFx0Ly8gU2kgc8OzbG8gaGF5IHVuYSB2YXJpYW50ZSwgdG9tYW1vcyB0b2RvcyBzdXMgZGF0b3MgZGlyZWN0YW1lbnRlXG5cdFx0aWYgKHRoaXMudmFyaWFudHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCB2ID0gdGhpcy52YXJpYW50c1swXTtcblxuXHRcdFx0YXNzb2NpYXRlZC5zdG9jayA9IHYuc3RvY2s7XG5cdFx0XHQvLyBQcmVjaW86IHNpIHZpZW5lIHRheExlZ2VuZEluZm8gdXNhbW9zIHN1IHByaWNlLCBzaSBubyBlbCB2LnByaWNlXG5cdFx0XHRjb25zdCByYXdQcmljZSA9IHYudGF4TGVnZW5kSW5mbz8ucHJpY2UgPz8gdi5wcmljZTtcblx0XHRcdGFzc29jaWF0ZWQucHJpY2UgPSByYXdQcmljZS50b1N0cmluZygpO1xuXHRcdFx0Y29uc3QgcmF3U2FsZVByaWNlID0gdi50YXhMZWdlbmRJbmZvPy5zYWxlcHJpY2UgPz8gdi5zYWxlcHJpY2U7XG5cdFx0XHRhc3NvY2lhdGVkLnNhbGVwcmljZSA9IHJhd1NhbGVQcmljZSA/IHJhd1NhbGVQcmljZS50b1N0cmluZygpIDogdW5kZWZpbmVkO1xuXHRcdFx0YXNzb2NpYXRlZC5kaXNjb3VudCA9IHYuZGlzY291bnQgPz8gdW5kZWZpbmVkO1xuXHRcdFx0YXNzb2NpYXRlZC5wcm9wZXJ0aWVzID0gdi5wcm9wZXJ0aWVzID8gdGhpcy5iZWF1dGlmeVByb3BlcnRpZXModi5wcm9wZXJ0aWVzKSA6IHVuZGVmaW5lZDtcblx0XHRcdGFzc29jaWF0ZWQudW5pcXVlRXh0ZXJuYWxDb2RlID0gdi51bmlxdWVFeHRlcm5hbENvZGUgPz8gdW5kZWZpbmVkO1xuXHRcdFx0YXNzb2NpYXRlZC5tdWx0aXBsZVF1YW50aXR5ID0gdi5tdWx0aXBsZVF1YW50aXR5ID8/IHVuZGVmaW5lZDtcblxuXHRcdFx0Ly8gTMOtbWl0ZXMgZGUgY2FudGlkYWQvc3RvY2tcblx0XHRcdGFzc29jaWF0ZWQubWF4aW11bUFtb3VudCA9IHYubWF4aW11bUFtb3VudCA/PyAwO1xuXHRcdFx0YXNzb2NpYXRlZC5taW5pbXVtQW1vdW50ID0gdi5taW5pbXVtQW1vdW50ID8/IDA7XG5cdFx0XHRhc3NvY2lhdGVkLm1heGltdW1JdGVtc1F1YW50aXR5ID0gdi5zdG9jayA+IDAgJiYgJ21heGltdW1JdGVtc1F1YW50aXR5JyBpbiB2XG5cdFx0XHRcdD8gdi5tYXhpbXVtSXRlbXNRdWFudGl0eVxuXHRcdFx0XHQ6IHYuc3RvY2s7XG5cdFx0XHRhc3NvY2lhdGVkLm1pbmltdW1JdGVtc1F1YW50aXR5ID0gdi5zdG9jayA+IDAgJiYgJ21pbmltdW1JdGVtc1F1YW50aXR5JyBpbiB2ICYmIHYubWluaW11bUl0ZW1zUXVhbnRpdHkhID4gMFxuXHRcdFx0XHQ/IHYubWluaW11bUl0ZW1zUXVhbnRpdHlcblx0XHRcdFx0OiAodi5tdWx0aXBsZVF1YW50aXR5ID8/IDEpO1xuXHRcdFx0YXNzb2NpYXRlZC5tdWx0aXBsZVF1YW50aXR5ID0gdi5tdWx0aXBsZVF1YW50aXR5ID8/IDE7XG5cblx0XHRcdC8vIFByZWNpb3MgYWwgY29uc3VtaWRvciBmaW5hbFxuXHRcdFx0YXNzb2NpYXRlZC5maW5hbENvbnN1bWVyID0ge1xuXHRcdFx0XHRmaW5hbENvbnN1bWVyUHJpY2U6IHYuZmluYWxfY29uc3VtZXJfcHJpY2UsXG5cdFx0XHRcdG9yaWdpbmFsRmluYWxDb25zdW1lclByaWNlOiB2Lm9yaWdpbmFsX2ZpbmFsX2NvbnN1bWVyX3ByaWNlXG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBJbXB1ZXN0b3Ncblx0XHRcdGFzc29jaWF0ZWQudGF4ZXMgPSB7XG5cdFx0XHRcdHRheEluY2x1ZGVkOiB2LnRheEluY2x1ZGVkLFxuXHRcdFx0XHR0YXhDYXRlZ29yeTogdi50YXhDYXRlZ29yeVxuXHRcdFx0fTtcblx0XHRcdC8vIFNlZ3VuIHZlcnNpb24gZGVsIGJhY2tlbmRcblx0XHRcdGlmICh2LnRheExlZ2VuZEluZm8pIHtcblx0XHRcdFx0Ly8gTnVldm8gYmFja2VuZFxuXHRcdFx0XHRhc3NvY2lhdGVkLnByaWNlV2l0aG91dFRheGVzID0gdi50YXhMZWdlbmRJbmZvLnByaWNlV2l0aG91dFRheGVzO1xuXHRcdFx0XHRhc3NvY2lhdGVkLnRheGVBbW91bnQgPSB2LnRheExlZ2VuZEluZm8udGF4ZXM7XG5cdFx0XHRcdGFzc29jaWF0ZWQudGF4UmF0ZSA9IHYudGF4TGVnZW5kSW5mby50YXhSYXRlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gQmFja2VuZCBhbnRpZ3VvXG5cdFx0XHRcdGFzc29jaWF0ZWQucHJpY2VXaXRob3V0VGF4ZXMgPSB2LnByaWNlV2l0aG91dFRheGVzID8/IHVuZGVmaW5lZDtcblx0XHRcdFx0YXNzb2NpYXRlZC50YXhlQW1vdW50ID0gdi50YXhlcyA/PyB1bmRlZmluZWQ7XG5cdFx0XHRcdGFzc29jaWF0ZWQudGF4UmF0ZSA9IHYudGF4UmF0ZSA/PyB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gU2kgaGF5IHZhcmlhcyB2YXJpYW50ZXMsIHJlc3VtaW1vc1xuXHRcdFx0YXNzb2NpYXRlZC5wcmljZSA9IHRoaXMuY3JlYXRlUHJpY2UoKTtcblx0XHRcdGFzc29jaWF0ZWQuc2FsZXByaWNlID0gdGhpcy5jcmVhdGVTYWxlUHJpY2UoKTtcblx0XHRcdGFzc29jaWF0ZWQuc3RvY2sgPSB0aGlzLnZhcmlhbnRzLm1hcCh2ID0+IHYuc3RvY2spLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xuXHRcdFx0YXNzb2NpYXRlZC5kaXNjb3VudCA9IHRoaXMuY3JlYXRlRGlzY291bnQoKTtcblx0XHR9XG5cblx0XHQvLyBJbWFnZW4gcHJpbmNpcGFsXG5cdFx0Y29uc3QgZmlyc3QgPSB0aGlzLnZhcmlhbnRzWzBdO1xuXHRcdGlmICgnaW1hZ2VzJyBpbiBmaXJzdCAmJiBmaXJzdC5pbWFnZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0YXNzb2NpYXRlZC5waWN0dXJlID0gZmlyc3QuaW1hZ2VzWzBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhc3NvY2lhdGVkLnBpY3R1cmUgPSB0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWU/LnBpY3R1cmVcblx0XHRcdFx0Pz8gdGhpcy5fcHJvZHVjdFN1YmplY3QudmFsdWU/LnBpY3R1cmVzZGVmYXVsdD8uWzBdO1xuXHRcdH1cblxuXHRcdC8vIEVtaXRpbW9zIGVsIG9iamV0byBjb21wbGV0b1xuXHRcdHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KGFzc29jaWF0ZWQpO1xuXHR9XG5cdC8qKlxuXHQgKiBNZWpvcmEgbG9zIGRhdG9zIGRlIGxhcyBgcHJvcGVydGllc2AuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0aWVzIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGJlYXV0aWZ5UHJvcGVydGllcyhwcm9wZXJ0aWVzOiBhbnkpOiBhbnkge1xuXHRcdGxldCBiZWF1dGlmeURhdGE6IGFueSA9IFtdO1xuXHRcdHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcDogYW55KSA9PiB7XG5cdFx0XHRmb3IgKGxldCBrZXkgaW4gcHJvcCkge1xuXHRcdFx0XHRiZWF1dGlmeURhdGEucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IHByb3Bba2V5XSB9KVxuXHRcdFx0fVxuXHRcdH0pXG5cdFx0cmV0dXJuIGJlYXV0aWZ5RGF0YVxuXHR9XG5cdC8qKlxuXHQgKiBEZXZ1ZWx2ZSB1biBkZXNjdWVudG8gZW4gY2FzbyBkZSBleGlzdGlyLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGNyZWF0ZURpc2NvdW50KCk6IGFueSB7XG5cdFx0bGV0IGFsbERpc2NvdW50czogc3RyaW5nID0gJyc7XG5cdFx0dGhpcy52YXJpYW50cy5mb3JFYWNoKHZhcmlhbnQgPT4ge1xuXHRcdFx0dmFyaWFudC5kaXNjb3VudCAmJiAoYWxsRGlzY291bnRzICs9ICcsICcgKyB2YXJpYW50LmRpc2NvdW50KTtcblx0XHR9KVxuXHRcdGlmIChhbGxEaXNjb3VudHMgPT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIGFsbERpc2NvdW50cztcblx0fVxuXHQvKipcblx0ICogRGV2dWVsdmUgZWwgcHJlY2lvIGRlIHZlbnRhLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGNyZWF0ZVNhbGVQcmljZSgpOiBhbnkge1xuXHRcdGxldCBtaW5QcmljZTogbnVtYmVyID0gMDtcblx0XHRsZXQgbWF4UHJpY2U6IG51bWJlciA9IDA7XG5cdFx0bGV0IGFsbFByaWNlczogYW55ID0gdGhpcy52YXJpYW50cy5tYXAodiA9PiB2LnNhbGVwcmljZSkuZmlsdGVyKGUgPT4gZSAhPT0gdW5kZWZpbmVkKTtcblx0XHRpZiAoYWxsUHJpY2VzLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdFx0fVxuXHRcdG1pblByaWNlID0gYWxsUHJpY2VzLnJlZHVjZSgoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IE1hdGgubWluKGEsIGIpKTtcblx0XHRtYXhQcmljZSA9IGFsbFByaWNlcy5yZWR1Y2UoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBNYXRoLm1heChhLCBiKSk7XG5cdFx0cmV0dXJuIG1pblByaWNlID09IG1heFByaWNlID8gbWF4UHJpY2UudG9TdHJpbmcoKSA6IG1pblByaWNlICsgJyAtICcgKyBtYXhQcmljZTtcblx0fVxuXHQvKipcblx0ICogRGV2dWVsdmUgZWwgcHJlY2lvIG8gbG9zIHByZWNpb3MgZW4gY2FzbyBkZSB0ZW5lciB2YXJpYXMgdmFyaWFudGVzIGNvbiBkaXN0aW50b3MgcHJlY2lvcy5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRjcmVhdGVQcmljZSgpOiBhbnkge1xuXHRcdGxldCBtaW5QcmljZTogbnVtYmVyID0gMDtcblx0XHRsZXQgbWF4UHJpY2U6IG51bWJlciA9IDA7XG5cdFx0bGV0IGFsbFByaWNlOiBhbnkgPSB0aGlzLnZhcmlhbnRzLm1hcCh2ID0+IHYucHJpY2UpXG5cdFx0bWluUHJpY2UgPSBhbGxQcmljZS5yZWR1Y2UoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBNYXRoLm1pbihhLCBiKSk7XG5cdFx0bWF4UHJpY2UgPSBhbGxQcmljZS5yZWR1Y2UoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBNYXRoLm1heChhLCBiKSk7XG5cdFx0cmV0dXJuIG1pblByaWNlID09IG1heFByaWNlID8gbWF4UHJpY2UudG9TdHJpbmcoKSA6IG1pblByaWNlICsgJyAtICcgKyBtYXhQcmljZTtcblx0fVxuXHQvKipcblx0ICogQWN0dWFsaXphIGxhcyB2YXJpYW50ZXMuXG5cdCAqIEBwYXJhbSBjb2RlIFxuXHQgKi9cblx0dXBkYXRlVmFyaWFudHMgPSAoY29kZT86IHN0cmluZykgPT4ge1xuXHRcdGxldCB2YXJpYW50cyA9IHRoaXMuX3Byb2R1Y3RTdWJqZWN0LnZhbHVlPy52YXJpYW50c1xuXHRcdC8vY29uc29sZS5sb2codmFyaWFudHMpXG5cdFx0aWYgKCFjb2RlKSB7XG5cdFx0XHR0aGlzLl9vcHRpb25zU3ViamVjdC52YWx1ZS5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuXHRcdFx0XHRvcHRpb24udmFsdWVzLmZvckVhY2goKHZhbHVlOiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAodmFsdWUuc2VsZWN0ZWQpIHtcblx0XHRcdFx0XHRcdHZhcmlhbnRzID0gdmFyaWFudHM/LmZpbHRlcih2YXJpYW50ID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhcmlhbnQub3B0aW9ucy5zb21lKCh2YXJpYW50T3B0aW9uOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKG9wdGlvbi5jb2RlIGluIHZhcmlhbnRPcHRpb24gJiYgdmFyaWFudE9wdGlvbltvcHRpb24uY29kZV0gPT0gdmFsdWUubmFtZSk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhcmlhbnRzID0gdmFyaWFudHM/LmZpbHRlcih2YXJpYW50ID0+IHZhcmlhbnQuY29kZSA9PSBjb2RlKTtcblx0XHR9XG5cdFx0dGhpcy52YXJpYW50cyA9IHZhcmlhbnRzIHx8IFtdO1xuXHRcdGNvZGUgJiYgdGhpcy51cGRhdGVPcHRpb25zKCk7XG5cdH1cblx0LyoqXG5cdCAqIEFjdHVhbGl6YSBsYXMgb3BjaW9uZXNcblx0ICovXG5cdHByaXZhdGUgdXBkYXRlT3B0aW9ucyA9ICgpID0+IHtcblx0XHRsZXQgeyBvcHRpb25zIH0gPSB0aGlzLnZhcmlhbnRzLmxlbmd0aCAmJiB0aGlzLnZhcmlhbnRzWzBdO1xuXHRcdG9wdGlvbnMgJiYgb3B0aW9ucy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4gT2JqZWN0LmtleXMob3B0aW9uKS5mb3JFYWNoKGtleSA9PiB0aGlzLnNldE9wdGlvbihrZXksIG9wdGlvbltrZXldKSkpXG5cdH1cblx0LyoqXG5cdCAqIEFncmVnYSBlbCBwcm9kdWN0byBhbCBjYXJyaXRvLlxuXHQgKiBAcGFyYW0gcXVhbnRpdHkgQ2FudGlkYWQgZGVsIHByb2R1Y3RvIGEgYWdyZWdhclxuXHQgKiBAcGFyYW0gdmFyaWFudENvZGUgQ29kaWdvIGRlIGxhIHZhcmlhbnRlLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGFkZFRvQ2FydChxdWFudGl0eTogbnVtYmVyLCB2YXJpYW50Q29kZT86IHN0cmluZykge1xuXG5cblx0XHRpZiAoIXRoaXMudmFyaWFudHMubGVuZ3RoKSB7XG5cblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdjYW50LWJ1eScpXG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IHByb2R1Y3RTZWxlY3RlZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoKHRoaXMuX3Byb2R1Y3RTdWJqZWN0LmdldFZhbHVlKCkpKSk7XG5cblx0XHRsZXQgdmFyaWFudDogYW55O1xuXHRcdHN3aXRjaCAodGhpcy52YXJpYW50cy5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMDpcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ25vLXZhcmlhbnRzJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxOlxuXG5cdFx0XHRcdHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5zdG9jayA9PSAwXG5cdFx0XHRcdFx0PyB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrJylcblx0XHRcdFx0XHQ6IHZhcmlhbnQgPSB0aGlzLnZhcmlhbnRzWzBdXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYgKHZhcmlhbnRDb2RlKSB7XG5cdFx0XHRcdFx0dmFyaWFudCA9IHRoaXMudmFyaWFudHMuZmluZCh2YXJpYW50ID0+IHZhcmlhbnQuY29kZSA9PT0gdmFyaWFudENvZGUpXG5cdFx0XHRcdFx0aWYgKHZhcmlhbnQuc3RvY2sgPT0gMCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jaycpXG5cdFx0XHRcdFx0XHR2YXJpYW50ID0gdW5kZWZpbmVkXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCd2YXJpYW50cy1sZWZ0Jylcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKCF2YXJpYW50KSByZXR1cm47XG5cdFx0aWYgKCF0aGlzLnZhbGlkYXRlUXVhbnRpdHkocXVhbnRpdHksIHZhcmlhbnQuY29kZSkpIHJldHVybjtcblxuXHRcdGNvbnN0IHByaWNlVG9WYWxpZGF0ZSA9IHByb2R1Y3RTZWxlY3RlZC5zYWxlcHJpY2Vcblx0XHRcdD8gcHJvZHVjdFNlbGVjdGVkLnNhbGVwcmljZSAqIHF1YW50aXR5XG5cdFx0XHQ6IHByb2R1Y3RTZWxlY3RlZC5wcmljZSAqIHF1YW50aXR5O1xuXG5cdFx0aWYgKCF0aGlzLnZhbGlkYXRlUHJpY2VBbmRDcmVkaXRzKHByaWNlVG9WYWxpZGF0ZSkpIHJldHVybjtcblx0XHQvL2FncmVnYXIgYWwgc2VydmljaW8gZGVsIGNhcnJpdG9cblx0XHR0aGlzLl9jYXJ0U2VydmljZS5hZGRUb0NhcnQodGhpcy5tYWtlQWZmb3JkYWJsZVByb2R1Y3QocHJvZHVjdFNlbGVjdGVkKSwgcXVhbnRpdHksIHZhcmlhbnQuY29kZSk7XG5cdH1cblx0LyoqXG5cdCAqIEdlbmVyYSB1biBwcm9kdWN0byBwYXJhIGhhY2VyIG1hcyBmYWPDrWwgZWwgZW52aW8gZGVsIGVsZW1lbnRvIGFsIGJhY2tlbmQuXG5cdCAqIEBwYXJhbSBwcm9kdWN0U2VsZWN0ZWQgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBtYWtlQWZmb3JkYWJsZVByb2R1Y3QocHJvZHVjdFNlbGVjdGVkOiBQcm9kdWN0KSB7XG5cdFx0cHJvZHVjdFNlbGVjdGVkLnByaWNlID0gcGFyc2VGbG9hdCh0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUucHJpY2UpO1xuXHRcdHByb2R1Y3RTZWxlY3RlZC5zYWxlcHJpY2UgPSBwYXJzZUZsb2F0KHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5wcmljZSk7XG5cdFx0cHJvZHVjdFNlbGVjdGVkLm9wdGlvbnMgPSBbXTtcblx0XHR0aGlzLnZhcmlhbnRzWzBdLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHByb2R1Y3RTZWxlY3RlZC5vcHRpb25zID0geyAuLi5wcm9kdWN0U2VsZWN0ZWQub3B0aW9ucywgLi4ub3B0aW9uIH0pXG5cdFx0cmV0dXJuIHByb2R1Y3RTZWxlY3RlZDtcblx0fVxuXHQvKipcblx0ICogVmFsaWRhIGxhIGNhbnRpZGFkIHF1ZSBzZSBxdWllcmUgYWdyZWdhciBkZSB1biBwcm9kdWN0by5cblx0ICogUmV2aXNhIHF1ZSBubyBzdXBlcmUgZWwgc3RvY2ssIGVsIG1heGltbyBkZSBpdGVtcyBxdWUgc2UgcHVlZGUgYWdyZWdhclxuXHQgKiBhc2kgY29tbyBlbCBtaW5pbW8uXG5cdCAqIEBwYXJhbSBxdWFudGl0eSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIHZhbGlkYXRlUXVhbnRpdHkgPSAocXVhbnRpdHk6IG51bWJlciwgdmFyaWFudENvZGU/OiBzdHJpbmcpID0+IHtcblx0XHRjb25zdCBjb2RlVG9DaGVjayA9IHZhcmlhbnRDb2RlIHx8IHRoaXMudmFyaWFudHNbMF0uY29kZTtcblx0XHRjb25zdCBhY3R1YWxRdWFudGl0eSA9IHRoaXMuX2NhcnRTZXJ2aWNlLmdldENvdW50RnJvbUl0ZW1JbkNhcnQoY29kZVRvQ2hlY2spO1xuXHRcdGNvbnN0IGFzb2NpYXRlZERhdGEgPSB0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QudmFsdWU7XG5cblx0XHRjb25zdCB2YXJpYW50ID0gdGhpcy52YXJpYW50cy5maW5kKHYgPT4gdi5jb2RlID09PSBjb2RlVG9DaGVjayk7XG5cdFx0Y29uc3Qgc3RvY2sgPSB2YXJpYW50Py5zdG9jayA/PyAwO1xuXHRcdGNvbnN0IHRvdGFsUXVhbnRpdHkgPSBhY3R1YWxRdWFudGl0eSArIHF1YW50aXR5O1xuXG5cdFx0aWYgKHRvdGFsUXVhbnRpdHkgPiBzdG9jaykge1xuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmICgodG90YWxRdWFudGl0eSkgPiBhc29jaWF0ZWREYXRhLm1heGltdW1JdGVtc1F1YW50aXR5KSB7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWF4aW11bS1pdGVtcy1xdWFudGl0eScsIHsgcXVhbnRpdHk6IGFzb2NpYXRlZERhdGEubWF4aW11bUl0ZW1zUXVhbnRpdHkgfSlcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0aWYgKCh0b3RhbFF1YW50aXR5KSA8IGFzb2NpYXRlZERhdGEubWluaW11bUl0ZW1zUXVhbnRpdHkpIHtcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdtaW5pbXVtLWl0ZW1zLXF1YW50aXR5JywgeyBxdWFudGl0eTogYXNvY2lhdGVkRGF0YS5taW5pbXVtSXRlbXNRdWFudGl0eSB9KVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoYXNvY2lhdGVkRGF0YS5tdWx0aXBsZVF1YW50aXR5ICYmIGFzb2NpYXRlZERhdGEubXVsdGlwbGVRdWFudGl0eSA+IDEpIHtcblx0XHRcdGlmICgoYWN0dWFsUXVhbnRpdHkgKyBxdWFudGl0eSkgJSBhc29jaWF0ZWREYXRhLm11bHRpcGxlUXVhbnRpdHkgIT09IDApIHtcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ211bHRpcGxlLXF1YW50aXR5LXJlcXVpcmVkJywge1xuXHRcdFx0XHRcdG11bHRpcGxlOiBhc29jaWF0ZWREYXRhLm11bHRpcGxlUXVhbnRpdHksXG5cdFx0XHRcdFx0Y3VycmVudDogYWN0dWFsUXVhbnRpdHkgKyBxdWFudGl0eVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZVxuXHR9XG5cblx0cHJpdmF0ZSB2YWxpZGF0ZVByaWNlQW5kQ3JlZGl0cyA9IChwcmljZTogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG5cdFx0aWYgKHRoaXMuX2JhbGFuY2VDdXN0b21lciA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2JhbGFuY2VDdXN0b21lci5hbGxvd0FueVBheW1lbnRNZXRob2QpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9iYWxhbmNlQ3VzdG9tZXIucmVtYWluaW5nQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKHByaWNlID4gdGhpcy5fYmFsYW5jZUN1c3RvbWVyLnJlbWFpbmluZ0NyZWRpdHMpIHtcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdub3QtZW5vdWdoLWNyZWRpdHMnKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fTtcbn1cbiJdfQ==