@hmcts/ccpay-web-component 5.0.7-beta37 → 5.0.7-beta40
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/hmcts-ccpay-web-component.umd.js +285 -92
- package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
- package/esm2015/hmcts-ccpay-web-component.js +4 -4
- package/esm2015/lib/components/add-remission/add-remission.component.js +41 -3
- package/esm2015/lib/components/notification-preview/notification-preview.component.js +4 -4
- package/esm2015/lib/components/payment-view/payment-view.component.js +22 -3
- package/esm2015/lib/components/process-refund/process-refund.component.js +41 -4
- package/esm2015/lib/components/refund-status/refund-status.component.js +52 -2
- package/esm2015/lib/components/service-request/service-request.component.js +22 -3
- package/esm2015/lib/services/notification/notification.service.js +29 -1
- package/esm2015/lib/services/payment-view/payment-view.service.js +16 -8
- package/esm5/hmcts-ccpay-web-component.js +4 -4
- package/esm5/lib/components/add-remission/add-remission.component.js +46 -3
- package/esm5/lib/components/notification-preview/notification-preview.component.js +4 -4
- package/esm5/lib/components/payment-view/payment-view.component.js +25 -3
- package/esm5/lib/components/process-refund/process-refund.component.js +46 -4
- package/esm5/lib/components/refund-status/refund-status.component.js +65 -2
- package/esm5/lib/components/service-request/service-request.component.js +25 -3
- package/esm5/lib/services/notification/notification.service.js +34 -1
- package/esm5/lib/services/payment-view/payment-view.service.js +17 -9
- package/fesm2015/hmcts-ccpay-web-component.js +245 -80
- package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
- package/fesm5/hmcts-ccpay-web-component.js +287 -88
- package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
- package/hmcts-ccpay-web-component.d.ts +3 -3
- package/hmcts-ccpay-web-component.metadata.json +1 -1
- package/lib/components/add-remission/add-remission.component.d.ts +5 -1
- package/lib/components/payment-view/payment-view.component.d.ts +4 -1
- package/lib/components/process-refund/process-refund.component.d.ts +6 -1
- package/lib/components/refund-status/refund-status.component.d.ts +6 -0
- package/lib/components/service-request/service-request.component.d.ts +4 -1
- package/lib/services/notification/notification.service.d.ts +1 -0
- package/lib/services/payment-view/payment-view.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -6,13 +6,15 @@ import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angu
|
|
|
6
6
|
import { PaymentLibComponent } from '../../payment-lib.component';
|
|
7
7
|
import { Router } from '@angular/router';
|
|
8
8
|
import { PaymentViewService } from '../../services/payment-view/payment-view.service';
|
|
9
|
+
import { NotificationService } from '../../services/notification/notification.service';
|
|
9
10
|
import { OrderslistService } from '../../services/orderslist.service';
|
|
10
11
|
import { PostRefundRetroRemission } from '../../interfaces/PostRefundRetroRemission';
|
|
11
12
|
var ServiceRequestComponent = /** @class */ (function () {
|
|
12
|
-
function ServiceRequestComponent(paymentLibComponent, paymentViewService, OrderslistService, cd, router) {
|
|
13
|
+
function ServiceRequestComponent(paymentLibComponent, paymentViewService, OrderslistService, notificationService, cd, router) {
|
|
13
14
|
this.paymentLibComponent = paymentLibComponent;
|
|
14
15
|
this.paymentViewService = paymentViewService;
|
|
15
16
|
this.OrderslistService = OrderslistService;
|
|
17
|
+
this.notificationService = notificationService;
|
|
16
18
|
this.cd = cd;
|
|
17
19
|
this.router = router;
|
|
18
20
|
this.goToServiceRquestComponent = new EventEmitter();
|
|
@@ -565,6 +567,20 @@ var ServiceRequestComponent = /** @class */ (function () {
|
|
|
565
567
|
}));
|
|
566
568
|
return feesOverPayment > 0 ? feesOverPayment : this.paymentGroupList.payments[0].over_payment;
|
|
567
569
|
};
|
|
570
|
+
/**
|
|
571
|
+
* @param {?} payment
|
|
572
|
+
* @return {?}
|
|
573
|
+
*/
|
|
574
|
+
ServiceRequestComponent.prototype.getTemplateInstructionType = /**
|
|
575
|
+
* @param {?} payment
|
|
576
|
+
* @return {?}
|
|
577
|
+
*/
|
|
578
|
+
function (payment) {
|
|
579
|
+
if (payment == undefined || payment == null) {
|
|
580
|
+
return 'Template';
|
|
581
|
+
}
|
|
582
|
+
return this.notificationService.getNotificationInstructionType(payment.channel, payment.method);
|
|
583
|
+
};
|
|
568
584
|
/**
|
|
569
585
|
* @return {?}
|
|
570
586
|
*/
|
|
@@ -586,7 +602,7 @@ var ServiceRequestComponent = /** @class */ (function () {
|
|
|
586
602
|
ServiceRequestComponent.decorators = [
|
|
587
603
|
{ type: Component, args: [{
|
|
588
604
|
selector: 'ccpay-service-request',
|
|
589
|
-
template: "<!-- Order Full View Details-->\n<ng-container *ngIf=\"viewStatus === 'order-full-view'\">\n <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\" *ngIf=\"isServiceRequest === 'false'\">\n <a href=\"javascript:void(0)\" (click)=\"goToCaseTransationPage($event)\" class=\"govuk-back-link\">Back</a>\n </li>\n <li class=\"govuk-breadcrumbs__list-item\" *ngIf=\"isServiceRequest !== 'false'\">\n <a href=\"javascript:void(0)\" (click)=\"goToServiceRequestPage()\" id=\"bckLnksize\" class=\"govuk-back-link\">Back</a>\n </li>\n </ol>\n </div>\n <div class=\"govuk-grid-column-full\">\n <div class=\"column\">\n <h1 class=\"heading-large govuk-!-margin-top-0\">Service request</h1>\n </div>\n <table >\n <tbody>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Service request reference</td>\n <td>{{orderRef}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Status</td>\n <td>{{orderStatus}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Date created</td>\n <td>{{orderCreated | date:'dd MMMM yyyy'}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Party</td>\n <td>{{orderParty}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">CCD event</td>\n <td>{{orderCCDEvent}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"govuk-grid-column-full order-class\">\n <div class=\"column\">\n <table class=\"govuk-table \">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-51\" scope=\"col\" *ngIf=\"isServiceRequest === 'false'\">Fee</td>\n <td class=\"govuk-table__header col-51\" scope=\"col\" colspan=\"2\" *ngIf=\"isServiceRequest !== 'false'\">Fee</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Total</td>\n <td class=\"govuk-table__header\" scope=\"col\" *ngIf=\"isServiceRequest === 'false'\"></td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngFor=\"let order of orderDetail;\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of order.fees; let i = index;\">\n <td class=\"govuk-table__cell col-60 whitespace-inherit\" *ngIf=\"isServiceRequest === 'false'\">{{fee.description}}</td>\n <td class=\"govuk-table__cell col-60 whitespace-inherit\" colspan=\"2\" *ngIf=\"isServiceRequest !== 'false'\">{{fee.description}}</td>\n <td class=\"govuk-table__cell\">{{fee.volume? fee.volume : '-'}} X {{ fee.calculated_amount/fee.volume| currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"govuk-table__cell\">{{ fee?.net_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"govuk-table__cell alignright\" *ngIf=\"isServiceRequest === 'false'\">\n <button [disabled]=\"!chkIsAddRemissionBtnEnable(fee)\" (click)=\"addRemission(fee)\" class=\"govuk-button govuk-button--secondary\"> Add remission</button>\n </td>\n\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngFor=\"let order of orderDetail;\">\n <tr class=\"govuk-table__row\" *ngIf=\"order.fees?.length === 0\" >\n <td class=\"govuk-table__cell alignleft\" colspan=\"7\">No fees recorded</td>\n </tr>\n </tbody>\n </table>\n\n </div>\n <div class=\"maxwidth\">\n <p class=\"totalfees\">Total fees: {{orderFeesTotal | currency:'GBP':'symbol-narrow':'1.2-2' }}</p>\n </div>\n </div>\n <!-- remissions -->\n<ng-container *ngFor=\"let order of orderDetail;\" >\n <div class=\"govuk-grid-column-full order-class\" *ngIf=\"order.remissions\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Help with fees or remission code</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Reference</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Fee</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header whitespace-inherit refundBtn\" scope=\"col\"></td>\n </tr>\n </thead>\n <tbody *ngIf=\"order.remissions?.length > 0\" class=\"govuk-table__body\" >\n <tr class=\"govuk-table__row\" *ngFor=\"let remission of order.remissions\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission?.hwf_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission?.remission_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission?.fee_code }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n <td class=\"govuk-table__cell refundBtn whitespace-inherit\" >\n <button [disabled]=\"!chkIsAddRefundBtnEnable(remission)\" (click)=\"addRefundForRemission(order.payments[0],remission,order.fees)\" class=\"govuk-button govuk-button--secondary\"> Add refund</button>\n </td>\n <!-- <td class=\"govuk-table__cell refundBtn whitespace-inherit\" >\n\n </td> -->\n </tr>\n </tbody>\n\n\n </table>\n <div *ngIf=\"order.remissions?.length === 0\">\n <span >No help with fees or remissions.</span>\n </div>\n <div class=\"summarypagealign\">\n <p>Total reductions: {{orderRemissionTotal | currency:'GBP':'symbol-narrow':'1.2-2' }}</p>\n </div>\n <div class=\"summarypagealign\">\n <p class=\"summarypage\">Total fees to pay: {{(orderFeesTotal - orderRemissionTotal) | currency:'GBP':'symbol-narrow':'1.2-2' }}</p>\n </div>\n </div>\n\n\n</ng-container>\n\n\n <!--Payments-->\n <ng-container *ngFor=\"let order of orderDetail;\" >\n <div class=\"govuk-grid-column-full\" *ngIf=\"order.payments\">\n <h3 class=\"heading-medium\">Payments</h3>\n <table class=\"govuk-table \">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-25\" scope=\"col\"></td>\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\"></td>\n </tr>\n </thead>\n <tbody *ngIf=\"order.payments?.length > 0\" class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let payment of order.payments\">\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToPayementView(payment.paymentGroupReference, payment.reference, payment.method)\">Review</a>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment?.date_created | date:'dd MMM yyyy' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment?.amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"govuk-table__cell alignright\">\n <button [disabled]=\"!chkIsIssueRefundBtnEnable(payment)\" (click)=\"issueRefund(payment)\" class=\"govuk-button govuk-button--secondary\">Issue refund</button>\n </td>\n <!-- <td *ngIf=\"!chkIssueRefundBtnEnable(payment)\" class=\"govuk-table__cell\" style=\"text-align: right;\">\n </td> -->\n </tr>\n </tbody>\n </table>\n\n <div *ngIf=\"order.payments === undefined || order.payments === null\">\n <!-- <h3 class=\"heading-medium mar-17\">Payments</h3> -->\n <span class=\"mar-17\" >No Payments recorded</span>\n </div>\n</div>\n</ng-container>\n<div *ngIf=\"isServiceRequest === 'false'\">\n <div *ngIf=\"((orderFeesTotal - orderRemissionTotal)- orderTotalPayments) > 0\" >\n <p class=\"totalPay\">Total left to pay: <b>{{((orderFeesTotal - orderRemissionTotal)- orderTotalPayments )| currency:'GBP':'symbol-narrow':'1.2-2' }}</b> </p>\n </div>\n <div *ngIf=\"((orderFeesTotal - orderRemissionTotal)- orderTotalPayments) < 0\" >\n <p class=\"totalPay\">Total left to pay: <b>0</b> </p>\n </div>\n</div>\n</ng-container>\n<ccpay-add-remission *ngIf=\"viewStatus === 'addremission' && feeId\"\n[isTurnOff]=\"isTurnOff\"\n[isStrategicFixEnable]=\"isStrategicFixEnable\"\n[viewCompStatus]= \"viewStatus\"\n[fee]=\"feeId\"\n[orderStatus] =\"orderStatus\"\n[paidAmount]= \"orderTotalPayments\"\n[isRefundRemission]=\"isRefundRemission\"\n[caseType]=\"caseType\" \n[isServiceRequest] = \"isServiceRequest\"\n[paymentGroupRef]=\"orderRef\" \n[isFromServiceRequestPage] = \"true\"\n[payment] = \"payment\"\n[ccdCaseNumber]=\"ccdCaseNumber\"\n[orderRef] = \"orderRef\"\n[orderStatus] = \"orderStatus\"\n[orderCreated] = \"orderCreated\"\n[orderParty] = \"orderParty\"\n[orderCCDEvent] = \"orderCCDEvent\"\n[orderDetail] = \"orderDetail\"\n[LOGGEDINUSERROLES] = \"LOGGEDINUSERROLES\"\n[takepayment] = \"takePayment\"\n[orderFeesTotal] = \"orderFeesTotal\"\n[orderTotalPayments] = \"orderTotalPayments\"\n[orderRemissionTotal] = \"orderRemissionTotal\"\n></ccpay-add-remission>\n<ccpay-add-remission *ngIf=\"viewStatus === 'issuerefund' && payment\"\n[isTurnOff]=\"isTurnOff\"\n[isStrategicFixEnable]=\"isStrategicFixEnable\"\n[viewCompStatus]= \"viewStatus\"\n[isFromServiceRequestPage]=\"isFromServiceRequestPage\"\n[isFromPaymentDetailPage] = \"isFromPaymentDetailPage\"\n[payment]=\"payment\" \n[orderStatus] =\"orderStatus\"\n[paidAmount]= \"orderTotalPayments\"\n[isRefundRemission]=\"isRefundRemission\"\n[caseType]=\"caseType\"\n[paymentGroupRef]=\"orderRef\"\n[ccdCaseNumber]=\"ccdCaseNumber\"\n[orderRef] = \"orderRef\"\n[orderStatus] = \"orderStatus\"\n[orderCreated] = \"orderCreated\"\n[orderParty] = \"orderParty\"\n[orderCCDEvent] = \"orderCCDEvent\"\n[orderDetail] = \"orderDetail\"\n[isFullyRefund] = \"isFullyRefund\"\n[fees] = \"paymentFees\"\n[LOGGEDINUSERROLES] = \"LOGGEDINUSERROLES\"\n[isFromRefundListPage] = \"false\"\n[takepayment] = \"takePayment\"\n[orderFeesTotal] = \"orderFeesTotal\"\n[orderTotalPayments] = \"orderTotalPayments\"\n[orderRemissionTotal] = \"orderRemissionTotal\"></ccpay-add-remission>\n\n<ccpay-add-remission *ngIf=\"viewStatus === 'addrefundforremission' && payment\"\n[isTurnOff]=\"isTurnOff\"\n[isStrategicFixEnable]=\"isStrategicFixEnable\"\n[viewCompStatus]= \"viewStatus\"\n[payment]=\"payment\"\n[orderStatus] =\"orderStatus\"\n[paidAmount]= \"orderTotalPayments\"\n[isRefundRemission]=\"isRefundRemission\"\n[caseType]=\"caseType\"\n[feeamount]=\"remissionFeeAmt\"\n[remission] = \"remissions\"\n[isFromServiceRequestPage]=\"isServiceRequest\" \n[ccdCaseNumber]=\"ccdCaseNumber\"\n[orderRef] = \"orderRef\"\n[orderStatus] = \"orderStatus\"\n[orderCreated] = \"orderCreated\"\n[orderParty] = \"orderParty\"\n[orderCCDEvent] = \"orderCCDEvent\"\n[orderDetail] = \"orderDetail\"\n[LOGGEDINUSERROLES] = \"LOGGEDINUSERROLES\"\n[takepayment] = \"takePayment\"\n[orderFeesTotal] = \"orderFeesTotal\"\n[orderTotalPayments] = \"orderTotalPayments\"\n[orderRemissionTotal] = \"orderRemissionTotal\"></ccpay-add-remission>\n\n<ccpay-payment-view *ngIf=\"viewStatus === 'payment-view'\"\n[LOGGEDINUSERROLES] = \"LOGGEDINUSERROLES\"\n[isTurnOff] = \"isTurnOff\"\n[isTakePayment] = \"takePayment\"\n[caseType] = \"caseType\"\n[orderRef] = \"orderRef\"\n[orderStatus] = \"orderStatus\"\n[orderCreated] = \"orderCreated\"\n[orderParty] = \"orderParty\"\n[orderCCDEvent] = \"orderCCDEvent\"\n[orderDetail] = \"orderDetail\"\n[orderFeesTotal] = \"orderFeesTotal\"\n[orderTotalPayments] = \"orderTotalPayments\"\n[orderRemissionTotal] = \"orderRemissionTotal\"\n[isServiceRequest] = \"isServiceRequest\">\n</ccpay-payment-view>\n\n<ng-container *ngIf=\"viewStatus === 'feeRemovalConfirmation'\">\n<div class=\"govuk-warning-text\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n Are you sure you want to delete this fee?\n </strong>\n</div>\n<div class=\"govuk-button-grb\">\n <form novalidate>\n <button type=\"submit\" class=\"button govuk-button--secondary\" (click)=\"cancelRemoval()\">\n Cancel\n </button>\n <button type=\"submit\" class=\"button\"\n [disabled]=\"isRemoveBtnDisabled\"\n [ngClass]='isRemoveBtnDisabled ? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'\n (click)=\"removeFee(feeId)\">\n Remove\n </button>\n </form>\n</div>\n</ng-container>\n\n<div class=\"over-payment\">\n <ng-container *ngIf=\"viewCompStatus === 'overpayment'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='OVERPAYMENTPAGE'> \n <h1 class=\"heading-large\">Issue refund</h1>\n <h1 class=\"heading-medium\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h1>\n <span id=\"how-contacted-conditional-hint govuk-font19px\" class=\"form-hint\">\n Payment reference: {{paymentGroupList?.payments[0]?.reference}}\n </span>\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <b>\n Select payment to refund\n </b>\n </legend>\n <div class=\"govuk-radios\" data-module=\"govuk-radios\">\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"over-payment\" name=\"over-payment\" type=\"radio\" (click)=\"selectPymentOption('op')\" value=\"op\">\n <label class=\"govuk-label govuk-radios__label govuk-font19px\" for=\"where-do-you-live\">\n Over payment \u00A3{{getOverPaymentValue() | number:'.2'}}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"full-payment\" name=\"over-payment\" type=\"radio\" (click)=\"selectPymentOption('fp')\" value=\"fp\">\n <label class=\"govuk-label govuk-radios__label govuk-font19px\" for=\"where-do-you-live-2\">\n Full payment \u00A3{{paymentGroupList?.payments[0]?.amount | number:'.2'}}\n </label>\n </div>\n </div>\n <button class=\"govuk-button govuk-button--secondary over-payment-alignment govuk-font19px\"\n (click)=\"goToPaymentViewComp()\"> Previous</button>\n <button \n (click)=\"continuePayment(paymentGroupList)\"\n [disabled]=\"isContinueBtnDisabled\"\n [ngClass]='isContinueBtnDisabled ? \"button button--disabled govuk-!-margin-right-1 govuk-font19px\" : \"button govuk-!-margin-right-1 govuk-font19px\"'\n class=\"govuk-button\"> Continue</button>\n </fieldset>\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"viewCompStatus === 'overPaymentAddressCapture'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='OVERPAYMENTADDRESSCAPTUREPAGE'> \n <h1 class=\"govuk-heading-l\">Issue refund</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span id=\"how-contacted-conditional-hint\" class=\"govuk-hint govuk-font19px\">\n Payment reference: {{paymentGroupList?.payments[0]?.reference}}\n </span>\n <ccpay-contact-details \n [addressObj] = notification\n (assignContactDetails)=\"getContactDetails($event)\"\n (redirectToIssueRefund)=\"gotoPaymentSelectPage($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"goToCaseTransationPage($event)\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n </ng-container>\n \n <ng-container *ngIf=\"viewCompStatus === 'overpaymentcheckandanswer'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='ADDREFUNDFORREMISSION'> \n <div class=\"govuk-warning-text\">\n \n <h1 class=\"heading-large\"> Check your answers</h1>\n </div>\n <table class=\"govuk-table govuk-table-mb\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment reference</td>\n <td class=\"govuk-table__cell\"> {{paymentGroupList.payments[0].reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment amount</td>\n <td class=\"govuk-table__cell\">{{paymentGroupList.payments[0].amount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Fee amount</td>\n <td class=\"govuk-table__cell\">{{paymentGroupList?.fees[0]?.net_amount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund amount</td>\n <td class=\"govuk-table__cell\">{{getOverPaymentValue() | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund reason</td>\n <td class=\"govuk-table__cell\">Over payment</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send to</td>\n <td class=\"govuk-table__cell\">{{orderParty}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send via</td>\n <td class=\"govuk-table__cell\">\n <div *ngIf=\"contactDetailsObj?.notification_type === 'EMAIL'\" class=\"contactDetails-width\">\n <strong>Email</strong>\n <br/>\n {{contactDetailsObj?.email}}\n </div>\n <div *ngIf=\"contactDetailsObj?.notification_type === 'LETTER'\" class=\"contactDetails-width\">\n <strong>Post</strong>\n <br/>\n {{contactDetailsObj?.address_line}} {{contactDetailsObj?.city}} {{contactDetailsObj?.county}} {{contactDetailsObj?.country}} {{contactDetailsObj?.postal_code}}\n </div>\n <a (click)=\"gotoAddressPage(contactDetailsObj)\" class=\"govuk-link right\" >Change</a>\n </td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Notification</td>\n <td class=\"govuk-table__cell\">Template ABC\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n </tr>\n </table>\n\n <app-notification-preview *ngIf=\"notificationPreview\" \n [payment]=\"paymentGroupList.payments[0]\" \n [contactDetails]=\"contactDetailsObj\"\n [refundReason]=\"'Over payment'\"\n [refundAmount]=\"getOverPaymentValue()\"></app-notification-preview>\n\n\n <button type=\"submit\" class=\"button govuk-button--secondary over-payment-alignment govuk-font19px\" (click)=\"gotoAddressPage(contactDetailsObj)\">Previous</button>\n <button type=\"submit\"\n [ngClass]='isContinueBtnDisabled ? \"button button--disabled govuk-!-margin-right-1 govuk-font19px\" : \"button govuk-!-margin-right-1 govuk-font19px\"'\n (click)=\"processRefund()\">\n Submit refund\n </button>\n <p>\n <a href=\"javascript:void(0)\" (click)=\"goToCaseTransationPage($event)\" class=\"govuk-link govuk-font19px\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n \n </ng-container>\n <ng-container *ngIf=\"viewStatus === 'refundconfirmationpage' && viewCompStatus !== 'overpayment' && viewCompStatus !== 'overPaymentAddressCapture' && viewCompStatus !== 'overpaymentcheckandanswer'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='RETROREMISSIONREFUNDCONFIRMATIONPAGE'> \n <div class=\"govuk-grid-row\">\n <div >\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n Refund submitted\n </h1>\n \n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong>Refund reference: {{refundReference}}</strong></p>\n </div>\n \n </div>\n <h2 class=\"govuk-heading-l\">What happens next</h2>\n <p class=\"govuk-body\">\n A refund request for {{refundAmount | currency:'GBP':'symbol-narrow':'1.2-2' }} has been created and will be passed to a team leader to approve.\n </p>\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"goToCaseTransationPage($event)\" class=\"govuk-link pointer\" data-module=\"govuk-button\">\n Return to case\n </a>\n </p>\n </div>\n </div>\n \n </ng-container>\n </div>\n",
|
|
605
|
+
template: "<!-- Order Full View Details-->\n<ng-container *ngIf=\"viewStatus === 'order-full-view'\">\n <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\" *ngIf=\"isServiceRequest === 'false'\">\n <a href=\"javascript:void(0)\" (click)=\"goToCaseTransationPage($event)\" class=\"govuk-back-link\">Back</a>\n </li>\n <li class=\"govuk-breadcrumbs__list-item\" *ngIf=\"isServiceRequest !== 'false'\">\n <a href=\"javascript:void(0)\" (click)=\"goToServiceRequestPage()\" id=\"bckLnksize\" class=\"govuk-back-link\">Back</a>\n </li>\n </ol>\n </div>\n <div class=\"govuk-grid-column-full\">\n <div class=\"column\">\n <h1 class=\"heading-large govuk-!-margin-top-0\">Service request</h1>\n </div>\n <table >\n <tbody>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Service request reference</td>\n <td>{{orderRef}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Status</td>\n <td>{{orderStatus}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Date created</td>\n <td>{{orderCreated | date:'dd MMMM yyyy'}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Party</td>\n <td>{{orderParty}}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">CCD event</td>\n <td>{{orderCCDEvent}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"govuk-grid-column-full order-class\">\n <div class=\"column\">\n <table class=\"govuk-table \">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-51\" scope=\"col\" *ngIf=\"isServiceRequest === 'false'\">Fee</td>\n <td class=\"govuk-table__header col-51\" scope=\"col\" colspan=\"2\" *ngIf=\"isServiceRequest !== 'false'\">Fee</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Total</td>\n <td class=\"govuk-table__header\" scope=\"col\" *ngIf=\"isServiceRequest === 'false'\"></td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngFor=\"let order of orderDetail;\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of order.fees; let i = index;\">\n <td class=\"govuk-table__cell col-60 whitespace-inherit\" *ngIf=\"isServiceRequest === 'false'\">{{fee.description}}</td>\n <td class=\"govuk-table__cell col-60 whitespace-inherit\" colspan=\"2\" *ngIf=\"isServiceRequest !== 'false'\">{{fee.description}}</td>\n <td class=\"govuk-table__cell\">{{fee.volume? fee.volume : '-'}} X {{ fee.calculated_amount/fee.volume| currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"govuk-table__cell\">{{ fee?.net_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"govuk-table__cell alignright\" *ngIf=\"isServiceRequest === 'false'\">\n <button [disabled]=\"!chkIsAddRemissionBtnEnable(fee)\" (click)=\"addRemission(fee)\" class=\"govuk-button govuk-button--secondary\"> Add remission</button>\n </td>\n\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngFor=\"let order of orderDetail;\">\n <tr class=\"govuk-table__row\" *ngIf=\"order.fees?.length === 0\" >\n <td class=\"govuk-table__cell alignleft\" colspan=\"7\">No fees recorded</td>\n </tr>\n </tbody>\n </table>\n\n </div>\n <div class=\"maxwidth\">\n <p class=\"totalfees\">Total fees: {{orderFeesTotal | currency:'GBP':'symbol-narrow':'1.2-2' }}</p>\n </div>\n </div>\n <!-- remissions -->\n<ng-container *ngFor=\"let order of orderDetail;\" >\n <div class=\"govuk-grid-column-full order-class\" *ngIf=\"order.remissions\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Help with fees or remission code</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Reference</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Fee</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header whitespace-inherit refundBtn\" scope=\"col\"></td>\n </tr>\n </thead>\n <tbody *ngIf=\"order.remissions?.length > 0\" class=\"govuk-table__body\" >\n <tr class=\"govuk-table__row\" *ngFor=\"let remission of order.remissions\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission?.hwf_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission?.remission_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission?.fee_code }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ remission?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n <td class=\"govuk-table__cell refundBtn whitespace-inherit\" >\n <button [disabled]=\"!chkIsAddRefundBtnEnable(remission)\" (click)=\"addRefundForRemission(order.payments[0],remission,order.fees)\" class=\"govuk-button govuk-button--secondary\"> Add refund</button>\n </td>\n <!-- <td class=\"govuk-table__cell refundBtn whitespace-inherit\" >\n\n </td> -->\n </tr>\n </tbody>\n\n\n </table>\n <div *ngIf=\"order.remissions?.length === 0\">\n <span >No help with fees or remissions.</span>\n </div>\n <div class=\"summarypagealign\">\n <p>Total reductions: {{orderRemissionTotal | currency:'GBP':'symbol-narrow':'1.2-2' }}</p>\n </div>\n <div class=\"summarypagealign\">\n <p class=\"summarypage\">Total fees to pay: {{(orderFeesTotal - orderRemissionTotal) | currency:'GBP':'symbol-narrow':'1.2-2' }}</p>\n </div>\n </div>\n\n\n</ng-container>\n\n\n <!--Payments-->\n <ng-container *ngFor=\"let order of orderDetail;\" >\n <div class=\"govuk-grid-column-full\" *ngIf=\"order.payments\">\n <h3 class=\"heading-medium\">Payments</h3>\n <table class=\"govuk-table \">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-25\" scope=\"col\"></td>\n <td class=\"govuk-table__header\" scope=\"col\">Date created</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\"></td>\n </tr>\n </thead>\n <tbody *ngIf=\"order.payments?.length > 0\" class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let payment of order.payments\">\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToPayementView(payment.paymentGroupReference, payment.reference, payment.method)\">Review</a>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment?.date_created | date:'dd MMM yyyy' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ payment?.amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"govuk-table__cell alignright\">\n <button [disabled]=\"!chkIsIssueRefundBtnEnable(payment)\" (click)=\"issueRefund(payment)\" class=\"govuk-button govuk-button--secondary\">Issue refund</button>\n </td>\n <!-- <td *ngIf=\"!chkIssueRefundBtnEnable(payment)\" class=\"govuk-table__cell\" style=\"text-align: right;\">\n </td> -->\n </tr>\n </tbody>\n </table>\n\n <div *ngIf=\"order.payments === undefined || order.payments === null\">\n <!-- <h3 class=\"heading-medium mar-17\">Payments</h3> -->\n <span class=\"mar-17\" >No Payments recorded</span>\n </div>\n</div>\n</ng-container>\n<div *ngIf=\"isServiceRequest === 'false'\">\n <div *ngIf=\"((orderFeesTotal - orderRemissionTotal)- orderTotalPayments) > 0\" >\n <p class=\"totalPay\">Total left to pay: <b>{{((orderFeesTotal - orderRemissionTotal)- orderTotalPayments )| currency:'GBP':'symbol-narrow':'1.2-2' }}</b> </p>\n </div>\n <div *ngIf=\"((orderFeesTotal - orderRemissionTotal)- orderTotalPayments) < 0\" >\n <p class=\"totalPay\">Total left to pay: <b>0</b> </p>\n </div>\n</div>\n</ng-container>\n<ccpay-add-remission *ngIf=\"viewStatus === 'addremission' && feeId\"\n[isTurnOff]=\"isTurnOff\"\n[isStrategicFixEnable]=\"isStrategicFixEnable\"\n[viewCompStatus]= \"viewStatus\"\n[fee]=\"feeId\"\n[orderStatus] =\"orderStatus\"\n[paidAmount]= \"orderTotalPayments\"\n[isRefundRemission]=\"isRefundRemission\"\n[caseType]=\"caseType\" \n[isServiceRequest] = \"isServiceRequest\"\n[paymentGroupRef]=\"orderRef\" \n[isFromServiceRequestPage] = \"true\"\n[payment] = \"payment\"\n[ccdCaseNumber]=\"ccdCaseNumber\"\n[orderRef] = \"orderRef\"\n[orderStatus] = \"orderStatus\"\n[orderCreated] = \"orderCreated\"\n[orderParty] = \"orderParty\"\n[orderCCDEvent] = \"orderCCDEvent\"\n[orderDetail] = \"orderDetail\"\n[LOGGEDINUSERROLES] = \"LOGGEDINUSERROLES\"\n[takepayment] = \"takePayment\"\n[orderFeesTotal] = \"orderFeesTotal\"\n[orderTotalPayments] = \"orderTotalPayments\"\n[orderRemissionTotal] = \"orderRemissionTotal\"\n></ccpay-add-remission>\n<ccpay-add-remission *ngIf=\"viewStatus === 'issuerefund' && payment\"\n[isTurnOff]=\"isTurnOff\"\n[isStrategicFixEnable]=\"isStrategicFixEnable\"\n[viewCompStatus]= \"viewStatus\"\n[isFromServiceRequestPage]=\"isFromServiceRequestPage\"\n[isFromPaymentDetailPage] = \"isFromPaymentDetailPage\"\n[payment]=\"payment\" \n[orderStatus] =\"orderStatus\"\n[paidAmount]= \"orderTotalPayments\"\n[isRefundRemission]=\"isRefundRemission\"\n[caseType]=\"caseType\"\n[paymentGroupRef]=\"orderRef\"\n[ccdCaseNumber]=\"ccdCaseNumber\"\n[orderRef] = \"orderRef\"\n[orderStatus] = \"orderStatus\"\n[orderCreated] = \"orderCreated\"\n[orderParty] = \"orderParty\"\n[orderCCDEvent] = \"orderCCDEvent\"\n[orderDetail] = \"orderDetail\"\n[isFullyRefund] = \"isFullyRefund\"\n[fees] = \"paymentFees\"\n[LOGGEDINUSERROLES] = \"LOGGEDINUSERROLES\"\n[isFromRefundListPage] = \"false\"\n[takepayment] = \"takePayment\"\n[orderFeesTotal] = \"orderFeesTotal\"\n[orderTotalPayments] = \"orderTotalPayments\"\n[orderRemissionTotal] = \"orderRemissionTotal\"></ccpay-add-remission>\n\n<ccpay-add-remission *ngIf=\"viewStatus === 'addrefundforremission' && payment\"\n[isTurnOff]=\"isTurnOff\"\n[isStrategicFixEnable]=\"isStrategicFixEnable\"\n[viewCompStatus]= \"viewStatus\"\n[payment]=\"payment\"\n[orderStatus] =\"orderStatus\"\n[paidAmount]= \"orderTotalPayments\"\n[isRefundRemission]=\"isRefundRemission\"\n[caseType]=\"caseType\"\n[feeamount]=\"remissionFeeAmt\"\n[remission] = \"remissions\"\n[isFromServiceRequestPage]=\"isServiceRequest\" \n[ccdCaseNumber]=\"ccdCaseNumber\"\n[orderRef] = \"orderRef\"\n[orderStatus] = \"orderStatus\"\n[orderCreated] = \"orderCreated\"\n[orderParty] = \"orderParty\"\n[orderCCDEvent] = \"orderCCDEvent\"\n[orderDetail] = \"orderDetail\"\n[LOGGEDINUSERROLES] = \"LOGGEDINUSERROLES\"\n[takepayment] = \"takePayment\"\n[orderFeesTotal] = \"orderFeesTotal\"\n[orderTotalPayments] = \"orderTotalPayments\"\n[orderRemissionTotal] = \"orderRemissionTotal\"></ccpay-add-remission>\n\n<ccpay-payment-view *ngIf=\"viewStatus === 'payment-view'\"\n[LOGGEDINUSERROLES] = \"LOGGEDINUSERROLES\"\n[isTurnOff] = \"isTurnOff\"\n[isTakePayment] = \"takePayment\"\n[caseType] = \"caseType\"\n[orderRef] = \"orderRef\"\n[orderStatus] = \"orderStatus\"\n[orderCreated] = \"orderCreated\"\n[orderParty] = \"orderParty\"\n[orderCCDEvent] = \"orderCCDEvent\"\n[orderDetail] = \"orderDetail\"\n[orderFeesTotal] = \"orderFeesTotal\"\n[orderTotalPayments] = \"orderTotalPayments\"\n[orderRemissionTotal] = \"orderRemissionTotal\"\n[isServiceRequest] = \"isServiceRequest\">\n</ccpay-payment-view>\n\n<ng-container *ngIf=\"viewStatus === 'feeRemovalConfirmation'\">\n<div class=\"govuk-warning-text\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n Are you sure you want to delete this fee?\n </strong>\n</div>\n<div class=\"govuk-button-grb\">\n <form novalidate>\n <button type=\"submit\" class=\"button govuk-button--secondary\" (click)=\"cancelRemoval()\">\n Cancel\n </button>\n <button type=\"submit\" class=\"button\"\n [disabled]=\"isRemoveBtnDisabled\"\n [ngClass]='isRemoveBtnDisabled ? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'\n (click)=\"removeFee(feeId)\">\n Remove\n </button>\n </form>\n</div>\n</ng-container>\n\n<div class=\"over-payment\">\n <ng-container *ngIf=\"viewCompStatus === 'overpayment'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='OVERPAYMENTPAGE'> \n <h1 class=\"heading-large\">Issue refund</h1>\n <h1 class=\"heading-medium\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h1>\n <span id=\"how-contacted-conditional-hint govuk-font19px\" class=\"form-hint\">\n Payment reference: {{paymentGroupList?.payments[0]?.reference}}\n </span>\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <b>\n Select payment to refund\n </b>\n </legend>\n <div class=\"govuk-radios\" data-module=\"govuk-radios\">\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"over-payment\" name=\"over-payment\" type=\"radio\" (click)=\"selectPymentOption('op')\" value=\"op\">\n <label class=\"govuk-label govuk-radios__label govuk-font19px\" for=\"where-do-you-live\">\n Over payment \u00A3{{getOverPaymentValue() | number:'.2'}}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"full-payment\" name=\"over-payment\" type=\"radio\" (click)=\"selectPymentOption('fp')\" value=\"fp\">\n <label class=\"govuk-label govuk-radios__label govuk-font19px\" for=\"where-do-you-live-2\">\n Full payment \u00A3{{paymentGroupList?.payments[0]?.amount | number:'.2'}}\n </label>\n </div>\n </div>\n <button class=\"govuk-button govuk-button--secondary over-payment-alignment govuk-font19px\"\n (click)=\"goToPaymentViewComp()\"> Previous</button>\n <button \n (click)=\"continuePayment(paymentGroupList)\"\n [disabled]=\"isContinueBtnDisabled\"\n [ngClass]='isContinueBtnDisabled ? \"button button--disabled govuk-!-margin-right-1 govuk-font19px\" : \"button govuk-!-margin-right-1 govuk-font19px\"'\n class=\"govuk-button\"> Continue</button>\n </fieldset>\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"viewCompStatus === 'overPaymentAddressCapture'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='OVERPAYMENTADDRESSCAPTUREPAGE'> \n <h1 class=\"govuk-heading-l\">Issue refund</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span id=\"how-contacted-conditional-hint\" class=\"govuk-hint govuk-font19px\">\n Payment reference: {{paymentGroupList?.payments[0]?.reference}}\n </span>\n <ccpay-contact-details \n [addressObj] = notification\n (assignContactDetails)=\"getContactDetails($event)\"\n (redirectToIssueRefund)=\"gotoPaymentSelectPage($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"goToCaseTransationPage($event)\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n </ng-container>\n \n <ng-container *ngIf=\"viewCompStatus === 'overpaymentcheckandanswer'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='ADDREFUNDFORREMISSION'> \n <div class=\"govuk-warning-text\">\n \n <h1 class=\"heading-large\"> Check your answers</h1>\n </div>\n <table class=\"govuk-table govuk-table-mb\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment reference</td>\n <td class=\"govuk-table__cell\"> {{paymentGroupList.payments[0].reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment amount</td>\n <td class=\"govuk-table__cell\">{{paymentGroupList.payments[0].amount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Fee amount</td>\n <td class=\"govuk-table__cell\">{{paymentGroupList?.fees[0]?.net_amount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund amount</td>\n <td class=\"govuk-table__cell\">{{getOverPaymentValue() | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund reason</td>\n <td class=\"govuk-table__cell\">Over payment</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send to</td>\n <td class=\"govuk-table__cell\">{{orderParty}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send via</td>\n <td class=\"govuk-table__cell\">\n <div *ngIf=\"contactDetailsObj?.notification_type === 'EMAIL'\" class=\"contactDetails-width\">\n <strong>Email</strong>\n <br/>\n {{contactDetailsObj?.email}}\n </div>\n <div *ngIf=\"contactDetailsObj?.notification_type === 'LETTER'\" class=\"contactDetails-width\">\n <strong>Post</strong>\n <br/>\n {{contactDetailsObj?.address_line}} {{contactDetailsObj?.city}} {{contactDetailsObj?.county}} {{contactDetailsObj?.country}} {{contactDetailsObj?.postal_code}}\n </div>\n <a (click)=\"gotoAddressPage(contactDetailsObj)\" class=\"govuk-link right\" >Change</a>\n </td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Notification</td>\n <td class=\"govuk-table__cell\">{{getTemplateInstructionType(paymentGroupList.payments[0])}}\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n </tr>\n </table>\n\n <app-notification-preview *ngIf=\"notificationPreview\" \n [payment]=\"paymentGroupList.payments[0]\" \n [contactDetails]=\"contactDetailsObj\"\n [refundReason]=\"'Over payment'\"\n [refundAmount]=\"getOverPaymentValue()\"></app-notification-preview>\n\n\n <button type=\"submit\" class=\"button govuk-button--secondary over-payment-alignment govuk-font19px\" (click)=\"gotoAddressPage(contactDetailsObj)\">Previous</button>\n <button type=\"submit\"\n [ngClass]='isContinueBtnDisabled ? \"button button--disabled govuk-!-margin-right-1 govuk-font19px\" : \"button govuk-!-margin-right-1 govuk-font19px\"'\n (click)=\"processRefund()\">\n Submit refund\n </button>\n <p>\n <a href=\"javascript:void(0)\" (click)=\"goToCaseTransationPage($event)\" class=\"govuk-link govuk-font19px\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n \n </ng-container>\n <ng-container *ngIf=\"viewStatus === 'refundconfirmationpage' && viewCompStatus !== 'overpayment' && viewCompStatus !== 'overPaymentAddressCapture' && viewCompStatus !== 'overpaymentcheckandanswer'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='RETROREMISSIONREFUNDCONFIRMATIONPAGE'> \n <div class=\"govuk-grid-row\">\n <div >\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n Refund submitted\n </h1>\n \n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong>Refund reference: {{refundReference}}</strong></p>\n </div>\n \n </div>\n <h2 class=\"govuk-heading-l\">What happens next</h2>\n <p class=\"govuk-body\">\n A refund request for {{refundAmount | currency:'GBP':'symbol-narrow':'1.2-2' }} has been created and will be passed to a team leader to approve.\n </p>\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"goToCaseTransationPage($event)\" class=\"govuk-link pointer\" data-module=\"govuk-button\">\n Return to case\n </a>\n </p>\n </div>\n </div>\n \n </ng-container>\n </div>\n",
|
|
590
606
|
styles: [".govuk-grid-column-full--gr{position:relative;margin-bottom:10px}.disable{text-decoration:none;cursor:default;color:#fff;background-color:grey;pointer-events:none}.govuk-grid__surplus-payments{margin:20px 0}.govuk-grid__surplus-payments>.govuk-grid-column-full{padding:0}.govuk-grid__surplus-payments-col1{margin-bottom:10px}.govuk-inset-text__no-border{border-left:0}.govuk-hidetext{font-size:22px;padding-bottom:10px}.lowercase{text-transform:lowercase}.channel::first-letter{text-transform:uppercase}.govuk-heading-xl{font-size:48px;margin-bottom:1px}.govuk-section-break--visible{border-bottom:2px solid #000}.totalpayments.govuk-table__row{border-bottom:2px solid #000!important}.govuk-inset-text{margin-left:1em}.govuk-button{font-size:19px;margin-bottom:0!important}.govuk-table__cell.govuk-table__cell--col6.govuk-table__custom--col6,.groupamount.govuk-table__header{text-align:right}.feeclass{padding-left:.7em}.align-center{text-align:center}details summary{display:list-item}.case-transaction__color{color:#a71414;font-weight:700;text-align:center}.capitalize::first-letter{text-transform:uppercase}.govuk-inset-text__no-left-margin{margin-left:0;padding-left:0}.whitespace-inherit{white-space:inherit!important}.govuk-section-records-break{margin:10px;border-bottom:2px solid #000!important}.exisitng-fees{margin-left:12px}.add-telephony-payment{margin-top:-2em;margin-left:-2em}.govuk-table__header--custom{text-align:center}.disable-link{cursor:default;pointer-events:none;color:#8e8c8c}.panel-no--style{border-left-style:none}.col-28{width:28%!important}.col-8{width:8%!important}.col-60{width:60%!important}.col-32{width:32%!important}.col-34{width:34%!important}#bckLnksize{font-size:16px!important}.col-15{width:15%!important;padding-right:0!important;padding-left:0!important}.col-16{width:16%!important}.col-14{width:14%!important}.col-17{width:17%!important}.col-12{width:12%!important}.col-9{width:9%!important}.col-10{width:10%!important}.col-11{width:11%!important}.col-13{width:13%!important}.col-21{width:21%!important}.col-20{width:20%!important}.col-24{width:24%!important}.govuk-table__cell,.govuk-table__header{padding:10px 10px 10px 0}.col-27{width:27%!important}td{white-space:nowrap;overflow:hidden!important}.col-19{width:19%!important;padding-left:0!important}.col-18{width:18%!important;padding-left:0!important;padding-right:0!important}.col-37{width:37%!important}.col-55{width:55%!important}.govuk-table{margin-bottom:1px}.hmcts-banner>.hmcts-banner__message{font-size:19px;line-height:1.25}.summary-table-font{font-size:36px}.order-class{padding-top:3em}.govuk-table__cell:last-child,.govuk-table__header:last-child{text-align:right}.govuk-grid-column-two-thirds{width:64%!important;padding:0!important}.govuk-heading-l{font-size:36px;margin-bottom:10px}.paymentrequest{margin-top:1em}.mar-17{margin-left:17px}.col-61{width:61px!important;padding:0!important}.error{width:960px;margin:auto}.summarypage{padding-left:36em;margin-top:2em}.summarypagealign{width:100%;text-align:right;margin-top:2em}.govuk-inset-text{font-size:2.1875rem}table{table-layout:fixed;width:100%}td,th{word-wrap:break-word}.totalPay{padding-right:14px;float:right;margin-top:2em}.govuk-back-link{font-size:1.5rem!important}.totalfees{float:right;margin-top:2em}.refundBtn{text-align:right;width:18%}.col-25{width:25%!important}.col-51{width:51%!important}.alignright{text-align:right}.alignleft{text-align:left}.alignself{align-self:flex-end}.maxwidth{width:100%}.over-payment .govuk-table-mb{margin-bottom:20px}.over-payment .contactDetails-width{width:70%}.over-payment .margin-top10px{margin-top:20px}.over-payment .govuk-font19px{font-size:19px!important}.over-payment .margin-top--size{margin-top:-30px}.over-payment .over-payment-alignment{margin-right:10px}.over-payment .govuk-button{font-size:19px;float:left;margin-top:2em}.over-payment td.govuk-table__cell{width:50%;text-align:left}.over-payment .govuk-label--s,.over-payment .govuk-warning-text__text,.over-payment .hmcts-currency-input__symbol{font-size:19px;font-weight:400}.over-payment .inline-error-class{outline:#a71414 solid 3px;outline-offset:0;border-color:#a71414}.over-payment .inline-error-message{color:#a71414;border-color:#a71414;font-weight:700;margin-top:10px;font-size:20px}.over-payment .govuk-button-group{padding-top:2em}.over-payment .heading-medium{margin-top:.875em}.over-payment .heading-large{margin-top:.25em}.over-payment .govuk-panel--confirmation{color:#fff;background:#00703c}.over-payment .govuk-panel__title{font-size:5rem}.over-payment .govuk-body,.over-payment .govuk-body-m{font-size:2.1875rem}.over-payment .govuk-link{cursor:pointer}.over-payment .govuk-radios__conditional{padding-top:12px!important}.over-payment .right{float:right;cursor:pointer}.over-payment .radio{float:right}.over-payment .white{color:#fff}"]
|
|
591
607
|
}] }
|
|
592
608
|
];
|
|
@@ -595,6 +611,7 @@ var ServiceRequestComponent = /** @class */ (function () {
|
|
|
595
611
|
{ type: PaymentLibComponent },
|
|
596
612
|
{ type: PaymentViewService },
|
|
597
613
|
{ type: OrderslistService },
|
|
614
|
+
{ type: NotificationService },
|
|
598
615
|
{ type: ChangeDetectorRef },
|
|
599
616
|
{ type: Router }
|
|
600
617
|
]; };
|
|
@@ -799,6 +816,11 @@ if (false) {
|
|
|
799
816
|
* @private
|
|
800
817
|
*/
|
|
801
818
|
ServiceRequestComponent.prototype.OrderslistService;
|
|
819
|
+
/**
|
|
820
|
+
* @type {?}
|
|
821
|
+
* @private
|
|
822
|
+
*/
|
|
823
|
+
ServiceRequestComponent.prototype.notificationService;
|
|
802
824
|
/**
|
|
803
825
|
* @type {?}
|
|
804
826
|
* @private
|
|
@@ -810,4 +832,4 @@ if (false) {
|
|
|
810
832
|
*/
|
|
811
833
|
ServiceRequestComponent.prototype.router;
|
|
812
834
|
}
|
|
813
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9jY3BheS13ZWItY29tcG9uZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvc2VydmljZS1yZXF1ZXN0L3NlcnZpY2UtcmVxdWVzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXJGO0lBMkZFLGlDQUNVLG1CQUF3QyxFQUN4QyxrQkFBc0MsRUFDdEMsaUJBQW9DLEVBQ3BDLEVBQXFCLEVBQ3JCLE1BQWM7UUFKZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBM0VkLCtCQUEwQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTTdFLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFDN0IsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFDN0IsZUFBVSxHQUFpQixFQUFFLENBQUM7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SUFDeEMsMkRBQTBDOztJQUMxQyw2REFBNEM7O0lBQzVDLDZEQUE2RTs7SUFDN0UsMkRBQWtDOztJQUNsQyxpREFBdUI7O0lBQ3ZCLGtEQUF3Qjs7SUFDeEIsd0RBQXNDOztJQUN0QyxnREFBdUI7O0lBQ3ZCLHNEQUE2Qjs7Ozs7SUFHM0Isc0RBQWdEOzs7OztJQUNoRCxxREFBOEM7Ozs7O0lBQzlDLG9EQUE0Qzs7Ozs7SUFDNUMscUNBQTZCOzs7OztJQUM3Qix5Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUSElTX0VYUFIgfSBmcm9tICdAYW5ndWxhci9jb21waWxlci9zcmMvb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBheW1lbnRMaWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSVBheW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50JztcbmltcG9ydCB7IElSZW1pc3Npb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZW1pc3Npb24nO1xuaW1wb3J0IHsgSVBheW1lbnRWaWV3IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudFZpZXcnO1xuaW1wb3J0IHsgSU9yZGVyUmVmZXJlbmNlRmVlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JT3JkZXJSZWZlcmVuY2VGZWUnO1xuaW1wb3J0IHsgSUZlZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUZlZSc7XG5pbXBvcnQgeyBJUGF5bWVudEdyb3VwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQYXltZW50Vmlld1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJzbGlzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVJlZnVuZENvbnRhY3REZXRhaWxzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kQ29udGFjdERldGFpbHMnO1xuaW1wb3J0IHsgUG9zdFJlZnVuZFJldHJvUmVtaXNzaW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9Qb3N0UmVmdW5kUmV0cm9SZW1pc3Npb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY3BheS1zZXJ2aWNlLXJlcXVlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZVJlcXVlc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ0xPR0dFRElOVVNFUlJPTEVTJykgTE9HR0VESU5VU0VSUk9MRVM6IHN0cmluZ1tdO1xuICBASW5wdXQoJ3ZpZXdTdGF0dXMnKSB2aWV3U3RhdHVzOiBzdHJpbmc7XG4gIEBJbnB1dCgnb3JkZXJEZXRhaWwnKSBvcmRlckRldGFpbDogYW55W107XG4gIEBJbnB1dCgnb3JkZXJSZWYnKSBvcmRlclJlZjogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyU3RhdHVzJykgb3JkZXJTdGF0dXM6IHN0cmluZztcbiAgQElucHV0KCdvcmRlclBhcnR5Jykgb3JkZXJQYXJ0eTogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyQ3JlYXRlZCcpIG9yZGVyQ3JlYXRlZDogRGF0ZTtcbiAgQElucHV0KCdvcmRlckNDREV2ZW50Jykgb3JkZXJDQ0RFdmVudDogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyRmVlc1RvdGFsJykgb3JkZXJGZWVzVG90YWw6IG51bWJlcjtcbiAgQElucHV0KCdvcmRlclRvdGFsUGF5bWVudHMnKSBvcmRlclRvdGFsUGF5bWVudHM6IG51bWJlcjtcbiAgQElucHV0KCdvcmRlclJlbWlzc2lvblRvdGFsJykgb3JkZXJSZW1pc3Npb25Ub3RhbDogbnVtYmVyO1xuICBASW5wdXQoJ3BheW1lbnRHcm91cExpc3QnKSBwYXltZW50R3JvdXBMaXN0OiBJUGF5bWVudEdyb3VwO1xuICBASW5wdXQoJ3Rha2VQYXltZW50JykgdGFrZVBheW1lbnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgnY2NkQ2FzZU51bWJlcicpIGNjZENhc2VOdW1iZXI6IGJvb2xlYW47XG4gIEBJbnB1dChcImlzU2VydmljZVJlcXVlc3RcIikgaXNTZXJ2aWNlUmVxdWVzdDogc3RyaW5nO1xuICBAT3V0cHV0KCkgZ29Ub1NlcnZpY2VScXVlc3RDb21wb25lbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHZpZXdDb21wU3RhdHVzO1xuICBzZXJ2aWNlcmVxdWVzdDogc3RyaW5nO1xuICBwYXltZW50VHlwZTogc3RyaW5nO1xuICBleGNSZWZlcmVuY2U6IHN0cmluZztcbiAgcGF5bWVudEdyb3VwczogYW55W10gPSBbXTtcbiAgcGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgbm9uUGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgYWxsUGF5bWVudHM6IElQYXltZW50W10gPSBbXTtcbiAgcmVtaXNzaW9uczogSVJlbWlzc2lvbltdID0gW107XG4gIHBheW1lbnRGZWVzOiBJRmVlW107XG4gIGZlZXM6IGFueTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIHRvdGFsRmVlczogbnVtYmVyO1xuICB0b3RhbFBheW1lbnRzOiBudW1iZXI7XG4gIHRvdGFsTm9uT2ZmUGF5bWVudHM6IG51bWJlcjtcbiAgdG90YWxSZW1pc3Npb25zOiBudW1iZXI7XG4gIHNlbGVjdGVkT3B0aW9uOiBzdHJpbmc7XG4gIGRjbk51bWJlcjogc3RyaW5nO1xuICBwYXltZW50UmVmOiBzdHJpbmc7XG4gIGlzVHVybk9mZjogYm9vbGVhbjtcbiAgaXNSZWZ1bmRSZW1pc3Npb246IGJvb2xlYW4gPSB0cnVlO1xuICBpc1N0cmF0ZWdpY0ZpeEVuYWJsZTogYm9vbGVhbjtcbiAgaXNBZGRGZWVCdG5FbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNFeGNlcHRpb25SZWNvcmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNVbnByb2Nlc3NlZFJlY29yZFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGV4Y2VwdGlvblJlY29yZFJlZmVyZW5jZTogc3RyaW5nO1xuICBpc0FueUZlZUdyb3VwQXZpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0hpc3RvcmljR3JvdXBBdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNCdWxrU2NhbkVuYWJsZTtcbiAgaXNSZW1pc3Npb25zTWF0Y2g6IGJvb2xlYW47XG4gIGlzUmVtb3ZlQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmVlSWQ6IElGZWU7XG4gIGNsQW1vdW50RHVlOiBudW1iZXIgPSAwO1xuICB1bnByb2Nlc3NlZFJlY29yZENvdW50OiBudW1iZXI7XG4gIGlzRmVlUmVjb3Jkc0V4aXN0OiBib29sZWFuID0gZmFsc2U7XG4gIGlzR3JwT3V0c3RhbmRpbmdBbXRQb3NpdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0b3RhbFJlZnVuZEFtb3VudDogTnVtYmVyO1xuICBjYXNlVHlwZTogU3RyaW5nO1xuICBpc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkOiBib29sZWFuO1xuICByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZztcbiAgcmVmdW5kQW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnQ6IElQYXltZW50O1xuICBwYXltZW50R3JvdXA6IElQYXltZW50R3JvdXA7XG4gIHBheW1lbnRWaWV3OiBJUGF5bWVudFZpZXc7XG5cbiAgaXNBZGRSZW1pc3Npb25FbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3JkZXJSZW1pc3Npb25EZXRhaWxzOiBhbnlbXSA9IFtdO1xuICBvcmRlckxldmVsRmVlczogSU9yZGVyUmVmZXJlbmNlRmVlW10gPSBbXTtcbiAgY3BvRGV0YWlsczogYW55ID0gbnVsbDtcbiAgc2VydmljZVJlcXVlc3RWYWx1ZTogc3RyaW5nO1xuICBvcmRlckFkZEJ0bkVuYWJsZTogYm9vbGVhbjtcbiAgaXNGcm9tUGF5bWVudERldGFpbFBhZ2U6IGJvb2xlYW47XG4gIGNvbnRhY3REZXRhaWxzT2JqOiBJUmVmdW5kQ29udGFjdERldGFpbHNcbiAgbm90aWZpY2F0aW9uOiBhbnk7XG4gIGlzQ1BPRG93bjogYm9vbGVhbjtcbiAgdGVzdDogYm9vbGVhbjtcbiAgaXNQQkE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNJc3N1ZVJlZnVuZkJ0bkVuYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZWZ1bmRSZW1pc3Npb25CdG5FbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWxsb3dlZFJvbGVzVG9BY2Nlc3NSZWZ1bmQgPSBbJ3BheW1lbnRzLXJlZnVuZC1hcHByb3ZlcicsICdwYXltZW50cy1yZWZ1bmQnXTtcbiAgaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlOiBib29sZWFuO1xuICBuYXZpZ2F0aW9ucGFnZTogc3RyaW5nO1xuICByZW1pc3Npb25GZWVBbXQ6IG51bWJlcjtcbiAgaXNDb250aW51ZUJ0bkRpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNGdWxseVJlZnVuZDogYm9vbGVhbjtcbiAgbm90aWZpY2F0aW9uUHJldmlldzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBwYXltZW50Vmlld1NlcnZpY2U6IFBheW1lbnRWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIE9yZGVyc2xpc3RTZXJ2aWNlOiBPcmRlcnNsaXN0U2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzVHVybk9mZiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1RVUk5PRkY7XG4gICAgdGhpcy5pc1NlcnZpY2VSZXF1ZXN0ID0gJ2ZhbHNlJztcbiAgICBpZiAodGhpcy52aWV3U3RhdHVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZTtcbiAgICB9XG4gICAgaWYodGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSAmJiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUGF5bWVudERldGFpbFBhZ2UpIHtcbiAgICAgIGlmKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSAmJiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlKSB7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyUmVmcygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlclJlZiA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlckNDREV2ZW50cygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlckNDREV2ZW50ID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyQ3JlYXRlZHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJDcmVhdGVkID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyRGV0YWlsKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyRGV0YWlsID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyUGFydHlzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyUGFydHkgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJSZW1pc3Npb25Ub3RhbHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJSZW1pc3Npb25Ub3RhbCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlckZlZXNUb3RhbHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJGZWVzVG90YWwgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b29yZGVyVG90YWxQYXltZW50c3MoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJUb3RhbFBheW1lbnRzID0gZGF0YSk7XG4gICAgfVxuICAgXG4gICAgXG4gICAgfVxuICAgIGlmKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgJiYgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UKSB7XG4gICAgICB0aGlzLmlzU2VydmljZVJlcXVlc3QgPSAnZmFsc2UnO1xuICAgIH1cblxuXG4gIH1cbiAgZ29Ub1NlcnZpY2VSZXF1ZXN0UGFnZSgpIHtcbiAgICB0aGlzLmdvVG9TZXJ2aWNlUnF1ZXN0Q29tcG9uZW50LmVtaXQoKTtcbiAgfVxuXG4gIGdvVG9DYXNlVHJhbnNhdGlvblBhZ2UoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRuYXZpZ2F0aW9uUGFnZSgnc2VydmljZXJlcXVlc3RwYWdlJyk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UoZmFsc2UpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1Rha2VQYXltZW50ID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UO1xuICAgIGlmICh0aGlzLnRha2VQYXltZW50KSB7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNUYWtlUGF5bWVudCA9IHRoaXMudGFrZVBheW1lbnQ7XG4gICAgfVxuICAgIC8vdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlNFUlZJQ0VSRVFVRVNUID0gXCJ0cnVlXCI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IGZhbHNlO1xuICAgIGlmKHRoaXMuaXNTZXJ2aWNlUmVxdWVzdCAhPT0gJ2ZhbHNlJykge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21SZWZ1bmRTdGF0dXNQYWdlID0gZmFsc2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnJlc2V0T3JkZXJEYXRhKCk7XG4gICBsZXQgIHBhcnRVcmwgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA/ICcmaXNCdWxrU2Nhbm5pbmc9RW5hYmxlJyA6ICcmaXNCdWxrU2Nhbm5pbmc9RGlzYWJsZSc7XG4gICAgcGFydFVybCArPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNUVVJOT0ZGID8gJyZpc1R1cm5PZmY9RW5hYmxlJyA6ICcmaXNUdXJuT2ZmPURpc2FibGUnO1xuICAgIGlmKHRoaXMuaXNTZXJ2aWNlUmVxdWVzdCA9PT0gJ2ZhbHNlJykge1xuICAgICAgcGFydFVybCArPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPyAnJnRha2VQYXltZW50PXRydWUnIDogJyZ0YWtlUGF5bWVudD1mYWxzZSc7XG4gICAgfVxuICAgIHBhcnRVcmwgKz0gdGhpcy5pc1N0cmF0ZWdpY0ZpeEVuYWJsZSA/ICcmaXNTdEZpeEVuYWJsZT1FbmFibGUnIDogJyZpc1N0Rml4RW5hYmxlPURpc2FibGUnO1xuICAgIHBhcnRVcmwgKz0gdGhpcy5pc1NlcnZpY2VSZXF1ZXN0ICE9PSAnZmFsc2UnID8gJyZzZXJ2aWNlcmVxdWVzdD10cnVlJyA6ICcmc2VydmljZXJlcXVlc3Q9ZmFsc2UnO1xuICAgIHBhcnRVcmwgKz0gYCZjYXNlVHlwZT0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQVNFVFlQRX1gO1xuICAgIGNvbnN0IHVybCA9IGAvcGF5bWVudC1oaXN0b3J5LyR7dGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUn0/dmlldz1jYXNlLXRyYW5zYWN0aW9ucyZzZWxlY3RlZE9wdGlvbj0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRUxFQ1RFRF9PUFRJT059JHtwYXJ0VXJsfWA7XG4gICAgICB0aGlzLnJvdXRlci5yb3V0ZVJldXNlU3RyYXRlZ3kuc2hvdWxkUmV1c2VSb3V0ZSA9ICgpID0+IGZhbHNlO1xuICAgICAgdGhpcy5yb3V0ZXIub25TYW1lVXJsTmF2aWdhdGlvbiA9ICdyZWxvYWQnO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICB9XG5cbiAgYWRkUmVtaXNzaW9uKGZlZTogSUZlZSkge1xuICAgIGlmKHRoaXMuY2hrSXNBZGRSZW1pc3Npb25CdG5FbmFibGUoZmVlKSkge1xuICAgIHRoaXMuZmVlSWQgPSBmZWU7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ2FkZHJlbWlzc2lvbic7XG4gICAgdGhpcy5wYXltZW50ID0gdGhpcy5vcmRlckRldGFpbFswXS5wYXltZW50c1swXTtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRBcHBvcnRpb25QYXltZW50RGV0YWlscyh0aGlzLm9yZGVyRGV0YWlsWzBdLnBheW1lbnRzWzBdLnJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgcGF5bWVudEdyb3VwID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50R3JvdXA7XG5cbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9ialsncmVmZXJlbmNlJ10uaW5jbHVkZXModGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRSZWZlcmVuY2UpKTtcbiAgICAgICAgdGhpcy5wYXltZW50ID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF07XG4gICAgICAgXG4gICAgICAgICAgLy8gIGNvbnN0IHBheW1lbnRBbGxvY2F0aW9uID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0ucGF5bWVudF9hbGxvY2F0aW9uO1xuICAgICAgICAgIC8vICB0aGlzLmlzU3RhdHVzQWxsb2NhdGVkID0gcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID4gMCAmJiBwYXltZW50QWxsb2NhdGlvblswXS5hbGxvY2F0aW9uX3N0YXR1cyA9PT0gJ0FsbG9jYXRlZCcgfHwgcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID09PSAwO1xuICAgICAgICBcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4gdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5yZXBsYWNlKC9cIi9nLFwiXCIpXG4gICAgKTtcbiAgfVxuICB9XG5cbiAgYWRkUmVmdW5kRm9yUmVtaXNzaW9uKHBheW1lbnQ6IElQYXltZW50LCByZW1pc3Npb246IElSZW1pc3Npb25bXSxmZWVzOmFueSkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEFwcG9ydGlvblBheW1lbnREZXRhaWxzKHBheW1lbnQucmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRHcm91cCA9IHBheW1lbnRHcm91cDtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9iai5yZWZlcmVuY2UgPT09IHBheW1lbnQucmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy5wYXltZW50ID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF07XG4gICAgICAgIHRoaXMucmVtaXNzaW9ucyA9IHJlbWlzc2lvbjtcbiAgICAgICAgdGhpcy5yZW1pc3Npb25GZWVBbXQgPSBmZWVzLmZpbHRlcihkYXRhPT5kYXRhLmNvZGUgPT09IHRoaXMucmVtaXNzaW9uc1snZmVlX2NvZGUnXSlbMF0ubmV0X2Ftb3VudDtcbiAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2FkZHJlZnVuZGZvcnJlbWlzc2lvbic7XG4gICAgICAgIC8vIGNvbnN0IHBheW1lbnRBbGxvY2F0aW9uID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0ucGF5bWVudF9hbGxvY2F0aW9uO1xuICAgICAgICAvLyB0aGlzLmlzU3RhdHVzQWxsb2NhdGVkID0gcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID4gMCAmJiBwYXltZW50QWxsb2NhdGlvblswXS5hbGxvY2F0aW9uX3N0YXR1cyA9PT0gJ0FsbG9jYXRlZCcgfHwgcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID09PSAwO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgKTtcbiAgfVxuICBjYW5jZWxSZW1vdmFsKCkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdtYWluJztcbiAgfVxuXG4gIHJlbW92ZUZlZShmZWU6IGFueSkge1xuICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZGVsZXRlRmVlRnJvbVBheW1lbnRHcm91cChmZWUpLnN1YnNjcmliZShcbiAgICAgIChzdWNjZXNzOiBhbnkpID0+IHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3I7XG4gICAgICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBpc3N1ZVJlZnVuZChwYXltZW50OiBJUGF5bWVudCkge1xuICAgIGlmIChwYXltZW50ICE9PSBudWxsICYmIHBheW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYoIHRoaXMuY2hrSXNJc3N1ZVJlZnVuZEJ0bkVuYWJsZShwYXltZW50KSkge1xuICAgICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRBcHBvcnRpb25QYXltZW50RGV0YWlscyhwYXltZW50LnJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICAgIHBheW1lbnRHcm91cC5wYXltZW50cyA9IHBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9ialsncmVmZXJlbmNlJ10uaW5jbHVkZXMocGF5bWVudC5yZWZlcmVuY2UpKTtcbiAgICAgICAgICBpZihwYXltZW50Lm92ZXJfcGF5bWVudCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5wYXltZW50ID0gcGF5bWVudDtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudEdyb3VwTGlzdCA9IHBheW1lbnRHcm91cDtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbXBTdGF0dXMgID0gJ292ZXJwYXltZW50JztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2lzc3VlcmVmdW5kJztcbiAgICAgICAgICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnJztcbiAgICAgICAgICAgIHRoaXMucGF5bWVudEZlZXMgPSBwYXltZW50R3JvdXAuZmVlcztcbiAgICAgICAgICAgIHRoaXMucGF5bWVudCA9IHBheW1lbnQ7XG4gICAgICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNSZWZ1bmRSZW1pc3Npb24gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnb1RvUGF5ZW1lbnRWaWV3KHBheW1lbnRHcm91cFJlZmVyZW5jZTogc3RyaW5nLCBwYXltZW50UmVmZXJlbmNlOiBzdHJpbmcsIHBheW1lbnRNZXRob2Q6IHN0cmluZykge1xuICAgIHRoaXMuZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KHsgcGF5bWVudEdyb3VwUmVmZXJlbmNlLCBwYXltZW50UmVmZXJlbmNlLCBwYXltZW50TWV0aG9kIH0pO1xuICB9XG5cbiAgZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KHBheW1lbnRHcm91cDogYW55KSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRNZXRob2QgPSBwYXltZW50R3JvdXAucGF5bWVudE1ldGhvZDtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlID0gcGF5bWVudEdyb3VwLnBheW1lbnRHcm91cFJlZmVyZW5jZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudFJlZmVyZW5jZSA9IHBheW1lbnRHcm91cC5wYXltZW50UmVmZXJlbmNlO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0T3JkZXJSZWYodGhpcy5vcmRlclJlZik7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckNDREV2ZW50KHRoaXMub3JkZXJDQ0RFdmVudCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckNyZWF0ZWQodGhpcy5vcmRlckNyZWF0ZWQpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJEZXRhaWwodGhpcy5vcmRlckRldGFpbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlclBhcnR5KHRoaXMub3JkZXJQYXJ0eSk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlclRvdGFsUGF5bWVudHModGhpcy5vcmRlclRvdGFsUGF5bWVudHMpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJSZW1pc3Npb25Ub3RhbCh0aGlzLm9yZGVyUmVtaXNzaW9uVG90YWwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJGZWVzVG90YWwodGhpcy5vcmRlckZlZXNUb3RhbCk7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ3BheW1lbnQtdmlldyc7XG4gIH1cblxuICBjaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnQ6IElQYXltZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKHBheW1lbnQgIT09IG51bGwgJiYgcGF5bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcGF5bWVudC5pc3N1ZV9yZWZ1bmQgJiYgcGF5bWVudC5yZWZ1bmRfZW5hYmxlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjaGtJc0FkZFJlZnVuZEJ0bkVuYWJsZShyZW1pc3Npb246IElSZW1pc3Npb24pOiBib29sZWFuIHtcbiAgICBpZiAocmVtaXNzaW9uICE9PSBudWxsICYmIHJlbWlzc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcmVtaXNzaW9uLmFkZF9yZWZ1bmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjaGtJc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZShmZWU6IElGZWUpOiBib29sZWFuIHtcbiAgICBpZiAoZmVlICE9PSBudWxsICYmIGZlZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmVlLmFkZF9yZW1pc3Npb24gJiYgZmVlLnJlbWlzc2lvbl9lbmFibGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXNldE9yZGVyRGF0YSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldE9yZGVyUmVmKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJDQ0RFdmVudChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyQ3JlYXRlZChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyRGV0YWlsKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJQYXJ0eShudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyVG90YWxQYXltZW50cyhudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyUmVtaXNzaW9uVG90YWwobnVsbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckZlZXNUb3RhbChudWxsKTtcbiAgfVxuXG4gIHNlbGVjdFB5bWVudE9wdGlvbihwYXltZW50VHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXltZW50VHlwZSA9IHBheW1lbnRUeXBlO1xuICAgIHRoaXMuaXNDb250aW51ZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gIH1cbiAgZ29Ub1BheW1lbnRWaWV3Q29tcCgpIHtcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzICA9ICcnO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdwYXltZW50dmlldyc7XG4gIH1cbiAgY29udGludWVQYXltZW50KHBheW1lbnRncnA6IElQYXltZW50R3JvdXApIHtcbiAgICBcbiAgICBpZiAodGhpcy5wYXltZW50VHlwZSA9PT0gJ29wJykge1xuICAgICAgdGhpcy5pc0Z1bGx5UmVmdW5kID0gZmFsc2VcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9ICcnO1xuICAgICAgdGhpcy52aWV3Q29tcFN0YXR1cyAgPSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZSc7XG4gICAgfSBlbHNlIGlmKHRoaXMucGF5bWVudFR5cGUgPT09ICdmcCcpIHtcbiAgICAgIHRoaXMuaXNGdWxseVJlZnVuZCA9IHRydWVcbiAgICAgIHRoaXMucGF5bWVudEdyb3VwTGlzdCA9IHBheW1lbnRncnA7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnaXNzdWVyZWZ1bmQnO1xuICAgICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9IFwiXCI7XG4gICAgICB0aGlzLmlzUmVmdW5kUmVtaXNzaW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgICB0aGlzLmlzRnJvbVBheW1lbnREZXRhaWxQYWdlID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZTtcbiAgICB9XG4gIH1cbiAgZ2V0Q29udGFjdERldGFpbHMob2JqOklSZWZ1bmRDb250YWN0RGV0YWlscykge1xuICAgIHRoaXMuY29udGFjdERldGFpbHNPYmogPSBvYmo7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJyc7XG4gICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICdvdmVycGF5bWVudGNoZWNrYW5kYW5zd2VyJztcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxuICBnb3RvUGF5bWVudFNlbGVjdFBhZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnJztcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzICA9ICdvdmVycGF5bWVudCc7XG4gIH1cbiAgZ290b0FkZHJlc3NQYWdlKG5vdGU/OiBJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICBpZiAobm90ZSkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb24gPSB7IGNvbnRhY3RfZGV0YWlsczogbm90ZSwgbm90aWZpY2F0aW9uX3R5cGU6IG5vdGUubm90aWZpY2F0aW9uX3R5cGUgfTtcbiAgICB9XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnJztcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJ292ZXJQYXltZW50QWRkcmVzc0NhcHR1cmUnO1xuICB9XG4gIHByb2Nlc3NSZWZ1bmQoKSB7XG4gICAgdGhpcy5pc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGNvbnN0IG9iaiA9IHRoaXMucGF5bWVudEdyb3VwTGlzdC5mZWVzWzBdO1xuICAgIHRoaXMuZmVlcyAgPSBbeyBpZDogb2JqLmlkLCBcbiAgICAgIGNvZGU6IG9iai5jb2RlLFxuICAgICAgdmVyc2lvbjpvYmoudmVyc2lvbiwgXG4gICAgICBhcHBvcnRpb25fYW1vdW50OiBvYmouYXBwb3J0aW9uX2Ftb3VudCxcbiAgICAgIGNhbGN1bGF0ZWRfYW1vdW50OiBvYmouY2FsY3VsYXRlZF9hbW91bnQsXG4gICAgICB1cGRhdGVkX3ZvbHVtZTogb2JqLnVwZGF0ZWRfdm9sdW1lID8gb2JqLnVwZGF0ZWRfdm9sdW1lIDogb2JqLnZvbHVtZSxcbiAgICAgIHZvbHVtZTogb2JqLnZvbHVtZSxcbiAgICAgIHJlZnVuZF9hbW91bnQ6IHRoaXMuZ2V0T3ZlclBheW1lbnRWYWx1ZSgpIH1dO1xuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gbmV3IFBvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbih0aGlzLmNvbnRhY3REZXRhaWxzT2JqLHRoaXMuZmVlcywgdGhpcy5wYXltZW50R3JvdXBMaXN0LnBheW1lbnRzWzBdLnJlZmVyZW5jZSwgJ1JSMDM3JywgXG4gICAgdGhpcy5nZXRPdmVyUGF5bWVudFZhbHVlKCksICdvcCcpO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLnBvc3RSZWZ1bmRzUmVhc29uKHJlcXVlc3RCb2R5KS5zdWJzY3JpYmUoXG4gICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKEpTT04ucGFyc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb21wU3RhdHVzICA9ICcnO1xuICAgICAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ3JlZnVuZGNvbmZpcm1hdGlvbnBhZ2UnO1xuICAgICAgICAgICAgdGhpcy5yZWZ1bmRSZWZlcmVuY2UgPSBKU09OLnBhcnNlKHJlc3BvbnNlKS5yZWZ1bmRfcmVmZXJlbmNlO1xuICAgICAgICAgICAgdGhpcy5yZWZ1bmRBbW91bnQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKS5yZWZ1bmRfYW1vdW50O1xuICAgICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICB0aGlzLmlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICB9XG5cbiAgZ2V0T3ZlclBheW1lbnRWYWx1ZSgpIHtcbiAgICBsZXQgZmVlc092ZXJQYXltZW50ID0gMDtcbiAgICB0aGlzLnBheW1lbnRHcm91cExpc3QuZmVlcy5mb3JFYWNoKGZlZSA9PiB7XG4gICAgICBmZWVzT3ZlclBheW1lbnQgKz0gZmVlLm92ZXJfcGF5bWVudDtcbiAgICB9KTtcbiAgICByZXR1cm4gZmVlc092ZXJQYXltZW50ID4gMCA/IGZlZXNPdmVyUGF5bWVudCA6IHRoaXMucGF5bWVudEdyb3VwTGlzdC5wYXltZW50c1swXS5vdmVyX3BheW1lbnQ7XG5cbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25QcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxufSJdfQ==
|
|
835
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1yZXF1ZXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9jY3BheS13ZWItY29tcG9uZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvc2VydmljZS1yZXF1ZXN0L3NlcnZpY2UtcmVxdWVzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXJGO0lBMkZFLGlDQUNVLG1CQUF3QyxFQUN4QyxrQkFBc0MsRUFDdEMsaUJBQW9DLEVBQ3BDLG1CQUF3QyxFQUN4QyxFQUFxQixFQUNyQixNQUFjO1FBTGQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBNUVkLCtCQUEwQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTTdFLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGFBQVEsR0FBZSxF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QUMvQixvREFBbUM7O0lBQ25DLDhEQUE2Qzs7SUFDN0Msb0RBQTBCOztJQUMxQiwyQ0FBaUI7O0lBQ2pCLDREQUFtQzs7SUFDbkMsa0RBQXdCOztJQUN4QiwrQ0FBcUI7O0lBQ3JCLDBDQUFrQjs7SUFDbEIsK0NBQTRCOztJQUM1Qiw4Q0FBMEI7O0lBRTFCLHVEQUFzQzs7SUFDdEMsd0RBQWtDOztJQUNsQyxpREFBMEM7O0lBQzFDLDZDQUF1Qjs7SUFDdkIsc0RBQTRCOztJQUM1QixvREFBMkI7O0lBQzNCLDBEQUFpQzs7SUFDakMsb0RBQXdDOztJQUN4QywrQ0FBa0I7O0lBQ2xCLDRDQUFtQjs7SUFDbkIsdUNBQWM7O0lBQ2Qsd0NBQXVCOztJQUN2Qix5REFBd0M7O0lBQ3hDLDJEQUEwQzs7SUFDMUMsNkRBQTRDOztJQUM1Qyw2REFBNkU7O0lBQzdFLDJEQUFrQzs7SUFDbEMsaURBQXVCOztJQUN2QixrREFBd0I7O0lBQ3hCLHdEQUFzQzs7SUFDdEMsZ0RBQXVCOztJQUN2QixzREFBNkI7Ozs7O0lBRzNCLHNEQUFnRDs7Ozs7SUFDaEQscURBQThDOzs7OztJQUM5QyxvREFBNEM7Ozs7O0lBQzVDLHNEQUFnRDs7Ozs7SUFDaEQscUNBQTZCOzs7OztJQUM3Qix5Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUSElTX0VYUFIgfSBmcm9tICdAYW5ndWxhci9jb21waWxlci9zcmMvb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBheW1lbnRMaWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSVBheW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50JztcbmltcG9ydCB7IElSZW1pc3Npb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZW1pc3Npb24nO1xuaW1wb3J0IHsgSVBheW1lbnRWaWV3IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudFZpZXcnO1xuaW1wb3J0IHsgSU9yZGVyUmVmZXJlbmNlRmVlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JT3JkZXJSZWZlcmVuY2VGZWUnO1xuaW1wb3J0IHsgSUZlZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUZlZSc7XG5pbXBvcnQgeyBJUGF5bWVudEdyb3VwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQYXltZW50Vmlld1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmRlcnNsaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZGVyc2xpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJUmVmdW5kQ29udGFjdERldGFpbHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRDb250YWN0RGV0YWlscyc7XG5pbXBvcnQgeyBQb3N0UmVmdW5kUmV0cm9SZW1pc3Npb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1Bvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjcGF5LXNlcnZpY2UtcmVxdWVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXJ2aWNlLXJlcXVlc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXJ2aWNlLXJlcXVlc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlUmVxdWVzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgnTE9HR0VESU5VU0VSUk9MRVMnKSBMT0dHRURJTlVTRVJST0xFUzogc3RyaW5nW107XG4gIEBJbnB1dCgndmlld1N0YXR1cycpIHZpZXdTdGF0dXM6IHN0cmluZztcbiAgQElucHV0KCdvcmRlckRldGFpbCcpIG9yZGVyRGV0YWlsOiBhbnlbXTtcbiAgQElucHV0KCdvcmRlclJlZicpIG9yZGVyUmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgnb3JkZXJTdGF0dXMnKSBvcmRlclN0YXR1czogc3RyaW5nO1xuICBASW5wdXQoJ29yZGVyUGFydHknKSBvcmRlclBhcnR5OiBzdHJpbmc7XG4gIEBJbnB1dCgnb3JkZXJDcmVhdGVkJykgb3JkZXJDcmVhdGVkOiBEYXRlO1xuICBASW5wdXQoJ29yZGVyQ0NERXZlbnQnKSBvcmRlckNDREV2ZW50OiBzdHJpbmc7XG4gIEBJbnB1dCgnb3JkZXJGZWVzVG90YWwnKSBvcmRlckZlZXNUb3RhbDogbnVtYmVyO1xuICBASW5wdXQoJ29yZGVyVG90YWxQYXltZW50cycpIG9yZGVyVG90YWxQYXltZW50czogbnVtYmVyO1xuICBASW5wdXQoJ29yZGVyUmVtaXNzaW9uVG90YWwnKSBvcmRlclJlbWlzc2lvblRvdGFsOiBudW1iZXI7XG4gIEBJbnB1dCgncGF5bWVudEdyb3VwTGlzdCcpIHBheW1lbnRHcm91cExpc3Q6IElQYXltZW50R3JvdXA7XG4gIEBJbnB1dCgndGFrZVBheW1lbnQnKSB0YWtlUGF5bWVudDogYm9vbGVhbjtcbiAgQElucHV0KCdjY2RDYXNlTnVtYmVyJykgY2NkQ2FzZU51bWJlcjogYm9vbGVhbjtcbiAgQElucHV0KFwiaXNTZXJ2aWNlUmVxdWVzdFwiKSBpc1NlcnZpY2VSZXF1ZXN0OiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBnb1RvU2VydmljZVJxdWVzdENvbXBvbmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdmlld0NvbXBTdGF0dXM7XG4gIHNlcnZpY2VyZXF1ZXN0OiBzdHJpbmc7XG4gIHBheW1lbnRUeXBlOiBzdHJpbmc7XG4gIGV4Y1JlZmVyZW5jZTogc3RyaW5nO1xuICBwYXltZW50R3JvdXBzOiBhbnlbXSA9IFtdO1xuICBwYXltZW50czogSVBheW1lbnRbXSA9IFtdO1xuICBub25QYXltZW50czogSVBheW1lbnRbXSA9IFtdO1xuICBhbGxQYXltZW50czogSVBheW1lbnRbXSA9IFtdO1xuICByZW1pc3Npb25zOiBJUmVtaXNzaW9uW10gPSBbXTtcbiAgcGF5bWVudEZlZXM6IElGZWVbXTtcbiAgZmVlczogYW55O1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgdG90YWxGZWVzOiBudW1iZXI7XG4gIHRvdGFsUGF5bWVudHM6IG51bWJlcjtcbiAgdG90YWxOb25PZmZQYXltZW50czogbnVtYmVyO1xuICB0b3RhbFJlbWlzc2lvbnM6IG51bWJlcjtcbiAgc2VsZWN0ZWRPcHRpb246IHN0cmluZztcbiAgZGNuTnVtYmVyOiBzdHJpbmc7XG4gIHBheW1lbnRSZWY6IHN0cmluZztcbiAgaXNUdXJuT2ZmOiBib29sZWFuO1xuICBpc1JlZnVuZFJlbWlzc2lvbjogYm9vbGVhbiA9IHRydWU7XG4gIGlzU3RyYXRlZ2ljRml4RW5hYmxlOiBib29sZWFuO1xuICBpc0FkZEZlZUJ0bkVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0V4Y2VwdGlvblJlY29yZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1VucHJvY2Vzc2VkUmVjb3JkU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXhjZXB0aW9uUmVjb3JkUmVmZXJlbmNlOiBzdHJpbmc7XG4gIGlzQW55RmVlR3JvdXBBdmlsYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIGlzSGlzdG9yaWNHcm91cEF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0J1bGtTY2FuRW5hYmxlO1xuICBpc1JlbWlzc2lvbnNNYXRjaDogYm9vbGVhbjtcbiAgaXNSZW1vdmVCdG5EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBmZWVJZDogSUZlZTtcbiAgY2xBbW91bnREdWU6IG51bWJlciA9IDA7XG4gIHVucHJvY2Vzc2VkUmVjb3JkQ291bnQ6IG51bWJlcjtcbiAgaXNGZWVSZWNvcmRzRXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNHcnBPdXRzdGFuZGluZ0FtdFBvc2l0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gIHRvdGFsUmVmdW5kQW1vdW50OiBOdW1iZXI7XG4gIGNhc2VUeXBlOiBTdHJpbmc7XG4gIGlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQ6IGJvb2xlYW47XG4gIHJlZnVuZFJlZmVyZW5jZTogc3RyaW5nO1xuICByZWZ1bmRBbW91bnQ6IHN0cmluZztcbiAgcGF5bWVudDogSVBheW1lbnQ7XG4gIHBheW1lbnRHcm91cDogSVBheW1lbnRHcm91cDtcbiAgcGF5bWVudFZpZXc6IElQYXltZW50VmlldztcblxuICBpc0FkZFJlbWlzc2lvbkVuYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBvcmRlclJlbWlzc2lvbkRldGFpbHM6IGFueVtdID0gW107XG4gIG9yZGVyTGV2ZWxGZWVzOiBJT3JkZXJSZWZlcmVuY2VGZWVbXSA9IFtdO1xuICBjcG9EZXRhaWxzOiBhbnkgPSBudWxsO1xuICBzZXJ2aWNlUmVxdWVzdFZhbHVlOiBzdHJpbmc7XG4gIG9yZGVyQWRkQnRuRW5hYmxlOiBib29sZWFuO1xuICBpc0Zyb21QYXltZW50RGV0YWlsUGFnZTogYm9vbGVhbjtcbiAgY29udGFjdERldGFpbHNPYmo6IElSZWZ1bmRDb250YWN0RGV0YWlsc1xuICBub3RpZmljYXRpb246IGFueTtcbiAgaXNDUE9Eb3duOiBib29sZWFuO1xuICB0ZXN0OiBib29sZWFuO1xuICBpc1BCQTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0lzc3VlUmVmdW5mQnRuRW5hYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzQWRkUmVtaXNzaW9uQnRuRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1JlZnVuZFJlbWlzc2lvbkJ0bkVuYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBhbGxvd2VkUm9sZXNUb0FjY2Vzc1JlZnVuZCA9IFsncGF5bWVudHMtcmVmdW5kLWFwcHJvdmVyJywgJ3BheW1lbnRzLXJlZnVuZCddO1xuICBpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2U6IGJvb2xlYW47XG4gIG5hdmlnYXRpb25wYWdlOiBzdHJpbmc7XG4gIHJlbWlzc2lvbkZlZUFtdDogbnVtYmVyO1xuICBpc0NvbnRpbnVlQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0Z1bGx5UmVmdW5kOiBib29sZWFuO1xuICBub3RpZmljYXRpb25QcmV2aWV3OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkNvbXBvbmVudCxcbiAgICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgT3JkZXJzbGlzdFNlcnZpY2U6IE9yZGVyc2xpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzVHVybk9mZiA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1RVUk5PRkY7XG4gICAgdGhpcy5pc1NlcnZpY2VSZXF1ZXN0ID0gJ2ZhbHNlJztcbiAgICBpZiAodGhpcy52aWV3U3RhdHVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZTtcbiAgICB9XG4gICAgaWYodGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSAmJiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUGF5bWVudERldGFpbFBhZ2UpIHtcbiAgICAgIGlmKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSAmJiB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlKSB7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyUmVmcygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlclJlZiA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlckNDREV2ZW50cygpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vcmRlckNDREV2ZW50ID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyQ3JlYXRlZHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJDcmVhdGVkID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyRGV0YWlsKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyRGV0YWlsID0gZGF0YSk7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldG9yZGVyUGFydHlzKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm9yZGVyUGFydHkgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b3JkZXJSZW1pc3Npb25Ub3RhbHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJSZW1pc3Npb25Ub3RhbCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRvcmRlckZlZXNUb3RhbHMoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJGZWVzVG90YWwgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0b29yZGVyVG90YWxQYXltZW50c3MoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub3JkZXJUb3RhbFBheW1lbnRzID0gZGF0YSk7XG4gICAgfVxuICAgXG4gICAgXG4gICAgfVxuICAgIGlmKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgJiYgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UKSB7XG4gICAgICB0aGlzLmlzU2VydmljZVJlcXVlc3QgPSAnZmFsc2UnO1xuICAgIH1cblxuXG4gIH1cbiAgZ29Ub1NlcnZpY2VSZXF1ZXN0UGFnZSgpIHtcbiAgICB0aGlzLmdvVG9TZXJ2aWNlUnF1ZXN0Q29tcG9uZW50LmVtaXQoKTtcbiAgfVxuXG4gIGdvVG9DYXNlVHJhbnNhdGlvblBhZ2UoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRuYXZpZ2F0aW9uUGFnZSgnc2VydmljZXJlcXVlc3RwYWdlJyk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UoZmFsc2UpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1Rha2VQYXltZW50ID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UO1xuICAgIGlmICh0aGlzLnRha2VQYXltZW50KSB7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNUYWtlUGF5bWVudCA9IHRoaXMudGFrZVBheW1lbnQ7XG4gICAgfVxuICAgIC8vdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlNFUlZJQ0VSRVFVRVNUID0gXCJ0cnVlXCI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IGZhbHNlO1xuICAgIGlmKHRoaXMuaXNTZXJ2aWNlUmVxdWVzdCAhPT0gJ2ZhbHNlJykge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21SZWZ1bmRTdGF0dXNQYWdlID0gZmFsc2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnJlc2V0T3JkZXJEYXRhKCk7XG4gICBsZXQgIHBhcnRVcmwgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA/ICcmaXNCdWxrU2Nhbm5pbmc9RW5hYmxlJyA6ICcmaXNCdWxrU2Nhbm5pbmc9RGlzYWJsZSc7XG4gICAgcGFydFVybCArPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNUVVJOT0ZGID8gJyZpc1R1cm5PZmY9RW5hYmxlJyA6ICcmaXNUdXJuT2ZmPURpc2FibGUnO1xuICAgIGlmKHRoaXMuaXNTZXJ2aWNlUmVxdWVzdCA9PT0gJ2ZhbHNlJykge1xuICAgICAgcGFydFVybCArPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuVEFLRVBBWU1FTlQgPyAnJnRha2VQYXltZW50PXRydWUnIDogJyZ0YWtlUGF5bWVudD1mYWxzZSc7XG4gICAgfVxuICAgIHBhcnRVcmwgKz0gdGhpcy5pc1N0cmF0ZWdpY0ZpeEVuYWJsZSA/ICcmaXNTdEZpeEVuYWJsZT1FbmFibGUnIDogJyZpc1N0Rml4RW5hYmxlPURpc2FibGUnO1xuICAgIHBhcnRVcmwgKz0gdGhpcy5pc1NlcnZpY2VSZXF1ZXN0ICE9PSAnZmFsc2UnID8gJyZzZXJ2aWNlcmVxdWVzdD10cnVlJyA6ICcmc2VydmljZXJlcXVlc3Q9ZmFsc2UnO1xuICAgIHBhcnRVcmwgKz0gYCZjYXNlVHlwZT0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQVNFVFlQRX1gO1xuICAgIGNvbnN0IHVybCA9IGAvcGF5bWVudC1oaXN0b3J5LyR7dGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUn0/dmlldz1jYXNlLXRyYW5zYWN0aW9ucyZzZWxlY3RlZE9wdGlvbj0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRUxFQ1RFRF9PUFRJT059JHtwYXJ0VXJsfWA7XG4gICAgICB0aGlzLnJvdXRlci5yb3V0ZVJldXNlU3RyYXRlZ3kuc2hvdWxkUmV1c2VSb3V0ZSA9ICgpID0+IGZhbHNlO1xuICAgICAgdGhpcy5yb3V0ZXIub25TYW1lVXJsTmF2aWdhdGlvbiA9ICdyZWxvYWQnO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICB9XG5cbiAgYWRkUmVtaXNzaW9uKGZlZTogSUZlZSkge1xuICAgIGlmKHRoaXMuY2hrSXNBZGRSZW1pc3Npb25CdG5FbmFibGUoZmVlKSkge1xuICAgIHRoaXMuZmVlSWQgPSBmZWU7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ2FkZHJlbWlzc2lvbic7XG4gICAgdGhpcy5wYXltZW50ID0gdGhpcy5vcmRlckRldGFpbFswXS5wYXltZW50c1swXTtcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRBcHBvcnRpb25QYXltZW50RGV0YWlscyh0aGlzLm9yZGVyRGV0YWlsWzBdLnBheW1lbnRzWzBdLnJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgcGF5bWVudEdyb3VwID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSBwYXltZW50R3JvdXA7XG5cbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9ialsncmVmZXJlbmNlJ10uaW5jbHVkZXModGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRSZWZlcmVuY2UpKTtcbiAgICAgICAgdGhpcy5wYXltZW50ID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF07XG4gICAgICAgXG4gICAgICAgICAgLy8gIGNvbnN0IHBheW1lbnRBbGxvY2F0aW9uID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0ucGF5bWVudF9hbGxvY2F0aW9uO1xuICAgICAgICAgIC8vICB0aGlzLmlzU3RhdHVzQWxsb2NhdGVkID0gcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID4gMCAmJiBwYXltZW50QWxsb2NhdGlvblswXS5hbGxvY2F0aW9uX3N0YXR1cyA9PT0gJ0FsbG9jYXRlZCcgfHwgcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID09PSAwO1xuICAgICAgICBcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4gdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5yZXBsYWNlKC9cIi9nLFwiXCIpXG4gICAgKTtcbiAgfVxuICB9XG5cbiAgYWRkUmVmdW5kRm9yUmVtaXNzaW9uKHBheW1lbnQ6IElQYXltZW50LCByZW1pc3Npb246IElSZW1pc3Npb25bXSxmZWVzOmFueSkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEFwcG9ydGlvblBheW1lbnREZXRhaWxzKHBheW1lbnQucmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRHcm91cCA9IHBheW1lbnRHcm91cDtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9iai5yZWZlcmVuY2UgPT09IHBheW1lbnQucmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy5wYXltZW50ID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF07XG4gICAgICAgIHRoaXMucmVtaXNzaW9ucyA9IHJlbWlzc2lvbjtcbiAgICAgICAgdGhpcy5yZW1pc3Npb25GZWVBbXQgPSBmZWVzLmZpbHRlcihkYXRhPT5kYXRhLmNvZGUgPT09IHRoaXMucmVtaXNzaW9uc1snZmVlX2NvZGUnXSlbMF0ubmV0X2Ftb3VudDtcbiAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2FkZHJlZnVuZGZvcnJlbWlzc2lvbic7XG4gICAgICAgIC8vIGNvbnN0IHBheW1lbnRBbGxvY2F0aW9uID0gdGhpcy5wYXltZW50R3JvdXAucGF5bWVudHNbMF0ucGF5bWVudF9hbGxvY2F0aW9uO1xuICAgICAgICAvLyB0aGlzLmlzU3RhdHVzQWxsb2NhdGVkID0gcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID4gMCAmJiBwYXltZW50QWxsb2NhdGlvblswXS5hbGxvY2F0aW9uX3N0YXR1cyA9PT0gJ0FsbG9jYXRlZCcgfHwgcGF5bWVudEFsbG9jYXRpb24ubGVuZ3RoID09PSAwO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgKTtcbiAgfVxuICBjYW5jZWxSZW1vdmFsKCkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdtYWluJztcbiAgfVxuXG4gIHJlbW92ZUZlZShmZWU6IGFueSkge1xuICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZGVsZXRlRmVlRnJvbVBheW1lbnRHcm91cChmZWUpLnN1YnNjcmliZShcbiAgICAgIChzdWNjZXNzOiBhbnkpID0+IHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3I7XG4gICAgICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBpc3N1ZVJlZnVuZChwYXltZW50OiBJUGF5bWVudCkge1xuICAgIGlmIChwYXltZW50ICE9PSBudWxsICYmIHBheW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYoIHRoaXMuY2hrSXNJc3N1ZVJlZnVuZEJ0bkVuYWJsZShwYXltZW50KSkge1xuICAgICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRBcHBvcnRpb25QYXltZW50RGV0YWlscyhwYXltZW50LnJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgICBwYXltZW50R3JvdXAgPT4ge1xuICAgICAgICAgIHBheW1lbnRHcm91cC5wYXltZW50cyA9IHBheW1lbnRHcm91cC5wYXltZW50cy5maWx0ZXJcbiAgICAgICAgICAocGF5bWVudEdyb3VwT2JqID0+IHBheW1lbnRHcm91cE9ialsncmVmZXJlbmNlJ10uaW5jbHVkZXMocGF5bWVudC5yZWZlcmVuY2UpKTtcbiAgICAgICAgICBpZihwYXltZW50Lm92ZXJfcGF5bWVudCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5wYXltZW50ID0gcGF5bWVudDtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudEdyb3VwTGlzdCA9IHBheW1lbnRHcm91cDtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbXBTdGF0dXMgID0gJ292ZXJwYXltZW50JztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ2lzc3VlcmVmdW5kJztcbiAgICAgICAgICAgIHRoaXMudmlld0NvbXBTdGF0dXMgPSAnJztcbiAgICAgICAgICAgIHRoaXMucGF5bWVudEZlZXMgPSBwYXltZW50R3JvdXAuZmVlcztcbiAgICAgICAgICAgIHRoaXMucGF5bWVudCA9IHBheW1lbnQ7XG4gICAgICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNSZWZ1bmRSZW1pc3Npb24gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnb1RvUGF5ZW1lbnRWaWV3KHBheW1lbnRHcm91cFJlZmVyZW5jZTogc3RyaW5nLCBwYXltZW50UmVmZXJlbmNlOiBzdHJpbmcsIHBheW1lbnRNZXRob2Q6IHN0cmluZykge1xuICAgIHRoaXMuZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KHsgcGF5bWVudEdyb3VwUmVmZXJlbmNlLCBwYXltZW50UmVmZXJlbmNlLCBwYXltZW50TWV0aG9kIH0pO1xuICB9XG5cbiAgZ29Ub1BheW1lbnRWaWV3Q29tcG9uZW50KHBheW1lbnRHcm91cDogYW55KSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRNZXRob2QgPSBwYXltZW50R3JvdXAucGF5bWVudE1ldGhvZDtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudEdyb3VwUmVmZXJlbmNlID0gcGF5bWVudEdyb3VwLnBheW1lbnRHcm91cFJlZmVyZW5jZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucGF5bWVudFJlZmVyZW5jZSA9IHBheW1lbnRHcm91cC5wYXltZW50UmVmZXJlbmNlO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0T3JkZXJSZWYodGhpcy5vcmRlclJlZik7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckNDREV2ZW50KHRoaXMub3JkZXJDQ0RFdmVudCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckNyZWF0ZWQodGhpcy5vcmRlckNyZWF0ZWQpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJEZXRhaWwodGhpcy5vcmRlckRldGFpbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlclBhcnR5KHRoaXMub3JkZXJQYXJ0eSk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlclRvdGFsUGF5bWVudHModGhpcy5vcmRlclRvdGFsUGF5bWVudHMpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJSZW1pc3Npb25Ub3RhbCh0aGlzLm9yZGVyUmVtaXNzaW9uVG90YWwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJGZWVzVG90YWwodGhpcy5vcmRlckZlZXNUb3RhbCk7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ3BheW1lbnQtdmlldyc7XG4gIH1cblxuICBjaGtJc0lzc3VlUmVmdW5kQnRuRW5hYmxlKHBheW1lbnQ6IElQYXltZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKHBheW1lbnQgIT09IG51bGwgJiYgcGF5bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcGF5bWVudC5pc3N1ZV9yZWZ1bmQgJiYgcGF5bWVudC5yZWZ1bmRfZW5hYmxlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjaGtJc0FkZFJlZnVuZEJ0bkVuYWJsZShyZW1pc3Npb246IElSZW1pc3Npb24pOiBib29sZWFuIHtcbiAgICBpZiAocmVtaXNzaW9uICE9PSBudWxsICYmIHJlbWlzc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcmVtaXNzaW9uLmFkZF9yZWZ1bmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjaGtJc0FkZFJlbWlzc2lvbkJ0bkVuYWJsZShmZWU6IElGZWUpOiBib29sZWFuIHtcbiAgICBpZiAoZmVlICE9PSBudWxsICYmIGZlZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmVlLmFkZF9yZW1pc3Npb24gJiYgZmVlLnJlbWlzc2lvbl9lbmFibGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXNldE9yZGVyRGF0YSgpIHtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldE9yZGVyUmVmKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJDQ0RFdmVudChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyQ3JlYXRlZChudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyRGV0YWlsKG51bGwpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0b3JkZXJQYXJ0eShudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyVG90YWxQYXltZW50cyhudWxsKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG9yZGVyUmVtaXNzaW9uVG90YWwobnVsbCk7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRvcmRlckZlZXNUb3RhbChudWxsKTtcbiAgfVxuXG4gIHNlbGVjdFB5bWVudE9wdGlvbihwYXltZW50VHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXltZW50VHlwZSA9IHBheW1lbnRUeXBlO1xuICAgIHRoaXMuaXNDb250aW51ZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gIH1cbiAgZ29Ub1BheW1lbnRWaWV3Q29tcCgpIHtcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzICA9ICcnO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdwYXltZW50dmlldyc7XG4gIH1cbiAgY29udGludWVQYXltZW50KHBheW1lbnRncnA6IElQYXltZW50R3JvdXApIHtcbiAgICBcbiAgICBpZiAodGhpcy5wYXltZW50VHlwZSA9PT0gJ29wJykge1xuICAgICAgdGhpcy5pc0Z1bGx5UmVmdW5kID0gZmFsc2VcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9ICcnO1xuICAgICAgdGhpcy52aWV3Q29tcFN0YXR1cyAgPSAnb3ZlclBheW1lbnRBZGRyZXNzQ2FwdHVyZSc7XG4gICAgfSBlbHNlIGlmKHRoaXMucGF5bWVudFR5cGUgPT09ICdmcCcpIHtcbiAgICAgIHRoaXMuaXNGdWxseVJlZnVuZCA9IHRydWVcbiAgICAgIHRoaXMucGF5bWVudEdyb3VwTGlzdCA9IHBheW1lbnRncnA7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnaXNzdWVyZWZ1bmQnO1xuICAgICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9IFwiXCI7XG4gICAgICB0aGlzLmlzUmVmdW5kUmVtaXNzaW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXltZW50RGV0YWlsUGFnZSA9IHRydWU7XG4gICAgICB0aGlzLmlzRnJvbVBheW1lbnREZXRhaWxQYWdlID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZTtcbiAgICB9XG4gIH1cbiAgZ2V0Q29udGFjdERldGFpbHMob2JqOklSZWZ1bmRDb250YWN0RGV0YWlscykge1xuICAgIHRoaXMuY29udGFjdERldGFpbHNPYmogPSBvYmo7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJyc7XG4gICAgdGhpcy52aWV3Q29tcFN0YXR1cyA9ICdvdmVycGF5bWVudGNoZWNrYW5kYW5zd2VyJztcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxuICBnb3RvUGF5bWVudFNlbGVjdFBhZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnJztcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzICA9ICdvdmVycGF5bWVudCc7XG4gIH1cbiAgZ290b0FkZHJlc3NQYWdlKG5vdGU/OiBJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICBpZiAobm90ZSkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb24gPSB7IGNvbnRhY3RfZGV0YWlsczogbm90ZSwgbm90aWZpY2F0aW9uX3R5cGU6IG5vdGUubm90aWZpY2F0aW9uX3R5cGUgfTtcbiAgICB9XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnJztcbiAgICB0aGlzLnZpZXdDb21wU3RhdHVzID0gJ292ZXJQYXltZW50QWRkcmVzc0NhcHR1cmUnO1xuICB9XG4gIHByb2Nlc3NSZWZ1bmQoKSB7XG4gICAgdGhpcy5pc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGNvbnN0IG9iaiA9IHRoaXMucGF5bWVudEdyb3VwTGlzdC5mZWVzWzBdO1xuICAgIHRoaXMuZmVlcyAgPSBbeyBpZDogb2JqLmlkLCBcbiAgICAgIGNvZGU6IG9iai5jb2RlLFxuICAgICAgdmVyc2lvbjpvYmoudmVyc2lvbiwgXG4gICAgICBhcHBvcnRpb25fYW1vdW50OiBvYmouYXBwb3J0aW9uX2Ftb3VudCxcbiAgICAgIGNhbGN1bGF0ZWRfYW1vdW50OiBvYmouY2FsY3VsYXRlZF9hbW91bnQsXG4gICAgICB1cGRhdGVkX3ZvbHVtZTogb2JqLnVwZGF0ZWRfdm9sdW1lID8gb2JqLnVwZGF0ZWRfdm9sdW1lIDogb2JqLnZvbHVtZSxcbiAgICAgIHZvbHVtZTogb2JqLnZvbHVtZSxcbiAgICAgIHJlZnVuZF9hbW91bnQ6IHRoaXMuZ2V0T3ZlclBheW1lbnRWYWx1ZSgpIH1dO1xuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gbmV3IFBvc3RSZWZ1bmRSZXRyb1JlbWlzc2lvbih0aGlzLmNvbnRhY3REZXRhaWxzT2JqLHRoaXMuZmVlcywgdGhpcy5wYXltZW50R3JvdXBMaXN0LnBheW1lbnRzWzBdLnJlZmVyZW5jZSwgJ1JSMDM3JywgXG4gICAgdGhpcy5nZXRPdmVyUGF5bWVudFZhbHVlKCksICdvcCcpO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLnBvc3RSZWZ1bmRzUmVhc29uKHJlcXVlc3RCb2R5KS5zdWJzY3JpYmUoXG4gICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKEpTT04ucGFyc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb21wU3RhdHVzICA9ICcnO1xuICAgICAgICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ3JlZnVuZGNvbmZpcm1hdGlvbnBhZ2UnO1xuICAgICAgICAgICAgdGhpcy5yZWZ1bmRSZWZlcmVuY2UgPSBKU09OLnBhcnNlKHJlc3BvbnNlKS5yZWZ1bmRfcmVmZXJlbmNlO1xuICAgICAgICAgICAgdGhpcy5yZWZ1bmRBbW91bnQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKS5yZWZ1bmRfYW1vdW50O1xuICAgICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICB0aGlzLmlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICB9XG5cbiAgZ2V0T3ZlclBheW1lbnRWYWx1ZSgpIHtcbiAgICBsZXQgZmVlc092ZXJQYXltZW50ID0gMDtcbiAgICB0aGlzLnBheW1lbnRHcm91cExpc3QuZmVlcy5mb3JFYWNoKGZlZSA9PiB7XG4gICAgICBmZWVzT3ZlclBheW1lbnQgKz0gZmVlLm92ZXJfcGF5bWVudDtcbiAgICB9KTtcbiAgICByZXR1cm4gZmVlc092ZXJQYXltZW50ID4gMCA/IGZlZXNPdmVyUGF5bWVudCA6IHRoaXMucGF5bWVudEdyb3VwTGlzdC5wYXltZW50c1swXS5vdmVyX3BheW1lbnQ7XG5cbiAgfVxuXG4gIGdldFRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQ6IElQYXltZW50KSB7XG5cbiAgICBpZiAocGF5bWVudCA9PSB1bmRlZmluZWQgfHwgcGF5bWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJ1RlbXBsYXRlJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb25JbnN0cnVjdGlvblR5cGUocGF5bWVudC5jaGFubmVsLCBwYXltZW50Lm1ldGhvZCk7XG4gIH1cblxuICBzaG93Tm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSB0cnVlO1xuICB9XG5cbiAgaGlkZU5vdGlmaWNhdGlvblByZXZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3ID0gZmFsc2U7XG4gIH1cbn0iXX0=
|
|
@@ -59,6 +59,39 @@ var NotificationService = /** @class */ (function () {
|
|
|
59
59
|
function (body) {
|
|
60
60
|
return this.https.post(this.paymentLibService.NOTIFICATION_API_ROOT + "/doc-preview", body).pipe(catchError(this.errorHandlerService.handleError));
|
|
61
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* @param {?} paymentChannel
|
|
64
|
+
* @param {?} paymentMethod
|
|
65
|
+
* @return {?}
|
|
66
|
+
*/
|
|
67
|
+
NotificationService.prototype.getNotificationInstructionType = /**
|
|
68
|
+
* @param {?} paymentChannel
|
|
69
|
+
* @param {?} paymentMethod
|
|
70
|
+
* @return {?}
|
|
71
|
+
*/
|
|
72
|
+
function (paymentChannel, paymentMethod) {
|
|
73
|
+
if (paymentChannel === 'bulk scan' && paymentMethod === 'postal order') {
|
|
74
|
+
return 'RefundWhenContacted';
|
|
75
|
+
}
|
|
76
|
+
else if (paymentChannel === 'bulk scan' && paymentMethod === 'cash') {
|
|
77
|
+
return 'RefundWhenContacted';
|
|
78
|
+
}
|
|
79
|
+
else if (paymentChannel === 'online' && paymentMethod === 'card') {
|
|
80
|
+
return 'SendRefund';
|
|
81
|
+
}
|
|
82
|
+
else if (paymentChannel === 'telephony' && paymentMethod === 'card') {
|
|
83
|
+
return 'SendRefund';
|
|
84
|
+
}
|
|
85
|
+
else if (paymentChannel === 'online' && paymentMethod === 'payment by account') {
|
|
86
|
+
return 'SendRefund';
|
|
87
|
+
}
|
|
88
|
+
else if (paymentChannel === 'bulk scan' && paymentMethod === 'cheque') {
|
|
89
|
+
return 'SendRefund';
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return 'Template';
|
|
93
|
+
}
|
|
94
|
+
};
|
|
62
95
|
NotificationService.decorators = [
|
|
63
96
|
{ type: Injectable, args: [{
|
|
64
97
|
providedIn: 'root'
|
|
@@ -97,4 +130,4 @@ if (false) {
|
|
|
97
130
|
*/
|
|
98
131
|
NotificationService.prototype.paymentLibService;
|
|
99
132
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBSTFDO0lBS0UsNkJBQW9CLElBQWdCLEVBQzFCLEtBQTZCLEVBQ25CLG1CQUF3QyxFQUN4QyxpQkFBb0M7UUFIcEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUNuQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDeEMsQ0FBQzs7Ozs7SUFFakIsbURBQXFCOzs7O0lBQXJCLFVBQXNCLFNBQWlCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTJCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsdUJBQWtCLFNBQVcsRUFBRTtZQUN4SCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO2FBQ0MsSUFBSSxDQUNILFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQ2pELENBQUM7SUFDTixDQUFDOzs7OztJQUVELGtEQUFvQjs7OztJQUFwQixVQUFxQixRQUFnQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsNENBQXVDLFFBQVUsRUFBRTtZQUMxSCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO2FBQ0MsSUFBSSxDQUNILFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQ2pELENBQUM7SUFDTixDQUFDOzs7OztJQUVELG9EQUFzQjs7OztJQUF0QixVQUF1QixJQUFnQztRQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsaUJBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQzlGLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFFRCw0REFBOEI7Ozs7O0lBQTlCLFVBQStCLGNBQXNCLEVBQUUsYUFBcUI7UUFDMUUsSUFBSSxjQUFjLEtBQUssV0FBVyxJQUFJLGFBQWEsS0FBSyxjQUFjLEVBQUU7WUFDdEUsT0FBTyxxQkFBcUIsQ0FBQztTQUM5QjthQUFNLElBQUksY0FBYyxLQUFLLFdBQVcsSUFBSSxhQUFhLEtBQUssTUFBTSxFQUFFO1lBQ3JFLE9BQU8scUJBQXFCLENBQUM7U0FDOUI7YUFBTSxJQUFJLGNBQWMsS0FBSyxRQUFRLElBQUksYUFBYSxLQUFLLE1BQU0sRUFBRTtZQUNsRSxPQUFPLFlBQVksQ0FBQztTQUNyQjthQUFNLElBQUksY0FBYyxLQUFLLFdBQVcsSUFBSSxhQUFhLEtBQUssTUFBTSxFQUFFO1lBQ3JFLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO2FBQU0sSUFBSSxjQUFjLEtBQUssUUFBUSxJQUFJLGFBQWEsS0FBSyxvQkFBb0IsRUFBRTtZQUNoRixPQUFPLFlBQVksQ0FBQztTQUNyQjthQUFNLElBQUksY0FBYyxLQUFLLFdBQVcsSUFBSSxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQ3ZFLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO2FBQUs7WUFDSixPQUFPLFVBQVUsQ0FBQTtTQUNsQjtJQUNILENBQUM7O2dCQWxERixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dCQVhPLFVBQVU7Z0JBRVQsc0JBQXNCO2dCQUR2QixtQkFBbUI7Z0JBRW5CLGlCQUFpQjs7OzhCQUp6QjtDQThEQyxBQXBERCxJQW9EQztTQWpEWSxtQkFBbUI7Ozs7OztJQUVsQixtQ0FBd0I7Ozs7O0lBQ2xDLG9DQUFxQzs7Ozs7SUFDM0Isa0RBQWdEOzs7OztJQUNoRCxnREFBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RXJyb3JIYW5kbGVyU2VydmljZX0gZnJvbSAnLi4vc2hhcmVkL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBXZWJDb21wb25lbnRIdHRwQ2xpZW50IH0gZnJvbSAnLi4vc2hhcmVkL2h0dHBjbGllbnQvd2ViY29tcG9uZW50Lmh0dHAuY2xpZW50JztcbmltcG9ydCB7UGF5bWVudExpYlNlcnZpY2V9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHtjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJUmVmdW5kc05vdGlmaWNhdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRzTm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25QcmV2aWV3UmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvTm90aWZpY2F0aW9uUHJldmlld1JlcXVlc3QnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25TZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBodHRwczogV2ViQ29tcG9uZW50SHR0cENsaWVudCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXJTZXJ2aWNlOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHBheW1lbnRMaWJTZXJ2aWNlOiBQYXltZW50TGliU2VydmljZVxuICAgICAgICAgICAgICApIHsgfVxuXG4gIGdldFJlZnVuZE5vdGlmaWNhdGlvbihyZWZlcmVuY2U6IHN0cmluZyk6IE9ic2VydmFibGU8SVJlZnVuZHNOb3RpZmljYXRpb25zPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SVJlZnVuZHNOb3RpZmljYXRpb25zPihgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLk5PVElGSUNBVElPTl9BUElfUk9PVH0vbm90aWZpY2F0aW9ucy8ke3JlZmVyZW5jZX1gLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuXG4gIGdldEFkZHJlc3NCeVBvc3Rjb2RlKHBvc3Rjb2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5OT1RJRklDQVRJT05fQVBJX1JPT1R9L3NlYXJjaC9wbGFjZXMvdjEvcG9zdGNvZGU/cG9zdGNvZGU9JHtwb3N0Y29kZX1gLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE5vdGlmaWNhdGlvblByZXZpZXcoYm9keTogTm90aWZpY2F0aW9uUHJldmlld1JlcXVlc3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBzLnBvc3QoYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5OT1RJRklDQVRJT05fQVBJX1JPT1R9L2RvYy1wcmV2aWV3YCwgYm9keSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKSk7XG4gIH1cblxuICBnZXROb3RpZmljYXRpb25JbnN0cnVjdGlvblR5cGUocGF5bWVudENoYW5uZWw6IHN0cmluZywgcGF5bWVudE1ldGhvZDogc3RyaW5nKTogYW55IHtcbiAgICBpZiAocGF5bWVudENoYW5uZWwgPT09ICdidWxrIHNjYW4nICYmIHBheW1lbnRNZXRob2QgPT09ICdwb3N0YWwgb3JkZXInKSB7XG4gICAgICByZXR1cm4gJ1JlZnVuZFdoZW5Db250YWN0ZWQnO1xuICAgIH0gZWxzZSBpZiAocGF5bWVudENoYW5uZWwgPT09ICdidWxrIHNjYW4nICYmIHBheW1lbnRNZXRob2QgPT09ICdjYXNoJykge1xuICAgICAgcmV0dXJuICdSZWZ1bmRXaGVuQ29udGFjdGVkJztcbiAgICB9IGVsc2UgaWYgKHBheW1lbnRDaGFubmVsID09PSAnb25saW5lJyAmJiBwYXltZW50TWV0aG9kID09PSAnY2FyZCcpIHtcbiAgICAgIHJldHVybiAnU2VuZFJlZnVuZCc7XG4gICAgfSBlbHNlIGlmIChwYXltZW50Q2hhbm5lbCA9PT0gJ3RlbGVwaG9ueScgJiYgcGF5bWVudE1ldGhvZCA9PT0gJ2NhcmQnKSB7XG4gICAgICByZXR1cm4gJ1NlbmRSZWZ1bmQnO1xuICAgIH0gZWxzZSBpZiAocGF5bWVudENoYW5uZWwgPT09ICdvbmxpbmUnICYmIHBheW1lbnRNZXRob2QgPT09ICdwYXltZW50IGJ5IGFjY291bnQnKSB7XG4gICAgICByZXR1cm4gJ1NlbmRSZWZ1bmQnO1xuICAgIH0gZWxzZSBpZiAocGF5bWVudENoYW5uZWwgPT09ICdidWxrIHNjYW4nICYmIHBheW1lbnRNZXRob2QgPT09ICdjaGVxdWUnKSB7XG4gICAgICByZXR1cm4gJ1NlbmRSZWZ1bmQnO1xuICAgIH1lbHNlIHtcbiAgICAgIHJldHVybiAnVGVtcGxhdGUnXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|