@colijnit/transaction 12.1.127 → 12.1.129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/colijnit-transaction.umd.js +2389 -1084
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +286 -274
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +287 -275
- package/esm2015/lib/component/add-product/add-product.component.js +12 -14
- package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +4 -51
- package/esm2015/lib/component/checkout/checkout.module.js +44 -55
- package/esm2015/lib/component/core/base/transaction-base.component.js +5 -2
- package/esm2015/lib/component/core/base/transaction-search-tile-base.component.js +2 -1
- package/esm2015/lib/component/core/core.module.js +2 -3
- package/esm2015/lib/component/dialog/transaction-header/dialog-transaction-header-discount/dialog-transaction-header-discount.component.js +1 -8
- package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-discount/dialog-transaction-line-discount.component.js +1 -6
- package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-transaction-line-warehouse-cc.component.js +2 -1
- package/esm2015/lib/component/digital-signature/digital-signature.component.js +65 -0
- package/esm2015/lib/component/digital-signature/digital-signature.module.js +23 -0
- package/esm2015/lib/component/relation/relation-address/relation-address.module.js +2 -3
- package/esm2015/lib/component/relation/relation-address-select/relation-address-select.component.js +2 -2
- package/esm2015/lib/component/relation/relation-addresses/relation-addresses.component.js +2 -2
- package/esm2015/lib/component/relation/relation-general/relation-general.component.js +6 -1
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.component.js +17 -17
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.module.js +2 -4
- package/esm2015/lib/component/shared/transaction-article-text-overview/transaction-article-text-overview.component.js +2 -2
- package/esm2015/lib/component/transaction/transaction.component.js +12 -4
- package/esm2015/lib/component/transaction/transaction.module.js +11 -6
- package/esm2015/lib/component/transaction-batch-order-picking/fast-date-range-picker/fast-date-range-picker.component.js +68 -0
- package/esm2015/lib/component/transaction-batch-order-picking/fast-date-range-picker/fast-date-range-picker.module.js +21 -0
- package/esm2015/lib/component/transaction-batch-order-picking/transaction-batch-order-picking.component.js +25 -0
- package/esm2015/lib/component/transaction-batch-order-picking/transaction-batch-order-picking.module.js +21 -0
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button-base.component.js +5 -3
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button.component.js +5 -2
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-picking-button-bar-button.component.js +78 -0
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.component.js +10 -2
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.module.js +6 -3
- package/esm2015/lib/component/transaction-card/transaction-card/transaction-card.component.js +6 -3
- package/esm2015/lib/component/transaction-card/transaction-card-footer/transaction-card-footer.component.js +3 -3
- package/esm2015/lib/component/transaction-grid/transaction-grid/transaction-grid.component.js +6 -3
- package/esm2015/lib/component/transaction-grid/transaction-history-grid/transaction-history-grid.component.js +3 -3
- package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.js +6 -3
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-base.component.js +6 -3
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup.component.js +15 -12
- package/esm2015/lib/component/transaction-header-fields/transaction-header-administrative-relation.component.js +6 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-administrative-relation.module.js +2 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-branch.component.js +6 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-branch.module.js +2 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-currency.component.js +6 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-currency.module.js +2 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-definitive.module.js +4 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-delivery-method-button/transaction-header-delivery-method-button.component.js +6 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-delivery-options/transaction-header-delivery-options.module.js +2 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-hold-codes.module.js +2 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-marketing.module.js +2 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-payment-button/transaction-header-payment-button.component.js +6 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-payment-condition.module.js +2 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-price-kind.module.js +2 -3
- package/esm2015/lib/component/transaction-header-fields/transaction-header-sales-person.module.js +2 -3
- package/esm2015/lib/component/transaction-labeled-warehouse-location-button/transaction-labeled-warehouse-location-button.component.js +6 -3
- package/esm2015/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.js +2 -4
- package/esm2015/lib/component/transaction-line/transaction-invoice-line/transaction-invoice-line-base.component.js +1 -4
- package/esm2015/lib/component/transaction-line/transaction-line/transaction-line.component.js +19 -5
- package/esm2015/lib/component/transaction-line/transaction-order-delivery-line/transaction-order-delivery-line.component.js +3 -3
- package/esm2015/lib/component/transaction-line/transaction-picked-line/transaction-picked-line.component.js +84 -0
- package/esm2015/lib/component/transaction-line/transaction-picked-line/transaction-picked-line.module.js +31 -0
- package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line-base.component.js +9 -7
- package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.component.js +7 -6
- package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.module.js +22 -20
- package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line-base.component.js +2 -3
- package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line.component.js +2 -7
- package/esm2015/lib/component/transaction-line/transaction-to-be-picked-line/transaction-to-be-picked-line.component.js +86 -0
- package/esm2015/lib/component/transaction-line/transaction-to-be-picked-line/transaction-to-be-picked-line.module.js +31 -0
- package/esm2015/lib/component/transaction-line-checkbox-list/transaction-line-checkbox-list.component.js +2 -2
- package/esm2015/lib/component/transaction-line-fields/transaction-line-commission-button.component.js +1 -7
- package/esm2015/lib/component/transaction-line-fields/transaction-line-commission-code.module.js +2 -3
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-button.component.js +1 -10
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-date-button.component.js +4 -32
- package/esm2015/lib/component/transaction-line-fields/transaction-line-delivery-method.module.js +2 -3
- package/esm2015/lib/component/transaction-line-fields/transaction-line-discount-amount.component.js +5 -5
- package/esm2015/lib/component/transaction-line-fields/transaction-line-discount-button.component.js +1 -7
- package/esm2015/lib/component/transaction-line-fields/transaction-line-drop-shipment-button.component.js +11 -14
- package/esm2015/lib/component/transaction-line-fields/transaction-line-line-discount.component.js +5 -5
- package/esm2015/lib/component/transaction-line-fields/transaction-line-price-list.module.js +2 -3
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantum-discount.component.js +5 -5
- package/esm2015/lib/component/transaction-line-fields/transaction-line-reference.component.js +4 -4
- package/esm2015/lib/component/transaction-line-fields/transaction-line-special-discount.component.js +5 -5
- package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-button.component.js +6 -8
- package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier-delivery-date-button.component.js +6 -8
- package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier.component.js +6 -3
- package/esm2015/lib/component/transaction-line-fields/transaction-line-supplier.module.js +1 -3
- package/esm2015/lib/component/transaction-line-fields/transaction-line-vat-button.component.js +1 -6
- package/esm2015/lib/component/transaction-line-fields/transaction-line-vat.module.js +2 -3
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-button.component.js +1 -10
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.js +7 -13
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse-location.component.js +6 -3
- package/esm2015/lib/component/transaction-line-fields/transaction-line-warehouse.module.js +2 -3
- package/esm2015/lib/component/transaction-line-fields/transaction-purchase-portal-line-delivery-date.component.js +1 -8
- package/esm2015/lib/component/transaction-line-purchase-receive-goods/transaction-line-purchase-receive-goods.component.js +7 -4
- package/esm2015/lib/component/transaction-line-sales-allocation/transaction-line-sales-allocation.component.js +6 -3
- package/esm2015/lib/component/transaction-line-side-panel-article-details/transaction-line-side-panel-article-details.component.js +1 -15
- package/esm2015/lib/component/transaction-line-side-panel-article-details/transaction-line-side-panel-article-details.module.js +2 -3
- package/esm2015/lib/component/transaction-line-side-panel-default/transaction-line-side-panel-default.module.js +2 -3
- package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-picked/transaction-line-side-panel-picked.component.js +54 -0
- package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-picked/transaction-line-side-panel-picked.module.js +23 -0
- package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-sales.component.js +13 -1
- package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-sales.module.js +6 -2
- package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-to-be-picked/transaction-line-side-panel-to-be-picked.component.js +54 -0
- package/esm2015/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-to-be-picked/transaction-line-side-panel-to-be-picked.module.js +23 -0
- package/esm2015/lib/component/transaction-navigation-button/transaction-navigation-button.component.js +1 -7
- package/esm2015/lib/component/transaction-navigation-button-list/transaction-navigation-button-list.component.js +9 -5
- package/esm2015/lib/component/transaction-picking-history/transaction-picking-history.component.js +48 -0
- package/esm2015/lib/component/transaction-picking-history/transaction-picking-history.module.js +26 -0
- package/esm2015/lib/component/transaction-print-package-sticker/transaction-print-package-sticker.component.js +3 -3
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access/transaction-quick-access.module.js +6 -2
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/transaction-quick-access-goods-allocation.component.js +1 -6
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.js +59 -29
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.module.js +4 -2
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.component.js +16 -2
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.js +60 -25
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.module.js +4 -2
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.js +4 -3
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.js +43 -28
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.module.js +3 -3
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-picked/transaction-quick-access-picked.component.js +54 -0
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-picked/transaction-quick-access-picked.module.js +25 -0
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-purchase-order-overview/transaction-quick-access-purchase-order-overview.component.js +6 -15
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-purchase-order-overview/transaction-quick-access-purchase-order-overview.module.js +2 -4
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-received-goods/transaction-quick-access-received-goods.component.js +6 -6
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.js +1 -1
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-to-be-picked/transaction-quick-access-to-be-picked.component.js +54 -0
- package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-to-be-picked/transaction-quick-access-to-be-picked.module.js +25 -0
- package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.module.js +2 -4
- package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.module.js +2 -4
- package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.js +4 -1
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.js +10 -3
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.module.js +3 -2
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/transaction-search-tile.component.js +4 -1
- package/esm2015/lib/component/transaction-tile/transaction-tile.component.js +3 -3
- package/esm2015/lib/enum/date-period.enum.js +11 -0
- package/esm2015/lib/enum/icon.enum.js +3 -1
- package/esm2015/lib/enum/transaction-type-category.enum.js +4 -1
- package/esm2015/lib/model/icon-svg.js +3 -1
- package/esm2015/lib/model/transaction-bar-button.js +1 -1
- package/esm2015/lib/res/dictionary/dictionaries.js +3 -3
- package/esm2015/lib/service/article-connector.service.js +2 -2
- package/esm2015/lib/service/pending-reason.service.js +9 -1
- package/esm2015/lib/service/relation-connector.service.js +2 -2
- package/esm2015/lib/service/relation.service.js +5 -5
- package/esm2015/lib/service/shared-connector.service.js +14 -2
- package/esm2015/lib/service/shared.service.js +4 -1
- package/esm2015/lib/service/transaction-base.service.js +19 -3
- package/esm2015/lib/service/transaction-connector-adapter.service.js +150 -2
- package/esm2015/lib/service/transaction-connector.service.js +64 -1
- package/esm2015/lib/service/transaction-event.service.js +6 -1
- package/esm2015/lib/service/transaction-mapping.service.js +12 -3
- package/esm2015/lib/service/transaction-screen-configuration.service.js +21 -4
- package/esm2015/lib/service/transaction.service.js +138 -11
- package/esm2015/lib/transaction-version.js +3 -3
- package/esm2015/public_api.js +7 -1
- package/fesm2015/colijnit-transaction.js +1966 -1032
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/add-product/add-product.component.d.ts +5 -8
- package/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.d.ts +0 -10
- package/lib/component/checkout/checkout-overview-delivery-edit/style/_layout.scss +0 -2
- package/lib/component/checkout/checkout-overview-delivery-edit/style/_theme.scss +0 -3
- package/lib/component/checkout/checkout-overview-delivery-edit/style/material.scss +1 -0
- package/lib/component/checkout/checkout-overview-relation-edit/style/_layout.scss +0 -2
- package/lib/component/checkout/checkout-overview-relation-edit/style/_theme.scss +0 -3
- package/lib/component/checkout/checkout-overview-relation-edit/style/material.scss +1 -1
- package/lib/component/checkout/style/_layout.scss +0 -2
- package/lib/component/checkout/style/_theme.scss +0 -3
- package/lib/component/checkout/style/material.scss +1 -0
- package/lib/component/checkout-simple/checkout-simple-overview-delivery-edit/style/_layout.scss +6 -0
- package/lib/component/checkout-simple/checkout-simple-overview-delivery-edit/style/_material-definition.scss +2 -0
- package/lib/component/checkout-simple/checkout-simple-overview-delivery-edit/style/_theme.scss +6 -0
- package/lib/component/checkout-simple/checkout-simple-overview-delivery-edit/style/material.scss +8 -0
- package/lib/component/checkout-simple/checkout-simple-overview-payment/style/_layout.scss +47 -0
- package/lib/component/checkout-simple/checkout-simple-overview-payment/style/_material-definition.scss +18 -0
- package/lib/component/checkout-simple/checkout-simple-overview-payment/style/_theme.scss +21 -0
- package/lib/component/checkout-simple/checkout-simple-overview-payment/style/material.scss +4 -0
- package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/_layout.scss +15 -0
- package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/_material-definition.scss +7 -0
- package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/_theme.scss +10 -0
- package/lib/component/checkout-simple/checkout-simple-overview-relation-edit/style/material.scss +8 -0
- package/lib/component/checkout-simple/style/_layout.scss +115 -0
- package/lib/component/checkout-simple/style/_material-definition.scss +13 -0
- package/lib/component/checkout-simple/style/_theme.scss +7 -0
- package/lib/component/checkout-simple/style/material.scss +10 -0
- package/lib/component/core/base/transaction-base.component.d.ts +3 -1
- package/lib/component/core/base/transaction-search-tile-base.component.d.ts +1 -0
- package/lib/component/dialog/dialog-header-search/style/_layout.scss +2 -0
- package/lib/component/dialog/dialog-header-search/style/_material-definition.scss +1 -0
- package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/style/_layout.scss +3 -3
- package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/style/_material-definition.scss +2 -1
- package/lib/component/digital-signature/digital-signature.component.d.ts +13 -0
- package/lib/component/digital-signature/digital-signature.module.d.ts +2 -0
- package/lib/component/digital-signature/style/_layout.scss +13 -0
- package/lib/component/digital-signature/style/_theme.scss +4 -0
- package/lib/component/digital-signature/style/material.scss +4 -0
- package/lib/component/relation/relation-address/style/material.scss +0 -1
- package/lib/component/relation/relation-general/relation-general.component.d.ts +1 -0
- package/lib/component/shared/transaction-article-text/style/_layout.scss +5 -18
- package/lib/component/shared/transaction-article-text/style/material.scss +0 -1
- package/lib/component/shared/transaction-article-text/transaction-article-text.component.d.ts +3 -2
- package/lib/component/transaction/style/_layout.scss +10 -3
- package/lib/component/transaction/transaction.component.d.ts +4 -1
- package/lib/component/transaction-batch-order-picking/fast-date-range-picker/fast-date-range-picker.component.d.ts +13 -0
- package/lib/component/transaction-batch-order-picking/fast-date-range-picker/fast-date-range-picker.module.d.ts +2 -0
- package/lib/component/transaction-batch-order-picking/fast-date-range-picker/style/_layout.scss +28 -0
- package/lib/component/transaction-batch-order-picking/fast-date-range-picker/style/_theme.scss +4 -0
- package/lib/component/transaction-batch-order-picking/fast-date-range-picker/style/material.scss +4 -0
- package/lib/component/transaction-batch-order-picking/style/_layout.scss +5 -0
- package/lib/component/transaction-batch-order-picking/style/_theme.scss +4 -0
- package/lib/component/transaction-batch-order-picking/style/material.scss +5 -0
- package/lib/component/transaction-batch-order-picking/transaction-batch-order-picking.component.d.ts +5 -0
- package/lib/component/transaction-batch-order-picking/transaction-batch-order-picking.module.d.ts +2 -0
- package/lib/component/transaction-button-bar/style/_layout.scss +21 -0
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button-base.component.d.ts +3 -0
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-button-bar-button.component.d.ts +3 -1
- package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-picking-button-bar-button.component.d.ts +22 -0
- package/lib/component/transaction-button-bar/transaction-button-bar.component.d.ts +2 -0
- package/lib/component/transaction-card/transaction-card/transaction-card.component.d.ts +3 -1
- package/lib/component/transaction-grid/transaction-grid/transaction-grid.component.d.ts +3 -1
- package/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.d.ts +3 -1
- package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-base.component.d.ts +3 -1
- package/lib/component/transaction-header/transaction-header-popup/transaction-header-popup.component.d.ts +3 -1
- package/lib/component/transaction-header/transaction-header-relation/style/material.scss +0 -1
- package/lib/component/transaction-header-fields/transaction-header-administrative-relation.component.d.ts +3 -1
- package/lib/component/transaction-header-fields/transaction-header-branch.component.d.ts +3 -1
- package/lib/component/transaction-header-fields/transaction-header-currency.component.d.ts +3 -1
- package/lib/component/transaction-header-fields/transaction-header-delivery-method-button/transaction-header-delivery-method-button.component.d.ts +3 -1
- package/lib/component/transaction-header-fields/transaction-header-payment-button/transaction-header-payment-button.component.d.ts +3 -1
- package/lib/component/transaction-header-simple/style/_layout.scss +4 -0
- package/lib/component/transaction-header-simple/style/_theme.scss +4 -0
- package/lib/component/transaction-header-simple/style/material.scss +4 -0
- package/lib/component/transaction-labeled-warehouse-location-button/transaction-labeled-warehouse-location-button.component.d.ts +3 -1
- package/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.d.ts +0 -1
- package/lib/component/transaction-line/transaction-goods-allocation-line/style/_layout.scss +1 -1
- package/lib/component/transaction-line/transaction-invoice-line/transaction-invoice-line-base.component.d.ts +0 -1
- package/lib/component/transaction-line/transaction-line/style/_material-definition.scss +1 -0
- package/lib/component/transaction-line/transaction-line/style/_theme.scss +16 -0
- package/lib/component/transaction-line/transaction-line/transaction-line.component.d.ts +8 -3
- package/lib/component/transaction-line/transaction-picked-line/style/_layout.scss +27 -0
- package/lib/component/transaction-line/transaction-picked-line/style/_material-definition.scss +0 -0
- package/lib/component/transaction-line/transaction-picked-line/style/_theme.scss +4 -0
- package/lib/component/transaction-line/transaction-picked-line/style/material.scss +4 -0
- package/lib/component/transaction-line/transaction-picked-line/transaction-picked-line.component.d.ts +11 -0
- package/lib/component/transaction-line/transaction-picked-line/transaction-picked-line.module.d.ts +2 -0
- package/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line-base.component.d.ts +1 -1
- package/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.component.d.ts +1 -1
- package/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line-base.component.d.ts +0 -1
- package/lib/component/transaction-line/transaction-to-be-picked-line/style/_layout.scss +27 -0
- package/lib/component/transaction-line/transaction-to-be-picked-line/style/_material-definition.scss +0 -0
- package/lib/component/transaction-line/transaction-to-be-picked-line/style/_theme.scss +4 -0
- package/lib/component/transaction-line/transaction-to-be-picked-line/style/material.scss +4 -0
- package/lib/component/transaction-line/transaction-to-be-picked-line/transaction-to-be-picked-line.component.d.ts +11 -0
- package/lib/component/transaction-line/transaction-to-be-picked-line/transaction-to-be-picked-line.module.d.ts +2 -0
- package/lib/component/transaction-line-checkbox-list/style/_layout.scss +5 -10
- package/lib/component/transaction-line-checkbox-list/style/_material-definition.scss +5 -6
- package/lib/component/transaction-line-checkbox-list/style/_theme.scss +6 -6
- package/lib/component/transaction-line-fields/transaction-line-delivery-date-button.component.d.ts +0 -16
- package/lib/component/transaction-line-fields/transaction-line-discount-amount.component.d.ts +2 -2
- package/lib/component/transaction-line-fields/transaction-line-drop-shipment-button.component.d.ts +3 -1
- package/lib/component/transaction-line-fields/transaction-line-line-discount.component.d.ts +2 -2
- package/lib/component/transaction-line-fields/transaction-line-quantum-discount.component.d.ts +2 -2
- package/lib/component/transaction-line-fields/transaction-line-reference.component.d.ts +2 -2
- package/lib/component/transaction-line-fields/transaction-line-special-discount.component.d.ts +2 -2
- package/lib/component/transaction-line-fields/transaction-line-supplier-button.component.d.ts +3 -1
- package/lib/component/transaction-line-fields/transaction-line-supplier-delivery-date-button.component.d.ts +3 -1
- package/lib/component/transaction-line-fields/transaction-line-supplier.component.d.ts +3 -1
- package/lib/component/transaction-line-fields/transaction-line-warehouse-location-button.component.d.ts +3 -1
- package/lib/component/transaction-line-fields/transaction-line-warehouse-location.component.d.ts +3 -1
- package/lib/component/transaction-line-purchase-receive-goods/transaction-line-purchase-receive-goods.component.d.ts +3 -1
- package/lib/component/transaction-line-sales-allocation/transaction-line-sales-allocation.component.d.ts +3 -1
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-picked/style/_layout.scss +4 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-picked/style/_theme.scss +4 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-picked/style/material.scss +4 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-picked/transaction-line-side-panel-picked.component.d.ts +9 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-picked/transaction-line-side-panel-picked.module.d.ts +2 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-to-be-picked/style/_layout.scss +4 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-to-be-picked/style/_material-definition.scss +0 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-to-be-picked/style/_theme.scss +4 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-to-be-picked/style/material.scss +4 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-to-be-picked/transaction-line-side-panel-to-be-picked.component.d.ts +10 -0
- package/lib/component/transaction-line-side-panel-sales/transaction-line-side-panel-to-be-picked/transaction-line-side-panel-to-be-picked.module.d.ts +2 -0
- package/lib/component/transaction-lines/style/material.scss +2 -0
- package/lib/component/transaction-navigation-button-list/transaction-navigation-button-list.component.d.ts +3 -2
- package/lib/component/transaction-picking-history/style/_layout.scss +4 -0
- package/lib/component/transaction-picking-history/style/_material-definition.scss +0 -0
- package/lib/component/transaction-picking-history/style/_theme.scss +4 -0
- package/lib/component/transaction-picking-history/style/material.scss +4 -0
- package/lib/component/transaction-picking-history/transaction-picking-history.component.d.ts +7 -0
- package/lib/component/transaction-picking-history/transaction-picking-history.module.d.ts +2 -0
- package/lib/component/transaction-print-package-sticker/transaction-print-package-sticker.component.d.ts +6 -6
- package/lib/component/transaction-quick-access/transaction-quick-access-goods-allocation/transaction-quick-access-goods-allocation.component.d.ts +0 -1
- package/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.d.ts +12 -8
- package/lib/component/transaction-quick-access/transaction-quick-access-order-confirmation/transaction-quick-access-order-confirmation.component.d.ts +1 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.d.ts +15 -7
- package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.d.ts +1 -1
- package/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.d.ts +12 -11
- package/lib/component/transaction-quick-access/transaction-quick-access-picked/style/_layout.component.ts.child.3.scss +4 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-picked/style/_material-definition.component.ts.child.0.scss +0 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-picked/style/_theme.component.ts.child.2.scss +4 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-picked/style/material.component.ts.child.1.scss +4 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-picked/transaction-quick-access-picked.component.d.ts +9 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-picked/transaction-quick-access-picked.module.d.ts +2 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-purchase-order-overview/transaction-quick-access-purchase-order-overview.component.d.ts +8 -9
- package/lib/component/transaction-quick-access/transaction-quick-access-received-goods/transaction-quick-access-received-goods.component.d.ts +6 -7
- package/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.d.ts +8 -7
- package/lib/component/transaction-quick-access/transaction-quick-access-to-be-picked/style/_layout.scss +4 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-to-be-picked/style/_material-definition.scss +0 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-to-be-picked/style/_theme.scss +4 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-to-be-picked/style/material.scss +4 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-to-be-picked/transaction-quick-access-to-be-picked.component.d.ts +9 -0
- package/lib/component/transaction-quick-access/transaction-quick-access-to-be-picked/transaction-quick-access-to-be-picked.module.d.ts +2 -0
- package/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.d.ts +1 -0
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/style/_layout.scss +16 -0
- package/lib/component/transaction-search/transaction-search-tile/transaction-search-tile/transaction-search-tile.component.d.ts +1 -0
- package/lib/component/transaction-simple/style/_layout.scss +4 -0
- package/lib/component/transaction-simple/style/_material-definition.scss +0 -0
- package/lib/component/transaction-simple/style/_theme.scss +4 -0
- package/lib/component/transaction-simple/style/material.scss +16 -0
- package/lib/component/transaction-tile/transaction-tile.component.d.ts +4 -4
- package/lib/enum/date-period.enum.d.ts +9 -0
- package/lib/enum/icon.enum.d.ts +2 -0
- package/lib/enum/transaction-type-category.enum.d.ts +3 -0
- package/lib/model/transaction-bar-button.d.ts +1 -0
- package/lib/res/dictionary/dictionaries.d.ts +45 -0
- package/lib/service/shared-connector.service.d.ts +1 -0
- package/lib/service/shared.service.d.ts +1 -0
- package/lib/service/transaction-base.service.d.ts +3 -1
- package/lib/service/transaction-connector-adapter.service.d.ts +37 -12
- package/lib/service/transaction-connector.service.d.ts +37 -12
- package/lib/service/transaction-event.service.d.ts +6 -1
- package/lib/service/transaction-screen-configuration.service.d.ts +9 -3
- package/lib/service/transaction.service.d.ts +37 -12
- package/lib/style/_variables.scss +8 -2
- package/lib/style/transaction-globals.scss +3 -0
- package/package.json +9 -24
- package/public_api.d.ts +6 -0
- package/esm2015/lib/component/checkout/checkout-login/checkout-login.component.js +0 -106
- package/esm2015/lib/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.js +0 -47
- package/esm2015/lib/component/discount/discount.component.js +0 -110
- package/esm2015/lib/component/discount/discount.module.js +0 -29
- package/esm2015/lib/enum/order-discount-type.enum.js +0 -7
- package/lib/component/checkout/checkout-login/checkout-login.component.d.ts +0 -21
- package/lib/component/checkout/checkout-login/checkout-login.component.scss +0 -35
- package/lib/component/checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.d.ts +0 -11
- package/lib/component/discount/discount.component.d.ts +0 -19
- package/lib/component/discount/discount.module.d.ts +0 -2
- package/lib/enum/order-discount-type.enum.d.ts +0 -5
- /package/lib/component/{discount → digital-signature}/style/_material-definition.scss +0 -0
- /package/lib/component/{checkout/checkout-overview-delivery-address/checkout-overview-delivery-address.component.scss → transaction-batch-order-picking/fast-date-range-picker/style/_material-definition.scss} +0 -0
- /package/lib/component/{discount/style/_layout.scss → transaction-batch-order-picking/style/_material-definition.scss} +0 -0
- /package/lib/component/{discount/style/_theme.scss → transaction-header-simple/style/_material-definition.scss} +0 -0
- /package/lib/component/{discount/style/material.scss → transaction-line-side-panel-sales/transaction-line-side-panel-picked/style/_material-definition.scss} +0 -0
|
@@ -22,6 +22,7 @@ import { Tag } from '@colijnit/mainapi/build/model/tag';
|
|
|
22
22
|
import { InternalParam } from '@colijnit/mainapi/build/enum/internal-param.enum';
|
|
23
23
|
import { Printer } from '@colijnit/mainapi/build/model/printer.bo';
|
|
24
24
|
import { SelectSingleParameterizedCacheService } from '../cache/service/select-single-parameterized-cache.service';
|
|
25
|
+
import { ObjectConfiguration } from "@colijnit/ioneconnector/build/model/object-configuration";
|
|
25
26
|
import * as i0 from "@angular/core";
|
|
26
27
|
import * as i1 from "./transaction-connector-adapter.service";
|
|
27
28
|
import * as i2 from "../cache/service/select-single-cache.service";
|
|
@@ -579,6 +580,21 @@ export class TransactionConnectorService {
|
|
|
579
580
|
return yield this._adapterService.getGoodsAllocationHistory(transId, lineNr);
|
|
580
581
|
});
|
|
581
582
|
}
|
|
583
|
+
getGoodsToBePickedHistory(transId, lineNr) {
|
|
584
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
585
|
+
return yield this._adapterService.getGoodsToBePickedHistory(transId, lineNr);
|
|
586
|
+
});
|
|
587
|
+
}
|
|
588
|
+
getGoodsPickedHistory(transId, lineNr) {
|
|
589
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
590
|
+
return yield this._adapterService.getGoodsPickedHistory(transId, lineNr);
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
setGoodsToBePickedForSalesOrder(request) {
|
|
594
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
595
|
+
return yield this._adapterService.setGoodsToBePickedForSalesOrder(request);
|
|
596
|
+
});
|
|
597
|
+
}
|
|
582
598
|
getOrderConfirmationEmailLayouts(transactionUUID) {
|
|
583
599
|
return __awaiter(this, void 0, void 0, function* () {
|
|
584
600
|
return yield this._adapterService.getOrderConfirmationEmailLayouts(transactionUUID);
|
|
@@ -604,11 +620,21 @@ export class TransactionConnectorService {
|
|
|
604
620
|
return yield this._adapterService.printOrderConfirmation(request);
|
|
605
621
|
});
|
|
606
622
|
}
|
|
623
|
+
printHistoricOrderConfirmation(request) {
|
|
624
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
625
|
+
return yield this._adapterService.printHistoricOrderConfirmation(request);
|
|
626
|
+
});
|
|
627
|
+
}
|
|
607
628
|
emailOrderConfirmation(request) {
|
|
608
629
|
return __awaiter(this, void 0, void 0, function* () {
|
|
609
630
|
return yield this._adapterService.emailOrderConfirmation(request);
|
|
610
631
|
});
|
|
611
632
|
}
|
|
633
|
+
emailHistoricOrderConfirmation(request) {
|
|
634
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
635
|
+
return yield this._adapterService.emailHistoricOrderConfirmation(request);
|
|
636
|
+
});
|
|
637
|
+
}
|
|
612
638
|
pdfOrderConfirmation(request) {
|
|
613
639
|
return __awaiter(this, void 0, void 0, function* () {
|
|
614
640
|
return yield this._adapterService.pdfOrderConfirmation(request);
|
|
@@ -664,16 +690,31 @@ export class TransactionConnectorService {
|
|
|
664
690
|
return yield this._adapterService.emailDeliveryNote(emailDeliveryNoteRequest);
|
|
665
691
|
});
|
|
666
692
|
}
|
|
693
|
+
emailHistoricDeliveryNote(emailHistoricDeliveryNoteRequest) {
|
|
694
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
695
|
+
return yield this._adapterService.emailHistoricDeliveryNote(emailHistoricDeliveryNoteRequest);
|
|
696
|
+
});
|
|
697
|
+
}
|
|
667
698
|
pdfDeliveryNote(pdfDeliveryNoteRequest) {
|
|
668
699
|
return __awaiter(this, void 0, void 0, function* () {
|
|
669
700
|
return yield this._adapterService.pdfDeliveryNote(pdfDeliveryNoteRequest);
|
|
670
701
|
});
|
|
671
702
|
}
|
|
703
|
+
pdfHistoricDeliveryNote(pdfHistoricDeliveryNoteRequest) {
|
|
704
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
705
|
+
return yield this._adapterService.pdfHistoricDeliveryNote(pdfHistoricDeliveryNoteRequest);
|
|
706
|
+
});
|
|
707
|
+
}
|
|
672
708
|
printDeliveryNote(printDeliveryNoteRequest) {
|
|
673
709
|
return __awaiter(this, void 0, void 0, function* () {
|
|
674
710
|
return yield this._adapterService.printDeliveryNote(printDeliveryNoteRequest);
|
|
675
711
|
});
|
|
676
712
|
}
|
|
713
|
+
printHistoricDeliveryNote(printHistoricDeliveryNoteRequest) {
|
|
714
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
715
|
+
return yield this._adapterService.printHistoricDeliveryNote(printHistoricDeliveryNoteRequest);
|
|
716
|
+
});
|
|
717
|
+
}
|
|
677
718
|
getDeliveryNoteDefaultSendMethod(relationId) {
|
|
678
719
|
return __awaiter(this, void 0, void 0, function* () {
|
|
679
720
|
return yield this._adapterService.getDeliveryNoteDefaultSendMethod(relationId);
|
|
@@ -699,16 +740,31 @@ export class TransactionConnectorService {
|
|
|
699
740
|
return yield this._adapterService.emailInvoice(emailInvoiceRequest);
|
|
700
741
|
});
|
|
701
742
|
}
|
|
743
|
+
emailHistoricInvoice(emailHistoricInvoiceRequest) {
|
|
744
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
745
|
+
return yield this._adapterService.emailHistoricInvoice(emailHistoricInvoiceRequest);
|
|
746
|
+
});
|
|
747
|
+
}
|
|
702
748
|
pdfInvoice(pdfInvoiceRequest) {
|
|
703
749
|
return __awaiter(this, void 0, void 0, function* () {
|
|
704
750
|
return yield this._adapterService.pdfInvoice(pdfInvoiceRequest);
|
|
705
751
|
});
|
|
706
752
|
}
|
|
753
|
+
pdfHistoricInvoice(pdfHistoricInvoiceRequest) {
|
|
754
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
755
|
+
return yield this._adapterService.pdfHistoricInvoice(pdfHistoricInvoiceRequest);
|
|
756
|
+
});
|
|
757
|
+
}
|
|
707
758
|
printInvoice(printInvoiceRequest) {
|
|
708
759
|
return __awaiter(this, void 0, void 0, function* () {
|
|
709
760
|
return yield this._adapterService.printInvoice(printInvoiceRequest);
|
|
710
761
|
});
|
|
711
762
|
}
|
|
763
|
+
printHistoricInvoice(printHistoricInvoiceRequest) {
|
|
764
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
765
|
+
return yield this._adapterService.printHistoricInvoice(printHistoricInvoiceRequest);
|
|
766
|
+
});
|
|
767
|
+
}
|
|
712
768
|
// public async getInvoiceDefaultSendMethod(relationId: number): Promise<number> {
|
|
713
769
|
// return await this._adapterService.getInvoiceDefaultSendMethod(relationId);
|
|
714
770
|
// }
|
|
@@ -761,6 +817,13 @@ export class TransactionConnectorService {
|
|
|
761
817
|
}).getValue(param);
|
|
762
818
|
});
|
|
763
819
|
}
|
|
820
|
+
getObjectConfiguration(screenCfgModule, params, insertMode) {
|
|
821
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
822
|
+
return this._selectMultipleParameterizedCacheService.requestCache(ObjectConfiguration, (screenCfgModule, params, insertMode) => {
|
|
823
|
+
return this._adapterService.getObjectConfiguration(screenCfgModule, params, insertMode);
|
|
824
|
+
}).getValue(screenCfgModule, params, insertMode);
|
|
825
|
+
});
|
|
826
|
+
}
|
|
764
827
|
getHistoricDocuments(transId, documentCode) {
|
|
765
828
|
return __awaiter(this, void 0, void 0, function* () {
|
|
766
829
|
return yield this._adapterService.getHistoricDocuments(transId, documentCode);
|
|
@@ -785,4 +848,4 @@ TransactionConnectorService.ctorParameters = () => [
|
|
|
785
848
|
{ type: SelectMultipleParameterizedCacheService },
|
|
786
849
|
{ type: SelectSingleParameterizedCacheService }
|
|
787
850
|
];
|
|
788
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUV4RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seURBQXlELENBQUM7QUFDdkYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBR3ZGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBRTNGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUVyRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFFaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzFFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUc3RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBWTVFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ3JILE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBR3RGLE9BQU8s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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXJrZXRpbmd9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9tYXJrZXRpbmcuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bSc7XG5pbXBvcnQge0NvdW50cnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3VudHJ5LmJvJztcbmltcG9ydCB7U2VxdWVuY2VOYW1lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9zZXF1ZW5jZS1uYW1lLmVudW0nO1xuaW1wb3J0IHtEZWxpdmVyeU1ldGhvZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2RlbGl2ZXJ5LW1ldGhvZC5ibyc7XG5pbXBvcnQge0RlbGl2ZXJ5T3B0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktb3B0aW9uLmJvJztcbmltcG9ydCB7R2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC1wb3N0YWwtY29kZS1yZXRyaWV2YWwtb3V0cHV0LXBhcmFtcyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFydGljbGUtd2FyZWhvdXNlLmJvJztcbmltcG9ydCB7QXJ0aWNsZUZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0JztcbmltcG9ydCB7U3RhbmRhcmRUZXh0fSBmcm9tICcuLi9tb2RlbC9zdGFuZGFyZC10ZXh0JztcbmltcG9ydCB7Q3VzdG9tZXJHcm91cH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWdyb3VwLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XG5pbXBvcnQge0Nhc2hSZWdpc3Rlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtcmVnaXN0ZXInO1xuaW1wb3J0IHtSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVzb2x2ZS1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7UHJpY2VMaXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpY2UtbGlzdCc7XG5pbXBvcnQge1ZhdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ZhdCc7XG5pbXBvcnQge0Rpc2NvdW50VHlwZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vZGlzY291bnQtdHlwZS5lbnVtJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3UmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC12aWV3LXJlcXVlc3QnO1xuaW1wb3J0IHtPbkhvbGRDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb24taG9sZC1jb2RlLmJvJztcbmltcG9ydCB7V2FyZWhvdXNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvd2FyZWhvdXNlLmJvJztcbmltcG9ydCB7Q29kZURlc2NyaXB0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY29kZS1kZXNjcmlwdGlvbic7XG5pbXBvcnQge1JlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVjZWl2ZS1nb29kcy1mb3ItcHVyY2hhc2Utb3JkZXItcmVxdWVzdC5ibyc7XG5pbXBvcnQge1xuICAgIFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uUmVxdWVzdFxufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVjZWl2ZS1nb29kcy1mb3ItcHVyY2hhc2Utb3JkZXItY29ycmVjdGlvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7R2V0UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLXBvcnRhbC1saW5lJztcbmltcG9ydCB7UHVyY2hhc2VQb3J0YWxMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtcG9ydGFsLWxpbmUuYm8nO1xuaW1wb3J0IHtDcmVhdGVQYXltZW50TGlua1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1wYXltZW50LWxpbmstcmVzdWx0LmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hSZXN1bHR9IGZyb20gJy4uL21vZGVsL3RyYW5zYWN0aW9uLXNlYXJjaC1yZXN1bHQnO1xuaW1wb3J0IHtSZXNvbHZlSGVhZGVyUGVuZGluZ1JlYXNvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLWhlYWRlci1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvJztcbmltcG9ydCB7UGF5bWVudExpbmtTdGF0dXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LWxpbmstc3RhdHVzLmJvJztcbmltcG9ydCB7U2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL3NlcnZpY2Uvc2VsZWN0LW11bHRpcGxlLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL3NlcnZpY2Uvc2VsZWN0LW11bHRpcGxlLXBhcmFtZXRlcml6ZWQtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yQWRhcHRlclNlcnZpY2V9IGZyb20gJy4vdHJhbnNhY3Rpb24tY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQge1NlbGVjdFNpbmdsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS9zZWxlY3Qtc2luZ2xlLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtHZXRQdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXB1cmNoYXNlLW9yZGVyLWNvbmZpcm1hdGlvbic7XG5pbXBvcnQge1RyYW5zYWN0aW9uTG9ja1Jlc3VsdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxvY2stcmVzdWx0LmJvJztcbmltcG9ydCB7UHJpdmFjeVNldHRpbmd9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaXZhY3ktc2V0dGluZy5ibyc7XG5pbXBvcnQge1JlbGF0aW9uUHJpdmFjeVNldHRpbmd9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1wcml2YWN5LXNldHRpbmcuYm8nO1xuaW1wb3J0IHtDb0RvbWFpblZhbHVlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb21haW4tdmFsdWUuYm8nO1xuaW1wb3J0IHtTYWxlc1BlcnNvbn0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3NhbGVzLXBlcnNvbi5ibyc7XG5pbXBvcnQge1RhZ30gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnJztcbmltcG9ydCB7U3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0c30gZnJvbSAnQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9tb2RlbC9yZXBvcnQvc3RvY2stc3RpY2tlcnMtcHJpbnQtbGF5b3V0cy5ibyc7XG5pbXBvcnQge0F2YWlsYWJsZVN0b2NrfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYXZhaWxhYmxlLXN0b2NrLmJvJztcbmltcG9ydCB7QWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYWxsb2NhdGUtZ29vZHMtZm9yLXNhbGVzLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtcbiAgICBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hbGxvY2F0ZS1nb29kcy1mb3Itc2FsZXMtb3JkZXItY29ycmVjdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWx9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLWVtYWlsLmJvJztcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLXByaW50LmJvJztcbmltcG9ydCB7RW1haWxPcmRlckNvbmZpcm1hdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2VtYWlsLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRPcmRlckNvbmZpcm1hdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaW50LW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UGRmT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wZGYtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludFB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wcmludC1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7RW1haWxQdXJjaGFzZU9yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZW1haWwtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1BkZlB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wZGYtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZVNhbGVzT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNhbGVzLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtY2FzaC1yZWdpc3Rlci1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtcHVyY2hhc2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZVNlcnZpY2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jcmVhdGUtc2VydmljZS1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlU2FsZXNRdW90YXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNhbGVzLXF1b3RhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7UHVyY2hhc2VBZHZpY2VGaWx0ZXJzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtYWR2aWNlLWZpbHRlcnMnO1xuaW1wb3J0IHtQdXJjaGFzZUFkdmljZUxpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1hZHZpY2UtbGluZS5ibyc7XG5pbXBvcnQge0VtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1BkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvSGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8taGlzdG9yeS5ibyc7XG5pbXBvcnQge0VtYWlsSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1pbnZvaWNlLXJlcXVlc3QnO1xuaW1wb3J0IHtQcmludEludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UmVmVHJhbnNhY3Rpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWYtdHJhbnNhY3Rpb24uYm8nO1xuaW1wb3J0IHtUYWdUcmVlSXRlbX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnLXRyZWUtaXRlbS5ibyc7XG5pbXBvcnQge0ludGVybmFsUGFyYW19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vaW50ZXJuYWwtcGFyYW0uZW51bSc7XG5pbXBvcnQge0dvb2RzUmVjZWlwdEhpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy1yZWNlaXB0LWhpc3RvcnkuYm8nO1xuaW1wb3J0IHtHb29kc0FsbG9jYXRpb25IaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtYWxsb2NhdGlvbi1oaXN0b3J5LmJvJztcbmltcG9ydCB7TGF5b3V0Q29kZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vbGF5b3V0LWNvZGUuZW51bSc7XG5pbXBvcnQge0hpc3RvcmljUmVwb3J0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvaGlzdG9yaWMtcmVwb3J0LmJvJztcbmltcG9ydCB7UHJpbnRlcn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpbnRlci5ibyc7XG5pbXBvcnQge0N1cnJlbmN5fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jdXJyZW5jeS5ibyc7XG5pbXBvcnQge1BheW1lbnRDb25kaXRpb259IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtY29uZGl0aW9uLmJvJztcbmltcG9ydCB7U2VsZWN0U2luZ2xlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS9zZWxlY3Qtc2luZ2xlLXBhcmFtZXRlcml6ZWQtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge1dhcmVob3VzZVN0b2NrSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dhcmVob3VzZS1zdG9jay1pbmZvLmJvJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FkYXB0ZXJTZXJ2aWNlOiBUcmFuc2FjdGlvbkNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZTogU2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlOiBTZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2U6IFNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIF9zZWxlY3RTaW5sZ2VQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlOiBTZWxlY3RTaW5nbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fYWRhcHRlclNlcnZpY2UuY29ubmVjdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVGdWxsT2JqZWN0KGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxBcnRpY2xlRnVsbE9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEFydGljbGVGdWxsT2JqZWN0PihBcnRpY2xlRnVsbE9iamVjdCwgZ29vZElkLCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRHb29kSWRGcm9tQXJ0aWNsZU5yKGFydGljbGVOcjogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZElkRnJvbUFydGljbGVOcihhcnRpY2xlTnIpO1xuICB9XG5cbiAgcHVibGljIGdldFNpbmdsZUltYWdlKG5vZGVJZDogbnVtYmVyIHwgc3RyaW5nLCBwdWJsaWNhdGlvbjogbnVtYmVyLCBpbmNsdWRlTWltZXR5cGU6IGJvb2xlYW4sIHRodW1iOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2luZ2xlSW1hZ2Uobm9kZUlkLCBwdWJsaWNhdGlvbiwgaW5jbHVkZU1pbWV0eXBlLCB0aHVtYik7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyaWVzKCk6IFByb21pc2U8Q291bnRyeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb3VudHJ5PihDb3VudHJ5LCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q291bnRyaWVzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEN1c3RvbWVyR3JvdXBzKCk6IFByb21pc2U8Q3VzdG9tZXJHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDdXN0b21lckdyb3VwPihDdXN0b21lckdyb3VwLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VzdG9tZXJHcm91cHMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q291bnRyeShjb3VudHJ5Q29kZTogc3RyaW5nKTogUHJvbWlzZTxDb3VudHJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENvdW50cnkoY291bnRyeUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGdldFByaXZhY3lTZXR0aW5ncygpOiBQcm9taXNlPFByaXZhY3lTZXR0aW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaXZhY3lTZXR0aW5nPihQcml2YWN5U2V0dGluZywgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaXZhY3lTZXR0aW5ncygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpOiBQcm9taXNlPFJlbGF0aW9uUHJpdmFjeVNldHRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZWxhdGlvblByaXZhY3lTZXR0aW5ncygpO1xuICB9XG5cbiAgcHVibGljIGdldE1hcmtldGluZ0NvZGVzKCk6IFByb21pc2U8TWFya2V0aW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPE1hcmtldGluZz4oTWFya2V0aW5nLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0TWFya2V0aW5nQ29kZXMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlVHJhbnNhY3Rpb24oa2luZDogVHJhbnNhY3Rpb25LaW5kLCBicmFuY2hOcjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVUcmFuc2FjdGlvbihraW5kLCBicmFuY2hOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2FsZXNPcmRlcihyZXF1ZXN0OiBDcmVhdGVTYWxlc09yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2FsZXNPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVDYXNoUmVnaXN0ZXJPcmRlcihyZXF1ZXN0OiBDcmVhdGVDYXNoUmVnaXN0ZXJPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVB1cmNoYXNlT3JkZXIocmVxdWVzdDogQ3JlYXRlUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVB1cmNoYXNlT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlU2VydmljZU9yZGVyKHJlcXVlc3Q6IENyZWF0ZVNlcnZpY2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTYWxlc1F1b3RhdGlvbihyZXF1ZXN0OiBDcmVhdGVTYWxlc1F1b3RhdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVNhbGVzUXVvdGF0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVCb3VuZFRleHRMaW5lc09mQXJ0aWNsZUxpbmUoYXJ0aWNsZUxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uTGluZUluZm9bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlQm91bmRUZXh0TGluZXNPZkFydGljbGVMaW5lKGFydGljbGVMaW5lVXVpZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25CeU5yQW5kS2luZChraW5kOiBUcmFuc2FjdGlvbktpbmQsIHRyYW5zYWN0aW9uTm86IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25CeU5yQW5kS2luZChraW5kLCB0cmFuc2FjdGlvbk5vKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkJ5SWQodHJhbnNhY3Rpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVmcmVzaGVkVHJhbnNhY3Rpb25Gcm9tRGF0YWJhc2UodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZWZyZXNoZWRUcmFuc2FjdGlvbkZyb21EYXRhYmFzZSh0cmFuc2FjdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVUcmFuc2FjdGlvbkJ5VXVJZCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZVRyYW5zYWN0aW9uQnlVdUlkKHV1aWQpO1xuICB9XG5cbiAgcHVibGljIGxvY2tUcmFuc2FjdGlvbkJ5SWQodHJhbnNJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uTG9ja1Jlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrVHJhbnNhY3Rpb25CeUlkKHRyYW5zSWQsIHZlcnNpb24pO1xuICB9XG5cbiAgcHVibGljIGNvbW1pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY29tbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgcm9sbGJhY2soKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJvbGxiYWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVRyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2F2ZVRyYW5zYWN0aW9uKHV1aWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhc2hSZWdpc3RlcnMoYnJhbmNoPzogc3RyaW5nLCBncm91cD86IG51bWJlcik6IFByb21pc2U8Q2FzaFJlZ2lzdGVyW10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBicmFuY2g6IGJyYW5jaCxcbiAgICAgIGdyb3VwOiBncm91cFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDYXNoUmVnaXN0ZXI+KENhc2hSZWdpc3RlciwgKGJyYW5jaCwgZ3JvdXApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDYXNoUmVnaXN0ZXJzKGJyYW5jaCwgZ3JvdXApXG4gICAgfSkuZ2V0VmFsdWUoYnJhbmNoLCBncm91cCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpY2VMaXN0cyhjb2RlPzogc3RyaW5nKTogUHJvbWlzZTxQcmljZUxpc3RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaWNlTGlzdD4oUHJpY2VMaXN0LCAoY29kZT86IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFByaWNlTGlzdHMoY29kZSlcbiAgICB9KS5nZXRWYWx1ZShjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRWYXRMaXN0KG9ubHlWYWxpZDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxWYXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFZhdD4oVmF0LCAob25seVZhbGlkOiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRWYXRMaXN0KG9ubHlWYWxpZClcbiAgICB9KS5nZXRWYWx1ZShvbmx5VmFsaWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zVmF0Q29kZXModHlwZTogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxWYXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFZhdD4oVmF0LCAodHlwZTogc3RyaW5nLCBkYXRlOiBEYXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VHJhbnNWYXRDb2Rlcyh0eXBlLCBkYXRlKVxuICAgIH0pLmdldFZhbHVlKHR5cGUsIGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0OiBUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvblNlYXJjaFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5zZWFyY2hUcmFuc2FjdGlvbnMocmVxdWVzdClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZXF1ZW5jZVZhbHVlKHNlcXVlbmNlTmFtZTogU2VxdWVuY2VOYW1lKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U2VxdWVuY2VWYWx1ZShzZXF1ZW5jZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5TWV0aG9kcygpOiBQcm9taXNlPERlbGl2ZXJ5TWV0aG9kW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPERlbGl2ZXJ5TWV0aG9kPihEZWxpdmVyeU1ldGhvZCwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5TWV0aG9kcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU9wdGlvbnMoKTogUHJvbWlzZTxEZWxpdmVyeU9wdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxEZWxpdmVyeU9wdGlvbj4oRGVsaXZlcnlPcHRpb24sICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU9wdGlvbnMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkUmVsYXRpb25Ub1RyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZywgcmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5hZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odXVpZCwgcmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UG9zdGFsQ29kZVJldHJpZXZhbChwb3N0Y2FsQ29kZTogc3RyaW5nLCBob3VzZU5vOiBzdHJpbmcpOiBQcm9taXNlPEdldFBvc3RhbENvZGVSZXRyaWV2YWxPdXRwdXRQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UG9zdGFsQ29kZVJldHJpZXZhbChwb3N0Y2FsQ29kZSwgaG91c2VObyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVHJhbnNhY3Rpb25MaW5lKHV1aWQ6IHN0cmluZywgYXJ0aWNsZU5vOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIsIGFib3ZlTGluZU5yOiBudW1iZXIsIGJlbG93TGluZU5yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFRyYW5zYWN0aW9uTGluZSh1dWlkLCBhcnRpY2xlTm8sIHF1YW50aXR5LCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih1dWlkOiBzdHJpbmcsIHNob3dPbkRvY3VtZW50czogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBhcnRpY2xlQm91bmQ6IGJvb2xlYW4sIHJlZkFydGljbGVMaW5lTnI6IG51bWJlciwgYWJvdmVMaW5lTnI/OiBudW1iZXIsIGJlbG93TGluZU5yPzogbnVtYmVyKTpcbiAgICBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFRleHRMaW5lVG9UcmFuc2FjdGlvbih1dWlkLCBzaG93T25Eb2N1bWVudHMsIHRleHQsIGFtb3VudCwgYXJ0aWNsZUJvdW5kLCByZWZBcnRpY2xlTGluZU5yLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVRleHRMaW5lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgc2hvd09uRG9jdW1lbnRzOiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlVGV4dExpbmUodXVpZCwgbGluZVV1aWQsIHNob3dPbkRvY3VtZW50cywgdGV4dCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlTGluZVNlcXVlbmNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgYWJvdmVMaW5lTnI/OiBudW1iZXIsIGJlbG93TGluZU5yPzogbnVtYmVyKTpcbiAgICBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUxpbmVTZXF1ZW5jZSh1dWlkLCBsaW5lVXVpZCwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUobGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKGxpbmVVdWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5kZWxldGVUcmFuc2FjdGlvbkxpbmUodXVpZCwgbGluZVV1aWQpO1xuICB9XG5cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBuZXdRdWFudGl0eTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh1dWlkLCBsaW5lVXVpZCwgbmV3UXVhbnRpdHkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nTGluZVJlYXNvbihwZW5kaW5nTGluZVZhbHVlczogUmVzb2x2ZUxpbmVQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHBlbmRpbmdMaW5lVmFsdWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNvbHZlUGVuZGluZ0hlYWRlclJlYXNvbihwZW5kaW5nSGVhZGVyVmFsdWVzOiBSZXNvbHZlSGVhZGVyUGVuZGluZ1JlYXNvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlc29sdmVQZW5kaW5nSGVhZGVyUmVhc29uKHBlbmRpbmdIZWFkZXJWYWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENvbW1pc3Npb25Db2RlcyhsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oQ29Eb21haW5WYWx1ZSwgKGRvbWFpblZhbHVlOiBzdHJpbmcsIGxhbmd1YWdlQ29kZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZSlcbiAgICB9KS5nZXRWYWx1ZSgnQ29tbWlzc2lvbkNvZGUnLCBsYW5ndWFnZUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEluT3V0Q29sbGVjdGlvbihsYW5ndWFnZUNvZGU6IHN0cmluZyk6IFByb21pc2U8Q29Eb21haW5WYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8Q29Eb21haW5WYWx1ZT4oQ29Eb21haW5WYWx1ZSwgKGRvbWFpblZhbHVlOiBzdHJpbmcsIGxhbmd1YWdlQ29kZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZSlcbiAgICB9KS5nZXRWYWx1ZSgnSW5PdXRDb2xsZWN0aW9uJywgbGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzKGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzKGdvb2RJZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0UmVsYXRpb25CeVVzZXIodXVpZDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNldFJlbGF0aW9uQnlVc2VyKHV1aWQsIHVzZXJuYW1lLCBwYXNzd29yZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VGV4dFR5cGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VGV4dFR5cGVzKGxhbmd1YWdlQ29kZSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdGFuZGFyZFRleHRzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTdGFuZGFyZFRleHRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTdGFuZGFyZFRleHRzKGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2FsZXNQZXJzb25zKGRhdGU/OiBEYXRlKTogUHJvbWlzZTxTYWxlc1BlcnNvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8U2FsZXNQZXJzb24+KFNhbGVzUGVyc29uLCAoZGF0ZT86IERhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTYWxlc1BlcnNvbnMoZGF0ZSlcbiAgICB9KS5nZXRWYWx1ZShkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUYWdzKGNhdGVnb3J5OiBudW1iZXIpOiBQcm9taXNlPFRhZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VGFnPihUYWcsIChjYXRlZ29yeTogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0VGFncyhjYXRlZ29yeSlcbiAgICB9KS5nZXRWYWx1ZShjYXRlZ29yeSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T25Ib2xkQ29kZXMoKTogUHJvbWlzZTxPbkhvbGRDb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPE9uSG9sZENvZGU+KE9uSG9sZENvZGUsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPbkhvbGRDb2RlcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRXYXJlaG91c2VzKGJyYW5jaE5yPzogc3RyaW5nKTogUHJvbWlzZTxXYXJlaG91c2VbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFdhcmVob3VzZT4oV2FyZWhvdXNlLCAoYnJhbmNoTnI/OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRXYXJlaG91c2VzKGJyYW5jaE5yKVxuICAgIH0pLmdldFZhbHVlKGJyYW5jaE5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRXYXJlaG91c2VTdG9ja0luZm9CeUdvb2RBbmRCcmFuY2goZ29vZElkOiBudW1iZXIsIGJyYW5jaE5yOiBzdHJpbmcpOiBQcm9taXNlPFdhcmVob3VzZVN0b2NrSW5mb1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFdhcmVob3VzZVN0b2NrSW5mb0J5R29vZEFuZEJyYW5jaChnb29kSWQsIGJyYW5jaE5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRIaXN0b3JpY1N0YXRlVmFsdWVzKCk6IFByb21pc2U8Q29kZURlc2NyaXB0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0SGlzdG9yaWNTdGF0ZVZhbHVlcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbW1pc3Npb25Db2RlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb21taXNzaW9uQ29kZSh1dWlkLCBsaW5lVXVpZCwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXIodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBpZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllcih1dWlkLCBsaW5lVXVpZCwgaWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVdhcmVob3VzZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHdhcmVob3VzZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVXYXJlaG91c2UodXVpZCwgbGluZVV1aWQsIHdhcmVob3VzZU51bWJlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBwcmljZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZSh1dWlkLCBsaW5lVXVpZCwgcHJpY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlTGlzdCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHByaWNlTGlzdDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZUxpc3QodXVpZCwgbGluZVV1aWQsIHByaWNlTGlzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lVmF0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgaWQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lVmF0KHV1aWQsIGxpbmVVdWlkLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lTGluZURpc2NvdW50KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdHlwZTogRGlzY291bnRUeXBlLCBkaXNjb3VudDogbnVtYmVyLCByZWFzb246IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVMaW5lRGlzY291bnQodXVpZCwgbGluZVV1aWQsIHR5cGUsIGRpc2NvdW50LCByZWFzb24sIGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZURyb3BTaGlwbWVudCh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIG5ld0Ryb3BTaGlwbWVudDogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRHJvcFNoaXBtZW50KHV1aWQsIGxpbmVVdWlkLCBuZXdEcm9wU2hpcG1lbnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5TWV0aG9kKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5TWV0aG9kKHV1aWQsIGxpbmVVdWlkLCBtZXRob2QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5RGF0ZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZURlbGl2ZXJ5RGF0ZSh1dWlkLCBsaW5lVXVpZCwgZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lQXNzZW1ibHlUaW1lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdGltZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVBc3NlbWJseVRpbWUodXVpZCwgbGluZVV1aWQsIHRpbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUVkaXRUaW1lKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgdGltZTogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVFZGl0VGltZSh1dWlkLCBsaW5lVXVpZCwgdGltZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lU3VwcGxpZXJBcnRpY2xlTnVtYmVyKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgYXJ0aWNsZU51bWJlcjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllckFydGljbGVOdW1iZXIodXVpZCwgbGluZVV1aWQsIGFydGljbGVOdW1iZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZVJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVSZWZlcmVuY2UodXVpZCwgbGluZVV1aWQsIHJlZmVyZW5jZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lR29vZERlc2NyaXB0aW9uKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgZ29vZERlc2NyaXB0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUdvb2REZXNjcmlwdGlvbih1dWlkLCBsaW5lVXVpZCwgZ29vZERlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb2xsZWN0aW9uQ29kZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29sbGVjdGlvbkNvZGUodXVpZCwgbGluZVV1aWQsIGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVmaW5pdGl2ZSh1dWlkOiBzdHJpbmcsIGRlZmluaXRpdmU6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVmaW5pdGl2ZSh1dWlkLCBkZWZpbml0aXZlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJEZWxpdmVyeUFkZHJlc3ModXVpZDogc3RyaW5nLCBuZXdOYXdOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJEZWxpdmVyeUFkZHJlc3ModXVpZCwgbmV3TmF3TnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckludm9pY2VBZGRyZXNzKHV1aWQ6IHN0cmluZywgbmV3TmF3TnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVySW52b2ljZUFkZHJlc3ModXVpZCwgbmV3TmF3TnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGUodXVpZCwgZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGVEZWZpbml0aXZlKHV1aWQ6IHN0cmluZywgZGVmaW5pdGl2ZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGVEZWZpbml0aXZlKHV1aWQsIGRlZmluaXRpdmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVtYXJrKHV1aWQ6IHN0cmluZywgcmVtYXJrOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVtYXJrKHV1aWQsIHJlbWFyayk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWZlcmVuY2UodXVpZDogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWZlcmVuY2UodXVpZCwgcmVmZXJlbmNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlbGF0aW9uUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVsYXRpb25SZWZlcmVuY2UodXVpZCwgcmVmZXJlbmNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJEZXBvc2l0UGVyY2VudGFnZSh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJEZXBvc2l0UGVyY2VudGFnZSh1dWlkLCBhbW91bnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckRlcG9zaXRBbW91bnQodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyRGVwb3NpdEFtb3VudCh1dWlkLCBhbW91bnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJlZmVycmVkRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmVmZXJyZWREZWxpdmVyeURhdGUodXVpZCwgZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU1ldGhvZCh1dWlkOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5TWV0aG9kKHV1aWQsIG1ldGhvZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnModXVpZDogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmdbXSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeU9wdGlvbnModXVpZCwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXJ0aWFsRGVsaXZlcnkodXVpZDogc3RyaW5nLCBhbGxvd1BhcnRpYWw6IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUGFydGlhbERlbGl2ZXJ5KHV1aWQsIGFsbG93UGFydGlhbCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25CcmFuY2godXVpZDogc3RyaW5nLCBicmFuY2g6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25CcmFuY2godXVpZCwgYnJhbmNoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk9uSG9sZENvZGVzKHV1aWQ6IHN0cmluZywgY29kZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk9uSG9sZENvZGVzKHV1aWQsIGNvZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByaWNlS2luZCh1dWlkOiBzdHJpbmcsIHByaWNlS2luZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByaWNlS2luZCh1dWlkLCBwcmljZUtpbmQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQWRtQ29vcmRpbmF0b3IodXVpZDogc3RyaW5nLCByZWxhdGlvbjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkFkbUNvb3JkaW5hdG9yKHV1aWQsIHJlbGF0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk1hcmtldGluZyh1dWlkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25NYXJrZXRpbmcodXVpZCwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXNjb3VudCh1dWlkOiBzdHJpbmcsIHR5cGU6IERpc2NvdW50VHlwZSwgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGlzY291bnQodXVpZCwgdHlwZSwgYW1vdW50KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUodXVpZDogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgcGF5bWVudE1ldGhvZENvZGU6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlUGF5bWVudExpbmtSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlSW9uZVBheW1lbnRMaW5rQW5kUVJDb2RlKHV1aWQsIGFtb3VudCwgcGF5bWVudE1ldGhvZENvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRDogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50TGlua1N0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYXltZW50TGlua1N0YXR1cyhwYXltZW50TGlua1VVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzUmVjZWlwdEhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNSZWNlaXB0SGlzdG9yeT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc1JlY2VpcHRIaXN0b3J5KHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBSZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyQ29ycmVjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlUG9ydGFsTGluZXMocmVxdWVzdDogR2V0UHVyY2hhc2VQb3J0YWxMaW5lKTogUHJvbWlzZTxQdXJjaGFzZVBvcnRhbExpbmVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZVBvcnRhbExpbmVzKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVB1cmNoYXNlUG9ydGFsTGluZXMocHVyY2hhc2VQb3J0YWxMaW5lOiBQdXJjaGFzZVBvcnRhbExpbmUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlUHVyY2hhc2VQb3J0YWxMaW5lcyhwdXJjaGFzZVBvcnRhbExpbmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24ocHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbjogR2V0UHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5wdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKHB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvY2tQdXJjaGFzZVBvcnRhbExpbmVzKHRyYW5zSWRQdXJjaGFzZTogbnVtYmVyLCBsaW5lSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrUHVyY2hhc2VQb3J0YWxMaW5lcyh0cmFuc0lkUHVyY2hhc2UsIGxpbmVJZClcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZUNvbW1pc3Npb25PcmRlcnModHJhbnNJZDogbnVtYmVyLCBvbmx5R2VuZXJhdGVGb3JEaXJlY3RTZWxsU3VwcGxpZXJzOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdlbmVyYXRlQ29tbWlzc2lvbk9yZGVycyh0cmFuc0lkLCBvbmx5R2VuZXJhdGVGb3JEaXJlY3RTZWxsU3VwcGxpZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdG9ja1N0aWNrZXJUZW1wbGF0ZXMoZGF0YTogU3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0cyk6IFByb21pc2U8U3RvY2tTdGlja2Vyc1ByaW50TGF5b3V0c1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFN0b2NrU3RpY2tlclRlbXBsYXRlcyhkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBdmFpbGFibGVTdG9ja0dyb3VwZWRCeVdMQlNCeVRyYW5zSWRMaW5lTnIodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8QXZhaWxhYmxlU3RvY2tbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRBdmFpbGFibGVTdG9ja0dyb3VwZWRCeVdMQlNCeVRyYW5zSWRMaW5lTnIodHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlcihyZXF1ZXN0OiBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlclJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvbihyZXF1ZXN0OiBBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5hbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlckNvcnJlY3Rpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNBbGxvY2F0aW9uSGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc0FsbG9jYXRpb25IaXN0b3J5PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzQWxsb2NhdGlvbkhpc3RvcnkodHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJDb25maXJtYXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24odHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFByaW50T3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50T3JkZXJDb25maXJtYXRpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0OiBFbWFpbE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZk9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFBkZk9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludFB1cmNoYXNlT3JkZXIocmVxdWVzdDogUHJpbnRQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludFB1cmNoYXNlT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IEVtYWlsUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxQdXJjaGFzZU9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZlB1cmNoYXNlT3JkZXIocmVxdWVzdDogUGRmUHVyY2hhc2VPcmRlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmUHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlT3JkZXJFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlT3JkZXJQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQdXJjaGFzZU9yZGVyRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlckRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzRm9yU2FsZXNPcmRlcih0cmFuc2FjdGlvbklkOiBudW1iZXIsIGxpbmVOdW1iZXJzOiBudW1iZXJbXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVyc0ZvclNhbGVzT3JkZXIodHJhbnNhY3Rpb25JZCwgbGluZU51bWJlcnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlQWR2aWNlTGluZXMoZmlsdGVyczogUHVyY2hhc2VBZHZpY2VGaWx0ZXJzLCBnb29kSWQ/OiBudW1iZXIpOiBQcm9taXNlPFB1cmNoYXNlQWR2aWNlTGluZVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlQWR2aWNlTGluZXMoZmlsdGVycywgZ29vZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVycyhwdXJjaGFzZUFkdmljZUxpbmVzOiBQdXJjaGFzZUFkdmljZUxpbmVbXSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVycyhwdXJjaGFzZUFkdmljZUxpbmVzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbERlbGl2ZXJ5Tm90ZShlbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IEVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbERlbGl2ZXJ5Tm90ZShlbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkRlbGl2ZXJ5Tm90ZShwZGZEZWxpdmVyeU5vdGVSZXF1ZXN0OiBQZGZEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkRlbGl2ZXJ5Tm90ZShwZGZEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludERlbGl2ZXJ5Tm90ZShwcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFByaW50RGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludERlbGl2ZXJ5Tm90ZShwcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5Tm90ZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZURlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5Tm90ZUVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU5vdGVFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JJbnZvaWNlKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdEZvckludm9pY2UodHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEludm9pY2UoZW1haWxJbnZvaWNlUmVxdWVzdDogRW1haWxJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEludm9pY2UoZW1haWxJbnZvaWNlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSW52b2ljZShwZGZJbnZvaWNlUmVxdWVzdDogUGRmSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSW52b2ljZShwZGZJbnZvaWNlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRJbnZvaWNlKHByaW50SW52b2ljZVJlcXVlc3Q6IFByaW50SW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRJbnZvaWNlKHByaW50SW52b2ljZVJlcXVlc3QpO1xuICB9XG5cbiAgLy8gcHVibGljIGFzeW5jIGdldEludm9pY2VEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAvLyAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZCk7XG4gIC8vIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZUVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZVByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpbnRlcnMoKTogUHJvbWlzZTxQcmludGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaW50ZXI+KFByaW50ZXIsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcmludGVycygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDdXJyZW5jaWVzKGFjdGl2ZTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPEN1cnJlbmN5W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VycmVuY2llcyhhY3RpdmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRDb25kaXRpb25zKG5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPFBheW1lbnRDb25kaXRpb25bXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYXltZW50Q29uZGl0aW9ucyhuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRKb2luZWRUYWdzKHRhYmxlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogUHJvbWlzZTxUYWdUcmVlSXRlbVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEpvaW5lZFRhZ3ModGFibGUsIGtleSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25JbmZvKHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb0hpc3RvcnlbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkluZm8odHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWZUcmFuc2FjdGlvbnModHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxSZWZUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlZlRyYW5zYWN0aW9ucyh0cmFuc0lkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnRlcm5hbFBhcmFtZXRlclZhbHVlKHBhcmFtOiBJbnRlcm5hbFBhcmFtKTogUHJvbWlzZTxJbnRlcm5hbFBhcmFtPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmxnZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEludGVybmFsUGFyYW0+KEludGVybmFsUGFyYW0sIChwYXJhbTogSW50ZXJuYWxQYXJhbSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludGVybmFsUGFyYW1ldGVyVmFsdWUocGFyYW0pO1xuICAgIH0pLmdldFZhbHVlKHBhcmFtKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRIaXN0b3JpY0RvY3VtZW50cyh0cmFuc0lkOiBudW1iZXIsIGRvY3VtZW50Q29kZTogTGF5b3V0Q29kZSk6IFByb21pc2U8SGlzdG9yaWNSZXBvcnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRIaXN0b3JpY0RvY3VtZW50cyh0cmFuc0lkLCBkb2N1bWVudENvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBhY2thZ2VTdGlja2VyUHJpbnRMYXlvdXRzKCk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYWNrYWdlU3RpY2tlclByaW50TGF5b3V0cygpO1xuICB9XG59XG4iXX0=
|
|
851
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUV4RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seURBQXlELENBQUM7QUFDdkYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBR3ZGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBRTNGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUVyRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFFaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzFFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUc3RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBWTVFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ3JILE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzNGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBR3RGLE9BQU8s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QUNyQixDQUFDO0tBQUE7SUFFWSxzQkFBc0IsQ0FBQyxlQUF1QixFQUFFLE1BQTBCLEVBQUUsVUFBb0I7O1lBQzNHLE9BQU8sSUFBSSxDQUFDLHdDQUF3QyxDQUFDLFlBQVksQ0FBc0IsbUJBQW1CLEVBQUUsQ0FBQyxlQUF1QixFQUFFLE1BQTBCLEVBQUUsVUFBb0IsRUFBRSxFQUFFO2dCQUN4TCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMxRixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDO0tBQUE7SUFFWSxvQkFBb0IsQ0FBQyxPQUFlLEVBQUUsWUFBd0I7O1lBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNoRixDQUFDO0tBQUE7SUFFWSw2QkFBNkI7O1lBQ3hDLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDcEUsQ0FBQztLQUFBOzs7O1lBOXFCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTNFTyxrQ0FBa0M7WUFDbEMsd0JBQXdCO1lBSHhCLDBCQUEwQjtZQUMxQix1Q0FBdUM7WUEwQ3ZDLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hcmtldGluZ30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL21hcmtldGluZy5ibyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XG5pbXBvcnQge1RyYW5zYWN0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vdHJhbnNhY3Rpb24ta2luZC5lbnVtJztcbmltcG9ydCB7Q291bnRyeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NvdW50cnkuYm8nO1xuaW1wb3J0IHtTZXF1ZW5jZU5hbWV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3NlcXVlbmNlLW5hbWUuZW51bSc7XG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvJztcbmltcG9ydCB7RGVsaXZlcnlPcHRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1vcHRpb24uYm8nO1xuaW1wb3J0IHtHZXRQb3N0YWxDb2RlUmV0cmlldmFsT3V0cHV0UGFyYW1zfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ2V0LXBvc3RhbC1jb2RlLXJldHJpZXZhbC1vdXRwdXQtcGFyYW1zJztcbmltcG9ydCB7VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYXJ0aWNsZS13YXJlaG91c2UuYm8nO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xuaW1wb3J0IHtTdGFuZGFyZFRleHR9IGZyb20gJy4uL21vZGVsL3N0YW5kYXJkLXRleHQnO1xuaW1wb3J0IHtDdXN0b21lckdyb3VwfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZ3JvdXAuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvJztcbmltcG9ydCB7Q2FzaFJlZ2lzdGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1yZWdpc3Rlcic7XG5pbXBvcnQge1Jlc29sdmVMaW5lUGVuZGluZ1JlYXNvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtQcmljZUxpc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmljZS1saXN0JztcbmltcG9ydCB7VmF0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdmF0JztcbmltcG9ydCB7RGlzY291bnRUeXBlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9kaXNjb3VudC10eXBlLmVudW0nO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFZpZXdSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXctcmVxdWVzdCc7XG5pbXBvcnQge09uSG9sZENvZGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vbi1ob2xkLWNvZGUuYm8nO1xuaW1wb3J0IHtXYXJlaG91c2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2UuYm8nO1xuaW1wb3J0IHtDb2RlRGVzY3JpcHRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb2RlLWRlc2NyaXB0aW9uJztcbmltcG9ydCB7UmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWNlaXZlLWdvb2RzLWZvci1wdXJjaGFzZS1vcmRlci1yZXF1ZXN0LmJvJztcbmltcG9ydCB7XG4gICAgUmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb25SZXF1ZXN0XG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZWNlaXZlLWdvb2RzLWZvci1wdXJjaGFzZS1vcmRlci1jb3JyZWN0aW9uLXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtHZXRQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcHVyY2hhc2UtcG9ydGFsLWxpbmUnO1xuaW1wb3J0IHtQdXJjaGFzZVBvcnRhbExpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wdXJjaGFzZS1wb3J0YWwtbGluZS5ibyc7XG5pbXBvcnQge0NyZWF0ZVBheW1lbnRMaW5rUmVzdWx0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXBheW1lbnQtbGluay1yZXN1bHQuYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFJlc3VsdH0gZnJvbSAnLi4vbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXJlc3VsdCc7XG5pbXBvcnQge1Jlc29sdmVIZWFkZXJQZW5kaW5nUmVhc29uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtaGVhZGVyLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtQYXltZW50TGlua1N0YXR1c30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BheW1lbnQtbGluay1zdGF0dXMuYm8nO1xuaW1wb3J0IHtTZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS9zZWxlY3QtbXVsdGlwbGUtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge1NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS9zZWxlY3QtbXVsdGlwbGUtcGFyYW1ldGVyaXplZC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNhY3Rpb25Db25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSAnLi90cmFuc2FjdGlvbi1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7U2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3NlbGVjdC1zaW5nbGUtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge0dldFB1cmNoYXNlT3JkZXJDb25maXJtYXRpb259IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nZXQtcHVyY2hhc2Utb3JkZXItY29uZmlybWF0aW9uJztcbmltcG9ydCB7VHJhbnNhY3Rpb25Mb2NrUmVzdWx0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbG9jay1yZXN1bHQuYm8nO1xuaW1wb3J0IHtQcml2YWN5U2V0dGluZ30gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcHJpdmFjeS1zZXR0aW5nLmJvJztcbmltcG9ydCB7UmVsYXRpb25Qcml2YWN5U2V0dGluZ30gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXByaXZhY3ktc2V0dGluZy5ibyc7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvbWFpbi12YWx1ZS5ibyc7XG5pbXBvcnQge1NhbGVzUGVyc29ufSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc2FsZXMtcGVyc29uLmJvJztcbmltcG9ydCB7VGFnfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC90YWcnO1xuaW1wb3J0IHtTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzfSBmcm9tICdAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL21vZGVsL3JlcG9ydC9zdG9jay1zdGlja2Vycy1wcmludC1sYXlvdXRzLmJvJztcbmltcG9ydCB7QXZhaWxhYmxlU3RvY2t9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hdmFpbGFibGUtc3RvY2suYm8nO1xuaW1wb3J0IHtBbGxvY2F0ZUdvb2RzRm9yU2FsZXNPcmRlclJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hbGxvY2F0ZS1nb29kcy1mb3Itc2FsZXMtb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge1xuICAgIEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvblJlcXVlc3Rcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FsbG9jYXRlLWdvb2RzLWZvci1zYWxlcy1vcmRlci1jb3JyZWN0aW9uLXJlcXVlc3QnO1xuaW1wb3J0IHtSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tZW1haWwuYm8nO1xuaW1wb3J0IHtSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tcHJpbnQuYm8nO1xuaW1wb3J0IHtDcmVhdGVTYWxlc09yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zYWxlcy1vcmRlci1yZXF1ZXN0JztcbmltcG9ydCB7Q3JlYXRlQ2FzaFJlZ2lzdGVyT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLWNhc2gtcmVnaXN0ZXItb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZVB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3QnO1xuaW1wb3J0IHtDcmVhdGVTZXJ2aWNlT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY3JlYXRlLXNlcnZpY2Utb3JkZXItcmVxdWVzdCc7XG5pbXBvcnQge0NyZWF0ZVNhbGVzUXVvdGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2NyZWF0ZS1zYWxlcy1xdW90YXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1B1cmNoYXNlQWR2aWNlRmlsdGVyc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3B1cmNoYXNlLWFkdmljZS1maWx0ZXJzJztcbmltcG9ydCB7UHVyY2hhc2VBZHZpY2VMaW5lfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHVyY2hhc2UtYWR2aWNlLWxpbmUuYm8nO1xuaW1wb3J0IHtFbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xuaW1wb3J0IHtQZGZEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1ByaW50RGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb0hpc3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLWhpc3RvcnkuYm8nO1xuaW1wb3J0IHtFbWFpbEludm9pY2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UGRmSW52b2ljZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtaW52b2ljZS1yZXF1ZXN0JztcbmltcG9ydCB7UHJpbnRJbnZvaWNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWludm9pY2UtcmVxdWVzdCc7XG5pbXBvcnQge1JlZlRyYW5zYWN0aW9ufSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVmLXRyYW5zYWN0aW9uLmJvJztcbmltcG9ydCB7VGFnVHJlZUl0ZW19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3RhZy10cmVlLWl0ZW0uYm8nO1xuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ludGVybmFsLXBhcmFtLmVudW0nO1xuaW1wb3J0IHtHb29kc1JlY2VpcHRIaXN0b3J5fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtcmVjZWlwdC1oaXN0b3J5LmJvJztcbmltcG9ydCB7R29vZHNBbGxvY2F0aW9uSGlzdG9yeX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dvb2RzLWFsbG9jYXRpb24taGlzdG9yeS5ibyc7XG5pbXBvcnQge0xheW91dENvZGV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2xheW91dC1jb2RlLmVudW0nO1xuaW1wb3J0IHtIaXN0b3JpY1JlcG9ydH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2hpc3RvcmljLXJlcG9ydC5ibyc7XG5pbXBvcnQge1ByaW50ZXJ9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaW50ZXIuYm8nO1xuaW1wb3J0IHtDdXJyZW5jeX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY3VycmVuY3kuYm8nO1xuaW1wb3J0IHtQYXltZW50Q29uZGl0aW9ufSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LWNvbmRpdGlvbi5ibyc7XG5pbXBvcnQge1NlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL3NlcnZpY2Uvc2VsZWN0LXNpbmdsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgR29vZHNUb0JlUGlja2VkRm9yT3JkZXJSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtdG8tYmUtcGlja2VkLWZvci1vcmRlci1yZXF1ZXN0XCI7XG5pbXBvcnQge1dhcmVob3VzZVN0b2NrSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dhcmVob3VzZS1zdG9jay1pbmZvLmJvJztcbmltcG9ydCB7R29vZHNUb0JlUGlja2VkSGlzdG9yeX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9nb29kcy10by1iZS1waWNrZWQtaGlzdG9yeVwiO1xuaW1wb3J0IHtHb29kc1BpY2tlZEhpc3Rvcnl9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZ29vZHMtcGlja2VkLWhpc3RvcnlcIjtcbmltcG9ydCB7UGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1kZWxpdmVyeS1ub3RlLXJlcXVlc3RcIjtcbmltcG9ydCB7XG4gIEVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtZGVsaXZlcnktbm90ZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdFwiO1xuaW1wb3J0IHtcbiAgUHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdFxufSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLW9yZGVyLWNvbmZpcm1hdGlvbi1yZXF1ZXN0XCI7XG5pbXBvcnQge1xuICBFbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0XG59IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3RcIjtcbmltcG9ydCB7UGRmSGlzdG9yaWNJbnZvaWNlUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtaGlzdG9yaWMtaW52b2ljZS1yZXF1ZXN0XCI7XG5pbXBvcnQge1ByaW50SGlzdG9yaWNJbnZvaWNlUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1pbnZvaWNlLXJlcXVlc3RcIjtcbmltcG9ydCB7RW1haWxIaXN0b3JpY0ludm9pY2VSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLWludm9pY2UtcmVxdWVzdFwiO1xuaW1wb3J0IHtQcmludFB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXB1cmNoYXNlLW9yZGVyLXJlcXVlc3RcIjtcbmltcG9ydCB7UGRmUHVyY2hhc2VPcmRlclJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3RcIjtcbmltcG9ydCB7UHJpbnRPcmRlckNvbmZpcm1hdGlvblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtb3JkZXItY29uZmlybWF0aW9uLXJlcXVlc3RcIjtcbmltcG9ydCB7UGRmT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdFwiO1xuaW1wb3J0IHtFbWFpbE9yZGVyQ29uZmlybWF0aW9uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1vcmRlci1jb25maXJtYXRpb24tcmVxdWVzdFwiO1xuaW1wb3J0IHtFbWFpbFB1cmNoYXNlT3JkZXJSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLXB1cmNoYXNlLW9yZGVyLXJlcXVlc3RcIjtcbmltcG9ydCB7T2JqZWN0Q29uZmlndXJhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL29iamVjdC1jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudFwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfYWRhcHRlclNlcnZpY2U6IFRyYW5zYWN0aW9uQ29ubmVjdG9yQWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlOiBTZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2U6IFNlbGVjdE11bHRpcGxlQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZTogU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmxnZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2U6IFNlbGVjdFNpbmdsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9hZGFwdGVyU2VydmljZS5jb25uZWN0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPEFydGljbGVGdWxsT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8QXJ0aWNsZUZ1bGxPYmplY3Q+KEFydGljbGVGdWxsT2JqZWN0LCBnb29kSWQsKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFydGljbGVGdWxsT2JqZWN0KGdvb2RJZClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEdvb2RJZEZyb21BcnRpY2xlTnIoYXJ0aWNsZU5yOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKGFydGljbGVOcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2luZ2xlSW1hZ2Uobm9kZUlkOiBudW1iZXIgfCBzdHJpbmcsIHB1YmxpY2F0aW9uOiBudW1iZXIsIGluY2x1ZGVNaW1ldHlwZTogYm9vbGVhbiwgdGh1bWI6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTaW5nbGVJbWFnZShub2RlSWQsIHB1YmxpY2F0aW9uLCBpbmNsdWRlTWltZXR5cGUsIHRodW1iKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJpZXMoKTogUHJvbWlzZTxDb3VudHJ5W10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENvdW50cnk+KENvdW50cnksICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb3VudHJpZXMoKVxuICAgIH0pLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q3VzdG9tZXJHcm91cHMoKTogUHJvbWlzZTxDdXN0b21lckdyb3VwW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEN1c3RvbWVyR3JvdXA+KEN1c3RvbWVyR3JvdXAsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDdXN0b21lckdyb3VwcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDb3VudHJ5KGNvdW50cnlDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvdW50cnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q291bnRyeShjb3VudHJ5Q29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UHJpdmFjeVNldHRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpdmFjeVNldHRpbmc+KFByaXZhY3lTZXR0aW5nLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpdmFjeVNldHRpbmdzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk6IFByb21pc2U8UmVsYXRpb25Qcml2YWN5U2V0dGluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlbGF0aW9uUHJpdmFjeVNldHRpbmdzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWFya2V0aW5nQ29kZXMoKTogUHJvbWlzZTxNYXJrZXRpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8TWFya2V0aW5nPihNYXJrZXRpbmcsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRNYXJrZXRpbmdDb2RlcygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVUcmFuc2FjdGlvbihraW5kOiBUcmFuc2FjdGlvbktpbmQsIGJyYW5jaE5yOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNyZWF0ZVRyYW5zYWN0aW9uKGtpbmQsIGJyYW5jaE5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTYWxlc09yZGVyKHJlcXVlc3Q6IENyZWF0ZVNhbGVzT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVTYWxlc09yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyKHJlcXVlc3Q6IENyZWF0ZUNhc2hSZWdpc3Rlck9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlQ2FzaFJlZ2lzdGVyT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBDcmVhdGVQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlUHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVTZXJ2aWNlT3JkZXIocmVxdWVzdDogQ3JlYXRlU2VydmljZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2VydmljZU9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNhbGVzUXVvdGF0aW9uKHJlcXVlc3Q6IENyZWF0ZVNhbGVzUXVvdGF0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY3JlYXRlU2FsZXNRdW90YXRpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QXJ0aWNsZUJvdW5kVGV4dExpbmVzT2ZBcnRpY2xlTGluZShhcnRpY2xlTGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25MaW5lSW5mb1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEFydGljbGVCb3VuZFRleHRMaW5lc09mQXJ0aWNsZUxpbmUoYXJ0aWNsZUxpbmVVdWlkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkJ5TnJBbmRLaW5kKGtpbmQ6IFRyYW5zYWN0aW9uS2luZCwgdHJhbnNhY3Rpb25ObzogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkJ5TnJBbmRLaW5kKGtpbmQsIHRyYW5zYWN0aW9uTm8pO1xuICB9XG5cbiAgcHVibGljIGdldFRyYW5zYWN0aW9uQnlJZCh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uQnlJZCh0cmFuc2FjdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWZyZXNoZWRUcmFuc2FjdGlvbkZyb21EYXRhYmFzZSh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlZnJlc2hlZFRyYW5zYWN0aW9uRnJvbURhdGFiYXNlKHRyYW5zYWN0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVRyYW5zYWN0aW9uQnlVdUlkKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZGVsZXRlVHJhbnNhY3Rpb25CeVV1SWQodXVpZCk7XG4gIH1cblxuICBwdWJsaWMgbG9ja1RyYW5zYWN0aW9uQnlJZCh0cmFuc0lkOiBudW1iZXIsIHZlcnNpb246IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25Mb2NrUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tUcmFuc2FjdGlvbkJ5SWQodHJhbnNJZCwgdmVyc2lvbik7XG4gIH1cblxuICBwdWJsaWMgY29tbWl0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jb21taXQoKTtcbiAgfVxuXG4gIHB1YmxpYyByb2xsYmFjaygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uucm9sbGJhY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5zYXZlVHJhbnNhY3Rpb24odXVpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2FzaFJlZ2lzdGVycyhicmFuY2g/OiBzdHJpbmcsIGdyb3VwPzogbnVtYmVyKTogUHJvbWlzZTxDYXNoUmVnaXN0ZXJbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGJyYW5jaDogYnJhbmNoLFxuICAgICAgZ3JvdXA6IGdyb3VwXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPENhc2hSZWdpc3Rlcj4oQ2FzaFJlZ2lzdGVyLCAoYnJhbmNoLCBncm91cCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldENhc2hSZWdpc3RlcnMoYnJhbmNoLCBncm91cClcbiAgICB9KS5nZXRWYWx1ZShicmFuY2gsIGdyb3VwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcmljZUxpc3RzKGNvZGU/OiBzdHJpbmcpOiBQcm9taXNlPFByaWNlTGlzdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8UHJpY2VMaXN0PihQcmljZUxpc3QsIChjb2RlPzogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHJpY2VMaXN0cyhjb2RlKVxuICAgIH0pLmdldFZhbHVlKGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFZhdExpc3Qob25seVZhbGlkOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPFZhdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VmF0PihWYXQsIChvbmx5VmFsaWQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFZhdExpc3Qob25seVZhbGlkKVxuICAgIH0pLmdldFZhbHVlKG9ubHlWYWxpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNWYXRDb2Rlcyh0eXBlOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBQcm9taXNlPFZhdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8VmF0PihWYXQsICh0eXBlOiBzdHJpbmcsIGRhdGU6IERhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc1ZhdENvZGVzKHR5cGUsIGRhdGUpXG4gICAgfSkuZ2V0VmFsdWUodHlwZSwgZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoVHJhbnNhY3Rpb25zKHJlcXVlc3Q6IFRyYW5zYWN0aW9uU2VhcmNoVmlld1JlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uU2VhcmNoUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnNlYXJjaFRyYW5zYWN0aW9ucyhyZXF1ZXN0KVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlcXVlbmNlVmFsdWUoc2VxdWVuY2VOYW1lOiBTZXF1ZW5jZU5hbWUpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTZXF1ZW5jZVZhbHVlKHNlcXVlbmNlTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlNZXRob2RzKCk6IFByb21pc2U8RGVsaXZlcnlNZXRob2RbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8RGVsaXZlcnlNZXRob2Q+KERlbGl2ZXJ5TWV0aG9kLCAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlNZXRob2RzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlbGl2ZXJ5T3B0aW9ucygpOiBQcm9taXNlPERlbGl2ZXJ5T3B0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPERlbGl2ZXJ5T3B0aW9uPihEZWxpdmVyeU9wdGlvbiwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5T3B0aW9ucygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRSZWxhdGlvblRvVHJhbnNhY3Rpb24odXVpZDogc3RyaW5nLCByZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFkZFJlbGF0aW9uVG9UcmFuc2FjdGlvbih1dWlkLCByZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQb3N0YWxDb2RlUmV0cmlldmFsKHBvc3RjYWxDb2RlOiBzdHJpbmcsIGhvdXNlTm86IHN0cmluZyk6IFByb21pc2U8R2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtcz4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQb3N0YWxDb2RlUmV0cmlldmFsKHBvc3RjYWxDb2RlLCBob3VzZU5vKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRUcmFuc2FjdGlvbkxpbmUodXVpZDogc3RyaW5nLCBhcnRpY2xlTm86IHN0cmluZywgcXVhbnRpdHk6IG51bWJlciwgYWJvdmVMaW5lTnI6IG51bWJlciwgYmVsb3dMaW5lTnI6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkVHJhbnNhY3Rpb25MaW5lKHV1aWQsIGFydGljbGVObywgcXVhbnRpdHksIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVGV4dExpbmVUb1RyYW5zYWN0aW9uKHV1aWQ6IHN0cmluZywgc2hvd09uRG9jdW1lbnRzOiBudW1iZXIsIHRleHQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIGFydGljbGVCb3VuZDogYm9vbGVhbiwgcmVmQXJ0aWNsZUxpbmVOcjogbnVtYmVyLCBhYm92ZUxpbmVOcj86IG51bWJlciwgYmVsb3dMaW5lTnI/OiBudW1iZXIpOlxuICAgIFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuYWRkVGV4dExpbmVUb1RyYW5zYWN0aW9uKHV1aWQsIHNob3dPbkRvY3VtZW50cywgdGV4dCwgYW1vdW50LCBhcnRpY2xlQm91bmQsIHJlZkFydGljbGVMaW5lTnIsIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlVGV4dExpbmUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBzaG93T25Eb2N1bWVudHM6IG51bWJlciwgdGV4dDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVUZXh0TGluZSh1dWlkLCBsaW5lVXVpZCwgc2hvd09uRG9jdW1lbnRzLCB0ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VMaW5lU2VxdWVuY2UodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBhYm92ZUxpbmVOcj86IG51bWJlciwgYmVsb3dMaW5lTnI/OiBudW1iZXIpOlxuICAgIFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlTGluZVNlcXVlbmNlKHV1aWQsIGxpbmVVdWlkLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZShsaW5lVXVpZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUobGluZVV1aWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVRyYW5zYWN0aW9uTGluZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmRlbGV0ZVRyYW5zYWN0aW9uTGluZSh1dWlkLCBsaW5lVXVpZCk7XG4gIH1cblxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIG5ld1F1YW50aXR5OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVF1YW50aXR5KHV1aWQsIGxpbmVVdWlkLCBuZXdRdWFudGl0eSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHBlbmRpbmdMaW5lVmFsdWVzOiBSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24ocGVuZGluZ0xpbmVWYWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc29sdmVQZW5kaW5nSGVhZGVyUmVhc29uKHBlbmRpbmdIZWFkZXJWYWx1ZXM6IFJlc29sdmVIZWFkZXJQZW5kaW5nUmVhc29uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucmVzb2x2ZVBlbmRpbmdIZWFkZXJSZWFzb24ocGVuZGluZ0hlYWRlclZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q29tbWlzc2lvbkNvZGVzKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihDb0RvbWFpblZhbHVlLCAoZG9tYWluVmFsdWU6IHN0cmluZywgbGFuZ3VhZ2VDb2RlOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRDb21taXNzaW9uQ29kZXMobGFuZ3VhZ2VDb2RlKVxuICAgIH0pLmdldFZhbHVlKCdDb21taXNzaW9uQ29kZScsIGxhbmd1YWdlQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW5PdXRDb2xsZWN0aW9uKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDb0RvbWFpblZhbHVlPihDb0RvbWFpblZhbHVlLCAoZG9tYWluVmFsdWU6IHN0cmluZywgbGFuZ3VhZ2VDb2RlOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbk91dENvbGxlY3Rpb24obGFuZ3VhZ2VDb2RlKVxuICAgIH0pLmdldFZhbHVlKCdJbk91dENvbGxlY3Rpb24nLCBsYW5ndWFnZUNvZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRSZWxhdGlvbkJ5VXNlcih1dWlkOiBzdHJpbmcsIHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0UmVsYXRpb25CeVVzZXIodXVpZCwgdXNlcm5hbWUsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPENvRG9tYWluVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUZXh0VHlwZXMobGFuZ3VhZ2VDb2RlKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0YW5kYXJkVGV4dHMobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFN0YW5kYXJkVGV4dFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFN0YW5kYXJkVGV4dHMobGFuZ3VhZ2VDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTYWxlc1BlcnNvbnMoZGF0ZT86IERhdGUpOiBQcm9taXNlPFNhbGVzUGVyc29uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxTYWxlc1BlcnNvbj4oU2FsZXNQZXJzb24sIChkYXRlPzogRGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFNhbGVzUGVyc29ucyhkYXRlKVxuICAgIH0pLmdldFZhbHVlKGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRhZ3MoY2F0ZWdvcnk6IG51bWJlcik6IFByb21pc2U8VGFnW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxUYWc+KFRhZywgKGNhdGVnb3J5OiBudW1iZXIpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUYWdzKGNhdGVnb3J5KVxuICAgIH0pLmdldFZhbHVlKGNhdGVnb3J5KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPbkhvbGRDb2RlcygpOiBQcm9taXNlPE9uSG9sZENvZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8T25Ib2xkQ29kZT4oT25Ib2xkQ29kZSwgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9uSG9sZENvZGVzKClcbiAgICB9KS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFdhcmVob3VzZXMoYnJhbmNoTnI/OiBzdHJpbmcpOiBQcm9taXNlPFdhcmVob3VzZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8V2FyZWhvdXNlPihXYXJlaG91c2UsIChicmFuY2hOcj86IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFdhcmVob3VzZXMoYnJhbmNoTnIpXG4gICAgfSkuZ2V0VmFsdWUoYnJhbmNoTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFdhcmVob3VzZVN0b2NrSW5mb0J5R29vZEFuZEJyYW5jaChnb29kSWQ6IG51bWJlciwgYnJhbmNoTnI6IHN0cmluZyk6IFByb21pc2U8V2FyZWhvdXNlU3RvY2tJbmZvW10+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0V2FyZWhvdXNlU3RvY2tJbmZvQnlHb29kQW5kQnJhbmNoKGdvb2RJZCwgYnJhbmNoTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEhpc3RvcmljU3RhdGVWYWx1ZXMoKTogUHJvbWlzZTxDb2RlRGVzY3JpcHRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRIaXN0b3JpY1N0YXRlVmFsdWVzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lQ29tbWlzc2lvbkNvZGUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbW1pc3Npb25Db2RlKHV1aWQsIGxpbmVVdWlkLCBjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllcih1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIGlkOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyKHV1aWQsIGxpbmVVdWlkLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lV2FyZWhvdXNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgd2FyZWhvdXNlTnVtYmVyOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVdhcmVob3VzZSh1dWlkLCBsaW5lVXVpZCwgd2FyZWhvdXNlTnVtYmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVQcmljZSh1dWlkOiBzdHJpbmcsIGxpbmVVdWlkOiBzdHJpbmcsIHByaWNlOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlKHV1aWQsIGxpbmVVdWlkLCBwcmljZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUHJpY2VMaXN0KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcHJpY2VMaXN0OiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVByaWNlTGlzdCh1dWlkLCBsaW5lVXVpZCwgcHJpY2VMaXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBpZDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVWYXQodXVpZCwgbGluZVV1aWQsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVMaW5lRGlzY291bnQodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0eXBlOiBEaXNjb3VudFR5cGUsIGRpc2NvdW50OiBudW1iZXIsIHJlYXNvbjogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUxpbmVEaXNjb3VudCh1dWlkLCBsaW5lVXVpZCwgdHlwZSwgZGlzY291bnQsIHJlYXNvbiwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRHJvcFNoaXBtZW50KHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgbmV3RHJvcFNoaXBtZW50OiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVEcm9wU2hpcG1lbnQodXVpZCwgbGluZVV1aWQsIG5ld0Ryb3BTaGlwbWVudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlNZXRob2QodXVpZCwgbGluZVV1aWQsIG1ldGhvZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgZGF0ZTogRGF0ZSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lRGVsaXZlcnlEYXRlKHV1aWQsIGxpbmVVdWlkLCBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVBc3NlbWJseVRpbWUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0aW1lOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUFzc2VtYmx5VGltZSh1dWlkLCBsaW5lVXVpZCwgdGltZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lRWRpdFRpbWUodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCB0aW1lOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZUVkaXRUaW1lKHV1aWQsIGxpbmVVdWlkLCB0aW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVTdXBwbGllckFydGljbGVOdW1iZXIodXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBhcnRpY2xlTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVN1cHBsaWVyQXJ0aWNsZU51bWJlcih1dWlkLCBsaW5lVXVpZCwgYXJ0aWNsZU51bWJlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlVHJhbnNhY3Rpb25MaW5lUmVmZXJlbmNlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZVRyYW5zYWN0aW9uTGluZVJlZmVyZW5jZSh1dWlkLCBsaW5lVXVpZCwgcmVmZXJlbmNlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VUcmFuc2FjdGlvbkxpbmVHb29kRGVzY3JpcHRpb24odXVpZDogc3RyaW5nLCBsaW5lVXVpZDogc3RyaW5nLCBnb29kRGVzY3JpcHRpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lR29vZERlc2NyaXB0aW9uKHV1aWQsIGxpbmVVdWlkLCBnb29kRGVzY3JpcHRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZVRyYW5zYWN0aW9uTGluZUNvbGxlY3Rpb25Db2RlKHV1aWQ6IHN0cmluZywgbGluZVV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVDb2xsZWN0aW9uQ29kZSh1dWlkLCBsaW5lVXVpZCwgY29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQ6IHN0cmluZywgZGVmaW5pdGl2ZTogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWZpbml0aXZlKHV1aWQsIGRlZmluaXRpdmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckRlbGl2ZXJ5QWRkcmVzcyh1dWlkOiBzdHJpbmcsIG5ld05hd05yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlbGl2ZXJ5QWRkcmVzcyh1dWlkLCBuZXdOYXdOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVySW52b2ljZUFkZHJlc3ModXVpZDogc3RyaW5nLCBuZXdOYXdOcjogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJJbnZvaWNlQWRkcmVzcyh1dWlkLCBuZXdOYXdOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZSh1dWlkLCBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZURlZmluaXRpdmUodXVpZDogc3RyaW5nLCBkZWZpbml0aXZlOiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5RGF0ZURlZmluaXRpdmUodXVpZCwgZGVmaW5pdGl2ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZW1hcmsodXVpZDogc3RyaW5nLCByZW1hcms6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZW1hcmsodXVpZCwgcmVtYXJrKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlZmVyZW5jZSh1dWlkOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblJlZmVyZW5jZSh1dWlkLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUmVsYXRpb25SZWZlcmVuY2UodXVpZDogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25SZWxhdGlvblJlZmVyZW5jZSh1dWlkLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlckRlcG9zaXRQZXJjZW50YWdlKHV1aWQ6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlckRlcG9zaXRQZXJjZW50YWdlKHV1aWQsIGFtb3VudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyRGVwb3NpdEFtb3VudCh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJEZXBvc2l0QW1vdW50KHV1aWQsIGFtb3VudCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QcmVmZXJyZWREZWxpdmVyeURhdGUodXVpZDogc3RyaW5nLCBkYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblByZWZlcnJlZERlbGl2ZXJ5RGF0ZSh1dWlkLCBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5TWV0aG9kKHV1aWQ6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uRGVsaXZlcnlNZXRob2QodXVpZCwgbWV0aG9kKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucyh1dWlkOiBzdHJpbmcsIG9wdGlvbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRlbGl2ZXJ5T3B0aW9ucyh1dWlkLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvblBhcnRpYWxEZWxpdmVyeSh1dWlkOiBzdHJpbmcsIGFsbG93UGFydGlhbDogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25QYXJ0aWFsRGVsaXZlcnkodXVpZCwgYWxsb3dQYXJ0aWFsKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkJyYW5jaCh1dWlkOiBzdHJpbmcsIGJyYW5jaDogbnVtYmVyKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkJyYW5jaCh1dWlkLCBicmFuY2gpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uT25Ib2xkQ29kZXModXVpZDogc3RyaW5nLCBjb2Rlczogc3RyaW5nW10pOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uT25Ib2xkQ29kZXModXVpZCwgY29kZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJpY2VLaW5kKHV1aWQ6IHN0cmluZywgcHJpY2VLaW5kOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uUHJpY2VLaW5kKHV1aWQsIHByaWNlS2luZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25BZG1Db29yZGluYXRvcih1dWlkOiBzdHJpbmcsIHJlbGF0aW9uOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmNoYW5nZUhlYWRlclRyYW5zYWN0aW9uQWRtQ29vcmRpbmF0b3IodXVpZCwgcmVsYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUhlYWRlclRyYW5zYWN0aW9uTWFya2V0aW5nKHV1aWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbk1hcmtldGluZyh1dWlkLCBjb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VIZWFkZXJUcmFuc2FjdGlvbkRpc2NvdW50KHV1aWQ6IHN0cmluZywgdHlwZTogRGlzY291bnRUeXBlLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY2hhbmdlSGVhZGVyVHJhbnNhY3Rpb25EaXNjb3VudCh1dWlkLCB0eXBlLCBhbW91bnQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUlvbmVQYXltZW50TGlua0FuZFFSQ29kZSh1dWlkOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBwYXltZW50TWV0aG9kQ29kZTogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVQYXltZW50TGlua1Jlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5jcmVhdGVJb25lUGF5bWVudExpbmtBbmRRUkNvZGUodXVpZCwgYW1vdW50LCBwYXltZW50TWV0aG9kQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGF5bWVudExpbmtTdGF0dXMocGF5bWVudExpbmtVVUlEOiBzdHJpbmcpOiBQcm9taXNlPFBheW1lbnRMaW5rU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBheW1lbnRMaW5rU3RhdHVzKHBheW1lbnRMaW5rVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNSZWNlaXB0SGlzdG9yeSh0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxHb29kc1JlY2VpcHRIaXN0b3J5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEdvb2RzUmVjZWlwdEhpc3RvcnkodHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyKHJlcXVlc3Q6IFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5yZWNlaXZlR29vZHNGb3JQdXJjaGFzZU9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3Q6IFJlY2VpdmVHb29kc0ZvclB1cmNoYXNlT3JkZXJDb3JyZWN0aW9uUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UucmVjZWl2ZUdvb2RzRm9yUHVyY2hhc2VPcmRlckNvcnJlY3Rpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VQb3J0YWxMaW5lcyhyZXF1ZXN0OiBHZXRQdXJjaGFzZVBvcnRhbExpbmUpOiBQcm9taXNlPFB1cmNoYXNlUG9ydGFsTGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFB1cmNoYXNlUG9ydGFsTGluZXMocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlUHVyY2hhc2VQb3J0YWxMaW5lcyhwdXJjaGFzZVBvcnRhbExpbmU6IFB1cmNoYXNlUG9ydGFsTGluZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVQdXJjaGFzZVBvcnRhbExpbmVzKHB1cmNoYXNlUG9ydGFsTGluZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbihwdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uOiBHZXRQdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnB1cmNoYXNlT3JkZXJDb25maXJtYXRpb24ocHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9ja1B1cmNoYXNlUG9ydGFsTGluZXModHJhbnNJZFB1cmNoYXNlOiBudW1iZXIsIGxpbmVJZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tQdXJjaGFzZVBvcnRhbExpbmVzKHRyYW5zSWRQdXJjaGFzZSwgbGluZUlkKVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlQ29tbWlzc2lvbk9yZGVycyh0cmFuc0lkOiBudW1iZXIsIG9ubHlHZW5lcmF0ZUZvckRpcmVjdFNlbGxTdXBwbGllcnM6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2VuZXJhdGVDb21taXNzaW9uT3JkZXJzKHRyYW5zSWQsIG9ubHlHZW5lcmF0ZUZvckRpcmVjdFNlbGxTdXBwbGllcnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0b2NrU3RpY2tlclRlbXBsYXRlcyhkYXRhOiBTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzKTogUHJvbWlzZTxTdG9ja1N0aWNrZXJzUHJpbnRMYXlvdXRzW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0U3RvY2tTdGlja2VyVGVtcGxhdGVzKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEF2YWlsYWJsZVN0b2NrR3JvdXBlZEJ5V0xCU0J5VHJhbnNJZExpbmVOcih0cmFuc0lkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyKTogUHJvbWlzZTxBdmFpbGFibGVTdG9ja1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEF2YWlsYWJsZVN0b2NrR3JvdXBlZEJ5V0xCU0J5VHJhbnNJZExpbmVOcih0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyKHJlcXVlc3Q6IEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWxsb2NhdGVHb29kc0ZvclNhbGVzT3JkZXJDb3JyZWN0aW9uKHJlcXVlc3Q6IEFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvblJlcXVlc3QpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmFsbG9jYXRlR29vZHNGb3JTYWxlc09yZGVyQ29ycmVjdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kc0FsbG9jYXRpb25IaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzQWxsb2NhdGlvbkhpc3Rvcnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0R29vZHNBbGxvY2F0aW9uSGlzdG9yeSh0cmFuc0lkLCBsaW5lTnIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdvb2RzVG9CZVBpY2tlZEhpc3RvcnkodHJhbnNJZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlcik6IFByb21pc2U8R29vZHNUb0JlUGlja2VkSGlzdG9yeT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc1RvQmVQaWNrZWRIaXN0b3J5KHRyYW5zSWQsIGxpbmVOcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZHNQaWNrZWRIaXN0b3J5KHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPEdvb2RzUGlja2VkSGlzdG9yeT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRHb29kc1BpY2tlZEhpc3RvcnkodHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRHb29kc1RvQmVQaWNrZWRGb3JTYWxlc09yZGVyKHJlcXVlc3Q6IEdvb2RzVG9CZVBpY2tlZEZvck9yZGVyUmVxdWVzdCk6IFByb21pc2U8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2Uuc2V0R29vZHNUb0JlUGlja2VkRm9yU2FsZXNPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPcmRlckNvbmZpcm1hdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldE9yZGVyQ29uZmlybWF0aW9uUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJDb25maXJtYXRpb25EZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRPcmRlckNvbmZpcm1hdGlvbkRlZmF1bHRTZW5kTWV0aG9kKHJlbGF0aW9uSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24odHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9yT3JkZXJDb25maXJtYXRpb24odHJhbnNhY3Rpb25VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludE9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFByaW50T3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50T3JkZXJDb25maXJtYXRpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3Q6IFByaW50SGlzdG9yaWNPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnRIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogRW1haWxPcmRlckNvbmZpcm1hdGlvblJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxPcmRlckNvbmZpcm1hdGlvbihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogRW1haWxIaXN0b3JpY09yZGVyQ29uZmlybWF0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbEhpc3RvcmljT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmT3JkZXJDb25maXJtYXRpb24ocmVxdWVzdDogUGRmT3JkZXJDb25maXJtYXRpb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZk9yZGVyQ29uZmlybWF0aW9uKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50UHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBQcmludFB1cmNoYXNlT3JkZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50UHVyY2hhc2VPcmRlcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlbWFpbFB1cmNoYXNlT3JkZXIocmVxdWVzdDogRW1haWxQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5lbWFpbFB1cmNoYXNlT3JkZXIocmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmUHVyY2hhc2VPcmRlcihyZXF1ZXN0OiBQZGZQdXJjaGFzZU9yZGVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wZGZQdXJjaGFzZU9yZGVyKHJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlT3JkZXJFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlckVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlT3JkZXJQcmludExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlclByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFB1cmNoYXNlT3JkZXJEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQdXJjaGFzZU9yZGVyRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVBbmRTZW5kUHVyY2hhc2VPcmRlcnNGb3JTYWxlc09yZGVyKHRyYW5zYWN0aW9uSWQ6IG51bWJlciwgbGluZU51bWJlcnM6IG51bWJlcltdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzRm9yU2FsZXNPcmRlcih0cmFuc2FjdGlvbklkLCBsaW5lTnVtYmVycyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHVyY2hhc2VBZHZpY2VMaW5lcyhmaWx0ZXJzOiBQdXJjaGFzZUFkdmljZUZpbHRlcnMsIGdvb2RJZD86IG51bWJlcik6IFByb21pc2U8UHVyY2hhc2VBZHZpY2VMaW5lW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UHVyY2hhc2VBZHZpY2VMaW5lcyhmaWx0ZXJzLCBnb29kSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzKHB1cmNoYXNlQWR2aWNlTGluZXM6IFB1cmNoYXNlQWR2aWNlTGluZVtdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzKHB1cmNoYXNlQWR2aWNlTGluZXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsRGVsaXZlcnlOb3RlKGVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdDogRW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsRGVsaXZlcnlOb3RlKGVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdDogRW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmRGVsaXZlcnlOb3RlKHBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmRGVsaXZlcnlOb3RlKHBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlKHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdDogUGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnBkZkhpc3RvcmljRGVsaXZlcnlOb3RlKHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJpbnREZWxpdmVyeU5vdGUocHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0OiBQcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucHJpbnREZWxpdmVyeU5vdGUocHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljRGVsaXZlcnlOb3RlKHByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljRGVsaXZlcnlOb3RlKHByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREZWxpdmVyeU5vdGVEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWxpdmVyeU5vdGVFbWFpbExheW91dHModHJhbnNhY3Rpb25VVUlEOiBzdHJpbmcpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRDogc3RyaW5nKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZVByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0Rm9ySW52b2ljZSh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3RGb3JJbnZvaWNlKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1haWxJbnZvaWNlKGVtYWlsSW52b2ljZVJlcXVlc3Q6IEVtYWlsSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPENvRG9jdW1lbnQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZW1haWxJbnZvaWNlKGVtYWlsSW52b2ljZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtYWlsSGlzdG9yaWNJbnZvaWNlKGVtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdDogRW1haWxIaXN0b3JpY0ludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmVtYWlsSGlzdG9yaWNJbnZvaWNlKGVtYWlsSGlzdG9yaWNJbnZvaWNlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSW52b2ljZShwZGZJbnZvaWNlUmVxdWVzdDogUGRmSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSW52b2ljZShwZGZJbnZvaWNlUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGRmSGlzdG9yaWNJbnZvaWNlKHBkZkhpc3RvcmljSW52b2ljZVJlcXVlc3Q6IFBkZkhpc3RvcmljSW52b2ljZVJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UucGRmSGlzdG9yaWNJbnZvaWNlKHBkZkhpc3RvcmljSW52b2ljZVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByaW50SW52b2ljZShwcmludEludm9pY2VSZXF1ZXN0OiBQcmludEludm9pY2VSZXF1ZXN0KTogUHJvbWlzZTxDb0RvY3VtZW50PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLnByaW50SW52b2ljZShwcmludEludm9pY2VSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmludEhpc3RvcmljSW52b2ljZShwcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3Q6IFByaW50SGlzdG9yaWNJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5wcmludEhpc3RvcmljSW52b2ljZShwcmludEhpc3RvcmljSW52b2ljZVJlcXVlc3QpO1xuICB9XG5cbiAgLy8gcHVibGljIGFzeW5jIGdldEludm9pY2VEZWZhdWx0U2VuZE1ldGhvZChyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAvLyAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlRGVmYXVsdFNlbmRNZXRob2QocmVsYXRpb25JZCk7XG4gIC8vIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZUVtYWlsTGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlRW1haWxMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZVByaW50TGF5b3V0cyh0cmFuc2FjdGlvblVVSUQ6IHN0cmluZyk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnRbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRJbnZvaWNlUHJpbnRMYXlvdXRzKHRyYW5zYWN0aW9uVVVJRCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJpbnRlcnMoKTogUHJvbWlzZTxQcmludGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFByaW50ZXI+KFByaW50ZXIsICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQcmludGVycygpXG4gICAgfSkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDdXJyZW5jaWVzKGFjdGl2ZTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPEN1cnJlbmN5W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VycmVuY2llcyhhY3RpdmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBheW1lbnRDb25kaXRpb25zKG5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPFBheW1lbnRDb25kaXRpb25bXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRQYXltZW50Q29uZGl0aW9ucyhuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRKb2luZWRUYWdzKHRhYmxlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogUHJvbWlzZTxUYWdUcmVlSXRlbVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEpvaW5lZFRhZ3ModGFibGUsIGtleSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0VHJhbnNhY3Rpb25JbmZvKHRyYW5zSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5mb0hpc3RvcnlbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRUcmFuc2FjdGlvbkluZm8odHJhbnNJZCwgbGluZU5yKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWZUcmFuc2FjdGlvbnModHJhbnNJZDogbnVtYmVyKTogUHJvbWlzZTxSZWZUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlZlRyYW5zYWN0aW9ucyh0cmFuc0lkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbnRlcm5hbFBhcmFtZXRlclZhbHVlKHBhcmFtOiBJbnRlcm5hbFBhcmFtKTogUHJvbWlzZTxJbnRlcm5hbFBhcmFtPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmxnZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEludGVybmFsUGFyYW0+KEludGVybmFsUGFyYW0sIChwYXJhbTogSW50ZXJuYWxQYXJhbSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEludGVybmFsUGFyYW1ldGVyVmFsdWUocGFyYW0pO1xuICAgIH0pLmdldFZhbHVlKHBhcmFtKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPYmplY3RDb25maWd1cmF0aW9uKHNjcmVlbkNmZ01vZHVsZTogc3RyaW5nLCBwYXJhbXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgaW5zZXJ0TW9kZT86IGJvb2xlYW4pOiBQcm9taXNlPE9iamVjdENvbmZpZ3VyYXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPE9iamVjdENvbmZpZ3VyYXRpb24+KE9iamVjdENvbmZpZ3VyYXRpb24sIChzY3JlZW5DZmdNb2R1bGU6IHN0cmluZywgcGFyYW1zPzogc3RyaW5nIHwgc3RyaW5nW10sIGluc2VydE1vZGU/OiBib29sZWFuKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbihzY3JlZW5DZmdNb2R1bGUsIHBhcmFtcywgaW5zZXJ0TW9kZSk7XG4gICAgfSkuZ2V0VmFsdWUoc2NyZWVuQ2ZnTW9kdWxlLCBwYXJhbXMsIGluc2VydE1vZGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEhpc3RvcmljRG9jdW1lbnRzKHRyYW5zSWQ6IG51bWJlciwgZG9jdW1lbnRDb2RlOiBMYXlvdXRDb2RlKTogUHJvbWlzZTxIaXN0b3JpY1JlcG9ydFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEhpc3RvcmljRG9jdW1lbnRzKHRyYW5zSWQsIGRvY3VtZW50Q29kZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGFja2FnZVN0aWNrZXJQcmludExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFBhY2thZ2VTdGlja2VyUHJpbnRMYXlvdXRzKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -21,6 +21,7 @@ export class TransactionEventService {
|
|
|
21
21
|
this.selectAllLines = new Subject();
|
|
22
22
|
this.transactionHeaderDirty = new Subject();
|
|
23
23
|
this.transactionLineChanged = new Subject();
|
|
24
|
+
this.transactionLineAdded = new BehaviorSubject(undefined);
|
|
24
25
|
this.openArticleTextOverview = new Subject();
|
|
25
26
|
this.addArticleText = new Subject();
|
|
26
27
|
this.editArticleText = new Subject();
|
|
@@ -31,8 +32,12 @@ export class TransactionEventService {
|
|
|
31
32
|
this.selectAllSalesOrderLinesForDelivery = new Subject();
|
|
32
33
|
this.selectAllSalesOrderLinesForInvoice = new Subject();
|
|
33
34
|
this.selectAllSalesOrderLinesForAllocation = new Subject();
|
|
35
|
+
this.selectAllSalesOrderLinesToPick = new Subject();
|
|
36
|
+
this.selectAllSalesOrderLinesToBePicked = new Subject();
|
|
34
37
|
this.selectAllPurchaseOrderLinesForReceiveGoods = new Subject();
|
|
35
38
|
this.updatingSalesOrderGeneratePurchaseOrders = new Subject();
|
|
39
|
+
this.updatingSalesOrderGoodsToBePicked = new Subject();
|
|
40
|
+
this.updatingSalesOrderGoodsTPick = new Subject();
|
|
36
41
|
this.updatingSalesOrderDelivery = new Subject();
|
|
37
42
|
this.updatingInvoice = new Subject();
|
|
38
43
|
this.updatingPurchaseOrderReceiveGoods = new Subject();
|
|
@@ -66,4 +71,4 @@ TransactionEventService.decorators = [
|
|
|
66
71
|
{ type: Injectable, args: [{ providedIn: "root" },] }
|
|
67
72
|
];
|
|
68
73
|
TransactionEventService.ctorParameters = () => [];
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBUTlDLE1BQU0sT0FBTyx1QkFBdUI7SUE0RGxDO1FBM0RnQixtQkFBYyxHQUE2RCxJQUFJLE9BQU8sRUFBbUQsQ0FBQztRQUMxSSw4QkFBeUIsR0FDdkMsSUFBSSxPQUFPLEVBQWlILENBQUM7UUFDL0csMkJBQXNCLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDNUQsYUFBUSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzlDLG1DQUE4QixHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3hFLHNDQUFpQyxHQUF3QyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztRQUNuSCxtQkFBYyxHQUE4RCxJQUFJLE9BQU8sRUFBb0QsQ0FBQztRQUM1SSxnQkFBVyxHQUE4RCxJQUFJLE9BQU8sRUFBb0QsQ0FBQztRQUN6SSxxQkFBZ0IsR0FBMkYsSUFBSSxPQUFPLEVBQWlGLENBQUM7UUFDeE0sa0JBQWEsR0FBNEUsSUFBSSxPQUFPLEVBQWtFLENBQUM7UUFDdkssdUJBQWtCLEdBQW9ELElBQUksT0FBTyxFQUF3QyxDQUFDO1FBQzFILDJCQUFzQixHQUE0QixJQUFJLE9BQU8sRUFBa0IsQ0FBQztRQUNoRixzQkFBaUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN2RCxrQkFBYSxHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3ZFLDRIQUE0SDtRQUM1RyxtQkFBYyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzFELDJCQUFzQixHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ2xFLDJCQUFzQixHQUFpQyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUMxRiw0QkFBdUIsR0FBaUMsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFDM0YsbUJBQWMsR0FBaUMsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFDbEYsb0JBQWUsR0FBaUMsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFDbkYsdUJBQWtCLEdBQWlDLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3RGLHdCQUFtQixHQUFpQyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUN2RixrQkFBYSxHQUFpQyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUNqRix3Q0FBbUMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUMvRSx3Q0FBbUMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUMvRSx1Q0FBa0MsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUM5RSwwQ0FBcUMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNqRiwrQ0FBMEMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUN0Riw2Q0FBd0MsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNwRiwrQkFBMEIsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUN0RSxvQkFBZSxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzNELHNDQUFpQyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzdFLHVDQUFrQyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzlFLHNDQUFpQyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzdFLGdDQUEyQixHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3ZFLDBCQUFxQixHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN0RixxREFBZ0QsR0FBNkIsSUFBSSxlQUFlLENBQVUsU0FBUyxDQUFDLENBQUM7UUFDckgsdUNBQWtDLEdBQTZCLElBQUksZUFBZSxDQUFVLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZHLDRCQUF1QixHQUE2QixJQUFJLGVBQWUsQ0FBVSxTQUFTLENBQUMsQ0FBQztRQUM1RiwrQ0FBMEMsR0FBNkIsSUFBSSxlQUFlLENBQVUsU0FBUyxDQUFDLENBQUM7UUFDL0csOENBQXlDLEdBQTZCLElBQUksZUFBZSxDQUFVLFNBQVMsQ0FBQyxDQUFDO1FBQzlHLDhDQUF5QyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxTQUFTLENBQUMsQ0FBQztRQUM5RyxzQkFBaUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN2RCxtQkFBYyxHQUE2QyxJQUFJLGVBQWUsQ0FBMEIsU0FBUyxDQUFDLENBQUM7UUFDbkgsNEJBQXVCLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDakUsdUJBQWtCLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDNUQsc0JBQWlCLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDM0QsMEJBQXFCLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDL0QsdUJBQWtCLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDeEQsOEJBQXlCLEdBQWtELElBQUksZUFBZSxDQUErQixJQUFJLENBQUMsQ0FBQztRQUNuSSxvQ0FBK0IsR0FBbUUsSUFBSSxlQUFlLENBQWdELFNBQVMsQ0FBQyxDQUFDO1FBRWhMLHNDQUFpQyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzdFLCtCQUEwQixHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2hFLDRCQUF1QixHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzdELHFCQUFnQixHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRzVFLENBQUM7Ozs7WUE5REYsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Bvc2l0aW9uR3JpZFJvd30gZnJvbSAnLi4vZW51bS9wb3NpdGlvbi1ncmlkLXJvdy5lbnVtJztcbmltcG9ydCB7U2Nyb2xsfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvJztcbmltcG9ydCB7QnVzaW5lc3NPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL2J1c2luZXNzLW9iamVjdCc7XG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiBcInJvb3RcIn0pXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkVG9DYXJ0QnlTa3U6IFN1YmplY3Q8e3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgcG9wQ2FydDogYm9vbGVhbn0+ID0gbmV3IFN1YmplY3Q8e3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgcG9wQ2FydDogYm9vbGVhbn0+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRUb0NhcnRCeVNlbGVjdG9yUmVzdWx0OiBTdWJqZWN0PHtzZWxlY3RvclJlc3VsdDoge2dvb2RJZDogbnVtYmVyLCBiYXNlR29vZElkOiBudW1iZXIsIHNlbGVjdG9yRGF0YTogYW55LCBxdWFudGl0eTogbnVtYmVyfSwgcG9wQ2FydDogYm9vbGVhbn0+ID1cbiAgICBuZXcgU3ViamVjdDx7c2VsZWN0b3JSZXN1bHQ6IHtnb29kSWQ6IG51bWJlciwgYmFzZUdvb2RJZDogbnVtYmVyLCBzZWxlY3RvckRhdGE6IGFueSwgcXVhbnRpdHk6IG51bWJlcn0sIHBvcENhcnQ6IGJvb2xlYW59PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3BlblNob3BwaW5nQ2FydE1vZHVsZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBsb2dnZWRJbjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGROZXdVc2VyVG9TaG9wcGluZ0NhcnRNb2R1bGU6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZFVzZXJSZWxhdGlvblNob3BwaW5nQ2FydE1vZHVsZTogU3ViamVjdDx7dXNlcjogc3RyaW5nLCBwdzogc3RyaW5nfT4gPSBuZXcgU3ViamVjdDx7dXNlcjogc3RyaW5nLCBwdzogc3RyaW5nfT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZEFydGljbGVMaW5lOiBTdWJqZWN0PHtsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fT4gPSBuZXcgU3ViamVjdDx7bGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRUZXh0TGluZTogU3ViamVjdDx7bGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+ID0gbmV3IFN1YmplY3Q8e2xpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkQXJ0aWNsZUxpbmVBdDogU3ViamVjdDx7c2t1OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fT4gPSBuZXcgU3ViamVjdDx7c2t1OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZFRleHRMaW5lQXQ6IFN1YmplY3Q8e3RleHQ6IHN0cmluZywgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+ID0gbmV3IFN1YmplY3Q8e3RleHQ6IHN0cmluZywgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+KCk7XG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VMaW5lU2VxdWVuY2U6IFN1YmplY3Q8KHtmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyfSk+ID0gbmV3IFN1YmplY3Q8e2Zyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXJ9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNhY3Rpb25MaW5lQ2xpY2tlZDogU3ViamVjdDxCdXNpbmVzc09iamVjdD4gPSBuZXcgU3ViamVjdDxCdXNpbmVzc09iamVjdD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJpZ2h0U2lkZWJhckNsb3NlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNjcm9sbENvbnRlbnQ6IFN1YmplY3Q8U2Nyb2xsPiA9IG5ldyBTdWJqZWN0PFNjcm9sbD4oKTtcbiAgLy8gcHVibGljIHJlYWRvbmx5IGNvbW1pdFJlY2VpdmVQdXJjaGFzZU9yZGVyczogU3ViamVjdDx7ZGF0ZTogRGF0ZSwgaWQ6IHN0cmluZ30+ID0gbmV3IFN1YmplY3Q8e2RhdGU6IERhdGUsIGlkOiBzdHJpbmd9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QWxsTGluZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNhY3Rpb25IZWFkZXJEaXJ0eTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2FjdGlvbkxpbmVDaGFuZ2VkOiBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+ID0gbmV3IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG9wZW5BcnRpY2xlVGV4dE92ZXJ2aWV3OiBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+ID0gbmV3IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZEFydGljbGVUZXh0OiBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+ID0gbmV3IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGVkaXRBcnRpY2xlVGV4dDogU3ViamVjdDxUcmFuc2FjdGlvbkxpbmVJbmZvPiA9IG5ldyBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRUcmFuc2FjdGlvblRleHQ6IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4gPSBuZXcgU3ViamVjdDxUcmFuc2FjdGlvbkxpbmVJbmZvPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWRpdFRyYW5zYWN0aW9uVGV4dDogU3ViamVjdDxUcmFuc2FjdGlvbkxpbmVJbmZvPiA9IG5ldyBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvcGVuU2lkZVBhbmVsOiBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+ID0gbmV3IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdEFsbFNhbGVzT3JkZXJMaW5lc0ZvclB1cmNoYXNlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdEFsbFNhbGVzT3JkZXJMaW5lc0ZvckRlbGl2ZXJ5OiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdEFsbFNhbGVzT3JkZXJMaW5lc0Zvckludm9pY2U6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QWxsU2FsZXNPcmRlckxpbmVzRm9yQWxsb2NhdGlvbjogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RBbGxQdXJjaGFzZU9yZGVyTGluZXNGb3JSZWNlaXZlR29vZHM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRpbmdTYWxlc09yZGVyR2VuZXJhdGVQdXJjaGFzZU9yZGVyczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSB1cGRhdGluZ1NhbGVzT3JkZXJEZWxpdmVyeTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSB1cGRhdGluZ0ludm9pY2U6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRpbmdQdXJjaGFzZU9yZGVyUmVjZWl2ZUdvb2RzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHVwZGF0aW5nUHVyY2hhc2VPcmRlckFsbG9jYXRlR29vZHM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRpbmdQdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFsbG93UGFydGlhbERlbGl2ZXJ5Q2hhbmdlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uSW5pdGlhbGl6ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2FsZXNPcmRlckdlbmVyYXRlUHVyY2hhc2VPcmRlcnNDb21wbGV0ZWRDaGFuZ2VkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBzYWxlc09yZGVyRGVsaXZlcnlDb21wbGV0ZWRDaGFuZ2VkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBpbnZvaWNlQ29tcGxldGVkQ2hhbmdlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVyY2hhc2VPcmRlckFsbG9jYXRlR29vZHNDb21wbGV0ZWRDaGFuZ2VkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBwdXJjaGFzZU9yZGVyUmVjZWl2ZUdvb2RzQ29tcGxldGVkQ2hhbmdlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbkNvbXBsZXRlZENoYW5nZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZVRyYW5zYWN0aW9uOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uU2V0OiBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IHB1cmNoYXNlT3JkZXJOYXZpZ2F0aW9uOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZWxhdGlvbk5hdmlnYXRpb246IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFydGljbGVOYXZpZ2F0aW9uOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2FjdGlvbk5hdmlnYXRpb246IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uRGVsZXRlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBoaXN0b3JpY1JlcG9ydExpbmVzVG9TaG93OiBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mb1tdIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm9bXSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNhY3Rpb25MaW5lVmlzaWJpbGl0eUNoYW5nZTogQmVoYXZpb3JTdWJqZWN0PHtsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvLCB2aXNpYmxlOiBib29sZWFufT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvOyB2aXNpYmxlOiBib29sZWFufT4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyUG9wdXBTYXZlQnV0dG9uRW5hYmxlQ2hhbmdlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGhlYWRlclBvcHVwU2F2ZUJ1dHRvbkNsaWNrOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGhlYWRlclBvcHVwV2FudHNUb0Nsb3NlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGhlYWRlclBvcHVwQ2xvc2U6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG59XG4iXX0=
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBUTlDLE1BQU0sT0FBTyx1QkFBdUI7SUFpRWxDO1FBaEVnQixtQkFBYyxHQUE2RCxJQUFJLE9BQU8sRUFBbUQsQ0FBQztRQUMxSSw4QkFBeUIsR0FDdkMsSUFBSSxPQUFPLEVBQWlILENBQUM7UUFDL0csMkJBQXNCLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDNUQsYUFBUSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzlDLG1DQUE4QixHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3hFLHNDQUFpQyxHQUF3QyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztRQUNuSCxtQkFBYyxHQUE4RCxJQUFJLE9BQU8sRUFBb0QsQ0FBQztRQUM1SSxnQkFBVyxHQUE4RCxJQUFJLE9BQU8sRUFBb0QsQ0FBQztRQUN6SSxxQkFBZ0IsR0FBMkYsSUFBSSxPQUFPLEVBQWlGLENBQUM7UUFDeE0sa0JBQWEsR0FBNEUsSUFBSSxPQUFPLEVBQWtFLENBQUM7UUFDdkssdUJBQWtCLEdBQW9ELElBQUksT0FBTyxFQUF3QyxDQUFDO1FBQzFILDJCQUFzQixHQUE0QixJQUFJLE9BQU8sRUFBa0IsQ0FBQztRQUNoRixzQkFBaUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN2RCxrQkFBYSxHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3ZFLDRIQUE0SDtRQUM1RyxtQkFBYyxHQUFxQixJQUFJLE9BQU8sRUFB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QUNoRSw0QkFBdUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM3RCxxQkFBZ0IsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUc1RSxDQUFDOzs7O1lBbkVGLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQb3NpdGlvbkdyaWRSb3d9IGZyb20gJy4uL2VudW0vcG9zaXRpb24tZ3JpZC1yb3cuZW51bSc7XG5pbXBvcnQge1Njcm9sbH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XG5pbXBvcnQge0J1c2luZXNzT2JqZWN0fSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9idXNpbmVzcy1vYmplY3QnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWluZm8tcmVzcG9uc2UuYm8nO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogXCJyb290XCJ9KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGFkZFRvQ2FydEJ5U2t1OiBTdWJqZWN0PHtza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIHBvcENhcnQ6IGJvb2xlYW59PiA9IG5ldyBTdWJqZWN0PHtza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIHBvcENhcnQ6IGJvb2xlYW59PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkVG9DYXJ0QnlTZWxlY3RvclJlc3VsdDogU3ViamVjdDx7c2VsZWN0b3JSZXN1bHQ6IHtnb29kSWQ6IG51bWJlciwgYmFzZUdvb2RJZDogbnVtYmVyLCBzZWxlY3RvckRhdGE6IGFueSwgcXVhbnRpdHk6IG51bWJlcn0sIHBvcENhcnQ6IGJvb2xlYW59PiA9XG4gICAgbmV3IFN1YmplY3Q8e3NlbGVjdG9yUmVzdWx0OiB7Z29vZElkOiBudW1iZXIsIGJhc2VHb29kSWQ6IG51bWJlciwgc2VsZWN0b3JEYXRhOiBhbnksIHF1YW50aXR5OiBudW1iZXJ9LCBwb3BDYXJ0OiBib29sZWFufT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG9wZW5TaG9wcGluZ0NhcnRNb2R1bGU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VkSW46IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkTmV3VXNlclRvU2hvcHBpbmdDYXJ0TW9kdWxlOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRVc2VyUmVsYXRpb25TaG9wcGluZ0NhcnRNb2R1bGU6IFN1YmplY3Q8e3VzZXI6IHN0cmluZywgcHc6IHN0cmluZ30+ID0gbmV3IFN1YmplY3Q8e3VzZXI6IHN0cmluZywgcHc6IHN0cmluZ30+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRBcnRpY2xlTGluZTogU3ViamVjdDx7bGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+ID0gbmV3IFN1YmplY3Q8e2xpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkVGV4dExpbmU6IFN1YmplY3Q8e2xpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PiA9IG5ldyBTdWJqZWN0PHtsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZEFydGljbGVMaW5lQXQ6IFN1YmplY3Q8e3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+ID0gbmV3IFN1YmplY3Q8e3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRUZXh0TGluZUF0OiBTdWJqZWN0PHt0ZXh0OiBzdHJpbmcsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PiA9IG5ldyBTdWJqZWN0PHt0ZXh0OiBzdHJpbmcsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlTGluZVNlcXVlbmNlOiBTdWJqZWN0PCh7ZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcn0pPiA9IG5ldyBTdWJqZWN0PHtmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyfT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uTGluZUNsaWNrZWQ6IFN1YmplY3Q8QnVzaW5lc3NPYmplY3Q+ID0gbmV3IFN1YmplY3Q8QnVzaW5lc3NPYmplY3Q+KCk7XG4gIHB1YmxpYyByZWFkb25seSByaWdodFNpZGViYXJDbG9zZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzY3JvbGxDb250ZW50OiBTdWJqZWN0PFNjcm9sbD4gPSBuZXcgU3ViamVjdDxTY3JvbGw+KCk7XG4gIC8vIHB1YmxpYyByZWFkb25seSBjb21taXRSZWNlaXZlUHVyY2hhc2VPcmRlcnM6IFN1YmplY3Q8e2RhdGU6IERhdGUsIGlkOiBzdHJpbmd9PiA9IG5ldyBTdWJqZWN0PHtkYXRlOiBEYXRlLCBpZDogc3RyaW5nfT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdEFsbExpbmVzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uSGVhZGVyRGlydHk6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNhY3Rpb25MaW5lQ2hhbmdlZDogU3ViamVjdDxUcmFuc2FjdGlvbkxpbmVJbmZvPiA9IG5ldyBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+KCk7XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2FjdGlvbkxpbmVBZGRlZDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IG9wZW5BcnRpY2xlVGV4dE92ZXJ2aWV3OiBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+ID0gbmV3IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZEFydGljbGVUZXh0OiBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+ID0gbmV3IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGVkaXRBcnRpY2xlVGV4dDogU3ViamVjdDxUcmFuc2FjdGlvbkxpbmVJbmZvPiA9IG5ldyBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRUcmFuc2FjdGlvblRleHQ6IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4gPSBuZXcgU3ViamVjdDxUcmFuc2FjdGlvbkxpbmVJbmZvPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWRpdFRyYW5zYWN0aW9uVGV4dDogU3ViamVjdDxUcmFuc2FjdGlvbkxpbmVJbmZvPiA9IG5ldyBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvcGVuU2lkZVBhbmVsOiBTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm8+ID0gbmV3IFN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdEFsbFNhbGVzT3JkZXJMaW5lc0ZvclB1cmNoYXNlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdEFsbFNhbGVzT3JkZXJMaW5lc0ZvckRlbGl2ZXJ5OiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdEFsbFNhbGVzT3JkZXJMaW5lc0Zvckludm9pY2U6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QWxsU2FsZXNPcmRlckxpbmVzRm9yQWxsb2NhdGlvbjogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RBbGxTYWxlc09yZGVyTGluZXNUb1BpY2s6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0QWxsU2FsZXNPcmRlckxpbmVzVG9CZVBpY2tlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RBbGxQdXJjaGFzZU9yZGVyTGluZXNGb3JSZWNlaXZlR29vZHM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRpbmdTYWxlc09yZGVyR2VuZXJhdGVQdXJjaGFzZU9yZGVyczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSB1cGRhdGluZ1NhbGVzT3JkZXJHb29kc1RvQmVQaWNrZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRpbmdTYWxlc09yZGVyR29vZHNUUGljazogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSB1cGRhdGluZ1NhbGVzT3JkZXJEZWxpdmVyeTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSB1cGRhdGluZ0ludm9pY2U6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRpbmdQdXJjaGFzZU9yZGVyUmVjZWl2ZUdvb2RzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHVwZGF0aW5nUHVyY2hhc2VPcmRlckFsbG9jYXRlR29vZHM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRpbmdQdXJjaGFzZU9yZGVyQ29uZmlybWF0aW9uOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFsbG93UGFydGlhbERlbGl2ZXJ5Q2hhbmdlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uSW5pdGlhbGl6ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2FsZXNPcmRlckdlbmVyYXRlUHVyY2hhc2VPcmRlcnNDb21wbGV0ZWRDaGFuZ2VkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBzYWxlc09yZGVyRGVsaXZlcnlDb21wbGV0ZWRDaGFuZ2VkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBpbnZvaWNlQ29tcGxldGVkQ2hhbmdlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVyY2hhc2VPcmRlckFsbG9jYXRlR29vZHNDb21wbGV0ZWRDaGFuZ2VkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBwdXJjaGFzZU9yZGVyUmVjZWl2ZUdvb2RzQ29tcGxldGVkQ2hhbmdlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVyY2hhc2VPcmRlckNvbmZpcm1hdGlvbkNvbXBsZXRlZENoYW5nZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZVRyYW5zYWN0aW9uOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uU2V0OiBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4odW5kZWZpbmVkKTtcbiAgcHVibGljIHJlYWRvbmx5IHB1cmNoYXNlT3JkZXJOYXZpZ2F0aW9uOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZWxhdGlvbk5hdmlnYXRpb246IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFydGljbGVOYXZpZ2F0aW9uOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2FjdGlvbk5hdmlnYXRpb246IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uRGVsZXRlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBoaXN0b3JpY1JlcG9ydExpbmVzVG9TaG93OiBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25MaW5lSW5mb1tdIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYW5zYWN0aW9uTGluZUluZm9bXSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNhY3Rpb25MaW5lVmlzaWJpbGl0eUNoYW5nZTogQmVoYXZpb3JTdWJqZWN0PHtsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvLCB2aXNpYmxlOiBib29sZWFufT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvOyB2aXNpYmxlOiBib29sZWFufT4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyUG9wdXBTYXZlQnV0dG9uRW5hYmxlQ2hhbmdlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGhlYWRlclBvcHVwU2F2ZUJ1dHRvbkNsaWNrOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGhlYWRlclBvcHVwV2FudHNUb0Nsb3NlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGhlYWRlclBvcHVwQ2xvc2U6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG59XG4iXX0=
|