@colijnit/transaction 12.1.6 → 12.1.9
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/README.md +10 -13
- package/bundles/colijnit-transaction.umd.js +5786 -7155
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +57 -57
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +58 -58
- package/esm2015/lib/assets/dictionary/text.properties.js +418 -0
- package/esm2015/lib/component/checkout/checkout-login/checkout-login.component.js +106 -0
- package/esm2015/lib/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.js +47 -0
- package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +275 -0
- package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +538 -0
- package/esm2015/lib/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.js +30 -0
- package/esm2015/lib/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.js +31 -0
- package/esm2015/lib/component/checkout/checkout.component.js +132 -0
- package/esm2015/lib/component/checkout/checkout.module.js +86 -0
- package/esm2015/lib/component/confirmation-dialog/confirmation-dialog.component.js +38 -0
- package/esm2015/lib/component/confirmation-dialog/confirmation-dialog.module.js +24 -0
- package/esm2015/lib/component/core/base/dialog-base.component.js +6 -0
- package/esm2015/lib/component/core/base/transaction-base.component.js +96 -0
- package/esm2015/lib/component/core/core.module.js +36 -0
- package/esm2015/lib/component/core/enum/app-popup-button-type.enum.js +11 -0
- package/esm2015/lib/component/core/icon/icon.component.js +31 -0
- package/esm2015/lib/component/core/image-display/image-display.component.js +29 -0
- package/esm2015/lib/component/core/relation/customer-groups.component.js +41 -0
- package/esm2015/lib/component/core/stock-status-indicator/stock-status-indicator.component.js +24 -0
- package/esm2015/lib/component/delivery-type-tile/delivery-type-tile.component.js +40 -0
- package/esm2015/lib/component/delivery-type-tile/delivery-type-tile.module.js +26 -0
- package/esm2015/lib/component/discount/discount.component.js +107 -0
- package/esm2015/lib/component/discount/discount.module.js +29 -0
- package/esm2015/lib/component/payment/payment.component.js +73 -0
- package/esm2015/lib/component/payment/payment.module.js +27 -0
- package/esm2015/lib/component/payment-tile/payment-tile.component.js +32 -0
- package/esm2015/lib/component/payment-tile/payment-tile.module.js +25 -0
- package/esm2015/lib/component/relation-address/relation-address.component.js +125 -0
- package/esm2015/lib/component/relation-address/relation-address.module.js +28 -0
- package/esm2015/lib/component/relation-address-select/relation-address-select.component.js +146 -0
- package/esm2015/lib/component/relation-address-select/relation-address-select.module.js +33 -0
- package/esm2015/lib/component/relation-address-tile/relation-address-tile.component.js +61 -0
- package/esm2015/lib/component/relation-address-tile/relation-address-tile.module.js +32 -0
- package/esm2015/lib/component/seller-information/seller-information.component.js +61 -0
- package/esm2015/lib/component/seller-information/seller-information.module.js +21 -0
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.component.js +118 -0
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.module.js +31 -0
- package/esm2015/lib/component/shared/transaction-article-text-overview/transaction-article-text-overview.component.js +129 -0
- package/esm2015/lib/component/shared/transaction-article-text-overview/transaction-article-text-overview.module.js +34 -0
- package/esm2015/lib/component/shopping-cart/shopping-cart.component.js +57 -0
- package/esm2015/lib/component/shopping-cart/shopping-cart.module.js +27 -0
- package/esm2015/lib/component/shopping-cart-preview/shopping-cart-preview.component.js +55 -0
- package/esm2015/lib/component/shopping-cart-preview/shopping-cart-preview.module.js +29 -0
- package/esm2015/lib/component/stepper/component/stepper-step.component.js +40 -0
- package/esm2015/lib/component/stepper/stepper.component.js +124 -0
- package/esm2015/lib/component/stepper/stepper.module.js +29 -0
- package/esm2015/lib/component/tile/tile.component.js +32 -0
- package/esm2015/lib/component/tile/tile.module.js +19 -0
- package/esm2015/lib/component/transaction/transaction.component.js +96 -0
- package/esm2015/lib/component/transaction/transaction.module.js +39 -0
- package/esm2015/lib/component/transaction-header/transaction-header.component.js +36 -0
- package/esm2015/lib/component/transaction-header/transaction-header.module.js +27 -0
- package/esm2015/lib/component/transaction-header-contact/transaction-header-contact.component.js +34 -0
- package/esm2015/lib/component/transaction-header-contact/transaction-header-contact.module.js +19 -0
- package/esm2015/lib/component/transaction-header-delivery/transaction-header-delivery.component.js +57 -0
- package/esm2015/lib/component/transaction-header-delivery/transaction-header-delivery.module.js +21 -0
- package/esm2015/lib/component/transaction-header-relation/transaction-header-relation.component.js +35 -0
- package/esm2015/lib/component/transaction-header-relation/transaction-header-relation.module.js +19 -0
- package/esm2015/lib/component/transaction-line/transaction-line.component.js +278 -0
- package/esm2015/lib/component/transaction-line/transaction-line.module.js +32 -0
- package/esm2015/lib/component/transaction-line-grid/transaction-line-grid.component.js +23 -0
- package/esm2015/lib/component/transaction-line-grid/transaction-line-grid.module.js +21 -0
- package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.js +163 -0
- package/esm2015/lib/component/transaction-line-side-panel/transaction-line-side-panel.module.js +30 -0
- package/esm2015/lib/component/transaction-lines/transaction-lines.component.js +122 -0
- package/esm2015/lib/component/transaction-lines/transaction-lines.module.js +31 -0
- package/esm2015/lib/component/transaction-lines-grid/transaction-lines-grid.component.js +58 -0
- package/esm2015/lib/component/transaction-lines-grid/transaction-lines-grid.module.js +26 -0
- package/esm2015/lib/component/transaction-totals/transaction-totals.component.js +44 -0
- package/esm2015/lib/component/transaction-totals/transaction-totals.module.js +23 -0
- package/esm2015/lib/enum/content-view-mode.enum.js +10 -0
- package/esm2015/lib/enum/icon.enum.js +24 -0
- package/esm2015/lib/enum/language-code.enum.js +8 -0
- package/esm2015/lib/enum/order-discount-type.enum.js +7 -0
- package/esm2015/lib/enum/time-size.type.js +10 -0
- package/esm2015/lib/factory/business-object-factory.js +120 -0
- package/esm2015/lib/factory/decorators/boolean.decorator.js +102 -0
- package/esm2015/lib/factory/decorators/complex-array.decorator.js +55 -0
- package/esm2015/lib/factory/decorators/complex-field.decorator.js +57 -0
- package/esm2015/lib/factory/decorators/date-field.decorator.js +36 -0
- package/esm2015/lib/factory/decorators/string-number.decorator.js +43 -0
- package/esm2015/lib/model/business-object.js +81 -0
- package/esm2015/lib/model/delivery-type.js +3 -0
- package/esm2015/lib/model/icon-svg.js +23 -0
- package/esm2015/lib/model/standard-text.js +3 -0
- package/esm2015/lib/model/text-value-container.js +3 -0
- package/esm2015/lib/pipe/append.pipe.js +17 -0
- package/esm2015/lib/pipe/co-currency.pipe.js +47 -0
- package/esm2015/lib/pipe/date-duration.pipe.js +57 -0
- package/esm2015/lib/pipe/delivery-time.pipe.js +33 -0
- package/esm2015/lib/pipe/localize.pipe.js +28 -0
- package/esm2015/lib/pipe/pipe.module.js +37 -0
- package/esm2015/lib/pipe/safe-html.pipe.js +19 -0
- package/esm2015/lib/pipe/safe-style.pipe.js +19 -0
- package/esm2015/lib/service/dialog.service.js +65 -0
- package/esm2015/lib/service/dictionary.service.js +76 -0
- package/esm2015/lib/service/icon-cache.service.js +51 -0
- package/esm2015/lib/service/ione-connector-adapter.service.js +591 -0
- package/esm2015/lib/service/options.service.js +69 -0
- package/esm2015/lib/service/pending-reason.service.js +172 -0
- package/esm2015/lib/service/transaction.service.js +521 -0
- package/esm2015/lib/utils/array-utils.js +183 -0
- package/esm2015/lib/utils/is-nill.function.js +5 -0
- package/esm2015/lib/utils/string-utils.js +64 -0
- package/esm2015/public_api.js +28 -10
- package/fesm2015/colijnit-transaction.js +5913 -7162
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/{assets → lib/assets}/dictionary/text.properties.d.ts +0 -0
- package/{app → lib}/component/checkout/checkout-login/checkout-login.component.d.ts +0 -0
- package/lib/component/checkout/checkout-login/checkout-login.component.scss +35 -0
- package/{app → lib}/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.d.ts +0 -0
- package/lib/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.scss +0 -0
- package/{app → lib}/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.d.ts +23 -36
- package/lib/component/checkout/checkout-overview-delivery-edit/style/_layout.scss +98 -0
- package/lib/component/checkout/checkout-overview-delivery-edit/style/_material-definition.scss +12 -0
- package/lib/component/checkout/checkout-overview-delivery-edit/style/_theme.scss +17 -0
- package/lib/component/checkout/checkout-overview-delivery-edit/style/material.scss +7 -0
- package/{app → lib}/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.d.ts +41 -14
- package/lib/component/checkout/checkout-overview-relation-edit/style/_layout.scss +125 -0
- package/lib/component/checkout/checkout-overview-relation-edit/style/_material-definition.scss +18 -0
- package/lib/component/checkout/checkout-overview-relation-edit/style/_theme.scss +9 -0
- package/lib/component/checkout/checkout-overview-relation-edit/style/material.scss +10 -0
- package/{app → lib}/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.d.ts +2 -3
- package/lib/component/checkout/checkout-relation-suggestions-list/style/_layout.scss +8 -0
- package/lib/component/checkout/checkout-relation-suggestions-list/style/_material-definition.scss +0 -0
- package/lib/component/checkout/checkout-relation-suggestions-list/style/_theme.scss +6 -0
- package/lib/component/checkout/checkout-relation-suggestions-list/style/material.scss +5 -0
- package/lib/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.d.ts +8 -0
- package/lib/component/checkout/checkout-relation-suggestions-list-item/style/_layout.scss +34 -0
- package/lib/component/checkout/checkout-relation-suggestions-list-item/style/_material-definition.scss +8 -0
- package/lib/component/checkout/checkout-relation-suggestions-list-item/style/_theme.scss +6 -0
- package/lib/component/checkout/checkout-relation-suggestions-list-item/style/material.scss +4 -0
- package/lib/component/checkout/checkout.component.d.ts +36 -0
- package/lib/component/checkout/checkout.module.d.ts +2 -0
- package/lib/component/checkout/style/_layout.scss +31 -0
- package/lib/component/checkout/style/_material-definition.scss +5 -0
- package/lib/component/checkout/style/_theme.scss +8 -0
- package/lib/component/checkout/style/material.scss +10 -0
- package/lib/component/confirmation-dialog/confirmation-dialog.component.d.ts +8 -0
- package/lib/component/confirmation-dialog/confirmation-dialog.module.d.ts +2 -0
- package/lib/component/confirmation-dialog/style/_layout.scss +22 -0
- package/lib/component/confirmation-dialog/style/_material-definition.scss +2 -0
- package/lib/component/confirmation-dialog/style/_theme.scss +6 -0
- package/lib/component/confirmation-dialog/style/material.scss +5 -0
- package/lib/component/core/base/dialog-base.component.d.ts +4 -0
- package/lib/component/core/base/style/_layout.scss +7 -0
- package/lib/component/core/base/style/_material-definition.scss +0 -0
- package/lib/component/core/base/style/_theme.scss +6 -0
- package/lib/component/core/base/style/material.scss +4 -0
- package/{app → lib}/component/core/base/transaction-base.component.d.ts +7 -23
- package/lib/component/core/characteristic-answer/characteristic-answer.component.scss +20 -0
- package/{app → lib}/component/core/core.module.d.ts +0 -0
- package/lib/component/core/enum/app-popup-button-type.enum.d.ts +9 -0
- package/{app → lib}/component/core/icon/icon.component.d.ts +3 -2
- package/lib/component/core/icon/icon.component.scss +87 -0
- package/lib/component/core/image-display/image-display.component.d.ts +5 -0
- package/lib/component/core/image-display/style/_layout.scss +57 -0
- package/lib/component/core/image-display/style/_material-definition.scss +4 -0
- package/lib/component/core/image-display/style/_theme.scss +6 -0
- package/lib/component/core/image-display/style/material.scss +4 -0
- package/lib/component/core/relation/customer-groups.component.d.ts +13 -0
- package/lib/component/core/relation/relation-customer-groups.component.scss +6 -0
- package/{app → lib}/component/core/stock-status-indicator/stock-status-indicator.component.d.ts +0 -0
- package/lib/component/core/stock-status-indicator/stock-status-indicator.component.scss +47 -0
- package/lib/component/delivery-type-tile/delivery-type-tile.component.d.ts +10 -0
- package/lib/component/delivery-type-tile/delivery-type-tile.module.d.ts +2 -0
- package/lib/component/delivery-type-tile/style/_layout.scss +35 -0
- package/lib/component/delivery-type-tile/style/_material-definition.scss +16 -0
- package/lib/component/delivery-type-tile/style/_theme.scss +6 -0
- package/lib/component/delivery-type-tile/style/material.scss +5 -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 +18 -0
- package/lib/component/payment/payment.module.d.ts +2 -0
- package/lib/component/payment/style/_layout.scss +54 -0
- package/lib/component/payment/style/_material-definition.scss +17 -0
- package/lib/component/payment/style/_theme.scss +16 -0
- package/lib/component/payment/style/material.scss +5 -0
- package/lib/component/payment-tile/payment-tile.component.d.ts +9 -0
- package/lib/component/payment-tile/payment-tile.module.d.ts +2 -0
- package/lib/component/payment-tile/style/_layout.scss +22 -0
- package/lib/component/payment-tile/style/_material-definition.scss +0 -0
- package/lib/component/payment-tile/style/_theme.scss +6 -0
- package/lib/component/payment-tile/style/material.scss +5 -0
- package/lib/component/relation-address/relation-address.component.d.ts +28 -0
- package/lib/component/relation-address/relation-address.module.d.ts +2 -0
- package/lib/component/relation-address/style/_layout.scss +25 -0
- package/lib/component/relation-address/style/_material-definition.scss +3 -0
- package/lib/component/relation-address/style/_theme.scss +7 -0
- package/lib/component/relation-address/style/material.scss +5 -0
- package/lib/component/relation-address-select/relation-address-select.component.d.ts +33 -0
- package/lib/component/relation-address-select/relation-address-select.module.d.ts +2 -0
- package/lib/component/relation-address-select/style/_layout.scss +85 -0
- package/lib/component/relation-address-select/style/_material-definition.scss +4 -0
- package/lib/component/relation-address-select/style/_theme.scss +6 -0
- package/lib/component/relation-address-select/style/material.scss +5 -0
- package/lib/component/relation-address-tile/relation-address-tile.component.d.ts +14 -0
- package/lib/component/relation-address-tile/relation-address-tile.module.d.ts +2 -0
- package/lib/component/relation-address-tile/style/_layout.scss +42 -0
- package/lib/component/relation-address-tile/style/_material-definition.scss +16 -0
- package/lib/component/relation-address-tile/style/_theme.scss +21 -0
- package/lib/component/relation-address-tile/style/material.scss +5 -0
- package/lib/component/sell-order/sell-order-side-panel/sell-order-side-panel.component.scss +49 -0
- package/lib/component/sell-order/sell-order.component.scss +15 -0
- package/lib/component/seller-information/seller-information.component.d.ts +13 -0
- package/lib/component/seller-information/seller-information.module.d.ts +2 -0
- package/lib/component/seller-information/style/_layout.scss +21 -0
- package/lib/component/seller-information/style/_material-definition.scss +2 -0
- package/lib/component/seller-information/style/_theme.scss +7 -0
- package/lib/component/seller-information/style/material.scss +4 -0
- package/lib/component/service-order/service-order.component.scss +154 -0
- package/lib/component/service-order/summary/transaction-delivery-summary.component.scss +22 -0
- package/lib/component/service-order/summary/transaction-summary-block.component.scss +109 -0
- package/lib/component/service-order/transaction-edit-article-text/transaction-edit-article-text.component.scss +0 -0
- package/lib/component/service-order/transaction-manager/transaction-manager.component.scss +54 -0
- package/lib/component/service-order/transaction-order-line-view/transaction-order-line-view.component.scss +90 -0
- package/lib/component/service-order/transaction-order-lines/transaction-order-lines.component.scss +85 -0
- package/lib/component/service-order/transaction-order-totals/transaction-order-totals.component.scss +26 -0
- package/lib/component/service-order/transaction-relation/transaction-relation-edit.component.scss +24 -0
- package/lib/component/service-order/transaction-sidebar/transaction-line-accordion.component.scss +0 -0
- package/lib/component/service-order/transaction-sidebar/transaction-sidebar-right.component.scss +17 -0
- package/lib/component/service-order/warehouse/warehouse.component.scss +54 -0
- package/lib/component/shared/transaction-article-text/style/_layout.scss +42 -0
- package/lib/component/shared/transaction-article-text/style/_material-definition.scss +7 -0
- package/lib/component/shared/transaction-article-text/style/_theme.scss +11 -0
- package/lib/component/shared/transaction-article-text/style/material.scss +5 -0
- package/lib/component/shared/transaction-article-text/transaction-article-text.component.d.ts +31 -0
- package/lib/component/shared/transaction-article-text/transaction-article-text.module.d.ts +2 -0
- package/lib/component/shared/transaction-article-text-overview/style/_layout.scss +56 -0
- package/lib/component/shared/transaction-article-text-overview/style/_material-definition.scss +9 -0
- package/lib/component/shared/transaction-article-text-overview/style/_theme.scss +9 -0
- package/lib/component/shared/transaction-article-text-overview/style/material.scss +4 -0
- package/lib/component/shared/transaction-article-text-overview/transaction-article-text-overview.component.d.ts +30 -0
- package/lib/component/shared/transaction-article-text-overview/transaction-article-text-overview.module.d.ts +2 -0
- package/lib/component/shopping-cart/shopping-cart.component.d.ts +15 -0
- package/lib/component/shopping-cart/shopping-cart.module.d.ts +2 -0
- package/lib/component/shopping-cart/style/_layout.scss +33 -0
- package/lib/component/shopping-cart/style/_material-definition.scss +10 -0
- package/lib/component/shopping-cart/style/_theme.scss +14 -0
- package/lib/component/shopping-cart/style/material.scss +4 -0
- package/lib/component/shopping-cart-OLD/shopping-cart-manager/shopping-cart-manager.component.scss +54 -0
- package/lib/component/shopping-cart-preview/shopping-cart-preview.component.d.ts +13 -0
- package/lib/component/shopping-cart-preview/shopping-cart-preview.module.d.ts +2 -0
- package/lib/component/shopping-cart-preview/style/_layout.scss +48 -0
- package/lib/component/shopping-cart-preview/style/_material-definition.scss +20 -0
- package/lib/component/shopping-cart-preview/style/_theme.scss +17 -0
- package/lib/component/shopping-cart-preview/style/material.scss +4 -0
- package/lib/component/stepper/component/stepper-step.component.d.ts +12 -0
- package/lib/component/stepper/stepper.component.d.ts +35 -0
- package/lib/component/stepper/stepper.module.d.ts +2 -0
- package/lib/component/stepper/style/_layout.scss +107 -0
- package/lib/component/stepper/style/_material-definition.scss +18 -0
- package/lib/component/stepper/style/_theme.scss +43 -0
- package/lib/component/stepper/style/material.scss +4 -0
- package/lib/component/tile/style/_layout.scss +36 -0
- package/lib/component/tile/style/_material-definition.scss +16 -0
- package/lib/component/tile/style/_theme.scss +36 -0
- package/lib/component/tile/style/material.scss +4 -0
- package/lib/component/tile/tile.component.d.ts +6 -0
- package/lib/component/tile/tile.module.d.ts +2 -0
- package/lib/component/transaction/style/_layout.scss +25 -0
- package/lib/component/transaction/style/_material-definition.scss +7 -0
- package/lib/component/transaction/style/_theme.scss +24 -0
- package/lib/component/transaction/style/material.scss +8 -0
- package/lib/component/transaction/transaction.component.d.ts +24 -0
- package/lib/component/transaction/transaction.module.d.ts +2 -0
- package/lib/component/transaction-header/style/_layout.scss +38 -0
- package/lib/component/transaction-header/style/_material-definition.scss +8 -0
- package/lib/component/transaction-header/style/_theme.scss +11 -0
- package/lib/component/transaction-header/style/material.scss +7 -0
- package/lib/component/transaction-header/transaction-header.component.d.ts +9 -0
- package/lib/component/transaction-header/transaction-header.module.d.ts +2 -0
- package/lib/component/transaction-header-contact/style/_layout.scss +25 -0
- package/lib/component/transaction-header-contact/style/_material-definition.scss +7 -0
- package/lib/component/transaction-header-contact/style/_theme.scss +11 -0
- package/lib/component/transaction-header-contact/style/material.scss +4 -0
- package/lib/component/transaction-header-contact/transaction-header-contact.component.d.ts +4 -0
- package/lib/component/transaction-header-contact/transaction-header-contact.module.d.ts +2 -0
- package/lib/component/transaction-header-delivery/style/_layout.scss +54 -0
- package/lib/component/transaction-header-delivery/style/_material-definition.scss +12 -0
- package/lib/component/transaction-header-delivery/style/_theme.scss +24 -0
- package/lib/component/transaction-header-delivery/style/material.scss +4 -0
- package/lib/component/transaction-header-delivery/transaction-header-delivery.component.d.ts +13 -0
- package/lib/component/transaction-header-delivery/transaction-header-delivery.module.d.ts +2 -0
- package/lib/component/transaction-header-relation/style/_layout.scss +25 -0
- package/lib/component/transaction-header-relation/style/_material-definition.scss +7 -0
- package/lib/component/transaction-header-relation/style/_theme.scss +11 -0
- package/lib/component/transaction-header-relation/style/material.scss +4 -0
- package/lib/component/transaction-header-relation/transaction-header-relation.component.d.ts +4 -0
- package/lib/component/transaction-header-relation/transaction-header-relation.module.d.ts +2 -0
- package/lib/component/transaction-line/style/_layout.scss +143 -0
- package/lib/component/transaction-line/style/_material-definition.scss +29 -0
- package/lib/component/transaction-line/style/_theme.scss +41 -0
- package/lib/component/transaction-line/style/material.scss +9 -0
- package/lib/component/transaction-line/transaction-line.component.d.ts +51 -0
- package/lib/component/transaction-line/transaction-line.module.d.ts +2 -0
- package/lib/component/transaction-line-grid/style/_layout.scss +6 -0
- package/lib/component/transaction-line-grid/style/_material-definition.scss +0 -0
- package/lib/component/transaction-line-grid/style/_theme.scss +6 -0
- package/lib/component/transaction-line-grid/style/material.scss +4 -0
- package/lib/component/transaction-line-grid/transaction-line-grid.component.d.ts +5 -0
- package/lib/component/transaction-line-grid/transaction-line-grid.module.d.ts +2 -0
- package/lib/component/transaction-line-side-panel/style/_layout.scss +47 -0
- package/lib/component/transaction-line-side-panel/style/_material-definition.scss +10 -0
- package/lib/component/transaction-line-side-panel/style/_theme.scss +7 -0
- package/lib/component/transaction-line-side-panel/style/material.scss +4 -0
- package/lib/component/transaction-line-side-panel/transaction-line-side-panel.component.d.ts +20 -0
- package/lib/component/transaction-line-side-panel/transaction-line-side-panel.module.d.ts +2 -0
- package/lib/component/transaction-lines/style/_layout.scss +33 -0
- package/lib/component/transaction-lines/style/_material-definition.scss +3 -0
- package/lib/component/transaction-lines/style/_theme.scss +19 -0
- package/lib/component/transaction-lines/style/material.scss +7 -0
- package/lib/component/transaction-lines/transaction-lines.component.d.ts +32 -0
- package/lib/component/transaction-lines/transaction-lines.module.d.ts +2 -0
- package/lib/component/transaction-lines-grid/style/_layout.scss +37 -0
- package/lib/component/transaction-lines-grid/style/_material-definition.scss +19 -0
- package/lib/component/transaction-lines-grid/style/_theme.scss +15 -0
- package/lib/component/transaction-lines-grid/style/material.scss +5 -0
- package/lib/component/transaction-lines-grid/transaction-lines-grid.component.d.ts +17 -0
- package/lib/component/transaction-lines-grid/transaction-lines-grid.module.d.ts +2 -0
- package/lib/component/transaction-totals/style/_layout.scss +35 -0
- package/lib/component/transaction-totals/style/_material-definition.scss +15 -0
- package/lib/component/transaction-totals/style/_theme.scss +10 -0
- package/lib/component/transaction-totals/style/material.scss +4 -0
- package/lib/component/transaction-totals/transaction-totals.component.d.ts +9 -0
- package/lib/component/transaction-totals/transaction-totals.module.d.ts +2 -0
- package/{app → lib}/enum/content-view-mode.enum.d.ts +0 -0
- package/lib/enum/icon.enum.d.ts +22 -0
- package/{app → lib}/enum/language-code.enum.d.ts +0 -0
- package/{app → lib}/enum/order-discount-type.enum.d.ts +0 -0
- package/{app → lib}/enum/time-size.type.d.ts +0 -0
- package/{factory → lib/factory}/business-object-factory.d.ts +1 -1
- package/{factory → lib/factory}/decorators/boolean.decorator.d.ts +0 -0
- package/{factory → lib/factory}/decorators/complex-array.decorator.d.ts +0 -0
- package/{factory → lib/factory}/decorators/complex-field.decorator.d.ts +0 -0
- package/{factory → lib/factory}/decorators/date-field.decorator.d.ts +0 -0
- package/{factory → lib/factory}/decorators/string-number.decorator.d.ts +0 -0
- package/{app → lib}/model/business-object.d.ts +0 -0
- package/lib/model/delivery-type.d.ts +7 -0
- package/lib/model/icon-svg.d.ts +4 -0
- package/{app → lib}/model/standard-text.d.ts +0 -0
- package/{app → lib}/model/text-value-container.d.ts +0 -0
- package/{app → lib}/pipe/append.pipe.d.ts +0 -0
- package/{app → lib}/pipe/co-currency.pipe.d.ts +0 -0
- package/{app → lib}/pipe/date-duration.pipe.d.ts +0 -0
- package/{app → lib}/pipe/delivery-time.pipe.d.ts +0 -0
- package/{app → lib}/pipe/localize.pipe.d.ts +0 -0
- package/lib/pipe/pipe.module.d.ts +2 -0
- package/lib/pipe/safe-html.pipe.d.ts +7 -0
- package/{app/pipe/safe-style-pipe.d.ts → lib/pipe/safe-style.pipe.d.ts} +0 -0
- package/lib/service/dialog.service.d.ts +11 -0
- package/{app → lib}/service/dictionary.service.d.ts +0 -0
- package/lib/service/icon-cache.service.d.ts +18 -0
- package/{app → lib}/service/ione-connector-adapter.service.d.ts +15 -8
- package/lib/service/options.service.d.ts +12 -0
- package/lib/service/pending-reason.service.d.ts +31 -0
- package/{app → lib}/service/transaction.service.d.ts +16 -47
- package/lib/style/_mixin.scss +9 -0
- package/lib/style/_variables.scss +101 -0
- package/{utils → lib/utils}/array-utils.d.ts +0 -0
- package/{utils → lib/utils}/is-nill.function.d.ts +0 -0
- package/{app → lib}/utils/string-utils.d.ts +0 -0
- package/package.json +27 -34
- package/public_api.d.ts +27 -6
- package/app/component/checkout/checkout/checkout.component.d.ts +0 -32
- package/app/component/checkout/checkout-overview/checkout-overview.component.d.ts +0 -42
- package/app/component/checkout/checkout-overview-block/checkout-overview-block.component.d.ts +0 -12
- package/app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component.d.ts +0 -22
- package/app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.d.ts +0 -12
- package/app/component/checkout/checkout-transaction/checkout-transaction.component.d.ts +0 -13
- package/app/component/checkout/ione-checkout.component.d.ts +0 -39
- package/app/component/checkout/ione-checkout.module.d.ts +0 -2
- package/app/component/core/base/default-ok-cancel-buttons.component.d.ts +0 -13
- package/app/component/core/characteristic-answer/characteristic-answer.component.d.ts +0 -22
- package/app/component/core/directive/template-wrapper.directive.d.ts +0 -13
- package/app/component/core/image-display/image-display.component.d.ts +0 -13
- package/app/component/core/no-image-display/no-image-display.component.d.ts +0 -5
- package/app/component/service-order/ione-service-order-module.d.ts +0 -2
- package/app/component/service-order/ione-service-order.component.d.ts +0 -25
- package/app/component/service-order/service-order.component.d.ts +0 -52
- package/app/component/service-order/summary/transaction-article-summary.component.d.ts +0 -17
- package/app/component/service-order/summary/transaction-delivery-summary.component.d.ts +0 -20
- package/app/component/service-order/summary/transaction-order-summary.component.d.ts +0 -16
- package/app/component/service-order/summary/transaction-payment-info.component.d.ts +0 -14
- package/app/component/service-order/summary/transaction-product-contract-summary.component.d.ts +0 -7
- package/app/component/service-order/summary/transaction-product-summary.component.d.ts +0 -15
- package/app/component/service-order/summary/transaction-service-status.component.d.ts +0 -15
- package/app/component/service-order/summary/transaction-service-summary.component.d.ts +0 -15
- package/app/component/service-order/summary/transaction-summary-block.component.d.ts +0 -16
- package/app/component/service-order/transaction-article-text/transaction-article-text.component.d.ts +0 -33
- package/app/component/service-order/transaction-article-text-overview/transaction-article-text-overview.component.d.ts +0 -23
- package/app/component/service-order/transaction-edit-article-text/transaction-edit-article-text.component.d.ts +0 -19
- package/app/component/service-order/transaction-header-block/transaction-header-block.component.d.ts +0 -15
- package/app/component/service-order/transaction-manager/transaction-manager.component.d.ts +0 -64
- package/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.d.ts +0 -16
- package/app/component/service-order/transaction-order-lines/transaction-order-lines.component.d.ts +0 -25
- package/app/component/service-order/transaction-order-totals/transaction-order-totals.component.d.ts +0 -6
- package/app/component/service-order/transaction-relation/transaction-relation-address.component.d.ts +0 -22
- package/app/component/service-order/transaction-relation/transaction-relation-edit.component.d.ts +0 -29
- package/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.d.ts +0 -11
- package/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.d.ts +0 -26
- package/app/component/service-order/warehouse/warehouse.component.d.ts +0 -35
- package/app/component/shopping-cart/ione-shopping-cart.component.d.ts +0 -71
- package/app/component/shopping-cart/ione-shopping-cart.module.d.ts +0 -2
- package/app/component/shopping-cart/shopping-cart/shopping-cart.component.d.ts +0 -61
- package/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.d.ts +0 -34
- package/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.d.ts +0 -91
- package/app/enum/checkout-steps.enum.d.ts +0 -7
- package/app/enum/direction.enum.d.ts +0 -6
- package/app/enum/position-grid-row.enum.d.ts +0 -4
- package/app/model/transaction-add-text-line-request.d.ts +0 -9
- package/app/service/options.service.d.ts +0 -14
- package/app/service/transaction-event.service.d.ts +0 -53
- package/css/styles.css +0 -38
- package/esm2015/app/component/checkout/checkout/checkout.component.js +0 -149
- package/esm2015/app/component/checkout/checkout-login/checkout-login.component.js +0 -106
- package/esm2015/app/component/checkout/checkout-overview/checkout-overview.component.js +0 -185
- package/esm2015/app/component/checkout/checkout-overview-block/checkout-overview-block.component.js +0 -47
- package/esm2015/app/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.js +0 -47
- package/esm2015/app/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +0 -420
- package/esm2015/app/component/checkout/checkout-overview-relation-address/checkout-overview-relation-address.component.js +0 -115
- package/esm2015/app/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +0 -396
- package/esm2015/app/component/checkout/checkout-relation-suggestions-list/checkout-relation-suggestions-list.component.js +0 -33
- package/esm2015/app/component/checkout/checkout-relation-suggestions-list-item/checkout-relation-suggestions-list-item.component.js +0 -53
- package/esm2015/app/component/checkout/checkout-transaction/checkout-transaction.component.js +0 -53
- package/esm2015/app/component/checkout/ione-checkout.component.js +0 -135
- package/esm2015/app/component/checkout/ione-checkout.module.js +0 -76
- package/esm2015/app/component/core/base/default-ok-cancel-buttons.component.js +0 -39
- package/esm2015/app/component/core/base/transaction-base.component.js +0 -146
- package/esm2015/app/component/core/characteristic-answer/characteristic-answer.component.js +0 -100
- package/esm2015/app/component/core/core.module.js +0 -43
- package/esm2015/app/component/core/directive/template-wrapper.directive.js +0 -69
- package/esm2015/app/component/core/icon/icon.component.js +0 -32
- package/esm2015/app/component/core/image-display/image-display.component.js +0 -41
- package/esm2015/app/component/core/no-image-display/no-image-display.component.js +0 -26
- package/esm2015/app/component/core/stock-status-indicator/stock-status-indicator.component.js +0 -24
- package/esm2015/app/component/service-order/ione-service-order-module.js +0 -114
- package/esm2015/app/component/service-order/ione-service-order.component.js +0 -96
- package/esm2015/app/component/service-order/service-order.component.js +0 -199
- package/esm2015/app/component/service-order/summary/transaction-article-summary.component.js +0 -55
- package/esm2015/app/component/service-order/summary/transaction-delivery-summary.component.js +0 -59
- package/esm2015/app/component/service-order/summary/transaction-order-summary.component.js +0 -43
- package/esm2015/app/component/service-order/summary/transaction-payment-info.component.js +0 -35
- package/esm2015/app/component/service-order/summary/transaction-product-contract-summary.component.js +0 -38
- package/esm2015/app/component/service-order/summary/transaction-product-summary.component.js +0 -41
- package/esm2015/app/component/service-order/summary/transaction-service-status.component.js +0 -37
- package/esm2015/app/component/service-order/summary/transaction-service-summary.component.js +0 -38
- package/esm2015/app/component/service-order/summary/transaction-summary-block.component.js +0 -53
- package/esm2015/app/component/service-order/transaction-article-text/transaction-article-text.component.js +0 -140
- package/esm2015/app/component/service-order/transaction-article-text-overview/transaction-article-text-overview.component.js +0 -105
- package/esm2015/app/component/service-order/transaction-edit-article-text/transaction-edit-article-text.component.js +0 -73
- package/esm2015/app/component/service-order/transaction-header-block/transaction-header-block.component.js +0 -83
- package/esm2015/app/component/service-order/transaction-manager/transaction-manager.component.js +0 -314
- package/esm2015/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.js +0 -76
- package/esm2015/app/component/service-order/transaction-order-lines/transaction-order-lines.component.js +0 -71
- package/esm2015/app/component/service-order/transaction-order-totals/transaction-order-totals.component.js +0 -36
- package/esm2015/app/component/service-order/transaction-relation/transaction-relation-address.component.js +0 -116
- package/esm2015/app/component/service-order/transaction-relation/transaction-relation-edit.component.js +0 -225
- package/esm2015/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.js +0 -172
- package/esm2015/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.js +0 -120
- package/esm2015/app/component/service-order/warehouse/warehouse.component.js +0 -133
- package/esm2015/app/component/shopping-cart/ione-shopping-cart.component.js +0 -185
- package/esm2015/app/component/shopping-cart/ione-shopping-cart.module.js +0 -62
- package/esm2015/app/component/shopping-cart/shopping-cart/shopping-cart.component.js +0 -294
- package/esm2015/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.js +0 -172
- package/esm2015/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js +0 -451
- package/esm2015/app/enum/checkout-steps.enum.js +0 -10
- package/esm2015/app/enum/content-view-mode.enum.js +0 -10
- package/esm2015/app/enum/direction.enum.js +0 -9
- package/esm2015/app/enum/language-code.enum.js +0 -8
- package/esm2015/app/enum/order-discount-type.enum.js +0 -7
- package/esm2015/app/enum/position-grid-row.enum.js +0 -6
- package/esm2015/app/enum/time-size.type.js +0 -10
- package/esm2015/app/model/business-object.js +0 -81
- package/esm2015/app/model/standard-text.js +0 -3
- package/esm2015/app/model/text-value-container.js +0 -3
- package/esm2015/app/model/transaction-add-text-line-request.js +0 -11
- package/esm2015/app/pipe/append.pipe.js +0 -17
- package/esm2015/app/pipe/co-currency.pipe.js +0 -47
- package/esm2015/app/pipe/date-duration.pipe.js +0 -57
- package/esm2015/app/pipe/delivery-time.pipe.js +0 -33
- package/esm2015/app/pipe/localize.pipe.js +0 -28
- package/esm2015/app/pipe/safe-style-pipe.js +0 -19
- package/esm2015/app/service/dictionary.service.js +0 -76
- package/esm2015/app/service/ione-connector-adapter.service.js +0 -553
- package/esm2015/app/service/options.service.js +0 -92
- package/esm2015/app/service/transaction-event.service.js +0 -26
- package/esm2015/app/service/transaction.service.js +0 -572
- package/esm2015/app/utils/string-utils.js +0 -64
- package/esm2015/assets/dictionary/text.properties.js +0 -332
- package/esm2015/factory/business-object-factory.js +0 -120
- package/esm2015/factory/decorators/boolean.decorator.js +0 -102
- package/esm2015/factory/decorators/complex-array.decorator.js +0 -55
- package/esm2015/factory/decorators/complex-field.decorator.js +0 -57
- package/esm2015/factory/decorators/date-field.decorator.js +0 -36
- package/esm2015/factory/decorators/string-number.decorator.js +0 -43
- package/esm2015/utils/array-utils.js +0 -183
- package/esm2015/utils/is-nill.function.js +0 -5
|
@@ -1,572 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { EventEmitter, Injectable } from "@angular/core";
|
|
3
|
-
import { IOneConnectorAdapterService } from "./ione-connector-adapter.service";
|
|
4
|
-
import { NULL_CUSTOMER_FULL_OBJECT, NULL_RELATION_OBJECT } from "@colijnit/transactionapi/build/model/nul-relation-object";
|
|
5
|
-
import { TransactionKind } from "@colijnit/transactionapi/build/enum/transaction-kind.enum";
|
|
6
|
-
import { SequenceName } from "@colijnit/transactionapi/build/enum/sequence-name.enum";
|
|
7
|
-
import { isNill } from "@colijnit/transactionapi/build/utils/function/is-nill.function";
|
|
8
|
-
import { ArrayUtils } from "@colijnit/transactionapi/build/utils/array-utils";
|
|
9
|
-
import { SetTransactionDeliveryOptionsRequest } from "@colijnit/transactionapi/build/model/set-transaction-delivery-options-request.bo";
|
|
10
|
-
import { TransactionTotal } from "@colijnit/transactionapi/build/model/transaction-total.bo";
|
|
11
|
-
import { TransactionLineType } from "@colijnit/transactionapi/build/enum/transaction-line-type.enum";
|
|
12
|
-
import { LineOperationStatus } from "@colijnit/transactionapi/build/model/line-operation-status.bo";
|
|
13
|
-
import { TransactionInfo } from "@colijnit/transactionapi/build/model/transaction-info.bo";
|
|
14
|
-
import { PendingReasonType } from "@colijnit/transactionapi/build/enum/pending-reason-type.enum";
|
|
15
|
-
import { PromptService } from "@colijnit/corecomponents_v12";
|
|
16
|
-
export class TransactionService {
|
|
17
|
-
constructor(_connector, _prompt) {
|
|
18
|
-
this._connector = _connector;
|
|
19
|
-
this._prompt = _prompt;
|
|
20
|
-
this.transactionUpdated = new EventEmitter();
|
|
21
|
-
this.transactionLoaded = new EventEmitter();
|
|
22
|
-
this.applicationUser = false;
|
|
23
|
-
this.articleAmount = 0;
|
|
24
|
-
this._currentLines = [];
|
|
25
|
-
this._currentTotals = new TransactionTotal();
|
|
26
|
-
this._currentRelation = NULL_RELATION_OBJECT;
|
|
27
|
-
this._currentTransaction = new TransactionInfo();
|
|
28
|
-
this._currentLineOperationStatus = new LineOperationStatus();
|
|
29
|
-
this._currentLineOperationStatuses = [];
|
|
30
|
-
this._initializeTransaction();
|
|
31
|
-
}
|
|
32
|
-
get currentLines() {
|
|
33
|
-
return this._currentLines;
|
|
34
|
-
}
|
|
35
|
-
set currentLines(value) {
|
|
36
|
-
this._currentLines = value;
|
|
37
|
-
this.articleAmount = ArrayUtils.FindAll(this._currentLines, line => line.isArticle).length;
|
|
38
|
-
}
|
|
39
|
-
set currentTotals(value) {
|
|
40
|
-
this._currentTotals = value;
|
|
41
|
-
}
|
|
42
|
-
get currentTotals() {
|
|
43
|
-
return this._currentTotals;
|
|
44
|
-
}
|
|
45
|
-
get currentRelation() {
|
|
46
|
-
return this._currentRelation;
|
|
47
|
-
}
|
|
48
|
-
get currentTransaction() {
|
|
49
|
-
return this._currentTransaction;
|
|
50
|
-
}
|
|
51
|
-
set currentLineOperationStatuses(values) {
|
|
52
|
-
this._currentLineOperationStatuses = values;
|
|
53
|
-
}
|
|
54
|
-
get currentLineOperationStatuses() {
|
|
55
|
-
return this._currentLineOperationStatuses;
|
|
56
|
-
}
|
|
57
|
-
set currentLineOperationStatus(value) {
|
|
58
|
-
this._currentLineOperationStatus = value;
|
|
59
|
-
}
|
|
60
|
-
get currentLineOperationStatus() {
|
|
61
|
-
const status = this.currentLineOperationStatuses.find(line => line.pendingReasonType !== PendingReasonType.NONE
|
|
62
|
-
&& line.pendingReasonType !== PendingReasonType.NON_CRITICAL_DISCONTINUATION);
|
|
63
|
-
return status;
|
|
64
|
-
}
|
|
65
|
-
pendingLineOperationStatus(lineOperationStatuses) {
|
|
66
|
-
const status = lineOperationStatuses.find(line => line.pendingReasonType !== PendingReasonType.NONE
|
|
67
|
-
&& line.pendingReasonType !== PendingReasonType.NON_CRITICAL_DISCONTINUATION);
|
|
68
|
-
return status;
|
|
69
|
-
}
|
|
70
|
-
getArticleFullObject(goodId) {
|
|
71
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
72
|
-
return yield this._connector.getArticleFullObject(goodId);
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
getGoodIdFromArticleNr(sku) {
|
|
76
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
-
return yield this._connector.getGoodIdFromArticleNr(sku);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
getRelation() {
|
|
81
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
const relationNo = yield this._connector.getRelationNumber(this._currentTransaction.relation.relationId);
|
|
83
|
-
if (relationNo) {
|
|
84
|
-
this._currentRelation = yield this._connector.getCustomerFullObject(Number(relationNo));
|
|
85
|
-
yield this.loadCountriesOfRelationAddresses();
|
|
86
|
-
}
|
|
87
|
-
return this._currentRelation;
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
loadCountriesOfRelationAddresses() {
|
|
91
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
-
for (const address of this.currentRelation.addresses) {
|
|
93
|
-
const country = yield this.getCountry(address.countryId);
|
|
94
|
-
address.countryName = country.description;
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
getCountry(countryCode) {
|
|
99
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
-
return yield this._connector.getCountry(countryCode);
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
getRelationNumber(relationId) {
|
|
104
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
105
|
-
return this._connector.getRelationNumber(relationId);
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
saveNewRelation() {
|
|
109
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
110
|
-
this.cleanRelationBeforeSave();
|
|
111
|
-
this._currentRelation = yield this._connector.insertCustomer(this._currentRelation);
|
|
112
|
-
yield this.addRelationToTransaction(this._currentRelation.relationId);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
saveRelation() {
|
|
116
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
-
this.cleanRelationBeforeSave();
|
|
118
|
-
this._currentRelation = yield this._connector.updateCustomer(this._currentRelation);
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
cleanRelationBeforeSave() {
|
|
122
|
-
ArrayUtils.RemoveElementsByFilter(this._currentRelation.contactOptions, ((item) => {
|
|
123
|
-
return isNill(item.value);
|
|
124
|
-
}));
|
|
125
|
-
}
|
|
126
|
-
getSequenceValue() {
|
|
127
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
return yield this._connector.getSequenceValue(SequenceName.RelationId);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
getRelationPrivacySettings() {
|
|
132
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
-
return yield this._connector.getRelationPrivacySettings();
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
createTransaction() {
|
|
137
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
return new Promise((resolve, reject) => {
|
|
139
|
-
this._connector.createTransaction(TransactionKind.SalesOrder, "1").then((response) => {
|
|
140
|
-
this._rememberCurrentTransaction(response);
|
|
141
|
-
resolve(true);
|
|
142
|
-
}, (error) => {
|
|
143
|
-
reject(error);
|
|
144
|
-
}).catch((reason) => {
|
|
145
|
-
reject(false);
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
resolvePendingLineReason(pendingLineValues, remember = true) {
|
|
151
|
-
return new Promise((resolve) => {
|
|
152
|
-
this._connector.resolvePendingLineReason(pendingLineValues).then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
153
|
-
this._rememberResponse(remember, response);
|
|
154
|
-
resolve(response);
|
|
155
|
-
})).catch((reason) => {
|
|
156
|
-
resolve();
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
getTransaction(transactionNo) {
|
|
161
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
162
|
-
return yield this.openExistingTransaction(TransactionKind.SalesOrder, transactionNo);
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
openExistingTransaction(kind, transactionNr) {
|
|
166
|
-
return new Promise((resolve, reject) => {
|
|
167
|
-
this._connector.getTransactionByNrAndKind(kind, transactionNr)
|
|
168
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
169
|
-
if (response.isSuccess) {
|
|
170
|
-
this.transactionLoaded.emit(response);
|
|
171
|
-
resolve(true);
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
reject(false);
|
|
175
|
-
}
|
|
176
|
-
}))
|
|
177
|
-
.catch((reason) => {
|
|
178
|
-
reject(false);
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
getTransactionById(transactionId) {
|
|
183
|
-
return new Promise((resolve, reject) => {
|
|
184
|
-
this._connector.getTransactionById(transactionId)
|
|
185
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
186
|
-
if (response.isSuccess) {
|
|
187
|
-
this.transactionLoaded.emit(response);
|
|
188
|
-
resolve(true);
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
reject(false);
|
|
192
|
-
}
|
|
193
|
-
}))
|
|
194
|
-
.catch((reason) => {
|
|
195
|
-
reject(false);
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
saveTransaction(close = false) {
|
|
200
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
201
|
-
const response = yield this._connector.saveTransaction(this.currentTransaction.uuid);
|
|
202
|
-
if (response.isSuccess) {
|
|
203
|
-
this._rememberCurrentTransaction(response);
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
saveTransactionByUuid(transactionUuid) {
|
|
208
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
209
|
-
return new Promise((resolve, reject) => {
|
|
210
|
-
this._connector.saveTransaction(transactionUuid)
|
|
211
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
212
|
-
if (response.isSuccess) {
|
|
213
|
-
this.transactionLoaded.emit(response);
|
|
214
|
-
resolve(true);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
reject(false);
|
|
218
|
-
}
|
|
219
|
-
}))
|
|
220
|
-
.catch((reason) => {
|
|
221
|
-
if (reason) {
|
|
222
|
-
this._prompt.showError(reason.getFullErrorString());
|
|
223
|
-
}
|
|
224
|
-
reject(false);
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
addRelationToTransaction(relationId) {
|
|
230
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
231
|
-
const success = yield this._connector.addRelationToTransaction(this._currentTransaction.uuid, relationId);
|
|
232
|
-
if (success) {
|
|
233
|
-
yield this.saveTransaction();
|
|
234
|
-
yield this.getTransaction(this._currentTransaction.transactionNr);
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
getCommissionCodes(languageCode) {
|
|
239
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
240
|
-
return yield this._connector.getCommissionCodes(languageCode);
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
getInOutCollection(languageCode) {
|
|
244
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
245
|
-
return yield this._connector.getInOutCollection(languageCode);
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
getTransactionArticleWarehouses(goodId) {
|
|
249
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
250
|
-
return this._connector.getTransactionArticleWarehouses(goodId);
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
getMarketingCodes() {
|
|
254
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
255
|
-
return yield this._connector.getMarketingCodes();
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
insertCustomer(relation) {
|
|
259
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
260
|
-
return yield this._connector.insertCustomer(relation);
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
updateCustomer(relation) {
|
|
264
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
265
|
-
return new Promise((resolve, reject) => {
|
|
266
|
-
this._connector.updateCustomer(relation).then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
267
|
-
this._currentRelation = relation;
|
|
268
|
-
resolve(response);
|
|
269
|
-
}))
|
|
270
|
-
.catch((response) => {
|
|
271
|
-
resolve(response);
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
getDeliveryMethods() {
|
|
277
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
278
|
-
return yield this._connector.getDeliveryMethods();
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
getDeliveryOptions() {
|
|
282
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
283
|
-
return yield this._connector.getDeliveryOptions();
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
setTransactionDeliveryOptions() {
|
|
287
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
288
|
-
const transactionDeliveryOptionsRequest = this._getTransactionDeliveryOptions();
|
|
289
|
-
return new Promise((resolve, reject) => {
|
|
290
|
-
this._connector.setTransactionDeliveryOptions(transactionDeliveryOptionsRequest).then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
291
|
-
resolve(response.isSuccess);
|
|
292
|
-
}), (error) => {
|
|
293
|
-
reject(error);
|
|
294
|
-
})
|
|
295
|
-
.catch((response) => {
|
|
296
|
-
resolve(false);
|
|
297
|
-
});
|
|
298
|
-
});
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
getRelationListObjects(relationRequest) {
|
|
302
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
303
|
-
return yield this._connector.getRelationListObjects(relationRequest);
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
retrieveLineImage(line) {
|
|
307
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
308
|
-
return yield this.getArticleImageByArticleNumber(line.articleNumber);
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
getArticleImageByArticleNumber(articleNumber) {
|
|
312
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
313
|
-
const goodId = yield this._connector.getGoodIdFromArticleNr(articleNumber);
|
|
314
|
-
return this.getArticleImageByGoodId(goodId);
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
getArticleImageByGoodId(goodId) {
|
|
318
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
319
|
-
if (!isNaN(goodId)) {
|
|
320
|
-
return this._connector.getSingleImage(goodId, 1, true, true);
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
return "";
|
|
324
|
-
}
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
addArticle(articleNo, amount = 1, warehouseNo = 1, commissionCode = "2", isReturn = false, aboveLineNr = 0, belowLineNr = 0) {
|
|
328
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
329
|
-
return new Promise((resolve, reject) => {
|
|
330
|
-
this._connector.addTransactionLine(this._currentTransaction.uuid, TransactionLineType.ArticleLine, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr)
|
|
331
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
332
|
-
resolve(true);
|
|
333
|
-
}), (error) => {
|
|
334
|
-
reject(error);
|
|
335
|
-
})
|
|
336
|
-
.catch((reason) => {
|
|
337
|
-
resolve(false);
|
|
338
|
-
});
|
|
339
|
-
});
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
addArticleToTransaction(transactionUuid, articleNo, amount = 1, warehouseNo = 1, commissionCode = "2", isReturn = false, aboveLineNr = 0, belowLineNr = 0) {
|
|
343
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
344
|
-
return new Promise((resolve, reject) => {
|
|
345
|
-
this._connector.addTransactionLine(transactionUuid, TransactionLineType.ArticleLine, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr)
|
|
346
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
347
|
-
resolve(response);
|
|
348
|
-
}), (error) => {
|
|
349
|
-
this._prompt.showError(error);
|
|
350
|
-
reject(error);
|
|
351
|
-
})
|
|
352
|
-
.catch((reason) => {
|
|
353
|
-
this._prompt.showError(reason.getFullErrorString());
|
|
354
|
-
resolve(null);
|
|
355
|
-
});
|
|
356
|
-
});
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
addTransactionLine(lineType, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr, remember = true) {
|
|
360
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
361
|
-
return new Promise((resolve, reject) => {
|
|
362
|
-
this._connector.addTransactionLine(this.currentTransaction.uuid, lineType, articleNo, amount, warehouseNo, commissionCode, isReturn, aboveLineNr, belowLineNr)
|
|
363
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
364
|
-
this._rememberResponse(remember, response);
|
|
365
|
-
resolve(response);
|
|
366
|
-
}), (error) => {
|
|
367
|
-
reject(error);
|
|
368
|
-
})
|
|
369
|
-
.catch((reason) => {
|
|
370
|
-
resolve(null);
|
|
371
|
-
});
|
|
372
|
-
});
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
addTextLine(showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr, remember = true) {
|
|
376
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
377
|
-
return new Promise((resolve, reject) => {
|
|
378
|
-
this._connector.addTextLineToTransaction(this.currentTransaction.uuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr)
|
|
379
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
380
|
-
this._rememberResponse(remember, response);
|
|
381
|
-
resolve(response);
|
|
382
|
-
}), (error) => {
|
|
383
|
-
reject(error);
|
|
384
|
-
})
|
|
385
|
-
.catch((reason) => {
|
|
386
|
-
resolve(null);
|
|
387
|
-
});
|
|
388
|
-
});
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
addTextLineToTransaction(transactionUuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr) {
|
|
392
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
393
|
-
return new Promise((resolve, reject) => {
|
|
394
|
-
this._connector.addTextLineToTransaction(transactionUuid, showOnDocuments, text, amount, articleBound, refArticleLineNr, aboveLineNr, belowLineNr)
|
|
395
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
396
|
-
resolve(response);
|
|
397
|
-
}), (error) => {
|
|
398
|
-
reject(error);
|
|
399
|
-
})
|
|
400
|
-
.catch((reason) => {
|
|
401
|
-
resolve(null);
|
|
402
|
-
});
|
|
403
|
-
});
|
|
404
|
-
});
|
|
405
|
-
}
|
|
406
|
-
changeLineSequence(lineUuid, aboveLineNr, belowLineNr, remember = true) {
|
|
407
|
-
return new Promise((resolve, reject) => {
|
|
408
|
-
this._connector.changeLineSequence(this.currentTransaction.uuid, lineUuid, aboveLineNr, belowLineNr)
|
|
409
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
410
|
-
this._rememberResponse(remember, response);
|
|
411
|
-
resolve(response);
|
|
412
|
-
}), (error) => {
|
|
413
|
-
reject(error);
|
|
414
|
-
})
|
|
415
|
-
.catch((reason) => {
|
|
416
|
-
resolve(null);
|
|
417
|
-
});
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
cancelAddTransactionLine(lineUuid, remember = true) {
|
|
421
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
422
|
-
return new Promise((resolve, reject) => {
|
|
423
|
-
this._connector.cancelAddTransactionLine(lineUuid)
|
|
424
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
425
|
-
if (remember) {
|
|
426
|
-
this._rememberCurrentTransaction(response);
|
|
427
|
-
}
|
|
428
|
-
if (response.isSuccess) {
|
|
429
|
-
resolve(response);
|
|
430
|
-
}
|
|
431
|
-
else {
|
|
432
|
-
reject(response);
|
|
433
|
-
}
|
|
434
|
-
}))
|
|
435
|
-
.catch((reason) => {
|
|
436
|
-
resolve(null);
|
|
437
|
-
});
|
|
438
|
-
});
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
|
-
deleteTransactionLine(transactionUuid, TransactionLineUuid, remember = true) {
|
|
442
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
443
|
-
return new Promise((resolve, reject) => {
|
|
444
|
-
this._connector.deleteTransactionLine(transactionUuid, TransactionLineUuid)
|
|
445
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
446
|
-
this._rememberResponse(remember, response);
|
|
447
|
-
if (response.isSuccess) {
|
|
448
|
-
resolve(response);
|
|
449
|
-
}
|
|
450
|
-
else {
|
|
451
|
-
reject(response);
|
|
452
|
-
}
|
|
453
|
-
}))
|
|
454
|
-
.catch((reason) => {
|
|
455
|
-
resolve(null);
|
|
456
|
-
});
|
|
457
|
-
});
|
|
458
|
-
});
|
|
459
|
-
}
|
|
460
|
-
changeTransactionLineQuantity(lineUuid, newQuantity, remember = true) {
|
|
461
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
462
|
-
return new Promise((resolve) => {
|
|
463
|
-
this._connector.changeTransactionLineQuantity(this.currentTransaction.uuid, lineUuid, newQuantity)
|
|
464
|
-
.then((response) => __awaiter(this, void 0, void 0, function* () {
|
|
465
|
-
if (response.isSuccess) {
|
|
466
|
-
this._rememberResponse(remember, response);
|
|
467
|
-
}
|
|
468
|
-
resolve(response);
|
|
469
|
-
})).catch((reason) => {
|
|
470
|
-
resolve(null);
|
|
471
|
-
});
|
|
472
|
-
});
|
|
473
|
-
});
|
|
474
|
-
}
|
|
475
|
-
setRelationByUser(username, password) {
|
|
476
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
477
|
-
return new Promise((resolve) => {
|
|
478
|
-
this._connector.setRelationByUser(this.currentTransaction.uuid, username, password)
|
|
479
|
-
.then((isSuccess) => __awaiter(this, void 0, void 0, function* () {
|
|
480
|
-
resolve(isSuccess);
|
|
481
|
-
})).catch((reason) => {
|
|
482
|
-
resolve(false);
|
|
483
|
-
});
|
|
484
|
-
});
|
|
485
|
-
});
|
|
486
|
-
}
|
|
487
|
-
getCustomerFulObjectByRelationId(relationId) {
|
|
488
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
489
|
-
const relationNr = yield this._connector.getRelationNumber(relationId);
|
|
490
|
-
if (relationNr) {
|
|
491
|
-
return yield this._connector.getCustomerFullObject(Number(relationNr));
|
|
492
|
-
}
|
|
493
|
-
return NULL_CUSTOMER_FULL_OBJECT;
|
|
494
|
-
});
|
|
495
|
-
}
|
|
496
|
-
// public async setRelationByUser(username: string, password: string): Promise<boolean> {
|
|
497
|
-
// const response: boolean = await this._connector.setRelationByUser(this.currentTransaction.uuid, username, password);
|
|
498
|
-
// return response;
|
|
499
|
-
// }
|
|
500
|
-
getTextTypes(languageCode) {
|
|
501
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
502
|
-
return yield this._connector.getTextTypes(languageCode);
|
|
503
|
-
});
|
|
504
|
-
}
|
|
505
|
-
getStandardTexts(languageCode) {
|
|
506
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
507
|
-
let data = yield this._connector.getStandardTexts(languageCode);
|
|
508
|
-
return data;
|
|
509
|
-
});
|
|
510
|
-
}
|
|
511
|
-
_initializeTransaction() {
|
|
512
|
-
if (this._currentTransaction.preferredDeliveryDate2 === undefined) {
|
|
513
|
-
this._currentTransaction.preferredDeliveryDate2 = "=";
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
_rememberCurrentTransaction(value) {
|
|
517
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
518
|
-
this._currentTransaction = value.transactionInfo;
|
|
519
|
-
this._initializeTransaction();
|
|
520
|
-
this.currentLines = value.transactionLines;
|
|
521
|
-
this.currentTotals = value.transactionTotal;
|
|
522
|
-
this.currentLineOperationStatuses = value.lineOperationStatuses;
|
|
523
|
-
yield this._updateRelation();
|
|
524
|
-
this.transactionUpdated.emit();
|
|
525
|
-
});
|
|
526
|
-
}
|
|
527
|
-
_rememberCurrentTransactionLineStatus(value) {
|
|
528
|
-
// this._currentLineOperationStatus.uuid = value.lineUuid;
|
|
529
|
-
// this._currentLineOperationStatus.pendingReason = value.pendingReason;
|
|
530
|
-
// this._currentLineOperationStatus.pendingReasonType = value.pendingReasonType;
|
|
531
|
-
}
|
|
532
|
-
_updateRelation() {
|
|
533
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
534
|
-
if (this.currentTransaction && this.currentTransaction.relation && this.currentTransaction.relation.relationId) {
|
|
535
|
-
if (!this._currentRelation || this._currentRelation.relationId !== this.currentTransaction.relation.relationId) {
|
|
536
|
-
this._currentRelation = yield this.getCustomerFulObjectByRelationId(this.currentTransaction.relation.relationId);
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
});
|
|
540
|
-
}
|
|
541
|
-
_getTransactionDeliveryOptions() {
|
|
542
|
-
const transactionDeliveryOptionsRequest = new SetTransactionDeliveryOptionsRequest();
|
|
543
|
-
transactionDeliveryOptionsRequest.allowPartialDelivery = this._currentTransaction.allowPartialDelivery;
|
|
544
|
-
transactionDeliveryOptionsRequest.deliveryDate = this._currentTransaction.deliveryDate;
|
|
545
|
-
transactionDeliveryOptionsRequest.deliveryMethod = this._currentTransaction.deliveryMethod;
|
|
546
|
-
transactionDeliveryOptionsRequest.deliveryOptions = this._currentTransaction.deliveryOptions;
|
|
547
|
-
transactionDeliveryOptionsRequest.marketingCode = this._currentTransaction.marketingCode;
|
|
548
|
-
transactionDeliveryOptionsRequest.ownReference = this._currentTransaction.ownReference;
|
|
549
|
-
transactionDeliveryOptionsRequest.preferredDeliveryDate = this._currentTransaction.preferredDeliveryDate;
|
|
550
|
-
transactionDeliveryOptionsRequest.preferredDeliveryDate2 = this._currentTransaction.preferredDeliveryDate2;
|
|
551
|
-
transactionDeliveryOptionsRequest.relationReference = this._currentTransaction.relationReference;
|
|
552
|
-
transactionDeliveryOptionsRequest.remark = this._currentTransaction.remark;
|
|
553
|
-
transactionDeliveryOptionsRequest.transactionUuid = this._currentTransaction.uuid;
|
|
554
|
-
transactionDeliveryOptionsRequest.transactionAddress = this._currentTransaction.transactionAddress.nawNr;
|
|
555
|
-
transactionDeliveryOptionsRequest.invoiceAddress = this._currentTransaction.invoiceAddress.nawNr;
|
|
556
|
-
return transactionDeliveryOptionsRequest;
|
|
557
|
-
}
|
|
558
|
-
_rememberResponse(remember, response) {
|
|
559
|
-
if (remember) {
|
|
560
|
-
this._rememberCurrentTransaction(response);
|
|
561
|
-
this._rememberCurrentTransactionLineStatus(response);
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
TransactionService.decorators = [
|
|
566
|
-
{ type: Injectable }
|
|
567
|
-
];
|
|
568
|
-
TransactionService.ctorParameters = () => [
|
|
569
|
-
{ type: IOneConnectorAdapterService },
|
|
570
|
-
{ type: PromptService }
|
|
571
|
-
];
|
|
572
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFrQixVQUFVLEVBQVcsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFHN0UsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDckIsTUFBTSwwREFBMEQsQ0FBQztBQUVsRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFHMUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBSXBGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUN0RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDNUUsT0FBTyxFQUFDLG9DQUFvQyxFQUFDLE1BQU0sa0ZBQWtGLENBQUM7QUFJdEksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFFM0YsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFLbkcsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFHbEcsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBRXpGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUkzRCxNQUFNLE9BQU8sa0JBQWtCO0lBMkQ3QixZQUNTLFVBQXVDLEVBQ3ZDLE9BQXNCO1FBRHRCLGVBQVUsR0FBVixVQUFVLENBQTZCO1FBQ3ZDLFlBQU8sR0FBUCxPQUFPLENBQWU7UUE1RHhC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RyxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1FBQ3pHLGlDQUFpQyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUNqRyxPQUFPLGlDQUFpQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxRQUFpQixFQUFFLFFBQStCO1FBQzFFLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7OztZQS9pQkYsVUFBVTs7O1lBckNILDJCQUEyQjtZQWtDM0IsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0lPbmVDb25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSBcIi4vaW9uZS1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0N1c3RvbWVyRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1mdWxsLW9iamVjdC5ib1wiO1xuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tYW55LXR5cGVcIjtcbmltcG9ydCB7XG4gIE5VTExfQ1VTVE9NRVJfRlVMTF9PQkpFQ1QsXG4gIE5VTExfUkVMQVRJT05fT0JKRUNUXG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbnVsLXJlbGF0aW9uLW9iamVjdFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bVwiO1xuaW1wb3J0IHtNYXJrZXRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbWFya2V0aW5nLmJvXCI7XG5pbXBvcnQge1JlbGF0aW9uUHJpdmFjeVNldHRpbmd9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcHJpdmFjeS1zZXR0aW5nLmJvXCI7XG5pbXBvcnQge1NlcXVlbmNlTmFtZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3NlcXVlbmNlLW5hbWUuZW51bVwiO1xuaW1wb3J0IHtEZWxpdmVyeU1ldGhvZH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1tZXRob2QuYm9cIjtcbmltcG9ydCB7RGVsaXZlcnlPcHRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktb3B0aW9uLmJvXCI7XG5pbXBvcnQge0NvbnRhY3RPcHRpb259IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29udGFjdC1vcHRpb24uYm9cIjtcbmltcG9ydCB7aXNOaWxsfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL3V0aWxzL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb25cIjtcbmltcG9ydCB7QXJyYXlVdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9hcnJheS11dGlsc1wiO1xuaW1wb3J0IHtTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvc2V0LXRyYW5zYWN0aW9uLWRlbGl2ZXJ5LW9wdGlvbnMtcmVxdWVzdC5ib1wiO1xuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm9cIjtcbmltcG9ydCB7UmVsYXRpb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXJlcXVlc3RcIjtcbmltcG9ydCB7Q291bnRyeX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3VudHJ5LmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uVG90YWx9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tdG90YWwuYm9cIjtcbmltcG9ydCB7VmFsaWRhdGlvblJlc3VsdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVUeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24tbGluZS10eXBlLmVudW1cIjtcbmltcG9ydCB7UmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7Q29Eb21haW5WYWx1ZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jby1kb21haW4tdmFsdWUuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFydGljbGUtd2FyZWhvdXNlLmJvXCI7XG5pbXBvcnQge0FydGljbGVGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3RcIjtcbmltcG9ydCB7TGluZU9wZXJhdGlvblN0YXR1c30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9saW5lLW9wZXJhdGlvbi1zdGF0dXMuYm9cIjtcbmltcG9ydCB7TGluZU9wZXJhdGlvblJlc3BvbnNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uUmVzcG9uc2VCYXNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLXJlc3BvbnNlLWJhc2UuYm9cIjtcbmltcG9ydCB7UGVuZGluZ1JlYXNvblR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9wZW5kaW5nLXJlYXNvbi10eXBlLmVudW1cIjtcbmltcG9ydCB7UHJvbXB0U2VydmljZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7U3RhbmRhcmRUZXh0fSBmcm9tIFwiLi4vbW9kZWwvc3RhbmRhcmQtdGV4dFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25TZXJ2aWNlIHtcbiAgcHVibGljIHRyYW5zYWN0aW9uVXBkYXRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBwdWJsaWMgdHJhbnNhY3Rpb25Mb2FkZWQ6IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPigpO1xuXG4gIHB1YmxpYyBlbWFpbEFkZHJlc3M6IHN0cmluZztcbiAgcHVibGljIGFwcGxpY2F0aW9uVXNlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgY3VycmVudExpbmVzKCk6IFRyYW5zYWN0aW9uTGluZUluZm9bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRMaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgY3VycmVudExpbmVzKHZhbHVlOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10pIHtcbiAgICB0aGlzLl9jdXJyZW50TGluZXMgPSB2YWx1ZTtcbiAgICB0aGlzLmFydGljbGVBbW91bnQgPSBBcnJheVV0aWxzLkZpbmRBbGwodGhpcy5fY3VycmVudExpbmVzLCBsaW5lID0+IGxpbmUuaXNBcnRpY2xlKS5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgc2V0IGN1cnJlbnRUb3RhbHModmFsdWU6IFRyYW5zYWN0aW9uVG90YWwpIHtcbiAgICB0aGlzLl9jdXJyZW50VG90YWxzID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRUb3RhbHMoKTogVHJhbnNhY3Rpb25Ub3RhbCB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUb3RhbHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRSZWxhdGlvbigpOiBSZWxhdGlvbkFueVR5cGUge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UmVsYXRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRUcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkluZm8ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb247XG4gIH1cblxuICBwdWJsaWMgc2V0IGN1cnJlbnRMaW5lT3BlcmF0aW9uU3RhdHVzZXModmFsdWVzOiBMaW5lT3BlcmF0aW9uU3RhdHVzW10pIHtcbiAgICB0aGlzLl9jdXJyZW50TGluZU9wZXJhdGlvblN0YXR1c2VzID0gdmFsdWVzO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50TGluZU9wZXJhdGlvblN0YXR1c2VzKCk6IExpbmVPcGVyYXRpb25TdGF0dXNbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRMaW5lT3BlcmF0aW9uU3RhdHVzZXM7XG4gIH1cblxuICBwdWJsaWMgc2V0IGN1cnJlbnRMaW5lT3BlcmF0aW9uU3RhdHVzKHZhbHVlOiBMaW5lT3BlcmF0aW9uU3RhdHVzKSB7XG4gICAgdGhpcy5fY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXMgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXMoKTogTGluZU9wZXJhdGlvblN0YXR1cyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3RhdHVzOiBMaW5lT3BlcmF0aW9uU3RhdHVzID0gdGhpcy5jdXJyZW50TGluZU9wZXJhdGlvblN0YXR1c2VzLmZpbmQobGluZSA9PiBsaW5lLnBlbmRpbmdSZWFzb25UeXBlICE9PSBQZW5kaW5nUmVhc29uVHlwZS5OT05FXG4gICAgICAgICYmIGxpbmUucGVuZGluZ1JlYXNvblR5cGUgIT09IFBlbmRpbmdSZWFzb25UeXBlLk5PTl9DUklUSUNBTF9ESVNDT05USU5VQVRJT04pO1xuICAgIHJldHVybiBzdGF0dXM7XG4gIH1cblxuICBwdWJsaWMgYXJ0aWNsZUFtb3VudDogbnVtYmVyID0gMDtcblxuICBwcml2YXRlIF9jdXJyZW50TGluZXM6IFRyYW5zYWN0aW9uTGluZUluZm9bXSA9IFtdO1xuICBwcml2YXRlIF9jdXJyZW50VG90YWxzOiBUcmFuc2FjdGlvblRvdGFsID0gbmV3IFRyYW5zYWN0aW9uVG90YWwoKTtcbiAgcHJpdmF0ZSBfY3VycmVudFJlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUgPSBOVUxMX1JFTEFUSU9OX09CSkVDVDtcbiAgcHJpdmF0ZSBfY3VycmVudFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm8gPSBuZXcgVHJhbnNhY3Rpb25JbmZvKCk7XG4gIHByaXZhdGUgX2N1cnJlbnRMaW5lT3BlcmF0aW9uU3RhdHVzOiBMaW5lT3BlcmF0aW9uU3RhdHVzID0gbmV3IExpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgcHJpdmF0ZSBfY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXNlczogTGluZU9wZXJhdGlvblN0YXR1c1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIF9jb25uZWN0b3I6IElPbmVDb25uZWN0b3JBZGFwdGVyU2VydmljZSxcbiAgICBwdWJsaWMgX3Byb21wdDogUHJvbXB0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5faW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgcGVuZGluZ0xpbmVPcGVyYXRpb25TdGF0dXMobGluZU9wZXJhdGlvblN0YXR1c2VzOiBMaW5lT3BlcmF0aW9uU3RhdHVzW10pOiBMaW5lT3BlcmF0aW9uU3RhdHVzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdGF0dXM6IExpbmVPcGVyYXRpb25TdGF0dXMgPSBsaW5lT3BlcmF0aW9uU3RhdHVzZXMuZmluZChsaW5lID0+IGxpbmUucGVuZGluZ1JlYXNvblR5cGUgIT09IFBlbmRpbmdSZWFzb25UeXBlLk5PTkVcbiAgICAgICYmIGxpbmUucGVuZGluZ1JlYXNvblR5cGUgIT09IFBlbmRpbmdSZWFzb25UeXBlLk5PTl9DUklUSUNBTF9ESVNDT05USU5VQVRJT04pO1xuICAgIHJldHVybiBzdGF0dXM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPEFydGljbGVGdWxsT2JqZWN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2Nvbm5lY3Rvci5nZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RJZEZyb21BcnRpY2xlTnIoc2t1OiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25uZWN0b3IuZ2V0R29vZElkRnJvbUFydGljbGVOcihza3UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlbGF0aW9uKCk6IFByb21pc2U8UmVsYXRpb25BbnlUeXBlPiB7XG4gICAgY29uc3QgcmVsYXRpb25Obzogc3RyaW5nID0gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmdldFJlbGF0aW9uTnVtYmVyKHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5yZWxhdGlvbi5yZWxhdGlvbklkKTtcblxuICAgIGlmIChyZWxhdGlvbk5vKSB7XG4gICAgICB0aGlzLl9jdXJyZW50UmVsYXRpb24gPSBhd2FpdCB0aGlzLl9jb25uZWN0b3IuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KE51bWJlcihyZWxhdGlvbk5vKSk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRDb3VudHJpZXNPZlJlbGF0aW9uQWRkcmVzc2VzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UmVsYXRpb247XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZENvdW50cmllc09mUmVsYXRpb25BZGRyZXNzZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIHRoaXMuY3VycmVudFJlbGF0aW9uLmFkZHJlc3Nlcykge1xuICAgICAgY29uc3QgY291bnRyeTogQ291bnRyeSA9IGF3YWl0IHRoaXMuZ2V0Q291bnRyeShhZGRyZXNzLmNvdW50cnlJZCk7XG4gICAgICBhZGRyZXNzLmNvdW50cnlOYW1lID0gY291bnRyeS5kZXNjcmlwdGlvbjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q291bnRyeShjb3VudHJ5Q29kZTogc3RyaW5nKTogUHJvbWlzZTxDb3VudHJ5PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2Nvbm5lY3Rvci5nZXRDb3VudHJ5KGNvdW50cnlDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0b3IuZ2V0UmVsYXRpb25OdW1iZXIocmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZU5ld1JlbGF0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xlYW5SZWxhdGlvbkJlZm9yZVNhdmUoKTtcbiAgICB0aGlzLl9jdXJyZW50UmVsYXRpb24gPSBhd2FpdCB0aGlzLl9jb25uZWN0b3IuaW5zZXJ0Q3VzdG9tZXIodGhpcy5fY3VycmVudFJlbGF0aW9uKTtcbiAgICBhd2FpdCB0aGlzLmFkZFJlbGF0aW9uVG9UcmFuc2FjdGlvbih0aGlzLl9jdXJyZW50UmVsYXRpb24ucmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZVJlbGF0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xlYW5SZWxhdGlvbkJlZm9yZVNhdmUoKTtcbiAgICB0aGlzLl9jdXJyZW50UmVsYXRpb24gPSBhd2FpdCB0aGlzLl9jb25uZWN0b3IudXBkYXRlQ3VzdG9tZXIodGhpcy5fY3VycmVudFJlbGF0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhblJlbGF0aW9uQmVmb3JlU2F2ZSgpOiB2b2lkIHtcbiAgICBBcnJheVV0aWxzLlJlbW92ZUVsZW1lbnRzQnlGaWx0ZXIodGhpcy5fY3VycmVudFJlbGF0aW9uLmNvbnRhY3RPcHRpb25zLCAoKGl0ZW06IENvbnRhY3RPcHRpb24pID0+IHtcbiAgICAgIHJldHVybiBpc05pbGwoaXRlbS52YWx1ZSk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlcXVlbmNlVmFsdWUoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmdldFNlcXVlbmNlVmFsdWUoU2VxdWVuY2VOYW1lLlJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UmVsYXRpb25Qcml2YWN5U2V0dGluZ1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2Nvbm5lY3Rvci5nZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVRyYW5zYWN0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rvci5jcmVhdGVUcmFuc2FjdGlvbihUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgXCIxXCIpLnRoZW4oKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9yZW1lbWJlckN1cnJlbnRUcmFuc2FjdGlvbihyZXNwb25zZSk7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSkuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICByZWplY3QoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHBlbmRpbmdMaW5lVmFsdWVzOiBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0LCByZW1lbWJlcjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPExpbmVPcGVyYXRpb25SZXNwb25zZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxMaW5lT3BlcmF0aW9uUmVzcG9uc2U+KChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5fY29ubmVjdG9yLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbihwZW5kaW5nTGluZVZhbHVlcykudGhlbihhc3luYyAocmVzcG9uc2U6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9yZW1lbWJlclJlc3BvbnNlKHJlbWVtYmVyLCByZXNwb25zZSk7XG4gICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgfSkuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbk5vOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5vcGVuRXhpc3RpbmdUcmFuc2FjdGlvbihUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlciwgdHJhbnNhY3Rpb25Obyk7XG4gIH1cblxuICBwdWJsaWMgb3BlbkV4aXN0aW5nVHJhbnNhY3Rpb24oa2luZDogVHJhbnNhY3Rpb25LaW5kLCB0cmFuc2FjdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICB0aGlzLl9jb25uZWN0b3IuZ2V0VHJhbnNhY3Rpb25CeU5yQW5kS2luZChraW5kLCB0cmFuc2FjdGlvbk5yKVxuICAgICAgICAudGhlbihhc3luYyAocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkxvYWRlZC5lbWl0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25CeUlkKHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rvci5nZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZClcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25Mb2FkZWQuZW1pdChyZXNwb25zZSk7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZWplY3QoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzYXZlVHJhbnNhY3Rpb24oY2xvc2U6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IGF3YWl0IHRoaXMuX2Nvbm5lY3Rvci5zYXZlVHJhbnNhY3Rpb24odGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udXVpZCk7XG4gICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzcykge1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzYXZlVHJhbnNhY3Rpb25CeVV1aWQodHJhbnNhY3Rpb25VdWlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICB0aGlzLl9jb25uZWN0b3Iuc2F2ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uVXVpZClcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25Mb2FkZWQuZW1pdChyZXNwb25zZSk7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICBpZiAocmVhc29uKSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9tcHQuc2hvd0Vycm9yKHJlYXNvbi5nZXRGdWxsRXJyb3JTdHJpbmcoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFJlbGF0aW9uVG9UcmFuc2FjdGlvbihyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gIGF3YWl0IHRoaXMuX2Nvbm5lY3Rvci5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odGhpcy5fY3VycmVudFRyYW5zYWN0aW9uLnV1aWQsIHJlbGF0aW9uSWQpO1xuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmVUcmFuc2FjdGlvbigpO1xuICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc2FjdGlvbih0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25Ocik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENvbW1pc3Npb25Db2RlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2Nvbm5lY3Rvci5nZXRDb21taXNzaW9uQ29kZXMobGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbk91dENvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25uZWN0b3IuZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdG9yLmdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRNYXJrZXRpbmdDb2RlcygpOiBQcm9taXNlPE1hcmtldGluZ1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2Nvbm5lY3Rvci5nZXRNYXJrZXRpbmdDb2RlcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluc2VydEN1c3RvbWVyKHJlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QpOiBQcm9taXNlPEN1c3RvbWVyRnVsbE9iamVjdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25uZWN0b3IuaW5zZXJ0Q3VzdG9tZXIocmVsYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUN1c3RvbWVyKHJlbGF0aW9uOiBDdXN0b21lckZ1bGxPYmplY3QpOiBQcm9taXNlPEN1c3RvbWVyRnVsbE9iamVjdD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rvci51cGRhdGVDdXN0b21lcihyZWxhdGlvbikudGhlbihhc3luYyggcmVzcG9uc2U6IEN1c3RvbWVyRnVsbE9iamVjdCkgPT4ge1xuICAgICAgICB0aGlzLl9jdXJyZW50UmVsYXRpb24gPSByZWxhdGlvbjtcbiAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChyZXNwb25zZTogQ3VzdG9tZXJGdWxsT2JqZWN0KSA9PiB7XG4gICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlNZXRob2RzKCk6IFByb21pc2U8RGVsaXZlcnlNZXRob2RbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25uZWN0b3IuZ2V0RGVsaXZlcnlNZXRob2RzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlPcHRpb25zKCk6IFByb21pc2U8RGVsaXZlcnlPcHRpb25bXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25uZWN0b3IuZ2V0RGVsaXZlcnlPcHRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0OiBTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QgPSB0aGlzLl9nZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucygpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLl9jb25uZWN0b3Iuc2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnModHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0KS50aGVuKGFzeW5jKCByZXNwb25zZTogVHJhbnNhY3Rpb25SZXNwb25zZUJhc2UpID0+IHtcbiAgICAgICAgcmVzb2x2ZShyZXNwb25zZS5pc1N1Y2Nlc3MpO1xuICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChyZXNwb25zZTogVHJhbnNhY3Rpb25SZXNwb25zZUJhc2UpID0+IHtcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlbGF0aW9uUmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxSZWxhdGlvbkxpc3RPYmplY3RbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25uZWN0b3IuZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZWxhdGlvblJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJldHJpZXZlTGluZUltYWdlKGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEFydGljbGVJbWFnZUJ5QXJ0aWNsZU51bWJlcihsaW5lLmFydGljbGVOdW1iZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVJbWFnZUJ5QXJ0aWNsZU51bWJlcihhcnRpY2xlTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGdvb2RJZDogbnVtYmVyID0gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmdldEdvb2RJZEZyb21BcnRpY2xlTnIoYXJ0aWNsZU51bWJlcik7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXJ0aWNsZUltYWdlQnlHb29kSWQoZ29vZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlSW1hZ2VCeUdvb2RJZChnb29kSWQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCFpc05hTihnb29kSWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29ubmVjdG9yLmdldFNpbmdsZUltYWdlKGdvb2RJZCwgMSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRBcnRpY2xlKGFydGljbGVObzogc3RyaW5nLCBhbW91bnQ6IG51bWJlciA9IDEsIHdhcmVob3VzZU5vOiBudW1iZXIgPSAxLCBjb21taXNzaW9uQ29kZTogc3RyaW5nID0gXCIyXCIsIGlzUmV0dXJuOiBib29sZWFuID0gZmFsc2UsIGFib3ZlTGluZU5yOiBudW1iZXIgPSAwLCBiZWxvd0xpbmVOcjogbnVtYmVyID0gMCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLl9jb25uZWN0b3IuYWRkVHJhbnNhY3Rpb25MaW5lKHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi51dWlkLCBUcmFuc2FjdGlvbkxpbmVUeXBlLkFydGljbGVMaW5lLCBhcnRpY2xlTm8sIGFtb3VudCwgd2FyZWhvdXNlTm8sIGNvbW1pc3Npb25Db2RlLCBpc1JldHVybiwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKVxuICAgICAgICAudGhlbihhc3luYyggcmVzcG9uc2U6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRBcnRpY2xlVG9UcmFuc2FjdGlvbih0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgYXJ0aWNsZU5vOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyID0gMSwgd2FyZWhvdXNlTm86IG51bWJlciA9IDEsIGNvbW1pc3Npb25Db2RlOiBzdHJpbmcgPSBcIjJcIiwgaXNSZXR1cm46IGJvb2xlYW4gPSBmYWxzZSwgYWJvdmVMaW5lTnI6IG51bWJlciA9IDAsIGJlbG93TGluZU5yOiBudW1iZXIgPSAwKTogUHJvbWlzZTxMaW5lT3BlcmF0aW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8TGluZU9wZXJhdGlvblJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLl9jb25uZWN0b3IuYWRkVHJhbnNhY3Rpb25MaW5lKHRyYW5zYWN0aW9uVXVpZCwgVHJhbnNhY3Rpb25MaW5lVHlwZS5BcnRpY2xlTGluZSwgYXJ0aWNsZU5vLCBhbW91bnQsIHdhcmVob3VzZU5vLCBjb21taXNzaW9uQ29kZSwgaXNSZXR1cm4sIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcilcbiAgICAgICAgLnRoZW4oYXN5bmMoIHJlc3BvbnNlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcHJvbXB0LnNob3dFcnJvcihlcnJvcik7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICB0aGlzLl9wcm9tcHQuc2hvd0Vycm9yKHJlYXNvbi5nZXRGdWxsRXJyb3JTdHJpbmcoKSk7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVHJhbnNhY3Rpb25MaW5lKGxpbmVUeXBlOiBUcmFuc2FjdGlvbkxpbmVUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFydGljbGVObzogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmVob3VzZU5vPzogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pc3Npb25Db2RlPzogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmV0dXJuPzogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm92ZUxpbmVOcj86IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWxvd0xpbmVOcj86IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1lbWJlcjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPExpbmVPcGVyYXRpb25SZXNwb25zZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxMaW5lT3BlcmF0aW9uUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rvci5hZGRUcmFuc2FjdGlvbkxpbmUodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udXVpZCwgbGluZVR5cGUsIGFydGljbGVObywgYW1vdW50LCB3YXJlaG91c2VObywgY29tbWlzc2lvbkNvZGUsIGlzUmV0dXJuLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcmVtZW1iZXJSZXNwb25zZShyZW1lbWJlciwgcmVzcG9uc2UpO1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRleHRMaW5lKFxuICAgICAgICAgICAgICAgIHNob3dPbkRvY3VtZW50czogbnVtYmVyLFxuICAgICAgICAgICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICBhcnRpY2xlQm91bmQ6IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgcmVmQXJ0aWNsZUxpbmVOcjogbnVtYmVyLFxuICAgICAgICAgICAgICAgIGFib3ZlTGluZU5yPzogbnVtYmVyLFxuICAgICAgICAgICAgICAgIGJlbG93TGluZU5yPzogbnVtYmVyLFxuICAgICAgICAgICAgICAgIHJlbWVtYmVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8TGluZU9wZXJhdGlvblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPExpbmVPcGVyYXRpb25SZXNwb25zZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5fY29ubmVjdG9yLmFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi51dWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHQsIGFtb3VudCwgYXJ0aWNsZUJvdW5kLCByZWZBcnRpY2xlTGluZU5yLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcmVtZW1iZXJSZXNwb25zZShyZW1lbWJlciwgcmVzcG9uc2UpO1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbihcbiAgICB0cmFuc2FjdGlvblV1aWQ6IHN0cmluZyxcbiAgICBzaG93T25Eb2N1bWVudHM6IG51bWJlcixcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgYW1vdW50OiBudW1iZXIsXG4gICAgYXJ0aWNsZUJvdW5kOiBib29sZWFuLFxuICAgIHJlZkFydGljbGVMaW5lTnI6IG51bWJlcixcbiAgICBhYm92ZUxpbmVOcj86IG51bWJlcixcbiAgICBiZWxvd0xpbmVOcj86IG51bWJlcik6IFByb21pc2U8TGluZU9wZXJhdGlvblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPExpbmVPcGVyYXRpb25SZXNwb25zZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5fY29ubmVjdG9yLmFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih0cmFuc2FjdGlvblV1aWQsIHNob3dPbkRvY3VtZW50cywgdGV4dCwgYW1vdW50LCBhcnRpY2xlQm91bmQsIHJlZkFydGljbGVMaW5lTnIsIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcilcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChyZWFzb246IFZhbGlkYXRpb25SZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VMaW5lU2VxdWVuY2UoXG4gICAgbGluZVV1aWQ6IHN0cmluZyxcbiAgICBhYm92ZUxpbmVOcj86IG51bWJlcixcbiAgICBiZWxvd0xpbmVOcj86IG51bWJlcixcbiAgICByZW1lbWJlcjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPExpbmVPcGVyYXRpb25SZXNwb25zZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxMaW5lT3BlcmF0aW9uUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rvci5jaGFuZ2VMaW5lU2VxdWVuY2UodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udXVpZCwgbGluZVV1aWQsIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcilcbiAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZW1lbWJlclJlc3BvbnNlKHJlbWVtYmVyLCByZXNwb25zZSk7XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKGxpbmVVdWlkOiBzdHJpbmcsIHJlbWVtYmVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rvci5jYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUobGluZVV1aWQpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAocmVtZW1iZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uKHJlc3BvbnNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzcykge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVRyYW5zYWN0aW9uTGluZSh0cmFuc2FjdGlvblV1aWQ6IHN0cmluZywgVHJhbnNhY3Rpb25MaW5lVXVpZDogc3RyaW5nLCByZW1lbWJlcjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPExpbmVPcGVyYXRpb25SZXNwb25zZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxMaW5lT3BlcmF0aW9uUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rvci5kZWxldGVUcmFuc2FjdGlvbkxpbmUodHJhbnNhY3Rpb25VdWlkLCBUcmFuc2FjdGlvbkxpbmVVdWlkKVxuICAgICAgICAudGhlbihhc3luYyAocmVzcG9uc2U6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3JlbWVtYmVyUmVzcG9uc2UocmVtZW1iZXIsIHJlc3BvbnNlKTtcbiAgICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzKSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgocmVhc29uOiBWYWxpZGF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkobGluZVV1aWQ6IHN0cmluZywgbmV3UXVhbnRpdHk6IG51bWJlciwgcmVtZW1iZXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxMaW5lT3BlcmF0aW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8TGluZU9wZXJhdGlvblJlc3BvbnNlPigocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rvci5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi51dWlkLCBsaW5lVXVpZCwgbmV3UXVhbnRpdHkpXG4gICAgICAgIC50aGVuKGFzeW5jIChyZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5fcmVtZW1iZXJSZXNwb25zZShyZW1lbWJlciwgcmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfSkuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRSZWxhdGlvbkJ5VXNlcih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5fY29ubmVjdG9yLnNldFJlbGF0aW9uQnlVc2VyKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnV1aWQsIHVzZXJuYW1lLCBwYXNzd29yZClcbiAgICAgICAgLnRoZW4oYXN5bmMgKGlzU3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIHJlc29sdmUoaXNTdWNjZXNzKTtcbiAgICAgICAgfSkuY2F0Y2goKHJlYXNvbjogVmFsaWRhdGlvblJlc3VsdCkgPT4ge1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbWVyRnVsT2JqZWN0QnlSZWxhdGlvbklkKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8Q3VzdG9tZXJGdWxsT2JqZWN0PiB7XG4gICAgY29uc3QgcmVsYXRpb25Ocjogc3RyaW5nID0gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmdldFJlbGF0aW9uTnVtYmVyKHJlbGF0aW9uSWQpO1xuICAgIGlmIChyZWxhdGlvbk5yKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmdldEN1c3RvbWVyRnVsbE9iamVjdChOdW1iZXIocmVsYXRpb25OcikpO1xuICAgIH1cbiAgICByZXR1cm4gTlVMTF9DVVNUT01FUl9GVUxMX09CSkVDVDtcbiAgfVxuXG4gIC8vIHB1YmxpYyBhc3luYyBzZXRSZWxhdGlvbkJ5VXNlcih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIC8vICAgY29uc3QgcmVzcG9uc2U6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLl9jb25uZWN0b3Iuc2V0UmVsYXRpb25CeVVzZXIodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24udXVpZCwgdXNlcm5hbWUsIHBhc3N3b3JkKTtcbiAgLy8gICByZXR1cm4gcmVzcG9uc2U7XG4gIC8vIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VGV4dFR5cGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmdldFRleHRUeXBlcyhsYW5ndWFnZUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0YW5kYXJkVGV4dHMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFN0YW5kYXJkVGV4dFtdPiB7XG4gICAgbGV0IGRhdGE6IFN0YW5kYXJkVGV4dFtdID0gYXdhaXQgdGhpcy5fY29ubmVjdG9yLmdldFN0YW5kYXJkVGV4dHMobGFuZ3VhZ2VDb2RlKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24ucHJlZmVycmVkRGVsaXZlcnlEYXRlMiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5wcmVmZXJyZWREZWxpdmVyeURhdGUyID0gXCI9XCI7XG4gICAgICB9XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBfcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24odmFsdWU6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fY3VycmVudFRyYW5zYWN0aW9uID0gdmFsdWUudHJhbnNhY3Rpb25JbmZvO1xuICAgIHRoaXMuX2luaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuXG4gICAgdGhpcy5jdXJyZW50TGluZXMgPSB2YWx1ZS50cmFuc2FjdGlvbkxpbmVzO1xuICAgIHRoaXMuY3VycmVudFRvdGFscyA9IHZhbHVlLnRyYW5zYWN0aW9uVG90YWw7XG5cbiAgICB0aGlzLmN1cnJlbnRMaW5lT3BlcmF0aW9uU3RhdHVzZXMgPSB2YWx1ZS5saW5lT3BlcmF0aW9uU3RhdHVzZXM7XG5cbiAgICBhd2FpdCB0aGlzLl91cGRhdGVSZWxhdGlvbigpO1xuICAgIHRoaXMudHJhbnNhY3Rpb25VcGRhdGVkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbWVtYmVyQ3VycmVudFRyYW5zYWN0aW9uTGluZVN0YXR1cyh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKTogdm9pZCB7XG4gICAgLy8gdGhpcy5fY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXMudXVpZCA9IHZhbHVlLmxpbmVVdWlkO1xuICAgIC8vIHRoaXMuX2N1cnJlbnRMaW5lT3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24gPSB2YWx1ZS5wZW5kaW5nUmVhc29uO1xuICAgIC8vIHRoaXMuX2N1cnJlbnRMaW5lT3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlID0gdmFsdWUucGVuZGluZ1JlYXNvblR5cGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF91cGRhdGVSZWxhdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jdXJyZW50VHJhbnNhY3Rpb24gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24ucmVsYXRpb24gJiYgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb24ucmVsYXRpb24ucmVsYXRpb25JZCkge1xuICAgICAgaWYgKCF0aGlzLl9jdXJyZW50UmVsYXRpb24gfHwgdGhpcy5fY3VycmVudFJlbGF0aW9uLnJlbGF0aW9uSWQgIT09IHRoaXMuY3VycmVudFRyYW5zYWN0aW9uLnJlbGF0aW9uLnJlbGF0aW9uSWQpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFJlbGF0aW9uID0gYXdhaXQgdGhpcy5nZXRDdXN0b21lckZ1bE9iamVjdEJ5UmVsYXRpb25JZCh0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbi5yZWxhdGlvbi5yZWxhdGlvbklkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucygpOiBTZXRUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3Qge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdDogU2V0VHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0ID0gbmV3IFNldFRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdCAoKTtcbiAgICB0cmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QuYWxsb3dQYXJ0aWFsRGVsaXZlcnkgPSB0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24uYWxsb3dQYXJ0aWFsRGVsaXZlcnk7XG4gICAgdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LmRlbGl2ZXJ5RGF0ZSA9IHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5kZWxpdmVyeURhdGU7XG4gICAgdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LmRlbGl2ZXJ5TWV0aG9kID0gdGhpcy5fY3VycmVudFRyYW5zYWN0aW9uLmRlbGl2ZXJ5TWV0aG9kO1xuICAgIHRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdC5kZWxpdmVyeU9wdGlvbnMgPSB0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24uZGVsaXZlcnlPcHRpb25zO1xuICAgIHRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdC5tYXJrZXRpbmdDb2RlID0gdGhpcy5fY3VycmVudFRyYW5zYWN0aW9uLm1hcmtldGluZ0NvZGU7XG4gICAgdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0Lm93blJlZmVyZW5jZSA9IHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5vd25SZWZlcmVuY2U7XG4gICAgdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LnByZWZlcnJlZERlbGl2ZXJ5RGF0ZSA9IHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5wcmVmZXJyZWREZWxpdmVyeURhdGU7XG4gICAgdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LnByZWZlcnJlZERlbGl2ZXJ5RGF0ZTIgPSB0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24ucHJlZmVycmVkRGVsaXZlcnlEYXRlMjtcbiAgICB0cmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9uc1JlcXVlc3QucmVsYXRpb25SZWZlcmVuY2UgPSB0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24ucmVsYXRpb25SZWZlcmVuY2U7XG4gICAgdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LnJlbWFyayA9IHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5yZW1hcms7XG4gICAgdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0LnRyYW5zYWN0aW9uVXVpZCA9IHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi51dWlkO1xuICAgIHRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdC50cmFuc2FjdGlvbkFkZHJlc3MgPSB0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25BZGRyZXNzLm5hd05yO1xuICAgIHRyYW5zYWN0aW9uRGVsaXZlcnlPcHRpb25zUmVxdWVzdC5pbnZvaWNlQWRkcmVzcyA9IHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5pbnZvaWNlQWRkcmVzcy5uYXdOcjtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnNSZXF1ZXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtZW1iZXJSZXNwb25zZShyZW1lbWJlcjogYm9vbGVhbiwgcmVzcG9uc2U6IExpbmVPcGVyYXRpb25SZXNwb25zZSk6IHZvaWQge1xuICAgIGlmIChyZW1lbWJlcikge1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgdGhpcy5fcmVtZW1iZXJDdXJyZW50VHJhbnNhY3Rpb25MaW5lU3RhdHVzKHJlc3BvbnNlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|