@vendasta/billing 8.0.0 → 9.0.0
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/esm2020/lib/_generated/host.service.mjs +25 -0
- package/esm2020/lib/_generated/index.mjs +2 -0
- package/esm2020/lib/_internal/bank-reconciliation.api.service.mjs +46 -0
- package/esm2020/lib/_internal/billing.api.service.mjs +216 -0
- package/esm2020/lib/_internal/bundle.api.service.mjs +50 -0
- package/esm2020/lib/_internal/contract-document.api.service.mjs +45 -0
- package/esm2020/lib/_internal/contract.api.service.mjs +55 -0
- package/esm2020/lib/_internal/credit.api.service.mjs +45 -0
- package/esm2020/lib/_internal/discount.api.service.mjs +53 -0
- package/esm2020/lib/_internal/enums/applied-discount.enum.mjs +14 -0
- package/esm2020/lib/_internal/enums/card.enum.mjs +17 -0
- package/esm2020/lib/_internal/enums/contract.enum.mjs +14 -0
- package/esm2020/lib/_internal/enums/currency.enum.mjs +35 -0
- package/esm2020/lib/_internal/enums/frequency.enum.mjs +14 -0
- package/esm2020/lib/_internal/enums/index.mjs +31 -0
- package/esm2020/lib/_internal/enums/invoice.enum.mjs +18 -0
- package/esm2020/lib/_internal/enums/merchant-report.enum.mjs +13 -0
- package/{esm2015/lib/_internal/enums/merchant.enum.js → esm2020/lib/_internal/enums/merchant.enum.mjs} +1 -1
- package/esm2020/lib/_internal/enums/month.enum.mjs +23 -0
- package/esm2020/lib/_internal/enums/payment-card.enum.mjs +24 -0
- package/esm2020/lib/_internal/enums/payment-processor.enum.mjs +13 -0
- package/{esm2015/lib/_internal/enums/payment.enum.js → esm2020/lib/_internal/enums/payment.enum.mjs} +1 -1
- package/esm2020/lib/_internal/enums/payout.enum.mjs +22 -0
- package/esm2020/lib/_internal/enums/pricing-plan.enum.mjs +22 -0
- package/{esm2015/lib/_internal/enums/product-summary.enum.js → esm2020/lib/_internal/enums/product-summary.enum.mjs} +1 -1
- package/esm2020/lib/_internal/enums/product.enum.mjs +17 -0
- package/esm2020/lib/_internal/enums/purchase.enum.mjs +27 -0
- package/esm2020/lib/_internal/enums/recurring-invoice.enum.mjs +29 -0
- package/esm2020/lib/_internal/enums/refund.enum.mjs +25 -0
- package/esm2020/lib/_internal/enums/sales-credit-note.enum.mjs +14 -0
- package/{esm2015/lib/_internal/enums/sales-invoice.enum.js → esm2020/lib/_internal/enums/sales-invoice.enum.mjs} +1 -1
- package/esm2020/lib/_internal/enums/sort-direction.enum.mjs +12 -0
- package/{esm2015/lib/_internal/enums/subscribe-validation.enum.js → esm2020/lib/_internal/enums/subscribe-validation.enum.mjs} +1 -1
- package/esm2020/lib/_internal/enums/subscription.enum.mjs +12 -0
- package/esm2020/lib/_internal/index.mjs +33 -0
- package/esm2020/lib/_internal/interfaces/api.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/applied-bundle.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/applied-discount.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/applied-tax-rate.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/balance.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/billable-item.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/bundle.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/card.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/commitment.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/common.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/contract-document.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/contract.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/credit.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/currency.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/customer-summary.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/date-range.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/discount.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/external-account.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/field-mask.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/frequency.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/invoice-template.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/invoice.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/merchant-report.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/merchant.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/metered-component.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/month.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/payment-card.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/payment-processor.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/payment.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/payout.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/pricing-plan-product.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/pricing-plan.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/product-pricing.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/product-summary.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/product.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/purchase.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/recurring-invoice.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/refund.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/retail-customer-configuration.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/sales-credit-note.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/sales-invoice.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/sort-direction.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/subscribe-validation.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/subscription.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/tax-rate.interface.mjs +2 -0
- package/esm2020/lib/_internal/invoice-template.api.service.mjs +85 -0
- package/esm2020/lib/_internal/invoice.api.service.mjs +116 -0
- package/esm2020/lib/_internal/merchant.api.service.mjs +159 -0
- package/esm2020/lib/_internal/objects/api.mjs +841 -0
- package/esm2020/lib/_internal/objects/applied-bundle.mjs +77 -0
- package/esm2020/lib/_internal/objects/applied-discount.mjs +46 -0
- package/esm2020/lib/_internal/objects/applied-tax-rate.mjs +39 -0
- package/esm2020/lib/_internal/objects/balance.mjs +45 -0
- package/esm2020/lib/_internal/objects/billable-item.mjs +562 -0
- package/esm2020/lib/_internal/objects/bundle.mjs +390 -0
- package/esm2020/lib/_internal/objects/card.mjs +7 -0
- package/esm2020/lib/_internal/objects/commitment.mjs +36 -0
- package/esm2020/lib/_internal/objects/common.mjs +56 -0
- package/esm2020/lib/_internal/objects/contract-document.mjs +141 -0
- package/esm2020/lib/_internal/objects/contract.mjs +474 -0
- package/esm2020/lib/_internal/objects/credit.mjs +114 -0
- package/esm2020/lib/_internal/objects/currency.mjs +7 -0
- package/esm2020/lib/_internal/objects/customer-summary.mjs +104 -0
- package/esm2020/lib/_internal/objects/date-range.mjs +36 -0
- package/esm2020/lib/_internal/objects/discount.mjs +299 -0
- package/esm2020/lib/_internal/objects/external-account.mjs +160 -0
- package/esm2020/lib/_internal/objects/field-mask.mjs +27 -0
- package/esm2020/lib/_internal/objects/frequency.mjs +7 -0
- package/esm2020/lib/_internal/objects/index.mjs +46 -0
- package/esm2020/lib/_internal/objects/invoice-template.mjs +707 -0
- package/esm2020/lib/_internal/objects/invoice.mjs +1117 -0
- package/esm2020/lib/_internal/objects/merchant-report.mjs +108 -0
- package/esm2020/lib/_internal/objects/merchant.mjs +991 -0
- package/esm2020/lib/_internal/objects/metered-component.mjs +97 -0
- package/esm2020/lib/_internal/objects/month.mjs +7 -0
- package/esm2020/lib/_internal/objects/payment-card.mjs +211 -0
- package/esm2020/lib/_internal/objects/payment-processor.mjs +7 -0
- package/esm2020/lib/_internal/objects/payment.mjs +1219 -0
- package/esm2020/lib/_internal/objects/payout.mjs +258 -0
- package/esm2020/lib/_internal/objects/pricing-plan-product.mjs +565 -0
- package/esm2020/lib/_internal/objects/pricing-plan.mjs +290 -0
- package/esm2020/lib/_internal/objects/product-pricing.mjs +107 -0
- package/esm2020/lib/_internal/objects/product-summary.mjs +538 -0
- package/esm2020/lib/_internal/objects/product.mjs +302 -0
- package/esm2020/lib/_internal/objects/purchase.mjs +524 -0
- package/esm2020/lib/_internal/objects/recurring-invoice.mjs +324 -0
- package/esm2020/lib/_internal/objects/refund.mjs +181 -0
- package/esm2020/lib/_internal/objects/retail-customer-configuration.mjs +159 -0
- package/esm2020/lib/_internal/objects/sales-credit-note.mjs +211 -0
- package/esm2020/lib/_internal/objects/sales-invoice.mjs +300 -0
- package/esm2020/lib/_internal/objects/sort-direction.mjs +7 -0
- package/esm2020/lib/_internal/objects/subscribe-validation.mjs +31 -0
- package/esm2020/lib/_internal/objects/subscription.mjs +555 -0
- package/esm2020/lib/_internal/objects/tax-rate.mjs +342 -0
- package/esm2020/lib/_internal/payment-method.api.service.mjs +49 -0
- package/esm2020/lib/_internal/payment.api.service.mjs +102 -0
- package/esm2020/lib/_internal/pricing.api.service.mjs +76 -0
- package/esm2020/lib/_internal/product-summary.api.service.mjs +46 -0
- package/esm2020/lib/_internal/product.api.service.mjs +47 -0
- package/esm2020/lib/_internal/purchase.api.service.mjs +59 -0
- package/esm2020/lib/_internal/recurring-invoice.api.service.mjs +60 -0
- package/esm2020/lib/_internal/refund.api.service.mjs +45 -0
- package/esm2020/lib/_internal/retail-customer-configuration.api.service.mjs +45 -0
- package/esm2020/lib/_internal/sales-credit-note.api.service.mjs +45 -0
- package/esm2020/lib/_internal/sales-invoice.api.service.mjs +50 -0
- package/esm2020/lib/_internal/tax.api.service.mjs +63 -0
- package/esm2020/lib/_internal/vendor.api.service.mjs +46 -0
- package/esm2020/lib/index.mjs +3 -0
- package/esm2020/public_api.mjs +2 -0
- package/esm2020/vendasta-billing.mjs +5 -0
- package/fesm2015/{vendasta-billing.js → vendasta-billing.mjs} +1094 -4972
- package/fesm2015/vendasta-billing.mjs.map +1 -0
- package/fesm2020/vendasta-billing.mjs +14368 -0
- package/fesm2020/vendasta-billing.mjs.map +1 -0
- package/lib/_generated/host.service.d.ts +5 -9
- package/lib/_internal/bank-reconciliation.api.service.d.ts +4 -0
- package/lib/_internal/billing.api.service.d.ts +4 -0
- package/lib/_internal/bundle.api.service.d.ts +4 -0
- package/lib/_internal/contract-document.api.service.d.ts +4 -0
- package/lib/_internal/contract.api.service.d.ts +4 -0
- package/lib/_internal/credit.api.service.d.ts +4 -0
- package/lib/_internal/discount.api.service.d.ts +4 -0
- package/lib/_internal/enums/index.d.ts +2 -0
- package/lib/_internal/enums/payment-processor.enum.d.ts +5 -0
- package/lib/_internal/enums/recurring-invoice.enum.d.ts +19 -0
- package/lib/_internal/index.d.ts +1 -0
- package/lib/_internal/interfaces/billable-item.interface.d.ts +1 -0
- package/lib/_internal/interfaces/index.d.ts +2 -0
- package/lib/_internal/interfaces/payment-processor.interface.d.ts +1 -0
- package/lib/_internal/interfaces/recurring-invoice.interface.d.ts +54 -0
- package/lib/_internal/invoice-template.api.service.d.ts +4 -0
- package/lib/_internal/invoice.api.service.d.ts +4 -0
- package/lib/_internal/merchant.api.service.d.ts +4 -0
- package/lib/_internal/objects/billable-item.d.ts +1 -0
- package/lib/_internal/objects/index.d.ts +2 -0
- package/lib/_internal/objects/payment-processor.d.ts +1 -0
- package/lib/_internal/objects/recurring-invoice.d.ts +83 -0
- package/lib/_internal/payment-method.api.service.d.ts +4 -0
- package/lib/_internal/payment.api.service.d.ts +4 -0
- package/lib/_internal/pricing.api.service.d.ts +4 -0
- package/lib/_internal/product-summary.api.service.d.ts +4 -0
- package/lib/_internal/product.api.service.d.ts +4 -0
- package/lib/_internal/purchase.api.service.d.ts +4 -0
- package/lib/_internal/recurring-invoice.api.service.d.ts +20 -0
- package/lib/_internal/refund.api.service.d.ts +4 -0
- package/lib/_internal/retail-customer-configuration.api.service.d.ts +4 -0
- package/lib/_internal/sales-credit-note.api.service.d.ts +4 -0
- package/lib/_internal/sales-invoice.api.service.d.ts +4 -0
- package/lib/_internal/tax.api.service.d.ts +4 -0
- package/lib/_internal/vendor.api.service.d.ts +4 -0
- package/lib/index.d.ts +2 -36
- package/package.json +26 -15
- package/src/README.md +1 -0
- package/vendasta-billing.d.ts +1 -0
- package/bundles/vendasta-billing.umd.js +0 -19163
- package/bundles/vendasta-billing.umd.js.map +0 -1
- package/bundles/vendasta-billing.umd.min.js +0 -16
- package/bundles/vendasta-billing.umd.min.js.map +0 -1
- package/esm2015/lib/_generated/host.service.js +0 -65
- package/esm2015/lib/_generated/index.js +0 -2
- package/esm2015/lib/_internal/bank-reconciliation.api.service.js +0 -47
- package/esm2015/lib/_internal/billing.api.service.js +0 -217
- package/esm2015/lib/_internal/bundle.api.service.js +0 -51
- package/esm2015/lib/_internal/contract-document.api.service.js +0 -46
- package/esm2015/lib/_internal/contract.api.service.js +0 -56
- package/esm2015/lib/_internal/credit.api.service.js +0 -46
- package/esm2015/lib/_internal/discount.api.service.js +0 -54
- package/esm2015/lib/_internal/enums/applied-discount.enum.js +0 -14
- package/esm2015/lib/_internal/enums/card.enum.js +0 -17
- package/esm2015/lib/_internal/enums/contract.enum.js +0 -14
- package/esm2015/lib/_internal/enums/currency.enum.js +0 -35
- package/esm2015/lib/_internal/enums/frequency.enum.js +0 -14
- package/esm2015/lib/_internal/enums/index.js +0 -29
- package/esm2015/lib/_internal/enums/invoice.enum.js +0 -18
- package/esm2015/lib/_internal/enums/merchant-report.enum.js +0 -13
- package/esm2015/lib/_internal/enums/month.enum.js +0 -23
- package/esm2015/lib/_internal/enums/payment-card.enum.js +0 -24
- package/esm2015/lib/_internal/enums/payout.enum.js +0 -22
- package/esm2015/lib/_internal/enums/pricing-plan.enum.js +0 -22
- package/esm2015/lib/_internal/enums/product.enum.js +0 -17
- package/esm2015/lib/_internal/enums/purchase.enum.js +0 -27
- package/esm2015/lib/_internal/enums/refund.enum.js +0 -25
- package/esm2015/lib/_internal/enums/sales-credit-note.enum.js +0 -14
- package/esm2015/lib/_internal/enums/sort-direction.enum.js +0 -12
- package/esm2015/lib/_internal/enums/subscription.enum.js +0 -12
- package/esm2015/lib/_internal/index.js +0 -32
- package/esm2015/lib/_internal/interfaces/api.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/applied-bundle.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/applied-discount.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/applied-tax-rate.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/balance.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/billable-item.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/bundle.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/card.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/commitment.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/common.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/contract-document.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/contract.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/credit.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/currency.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/customer-summary.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/date-range.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/discount.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/external-account.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/field-mask.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/frequency.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/index.js +0 -2
- package/esm2015/lib/_internal/interfaces/invoice-template.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/invoice.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/merchant-report.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/merchant.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/metered-component.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/month.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/payment-card.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/payment.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/payout.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/pricing-plan-product.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/pricing-plan.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/product-pricing.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/product-summary.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/product.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/purchase.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/refund.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/retail-customer-configuration.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/sales-credit-note.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/sales-invoice.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/sort-direction.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/subscribe-validation.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/subscription.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/tax-rate.interface.js +0 -2
- package/esm2015/lib/_internal/invoice-template.api.service.js +0 -86
- package/esm2015/lib/_internal/invoice.api.service.js +0 -117
- package/esm2015/lib/_internal/merchant.api.service.js +0 -160
- package/esm2015/lib/_internal/objects/api.js +0 -841
- package/esm2015/lib/_internal/objects/applied-bundle.js +0 -77
- package/esm2015/lib/_internal/objects/applied-discount.js +0 -46
- package/esm2015/lib/_internal/objects/applied-tax-rate.js +0 -39
- package/esm2015/lib/_internal/objects/balance.js +0 -45
- package/esm2015/lib/_internal/objects/billable-item.js +0 -556
- package/esm2015/lib/_internal/objects/bundle.js +0 -390
- package/esm2015/lib/_internal/objects/card.js +0 -7
- package/esm2015/lib/_internal/objects/commitment.js +0 -36
- package/esm2015/lib/_internal/objects/common.js +0 -56
- package/esm2015/lib/_internal/objects/contract-document.js +0 -141
- package/esm2015/lib/_internal/objects/contract.js +0 -474
- package/esm2015/lib/_internal/objects/credit.js +0 -114
- package/esm2015/lib/_internal/objects/currency.js +0 -7
- package/esm2015/lib/_internal/objects/customer-summary.js +0 -104
- package/esm2015/lib/_internal/objects/date-range.js +0 -36
- package/esm2015/lib/_internal/objects/discount.js +0 -299
- package/esm2015/lib/_internal/objects/external-account.js +0 -160
- package/esm2015/lib/_internal/objects/field-mask.js +0 -27
- package/esm2015/lib/_internal/objects/frequency.js +0 -7
- package/esm2015/lib/_internal/objects/index.js +0 -45
- package/esm2015/lib/_internal/objects/invoice-template.js +0 -707
- package/esm2015/lib/_internal/objects/invoice.js +0 -1117
- package/esm2015/lib/_internal/objects/merchant-report.js +0 -108
- package/esm2015/lib/_internal/objects/merchant.js +0 -991
- package/esm2015/lib/_internal/objects/metered-component.js +0 -97
- package/esm2015/lib/_internal/objects/month.js +0 -7
- package/esm2015/lib/_internal/objects/payment-card.js +0 -211
- package/esm2015/lib/_internal/objects/payment.js +0 -1219
- package/esm2015/lib/_internal/objects/payout.js +0 -258
- package/esm2015/lib/_internal/objects/pricing-plan-product.js +0 -565
- package/esm2015/lib/_internal/objects/pricing-plan.js +0 -290
- package/esm2015/lib/_internal/objects/product-pricing.js +0 -107
- package/esm2015/lib/_internal/objects/product-summary.js +0 -538
- package/esm2015/lib/_internal/objects/product.js +0 -302
- package/esm2015/lib/_internal/objects/purchase.js +0 -524
- package/esm2015/lib/_internal/objects/refund.js +0 -181
- package/esm2015/lib/_internal/objects/retail-customer-configuration.js +0 -159
- package/esm2015/lib/_internal/objects/sales-credit-note.js +0 -211
- package/esm2015/lib/_internal/objects/sales-invoice.js +0 -300
- package/esm2015/lib/_internal/objects/sort-direction.js +0 -7
- package/esm2015/lib/_internal/objects/subscribe-validation.js +0 -31
- package/esm2015/lib/_internal/objects/subscription.js +0 -555
- package/esm2015/lib/_internal/objects/tax-rate.js +0 -342
- package/esm2015/lib/_internal/payment-method.api.service.js +0 -50
- package/esm2015/lib/_internal/payment.api.service.js +0 -103
- package/esm2015/lib/_internal/pricing.api.service.js +0 -77
- package/esm2015/lib/_internal/product-summary.api.service.js +0 -47
- package/esm2015/lib/_internal/product.api.service.js +0 -48
- package/esm2015/lib/_internal/purchase.api.service.js +0 -60
- package/esm2015/lib/_internal/refund.api.service.js +0 -46
- package/esm2015/lib/_internal/retail-customer-configuration.api.service.js +0 -46
- package/esm2015/lib/_internal/sales-credit-note.api.service.js +0 -46
- package/esm2015/lib/_internal/sales-invoice.api.service.js +0 -51
- package/esm2015/lib/_internal/tax.api.service.js +0 -64
- package/esm2015/lib/_internal/vendor.api.service.js +0 -47
- package/esm2015/lib/applied_bundle/applied_bundle.js +0 -12
- package/esm2015/lib/applied_bundle/index.js +0 -2
- package/esm2015/lib/applied_discount/applied_discount.js +0 -48
- package/esm2015/lib/applied_discount/index.js +0 -2
- package/esm2015/lib/bank_account/bank-account.service.js +0 -38
- package/esm2015/lib/bank_account/bank_account.js +0 -13
- package/esm2015/lib/bank_account/index.js +0 -3
- package/esm2015/lib/bank_reconciliation/bank-reconciliation.service.js +0 -54
- package/esm2015/lib/bank_reconciliation/index.js +0 -3
- package/esm2015/lib/bank_reconciliation/payout.js +0 -53
- package/esm2015/lib/billable-item/billable-item.js +0 -39
- package/esm2015/lib/billable-item/billable-item.service.js +0 -31
- package/esm2015/lib/billable-item/index.js +0 -2
- package/esm2015/lib/billing-host.service.js +0 -41
- package/esm2015/lib/billing.service.js +0 -376
- package/esm2015/lib/bundle/bundle.js +0 -37
- package/esm2015/lib/bundle/bundle.service.js +0 -56
- package/esm2015/lib/bundle/index.js +0 -2
- package/esm2015/lib/contract/contract.js +0 -21
- package/esm2015/lib/contract/contract.service.js +0 -39
- package/esm2015/lib/contract/dimension.js +0 -21
- package/esm2015/lib/contract/index.js +0 -5
- package/esm2015/lib/contract/mutations.js +0 -11
- package/esm2015/lib/contract-document/contract-document.js +0 -9
- package/esm2015/lib/contract-document/contract-document.service.js +0 -68
- package/esm2015/lib/contract-document/index.js +0 -2
- package/esm2015/lib/contract-document/list-contract-document.js +0 -2
- package/esm2015/lib/core/index.js +0 -3
- package/esm2015/lib/core/paged-response.js +0 -8
- package/esm2015/lib/core/sort-direction.js +0 -6
- package/esm2015/lib/credit/credit.js +0 -8
- package/esm2015/lib/credit/credit.service.js +0 -33
- package/esm2015/lib/credit/index.js +0 -2
- package/esm2015/lib/customer_summary/customer-summary.js +0 -15
- package/esm2015/lib/discount/discount.js +0 -18
- package/esm2015/lib/discount/discount.service.js +0 -73
- package/esm2015/lib/discount/discount_type.js +0 -32
- package/esm2015/lib/discount/index.js +0 -3
- package/esm2015/lib/discount/list-discount.js +0 -2
- package/esm2015/lib/http-shared/error-handlers.js +0 -20
- package/esm2015/lib/index.js +0 -37
- package/esm2015/lib/invoice/index.js +0 -3
- package/esm2015/lib/invoice/invoice.js +0 -198
- package/esm2015/lib/invoice/invoice.service.js +0 -254
- package/esm2015/lib/invoice/list-invoice.js +0 -2
- package/esm2015/lib/invoice-template/index.js +0 -2
- package/esm2015/lib/invoice-template/invoice-template.js +0 -38
- package/esm2015/lib/invoice-template/invoice-template.service.js +0 -78
- package/esm2015/lib/merchant/balance.js +0 -2
- package/esm2015/lib/merchant/index.js +0 -5
- package/esm2015/lib/merchant/merchant.interface.js +0 -2
- package/esm2015/lib/merchant/merchant.js +0 -20
- package/esm2015/lib/merchant/merchant.service.js +0 -212
- package/esm2015/lib/merchant/payout-summary.js +0 -32
- package/esm2015/lib/merchant/retail-configuration.js +0 -57
- package/esm2015/lib/merchant-report/index.js +0 -2
- package/esm2015/lib/merchant-report/merchant-report-status.js +0 -2
- package/esm2015/lib/merchant-report/merchant-report.interfaces.js +0 -2
- package/esm2015/lib/merchant-report/merchant-report.js +0 -2
- package/esm2015/lib/merchant-report/merchant-report.service.js +0 -38
- package/esm2015/lib/payment/dispute.js +0 -92
- package/esm2015/lib/payment/index.js +0 -10
- package/esm2015/lib/payment/payment-allocation-type.js +0 -18
- package/esm2015/lib/payment/payment-source.js +0 -18
- package/esm2015/lib/payment/payment-status.js +0 -17
- package/esm2015/lib/payment/payment.js +0 -292
- package/esm2015/lib/payment/payment.service.js +0 -138
- package/esm2015/lib/payment/retail-payment.js +0 -70
- package/esm2015/lib/payment/retail-status.js +0 -50
- package/esm2015/lib/payment-card/index.js +0 -3
- package/esm2015/lib/payment-card/payment-card.js +0 -60
- package/esm2015/lib/payment-card/payment-card.service.js +0 -45
- package/esm2015/lib/payment-method/index.js +0 -2
- package/esm2015/lib/payment-method/payment-method.service.js +0 -43
- package/esm2015/lib/pricing/billing-strategy.js +0 -39
- package/esm2015/lib/pricing/commitment.js +0 -7
- package/esm2015/lib/pricing/currency.js +0 -86
- package/esm2015/lib/pricing/frequency.js +0 -42
- package/esm2015/lib/pricing/index.js +0 -12
- package/esm2015/lib/pricing/list-pricing-plan-product-filter.js +0 -2
- package/esm2015/lib/pricing/pricing-plan-product.js +0 -53
- package/esm2015/lib/pricing/pricing-plan.js +0 -14
- package/esm2015/lib/pricing/pricing-plan.service.js +0 -287
- package/esm2015/lib/pricing/product-pricing-rules.js +0 -10
- package/esm2015/lib/pricing/product-pricing-type.js +0 -31
- package/esm2015/lib/pricing/product-pricing.js +0 -44
- package/esm2015/lib/pricing/wholesale-pricing.service.js +0 -61
- package/esm2015/lib/product/index.js +0 -3
- package/esm2015/lib/product/list-products.js +0 -30
- package/esm2015/lib/product/product.js +0 -10
- package/esm2015/lib/product-summary/index.js +0 -3
- package/esm2015/lib/product-summary/product-summary.service.js +0 -42
- package/esm2015/lib/product-summary/subscription-retention.js +0 -19
- package/esm2015/lib/purchase/index.js +0 -4
- package/esm2015/lib/purchase/list-purchases.js +0 -17
- package/esm2015/lib/purchase/purchase.js +0 -79
- package/esm2015/lib/purchase/purchase.service.js +0 -31
- package/esm2015/lib/purchase/purchase_status.js +0 -26
- package/esm2015/lib/refund/index.js +0 -3
- package/esm2015/lib/refund/refund.js +0 -81
- package/esm2015/lib/refund/refund.service.js +0 -53
- package/esm2015/lib/retail-customer-configuration/index.js +0 -3
- package/esm2015/lib/retail-customer-configuration/retail-customer-configuration.js +0 -44
- package/esm2015/lib/retail-customer-configuration/retail-customer-configuration.service.js +0 -39
- package/esm2015/lib/revenue/index.js +0 -2
- package/esm2015/lib/revenue/revenue.interfaces.js +0 -2
- package/esm2015/lib/revenue/revenue.service.js +0 -34
- package/esm2015/lib/sales-credit-note/index.js +0 -3
- package/esm2015/lib/sales-credit-note/sales-credit-note.js +0 -53
- package/esm2015/lib/sales-credit-note/sales-credit-note.service.js +0 -72
- package/esm2015/lib/sales-invoice/index.js +0 -3
- package/esm2015/lib/sales-invoice/sales-invoice.js +0 -87
- package/esm2015/lib/sales-invoice/sales-invoice.service.js +0 -77
- package/esm2015/lib/sku.js +0 -4
- package/esm2015/lib/stripe-file/file.js +0 -2
- package/esm2015/lib/stripe-file/index.js +0 -3
- package/esm2015/lib/stripe-file/purpose.js +0 -13
- package/esm2015/lib/stripe-file/stripe-file.service.js +0 -35
- package/esm2015/lib/subscription/can-create-subscriptions-item.js +0 -2
- package/esm2015/lib/subscription/index.js +0 -2
- package/esm2015/lib/tax-rate/index.js +0 -2
- package/esm2015/lib/tax-rate/tax-rate.js +0 -13
- package/esm2015/lib/tax-rate/tax-rate.service.js +0 -86
- package/esm2015/public_api.js +0 -2
- package/esm2015/vendasta-billing.js +0 -5
- package/fesm2015/vendasta-billing.js.map +0 -1
- package/lib/applied_bundle/applied_bundle.d.ts +0 -15
- package/lib/applied_bundle/index.d.ts +0 -1
- package/lib/applied_discount/applied_discount.d.ts +0 -26
- package/lib/applied_discount/index.d.ts +0 -1
- package/lib/bank_account/bank-account.service.d.ts +0 -11
- package/lib/bank_account/bank_account.d.ts +0 -12
- package/lib/bank_account/index.d.ts +0 -3
- package/lib/bank_reconciliation/bank-reconciliation.service.d.ts +0 -10
- package/lib/bank_reconciliation/index.d.ts +0 -2
- package/lib/bank_reconciliation/payout.d.ts +0 -37
- package/lib/billable-item/billable-item.d.ts +0 -39
- package/lib/billable-item/billable-item.service.d.ts +0 -10
- package/lib/billable-item/index.d.ts +0 -2
- package/lib/billing-host.service.d.ts +0 -11
- package/lib/billing.service.d.ts +0 -88
- package/lib/bundle/bundle.d.ts +0 -26
- package/lib/bundle/bundle.service.d.ts +0 -14
- package/lib/bundle/index.d.ts +0 -2
- package/lib/contract/contract.d.ts +0 -20
- package/lib/contract/contract.service.d.ts +0 -23
- package/lib/contract/dimension.d.ts +0 -11
- package/lib/contract/index.d.ts +0 -5
- package/lib/contract/mutations.d.ts +0 -11
- package/lib/contract-document/contract-document.d.ts +0 -8
- package/lib/contract-document/contract-document.service.d.ts +0 -17
- package/lib/contract-document/index.d.ts +0 -3
- package/lib/contract-document/list-contract-document.d.ts +0 -3
- package/lib/core/index.d.ts +0 -2
- package/lib/core/paged-response.d.ts +0 -6
- package/lib/core/sort-direction.d.ts +0 -4
- package/lib/credit/credit.d.ts +0 -7
- package/lib/credit/credit.service.d.ts +0 -9
- package/lib/credit/index.d.ts +0 -2
- package/lib/customer_summary/customer-summary.d.ts +0 -9
- package/lib/discount/discount.d.ts +0 -17
- package/lib/discount/discount.service.d.ts +0 -15
- package/lib/discount/discount_type.d.ts +0 -9
- package/lib/discount/index.d.ts +0 -4
- package/lib/discount/list-discount.d.ts +0 -5
- package/lib/http-shared/error-handlers.d.ts +0 -4
- package/lib/invoice/index.d.ts +0 -3
- package/lib/invoice/invoice.d.ts +0 -86
- package/lib/invoice/invoice.service.d.ts +0 -40
- package/lib/invoice/list-invoice.d.ts +0 -15
- package/lib/invoice-template/index.d.ts +0 -2
- package/lib/invoice-template/invoice-template.d.ts +0 -35
- package/lib/invoice-template/invoice-template.service.d.ts +0 -14
- package/lib/merchant/balance.d.ts +0 -5
- package/lib/merchant/index.d.ts +0 -7
- package/lib/merchant/merchant.d.ts +0 -19
- package/lib/merchant/merchant.interface.d.ts +0 -3
- package/lib/merchant/merchant.service.d.ts +0 -59
- package/lib/merchant/payout-summary.d.ts +0 -19
- package/lib/merchant/retail-configuration.d.ts +0 -24
- package/lib/merchant-report/index.d.ts +0 -4
- package/lib/merchant-report/merchant-report-status.d.ts +0 -1
- package/lib/merchant-report/merchant-report.d.ts +0 -8
- package/lib/merchant-report/merchant-report.interfaces.d.ts +0 -5
- package/lib/merchant-report/merchant-report.service.d.ts +0 -12
- package/lib/payment/dispute.d.ts +0 -61
- package/lib/payment/index.d.ts +0 -9
- package/lib/payment/payment-allocation-type.d.ts +0 -7
- package/lib/payment/payment-source.d.ts +0 -7
- package/lib/payment/payment-status.d.ts +0 -7
- package/lib/payment/payment.d.ts +0 -42
- package/lib/payment/payment.service.d.ts +0 -24
- package/lib/payment/retail-payment.d.ts +0 -33
- package/lib/payment/retail-status.d.ts +0 -24
- package/lib/payment-card/index.d.ts +0 -2
- package/lib/payment-card/payment-card.d.ts +0 -41
- package/lib/payment-card/payment-card.service.d.ts +0 -13
- package/lib/payment-method/index.d.ts +0 -1
- package/lib/payment-method/payment-method.service.d.ts +0 -10
- package/lib/pricing/billing-strategy.d.ts +0 -11
- package/lib/pricing/commitment.d.ts +0 -6
- package/lib/pricing/currency.d.ts +0 -29
- package/lib/pricing/frequency.d.ts +0 -10
- package/lib/pricing/index.d.ts +0 -11
- package/lib/pricing/list-pricing-plan-product-filter.d.ts +0 -4
- package/lib/pricing/pricing-plan-product.d.ts +0 -34
- package/lib/pricing/pricing-plan.d.ts +0 -13
- package/lib/pricing/pricing-plan.service.d.ts +0 -17
- package/lib/pricing/product-pricing-rules.d.ts +0 -7
- package/lib/pricing/product-pricing-type.d.ts +0 -9
- package/lib/pricing/product-pricing.d.ts +0 -37
- package/lib/pricing/wholesale-pricing.service.d.ts +0 -19
- package/lib/product/index.d.ts +0 -2
- package/lib/product/list-products.d.ts +0 -16
- package/lib/product/product.d.ts +0 -9
- package/lib/product-summary/index.d.ts +0 -2
- package/lib/product-summary/product-summary.service.d.ts +0 -10
- package/lib/product-summary/subscription-retention.d.ts +0 -20
- package/lib/purchase/index.d.ts +0 -4
- package/lib/purchase/list-purchases.d.ts +0 -27
- package/lib/purchase/purchase.d.ts +0 -56
- package/lib/purchase/purchase.service.d.ts +0 -10
- package/lib/purchase/purchase_status.d.ts +0 -10
- package/lib/refund/index.d.ts +0 -2
- package/lib/refund/refund.d.ts +0 -36
- package/lib/refund/refund.service.d.ts +0 -11
- package/lib/retail-customer-configuration/index.d.ts +0 -2
- package/lib/retail-customer-configuration/retail-customer-configuration.d.ts +0 -20
- package/lib/retail-customer-configuration/retail-customer-configuration.service.d.ts +0 -9
- package/lib/revenue/index.d.ts +0 -2
- package/lib/revenue/revenue.interfaces.d.ts +0 -3
- package/lib/revenue/revenue.service.d.ts +0 -11
- package/lib/sales-credit-note/index.d.ts +0 -2
- package/lib/sales-credit-note/sales-credit-note.d.ts +0 -30
- package/lib/sales-credit-note/sales-credit-note.service.d.ts +0 -16
- package/lib/sales-invoice/index.d.ts +0 -2
- package/lib/sales-invoice/sales-invoice.d.ts +0 -42
- package/lib/sales-invoice/sales-invoice.service.d.ts +0 -16
- package/lib/sku.d.ts +0 -3
- package/lib/stripe-file/file.d.ts +0 -6
- package/lib/stripe-file/index.d.ts +0 -3
- package/lib/stripe-file/purpose.d.ts +0 -11
- package/lib/stripe-file/stripe-file.service.d.ts +0 -12
- package/lib/subscription/can-create-subscriptions-item.d.ts +0 -6
- package/lib/subscription/index.d.ts +0 -1
- package/lib/tax-rate/index.d.ts +0 -2
- package/lib/tax-rate/tax-rate.d.ts +0 -20
- package/lib/tax-rate/tax-rate.service.d.ts +0 -15
- package/vendasta-billing.metadata.json +0 -1
|
@@ -0,0 +1,555 @@
|
|
|
1
|
+
import { SubscribeValidation } from './subscribe-validation';
|
|
2
|
+
import * as e from '../enums';
|
|
3
|
+
export function enumStringToValue(enumRef, value) {
|
|
4
|
+
if (typeof value === 'number') {
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
return enumRef[value];
|
|
8
|
+
}
|
|
9
|
+
export class AlignmentSubscription {
|
|
10
|
+
constructor(kwargs) {
|
|
11
|
+
if (!kwargs) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
Object.assign(this, kwargs);
|
|
15
|
+
}
|
|
16
|
+
static fromProto(proto) {
|
|
17
|
+
let m = new AlignmentSubscription();
|
|
18
|
+
m = Object.assign(m, proto);
|
|
19
|
+
return m;
|
|
20
|
+
}
|
|
21
|
+
toApiJson() {
|
|
22
|
+
const toReturn = {};
|
|
23
|
+
if (typeof this.sku !== 'undefined') {
|
|
24
|
+
toReturn['sku'] = this.sku;
|
|
25
|
+
}
|
|
26
|
+
if (typeof this.customerId !== 'undefined') {
|
|
27
|
+
toReturn['customerId'] = this.customerId;
|
|
28
|
+
}
|
|
29
|
+
if (typeof this.orderId !== 'undefined') {
|
|
30
|
+
toReturn['orderId'] = this.orderId;
|
|
31
|
+
}
|
|
32
|
+
return toReturn;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class CanCreateSubscriptionsRequest {
|
|
36
|
+
constructor(kwargs) {
|
|
37
|
+
if (!kwargs) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
Object.assign(this, kwargs);
|
|
41
|
+
}
|
|
42
|
+
static fromProto(proto) {
|
|
43
|
+
let m = new CanCreateSubscriptionsRequest();
|
|
44
|
+
m = Object.assign(m, proto);
|
|
45
|
+
if (proto.skus) {
|
|
46
|
+
m.skus = Object.keys(proto.skus).reduce((obj, k) => { obj[k] = parseInt(proto.skus[k], 10); return obj; }, {});
|
|
47
|
+
}
|
|
48
|
+
if (proto.items) {
|
|
49
|
+
m.items = proto.items.map(CanCreateSubscriptionsRequestSubscriptionItem.fromProto);
|
|
50
|
+
}
|
|
51
|
+
return m;
|
|
52
|
+
}
|
|
53
|
+
toApiJson() {
|
|
54
|
+
const toReturn = {};
|
|
55
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
56
|
+
toReturn['merchantId'] = this.merchantId;
|
|
57
|
+
}
|
|
58
|
+
if (typeof this.skus !== 'undefined' && this.skus !== null) {
|
|
59
|
+
toReturn['skus'] = 'toApiJson' in this.skus ? this.skus.toApiJson() : this.skus;
|
|
60
|
+
}
|
|
61
|
+
if (typeof this.items !== 'undefined' && this.items !== null) {
|
|
62
|
+
toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;
|
|
63
|
+
}
|
|
64
|
+
return toReturn;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export class CanCreateSubscriptionsResponse {
|
|
68
|
+
constructor(kwargs) {
|
|
69
|
+
if (!kwargs) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
Object.assign(this, kwargs);
|
|
73
|
+
}
|
|
74
|
+
static fromProto(proto) {
|
|
75
|
+
let m = new CanCreateSubscriptionsResponse();
|
|
76
|
+
m = Object.assign(m, proto);
|
|
77
|
+
if (proto.validationResponse) {
|
|
78
|
+
m.validationResponse = proto.validationResponse.map(ValidateResponse.fromProto);
|
|
79
|
+
}
|
|
80
|
+
return m;
|
|
81
|
+
}
|
|
82
|
+
toApiJson() {
|
|
83
|
+
const toReturn = {};
|
|
84
|
+
if (typeof this.validationResponse !== 'undefined' && this.validationResponse !== null) {
|
|
85
|
+
toReturn['validationResponse'] = 'toApiJson' in this.validationResponse ? this.validationResponse.toApiJson() : this.validationResponse;
|
|
86
|
+
}
|
|
87
|
+
return toReturn;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export class ChangeCustomUnitPriceRequest {
|
|
91
|
+
constructor(kwargs) {
|
|
92
|
+
if (!kwargs) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
Object.assign(this, kwargs);
|
|
96
|
+
}
|
|
97
|
+
static fromProto(proto) {
|
|
98
|
+
let m = new ChangeCustomUnitPriceRequest();
|
|
99
|
+
m = Object.assign(m, proto);
|
|
100
|
+
if (proto.customUnitPrice) {
|
|
101
|
+
m.customUnitPrice = parseInt(proto.customUnitPrice, 10);
|
|
102
|
+
}
|
|
103
|
+
return m;
|
|
104
|
+
}
|
|
105
|
+
toApiJson() {
|
|
106
|
+
const toReturn = {};
|
|
107
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
108
|
+
toReturn['merchantId'] = this.merchantId;
|
|
109
|
+
}
|
|
110
|
+
if (typeof this.sku !== 'undefined') {
|
|
111
|
+
toReturn['sku'] = this.sku;
|
|
112
|
+
}
|
|
113
|
+
if (typeof this.customerId !== 'undefined') {
|
|
114
|
+
toReturn['customerId'] = this.customerId;
|
|
115
|
+
}
|
|
116
|
+
if (typeof this.orderId !== 'undefined') {
|
|
117
|
+
toReturn['orderId'] = this.orderId;
|
|
118
|
+
}
|
|
119
|
+
if (typeof this.customUnitPrice !== 'undefined') {
|
|
120
|
+
toReturn['customUnitPrice'] = this.customUnitPrice;
|
|
121
|
+
}
|
|
122
|
+
return toReturn;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export class ChangeFrequencyRequest {
|
|
126
|
+
constructor(kwargs) {
|
|
127
|
+
if (!kwargs) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
Object.assign(this, kwargs);
|
|
131
|
+
}
|
|
132
|
+
static fromProto(proto) {
|
|
133
|
+
let m = new ChangeFrequencyRequest();
|
|
134
|
+
m = Object.assign(m, proto);
|
|
135
|
+
if (proto.frequency) {
|
|
136
|
+
m.frequency = enumStringToValue(e.Frequency, proto.frequency);
|
|
137
|
+
}
|
|
138
|
+
return m;
|
|
139
|
+
}
|
|
140
|
+
toApiJson() {
|
|
141
|
+
const toReturn = {};
|
|
142
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
143
|
+
toReturn['merchantId'] = this.merchantId;
|
|
144
|
+
}
|
|
145
|
+
if (typeof this.sku !== 'undefined') {
|
|
146
|
+
toReturn['sku'] = this.sku;
|
|
147
|
+
}
|
|
148
|
+
if (typeof this.customerId !== 'undefined') {
|
|
149
|
+
toReturn['customerId'] = this.customerId;
|
|
150
|
+
}
|
|
151
|
+
if (typeof this.orderId !== 'undefined') {
|
|
152
|
+
toReturn['orderId'] = this.orderId;
|
|
153
|
+
}
|
|
154
|
+
if (typeof this.frequency !== 'undefined') {
|
|
155
|
+
toReturn['frequency'] = this.frequency;
|
|
156
|
+
}
|
|
157
|
+
return toReturn;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export class ChangeRenewalDateRequest {
|
|
161
|
+
constructor(kwargs) {
|
|
162
|
+
if (!kwargs) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
Object.assign(this, kwargs);
|
|
166
|
+
}
|
|
167
|
+
static fromProto(proto) {
|
|
168
|
+
let m = new ChangeRenewalDateRequest();
|
|
169
|
+
m = Object.assign(m, proto);
|
|
170
|
+
if (proto.nextRenewalDate) {
|
|
171
|
+
m.nextRenewalDate = new Date(proto.nextRenewalDate);
|
|
172
|
+
}
|
|
173
|
+
return m;
|
|
174
|
+
}
|
|
175
|
+
toApiJson() {
|
|
176
|
+
const toReturn = {};
|
|
177
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
178
|
+
toReturn['merchantId'] = this.merchantId;
|
|
179
|
+
}
|
|
180
|
+
if (typeof this.customerId !== 'undefined') {
|
|
181
|
+
toReturn['customerId'] = this.customerId;
|
|
182
|
+
}
|
|
183
|
+
if (typeof this.sku !== 'undefined') {
|
|
184
|
+
toReturn['sku'] = this.sku;
|
|
185
|
+
}
|
|
186
|
+
if (typeof this.orderId !== 'undefined') {
|
|
187
|
+
toReturn['orderId'] = this.orderId;
|
|
188
|
+
}
|
|
189
|
+
if (typeof this.nextRenewalDate !== 'undefined' && this.nextRenewalDate !== null) {
|
|
190
|
+
toReturn['nextRenewalDate'] = 'toApiJson' in this.nextRenewalDate ? this.nextRenewalDate.toApiJson() : this.nextRenewalDate;
|
|
191
|
+
}
|
|
192
|
+
return toReturn;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
export class CreateSubscriptionRequest {
|
|
196
|
+
constructor(kwargs) {
|
|
197
|
+
if (!kwargs) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
Object.assign(this, kwargs);
|
|
201
|
+
}
|
|
202
|
+
static fromProto(proto) {
|
|
203
|
+
let m = new CreateSubscriptionRequest();
|
|
204
|
+
m = Object.assign(m, proto);
|
|
205
|
+
if (proto.billingStart) {
|
|
206
|
+
m.billingStart = new Date(proto.billingStart);
|
|
207
|
+
}
|
|
208
|
+
if (proto.proratedTo) {
|
|
209
|
+
m.proratedTo = new Date(proto.proratedTo);
|
|
210
|
+
}
|
|
211
|
+
if (proto.renewalState) {
|
|
212
|
+
m.renewalState = enumStringToValue(e.RenewalState, proto.renewalState);
|
|
213
|
+
}
|
|
214
|
+
if (proto.customUnitPrice) {
|
|
215
|
+
m.customUnitPrice = parseInt(proto.customUnitPrice, 10);
|
|
216
|
+
}
|
|
217
|
+
if (proto.alignWith) {
|
|
218
|
+
m.alignWith = AlignmentSubscription.fromProto(proto.alignWith);
|
|
219
|
+
}
|
|
220
|
+
if (proto.frequency) {
|
|
221
|
+
m.frequency = enumStringToValue(e.Frequency, proto.frequency);
|
|
222
|
+
}
|
|
223
|
+
if (proto.retailAmount) {
|
|
224
|
+
m.retailAmount = parseInt(proto.retailAmount, 10);
|
|
225
|
+
}
|
|
226
|
+
if (proto.retailFrequency) {
|
|
227
|
+
m.retailFrequency = enumStringToValue(e.Frequency, proto.retailFrequency);
|
|
228
|
+
}
|
|
229
|
+
return m;
|
|
230
|
+
}
|
|
231
|
+
toApiJson() {
|
|
232
|
+
const toReturn = {};
|
|
233
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
234
|
+
toReturn['merchantId'] = this.merchantId;
|
|
235
|
+
}
|
|
236
|
+
if (typeof this.sku !== 'undefined') {
|
|
237
|
+
toReturn['sku'] = this.sku;
|
|
238
|
+
}
|
|
239
|
+
if (typeof this.customerId !== 'undefined') {
|
|
240
|
+
toReturn['customerId'] = this.customerId;
|
|
241
|
+
}
|
|
242
|
+
if (typeof this.orderId !== 'undefined') {
|
|
243
|
+
toReturn['orderId'] = this.orderId;
|
|
244
|
+
}
|
|
245
|
+
if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {
|
|
246
|
+
toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;
|
|
247
|
+
}
|
|
248
|
+
if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {
|
|
249
|
+
toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? this.proratedTo.toApiJson() : this.proratedTo;
|
|
250
|
+
}
|
|
251
|
+
if (typeof this.renewalState !== 'undefined') {
|
|
252
|
+
toReturn['renewalState'] = this.renewalState;
|
|
253
|
+
}
|
|
254
|
+
if (typeof this.retailBundleId !== 'undefined') {
|
|
255
|
+
toReturn['retailBundleId'] = this.retailBundleId;
|
|
256
|
+
}
|
|
257
|
+
if (typeof this.forResale !== 'undefined') {
|
|
258
|
+
toReturn['forResale'] = this.forResale;
|
|
259
|
+
}
|
|
260
|
+
if (typeof this.customUnitPrice !== 'undefined') {
|
|
261
|
+
toReturn['customUnitPrice'] = this.customUnitPrice;
|
|
262
|
+
}
|
|
263
|
+
if (typeof this.alignWith !== 'undefined' && this.alignWith !== null) {
|
|
264
|
+
toReturn['alignWith'] = 'toApiJson' in this.alignWith ? this.alignWith.toApiJson() : this.alignWith;
|
|
265
|
+
}
|
|
266
|
+
if (typeof this.frequency !== 'undefined') {
|
|
267
|
+
toReturn['frequency'] = this.frequency;
|
|
268
|
+
}
|
|
269
|
+
if (typeof this.retailAmount !== 'undefined') {
|
|
270
|
+
toReturn['retailAmount'] = this.retailAmount;
|
|
271
|
+
}
|
|
272
|
+
if (typeof this.retailFrequency !== 'undefined') {
|
|
273
|
+
toReturn['retailFrequency'] = this.retailFrequency;
|
|
274
|
+
}
|
|
275
|
+
return toReturn;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
export class CreateSubscriptionsRequest {
|
|
279
|
+
constructor(kwargs) {
|
|
280
|
+
if (!kwargs) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
Object.assign(this, kwargs);
|
|
284
|
+
}
|
|
285
|
+
static fromProto(proto) {
|
|
286
|
+
let m = new CreateSubscriptionsRequest();
|
|
287
|
+
m = Object.assign(m, proto);
|
|
288
|
+
if (proto.subscriptions) {
|
|
289
|
+
m.subscriptions = proto.subscriptions.map(Subscription.fromProto);
|
|
290
|
+
}
|
|
291
|
+
return m;
|
|
292
|
+
}
|
|
293
|
+
toApiJson() {
|
|
294
|
+
const toReturn = {};
|
|
295
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
296
|
+
toReturn['merchantId'] = this.merchantId;
|
|
297
|
+
}
|
|
298
|
+
if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {
|
|
299
|
+
toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? this.subscriptions.toApiJson() : this.subscriptions;
|
|
300
|
+
}
|
|
301
|
+
return toReturn;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
export class CreateSubscriptionsResponse {
|
|
305
|
+
constructor(kwargs) {
|
|
306
|
+
if (!kwargs) {
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
Object.assign(this, kwargs);
|
|
310
|
+
}
|
|
311
|
+
static fromProto(proto) {
|
|
312
|
+
let m = new CreateSubscriptionsResponse();
|
|
313
|
+
m = Object.assign(m, proto);
|
|
314
|
+
return m;
|
|
315
|
+
}
|
|
316
|
+
toApiJson() {
|
|
317
|
+
const toReturn = {};
|
|
318
|
+
if (typeof this.id !== 'undefined') {
|
|
319
|
+
toReturn['id'] = this.id;
|
|
320
|
+
}
|
|
321
|
+
return toReturn;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
export class ReverseSubscriptionRequest {
|
|
325
|
+
constructor(kwargs) {
|
|
326
|
+
if (!kwargs) {
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
Object.assign(this, kwargs);
|
|
330
|
+
}
|
|
331
|
+
static fromProto(proto) {
|
|
332
|
+
let m = new ReverseSubscriptionRequest();
|
|
333
|
+
m = Object.assign(m, proto);
|
|
334
|
+
return m;
|
|
335
|
+
}
|
|
336
|
+
toApiJson() {
|
|
337
|
+
const toReturn = {};
|
|
338
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
339
|
+
toReturn['merchantId'] = this.merchantId;
|
|
340
|
+
}
|
|
341
|
+
if (typeof this.sku !== 'undefined') {
|
|
342
|
+
toReturn['sku'] = this.sku;
|
|
343
|
+
}
|
|
344
|
+
if (typeof this.customerId !== 'undefined') {
|
|
345
|
+
toReturn['customerId'] = this.customerId;
|
|
346
|
+
}
|
|
347
|
+
if (typeof this.orderId !== 'undefined') {
|
|
348
|
+
toReturn['orderId'] = this.orderId;
|
|
349
|
+
}
|
|
350
|
+
return toReturn;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
export class SetRenewalStartRequest {
|
|
354
|
+
constructor(kwargs) {
|
|
355
|
+
if (!kwargs) {
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
Object.assign(this, kwargs);
|
|
359
|
+
}
|
|
360
|
+
static fromProto(proto) {
|
|
361
|
+
let m = new SetRenewalStartRequest();
|
|
362
|
+
m = Object.assign(m, proto);
|
|
363
|
+
if (proto.renewalStart) {
|
|
364
|
+
m.renewalStart = new Date(proto.renewalStart);
|
|
365
|
+
}
|
|
366
|
+
return m;
|
|
367
|
+
}
|
|
368
|
+
toApiJson() {
|
|
369
|
+
const toReturn = {};
|
|
370
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
371
|
+
toReturn['merchantId'] = this.merchantId;
|
|
372
|
+
}
|
|
373
|
+
if (typeof this.sku !== 'undefined') {
|
|
374
|
+
toReturn['sku'] = this.sku;
|
|
375
|
+
}
|
|
376
|
+
if (typeof this.customerId !== 'undefined') {
|
|
377
|
+
toReturn['customerId'] = this.customerId;
|
|
378
|
+
}
|
|
379
|
+
if (typeof this.orderId !== 'undefined') {
|
|
380
|
+
toReturn['orderId'] = this.orderId;
|
|
381
|
+
}
|
|
382
|
+
if (typeof this.renewalStart !== 'undefined' && this.renewalStart !== null) {
|
|
383
|
+
toReturn['renewalStart'] = 'toApiJson' in this.renewalStart ? this.renewalStart.toApiJson() : this.renewalStart;
|
|
384
|
+
}
|
|
385
|
+
return toReturn;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
export class CanCreateSubscriptionsRequestSkusEntry {
|
|
389
|
+
constructor(kwargs) {
|
|
390
|
+
if (!kwargs) {
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
Object.assign(this, kwargs);
|
|
394
|
+
}
|
|
395
|
+
static fromProto(proto) {
|
|
396
|
+
let m = new CanCreateSubscriptionsRequestSkusEntry();
|
|
397
|
+
m = Object.assign(m, proto);
|
|
398
|
+
if (proto.value) {
|
|
399
|
+
m.value = parseInt(proto.value, 10);
|
|
400
|
+
}
|
|
401
|
+
return m;
|
|
402
|
+
}
|
|
403
|
+
toApiJson() {
|
|
404
|
+
const toReturn = {};
|
|
405
|
+
if (typeof this.key !== 'undefined') {
|
|
406
|
+
toReturn['key'] = this.key;
|
|
407
|
+
}
|
|
408
|
+
if (typeof this.value !== 'undefined') {
|
|
409
|
+
toReturn['value'] = this.value;
|
|
410
|
+
}
|
|
411
|
+
return toReturn;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
export class Subscription {
|
|
415
|
+
constructor(kwargs) {
|
|
416
|
+
if (!kwargs) {
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
Object.assign(this, kwargs);
|
|
420
|
+
}
|
|
421
|
+
static fromProto(proto) {
|
|
422
|
+
let m = new Subscription();
|
|
423
|
+
m = Object.assign(m, proto);
|
|
424
|
+
if (proto.billingStart) {
|
|
425
|
+
m.billingStart = new Date(proto.billingStart);
|
|
426
|
+
}
|
|
427
|
+
if (proto.renewalState) {
|
|
428
|
+
m.renewalState = enumStringToValue(e.RenewalState, proto.renewalState);
|
|
429
|
+
}
|
|
430
|
+
if (proto.proratedTo) {
|
|
431
|
+
m.proratedTo = new Date(proto.proratedTo);
|
|
432
|
+
}
|
|
433
|
+
if (proto.customUnitPrice) {
|
|
434
|
+
m.customUnitPrice = parseInt(proto.customUnitPrice, 10);
|
|
435
|
+
}
|
|
436
|
+
if (proto.alignWith) {
|
|
437
|
+
m.alignWith = AlignmentSubscription.fromProto(proto.alignWith);
|
|
438
|
+
}
|
|
439
|
+
if (proto.frequency) {
|
|
440
|
+
m.frequency = enumStringToValue(e.Frequency, proto.frequency);
|
|
441
|
+
}
|
|
442
|
+
if (proto.retailAmount) {
|
|
443
|
+
m.retailAmount = parseInt(proto.retailAmount, 10);
|
|
444
|
+
}
|
|
445
|
+
if (proto.retailFrequency) {
|
|
446
|
+
m.retailFrequency = enumStringToValue(e.Frequency, proto.retailFrequency);
|
|
447
|
+
}
|
|
448
|
+
return m;
|
|
449
|
+
}
|
|
450
|
+
toApiJson() {
|
|
451
|
+
const toReturn = {};
|
|
452
|
+
if (typeof this.sku !== 'undefined') {
|
|
453
|
+
toReturn['sku'] = this.sku;
|
|
454
|
+
}
|
|
455
|
+
if (typeof this.customerId !== 'undefined') {
|
|
456
|
+
toReturn['customerId'] = this.customerId;
|
|
457
|
+
}
|
|
458
|
+
if (typeof this.orderId !== 'undefined') {
|
|
459
|
+
toReturn['orderId'] = this.orderId;
|
|
460
|
+
}
|
|
461
|
+
if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {
|
|
462
|
+
toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;
|
|
463
|
+
}
|
|
464
|
+
if (typeof this.renewalState !== 'undefined') {
|
|
465
|
+
toReturn['renewalState'] = this.renewalState;
|
|
466
|
+
}
|
|
467
|
+
if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {
|
|
468
|
+
toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? this.proratedTo.toApiJson() : this.proratedTo;
|
|
469
|
+
}
|
|
470
|
+
if (typeof this.retailBundleId !== 'undefined') {
|
|
471
|
+
toReturn['retailBundleId'] = this.retailBundleId;
|
|
472
|
+
}
|
|
473
|
+
if (typeof this.forResale !== 'undefined') {
|
|
474
|
+
toReturn['forResale'] = this.forResale;
|
|
475
|
+
}
|
|
476
|
+
if (typeof this.customUnitPrice !== 'undefined') {
|
|
477
|
+
toReturn['customUnitPrice'] = this.customUnitPrice;
|
|
478
|
+
}
|
|
479
|
+
if (typeof this.alignWith !== 'undefined' && this.alignWith !== null) {
|
|
480
|
+
toReturn['alignWith'] = 'toApiJson' in this.alignWith ? this.alignWith.toApiJson() : this.alignWith;
|
|
481
|
+
}
|
|
482
|
+
if (typeof this.bundleInstanceId !== 'undefined') {
|
|
483
|
+
toReturn['bundleInstanceId'] = this.bundleInstanceId;
|
|
484
|
+
}
|
|
485
|
+
if (typeof this.frequency !== 'undefined') {
|
|
486
|
+
toReturn['frequency'] = this.frequency;
|
|
487
|
+
}
|
|
488
|
+
if (typeof this.retailAmount !== 'undefined') {
|
|
489
|
+
toReturn['retailAmount'] = this.retailAmount;
|
|
490
|
+
}
|
|
491
|
+
if (typeof this.retailFrequency !== 'undefined') {
|
|
492
|
+
toReturn['retailFrequency'] = this.retailFrequency;
|
|
493
|
+
}
|
|
494
|
+
return toReturn;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
export class CanCreateSubscriptionsRequestSubscriptionItem {
|
|
498
|
+
constructor(kwargs) {
|
|
499
|
+
if (!kwargs) {
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
Object.assign(this, kwargs);
|
|
503
|
+
}
|
|
504
|
+
static fromProto(proto) {
|
|
505
|
+
let m = new CanCreateSubscriptionsRequestSubscriptionItem();
|
|
506
|
+
m = Object.assign(m, proto);
|
|
507
|
+
if (proto.frequency) {
|
|
508
|
+
m.frequency = enumStringToValue(e.Frequency, proto.frequency);
|
|
509
|
+
}
|
|
510
|
+
if (proto.quantity) {
|
|
511
|
+
m.quantity = parseInt(proto.quantity, 10);
|
|
512
|
+
}
|
|
513
|
+
return m;
|
|
514
|
+
}
|
|
515
|
+
toApiJson() {
|
|
516
|
+
const toReturn = {};
|
|
517
|
+
if (typeof this.sku !== 'undefined') {
|
|
518
|
+
toReturn['sku'] = this.sku;
|
|
519
|
+
}
|
|
520
|
+
if (typeof this.frequency !== 'undefined') {
|
|
521
|
+
toReturn['frequency'] = this.frequency;
|
|
522
|
+
}
|
|
523
|
+
if (typeof this.quantity !== 'undefined') {
|
|
524
|
+
toReturn['quantity'] = this.quantity;
|
|
525
|
+
}
|
|
526
|
+
return toReturn;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
export class ValidateResponse {
|
|
530
|
+
constructor(kwargs) {
|
|
531
|
+
if (!kwargs) {
|
|
532
|
+
return;
|
|
533
|
+
}
|
|
534
|
+
Object.assign(this, kwargs);
|
|
535
|
+
}
|
|
536
|
+
static fromProto(proto) {
|
|
537
|
+
let m = new ValidateResponse();
|
|
538
|
+
m = Object.assign(m, proto);
|
|
539
|
+
if (proto.code) {
|
|
540
|
+
m.code = SubscribeValidation.fromProto(proto.code);
|
|
541
|
+
}
|
|
542
|
+
return m;
|
|
543
|
+
}
|
|
544
|
+
toApiJson() {
|
|
545
|
+
const toReturn = {};
|
|
546
|
+
if (typeof this.sku !== 'undefined') {
|
|
547
|
+
toReturn['sku'] = this.sku;
|
|
548
|
+
}
|
|
549
|
+
if (typeof this.code !== 'undefined' && this.code !== null) {
|
|
550
|
+
toReturn['code'] = 'toApiJson' in this.code ? this.code.toApiJson() : this.code;
|
|
551
|
+
}
|
|
552
|
+
return toReturn;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYmlsbGluZ19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9zdWJzY3JpcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxLQUFLLENBQUMsTUFBTSxVQUFVLENBQUM7QUFFOUIsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLHFCQUFxQjtJQVc5QixZQUFZLE1BQXlDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBWEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUNwQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQUM7UUFDbEUsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFD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LGdCQUFnQjtJQVd6QixZQUFZLE1BQW9DO1FBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBWkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUMvQixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQUM7UUFDckUsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQUM7UUFDbEUsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsSUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUM7UUFDdkosT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3Vic2NyaWJlVmFsaWRhdGlvbiB9IGZyb20gJy4vc3Vic2NyaWJlLXZhbGlkYXRpb24nO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQWxpZ25tZW50U3Vic2NyaXB0aW9uIGltcGxlbWVudHMgaS5BbGlnbm1lbnRTdWJzY3JpcHRpb25JbnRlcmZhY2Uge1xuICAgIHNrdTogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgICBvcmRlcklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBBbGlnbm1lbnRTdWJzY3JpcHRpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBBbGlnbm1lbnRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkFsaWdubWVudFN1YnNjcmlwdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNrdSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1J10gPSB0aGlzLnNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JkZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JkZXJJZCddID0gdGhpcy5vcmRlcklkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0IGltcGxlbWVudHMgaS5DYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIHNrdXM6IHtba2V5OiBzdHJpbmddOiBudW1iZXJ9O1xuICAgIGl0ZW1zOiBDYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdFN1YnNjcmlwdGlvbkl0ZW1bXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc2t1cykge20uc2t1cyA9IE9iamVjdC5rZXlzKHByb3RvLnNrdXMpLnJlZHVjZTxhbnk+KChvYmosIGspID0+IHsgb2JqW2tdID0gcGFyc2VJbnQocHJvdG8uc2t1c1trXSwgMTApOyByZXR1cm4gb2JqOyB9LCB7fSk7fVxuICAgICAgICBpZiAocHJvdG8uaXRlbXMpIHttLml0ZW1zID0gcHJvdG8uaXRlbXMubWFwKENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0U3Vic2NyaXB0aW9uSXRlbS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5za3VzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNrdXMgIT09IG51bGwpIHt0b1JldHVyblsnc2t1cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5za3VzID8gKHRoaXMuc2t1cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5za3VzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLml0ZW1zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLml0ZW1zICE9PSBudWxsKSB7dG9SZXR1cm5bJ2l0ZW1zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLml0ZW1zID8gKHRoaXMuaXRlbXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuaXRlbXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5DYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHZhbGlkYXRpb25SZXNwb25zZTogVmFsaWRhdGVSZXNwb25zZVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnZhbGlkYXRpb25SZXNwb25zZSkge20udmFsaWRhdGlvblJlc3BvbnNlID0gcHJvdG8udmFsaWRhdGlvblJlc3BvbnNlLm1hcChWYWxpZGF0ZVJlc3BvbnNlLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbGlkYXRpb25SZXNwb25zZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy52YWxpZGF0aW9uUmVzcG9uc2UgIT09IG51bGwpIHt0b1JldHVyblsndmFsaWRhdGlvblJlc3BvbnNlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnZhbGlkYXRpb25SZXNwb25zZSA/ICh0aGlzLnZhbGlkYXRpb25SZXNwb25zZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy52YWxpZGF0aW9uUmVzcG9uc2U7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hhbmdlQ3VzdG9tVW5pdFByaWNlUmVxdWVzdCBpbXBsZW1lbnRzIGkuQ2hhbmdlQ3VzdG9tVW5pdFByaWNlUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIHNrdTogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgICBvcmRlcklkOiBzdHJpbmc7XG4gICAgY3VzdG9tVW5pdFByaWNlOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDaGFuZ2VDdXN0b21Vbml0UHJpY2VSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ2hhbmdlQ3VzdG9tVW5pdFByaWNlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5jdXN0b21Vbml0UHJpY2UpIHttLmN1c3RvbVVuaXRQcmljZSA9IHBhcnNlSW50KHByb3RvLmN1c3RvbVVuaXRQcmljZSwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DaGFuZ2VDdXN0b21Vbml0UHJpY2VSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNrdSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1J10gPSB0aGlzLnNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JkZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JkZXJJZCddID0gdGhpcy5vcmRlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbVVuaXRQcmljZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3VzdG9tVW5pdFByaWNlJ10gPSB0aGlzLmN1c3RvbVVuaXRQcmljZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDaGFuZ2VGcmVxdWVuY3lSZXF1ZXN0IGltcGxlbWVudHMgaS5DaGFuZ2VGcmVxdWVuY3lSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkOiBzdHJpbmc7XG4gICAgc2t1OiBzdHJpbmc7XG4gICAgY3VzdG9tZXJJZDogc3RyaW5nO1xuICAgIG9yZGVySWQ6IHN0cmluZztcbiAgICBmcmVxdWVuY3k6IGUuRnJlcXVlbmN5O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ2hhbmdlRnJlcXVlbmN5UmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IENoYW5nZUZyZXF1ZW5jeVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZnJlcXVlbmN5KSB7bS5mcmVxdWVuY3kgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkZyZXF1ZW5jeT4oZS5GcmVxdWVuY3ksIHByb3RvLmZyZXF1ZW5jeSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNoYW5nZUZyZXF1ZW5jeVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXJjaGFudElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZXJjaGFudElkJ10gPSB0aGlzLm1lcmNoYW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2t1ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydza3UnXSA9IHRoaXMuc2t1O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbWVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1c3RvbWVySWQnXSA9IHRoaXMuY3VzdG9tZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmRlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmRlcklkJ10gPSB0aGlzLm9yZGVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZnJlcXVlbmN5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmcmVxdWVuY3knXSA9IHRoaXMuZnJlcXVlbmN5O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENoYW5nZVJlbmV3YWxEYXRlUmVxdWVzdCBpbXBsZW1lbnRzIGkuQ2hhbmdlUmVuZXdhbERhdGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkOiBzdHJpbmc7XG4gICAgY3VzdG9tZXJJZDogc3RyaW5nO1xuICAgIHNrdTogc3RyaW5nO1xuICAgIG9yZGVySWQ6IHN0cmluZztcbiAgICBuZXh0UmVuZXdhbERhdGU6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDaGFuZ2VSZW5ld2FsRGF0ZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBDaGFuZ2VSZW5ld2FsRGF0ZVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubmV4dFJlbmV3YWxEYXRlKSB7bS5uZXh0UmVuZXdhbERhdGUgPSBuZXcgRGF0ZShwcm90by5uZXh0UmVuZXdhbERhdGUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DaGFuZ2VSZW5ld2FsRGF0ZVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXJjaGFudElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZXJjaGFudElkJ10gPSB0aGlzLm1lcmNoYW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3VzdG9tZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3VzdG9tZXJJZCddID0gdGhpcy5jdXN0b21lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNrdSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1J10gPSB0aGlzLnNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmRlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmRlcklkJ10gPSB0aGlzLm9yZGVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmV4dFJlbmV3YWxEYXRlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm5leHRSZW5ld2FsRGF0ZSAhPT0gbnVsbCkge3RvUmV0dXJuWyduZXh0UmVuZXdhbERhdGUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubmV4dFJlbmV3YWxEYXRlID8gKHRoaXMubmV4dFJlbmV3YWxEYXRlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm5leHRSZW5ld2FsRGF0ZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0IGltcGxlbWVudHMgaS5DcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkOiBzdHJpbmc7XG4gICAgc2t1OiBzdHJpbmc7XG4gICAgY3VzdG9tZXJJZDogc3RyaW5nO1xuICAgIG9yZGVySWQ6IHN0cmluZztcbiAgICBiaWxsaW5nU3RhcnQ6IERhdGU7XG4gICAgcHJvcmF0ZWRUbzogRGF0ZTtcbiAgICByZW5ld2FsU3RhdGU6IGUuUmVuZXdhbFN0YXRlO1xuICAgIHJldGFpbEJ1bmRsZUlkOiBzdHJpbmc7XG4gICAgZm9yUmVzYWxlOiBib29sZWFuO1xuICAgIGN1c3RvbVVuaXRQcmljZTogbnVtYmVyO1xuICAgIGFsaWduV2l0aDogQWxpZ25tZW50U3Vic2NyaXB0aW9uO1xuICAgIGZyZXF1ZW5jeTogZS5GcmVxdWVuY3k7XG4gICAgcmV0YWlsQW1vdW50OiBudW1iZXI7XG4gICAgcmV0YWlsRnJlcXVlbmN5OiBlLkZyZXF1ZW5jeTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmJpbGxpbmdTdGFydCkge20uYmlsbGluZ1N0YXJ0ID0gbmV3IERhdGUocHJvdG8uYmlsbGluZ1N0YXJ0KTt9XG4gICAgICAgIGlmIChwcm90by5wcm9yYXRlZFRvKSB7bS5wcm9yYXRlZFRvID0gbmV3IERhdGUocHJvdG8ucHJvcmF0ZWRUbyk7fVxuICAgICAgICBpZiAocHJvdG8ucmVuZXdhbFN0YXRlKSB7bS5yZW5ld2FsU3RhdGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlJlbmV3YWxTdGF0ZT4oZS5SZW5ld2FsU3RhdGUsIHByb3RvLnJlbmV3YWxTdGF0ZSk7fVxuICAgICAgICBpZiAocHJvdG8uY3VzdG9tVW5pdFByaWNlKSB7bS5jdXN0b21Vbml0UHJpY2UgPSBwYXJzZUludChwcm90by5jdXN0b21Vbml0UHJpY2UsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5hbGlnbldpdGgpIHttLmFsaWduV2l0aCA9IEFsaWdubWVudFN1YnNjcmlwdGlvbi5mcm9tUHJvdG8ocHJvdG8uYWxpZ25XaXRoKTt9XG4gICAgICAgIGlmIChwcm90by5mcmVxdWVuY3kpIHttLmZyZXF1ZW5jeSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuRnJlcXVlbmN5PihlLkZyZXF1ZW5jeSwgcHJvdG8uZnJlcXVlbmN5KTt9XG4gICAgICAgIGlmIChwcm90by5yZXRhaWxBbW91bnQpIHttLnJldGFpbEFtb3VudCA9IHBhcnNlSW50KHByb3RvLnJldGFpbEFtb3VudCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnJldGFpbEZyZXF1ZW5jeSkge20ucmV0YWlsRnJlcXVlbmN5ID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5GcmVxdWVuY3k+KGUuRnJlcXVlbmN5LCBwcm90by5yZXRhaWxGcmVxdWVuY3kpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNrdSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1J10gPSB0aGlzLnNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JkZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JkZXJJZCddID0gdGhpcy5vcmRlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJpbGxpbmdTdGFydCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5iaWxsaW5nU3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnYmlsbGluZ1N0YXJ0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmJpbGxpbmdTdGFydCA/ICh0aGlzLmJpbGxpbmdTdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5iaWxsaW5nU3RhcnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcmF0ZWRUbyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wcm9yYXRlZFRvICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Byb3JhdGVkVG8nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucHJvcmF0ZWRUbyA/ICh0aGlzLnByb3JhdGVkVG8gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucHJvcmF0ZWRUbzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZW5ld2FsU3RhdGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlbmV3YWxTdGF0ZSddID0gdGhpcy5yZW5ld2FsU3RhdGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmV0YWlsQnVuZGxlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JldGFpbEJ1bmRsZUlkJ10gPSB0aGlzLnJldGFpbEJ1bmRsZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvclJlc2FsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZm9yUmVzYWxlJ10gPSB0aGlzLmZvclJlc2FsZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21Vbml0UHJpY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1c3RvbVVuaXRQcmljZSddID0gdGhpcy5jdXN0b21Vbml0UHJpY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWxpZ25XaXRoICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFsaWduV2l0aCAhPT0gbnVsbCkge3RvUmV0dXJuWydhbGlnbldpdGgnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYWxpZ25XaXRoID8gKHRoaXMuYWxpZ25XaXRoIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFsaWduV2l0aDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mcmVxdWVuY3kgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZyZXF1ZW5jeSddID0gdGhpcy5mcmVxdWVuY3k7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmV0YWlsQW1vdW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXRhaWxBbW91bnQnXSA9IHRoaXMucmV0YWlsQW1vdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldGFpbEZyZXF1ZW5jeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmV0YWlsRnJlcXVlbmN5J10gPSB0aGlzLnJldGFpbEZyZXF1ZW5jeTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdCBpbXBsZW1lbnRzIGkuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3Vic2NyaXB0aW9ucykge20uc3Vic2NyaXB0aW9ucyA9IHByb3RvLnN1YnNjcmlwdGlvbnMubWFwKFN1YnNjcmlwdGlvbi5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJzY3JpcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN1YnNjcmlwdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsnc3Vic2NyaXB0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdWJzY3JpcHRpb25zID8gKHRoaXMuc3Vic2NyaXB0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdWJzY3JpcHRpb25zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZSBpbXBsZW1lbnRzIGkuQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ3JlYXRlU3Vic2NyaXB0aW9uc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVTdWJzY3JpcHRpb25zUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmV2ZXJzZVN1YnNjcmlwdGlvblJlcXVlc3QgaW1wbGVtZW50cyBpLlJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBtZXJjaGFudElkOiBzdHJpbmc7XG4gICAgc2t1OiBzdHJpbmc7XG4gICAgY3VzdG9tZXJJZDogc3RyaW5nO1xuICAgIG9yZGVySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUmV2ZXJzZVN1YnNjcmlwdGlvblJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlJldmVyc2VTdWJzY3JpcHRpb25SZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNrdSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1J10gPSB0aGlzLnNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JkZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JkZXJJZCddID0gdGhpcy5vcmRlcklkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldFJlbmV3YWxTdGFydFJlcXVlc3QgaW1wbGVtZW50cyBpLlNldFJlbmV3YWxTdGFydFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBza3U6IHN0cmluZztcbiAgICBjdXN0b21lcklkOiBzdHJpbmc7XG4gICAgb3JkZXJJZDogc3RyaW5nO1xuICAgIHJlbmV3YWxTdGFydDogRGF0ZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNldFJlbmV3YWxTdGFydFJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBTZXRSZW5ld2FsU3RhcnRSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnJlbmV3YWxTdGFydCkge20ucmVuZXdhbFN0YXJ0ID0gbmV3IERhdGUocHJvdG8ucmVuZXdhbFN0YXJ0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2V0UmVuZXdhbFN0YXJ0UmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5za3UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NrdSddID0gdGhpcy5za3U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3VzdG9tZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3VzdG9tZXJJZCddID0gdGhpcy5jdXN0b21lcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yZGVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yZGVySWQnXSA9IHRoaXMub3JkZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZW5ld2FsU3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucmVuZXdhbFN0YXJ0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3JlbmV3YWxTdGFydCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5yZW5ld2FsU3RhcnQgPyAodGhpcy5yZW5ld2FsU3RhcnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucmVuZXdhbFN0YXJ0O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0U2t1c0VudHJ5IGltcGxlbWVudHMgaS5DYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdFNrdXNFbnRyeUludGVyZmFjZSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0U2t1c0VudHJ5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3RTa3VzRW50cnkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8udmFsdWUpIHttLnZhbHVlID0gcGFyc2VJbnQocHJvdG8udmFsdWUsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3RTa3VzRW50cnlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5rZXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2tleSddID0gdGhpcy5rZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZhbHVlJ10gPSB0aGlzLnZhbHVlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvbiBpbXBsZW1lbnRzIGkuU3Vic2NyaXB0aW9uSW50ZXJmYWNlIHtcbiAgICBza3U6IHN0cmluZztcbiAgICBjdXN0b21lcklkOiBzdHJpbmc7XG4gICAgb3JkZXJJZDogc3RyaW5nO1xuICAgIGJpbGxpbmdTdGFydDogRGF0ZTtcbiAgICByZW5ld2FsU3RhdGU6IGUuUmVuZXdhbFN0YXRlO1xuICAgIHByb3JhdGVkVG86IERhdGU7XG4gICAgcmV0YWlsQnVuZGxlSWQ6IHN0cmluZztcbiAgICBmb3JSZXNhbGU6IGJvb2xlYW47XG4gICAgY3VzdG9tVW5pdFByaWNlOiBudW1iZXI7XG4gICAgYWxpZ25XaXRoOiBBbGlnbm1lbnRTdWJzY3JpcHRpb247XG4gICAgYnVuZGxlSW5zdGFuY2VJZDogc3RyaW5nO1xuICAgIGZyZXF1ZW5jeTogZS5GcmVxdWVuY3k7XG4gICAgcmV0YWlsQW1vdW50OiBudW1iZXI7XG4gICAgcmV0YWlsRnJlcXVlbmN5OiBlLkZyZXF1ZW5jeTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFN1YnNjcmlwdGlvbiB7XG4gICAgICAgIGxldCBtID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5iaWxsaW5nU3RhcnQpIHttLmJpbGxpbmdTdGFydCA9IG5ldyBEYXRlKHByb3RvLmJpbGxpbmdTdGFydCk7fVxuICAgICAgICBpZiAocHJvdG8ucmVuZXdhbFN0YXRlKSB7bS5yZW5ld2FsU3RhdGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlJlbmV3YWxTdGF0ZT4oZS5SZW5ld2FsU3RhdGUsIHByb3RvLnJlbmV3YWxTdGF0ZSk7fVxuICAgICAgICBpZiAocHJvdG8ucHJvcmF0ZWRUbykge20ucHJvcmF0ZWRUbyA9IG5ldyBEYXRlKHByb3RvLnByb3JhdGVkVG8pO31cbiAgICAgICAgaWYgKHByb3RvLmN1c3RvbVVuaXRQcmljZSkge20uY3VzdG9tVW5pdFByaWNlID0gcGFyc2VJbnQocHJvdG8uY3VzdG9tVW5pdFByaWNlLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uYWxpZ25XaXRoKSB7bS5hbGlnbldpdGggPSBBbGlnbm1lbnRTdWJzY3JpcHRpb24uZnJvbVByb3RvKHByb3RvLmFsaWduV2l0aCk7fVxuICAgICAgICBpZiAocHJvdG8uZnJlcXVlbmN5KSB7bS5mcmVxdWVuY3kgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkZyZXF1ZW5jeT4oZS5GcmVxdWVuY3ksIHByb3RvLmZyZXF1ZW5jeSk7fVxuICAgICAgICBpZiAocHJvdG8ucmV0YWlsQW1vdW50KSB7bS5yZXRhaWxBbW91bnQgPSBwYXJzZUludChwcm90by5yZXRhaWxBbW91bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5yZXRhaWxGcmVxdWVuY3kpIHttLnJldGFpbEZyZXF1ZW5jeSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuRnJlcXVlbmN5PihlLkZyZXF1ZW5jeSwgcHJvdG8ucmV0YWlsRnJlcXVlbmN5KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU3Vic2NyaXB0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2t1ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydza3UnXSA9IHRoaXMuc2t1O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbWVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1c3RvbWVySWQnXSA9IHRoaXMuY3VzdG9tZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmRlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmRlcklkJ10gPSB0aGlzLm9yZGVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYmlsbGluZ1N0YXJ0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmJpbGxpbmdTdGFydCAhPT0gbnVsbCkge3RvUmV0dXJuWydiaWxsaW5nU3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYmlsbGluZ1N0YXJ0ID8gKHRoaXMuYmlsbGluZ1N0YXJ0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmJpbGxpbmdTdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZW5ld2FsU3RhdGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlbmV3YWxTdGF0ZSddID0gdGhpcy5yZW5ld2FsU3RhdGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcmF0ZWRUbyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wcm9yYXRlZFRvICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Byb3JhdGVkVG8nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucHJvcmF0ZWRUbyA/ICh0aGlzLnByb3JhdGVkVG8gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucHJvcmF0ZWRUbzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXRhaWxCdW5kbGVJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmV0YWlsQnVuZGxlSWQnXSA9IHRoaXMucmV0YWlsQnVuZGxlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZm9yUmVzYWxlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmb3JSZXNhbGUnXSA9IHRoaXMuZm9yUmVzYWxlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbVVuaXRQcmljZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3VzdG9tVW5pdFByaWNlJ10gPSB0aGlzLmN1c3RvbVVuaXRQcmljZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hbGlnbldpdGggIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYWxpZ25XaXRoICE9PSBudWxsKSB7dG9SZXR1cm5bJ2FsaWduV2l0aCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hbGlnbldpdGggPyAodGhpcy5hbGlnbldpdGggYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYWxpZ25XaXRoO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1bmRsZUluc3RhbmNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1bmRsZUluc3RhbmNlSWQnXSA9IHRoaXMuYnVuZGxlSW5zdGFuY2VJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mcmVxdWVuY3kgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZyZXF1ZW5jeSddID0gdGhpcy5mcmVxdWVuY3k7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmV0YWlsQW1vdW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXRhaWxBbW91bnQnXSA9IHRoaXMucmV0YWlsQW1vdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldGFpbEZyZXF1ZW5jeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmV0YWlsRnJlcXVlbmN5J10gPSB0aGlzLnJldGFpbEZyZXF1ZW5jeTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW5DcmVhdGVTdWJzY3JpcHRpb25zUmVxdWVzdFN1YnNjcmlwdGlvbkl0ZW0gaW1wbGVtZW50cyBpLkNhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0U3Vic2NyaXB0aW9uSXRlbUludGVyZmFjZSB7XG4gICAgc2t1OiBzdHJpbmc7XG4gICAgZnJlcXVlbmN5OiBlLkZyZXF1ZW5jeTtcbiAgICBxdWFudGl0eTogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3RTdWJzY3JpcHRpb25JdGVtIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc1JlcXVlc3RTdWJzY3JpcHRpb25JdGVtKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmZyZXF1ZW5jeSkge20uZnJlcXVlbmN5ID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5GcmVxdWVuY3k+KGUuRnJlcXVlbmN5LCBwcm90by5mcmVxdWVuY3kpO31cbiAgICAgICAgaWYgKHByb3RvLnF1YW50aXR5KSB7bS5xdWFudGl0eSA9IHBhcnNlSW50KHByb3RvLnF1YW50aXR5LCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNhbkNyZWF0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0U3Vic2NyaXB0aW9uSXRlbUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNrdSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2t1J10gPSB0aGlzLnNrdTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mcmVxdWVuY3kgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZyZXF1ZW5jeSddID0gdGhpcy5mcmVxdWVuY3k7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucXVhbnRpdHkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3F1YW50aXR5J10gPSB0aGlzLnF1YW50aXR5O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbGlkYXRlUmVzcG9uc2UgaW1wbGVtZW50cyBpLlZhbGlkYXRlUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHNrdTogc3RyaW5nO1xuICAgIGNvZGU6IFN1YnNjcmliZVZhbGlkYXRpb247XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBWYWxpZGF0ZVJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVmFsaWRhdGVSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5jb2RlKSB7bS5jb2RlID0gU3Vic2NyaWJlVmFsaWRhdGlvbi5mcm9tUHJvdG8ocHJvdG8uY29kZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlZhbGlkYXRlUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5za3UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NrdSddID0gdGhpcy5za3U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29kZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb2RlICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NvZGUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY29kZSA/ICh0aGlzLmNvZGUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY29kZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
|