@colijnit/transaction 12.1.129 → 12.1.131

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 (219) hide show
  1. package/bundles/colijnit-transaction.umd.js +2273 -628
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.d.ts +378 -365
  4. package/colijnit-transaction.metadata.json +1 -1
  5. package/esm2015/colijnit-transaction.js +379 -366
  6. package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +2 -2
  7. package/esm2015/lib/component/core/base/components/transaction-header-block/transaction-header-block.component.js +6 -3
  8. package/esm2015/lib/component/core/base/dialog-transaction-base.component.js +5 -3
  9. package/esm2015/lib/component/core/base/transaction-base.component.js +6 -2
  10. package/esm2015/lib/component/core/core.module.js +1 -1
  11. package/esm2015/lib/component/deposit-payment/deposit-payment.component.js +17 -5
  12. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-transaction-line-warehouse-cc.component.js +7 -2
  13. package/esm2015/lib/component/discount/discount.component.js +110 -0
  14. package/esm2015/lib/component/discount/discount.module.js +29 -0
  15. package/esm2015/lib/component/payment/payment.component.js +57 -38
  16. package/esm2015/lib/component/payment/payment.module.js +4 -2
  17. package/esm2015/lib/component/payment-to-pay/payment-to-pay.component.js +26 -0
  18. package/esm2015/lib/component/payment-to-pay/payment-to-pay.module.js +21 -0
  19. package/esm2015/lib/component/relation/relation-address/relation-address.module.js +7 -7
  20. package/esm2015/lib/component/relation/relation-address-select/relation-address-select.component.js +8 -8
  21. package/esm2015/lib/component/relation/relation-general/relation-general.component.js +14 -17
  22. package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.module.js +10 -10
  23. package/esm2015/lib/component/transaction/transaction.component.js +7 -4
  24. package/esm2015/lib/component/transaction/transaction.module.js +4 -2
  25. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-overview-button-bar-button.component.js +37 -0
  26. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-picking-button-bar-button.component.js +13 -4
  27. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.component.js +2 -1
  28. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.module.js +6 -3
  29. package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/transaction-cash-register-dialog.component.js +177 -0
  30. package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/transaction-cash-register-dialog.module.js +27 -0
  31. package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.component.js +83 -0
  32. package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.module.js +24 -0
  33. package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order.component.js +177 -0
  34. package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order.module.js +41 -0
  35. package/esm2015/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.js +3 -2
  36. package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.js +11 -2
  37. package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-base.component.js +17 -9
  38. package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-payment.component.js +97 -4
  39. package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-relation.component.js +49 -20
  40. package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup.component.js +8 -2
  41. package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup.module.js +11 -3
  42. package/esm2015/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.js +20 -3
  43. package/esm2015/lib/component/transaction-header-fields/transaction-header-administrative-relation.module.js +5 -5
  44. package/esm2015/lib/component/transaction-header-fields/transaction-header-amount-to-settle.component.js +55 -0
  45. package/esm2015/lib/component/transaction-header-fields/transaction-header-amount-to-settle.module.js +24 -0
  46. package/esm2015/lib/component/transaction-header-fields/transaction-header-branch.component.js +4 -4
  47. package/esm2015/lib/component/transaction-header-fields/transaction-header-branch.module.js +1 -1
  48. package/esm2015/lib/component/transaction-header-fields/transaction-header-currency.module.js +1 -1
  49. package/esm2015/lib/component/transaction-header-fields/transaction-header-deposit-amount.component.js +24 -3
  50. package/esm2015/lib/component/transaction-header-fields/transaction-header-divide-evenly.component.js +38 -0
  51. package/esm2015/lib/component/transaction-header-fields/transaction-header-divide-evenly.module.js +25 -0
  52. package/esm2015/lib/component/transaction-header-fields/transaction-header-marketing.module.js +6 -6
  53. package/esm2015/lib/component/transaction-header-fields/transaction-header-payment-button/transaction-header-payment-button.component.js +14 -3
  54. package/esm2015/lib/component/transaction-header-fields/transaction-header-payment-condition.module.js +1 -1
  55. package/esm2015/lib/component/transaction-header-fields/transaction-header-price-kind.module.js +1 -1
  56. package/esm2015/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.component.js +52 -0
  57. package/esm2015/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.module.js +36 -0
  58. package/esm2015/lib/component/transaction-line/transaction-picked-line/transaction-picked-line.component.js +2 -2
  59. package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line-base.component.js +12 -4
  60. package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line.component.js +2 -2
  61. package/esm2015/lib/component/transaction-line-fields/transaction-line-amount.component.js +6 -1
  62. package/esm2015/lib/component/transaction-line-fields/transaction-line-drop-shipment-button.component.js +2 -2
  63. package/esm2015/lib/component/transaction-line-fields/transaction-line-price-list.module.js +7 -7
  64. package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-button.component.js +2 -2
  65. package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-delivery-date-button.component.js +2 -2
  66. package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier.module.js +6 -6
  67. package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.module.js +8 -8
  68. package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.js +2 -2
  69. package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.module.js +6 -6
  70. package/esm2015/lib/component/transaction-line-purchase-confirmation/transaction-line-purchase-confirmation.component.js +8 -8
  71. package/esm2015/lib/component/transaction-line-side-panel-article-details/transaction-line-side-panel-article-details.component.js +5 -5
  72. package/esm2015/lib/component/transaction-line-side-panel-article-details/transaction-line-side-panel-article-details.module.js +6 -6
  73. package/esm2015/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.module.js +23 -23
  74. package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-picked/transaction-line-side-panel-picked.component.js +13 -14
  75. package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-to-be-picked/transaction-line-side-panel-to-be-picked.component.js +13 -14
  76. package/esm2015/lib/component/transaction-lines/transaction-lines.component.js +21 -1
  77. package/esm2015/lib/component/transaction-lines/transaction-lines.module.js +9 -9
  78. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.js +23 -15
  79. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.component.js +6 -2
  80. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.js +18 -15
  81. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-picked/transaction-quick-access-picked.component.js +2 -2
  82. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.module.js +8 -8
  83. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.module.js +8 -8
  84. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.js +6 -6
  85. package/esm2015/lib/enum/icon.enum.js +7 -1
  86. package/esm2015/lib/enum/order-discount-type.enum.js +7 -0
  87. package/esm2015/lib/enum/transaction-type-category.enum.js +2 -1
  88. package/esm2015/lib/model/icon-svg.js +7 -1
  89. package/esm2015/lib/model/payment-transaction-view-model.js +3 -0
  90. package/esm2015/lib/res/dictionary/dictionaries.js +3 -3
  91. package/esm2015/lib/service/article-connector.service.js +9 -9
  92. package/esm2015/lib/service/dialog.service.js +14 -10
  93. package/esm2015/lib/service/error.service.js +15 -8
  94. package/esm2015/lib/service/payment.service.js +24 -5
  95. package/esm2015/lib/service/pending-reason.service.js +2 -2
  96. package/esm2015/lib/service/relation-connector.service.js +11 -11
  97. package/esm2015/lib/service/shared-connector.service.js +5 -5
  98. package/esm2015/lib/service/transaction-base.service.js +23 -5
  99. package/esm2015/lib/service/transaction-connector-adapter.service.js +195 -6
  100. package/esm2015/lib/service/transaction-connector.service.js +65 -2
  101. package/esm2015/lib/service/transaction-event.service.js +8 -2
  102. package/esm2015/lib/service/transaction-mapping.service.js +6 -3
  103. package/esm2015/lib/service/transaction.service.js +128 -12
  104. package/esm2015/lib/transaction-version.js +3 -3
  105. package/esm2015/public_api.js +3 -1
  106. package/fesm2015/colijnit-transaction.js +1700 -214
  107. package/fesm2015/colijnit-transaction.js.map +1 -1
  108. package/lib/component/checkout/checkout-overview-relation-edit/style/_layout.scss +9 -0
  109. package/lib/component/checkout/checkout-overview-relation-edit/style/_material-definition.scss +4 -1
  110. package/lib/component/checkout/checkout-overview-relation-edit/style/_theme.scss +3 -0
  111. package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/_layout.scss +9 -0
  112. package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/_material-definition.scss +4 -1
  113. package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/_theme.scss +3 -0
  114. package/lib/component/checkout-simple/style/_theme.scss +1 -1
  115. package/lib/component/confirmation-dialog/style/material.scss +1 -1
  116. package/lib/component/core/base/transaction-base.component.d.ts +3 -1
  117. package/lib/component/deposit-payment/deposit-payment.component.d.ts +9 -3
  118. package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-transaction-line-warehouse-cc.component.d.ts +1 -0
  119. package/lib/component/discount/discount.component.d.ts +19 -0
  120. package/lib/component/discount/discount.module.d.ts +2 -0
  121. package/lib/component/discount/style/_layout.scss +0 -0
  122. package/lib/component/discount/style/_material-definition.scss +0 -0
  123. package/lib/component/discount/style/_theme.scss +0 -0
  124. package/lib/component/discount/style/material.scss +0 -0
  125. package/lib/component/payment/payment.component.d.ts +14 -6
  126. package/lib/component/payment/style/_layout.scss +5 -0
  127. package/lib/component/payment/style/_material-definition.scss +3 -6
  128. package/lib/component/payment/style/_theme.scss +0 -24
  129. package/lib/component/payment/style/material.scss +1 -0
  130. package/lib/component/payment-to-pay/payment-to-pay.component.d.ts +4 -0
  131. package/lib/component/payment-to-pay/payment-to-pay.module.d.ts +2 -0
  132. package/lib/component/payment-to-pay/style/_layout.scss +26 -0
  133. package/lib/component/payment-to-pay/style/_material-definition.scss +6 -0
  134. package/lib/component/payment-to-pay/style/_theme.scss +9 -0
  135. package/lib/component/payment-to-pay/style/material.scss +4 -0
  136. package/lib/component/quick-send-button/style/_layout.scss +24 -0
  137. package/lib/component/quick-send-button/style/_material-definition.scss +2 -0
  138. package/lib/component/relation/relation-address-select/relation-address-select.component.d.ts +5 -5
  139. package/lib/component/relation/relation-general/relation-general.component.d.ts +8 -10
  140. package/lib/component/tile/style/_layout.scss +4 -0
  141. package/lib/component/transaction/transaction.component.d.ts +3 -1
  142. package/lib/component/transaction-button-bar/style/_layout.scss +2 -1
  143. package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-overview-button-bar-button.component.d.ts +12 -0
  144. package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-picking-button-bar-button.component.d.ts +3 -1
  145. package/lib/component/transaction-cash-register-order/style/_layout.scss +129 -0
  146. package/lib/component/transaction-cash-register-order/style/_material-definition.scss +0 -0
  147. package/lib/component/transaction-cash-register-order/style/_theme.scss +4 -0
  148. package/lib/component/transaction-cash-register-order/style/material.scss +7 -0
  149. package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/style/_layout.scss +28 -0
  150. package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/style/_material-definition.scss +0 -0
  151. package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/style/_theme.scss +4 -0
  152. package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/style/material.scss +4 -0
  153. package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/transaction-cash-register-dialog.component.d.ts +34 -0
  154. package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/transaction-cash-register-dialog.module.d.ts +2 -0
  155. package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/style/_layout.scss +37 -0
  156. package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/style/_material-definition.scss +0 -0
  157. package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/style/_theme.scss +4 -0
  158. package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/style/material.scss +5 -0
  159. package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.component.d.ts +17 -0
  160. package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.module.d.ts +2 -0
  161. package/lib/component/transaction-cash-register-order/transaction-cash-register-order.component.d.ts +41 -0
  162. package/lib/component/transaction-cash-register-order/transaction-cash-register-order.module.d.ts +2 -0
  163. package/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.d.ts +5 -2
  164. package/lib/component/transaction-header/transaction-header-popup/style/_layout.scss +49 -0
  165. package/lib/component/transaction-header/transaction-header-popup/style/_material-definition.scss +5 -0
  166. package/lib/component/transaction-header/transaction-header-popup/style/_theme.scss +10 -0
  167. package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-base.component.d.ts +2 -2
  168. package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-payment.component.d.ts +32 -1
  169. package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-relation.component.d.ts +4 -2
  170. package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup.component.d.ts +1 -0
  171. package/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.d.ts +5 -0
  172. package/lib/component/transaction-header-fields/transaction-header-amount-to-settle.component.d.ts +8 -0
  173. package/lib/component/transaction-header-fields/transaction-header-amount-to-settle.module.d.ts +2 -0
  174. package/lib/component/transaction-header-fields/transaction-header-branch.component.d.ts +2 -3
  175. package/lib/component/transaction-header-fields/transaction-header-deposit-amount.component.d.ts +6 -0
  176. package/lib/component/transaction-header-fields/transaction-header-divide-evenly.component.d.ts +5 -0
  177. package/lib/component/transaction-header-fields/transaction-header-divide-evenly.module.d.ts +2 -0
  178. package/lib/component/transaction-header-fields/transaction-header-payment-button/transaction-header-payment-button.component.d.ts +7 -3
  179. package/lib/component/transaction-line/transaction-cash-register-order-line/style/_layout.scss +21 -0
  180. package/lib/component/transaction-line/transaction-cash-register-order-line/style/_material-definition.scss +0 -0
  181. package/lib/component/transaction-line/transaction-cash-register-order-line/style/_theme.scss +4 -0
  182. package/lib/component/transaction-line/transaction-cash-register-order-line/style/material.scss +4 -0
  183. package/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.component.d.ts +4 -0
  184. package/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.module.d.ts +2 -0
  185. package/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line-base.component.d.ts +1 -1
  186. package/lib/component/transaction-line-action-buttons/style/_layout.scss +1 -0
  187. package/lib/component/transaction-line-fields/transaction-line-amount.component.d.ts +1 -0
  188. package/lib/component/transaction-line-fields/transaction-line-drop-shipment-button.component.d.ts +1 -1
  189. package/lib/component/transaction-line-fields/transaction-line-supplier-button.component.d.ts +1 -1
  190. package/lib/component/transaction-line-fields/transaction-line-supplier-delivery-date-button.component.d.ts +1 -1
  191. package/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.d.ts +1 -1
  192. package/lib/component/transaction-line-side-panel-article-details/transaction-line-side-panel-article-details.component.d.ts +4 -4
  193. package/lib/component/transaction-lines/style/material.scss +1 -0
  194. package/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.d.ts +1 -1
  195. package/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/style/_layout.scss +1 -1
  196. package/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.component.d.ts +1 -0
  197. package/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.d.ts +13 -13
  198. package/lib/component/transaction-quick-access/transaction-quick-access-received-goods/style/_layout.scss +1 -1
  199. package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.d.ts +2 -2
  200. package/lib/enum/icon.enum.d.ts +6 -0
  201. package/lib/enum/order-discount-type.enum.d.ts +5 -0
  202. package/lib/enum/transaction-type-category.enum.d.ts +2 -1
  203. package/lib/model/payment-transaction-view-model.d.ts +12 -0
  204. package/lib/res/dictionary/dictionaries.d.ts +41 -2
  205. package/lib/service/article-connector.service.d.ts +8 -8
  206. package/lib/service/dialog.service.d.ts +6 -4
  207. package/lib/service/error.service.d.ts +3 -4
  208. package/lib/service/payment.service.d.ts +7 -2
  209. package/lib/service/relation-connector.service.d.ts +11 -11
  210. package/lib/service/shared-connector.service.d.ts +3 -3
  211. package/lib/service/transaction-base.service.d.ts +4 -1
  212. package/lib/service/transaction-connector-adapter.service.d.ts +43 -19
  213. package/lib/service/transaction-connector.service.d.ts +40 -19
  214. package/lib/service/transaction-event.service.d.ts +11 -1
  215. package/lib/service/transaction.service.d.ts +39 -17
  216. package/lib/style/_variables.scss +2 -3
  217. package/lib/style/transaction-globals.scss +11 -0
  218. package/package.json +5 -5
  219. package/public_api.d.ts +2 -0
@@ -7,6 +7,7 @@ export class DialogTransactionLineWarehouseCcComponent extends DialogTransaction
7
7
  super(...arguments);
8
8
  this.transactionKind = TransactionKind.SalesOrder;
9
9
  this.quantity = 1;
10
+ this.decimals = 0;
10
11
  }
11
12
  showClass() {
12
13
  return true;
@@ -37,6 +38,9 @@ export class DialogTransactionLineWarehouseCcComponent extends DialogTransaction
37
38
  this.quantity = this.transactionLine.amount;
38
39
  this.commissionCode = this.transactionLine.commissionCode;
39
40
  this.warehouse = this.transactionLine.warehouseNumber;
41
+ if (this.transactionLine.salesUnitDecimals) {
42
+ this.decimals = this.transactionLine.salesUnitDecimals;
43
+ }
40
44
  }
41
45
  }
42
46
  DialogTransactionLineWarehouseCcComponent.decorators = [
@@ -51,6 +55,7 @@ DialogTransactionLineWarehouseCcComponent.decorators = [
51
55
  <div class="transaction-line-warehouse-cc-section">
52
56
  <co-input-number-picker class="quantity-number-picker"
53
57
  [(model)]="quantity" [min]="1"
58
+ [decimals]="decimals"
54
59
  [leftIconData]="iconCacheService.getIcon(icons.CartShoppingRegular)"
55
60
  (modelChange)="handleQuantityChange($event)"></co-input-number-picker>
56
61
  </div>
@@ -76,7 +81,7 @@ DialogTransactionLineWarehouseCcComponent.decorators = [
76
81
  </ng-template>
77
82
  <ng-template #footerTemplate>
78
83
  <div class="co-dialog-footer-button-wrapper">
79
- <co-button [label]="'OK' | localize" (click)="handleOkClick()"></co-button>
84
+ <co-button class="co-dialog-footer-button-submit" [iconData]="iconCacheService.getIcon(icons.CheckDialog)" (click)="handleOkClick()"></co-button>
80
85
  </div>
81
86
  </ng-template>
82
87
  `,
@@ -87,4 +92,4 @@ DialogTransactionLineWarehouseCcComponent.propDecorators = {
87
92
  transactionKind: [{ type: Input }],
88
93
  showClass: [{ type: HostBinding, args: ["class.co-dialog-transaction-line-warehouse-cc",] }]
89
94
  };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlLWNjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L2RpYWxvZy90cmFuc2FjdGlvbi1saW5lL2RpYWxvZy10cmFuc2FjdGlvbi1saW5lLXdhcmVob3VzZS1jYy9kaWFsb2ctdHJhbnNhY3Rpb24tbGluZS13YXJlaG91c2UtY2MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUE0QzFGLE1BQU0sT0FBTyx5Q0FBMEMsU0FBUSw4QkFBOEI7SUExQzdGOztRQTZDUyxvQkFBZSxHQUFvQixlQUFlLENBQUMsVUFBVSxDQUFDO1FBTzlELGFBQVEsR0FBVyxDQUFDLENBQUM7SUFvQzlCLENBQUM7SUF4Q1EsU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQU1NLG9CQUFvQixDQUFDLEtBQVU7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLDBCQUEwQixDQUFDLEtBQVU7UUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVNLHFCQUFxQixDQUFDLEtBQVU7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsTUFBTSxNQUFNLEdBQUc7WUFDYixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUztTQUM1QixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUF3QjtRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUM7UUFDMUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQztJQUN4RCxDQUFDOzs7WUF2RkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx5Q0FBeUM7Z0JBQ25ELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7OzhCQUdFLEtBQUs7d0JBR0wsV0FBVyxTQUFDLCtDQUErQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBcHBQb3B1cEJ1dHRvblR5cGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvZW51bS9hcHAtcG9wdXAtYnV0dG9uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7RGlhbG9nVHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9jb3JlL2Jhc2UvZGlhbG9nLXRyYW5zYWN0aW9uLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1kaWFsb2ctdHJhbnNhY3Rpb24tbGluZS13YXJlaG91c2UtY2NcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGNvLWRpYWxvZ1xyXG4gICAgICBbY3VzdG9tQ3NzQ2xhc3NdPVwiJ2NvLXNtYWxsLXNjcm9sbGJhcidcIlxyXG4gICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiZGlhbG9nSGVhZGVyXCJcclxuICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgKGNsb3NlQ2xpY2spPVwiaGFuZGxlQ2xvc2VEaWFsb2coJGV2ZW50LCBidXR0b25UeXBlLkNhbmNlbClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlLWNjLXNlY3Rpb25cIj5cclxuICAgICAgICA8Y28taW5wdXQtbnVtYmVyLXBpY2tlciBjbGFzcz1cInF1YW50aXR5LW51bWJlci1waWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInF1YW50aXR5XCIgW21pbl09XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVmdEljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DYXJ0U2hvcHBpbmdSZWd1bGFyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVF1YW50aXR5Q2hhbmdlKCRldmVudClcIj48L2NvLWlucHV0LW51bWJlci1waWNrZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS13YXJlaG91c2UtY2Mtc2VjdGlvblwiICpuZ0lmPVwidHJhbnNhY3Rpb25LaW5kICE9PSB0cmFuc0tpbmQuUHVyY2hhc2VPcmRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLXdhcmVob3VzZS1jYy1zZWN0aW9uLWxhYmVsXCIgW3RleHRDb250ZW50XT1cIidDT01NSVNTSU9OX0NPREUnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tbGluZS1jb21taXNzaW9uLWNvZGVcclxuICAgICAgICAgIFt0cmFuc2FjdGlvbkxpbmVdPVwidHJhbnNhY3Rpb25MaW5lXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJjb21taXNzaW9uQ29kZVwiXHJcbiAgICAgICAgICBbdXNlTW9kZWxdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUNvbW1pc3Npb25Db2RlQ2hhbmdlKCRldmVudClcIj48L2NvLXRyYW5zYWN0aW9uLWxpbmUtY29tbWlzc2lvbi1jb2RlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlLWNjLXNlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS13YXJlaG91c2UtY2Mtc2VjdGlvbi1sYWJlbFwiIFt0ZXh0Q29udGVudF09XCInV0FSRUhPVVNFJyB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlXHJcbiAgICAgICAgICBbdHJhbnNhY3Rpb25MaW5lXT1cInRyYW5zYWN0aW9uTGluZVwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwid2FyZWhvdXNlXCJcclxuICAgICAgICAgIFt1c2VNb2RlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlV2FyZWhvdXNlQ2hhbmdlKCRldmVudClcIj48L2NvLXRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvY28tZGlhbG9nPlxyXG4gICAgPG5nLXRlbXBsYXRlICNkaWFsb2dIZWFkZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctaGVhZGVyLXRpdGxlXCIgW3RleHRDb250ZW50XT1cIidDT01NSVNTSU9OX0NPREVfV0FSRUhPVVNFX1NFTEVDVElPTicgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctZm9vdGVyLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ09LJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cImhhbmRsZU9rQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2VDY0NvbXBvbmVudCBleHRlbmRzIERpYWxvZ1RyYW5zYWN0aW9uQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uS2luZDogVHJhbnNhY3Rpb25LaW5kID0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXI7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWRpYWxvZy10cmFuc2FjdGlvbi1saW5lLXdhcmVob3VzZS1jY1wiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBxdWFudGl0eTogbnVtYmVyID0gMTtcclxuICBwdWJsaWMgY29tbWlzc2lvbkNvZGU6IHN0cmluZztcclxuICBwdWJsaWMgd2FyZWhvdXNlOiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVRdWFudGl0eUNoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnF1YW50aXR5ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ29tbWlzc2lvbkNvZGVDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb21taXNzaW9uQ29kZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVdhcmVob3VzZUNoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLndhcmVob3VzZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU9rQ2xpY2soKTogdm9pZCB7XHJcbiAgICBjb25zdCBvdXRwdXQgPSB7XHJcbiAgICAgIHF1YW50aXR5OiB0aGlzLnF1YW50aXR5LFxyXG4gICAgICBjb21taXNzaW9uQ29kZTogdGhpcy5jb21taXNzaW9uQ29kZSxcclxuICAgICAgd2FyZWhvdXNlTnI6IHRoaXMud2FyZWhvdXNlLFxyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNsb3NlKEFwcFBvcHVwQnV0dG9uVHlwZS5Paywgb3V0cHV0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDbG9zZSh0eXBlOiBBcHBQb3B1cEJ1dHRvblR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xyXG4gICAgdGhpcy5vbkNsb3NlKHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHRyYW5zYWN0aW9uTGluZVNldCgpIHtcclxuICAgIHN1cGVyLnRyYW5zYWN0aW9uTGluZVNldCgpO1xyXG4gICAgdGhpcy5xdWFudGl0eSA9IHRoaXMudHJhbnNhY3Rpb25MaW5lLmFtb3VudDtcclxuICAgIHRoaXMuY29tbWlzc2lvbkNvZGUgPSB0aGlzLnRyYW5zYWN0aW9uTGluZS5jb21taXNzaW9uQ29kZTtcclxuICAgIHRoaXMud2FyZWhvdXNlID0gdGhpcy50cmFuc2FjdGlvbkxpbmUud2FyZWhvdXNlTnVtYmVyO1xyXG4gIH1cclxufVxyXG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlLWNjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L2RpYWxvZy90cmFuc2FjdGlvbi1saW5lL2RpYWxvZy10cmFuc2FjdGlvbi1saW5lLXdhcmVob3VzZS1jYy9kaWFsb2ctdHJhbnNhY3Rpb24tbGluZS13YXJlaG91c2UtY2MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUE2QzFGLE1BQU0sT0FBTyx5Q0FBMEMsU0FBUSw4QkFBOEI7SUEzQzdGOztRQThDUyxvQkFBZSxHQUFvQixlQUFlLENBQUMsVUFBVSxDQUFDO1FBTzlELGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsYUFBUSxHQUFXLENBQUMsQ0FBQztJQXVDOUIsQ0FBQztJQTVDUSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBT00sb0JBQW9CLENBQUMsS0FBVTtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sMEJBQTBCLENBQUMsS0FBVTtRQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRU0scUJBQXFCLENBQUMsS0FBVTtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRU0sYUFBYTtRQUNsQixNQUFNLE1BQU0sR0FBRztZQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzVCLENBQUE7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQXdCO1FBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFDNUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQztRQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUM7U0FDeEQ7SUFDSCxDQUFDOzs7WUE1RkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx5Q0FBeUM7Z0JBQ25ELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7Ozs4QkFHRSxLQUFLO3dCQUdMLFdBQVcsU0FBQywrQ0FBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QXBwUG9wdXBCdXR0b25UeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vYXBwLXBvcHVwLWJ1dHRvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQge0RpYWxvZ1RyYW5zYWN0aW9uQmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vY29yZS9iYXNlL2RpYWxvZy10cmFuc2FjdGlvbi1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tZGlhbG9nLXRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlLWNjXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1kaWFsb2dcclxuICAgICAgW2N1c3RvbUNzc0NsYXNzXT1cIidjby1zbWFsbC1zY3JvbGxiYXInXCJcclxuICAgICAgW2hlYWRlclRlbXBsYXRlXT1cImRpYWxvZ0hlYWRlclwiXHJcbiAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgIChjbG9zZUNsaWNrKT1cImhhbmRsZUNsb3NlRGlhbG9nKCRldmVudCwgYnV0dG9uVHlwZS5DYW5jZWwpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLXdhcmVob3VzZS1jYy1zZWN0aW9uXCI+XHJcbiAgICAgICAgPGNvLWlucHV0LW51bWJlci1waWNrZXIgY2xhc3M9XCJxdWFudGl0eS1udW1iZXItcGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJxdWFudGl0eVwiIFttaW5dPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlY2ltYWxzXT1cImRlY2ltYWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVmdEljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DYXJ0U2hvcHBpbmdSZWd1bGFyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVF1YW50aXR5Q2hhbmdlKCRldmVudClcIj48L2NvLWlucHV0LW51bWJlci1waWNrZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS13YXJlaG91c2UtY2Mtc2VjdGlvblwiICpuZ0lmPVwidHJhbnNhY3Rpb25LaW5kICE9PSB0cmFuc0tpbmQuUHVyY2hhc2VPcmRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLXdhcmVob3VzZS1jYy1zZWN0aW9uLWxhYmVsXCIgW3RleHRDb250ZW50XT1cIidDT01NSVNTSU9OX0NPREUnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tbGluZS1jb21taXNzaW9uLWNvZGVcclxuICAgICAgICAgIFt0cmFuc2FjdGlvbkxpbmVdPVwidHJhbnNhY3Rpb25MaW5lXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJjb21taXNzaW9uQ29kZVwiXHJcbiAgICAgICAgICBbdXNlTW9kZWxdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUNvbW1pc3Npb25Db2RlQ2hhbmdlKCRldmVudClcIj48L2NvLXRyYW5zYWN0aW9uLWxpbmUtY29tbWlzc2lvbi1jb2RlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlLWNjLXNlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS13YXJlaG91c2UtY2Mtc2VjdGlvbi1sYWJlbFwiIFt0ZXh0Q29udGVudF09XCInV0FSRUhPVVNFJyB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlXHJcbiAgICAgICAgICBbdHJhbnNhY3Rpb25MaW5lXT1cInRyYW5zYWN0aW9uTGluZVwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwid2FyZWhvdXNlXCJcclxuICAgICAgICAgIFt1c2VNb2RlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlV2FyZWhvdXNlQ2hhbmdlKCRldmVudClcIj48L2NvLXRyYW5zYWN0aW9uLWxpbmUtd2FyZWhvdXNlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvY28tZGlhbG9nPlxyXG4gICAgPG5nLXRlbXBsYXRlICNkaWFsb2dIZWFkZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctaGVhZGVyLXRpdGxlXCIgW3RleHRDb250ZW50XT1cIidDT01NSVNTSU9OX0NPREVfV0FSRUhPVVNFX1NFTEVDVElPTicgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctZm9vdGVyLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cImNvLWRpYWxvZy1mb290ZXItYnV0dG9uLXN1Ym1pdFwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2hlY2tEaWFsb2cpXCIgKGNsaWNrKT1cImhhbmRsZU9rQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2VDY0NvbXBvbmVudCBleHRlbmRzIERpYWxvZ1RyYW5zYWN0aW9uQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uS2luZDogVHJhbnNhY3Rpb25LaW5kID0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXI7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWRpYWxvZy10cmFuc2FjdGlvbi1saW5lLXdhcmVob3VzZS1jY1wiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBxdWFudGl0eTogbnVtYmVyID0gMTtcclxuICBwdWJsaWMgZGVjaW1hbHM6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGNvbW1pc3Npb25Db2RlOiBzdHJpbmc7XHJcbiAgcHVibGljIHdhcmVob3VzZTogbnVtYmVyO1xyXG5cclxuICBwdWJsaWMgaGFuZGxlUXVhbnRpdHlDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5xdWFudGl0eSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNvbW1pc3Npb25Db2RlQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY29tbWlzc2lvbkNvZGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVXYXJlaG91c2VDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy53YXJlaG91c2UgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVPa0NsaWNrKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgb3V0cHV0ID0ge1xyXG4gICAgICBxdWFudGl0eTogdGhpcy5xdWFudGl0eSxcclxuICAgICAgY29tbWlzc2lvbkNvZGU6IHRoaXMuY29tbWlzc2lvbkNvZGUsXHJcbiAgICAgIHdhcmVob3VzZU5yOiB0aGlzLndhcmVob3VzZSxcclxuICAgIH1cclxuICAgIHRoaXMub25DbG9zZShBcHBQb3B1cEJ1dHRvblR5cGUuT2ssIG91dHB1dCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2xvc2UodHlwZTogQXBwUG9wdXBCdXR0b25UeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb3NlLmVtaXQoKTtcclxuICAgIHRoaXMub25DbG9zZSh0eXBlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0cmFuc2FjdGlvbkxpbmVTZXQoKSB7XHJcbiAgICBzdXBlci50cmFuc2FjdGlvbkxpbmVTZXQoKTtcclxuICAgIHRoaXMucXVhbnRpdHkgPSB0aGlzLnRyYW5zYWN0aW9uTGluZS5hbW91bnQ7XHJcbiAgICB0aGlzLmNvbW1pc3Npb25Db2RlID0gdGhpcy50cmFuc2FjdGlvbkxpbmUuY29tbWlzc2lvbkNvZGU7XHJcbiAgICB0aGlzLndhcmVob3VzZSA9IHRoaXMudHJhbnNhY3Rpb25MaW5lLndhcmVob3VzZU51bWJlcjtcclxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uTGluZS5zYWxlc1VuaXREZWNpbWFscykge1xyXG4gICAgICB0aGlzLmRlY2ltYWxzID0gdGhpcy50cmFuc2FjdGlvbkxpbmUuc2FsZXNVbml0RGVjaW1hbHM7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,110 @@
1
+ import { Component, HostBinding, ViewEncapsulation } from "@angular/core";
2
+ import { DictionaryService } from "../../service/dictionary.service";
3
+ import { OrderDiscountType } from "../../enum/order-discount-type.enum";
4
+ export class DiscountComponent {
5
+ constructor(_dictionary) {
6
+ this._dictionary = _dictionary;
7
+ this.orderDiscountType = OrderDiscountType;
8
+ this.showDiscountsSidebar = false;
9
+ }
10
+ showClass() {
11
+ return true;
12
+ }
13
+ addDiscount() {
14
+ // TODO
15
+ // this.transactionDiscountPercentage = this.service.currentTransaction.transactionDiscountPercentage;
16
+ // this.transactionDiscountAmount = this.service.currentTransaction.transactionDiscountAmount;
17
+ // this.transactionTotal = undefined;
18
+ }
19
+ onStartDiscountInput(discountType, header) {
20
+ this.discountType = discountType;
21
+ this.discountHeader = header;
22
+ this.inputDiscounts = true;
23
+ }
24
+ setDiscountHeader(discountType) {
25
+ switch (this.discountType) {
26
+ case OrderDiscountType.DiscountPercentage:
27
+ this.discountHeader = this._dictionary.get("DISCOUNT_PERCENTAGE", true);
28
+ break;
29
+ case OrderDiscountType.DiscountAmount:
30
+ this.discountHeader = this._dictionary.get("DISCOUNT_AMOUNT", true);
31
+ break;
32
+ case OrderDiscountType.OrderTotal:
33
+ this.discountHeader = this._dictionary.get("ORDER_TOTAL", true);
34
+ break;
35
+ }
36
+ }
37
+ onInputDiscountsOkClick() {
38
+ let valueToUse;
39
+ switch (this.discountType) {
40
+ case OrderDiscountType.DiscountPercentage:
41
+ valueToUse = this.transactionDiscountPercentage;
42
+ break;
43
+ case OrderDiscountType.DiscountAmount:
44
+ valueToUse = this.transactionDiscountAmount;
45
+ break;
46
+ case OrderDiscountType.OrderTotal:
47
+ valueToUse = this.transactionTotal;
48
+ break;
49
+ }
50
+ //TODO this.service.setTransactionDiscounts(this.service.currentTransaction.uuid, this.discountType, valueToUse);
51
+ this.inputDiscounts = false;
52
+ }
53
+ }
54
+ DiscountComponent.decorators = [
55
+ { type: Component, args: [{
56
+ selector: "co-discount",
57
+ template: `
58
+ <co-sidebar #discountsSidebar isOpen="false">
59
+ <div fxLayout="column" fxLayoutGap="10px">
60
+ <co-button class="rectangular" [label]="'TRANSACTION_DISCOUNT_PERC' | localize"
61
+ (click)="onStartDiscountInput(orderDiscountType.DiscountPercentage, 'TRANSACTION_DISCOUNT_PERC')"></co-button>
62
+ <co-button class="rectangular" [label]="'TRANSACTION_DISCOUNT'| localize"
63
+ (click)="onStartDiscountInput(orderDiscountType.DiscountAmount, 'TRANSACTION_DISCOUNT')"></co-button>
64
+ <co-button class="rectangular" [label]="'TRANSACTION_TOTAL'| localize"
65
+ (click)="onStartDiscountInput(orderDiscountType.OrderTotal, 'TRANSACTION_TOTAL')"></co-button>
66
+
67
+ </div>
68
+ </co-sidebar>
69
+ <co-dialog *ngIf="inputDiscounts" [headerTemplate]="headerTemplate" [footerTemplate]="footerTemplate">
70
+ <co-form>
71
+ <co-input-text
72
+ *ngIf="discountType === orderDiscountType.DiscountPercentage"
73
+ [type]="'number'"
74
+ [(model)]="transactionDiscountPercentage"
75
+ [placeholder]="'TRANSACTION_DISCOUNT_PERC' | localize"
76
+ ></co-input-text>
77
+ <co-input-text
78
+ *ngIf="discountType === orderDiscountType.DiscountAmount"
79
+ [type]="'number'"
80
+ [(model)]="transactionDiscountAmount"
81
+ [placeholder]="'TRANSACTION_DISCOUNT' | localize"
82
+ ></co-input-text>
83
+ <co-input-text
84
+ *ngIf="discountType === orderDiscountType.OrderTotal"
85
+ [type]="'number'"
86
+ [(model)]="transactionTotal"
87
+ [placeholder]="'TRANSACTION_TOTAL' | localize"
88
+ ></co-input-text>
89
+ </co-form>
90
+ </co-dialog>
91
+ <ng-template #headerTemplate>
92
+ <div class="co-dialog-header-title" [textContent]="discountHeader | localize"></div>
93
+ </ng-template>
94
+ <ng-template #footerTemplate>
95
+ <div fxLayout="row" fxLayoutGap="10px" fxLayoutAlign="end">
96
+ <co-button [label]="'CANCEL' | localize" (click)="inputDiscounts = false"></co-button>
97
+ <co-button [label]="'OK' | localize" (click)="onInputDiscountsOkClick()"></co-button>
98
+ </div>
99
+ </ng-template>
100
+ `,
101
+ encapsulation: ViewEncapsulation.None
102
+ },] }
103
+ ];
104
+ DiscountComponent.ctorParameters = () => [
105
+ { type: DictionaryService }
106
+ ];
107
+ DiscountComponent.propDecorators = {
108
+ showClass: [{ type: HostBinding, args: ["class.co-discount",] }]
109
+ };
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGlzY291bnQvZGlzY291bnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBa0R0RSxNQUFNLE9BQU8saUJBQWlCO0lBaUI1QixZQUNVLFdBQThCO1FBQTlCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQWpCeEIsc0JBQWlCLEdBQTZCLGlCQUFpQixDQUFDO1FBY3pFLHlCQUFvQixHQUFZLEtBQUssQ0FBQztJQUs3QyxDQUFDO0lBaEJNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFnQk0sV0FBVztRQUVoQixPQUFPO1FBQ1Asc0dBQXNHO1FBQ3RHLDhGQUE4RjtRQUM5RixxQ0FBcUM7SUFDdkMsQ0FBQztJQUVNLG9CQUFvQixDQUFDLFlBQStCLEVBQUUsTUFBYztRQUN6RSxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRU0saUJBQWlCLENBQUMsWUFBK0I7UUFDdEQsUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3pCLEtBQUssaUJBQWlCLENBQUMsa0JBQWtCO2dCQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN4RSxNQUFNO1lBQ1IsS0FBSyxpQkFBaUIsQ0FBQyxjQUFjO2dCQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwRSxNQUFNO1lBQ1IsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVO2dCQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDaEUsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVNLHVCQUF1QjtRQUM1QixJQUFJLFVBQWtCLENBQUM7UUFDdkIsUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3pCLEtBQUssaUJBQWlCLENBQUMsa0JBQWtCO2dCQUN2QyxVQUFVLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDO2dCQUNoRCxNQUFNO1lBQ1IsS0FBSyxpQkFBaUIsQ0FBQyxjQUFjO2dCQUNuQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDO2dCQUM1QyxNQUFNO1lBQ1IsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVO2dCQUMvQixVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUNuQyxNQUFNO1NBQ1Q7UUFDRCxpSEFBaUg7UUFDakgsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQzs7O1lBakhGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkNUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFsRE8saUJBQWlCOzs7d0JBc0R0QixXQUFXLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7T3JkZXJEaXNjb3VudFR5cGV9IGZyb20gXCIuLi8uLi9lbnVtL29yZGVyLWRpc2NvdW50LXR5cGUuZW51bVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tZGlzY291bnRcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGNvLXNpZGViYXIgI2Rpc2NvdW50c1NpZGViYXIgaXNPcGVuPVwiZmFsc2VcIj5cclxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxyXG4gICAgICAgIDxjby1idXR0b24gIGNsYXNzPVwicmVjdGFuZ3VsYXJcIiBbbGFiZWxdPVwiJ1RSQU5TQUNUSU9OX0RJU0NPVU5UX1BFUkMnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN0YXJ0RGlzY291bnRJbnB1dChvcmRlckRpc2NvdW50VHlwZS5EaXNjb3VudFBlcmNlbnRhZ2UsICdUUkFOU0FDVElPTl9ESVNDT1VOVF9QRVJDJylcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwicmVjdGFuZ3VsYXJcIiBbbGFiZWxdPVwiJ1RSQU5TQUNUSU9OX0RJU0NPVU5UJ3wgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3RhcnREaXNjb3VudElucHV0KG9yZGVyRGlzY291bnRUeXBlLkRpc2NvdW50QW1vdW50LCAnVFJBTlNBQ1RJT05fRElTQ09VTlQnKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJyZWN0YW5ndWxhclwiIFtsYWJlbF09XCInVFJBTlNBQ1RJT05fVE9UQUwnfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydERpc2NvdW50SW5wdXQob3JkZXJEaXNjb3VudFR5cGUuT3JkZXJUb3RhbCwgJ1RSQU5TQUNUSU9OX1RPVEFMJylcIj48L2NvLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9jby1zaWRlYmFyPlxyXG4gICAgPGNvLWRpYWxvZyAqbmdJZj1cImlucHV0RGlzY291bnRzXCIgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCIgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCI+XHJcbiAgICAgIDxjby1mb3JtPlxyXG4gICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAqbmdJZj1cImRpc2NvdW50VHlwZSA9PT0gb3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRQZXJjZW50YWdlXCJcclxuICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cInRyYW5zYWN0aW9uRGlzY291bnRQZXJjZW50YWdlXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVFJBTlNBQ1RJT05fRElTQ09VTlRfUEVSQycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgKm5nSWY9XCJkaXNjb3VudFR5cGUgPT09IG9yZGVyRGlzY291bnRUeXBlLkRpc2NvdW50QW1vdW50XCJcclxuICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cInRyYW5zYWN0aW9uRGlzY291bnRBbW91bnRcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidUUkFOU0FDVElPTl9ESVNDT1VOVCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgKm5nSWY9XCJkaXNjb3VudFR5cGUgPT09IG9yZGVyRGlzY291bnRUeXBlLk9yZGVyVG90YWxcIlxyXG4gICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxyXG4gICAgICAgICAgWyhtb2RlbCldPVwidHJhbnNhY3Rpb25Ub3RhbFwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1RSQU5TQUNUSU9OX1RPVEFMJyB8IGxvY2FsaXplXCJcclxuICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICA8L2NvLWZvcm0+XHJcbiAgICA8L2NvLWRpYWxvZz5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctaGVhZGVyLXRpdGxlXCIgW3RleHRDb250ZW50XT1cImRpc2NvdW50SGVhZGVyIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxjby1idXR0b24gW2xhYmVsXT1cIidDQU5DRUwnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwiaW5wdXREaXNjb3VudHMgPSBmYWxzZVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgIDxjby1idXR0b24gW2xhYmVsXT1cIidPSycgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJvbklucHV0RGlzY291bnRzT2tDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERpc2NvdW50Q29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgb3JkZXJEaXNjb3VudFR5cGU6IHR5cGVvZiBPcmRlckRpc2NvdW50VHlwZSA9IE9yZGVyRGlzY291bnRUeXBlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1kaXNjb3VudFwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkaXNjb3VudEhlYWRlcjogc3RyaW5nO1xyXG4gIHB1YmxpYyBpbnB1dERpc2NvdW50czogYm9vbGVhbjtcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25EaXNjb3VudEFtb3VudDogbnVtYmVyO1xyXG4gIHB1YmxpYyB0cmFuc2FjdGlvbkRpc2NvdW50UGVyY2VudGFnZTogbnVtYmVyO1xyXG4gIHB1YmxpYyB0cmFuc2FjdGlvblRvdGFsOiBudW1iZXI7XHJcbiAgcHVibGljIGRpc2NvdW50VHlwZTogT3JkZXJEaXNjb3VudFR5cGU7XHJcblxyXG4gIHB1YmxpYyBzaG93RGlzY291bnRzU2lkZWJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkRGlzY291bnQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gVE9ET1xyXG4gICAgLy8gdGhpcy50cmFuc2FjdGlvbkRpc2NvdW50UGVyY2VudGFnZSA9IHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25EaXNjb3VudFBlcmNlbnRhZ2U7XHJcbiAgICAvLyB0aGlzLnRyYW5zYWN0aW9uRGlzY291bnRBbW91bnQgPSB0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uRGlzY291bnRBbW91bnQ7XHJcbiAgICAvLyB0aGlzLnRyYW5zYWN0aW9uVG90YWwgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TdGFydERpc2NvdW50SW5wdXQoZGlzY291bnRUeXBlOiBPcmRlckRpc2NvdW50VHlwZSwgaGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY291bnRUeXBlID0gZGlzY291bnRUeXBlO1xyXG4gICAgdGhpcy5kaXNjb3VudEhlYWRlciA9IGhlYWRlcjtcclxuICAgIHRoaXMuaW5wdXREaXNjb3VudHMgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERpc2NvdW50SGVhZGVyKGRpc2NvdW50VHlwZTogT3JkZXJEaXNjb3VudFR5cGUpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAodGhpcy5kaXNjb3VudFR5cGUpIHtcclxuICAgICAgY2FzZSBPcmRlckRpc2NvdW50VHlwZS5EaXNjb3VudFBlcmNlbnRhZ2U6XHJcbiAgICAgICAgdGhpcy5kaXNjb3VudEhlYWRlciA9IHRoaXMuX2RpY3Rpb25hcnkuZ2V0KFwiRElTQ09VTlRfUEVSQ0VOVEFHRVwiLCB0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBPcmRlckRpc2NvdW50VHlwZS5EaXNjb3VudEFtb3VudDpcclxuICAgICAgICB0aGlzLmRpc2NvdW50SGVhZGVyID0gdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJESVNDT1VOVF9BTU9VTlRcIiwgdHJ1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgT3JkZXJEaXNjb3VudFR5cGUuT3JkZXJUb3RhbDpcclxuICAgICAgICB0aGlzLmRpc2NvdW50SGVhZGVyID0gdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJPUkRFUl9UT1RBTFwiLCB0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbklucHV0RGlzY291bnRzT2tDbGljaygpOiB2b2lkIHtcclxuICAgIGxldCB2YWx1ZVRvVXNlOiBudW1iZXI7XHJcbiAgICBzd2l0Y2ggKHRoaXMuZGlzY291bnRUeXBlKSB7XHJcbiAgICAgIGNhc2UgT3JkZXJEaXNjb3VudFR5cGUuRGlzY291bnRQZXJjZW50YWdlOlxyXG4gICAgICAgIHZhbHVlVG9Vc2UgPSB0aGlzLnRyYW5zYWN0aW9uRGlzY291bnRQZXJjZW50YWdlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE9yZGVyRGlzY291bnRUeXBlLkRpc2NvdW50QW1vdW50OlxyXG4gICAgICAgIHZhbHVlVG9Vc2UgPSB0aGlzLnRyYW5zYWN0aW9uRGlzY291bnRBbW91bnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgT3JkZXJEaXNjb3VudFR5cGUuT3JkZXJUb3RhbDpcclxuICAgICAgICB2YWx1ZVRvVXNlID0gdGhpcy50cmFuc2FjdGlvblRvdGFsO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgLy9UT0RPIHRoaXMuc2VydmljZS5zZXRUcmFuc2FjdGlvbkRpc2NvdW50cyh0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnV1aWQsIHRoaXMuZGlzY291bnRUeXBlLCB2YWx1ZVRvVXNlKTtcclxuICAgIHRoaXMuaW5wdXREaXNjb3VudHMgPSBmYWxzZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { CoreModule } from "../core/core.module";
4
+ import { DiscountComponent } from "./discount.component";
5
+ import { ButtonModule, CoDialogModule, CoSidebarModule, FormModule, InputTextModule } from "@colijnit/corecomponents_v12";
6
+ import { PipeModule } from "../../pipe/pipe.module";
7
+ export class DiscountModule {
8
+ }
9
+ DiscountModule.decorators = [
10
+ { type: NgModule, args: [{
11
+ imports: [
12
+ CommonModule,
13
+ CoreModule,
14
+ CoDialogModule,
15
+ FormModule,
16
+ InputTextModule,
17
+ ButtonModule,
18
+ CoSidebarModule,
19
+ PipeModule
20
+ ],
21
+ declarations: [
22
+ DiscountComponent
23
+ ],
24
+ exports: [
25
+ DiscountComponent
26
+ ]
27
+ },] }
28
+ ];
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY291bnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGlzY291bnQvZGlzY291bnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3hILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQW9CbEQsTUFBTSxPQUFPLGNBQWM7OztZQWxCMUIsUUFBUSxTQUFDO2dCQUNOLE9BQU8sRUFBRTtvQkFDTCxZQUFZO29CQUNaLFVBQVU7b0JBQ1YsY0FBYztvQkFDZCxVQUFVO29CQUNWLGVBQWU7b0JBQ2YsWUFBWTtvQkFDWixlQUFlO29CQUNmLFVBQVU7aUJBQ2I7Z0JBQ0gsWUFBWSxFQUFFO29CQUNaLGlCQUFpQjtpQkFDbEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLGlCQUFpQjtpQkFDbEI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7Q29yZU1vZHVsZX0gZnJvbSBcIi4uL2NvcmUvY29yZS5tb2R1bGVcIjtcclxuaW1wb3J0IHtEaXNjb3VudENvbXBvbmVudH0gZnJvbSBcIi4vZGlzY291bnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBDb0RpYWxvZ01vZHVsZSwgQ29TaWRlYmFyTW9kdWxlLCBGb3JtTW9kdWxlLCBJbnB1dFRleHRNb2R1bGV9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XHJcbmltcG9ydCB7UGlwZU1vZHVsZX0gZnJvbSBcIi4uLy4uL3BpcGUvcGlwZS5tb2R1bGVcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIENvcmVNb2R1bGUsXHJcbiAgICAgICAgQ29EaWFsb2dNb2R1bGUsXHJcbiAgICAgICAgRm9ybU1vZHVsZSxcclxuICAgICAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICAgICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIENvU2lkZWJhck1vZHVsZSxcclxuICAgICAgICBQaXBlTW9kdWxlXHJcbiAgICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgRGlzY291bnRDb21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIERpc2NvdW50Q29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlzY291bnRNb2R1bGUge31cclxuIl19
@@ -6,16 +6,19 @@ import { PaymentService } from '../../service/payment.service';
6
6
  import { SharedService } from '../../service/shared.service';
7
7
  import { DepositPaymentViewModel } from '../../model/deposit-payment-view-model';
8
8
  import { IonePaymentStatusCode } from '@colijnit/transactionapi/build/enum/ione-payment-status-code.enum';
9
+ import { TransactionKind } from "@colijnit/transactionapi/build/enum/transaction-kind.enum";
10
+ import { TransactionEventService } from '../../service/transaction-event.service';
9
11
  export class PaymentComponent {
10
- constructor(_transactionService, _sharedService, _paymentService) {
12
+ constructor(_transactionService, _sharedService, _paymentService, _transactionEventService) {
11
13
  this._transactionService = _transactionService;
12
14
  this._sharedService = _sharedService;
13
15
  this._paymentService = _paymentService;
16
+ this._transactionEventService = _transactionEventService;
14
17
  this.icons = Icon;
18
+ this.transKind = TransactionKind;
15
19
  this.updateDepositAmount = false;
20
+ this.transactionKind = this.transKind.SalesOrder;
16
21
  this.payed = new EventEmitter();
17
- this.paymentMethodIdx = 0;
18
- this.cashRegisterIdx = 0;
19
22
  this.paymentMethods = [];
20
23
  this.depositPayments = [];
21
24
  this.cashRegisters = [];
@@ -29,6 +32,7 @@ export class PaymentComponent {
29
32
  this._paymentStatusPollIntervalMs = 5000;
30
33
  this._paymentStatusMaxPollInterval = 10;
31
34
  this._paymentStatusPollIntervalCount = 0;
35
+ this._subs = [];
32
36
  }
33
37
  set amount(value) {
34
38
  this._amount = value;
@@ -42,6 +46,7 @@ export class PaymentComponent {
42
46
  }
43
47
  ngOnInit() {
44
48
  return __awaiter(this, void 0, void 0, function* () {
49
+ this._subs.push(this._transactionEventService.transactionPaymentDone.subscribe(() => this._getDepositPaymentInfo()));
45
50
  if (this.updateDepositAmount) {
46
51
  yield this._transactionService.updateHeaderTransactionDepositAmount(this.transactionUuid, this.amountToPay, true);
47
52
  }
@@ -53,23 +58,22 @@ export class PaymentComponent {
53
58
  });
54
59
  }
55
60
  ngOnDestroy() {
61
+ this._subs.forEach(s => s.unsubscribe());
56
62
  this._clearInterval();
57
63
  }
58
- paymentMethodSelected(method, index) {
59
- this.paymentMethodIdx = index;
64
+ paymentMethodSelected(method) {
65
+ this.selectedPaymentMethod = method;
60
66
  this._prepareCashRegisters();
61
67
  }
62
- cashRegisterSelected(cashRegister, index) {
63
- this.cashRegisterIdx = index;
68
+ cashRegisterSelected(cashRegister) {
69
+ this.selectedCashRegister = cashRegister;
64
70
  }
65
71
  handlePayment() {
66
72
  this.statusMessage = "";
67
- const currentPaymentViewModel = this.paymentMethods[this.paymentMethodIdx];
68
- this.currentPaymentMethod = currentPaymentViewModel.payment;
69
- if (this.currentPaymentMethod && this.currentPaymentMethod.externalSourceId) { // psp payment
70
- if (this.currentPaymentMethod.pinTerminal) {
71
- const cashRegister = this.cashRegisters[this.cashRegisterIdx];
72
- this._paymentService.doPinPayment(this.transId, this.currentPaymentMethod.code, cashRegister.nr, cashRegister.group, this.amountToPay).then((pspTransactionUuid) => {
73
+ if (this.selectedPaymentMethod && this.selectedPaymentMethod.externalSourceId) { // psp payment
74
+ if (this.selectedPaymentMethod.pinTerminal) {
75
+ this._paymentService.doPinPayment(this.transId, this.selectedPaymentMethod.code, this.paymentDetails ? this.paymentDetails.cashRegister.nr : this.selectedCashRegister.nr, this.paymentDetails ? this.paymentDetails.cashRegister.group : this.selectedCashRegister.group, this.amountToPay)
76
+ .then((pspTransactionUuid) => {
73
77
  if (pspTransactionUuid) {
74
78
  this._paymentStatusPollIntervalCount = 0;
75
79
  this._waitForPinPaymentStatus(pspTransactionUuid);
@@ -77,7 +81,8 @@ export class PaymentComponent {
77
81
  });
78
82
  }
79
83
  else {
80
- this._paymentService.createIonePaymentLinkAndQRCode(this.transactionUuid, this.amountToPay, this.currentPaymentMethod.code).then((response) => {
84
+ this._paymentService.createIonePaymentLinkAndQRCode(this.transactionUuid, this.amountToPay, this.selectedPaymentMethod.code)
85
+ .then((response) => {
81
86
  this._paymentResult = response;
82
87
  if (this._paymentResult && this._paymentResult.imageBase64) {
83
88
  this.qrCodeImage = this._dataUriToBase64(this._paymentResult.imageBase64, 'image/png');
@@ -89,14 +94,23 @@ export class PaymentComponent {
89
94
  }
90
95
  }
91
96
  else {
92
- const currentCashRegister = this.cashRegisters[this.cashRegisterIdx];
93
- this._paymentService.registerSalesOrderPayment(this.transactionUuid, this.amountToPay, this.currencyId, this.currentPaymentMethod.code, currentCashRegister.group).then(() => __awaiter(this, void 0, void 0, function* () {
97
+ this._paymentService.registerSalesOrderPayment(this.transactionUuid, this.amountToPay, this.currencyId, this.selectedPaymentMethod.code, this.paymentDetails ? this.paymentDetails.cashRegister.group : this.selectedCashRegister.group).then(() => __awaiter(this, void 0, void 0, function* () {
94
98
  this.showKeyPad = false;
95
99
  yield this._getDepositPaymentInfo();
100
+ this._handlePayment(false);
96
101
  if (this.amountToPay === 0) {
97
- this.payed.emit();
102
+ this._handlePayment();
98
103
  }
99
104
  }));
105
+ // this._paymentService.doPayment
106
+ // (this.transId, this.selectedPaymentMethod.code, 150.0, this.currencyId, this.paymentDetails ? this.paymentDetails.cashRegister.nr : this.selectedCashRegister.nr, this.paymentDetails ? this.paymentDetails.cashRegister.group : this.selectedCashRegister.group, this.paymentDetails ? this.paymentDetails.cashDrawer.id : null)
107
+ // .then(async () => {
108
+ // this.showKeyPad = false;
109
+ // await this._getDepositPaymentInfo();
110
+ // if (this.amountToPay === 0) {
111
+ // this.payed.emit();
112
+ // }
113
+ // });
100
114
  }
101
115
  }
102
116
  handleKeyPadModelChange(model) {
@@ -133,7 +147,7 @@ export class PaymentComponent {
133
147
  this.showPspQrCode = false;
134
148
  yield this._getDepositPaymentInfo();
135
149
  if (this.amountToPay === 0) {
136
- this.payed.emit();
150
+ this._handlePayment();
137
151
  }
138
152
  }
139
153
  this._paymentStatusPollIntervalCount++;
@@ -160,7 +174,7 @@ export class PaymentComponent {
160
174
  if (pinStatus.status.code === IonePaymentStatusCode.PAID) {
161
175
  yield this._getDepositPaymentInfo();
162
176
  if (this.amountToPay === 0) {
163
- this.payed.emit();
177
+ this._handlePayment();
164
178
  }
165
179
  }
166
180
  }
@@ -181,13 +195,12 @@ export class PaymentComponent {
181
195
  * @private
182
196
  */
183
197
  _prepareCashRegisters() {
184
- const paymentMethod = this.paymentMethods[this.paymentMethodIdx].payment;
185
- if (paymentMethod && (!paymentMethod.externalSourceId || paymentMethod.pinTerminal)) {
198
+ if (this.selectedPaymentMethod && (!this.selectedPaymentMethod.externalSourceId || this.selectedPaymentMethod.pinTerminal)) {
186
199
  this.cashRegisters.length = 0;
187
- paymentMethod.posGroups.forEach(crg => {
200
+ this.selectedPaymentMethod.posGroups.forEach(crg => {
188
201
  this._getCashRegisters(this.branch, crg.id);
189
202
  });
190
- this.showCashRegisters = true;
203
+ this.showCashRegisters = this.transactionKind !== this.transKind.CashDesk;
191
204
  }
192
205
  else {
193
206
  this.showCashRegisters = false;
@@ -201,19 +214,25 @@ export class PaymentComponent {
201
214
  _getPaymentMethods() {
202
215
  return new Promise((resolve) => {
203
216
  this.paymentMethods.length = 0;
204
- this._paymentService.getPaymentMethodsViewModels(this.branch).then((methods) => {
217
+ this._paymentService.getPaymentMethodsViewModels(this.branch, this.transactionKind).then((methods) => {
205
218
  this.paymentMethods = methods.slice();
206
219
  resolve();
207
220
  });
208
221
  });
209
222
  }
223
+ _handlePayment(emitPayed = true) {
224
+ this._transactionEventService.transactionPaymentDone.next();
225
+ if (emitPayed) {
226
+ this.payed.emit();
227
+ }
228
+ }
210
229
  }
211
230
  PaymentComponent.decorators = [
212
231
  { type: Component, args: [{
213
232
  selector: "co-payment",
214
233
  template: `
215
234
  <div class="payment-wrapper">
216
- <div class="payment-methods-header">
235
+ <div class="payment-methods-header" *ngIf="transactionKind !== transKind.CashDesk">
217
236
  <span class="payment-header-title" [textContent]="'SELECT_A' | localize"></span>
218
237
  <span class="payment-header-title extra" [textContent]="'FREE' | localize:false"></span>
219
238
  <span class="payment-header-title" [textContent]="'PAYMENT_METHOD' | localize:false"></span>
@@ -221,11 +240,11 @@ PaymentComponent.decorators = [
221
240
  <div class="payment-methods">
222
241
  <co-loader class="loader" *ngIf="showLoader"></co-loader>
223
242
  <ng-container *ngIf="!showLoader">
224
- <co-payment-tile *ngFor="let paymentMethod of paymentMethods; let index = index"
243
+ <co-payment-tile *ngFor="let paymentMethod of paymentMethods"
225
244
  [image]="paymentMethod.image"
226
245
  [description]="paymentMethod.payment.description"
227
- [selected]="paymentMethodIdx === index"
228
- (selectedChange)="paymentMethodSelected(paymentMethod.payment, index)"
246
+ [selected]="selectedPaymentMethod === paymentMethod.payment"
247
+ (selectedChange)="paymentMethodSelected(paymentMethod.payment)"
229
248
  ></co-payment-tile>
230
249
  </ng-container>
231
250
  </div>
@@ -234,19 +253,16 @@ PaymentComponent.decorators = [
234
253
  <span class="payment-header-title" [textContent]="'SELECT_CASH_REGISTER' | localize"></span>
235
254
  </div>
236
255
  <div class="payment-methods">
237
- <co-payment-tile *ngFor="let cashRegister of cashRegisters; let index = index"
256
+ <co-payment-tile *ngFor="let cashRegister of cashRegisters;"
238
257
  [icon]="cashRegister.icon"
239
258
  [description]="cashRegister.description"
240
- [selected]="cashRegisterIdx === index"
241
- (selectedChange)="cashRegisterSelected(cashRegister, index)"
259
+ [selected]="cashRegister === selectedCashRegister"
260
+ (selectedChange)="cashRegisterSelected(cashRegister)"
242
261
  ></co-payment-tile>
243
262
  </div>
244
263
  </div>
245
- <div class="payment-to-pay-wrapper">
246
- <div class="payment-to-pay">
247
- <div [textContent]="'TO_PAY' | localize"></div>
248
- <div class="payment-amount" [textContent]="amountToPay === 0 ? amountToPay : (amountToPay | coCurrency)"></div>
249
- </div>
264
+ <div class="payment-to-pay-wrapper" [class.cash-register-order]="transactionKind === transKind.CashDesk">
265
+ <co-payment-to-pay [amountToPay]="amountToPay"></co-payment-to-pay>
250
266
  <div class="payment-deposit">
251
267
  <co-deposit-payment [branch]="branch" [transactionUuid]="transactionUuid"></co-deposit-payment>
252
268
  </div>
@@ -278,7 +294,8 @@ PaymentComponent.decorators = [
278
294
  PaymentComponent.ctorParameters = () => [
279
295
  { type: TransactionService },
280
296
  { type: SharedService },
281
- { type: PaymentService }
297
+ { type: PaymentService },
298
+ { type: TransactionEventService }
282
299
  ];
283
300
  PaymentComponent.propDecorators = {
284
301
  transId: [{ type: Input }],
@@ -287,7 +304,9 @@ PaymentComponent.propDecorators = {
287
304
  updateDepositAmount: [{ type: Input }],
288
305
  amount: [{ type: Input }],
289
306
  currencyId: [{ type: Input }],
307
+ transactionKind: [{ type: Input }],
308
+ paymentDetails: [{ type: Input }],
290
309
  payed: [{ type: Output }],
291
310
  showClass: [{ type: HostBinding, args: ["class.co-payment",] }]
292
311
  };
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9wYXltZW50L3BheW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFLM0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFJL0UsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFtRXhHLE1BQU0sT0FBTyxnQkFBZ0I7SUEwRDNCLFlBQ1UsbUJBQXVDLEVBQ3ZDLGNBQTZCLEVBQzdCLGVBQStCO1FBRi9CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBNUR6QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQVluQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFnQnJDLFVBQUssR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQU9yRCxxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFDN0Isb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsbUJBQWMsR0FBdUIsRUFBRSxDQUFDO1FBQ3hDLG9CQUFlLEdBQThCLEVBQUUsQ0FBQztR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QUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTREVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBOUVPLGtCQUFrQjtZQUdsQixhQUFhO1lBRGIsY0FBYzs7O3NCQWdGbkIsS0FBSzs4QkFHTCxLQUFLO3FCQUdMLEtBQUs7a0NBR0wsS0FBSztxQkFHTCxLQUFLO3lCQVVMLEtBQUs7b0JBR0wsTUFBTTt3QkFHTixXQUFXLFNBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYXNoUmVnaXN0ZXJ9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jYXNoLXJlZ2lzdGVyJztcclxuaW1wb3J0IHtQYXltZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wYXltZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge1NoYXJlZFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQge1BheW1lbnRNZXRob2R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LW1ldGhvZC5ibyc7XHJcbmltcG9ydCB7UGF5bWVudFZpZXdtb2RlbH0gZnJvbSAnLi4vLi4vbW9kZWwvcGF5bWVudC52aWV3bW9kZWwnO1xyXG5pbXBvcnQge1BheW1lbnRMaW5rU3RhdHVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGF5bWVudC1saW5rLXN0YXR1cy5ibyc7XHJcbmltcG9ydCB7Q3JlYXRlUGF5bWVudExpbmtSZXN1bHR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtcGF5bWVudC1saW5rLXJlc3VsdC5ibyc7XHJcbmltcG9ydCB7RGVwb3NpdFBheW1lbnRWaWV3TW9kZWx9IGZyb20gJy4uLy4uL21vZGVsL2RlcG9zaXQtcGF5bWVudC12aWV3LW1vZGVsJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkRlcG9zaXRQYXltZW50SW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWRlcG9zaXQtcGF5bWVudC1pbmZvLmJvJztcclxuaW1wb3J0IHtEZXBvc2l0UGF5bWVudH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlcG9zaXQtcGF5bWVudC5ibyc7XHJcbmltcG9ydCB7UHNwVHJhbnNhY3Rpb25TdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wc3AtdHJhbnNhY3Rpb24tc3RhdHVzLmJvJztcclxuaW1wb3J0IHtJb25lUGF5bWVudFN0YXR1c0NvZGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2lvbmUtcGF5bWVudC1zdGF0dXMtY29kZS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXBheW1lbnRcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInBheW1lbnQtd3JhcHBlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1tZXRob2RzLWhlYWRlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGF5bWVudC1oZWFkZXItdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwiJ1NFTEVDVF9BJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGF5bWVudC1oZWFkZXItdGl0bGUgZXh0cmFcIiBbdGV4dENvbnRlbnRdPVwiJ0ZSRUUnIHwgbG9jYWxpemU6ZmFsc2VcIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXltZW50LWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCInUEFZTUVOVF9NRVRIT0QnIHwgbG9jYWxpemU6ZmFsc2VcIj48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1tZXRob2RzXCI+XHJcbiAgICAgICAgPGNvLWxvYWRlciBjbGFzcz1cImxvYWRlclwiICpuZ0lmPVwic2hvd0xvYWRlclwiPjwvY28tbG9hZGVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0xvYWRlclwiPlxyXG4gICAgICAgICAgPGNvLXBheW1lbnQtdGlsZSAqbmdGb3I9XCJsZXQgcGF5bWVudE1ldGhvZCBvZiBwYXltZW50TWV0aG9kczsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaW1hZ2VdPVwicGF5bWVudE1ldGhvZC5pbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJwYXltZW50TWV0aG9kLnBheW1lbnQuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwicGF5bWVudE1ldGhvZElkeCA9PT0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwicGF5bWVudE1ldGhvZFNlbGVjdGVkKHBheW1lbnRNZXRob2QucGF5bWVudCwgaW5kZXgpXCJcclxuICAgICAgICAgID48L2NvLXBheW1lbnQtdGlsZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWNhc2gtcmVnaXN0ZXItd3JhcHBlclwiICpuZ0lmPVwic2hvd0Nhc2hSZWdpc3RlcnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1jYXNoLXJlZ2lzdGVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXltZW50LWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCInU0VMRUNUX0NBU0hfUkVHSVNURVInIHwgbG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtbWV0aG9kc1wiPlxyXG4gICAgICAgICAgPGNvLXBheW1lbnQtdGlsZSAqbmdGb3I9XCJsZXQgY2FzaFJlZ2lzdGVyIG9mIGNhc2hSZWdpc3RlcnM7IGxldCBpbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY2FzaFJlZ2lzdGVyLmljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiY2FzaFJlZ2lzdGVyLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImNhc2hSZWdpc3RlcklkeCA9PT0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiY2FzaFJlZ2lzdGVyU2VsZWN0ZWQoY2FzaFJlZ2lzdGVyLCBpbmRleClcIlxyXG4gICAgICAgICAgPjwvY28tcGF5bWVudC10aWxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtdG8tcGF5LXdyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC10by1wYXlcIj5cclxuICAgICAgICAgIDxkaXYgW3RleHRDb250ZW50XT1cIidUT19QQVknIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWFtb3VudFwiIFt0ZXh0Q29udGVudF09XCJhbW91bnRUb1BheSA9PT0gMCA/IGFtb3VudFRvUGF5IDogKGFtb3VudFRvUGF5IHwgY29DdXJyZW5jeSlcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kZXBvc2l0XCI+XHJcbiAgICAgICAgICA8Y28tZGVwb3NpdC1wYXltZW50IFticmFuY2hdPVwiYnJhbmNoXCIgW3RyYW5zYWN0aW9uVXVpZF09XCJ0cmFuc2FjdGlvblV1aWRcIj48L2NvLWRlcG9zaXQtcGF5bWVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC10by1wYXktYnV0dG9uXCI+XHJcbjwhLS1cclxuICAgICAgICAgIDxjby1sb2FkZXIgKm5nSWY9XCJzdGF0dXNNZXNzYWdlXCI+PC9jby1sb2FkZXI+XHJcbi0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwic3RhdHVzTWVzc2FnZVwiIFt0ZXh0Q29udGVudF09XCJzdGF0dXNNZXNzYWdlXCI+PC9kaXY+XHJcbiAgICAgICAgICA8Y28tYnV0dG9uIFtsYWJlbF09XCInUEFZJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cImhhbmRsZVBheW1lbnQoKVwiIFtkaXNhYmxlZF09XCJhbW91bnRUb1BheSA9PT0gMFwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxjby1rZXktcGFkIGNsYXNzPVwicGF5bWVudC10by1wYXkta2V5cGFkXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbHVlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZW1pdE1vZGVsQ2hhbmdlT25FbnRlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImFtb3VudFRvUGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlS2V5UGFkTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGVudGVyQ2xpY2spPVwiaGFuZGxlUGF5bWVudCgpXCJcclxuICAgICAgICA+PC9jby1rZXktcGFkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGNvLWRpYWxvZyAqbmdJZj1cInNob3dQc3BRckNvZGVcIiAoY2xvc2VDbGljayk9XCJzaG93UHNwUXJDb2RlID0gZmFsc2VcIj5cclxuICAgICAgPGNvLXBheW1lbnQtcXItY29kZVxyXG4gICAgICAgIFtxckNvZGVJbWFnZV09XCJxckNvZGVJbWFnZVwiXHJcbiAgICAgID48L2NvLXBheW1lbnQtcXItY29kZT5cclxuICAgIDwvY28tZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGF5bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNJZDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0cmFuc2FjdGlvblV1aWQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYnJhbmNoOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHVwZGF0ZURlcG9zaXRBbW91bnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFtb3VudCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9hbW91bnQgPSB2YWx1ZTtcclxuICAgIHRoaXMuYW1vdW50VG9QYXkgPSB0aGlzLl9hbW91bnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFtb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Ftb3VudDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1cnJlbmN5SWQ6IG51bWJlcjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHBheWVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXBheW1lbnRcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGF5bWVudE1ldGhvZElkeDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgY2FzaFJlZ2lzdGVySWR4OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBwYXltZW50TWV0aG9kczogUGF5bWVudFZpZXdtb2RlbFtdID0gW107XHJcbiAgcHVibGljIGRlcG9zaXRQYXltZW50czogRGVwb3NpdFBheW1lbnRWaWV3TW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBjYXNoUmVnaXN0ZXJzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBzaG93Q2FzaFJlZ2lzdGVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93S2V5UGFkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dQc3BRckNvZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgY3VycmVudFBheW1lbnRNZXRob2Q6IFBheW1lbnRNZXRob2Q7XHJcbiAgcHVibGljIHFyQ29kZUltYWdlOiBzdHJpbmc7XHJcbiAgcHVibGljIHNob3dMb2FkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBhbW91bnRUb1BheTogbnVtYmVyID0gMDtcclxuXHJcbiAgcHVibGljIHN0YXR1c01lc3NhZ2U6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHByaXZhdGUgX2Ftb3VudDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9wYXltZW50U3RhdHVzSW50ZXJ2YWw6IGFueTtcclxuICBwcml2YXRlIF9wYXltZW50U3RhdHVzUG9sbEludGVydmFsTXM6IG51bWJlciA9IDUwMDA7XHJcbiAgcHJpdmF0ZSBfcGF5bWVudFN0YXR1c01heFBvbGxJbnRlcnZhbDogbnVtYmVyID0gMTA7XHJcbiAgcHJpdmF0ZSBfcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50OiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX3BheW1lbnRSZXN1bHQ6IENyZWF0ZVBheW1lbnRMaW5rUmVzdWx0O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BheW1lbnRTZXJ2aWNlOiBQYXltZW50U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy51cGRhdGVEZXBvc2l0QW1vdW50KSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uU2VydmljZS51cGRhdGVIZWFkZXJUcmFuc2FjdGlvbkRlcG9zaXRBbW91bnQodGhpcy50cmFuc2FjdGlvblV1aWQsIHRoaXMuYW1vdW50VG9QYXksIHRydWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZ2V0UGF5bWVudE1ldGhvZHMoKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2dldERlcG9zaXRQYXltZW50SW5mbygpO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlQ2FzaFJlZ2lzdGVycygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYXltZW50TWV0aG9kU2VsZWN0ZWQobWV0aG9kOiBQYXltZW50TWV0aG9kLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnBheW1lbnRNZXRob2RJZHggPSBpbmRleDtcclxuICAgIHRoaXMuX3ByZXBhcmVDYXNoUmVnaXN0ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FzaFJlZ2lzdGVyU2VsZWN0ZWQoY2FzaFJlZ2lzdGVyOiBDYXNoUmVnaXN0ZXIsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FzaFJlZ2lzdGVySWR4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlUGF5bWVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhdHVzTWVzc2FnZSA9IFwiXCI7XHJcbiAgICBjb25zdCBjdXJyZW50UGF5bWVudFZpZXdNb2RlbCA9IHRoaXMucGF5bWVudE1ldGhvZHNbdGhpcy5wYXltZW50TWV0aG9kSWR4XTtcclxuICAgIHRoaXMuY3VycmVudFBheW1lbnRNZXRob2QgPSBjdXJyZW50UGF5bWVudFZpZXdNb2RlbC5wYXltZW50O1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBheW1lbnRNZXRob2QgJiYgdGhpcy5jdXJyZW50UGF5bWVudE1ldGhvZC5leHRlcm5hbFNvdXJjZUlkKSB7IC8vIHBzcCBwYXltZW50XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRQYXltZW50TWV0aG9kLnBpblRlcm1pbmFsKSB7XHJcbiAgICAgICAgY29uc3QgY2FzaFJlZ2lzdGVyOiBDYXNoUmVnaXN0ZXIgPSB0aGlzLmNhc2hSZWdpc3RlcnNbdGhpcy5jYXNoUmVnaXN0ZXJJZHhdO1xyXG4gICAgICAgIHRoaXMuX3BheW1lbnRTZXJ2aWNlLmRvUGluUGF5bWVudCh0aGlzLnRyYW5zSWQsIHRoaXMuY3VycmVudFBheW1lbnRNZXRob2QuY29kZSwgY2FzaFJlZ2lzdGVyLm5yLCBjYXNoUmVnaXN0ZXIuZ3JvdXAsIHRoaXMuYW1vdW50VG9QYXkpLnRoZW4oKHBzcFRyYW5zYWN0aW9uVXVpZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICBpZiAocHNwVHJhbnNhY3Rpb25VdWlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxDb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuX3dhaXRGb3JQaW5QYXltZW50U3RhdHVzKHBzcFRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fcGF5bWVudFNlcnZpY2UuY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlKHRoaXMudHJhbnNhY3Rpb25VdWlkLCB0aGlzLmFtb3VudFRvUGF5LCB0aGlzLmN1cnJlbnRQYXltZW50TWV0aG9kLmNvZGUpLnRoZW4oKHJlc3BvbnNlOiBDcmVhdGVQYXltZW50TGlua1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcGF5bWVudFJlc3VsdCA9IHJlc3BvbnNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3BheW1lbnRSZXN1bHQgJiYgdGhpcy5fcGF5bWVudFJlc3VsdC5pbWFnZUJhc2U2NCkge1xyXG4gICAgICAgICAgICB0aGlzLnFyQ29kZUltYWdlID0gdGhpcy5fZGF0YVVyaVRvQmFzZTY0KHRoaXMuX3BheW1lbnRSZXN1bHQuaW1hZ2VCYXNlNjQsICdpbWFnZS9wbmcnKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93UHNwUXJDb2RlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5fd2FpdEZvclBheW1lbnRTdGF0dXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY3VycmVudENhc2hSZWdpc3RlcjogQ2FzaFJlZ2lzdGVyID0gdGhpcy5jYXNoUmVnaXN0ZXJzW3RoaXMuY2FzaFJlZ2lzdGVySWR4XTtcclxuICAgICAgdGhpcy5fcGF5bWVudFNlcnZpY2UucmVnaXN0ZXJTYWxlc09yZGVyUGF5bWVudChcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uVXVpZCwgdGhpcy5hbW91bnRUb1BheSwgdGhpcy5jdXJyZW5jeUlkLCB0aGlzLmN1cnJlbnRQYXltZW50TWV0aG9kLmNvZGUsIGN1cnJlbnRDYXNoUmVnaXN0ZXIuZ3JvdXApLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd0tleVBhZCA9IGZhbHNlO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX2dldERlcG9zaXRQYXltZW50SW5mbygpO1xyXG4gICAgICAgIGlmICh0aGlzLmFtb3VudFRvUGF5ID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnBheWVkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUtleVBhZE1vZGVsQ2hhbmdlKG1vZGVsOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuYW1vdW50VG9QYXkgPSBtb2RlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldERlcG9zaXRQYXltZW50SW5mbygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZGVwb3NpdFBheW1lbnRzLmxlbmd0aCA9IDA7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIHRoaXMuX3BheW1lbnRTZXJ2aWNlLmdldERlcG9zaXRQYXltZW50SW5mbyh0aGlzLnRyYW5zYWN0aW9uVXVpZCkudGhlbigoaW5mbzogVHJhbnNhY3Rpb25EZXBvc2l0UGF5bWVudEluZm8pID0+IHtcclxuICAgICAgICB0aGlzLmFtb3VudFRvUGF5ID0gaW5mby5kZXBvc2l0UmVtYWluZGVyQW1vdW50O1xyXG4gICAgICAgIGlmIChpbmZvLmRlcG9zaXRQYXltZW50cykge1xyXG4gICAgICAgICAgaW5mby5kZXBvc2l0UGF5bWVudHMuZm9yRWFjaCgoZHA6IERlcG9zaXRQYXltZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBheW1lbnRNZXRob2Q6IFBheW1lbnRWaWV3bW9kZWwgPSB0aGlzLnBheW1lbnRNZXRob2RzLmZpbmQocG0gPT4gcG0ucGF5bWVudC5jb2RlID09PSBkcC5wYXltZW50TWV0aG9kQ29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGVwb3NpdFBheW1lbnRzLnB1c2gobmV3IERlcG9zaXRQYXltZW50Vmlld01vZGVsKGRwLCBwYXltZW50TWV0aG9kKSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YVVyaVRvQmFzZTY0KHVyaTogc3RyaW5nLCBtaW1lVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB1cmkgPyBcImRhdGE6XCIgKyBtaW1lVHlwZSArIFwiO2Jhc2U2NCxcIiArIHVyaSA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF93YWl0Rm9yUGF5bWVudFN0YXR1cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9wYXltZW50UmVzdWx0ICYmIHRoaXMuX3BheW1lbnRSZXN1bHQucGF5bWVudExpbmtVVUlEKSB7XHJcbiAgICAgIHRoaXMuX3BheW1lbnRTdGF0dXNJbnRlcnZhbCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50ID49IHRoaXMuX3BheW1lbnRTdGF0dXNNYXhQb2xsSW50ZXJ2YWwpIHtcclxuICAgICAgICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgc3RhdHVzOiBQYXltZW50TGlua1N0YXR1cyA9IGF3YWl0IHRoaXMuX3BheW1lbnRTZXJ2aWNlLmdldFBheW1lbnRMaW5rU3RhdHVzKHRoaXMuX3BheW1lbnRSZXN1bHQucGF5bWVudExpbmtVVUlEKTtcclxuICAgICAgICAgIGlmIChzdGF0dXMucGF5ZWREYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93UHNwUXJDb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2dldERlcG9zaXRQYXltZW50SW5mbygpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hbW91bnRUb1BheSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucGF5ZWQuZW1pdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsQ291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxNcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF93YWl0Rm9yUGluUGF5bWVudFN0YXR1cyhwc3BUcmFuc2FjdGlvblV1aWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHBzcFRyYW5zYWN0aW9uVXVpZCkge1xyXG4gICAgICB0aGlzLl9wYXltZW50U3RhdHVzSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxDb3VudCA+PSB0aGlzLl9wYXltZW50U3RhdHVzTWF4UG9sbEludGVydmFsKSB7XHJcbiAgICAgICAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHBpblN0YXR1czogUHNwVHJhbnNhY3Rpb25TdGF0dXMgPSBhd2FpdCB0aGlzLl9wYXltZW50U2VydmljZS5nZXRQc3BUcmFuc2FjdGlvblN0YXR1cyhwc3BUcmFuc2FjdGlvblV1aWQpO1xyXG4gICAgICAgICAgaWYgKHBpblN0YXR1cyAmJiBwaW5TdGF0dXMuc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzTWVzc2FnZSA9IHBpblN0YXR1cy5zdGF0dXMuZGVzY3JpcHRpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocGluU3RhdHVzLnN0YXR1c0RhdGUgJiYgcGluU3RhdHVzLnN0YXR1cyAmJiBwaW5TdGF0dXMuc3RhdHVzLmVuZFN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgICAgICAgICAgIGlmIChwaW5TdGF0dXMuc3RhdHVzLmNvZGUgPT09IElvbmVQYXltZW50U3RhdHVzQ29kZS5QQUlEKSB7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0RGVwb3NpdFBheW1lbnRJbmZvKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50VG9QYXkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGF5ZWQuZW1pdCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCB0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsTXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYXJJbnRlcnZhbCgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fcGF5bWVudFN0YXR1c0ludGVydmFsKTtcclxuICAgIHRoaXMuX3BheW1lbnRTdGF0dXNJbnRlcnZhbCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9wcmVwYXJlQ2FzaFJlZ2lzdGVycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBheW1lbnRNZXRob2Q6IFBheW1lbnRNZXRob2QgPSB0aGlzLnBheW1lbnRNZXRob2RzW3RoaXMucGF5bWVudE1ldGhvZElkeF0ucGF5bWVudDtcclxuICAgIGlmIChwYXltZW50TWV0aG9kICYmICghcGF5bWVudE1ldGhvZC5leHRlcm5hbFNvdXJjZUlkIHx8IHBheW1lbnRNZXRob2QucGluVGVybWluYWwpKSB7XHJcbiAgICAgIHRoaXMuY2FzaFJlZ2lzdGVycy5sZW5ndGggPSAwO1xyXG4gICAgICBwYXltZW50TWV0aG9kLnBvc0dyb3Vwcy5mb3JFYWNoKGNyZyA9PiB7XHJcbiAgICAgICAgdGhpcy5fZ2V0Q2FzaFJlZ2lzdGVycyh0aGlzLmJyYW5jaCwgY3JnLmlkKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2hvd0Nhc2hSZWdpc3RlcnMgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Q2FzaFJlZ2lzdGVycyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0Q2FzaFJlZ2lzdGVycyhicmFuY2g/OiBzdHJpbmcsIGdyb3VwPzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvblNlcnZpY2UuZ2V0Q2FzaFJlZ2lzdGVycyhicmFuY2gsIGdyb3VwKS50aGVuKChjYXNoUmVnaXN0ZXJzOiBDYXNoUmVnaXN0ZXJbXSkgPT4ge1xyXG4gICAgICB0aGlzLmNhc2hSZWdpc3RlcnMucHVzaCguLi5jYXNoUmVnaXN0ZXJzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UGF5bWVudE1ldGhvZHMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIHRoaXMucGF5bWVudE1ldGhvZHMubGVuZ3RoID0gMDtcclxuICAgICAgdGhpcy5fcGF5bWVudFNlcnZpY2UuZ2V0UGF5bWVudE1ldGhvZHNWaWV3TW9kZWxzKHRoaXMuYnJhbmNoKS50aGVuKChtZXRob2RzOiBQYXltZW50Vmlld21vZGVsW10pID0+IHtcclxuICAgICAgICB0aGlzLnBheW1lbnRNZXRob2RzID0gbWV0aG9kcy5zbGljZSgpO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9wYXltZW50L3BheW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFLM0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFJL0UsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDeEcsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBRzFGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBZ0VoRixNQUFNLE9BQU8sZ0JBQWdCO0lBaUUzQixZQUNVLG1CQUF1QyxFQUN2QyxjQUE2QixFQUM3QixlQUErQixFQUMvQix3QkFBaUQ7UUFIakQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtRQXBFM0MsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFDMUIsY0FBUyxHQUEyQixlQUFlLENBQUM7UUFZN0Qsd0JBQW1CLEdBQVks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TCxLQUFLO2tDQUdMLEtBQUs7cUJBR0wsS0FBSzt5QkFVTCxLQUFLOzhCQUdMLEtBQUs7NkJBR0wsS0FBSztvQkFHTCxNQUFNO3dCQUdOLFdBQVcsU0FBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Nhc2hSZWdpc3Rlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtcmVnaXN0ZXInO1xyXG5pbXBvcnQge1BheW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3BheW1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7U2hhcmVkU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9zaGFyZWQuc2VydmljZSc7XHJcbmltcG9ydCB7UGF5bWVudE1ldGhvZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtbWV0aG9kLmJvJztcclxuaW1wb3J0IHtQYXltZW50Vmlld21vZGVsfSBmcm9tICcuLi8uLi9tb2RlbC9wYXltZW50LnZpZXdtb2RlbCc7XHJcbmltcG9ydCB7UGF5bWVudExpbmtTdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LWxpbmstc3RhdHVzLmJvJztcclxuaW1wb3J0IHtDcmVhdGVQYXltZW50TGlua1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1wYXltZW50LWxpbmstcmVzdWx0LmJvJztcclxuaW1wb3J0IHtEZXBvc2l0UGF5bWVudFZpZXdNb2RlbH0gZnJvbSAnLi4vLi4vbW9kZWwvZGVwb3NpdC1wYXltZW50LXZpZXctbW9kZWwnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRGVwb3NpdFBheW1lbnRJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tZGVwb3NpdC1wYXltZW50LWluZm8uYm8nO1xyXG5pbXBvcnQge0RlcG9zaXRQYXltZW50fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVwb3NpdC1wYXltZW50LmJvJztcclxuaW1wb3J0IHtQc3BUcmFuc2FjdGlvblN0YXR1c30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BzcC10cmFuc2FjdGlvbi1zdGF0dXMuYm8nO1xyXG5pbXBvcnQge0lvbmVQYXltZW50U3RhdHVzQ29kZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vaW9uZS1wYXltZW50LXN0YXR1cy1jb2RlLmVudW0nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bVwiO1xyXG5pbXBvcnQge1BheW1lbnRUcmFuc2FjdGlvblZpZXdNb2RlbH0gZnJvbSBcIi4uLy4uL21vZGVsL3BheW1lbnQtdHJhbnNhY3Rpb24tdmlldy1tb2RlbFwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1wYXltZW50XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXdyYXBwZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtbWV0aG9kcy1oZWFkZXJcIiAqbmdJZj1cInRyYW5zYWN0aW9uS2luZCAhPT0gdHJhbnNLaW5kLkNhc2hEZXNrXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXltZW50LWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCInU0VMRUNUX0EnIHwgbG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXltZW50LWhlYWRlci10aXRsZSBleHRyYVwiIFt0ZXh0Q29udGVudF09XCInRlJFRScgfCBsb2NhbGl6ZTpmYWxzZVwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInBheW1lbnQtaGVhZGVyLXRpdGxlXCIgW3RleHRDb250ZW50XT1cIidQQVlNRU5UX01FVEhPRCcgfCBsb2NhbGl6ZTpmYWxzZVwiPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LW1ldGhvZHNcIj5cclxuICAgICAgICA8Y28tbG9hZGVyIGNsYXNzPVwibG9hZGVyXCIgKm5nSWY9XCJzaG93TG9hZGVyXCI+PC9jby1sb2FkZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93TG9hZGVyXCI+XHJcbiAgICAgICAgICA8Y28tcGF5bWVudC10aWxlICpuZ0Zvcj1cImxldCBwYXltZW50TWV0aG9kIG9mIHBheW1lbnRNZXRob2RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ltYWdlXT1cInBheW1lbnRNZXRob2QuaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwicGF5bWVudE1ldGhvZC5wYXltZW50LmRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkUGF5bWVudE1ldGhvZCA9PT0gcGF5bWVudE1ldGhvZC5wYXltZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cInBheW1lbnRNZXRob2RTZWxlY3RlZChwYXltZW50TWV0aG9kLnBheW1lbnQpXCJcclxuICAgICAgICAgID48L2NvLXBheW1lbnQtdGlsZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWNhc2gtcmVnaXN0ZXItd3JhcHBlclwiICpuZ0lmPVwic2hvd0Nhc2hSZWdpc3RlcnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1jYXNoLXJlZ2lzdGVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYXltZW50LWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCInU0VMRUNUX0NBU0hfUkVHSVNURVInIHwgbG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtbWV0aG9kc1wiPlxyXG4gICAgICAgICAgPGNvLXBheW1lbnQtdGlsZSAqbmdGb3I9XCJsZXQgY2FzaFJlZ2lzdGVyIG9mIGNhc2hSZWdpc3RlcnM7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY2FzaFJlZ2lzdGVyLmljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiY2FzaFJlZ2lzdGVyLmRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImNhc2hSZWdpc3RlciA9PT0gc2VsZWN0ZWRDYXNoUmVnaXN0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiY2FzaFJlZ2lzdGVyU2VsZWN0ZWQoY2FzaFJlZ2lzdGVyKVwiXHJcbiAgICAgICAgICA+PC9jby1wYXltZW50LXRpbGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC10by1wYXktd3JhcHBlclwiIFtjbGFzcy5jYXNoLXJlZ2lzdGVyLW9yZGVyXT1cInRyYW5zYWN0aW9uS2luZCA9PT0gdHJhbnNLaW5kLkNhc2hEZXNrXCI+XHJcbiAgICAgICAgPGNvLXBheW1lbnQtdG8tcGF5IFthbW91bnRUb1BheV09XCJhbW91bnRUb1BheVwiPjwvY28tcGF5bWVudC10by1wYXk+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGVwb3NpdFwiPlxyXG4gICAgICAgICAgPGNvLWRlcG9zaXQtcGF5bWVudCBbYnJhbmNoXT1cImJyYW5jaFwiIFt0cmFuc2FjdGlvblV1aWRdPVwidHJhbnNhY3Rpb25VdWlkXCI+PC9jby1kZXBvc2l0LXBheW1lbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtdG8tcGF5LWJ1dHRvblwiPlxyXG48IS0tXHJcbiAgICAgICAgICA8Y28tbG9hZGVyICpuZ0lmPVwic3RhdHVzTWVzc2FnZVwiPjwvY28tbG9hZGVyPlxyXG4tLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cInN0YXR1c01lc3NhZ2VcIiBbdGV4dENvbnRlbnRdPVwic3RhdHVzTWVzc2FnZVwiPjwvZGl2PlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ1BBWScgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJoYW5kbGVQYXltZW50KClcIiBbZGlzYWJsZWRdPVwiYW1vdW50VG9QYXkgPT09IDBcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Y28ta2V5LXBhZCBjbGFzcz1cInBheW1lbnQtdG8tcGF5LWtleXBhZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWx1ZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2VtaXRNb2RlbENoYW5nZU9uRW50ZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJhbW91bnRUb1BheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZUtleVBhZE1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChlbnRlckNsaWNrKT1cImhhbmRsZVBheW1lbnQoKVwiXHJcbiAgICAgICAgPjwvY28ta2V5LXBhZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxjby1kaWFsb2cgKm5nSWY9XCJzaG93UHNwUXJDb2RlXCIgKGNsb3NlQ2xpY2spPVwic2hvd1BzcFFyQ29kZSA9IGZhbHNlXCI+XHJcbiAgICAgIDxjby1wYXltZW50LXFyLWNvZGVcclxuICAgICAgICBbcXJDb2RlSW1hZ2VdPVwicXJDb2RlSW1hZ2VcIlxyXG4gICAgICA+PC9jby1wYXltZW50LXFyLWNvZGU+XHJcbiAgICA8L2NvLWRpYWxvZz5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFBheW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zS2luZDogdHlwZW9mIFRyYW5zYWN0aW9uS2luZCA9IFRyYW5zYWN0aW9uS2luZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNJZDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0cmFuc2FjdGlvblV1aWQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYnJhbmNoOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHVwZGF0ZURlcG9zaXRBbW91bnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFtb3VudCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9hbW91bnQgPSB2YWx1ZTtcclxuICAgIHRoaXMuYW1vdW50VG9QYXkgPSB0aGlzLl9hbW91bnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFtb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Ftb3VudDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1cnJlbmN5SWQ6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQgPSB0aGlzLnRyYW5zS2luZC5TYWxlc09yZGVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYXltZW50RGV0YWlsczogUGF5bWVudFRyYW5zYWN0aW9uVmlld01vZGVsO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcGF5ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tcGF5bWVudFwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZFBheW1lbnRNZXRob2Q6IFBheW1lbnRNZXRob2Q7XHJcbiAgcHVibGljIHNlbGVjdGVkQ2FzaFJlZ2lzdGVyOiBDYXNoUmVnaXN0ZXI7XHJcbiAgcHVibGljIHBheW1lbnRNZXRob2RzOiBQYXltZW50Vmlld21vZGVsW10gPSBbXTtcclxuICBwdWJsaWMgZGVwb3NpdFBheW1lbnRzOiBEZXBvc2l0UGF5bWVudFZpZXdNb2RlbFtdID0gW107XHJcbiAgcHVibGljIGNhc2hSZWdpc3RlcnM6IGFueVtdID0gW107XHJcbiAgcHVibGljIHNob3dDYXNoUmVnaXN0ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dLZXlQYWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1BzcFFyQ29kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBxckNvZGVJbWFnZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgYW1vdW50VG9QYXk6IG51bWJlciA9IDA7XHJcblxyXG4gIHB1YmxpYyBzdGF0dXNNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBwcml2YXRlIF9hbW91bnQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfcGF5bWVudFN0YXR1c0ludGVydmFsOiBhbnk7XHJcbiAgcHJpdmF0ZSBfcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbE1zOiBudW1iZXIgPSA1MDAwO1xyXG4gIHByaXZhdGUgX3BheW1lbnRTdGF0dXNNYXhQb2xsSW50ZXJ2YWw6IG51bWJlciA9IDEwO1xyXG4gIHByaXZhdGUgX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxDb3VudDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9wYXltZW50UmVzdWx0OiBDcmVhdGVQYXltZW50TGlua1Jlc3VsdDtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSxcclxuICAgIHByaXZhdGUgX3BheW1lbnRTZXJ2aWNlOiBQYXltZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UudHJhbnNhY3Rpb25QYXltZW50RG9uZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZ2V0RGVwb3NpdFBheW1lbnRJbmZvKCkpXHJcbiAgICApXHJcbiAgICBpZiAodGhpcy51cGRhdGVEZXBvc2l0QW1vdW50KSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uU2VydmljZS51cGRhdGVIZWFkZXJUcmFuc2FjdGlvbkRlcG9zaXRBbW91bnQodGhpcy50cmFuc2FjdGlvblV1aWQsIHRoaXMuYW1vdW50VG9QYXksIHRydWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZ2V0UGF5bWVudE1ldGhvZHMoKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2dldERlcG9zaXRQYXltZW50SW5mbygpO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlQ2FzaFJlZ2lzdGVycygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGF5bWVudE1ldGhvZFNlbGVjdGVkKG1ldGhvZDogUGF5bWVudE1ldGhvZCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFBheW1lbnRNZXRob2QgPSBtZXRob2Q7XHJcbiAgICB0aGlzLl9wcmVwYXJlQ2FzaFJlZ2lzdGVycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhc2hSZWdpc3RlclNlbGVjdGVkKGNhc2hSZWdpc3RlcjogQ2FzaFJlZ2lzdGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2FzaFJlZ2lzdGVyID0gY2FzaFJlZ2lzdGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVBheW1lbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1c01lc3NhZ2UgPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQYXltZW50TWV0aG9kICYmIHRoaXMuc2VsZWN0ZWRQYXltZW50TWV0aG9kLmV4dGVybmFsU291cmNlSWQpIHsgLy8gcHNwIHBheW1lbnRcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRQYXltZW50TWV0aG9kLnBpblRlcm1pbmFsKSB7XHJcbiAgICAgICAgdGhpcy5fcGF5bWVudFNlcnZpY2UuZG9QaW5QYXltZW50XHJcbiAgICAgICAgKHRoaXMudHJhbnNJZCwgdGhpcy5zZWxlY3RlZFBheW1lbnRNZXRob2QuY29kZSwgdGhpcy5wYXltZW50RGV0YWlscyA/IHRoaXMucGF5bWVudERldGFpbHMuY2FzaFJlZ2lzdGVyLm5yIDogdGhpcy5zZWxlY3RlZENhc2hSZWdpc3Rlci5uciwgdGhpcy5wYXltZW50RGV0YWlscyA/IHRoaXMucGF5bWVudERldGFpbHMuY2FzaFJlZ2lzdGVyLmdyb3VwIDogdGhpcy5zZWxlY3RlZENhc2hSZWdpc3Rlci5ncm91cCwgdGhpcy5hbW91bnRUb1BheSlcclxuICAgICAgICAgIC50aGVuKChwc3BUcmFuc2FjdGlvblV1aWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgaWYgKHBzcFRyYW5zYWN0aW9uVXVpZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsQ291bnQgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLl93YWl0Rm9yUGluUGF5bWVudFN0YXR1cyhwc3BUcmFuc2FjdGlvblV1aWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3BheW1lbnRTZXJ2aWNlLmNyZWF0ZUlvbmVQYXltZW50TGlua0FuZFFSQ29kZSh0aGlzLnRyYW5zYWN0aW9uVXVpZCwgdGhpcy5hbW91bnRUb1BheSwgdGhpcy5zZWxlY3RlZFBheW1lbnRNZXRob2QuY29kZSlcclxuICAgICAgICAgIC50aGVuKChyZXNwb25zZTogQ3JlYXRlUGF5bWVudExpbmtSZXN1bHQpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3BheW1lbnRSZXN1bHQgPSByZXNwb25zZTtcclxuICAgICAgICAgIGlmICh0aGlzLl9wYXltZW50UmVzdWx0ICYmIHRoaXMuX3BheW1lbnRSZXN1bHQuaW1hZ2VCYXNlNjQpIHtcclxuICAgICAgICAgICAgdGhpcy5xckNvZGVJbWFnZSA9IHRoaXMuX2RhdGFVcmlUb0Jhc2U2NCh0aGlzLl9wYXltZW50UmVzdWx0LmltYWdlQmFzZTY0LCAnaW1hZ2UvcG5nJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1BzcFFyQ29kZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxDb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuX3dhaXRGb3JQYXltZW50U3RhdHVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3BheW1lbnRTZXJ2aWNlLnJlZ2lzdGVyU2FsZXNPcmRlclBheW1lbnQoXHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvblV1aWQsIHRoaXMuYW1vdW50VG9QYXksIHRoaXMuY3VycmVuY3lJZCwgdGhpcy5zZWxlY3RlZFBheW1lbnRNZXRob2QuY29kZSwgdGhpcy5wYXltZW50RGV0YWlscyA/IHRoaXMucGF5bWVudERldGFpbHMuY2FzaFJlZ2lzdGVyLmdyb3VwIDogdGhpcy5zZWxlY3RlZENhc2hSZWdpc3Rlci5ncm91cCkudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93S2V5UGFkID0gZmFsc2U7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fZ2V0RGVwb3NpdFBheW1lbnRJbmZvKCk7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlUGF5bWVudChmYWxzZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuYW1vdW50VG9QYXkgPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuX2hhbmRsZVBheW1lbnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gdGhpcy5fcGF5bWVudFNlcnZpY2UuZG9QYXltZW50XHJcbiAgICAgIC8vICh0aGlzLnRyYW5zSWQsIHRoaXMuc2VsZWN0ZWRQYXltZW50TWV0aG9kLmNvZGUsIDE1MC4wLCB0aGlzLmN1cnJlbmN5SWQsIHRoaXMucGF5bWVudERldGFpbHMgPyB0aGlzLnBheW1lbnREZXRhaWxzLmNhc2hSZWdpc3Rlci5uciA6IHRoaXMuc2VsZWN0ZWRDYXNoUmVnaXN0ZXIubnIsIHRoaXMucGF5bWVudERldGFpbHMgPyB0aGlzLnBheW1lbnREZXRhaWxzLmNhc2hSZWdpc3Rlci5ncm91cCA6IHRoaXMuc2VsZWN0ZWRDYXNoUmVnaXN0ZXIuZ3JvdXAsIHRoaXMucGF5bWVudERldGFpbHMgPyB0aGlzLnBheW1lbnREZXRhaWxzLmNhc2hEcmF3ZXIuaWQgOiBudWxsKVxyXG4gICAgICAvLyAgIC50aGVuKGFzeW5jICgpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMuc2hvd0tleVBhZCA9IGZhbHNlO1xyXG4gICAgICAvLyAgICAgYXdhaXQgdGhpcy5fZ2V0RGVwb3NpdFBheW1lbnRJbmZvKCk7XHJcbiAgICAgIC8vICAgICBpZiAodGhpcy5hbW91bnRUb1BheSA9PT0gMCkge1xyXG4gICAgICAvLyAgICAgICB0aGlzLnBheWVkLmVtaXQoKTtcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVLZXlQYWRNb2RlbENoYW5nZShtb2RlbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtb3VudFRvUGF5ID0gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXREZXBvc2l0UGF5bWVudEluZm8oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmRlcG9zaXRQYXltZW50cy5sZW5ndGggPSAwO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICB0aGlzLl9wYXltZW50U2VydmljZS5nZXREZXBvc2l0UGF5bWVudEluZm8odGhpcy50cmFuc2FjdGlvblV1aWQpLnRoZW4oKGluZm86IFRyYW5zYWN0aW9uRGVwb3NpdFBheW1lbnRJbmZvKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hbW91bnRUb1BheSA9IGluZm8uZGVwb3NpdFJlbWFpbmRlckFtb3VudDtcclxuICAgICAgICBpZiAoaW5mby5kZXBvc2l0UGF5bWVudHMpIHtcclxuICAgICAgICAgIGluZm8uZGVwb3NpdFBheW1lbnRzLmZvckVhY2goKGRwOiBEZXBvc2l0UGF5bWVudCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwYXltZW50TWV0aG9kOiBQYXltZW50Vmlld21vZGVsID0gdGhpcy5wYXltZW50TWV0aG9kcy5maW5kKHBtID0+IHBtLnBheW1lbnQuY29kZSA9PT0gZHAucGF5bWVudE1ldGhvZENvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmRlcG9zaXRQYXltZW50cy5wdXNoKG5ldyBEZXBvc2l0UGF5bWVudFZpZXdNb2RlbChkcCwgcGF5bWVudE1ldGhvZCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RhdGFVcmlUb0Jhc2U2NCh1cmk6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdXJpID8gXCJkYXRhOlwiICsgbWltZVR5cGUgKyBcIjtiYXNlNjQsXCIgKyB1cmkgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfd2FpdEZvclBheW1lbnRTdGF0dXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fcGF5bWVudFJlc3VsdCAmJiB0aGlzLl9wYXltZW50UmVzdWx0LnBheW1lbnRMaW5rVVVJRCkge1xyXG4gICAgICB0aGlzLl9wYXltZW50U3RhdHVzSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxDb3VudCA+PSB0aGlzLl9wYXltZW50U3RhdHVzTWF4UG9sbEludGVydmFsKSB7XHJcbiAgICAgICAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHN0YXR1czogUGF5bWVudExpbmtTdGF0dXMgPSBhd2FpdCB0aGlzLl9wYXltZW50U2VydmljZS5nZXRQYXltZW50TGlua1N0YXR1cyh0aGlzLl9wYXltZW50UmVzdWx0LnBheW1lbnRMaW5rVVVJRCk7XHJcbiAgICAgICAgICBpZiAoc3RhdHVzLnBheWVkRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbGVhckludGVydmFsKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1BzcFFyQ29kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9nZXREZXBvc2l0UGF5bWVudEluZm8oKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50VG9QYXkgPT09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVQYXltZW50KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuX3BheW1lbnRTdGF0dXNQb2xsSW50ZXJ2YWxDb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgdGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbE1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3dhaXRGb3JQaW5QYXltZW50U3RhdHVzKHBzcFRyYW5zYWN0aW9uVXVpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAocHNwVHJhbnNhY3Rpb25VdWlkKSB7XHJcbiAgICAgIHRoaXMuX3BheW1lbnRTdGF0dXNJbnRlcnZhbCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50ID49IHRoaXMuX3BheW1lbnRTdGF0dXNNYXhQb2xsSW50ZXJ2YWwpIHtcclxuICAgICAgICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgcGluU3RhdHVzOiBQc3BUcmFuc2FjdGlvblN0YXR1cyA9IGF3YWl0IHRoaXMuX3BheW1lbnRTZXJ2aWNlLmdldFBzcFRyYW5zYWN0aW9uU3RhdHVzKHBzcFRyYW5zYWN0aW9uVXVpZCk7XHJcbiAgICAgICAgICBpZiAocGluU3RhdHVzICYmIHBpblN0YXR1cy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0dXNNZXNzYWdlID0gcGluU3RhdHVzLnN0YXR1cy5kZXNjcmlwdGlvbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwaW5TdGF0dXMuc3RhdHVzRGF0ZSAmJiBwaW5TdGF0dXMuc3RhdHVzICYmIHBpblN0YXR1cy5zdGF0dXMuZW5kU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcclxuICAgICAgICAgICAgaWYgKHBpblN0YXR1cy5zdGF0dXMuY29kZSA9PT0gSW9uZVBheW1lbnRTdGF0dXNDb2RlLlBBSUQpIHtcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9nZXREZXBvc2l0UGF5bWVudEluZm8oKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5hbW91bnRUb1BheSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlUGF5bWVudCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5fcGF5bWVudFN0YXR1c1BvbGxJbnRlcnZhbENvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCB0aGlzLl9wYXltZW50U3RhdHVzUG9sbEludGVydmFsTXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYXJJbnRlcnZhbCgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fcGF5bWVudFN0YXR1c0ludGVydmFsKTtcclxuICAgIHRoaXMuX3BheW1lbnRTdGF0dXNJbnRlcnZhbCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9wcmVwYXJlQ2FzaFJlZ2lzdGVycygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUGF5bWVudE1ldGhvZCAmJiAoIXRoaXMuc2VsZWN0ZWRQYXltZW50TWV0aG9kLmV4dGVybmFsU291cmNlSWQgfHwgdGhpcy5zZWxlY3RlZFBheW1lbnRNZXRob2QucGluVGVybWluYWwpKSB7XHJcbiAgICAgIHRoaXMuY2FzaFJlZ2lzdGVycy5sZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUGF5bWVudE1ldGhvZC5wb3NHcm91cHMuZm9yRWFjaChjcmcgPT4ge1xyXG4gICAgICAgIHRoaXMuX2dldENhc2hSZWdpc3RlcnModGhpcy5icmFuY2gsIGNyZy5pZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNob3dDYXNoUmVnaXN0ZXJzID0gdGhpcy50cmFuc2FjdGlvbktpbmQgIT09IHRoaXMudHJhbnNLaW5kLkNhc2hEZXNrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Q2FzaFJlZ2lzdGVycyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0Q2FzaFJlZ2lzdGVycyhicmFuY2g/OiBzdHJpbmcsIGdyb3VwPzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvblNlcnZpY2UuZ2V0Q2FzaFJlZ2lzdGVycyhicmFuY2gsIGdyb3VwKS50aGVuKChjYXNoUmVnaXN0ZXJzOiBDYXNoUmVnaXN0ZXJbXSkgPT4ge1xyXG4gICAgICB0aGlzLmNhc2hSZWdpc3RlcnMucHVzaCguLi5jYXNoUmVnaXN0ZXJzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UGF5bWVudE1ldGhvZHMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIHRoaXMucGF5bWVudE1ldGhvZHMubGVuZ3RoID0gMDtcclxuICAgICAgdGhpcy5fcGF5bWVudFNlcnZpY2UuZ2V0UGF5bWVudE1ldGhvZHNWaWV3TW9kZWxzKHRoaXMuYnJhbmNoLCB0aGlzLnRyYW5zYWN0aW9uS2luZCkudGhlbigobWV0aG9kczogUGF5bWVudFZpZXdtb2RlbFtdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYXltZW50TWV0aG9kcyA9IG1ldGhvZHMuc2xpY2UoKTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oYW5kbGVQYXltZW50KGVtaXRQYXllZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnRyYW5zYWN0aW9uUGF5bWVudERvbmUubmV4dCgpO1xyXG4gICAgaWYgKGVtaXRQYXllZCkge1xyXG4gICAgICB0aGlzLnBheWVkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19