@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.
- package/bundles/colijnit-transaction.umd.js +2273 -628
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +378 -365
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +379 -366
- package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +2 -2
- package/esm2015/lib/component/core/base/components/transaction-header-block/transaction-header-block.component.js +6 -3
- package/esm2015/lib/component/core/base/dialog-transaction-base.component.js +5 -3
- package/esm2015/lib/component/core/base/transaction-base.component.js +6 -2
- package/esm2015/lib/component/core/core.module.js +1 -1
- package/esm2015/lib/component/deposit-payment/deposit-payment.component.js +17 -5
- package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-transaction-line-warehouse-cc.component.js +7 -2
- package/esm2015/lib/component/discount/discount.component.js +110 -0
- package/esm2015/lib/component/discount/discount.module.js +29 -0
- package/esm2015/lib/component/payment/payment.component.js +57 -38
- package/esm2015/lib/component/payment/payment.module.js +4 -2
- package/esm2015/lib/component/payment-to-pay/payment-to-pay.component.js +26 -0
- package/esm2015/lib/component/payment-to-pay/payment-to-pay.module.js +21 -0
- package/esm2015/lib/component/relation/relation-address/relation-address.module.js +7 -7
- package/esm2015/lib/component/relation/relation-address-select/relation-address-select.component.js +8 -8
- package/esm2015/lib/component/relation/relation-general/relation-general.component.js +14 -17
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.module.js +10 -10
- package/esm2015/lib/component/transaction/transaction.component.js +7 -4
- package/esm2015/lib/component/transaction/transaction.module.js +4 -2
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-overview-button-bar-button.component.js +37 -0
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-picking-button-bar-button.component.js +13 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.component.js +2 -1
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.module.js +6 -3
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/transaction-cash-register-dialog.component.js +177 -0
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/transaction-cash-register-dialog.module.js +27 -0
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.component.js +83 -0
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.module.js +24 -0
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order.component.js +177 -0
- package/esm2015/lib/component/transaction-cash-register-order/transaction-cash-register-order.module.js +41 -0
- package/esm2015/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.js +3 -2
- package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.js +11 -2
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-base.component.js +17 -9
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-payment.component.js +97 -4
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-relation.component.js +49 -20
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup.component.js +8 -2
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup.module.js +11 -3
- package/esm2015/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.js +20 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-administrative-relation.module.js +5 -5
- package/esm2015/lib/component/transaction-header-fields/transaction-header-amount-to-settle.component.js +55 -0
- package/esm2015/lib/component/transaction-header-fields/transaction-header-amount-to-settle.module.js +24 -0
- package/esm2015/lib/component/transaction-header-fields/transaction-header-branch.component.js +4 -4
- package/esm2015/lib/component/transaction-header-fields/transaction-header-branch.module.js +1 -1
- package/esm2015/lib/component/transaction-header-fields/transaction-header-currency.module.js +1 -1
- package/esm2015/lib/component/transaction-header-fields/transaction-header-deposit-amount.component.js +24 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-divide-evenly.component.js +38 -0
- package/esm2015/lib/component/transaction-header-fields/transaction-header-divide-evenly.module.js +25 -0
- package/esm2015/lib/component/transaction-header-fields/transaction-header-marketing.module.js +6 -6
- package/esm2015/lib/component/transaction-header-fields/transaction-header-payment-button/transaction-header-payment-button.component.js +14 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-payment-condition.module.js +1 -1
- package/esm2015/lib/component/transaction-header-fields/transaction-header-price-kind.module.js +1 -1
- package/esm2015/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.component.js +52 -0
- package/esm2015/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.module.js +36 -0
- package/esm2015/lib/component/transaction-line/transaction-picked-line/transaction-picked-line.component.js +2 -2
- package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line-base.component.js +12 -4
- package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line.component.js +2 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-amount.component.js +6 -1
- package/esm2015/lib/component/transaction-line-fields/transaction-line-drop-shipment-button.component.js +2 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price-list.module.js +7 -7
- package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-button.component.js +2 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-delivery-date-button.component.js +2 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier.module.js +6 -6
- package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.module.js +8 -8
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.js +2 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.module.js +6 -6
- package/esm2015/lib/component/transaction-line-purchase-confirmation/transaction-line-purchase-confirmation.component.js +8 -8
- package/esm2015/lib/component/transaction-line-side-panel-article-details/transaction-line-side-panel-article-details.component.js +5 -5
- package/esm2015/lib/component/transaction-line-side-panel-article-details/transaction-line-side-panel-article-details.module.js +6 -6
- package/esm2015/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.module.js +23 -23
- package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-picked/transaction-line-side-panel-picked.component.js +13 -14
- 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
- package/esm2015/lib/component/transaction-lines/transaction-lines.component.js +21 -1
- package/esm2015/lib/component/transaction-lines/transaction-lines.module.js +9 -9
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.js +23 -15
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.component.js +6 -2
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.js +18 -15
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-picked/transaction-quick-access-picked.component.js +2 -2
- 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
- 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
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.js +6 -6
- package/esm2015/lib/enum/icon.enum.js +7 -1
- package/esm2015/lib/enum/order-discount-type.enum.js +7 -0
- package/esm2015/lib/enum/transaction-type-category.enum.js +2 -1
- package/esm2015/lib/model/icon-svg.js +7 -1
- package/esm2015/lib/model/payment-transaction-view-model.js +3 -0
- package/esm2015/lib/res/dictionary/dictionaries.js +3 -3
- package/esm2015/lib/service/article-connector.service.js +9 -9
- package/esm2015/lib/service/dialog.service.js +14 -10
- package/esm2015/lib/service/error.service.js +15 -8
- package/esm2015/lib/service/payment.service.js +24 -5
- package/esm2015/lib/service/pending-reason.service.js +2 -2
- package/esm2015/lib/service/relation-connector.service.js +11 -11
- package/esm2015/lib/service/shared-connector.service.js +5 -5
- package/esm2015/lib/service/transaction-base.service.js +23 -5
- package/esm2015/lib/service/transaction-connector-adapter.service.js +195 -6
- package/esm2015/lib/service/transaction-connector.service.js +65 -2
- package/esm2015/lib/service/transaction-event.service.js +8 -2
- package/esm2015/lib/service/transaction-mapping.service.js +6 -3
- package/esm2015/lib/service/transaction.service.js +128 -12
- package/esm2015/lib/transaction-version.js +3 -3
- package/esm2015/public_api.js +3 -1
- package/fesm2015/colijnit-transaction.js +1700 -214
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/checkout/checkout-overview-relation-edit/style/_layout.scss +9 -0
- package/lib/component/checkout/checkout-overview-relation-edit/style/_material-definition.scss +4 -1
- package/lib/component/checkout/checkout-overview-relation-edit/style/_theme.scss +3 -0
- package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/_layout.scss +9 -0
- package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/_material-definition.scss +4 -1
- package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/_theme.scss +3 -0
- package/lib/component/checkout-simple/style/_theme.scss +1 -1
- package/lib/component/confirmation-dialog/style/material.scss +1 -1
- package/lib/component/core/base/transaction-base.component.d.ts +3 -1
- package/lib/component/deposit-payment/deposit-payment.component.d.ts +9 -3
- package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-transaction-line-warehouse-cc.component.d.ts +1 -0
- package/lib/component/discount/discount.component.d.ts +19 -0
- package/lib/component/discount/discount.module.d.ts +2 -0
- package/lib/component/discount/style/_layout.scss +0 -0
- package/lib/component/discount/style/_material-definition.scss +0 -0
- package/lib/component/discount/style/_theme.scss +0 -0
- package/lib/component/discount/style/material.scss +0 -0
- package/lib/component/payment/payment.component.d.ts +14 -6
- package/lib/component/payment/style/_layout.scss +5 -0
- package/lib/component/payment/style/_material-definition.scss +3 -6
- package/lib/component/payment/style/_theme.scss +0 -24
- package/lib/component/payment/style/material.scss +1 -0
- package/lib/component/payment-to-pay/payment-to-pay.component.d.ts +4 -0
- package/lib/component/payment-to-pay/payment-to-pay.module.d.ts +2 -0
- package/lib/component/payment-to-pay/style/_layout.scss +26 -0
- package/lib/component/payment-to-pay/style/_material-definition.scss +6 -0
- package/lib/component/payment-to-pay/style/_theme.scss +9 -0
- package/lib/component/payment-to-pay/style/material.scss +4 -0
- package/lib/component/quick-send-button/style/_layout.scss +24 -0
- package/lib/component/quick-send-button/style/_material-definition.scss +2 -0
- package/lib/component/relation/relation-address-select/relation-address-select.component.d.ts +5 -5
- package/lib/component/relation/relation-general/relation-general.component.d.ts +8 -10
- package/lib/component/tile/style/_layout.scss +4 -0
- package/lib/component/transaction/transaction.component.d.ts +3 -1
- package/lib/component/transaction-button-bar/style/_layout.scss +2 -1
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-overview-button-bar-button.component.d.ts +12 -0
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-picking-button-bar-button.component.d.ts +3 -1
- package/lib/component/transaction-cash-register-order/style/_layout.scss +129 -0
- package/lib/component/transaction-cash-register-order/style/_material-definition.scss +0 -0
- package/lib/component/transaction-cash-register-order/style/_theme.scss +4 -0
- package/lib/component/transaction-cash-register-order/style/material.scss +7 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/style/_layout.scss +28 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/style/_material-definition.scss +0 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/style/_theme.scss +4 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/style/material.scss +4 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/transaction-cash-register-dialog.component.d.ts +34 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-dialog/transaction-cash-register-dialog.module.d.ts +2 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/style/_layout.scss +37 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/style/_material-definition.scss +0 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/style/_theme.scss +4 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/style/material.scss +5 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.component.d.ts +17 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order-receipt-dialog/transaction-cash-register-order-receipt-dialog.module.d.ts +2 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order.component.d.ts +41 -0
- package/lib/component/transaction-cash-register-order/transaction-cash-register-order.module.d.ts +2 -0
- package/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.d.ts +5 -2
- package/lib/component/transaction-header/transaction-header-popup/style/_layout.scss +49 -0
- package/lib/component/transaction-header/transaction-header-popup/style/_material-definition.scss +5 -0
- package/lib/component/transaction-header/transaction-header-popup/style/_theme.scss +10 -0
- package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-base.component.d.ts +2 -2
- package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-payment.component.d.ts +32 -1
- package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-relation.component.d.ts +4 -2
- package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup.component.d.ts +1 -0
- package/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.d.ts +5 -0
- package/lib/component/transaction-header-fields/transaction-header-amount-to-settle.component.d.ts +8 -0
- package/lib/component/transaction-header-fields/transaction-header-amount-to-settle.module.d.ts +2 -0
- package/lib/component/transaction-header-fields/transaction-header-branch.component.d.ts +2 -3
- package/lib/component/transaction-header-fields/transaction-header-deposit-amount.component.d.ts +6 -0
- package/lib/component/transaction-header-fields/transaction-header-divide-evenly.component.d.ts +5 -0
- package/lib/component/transaction-header-fields/transaction-header-divide-evenly.module.d.ts +2 -0
- package/lib/component/transaction-header-fields/transaction-header-payment-button/transaction-header-payment-button.component.d.ts +7 -3
- package/lib/component/transaction-line/transaction-cash-register-order-line/style/_layout.scss +21 -0
- package/lib/component/transaction-line/transaction-cash-register-order-line/style/_material-definition.scss +0 -0
- package/lib/component/transaction-line/transaction-cash-register-order-line/style/_theme.scss +4 -0
- package/lib/component/transaction-line/transaction-cash-register-order-line/style/material.scss +4 -0
- package/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.component.d.ts +4 -0
- package/lib/component/transaction-line/transaction-cash-register-order-line/transaction-cash-register-order-line.module.d.ts +2 -0
- package/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line-base.component.d.ts +1 -1
- package/lib/component/transaction-line-action-buttons/style/_layout.scss +1 -0
- package/lib/component/transaction-line-fields/transaction-line-amount.component.d.ts +1 -0
- package/lib/component/transaction-line-fields/transaction-line-drop-shipment-button.component.d.ts +1 -1
- package/lib/component/transaction-line-fields/transaction-line-supplier-button.component.d.ts +1 -1
- package/lib/component/transaction-line-fields/transaction-line-supplier-delivery-date-button.component.d.ts +1 -1
- package/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.d.ts +1 -1
- package/lib/component/transaction-line-side-panel-article-details/transaction-line-side-panel-article-details.component.d.ts +4 -4
- package/lib/component/transaction-lines/style/material.scss +1 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.d.ts +1 -1
- package/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/style/_layout.scss +1 -1
- package/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.component.d.ts +1 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.d.ts +13 -13
- package/lib/component/transaction-quick-access/transaction-quick-access-received-goods/style/_layout.scss +1 -1
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.d.ts +2 -2
- package/lib/enum/icon.enum.d.ts +6 -0
- package/lib/enum/order-discount-type.enum.d.ts +5 -0
- package/lib/enum/transaction-type-category.enum.d.ts +2 -1
- package/lib/model/payment-transaction-view-model.d.ts +12 -0
- package/lib/res/dictionary/dictionaries.d.ts +41 -2
- package/lib/service/article-connector.service.d.ts +8 -8
- package/lib/service/dialog.service.d.ts +6 -4
- package/lib/service/error.service.d.ts +3 -4
- package/lib/service/payment.service.d.ts +7 -2
- package/lib/service/relation-connector.service.d.ts +11 -11
- package/lib/service/shared-connector.service.d.ts +3 -3
- package/lib/service/transaction-base.service.d.ts +4 -1
- package/lib/service/transaction-connector-adapter.service.d.ts +43 -19
- package/lib/service/transaction-connector.service.d.ts +40 -19
- package/lib/service/transaction-event.service.d.ts +11 -1
- package/lib/service/transaction.service.d.ts +39 -17
- package/lib/style/_variables.scss +2 -3
- package/lib/style/transaction-globals.scss +11 -0
- package/package.json +5 -5
- 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 [
|
|
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,
|
|
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
|
|
59
|
-
this.
|
|
64
|
+
paymentMethodSelected(method) {
|
|
65
|
+
this.selectedPaymentMethod = method;
|
|
60
66
|
this._prepareCashRegisters();
|
|
61
67
|
}
|
|
62
|
-
cashRegisterSelected(cashRegister
|
|
63
|
-
this.
|
|
68
|
+
cashRegisterSelected(cashRegister) {
|
|
69
|
+
this.selectedCashRegister = cashRegister;
|
|
64
70
|
}
|
|
65
71
|
handlePayment() {
|
|
66
72
|
this.statusMessage = "";
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
185
|
-
if (paymentMethod && (!paymentMethod.externalSourceId || paymentMethod.pinTerminal)) {
|
|
198
|
+
if (this.selectedPaymentMethod && (!this.selectedPaymentMethod.externalSourceId || this.selectedPaymentMethod.pinTerminal)) {
|
|
186
199
|
this.cashRegisters.length = 0;
|
|
187
|
-
|
|
200
|
+
this.selectedPaymentMethod.posGroups.forEach(crg => {
|
|
188
201
|
this._getCashRegisters(this.branch, crg.id);
|
|
189
202
|
});
|
|
190
|
-
this.showCashRegisters =
|
|
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
|
|
243
|
+
<co-payment-tile *ngFor="let paymentMethod of paymentMethods"
|
|
225
244
|
[image]="paymentMethod.image"
|
|
226
245
|
[description]="paymentMethod.payment.description"
|
|
227
|
-
[selected]="
|
|
228
|
-
(selectedChange)="paymentMethodSelected(paymentMethod.payment
|
|
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;
|
|
256
|
+
<co-payment-tile *ngFor="let cashRegister of cashRegisters;"
|
|
238
257
|
[icon]="cashRegister.icon"
|
|
239
258
|
[description]="cashRegister.description"
|
|
240
|
-
[selected]="
|
|
241
|
-
(selectedChange)="cashRegisterSelected(cashRegister
|
|
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
|
-
<
|
|
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
|