@colijnit/transaction 256.1.96 → 256.1.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/colijnit-transaction.umd.js +25 -22
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/lib/component/payment/payment.component.js +75 -75
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-payment.component.js +11 -10
- package/esm2015/lib/service/pending-reason.service.js +4 -3
- package/esm2015/lib/service/transaction-connector.service.js +3 -3
- package/esm2015/lib/service/transaction.service.js +7 -6
- package/esm2015/lib/transaction-version.js +3 -3
- package/fesm2015/colijnit-transaction.js +96 -94
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/service/transaction-connector.service.d.ts +1 -1
- package/lib/service/transaction.service.d.ts +5 -5
- package/package.json +2 -2
|
@@ -18,84 +18,84 @@ PaymentComponent.decorators = [
|
|
|
18
18
|
{ type: Component, args: [{
|
|
19
19
|
selector: "co-payment",
|
|
20
20
|
template: `
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
<div class="payment-to-pay-wrapper">
|
|
56
|
-
<div class="payment-to-pay-total">
|
|
57
|
-
<div class="payment-to-pay-header">
|
|
58
|
-
<span class="payment-header-title" [textContent]="'TOTAL_AMOUNT_TO_PAY' | localize"></span>
|
|
59
|
-
<span class="payment-total-pay" [textContent]="depositAmount ? (depositAmount | coCurrency: true) : (paymentService.amount | coCurrency: true)"></span>
|
|
60
|
-
</div>
|
|
61
|
-
<div class="payment-input-button-wrapper">
|
|
62
|
-
<div class="payment-input-button">
|
|
63
|
-
<co-payment-to-pay
|
|
64
|
-
[amountToPay]="paymentService.amountToPay"></co-payment-to-pay>
|
|
65
|
-
<div class="payment-to-pay-button">
|
|
66
|
-
<co-button [iconData]="iconCacheService.getIcon(icons.CheckDuotone)" (click)="handlePayment()"
|
|
67
|
-
[disabled]="paymentService.amountToPay === 0"></co-button>
|
|
21
|
+
<div class="payment-wrapper">
|
|
22
|
+
<div class="payment-methods-register-wrapper">
|
|
23
|
+
<div class="payment-methods-wrapper">
|
|
24
|
+
<div class="payment-methods-header">
|
|
25
|
+
<span class="payment-header-title" [textContent]="'SELECT' | localize"></span>
|
|
26
|
+
<!--span class="payment-header-title extra" [textContent]="'FREE' | localize:false"></span-->
|
|
27
|
+
<span class="payment-header-title" [textContent]="'PAYMENT_METHOD' | localize:false"></span>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="payment-methods co-small-scrollbar">
|
|
30
|
+
<co-loader class="loader" *ngIf="showLoader"></co-loader>
|
|
31
|
+
<ng-container *ngIf="!showLoader">
|
|
32
|
+
<co-payment-tile *ngFor="let paymentMethod of paymentMethods; let index = index"
|
|
33
|
+
[image]="paymentMethod.image"
|
|
34
|
+
[description]="paymentMethod.payment.description"
|
|
35
|
+
[selected]="paymentMethodIdx === index"
|
|
36
|
+
(selectedChange)="paymentMethodSelected(paymentMethod.payment, index)"
|
|
37
|
+
></co-payment-tile>
|
|
38
|
+
</ng-container>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="payment-cash-register-wrapper" *ngIf="showCashRegisters">
|
|
42
|
+
<div class="payment-cash-register-header">
|
|
43
|
+
<span class="payment-header-title" [textContent]="'SELECT_CASH_REGISTER' | localize"></span>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="payment-methods">
|
|
46
|
+
<co-payment-tile *ngFor="let cashRegister of cashRegisters; let index = index"
|
|
47
|
+
[icon]="cashRegister.icon"
|
|
48
|
+
[description]="cashRegister.description"
|
|
49
|
+
[selected]="cashRegisterIdx === index"
|
|
50
|
+
(selectedChange)="cashRegisterSelected(cashRegister, index)"
|
|
51
|
+
></co-payment-tile>
|
|
52
|
+
</div>
|
|
68
53
|
</div>
|
|
69
|
-
</div>
|
|
70
|
-
<div class="payment-bookdate" *ngIf="showPaymentDate">
|
|
71
|
-
<co-input-date [(model)]="paymentDate"></co-input-date>
|
|
72
|
-
</div>
|
|
73
|
-
<div class="payment-error-message" *ngIf="paymentService.statusMessage"
|
|
74
|
-
[textContent]="paymentService.statusMessage"></div>
|
|
75
54
|
</div>
|
|
76
|
-
|
|
55
|
+
<div class="payment-to-pay-wrapper">
|
|
56
|
+
<div class="payment-to-pay-total">
|
|
57
|
+
<div class="payment-to-pay-header">
|
|
58
|
+
<span class="payment-header-title" [textContent]="'TOTAL_AMOUNT_TO_PAY' | localize"></span>
|
|
59
|
+
<span class="payment-total-pay" [textContent]="paymentService.amountToPay | coCurrency: true"></span>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="payment-input-button-wrapper">
|
|
62
|
+
<div class="payment-input-button">
|
|
63
|
+
<co-payment-to-pay
|
|
64
|
+
[amountToPay]="paymentService.amountToPay"></co-payment-to-pay>
|
|
65
|
+
<div class="payment-to-pay-button">
|
|
66
|
+
<co-button [iconData]="iconCacheService.getIcon(icons.CheckDuotone)" (click)="handlePayment()"
|
|
67
|
+
[disabled]="paymentService.amountToPay === 0"></co-button>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
<div class="payment-bookdate" *ngIf="showPaymentDate">
|
|
71
|
+
<co-input-date [(model)]="paymentDate"></co-input-date>
|
|
72
|
+
</div>
|
|
73
|
+
<div class="payment-error-message" *ngIf="paymentService.statusMessage"
|
|
74
|
+
[textContent]="paymentService.statusMessage"></div>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
78
|
+
<div class="payment-deposit">
|
|
79
|
+
<co-deposit-payment
|
|
80
|
+
[branch]="branch"
|
|
81
|
+
[transactionUuid]="transactionUuid"
|
|
82
|
+
(depositPaymentFetched)="onDepositPaymentFetched($event)">
|
|
83
|
+
</co-deposit-payment>
|
|
84
|
+
</div>
|
|
85
|
+
<co-key-pad class="payment-to-pay-keypad" *ngIf="showKeyPad"
|
|
86
|
+
[showValue]="false"
|
|
87
|
+
[emitModelChangeOnEnter]="false"
|
|
88
|
+
[model]="paymentService.amountToPay"
|
|
89
|
+
(modelChange)="handleKeyPadModelChange($event)"
|
|
90
|
+
(enterClick)="handlePayment()"
|
|
91
|
+
></co-key-pad>
|
|
92
|
+
</div>
|
|
92
93
|
</div>
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
</co-dialog>
|
|
94
|
+
<co-dialog *ngIf="paymentService.showPspQrCode" (closeClick)="paymentService.showPspQrCode = false">
|
|
95
|
+
<co-payment-qr-code
|
|
96
|
+
[qrCodeImage]="paymentService.qrCodeImage"
|
|
97
|
+
></co-payment-qr-code>
|
|
98
|
+
</co-dialog>
|
|
99
99
|
`,
|
|
100
100
|
providers: [
|
|
101
101
|
TransactionPaymentService
|
|
@@ -106,4 +106,4 @@ PaymentComponent.decorators = [
|
|
|
106
106
|
PaymentComponent.propDecorators = {
|
|
107
107
|
showClass: [{ type: HostBinding, args: ["class.co-payment",] }]
|
|
108
108
|
};
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9wYXltZW50L3BheW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFVLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBNEZwRixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsK0JBQStCO0lBdkZyRTs7UUEwRlMsY0FBUyxHQUFZLElBQUksQ0FBQztJQVluQyxDQUFDO0lBUlEsb0JBQW9CLENBQUMsWUFBMEIsRUFBRSxLQUFhO1FBQ25FLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsYUFBcUI7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQzs7O1lBckdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0VUO2dCQUNELFNBQVMsRUFBRTtvQkFDVCx5QkFBeUI7aUJBQzFCO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7d0JBR0UsV0FBVyxTQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25QYXltZW50QmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vY29yZS9iYXNlL3RyYW5zYWN0aW9uLXBheW1lbnQtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUGF5bWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tcGF5bWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYXNoRHJhd2VyfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtZHJhd2VyLmJvXCI7XHJcbmltcG9ydCB7Q2FzaFJlZ2lzdGVyfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2Nhc2gtcmVnaXN0ZXJcIjtcclxuaW1wb3J0IHtDYXNoRHJhd2Vyc1JlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY2FzaC1kcmF3ZXJzLXJlcXVlc3RcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXBheW1lbnRcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1tZXRob2RzLXJlZ2lzdGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1tZXRob2RzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtbWV0aG9kcy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGF5bWVudC1oZWFkZXItdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwiJ1NFTEVDVCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1zcGFuIGNsYXNzPVwicGF5bWVudC1oZWFkZXItdGl0bGUgZXh0cmFcIiBbdGV4dENvbnRlbnRdPVwiJ0ZSRUUnIHwgbG9jYWxpemU6ZmFsc2VcIj48L3NwYW4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGF5bWVudC1oZWFkZXItdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwiJ1BBWU1FTlRfTUVUSE9EJyB8IGxvY2FsaXplOmZhbHNlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtbWV0aG9kcyBjby1zbWFsbC1zY3JvbGxiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1sb2FkZXIgY2xhc3M9XCJsb2FkZXJcIiAqbmdJZj1cInNob3dMb2FkZXJcIj48L2NvLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0xvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1wYXltZW50LXRpbGUgKm5nRm9yPVwibGV0IHBheW1lbnRNZXRob2Qgb2YgcGF5bWVudE1ldGhvZHM7IGxldCBpbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbWFnZV09XCJwYXltZW50TWV0aG9kLmltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJwYXltZW50TWV0aG9kLnBheW1lbnQuZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInBheW1lbnRNZXRob2RJZHggPT09IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJwYXltZW50TWV0aG9kU2VsZWN0ZWQocGF5bWVudE1ldGhvZC5wYXltZW50LCBpbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLXBheW1lbnQtdGlsZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1jYXNoLXJlZ2lzdGVyLXdyYXBwZXJcIiAqbmdJZj1cInNob3dDYXNoUmVnaXN0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWNhc2gtcmVnaXN0ZXItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBheW1lbnQtaGVhZGVyLXRpdGxlXCIgW3RleHRDb250ZW50XT1cIidTRUxFQ1RfQ0FTSF9SRUdJU1RFUicgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LW1ldGhvZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1wYXltZW50LXRpbGUgKm5nRm9yPVwibGV0IGNhc2hSZWdpc3RlciBvZiBjYXNoUmVnaXN0ZXJzOyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImNhc2hSZWdpc3Rlci5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cImNhc2hSZWdpc3Rlci5kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJjYXNoUmVnaXN0ZXJJZHggPT09IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImNhc2hSZWdpc3RlclNlbGVjdGVkKGNhc2hSZWdpc3RlciwgaW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L2NvLXBheW1lbnQtdGlsZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXRvLXBheS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtdG8tcGF5LXRvdGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXRvLXBheS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGF5bWVudC1oZWFkZXItdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwiJ1RPVEFMX0FNT1VOVF9UT19QQVknIHwgbG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBheW1lbnQtdG90YWwtcGF5XCIgW3RleHRDb250ZW50XT1cInBheW1lbnRTZXJ2aWNlLmFtb3VudFRvUGF5IHwgY29DdXJyZW5jeTogdHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWlucHV0LWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1pbnB1dC1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tcGF5bWVudC10by1wYXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbW91bnRUb1BheV09XCJwYXltZW50U2VydmljZS5hbW91bnRUb1BheVwiPjwvY28tcGF5bWVudC10by1wYXk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtdG8tcGF5LWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2hlY2tEdW90b25lKVwiIChjbGljayk9XCJoYW5kbGVQYXltZW50KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYXltZW50U2VydmljZS5hbW91bnRUb1BheSA9PT0gMFwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1ib29rZGF0ZVwiICpuZ0lmPVwic2hvd1BheW1lbnREYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgWyhtb2RlbCldPVwicGF5bWVudERhdGVcIj48L2NvLWlucHV0LWRhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cInBheW1lbnRTZXJ2aWNlLnN0YXR1c01lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwicGF5bWVudFNlcnZpY2Uuc3RhdHVzTWVzc2FnZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGVwb3NpdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tZGVwb3NpdC1wYXltZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2JyYW5jaF09XCJicmFuY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvblV1aWRdPVwidHJhbnNhY3Rpb25VdWlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVwb3NpdFBheW1lbnRGZXRjaGVkKT1cIm9uRGVwb3NpdFBheW1lbnRGZXRjaGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPC9jby1kZXBvc2l0LXBheW1lbnQ+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGNvLWtleS1wYWQgY2xhc3M9XCJwYXltZW50LXRvLXBheS1rZXlwYWRcIiAqbmdJZj1cInNob3dLZXlQYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsdWVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtlbWl0TW9kZWxDaGFuZ2VPbkVudGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwicGF5bWVudFNlcnZpY2UuYW1vdW50VG9QYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVLZXlQYWRNb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZW50ZXJDbGljayk9XCJoYW5kbGVQYXltZW50KClcIlxyXG4gICAgICAgICAgICAgID48L2NvLWtleS1wYWQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxjby1kaWFsb2cgKm5nSWY9XCJwYXltZW50U2VydmljZS5zaG93UHNwUXJDb2RlXCIgKGNsb3NlQ2xpY2spPVwicGF5bWVudFNlcnZpY2Uuc2hvd1BzcFFyQ29kZSA9IGZhbHNlXCI+XHJcbiAgICAgICAgICA8Y28tcGF5bWVudC1xci1jb2RlXHJcbiAgICAgICAgICAgICAgICAgIFtxckNvZGVJbWFnZV09XCJwYXltZW50U2VydmljZS5xckNvZGVJbWFnZVwiXHJcbiAgICAgICAgICA+PC9jby1wYXltZW50LXFyLWNvZGU+XHJcbiAgICAgIDwvY28tZGlhbG9nPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBUcmFuc2FjdGlvblBheW1lbnRTZXJ2aWNlXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50Q29tcG9uZW50IGV4dGVuZHMgVHJhbnNhY3Rpb25QYXltZW50QmFzZUNvbXBvbmVudCB7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXBheW1lbnRcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgYWN0aXZlQ2FzaFJlZ2lzdGVyOiBDYXNoUmVnaXN0ZXI7XHJcbiAgcHVibGljIGRlcG9zaXRBbW91bnQ6IG51bWJlcjtcclxuXHJcbiAgcHVibGljIGNhc2hSZWdpc3RlclNlbGVjdGVkKGNhc2hSZWdpc3RlcjogQ2FzaFJlZ2lzdGVyLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBzdXBlci5jYXNoUmVnaXN0ZXJTZWxlY3RlZChjYXNoUmVnaXN0ZXIsIGluZGV4KTtcclxuICAgIHRoaXMuYWN0aXZlQ2FzaFJlZ2lzdGVyID0gY2FzaFJlZ2lzdGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRGVwb3NpdFBheW1lbnRGZXRjaGVkKGRlcG9zaXRBbW91bnQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5kZXBvc2l0QW1vdW50ID0gZGVwb3NpdEFtb3VudDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -60,6 +60,7 @@ export class TransactionHeaderPopupPaymentComponent extends TransactionHeaderPop
|
|
|
60
60
|
this._paymentSubs.push(this.transactionEventService.transactionPaymentDone.subscribe(() => {
|
|
61
61
|
this._getDepositInfo();
|
|
62
62
|
this._getOutstandingAmounts();
|
|
63
|
+
this.handleCloseDialog();
|
|
63
64
|
}), this.screenConfigService.configSet.subscribe((configObjects) => this._getObjectConfiguration(configObjects)));
|
|
64
65
|
this.showCashOnDelivery = yield this.transactionService.getInternalParameter(InternalParam.SellDirectlyFromSuppl);
|
|
65
66
|
});
|
|
@@ -91,7 +92,7 @@ export class TransactionHeaderPopupPaymentComponent extends TransactionHeaderPop
|
|
|
91
92
|
this.cashOnDelivery = value;
|
|
92
93
|
}
|
|
93
94
|
showPaymentButton() {
|
|
94
|
-
return this.orderPaymentAnalysis.some(t => t.outstandingAmount
|
|
95
|
+
return this.orderPaymentAnalysis.some(t => t.outstandingAmount !== 0) && this.chosenAmountToPay !== 0;
|
|
95
96
|
}
|
|
96
97
|
openPayment(event) {
|
|
97
98
|
var _a;
|
|
@@ -99,8 +100,8 @@ export class TransactionHeaderPopupPaymentComponent extends TransactionHeaderPop
|
|
|
99
100
|
event.preventDefault();
|
|
100
101
|
event.stopPropagation();
|
|
101
102
|
this.transactionIdToPay = (_a = this.transactionIdToPay) !== null && _a !== void 0 ? _a : this.transactionInfo.id;
|
|
102
|
-
if (this.orderPaymentAnalysis.filter(payment => payment.transactionKind === this.transKind.SalesInvoice && payment.outstandingAmount
|
|
103
|
-
const lastTransaction = this.orderPaymentAnalysis.filter(payment => payment.transactionKind === this.transKind.SalesInvoice && payment.outstandingAmount
|
|
103
|
+
if (this.orderPaymentAnalysis.filter(payment => payment.transactionKind === this.transKind.SalesInvoice && payment.outstandingAmount !== 0).length === 1) {
|
|
104
|
+
const lastTransaction = this.orderPaymentAnalysis.filter(payment => payment.transactionKind === this.transKind.SalesInvoice && payment.outstandingAmount !== 0)[0];
|
|
104
105
|
this.transactionIdToPay = lastTransaction.transactionId;
|
|
105
106
|
}
|
|
106
107
|
if (yield this.lockTransaction()) {
|
|
@@ -173,20 +174,20 @@ export class TransactionHeaderPopupPaymentComponent extends TransactionHeaderPop
|
|
|
173
174
|
}
|
|
174
175
|
}
|
|
175
176
|
_updateChosenAmountToPay() {
|
|
176
|
-
if (this.orderPaymentAnalysis.some(t => t.outstandingAmount
|
|
177
|
+
if (this.orderPaymentAnalysis.some(t => t.outstandingAmount !== 0) &&
|
|
177
178
|
this.orderPaymentAnalysis.filter(payment => payment.transactionKind === this.transKind.SalesInvoice).length === 0) {
|
|
178
179
|
this.chosenAmountToPay = this.paymentAnalysis.totalDeposit;
|
|
179
180
|
}
|
|
180
181
|
// Deposit only
|
|
181
182
|
if (this.orderPaymentAnalysis.filter(payment => payment.transactionKind === this.transKind.SalesOrder &&
|
|
182
|
-
payment.outstandingAmount
|
|
183
|
+
payment.outstandingAmount !== 0).length === 1) {
|
|
183
184
|
this.chosenAmountToPay = this.orderPaymentAnalysis[0].outstandingAmount;
|
|
184
185
|
}
|
|
185
|
-
if (this.orderPaymentAnalysis.filter(payment => (payment.transactionKind === this.transKind.SalesInvoice) && (payment.outstandingAmount
|
|
186
|
-
const remainingInvoice = this.orderPaymentAnalysis.filter(payment => (payment.transactionKind === this.transKind.SalesInvoice) && (payment.outstandingAmount
|
|
186
|
+
if (this.orderPaymentAnalysis.filter(payment => (payment.transactionKind === this.transKind.SalesInvoice) && (payment.outstandingAmount !== 0)).length === 1) {
|
|
187
|
+
const remainingInvoice = this.orderPaymentAnalysis.filter(payment => (payment.transactionKind === this.transKind.SalesInvoice) && (payment.outstandingAmount !== 0))[0];
|
|
187
188
|
this.chosenAmountToPay = remainingInvoice.outstandingAmount;
|
|
188
189
|
}
|
|
189
|
-
if (this.orderPaymentAnalysis.filter(payment => (payment.transactionKind === this.transKind.SalesInvoice) && (payment.outstandingAmount
|
|
190
|
+
if (this.orderPaymentAnalysis.filter(payment => (payment.transactionKind === this.transKind.SalesInvoice) && (payment.outstandingAmount !== 0)).length > 1) {
|
|
190
191
|
this.chosenAmountToPay = 0;
|
|
191
192
|
}
|
|
192
193
|
}
|
|
@@ -363,7 +364,7 @@ TransactionHeaderPopupPaymentComponent.decorators = [
|
|
|
363
364
|
<strong>{{ paymentInfo.paidAmount | coCurrency:true }}</strong>
|
|
364
365
|
</td>
|
|
365
366
|
<td>{{ paymentInfo.settledAmount | coCurrency:true }}</td>
|
|
366
|
-
<td [class.outstanding]="paymentInfo.outstandingAmount
|
|
367
|
+
<td [class.outstanding]="paymentInfo.outstandingAmount !== 0">
|
|
367
368
|
<strong>{{ paymentInfo.outstandingAmount | coCurrency:true }}</strong>
|
|
368
369
|
</td>
|
|
369
370
|
</tr>
|
|
@@ -448,4 +449,4 @@ TransactionHeaderPopupPaymentComponent.ctorParameters = () => [
|
|
|
448
449
|
TransactionHeaderPopupPaymentComponent.propDecorators = {
|
|
449
450
|
showClass: [{ type: HostBinding, args: ['class.co-transaction-header-popup-payment',] }]
|
|
450
451
|
};
|
|
451
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLXBheW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taGVhZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC90cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtcGF5bWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFxQixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUc5RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUNoSCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUMxRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDL0UsT0FBTyxFQUFD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QTBCO1lBQzFCLGtDQUFrQzs7O3dCQThQdkMsV0FBVyxTQUFDLDJDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25IZWFkZXJQb3B1cEJhc2VDb21wb25lbnR9IGZyb20gJy4vdHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkRlcG9zaXRQYXltZW50SW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWRlcG9zaXQtcGF5bWVudC1pbmZvLmJvJztcclxuaW1wb3J0IHtQYXltZW50QW5hbHlzaXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wYXltZW50LWFuYWx5c2lzLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2NyZWVuLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkltYWdlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1pbWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkRpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Zvcm1NYXN0ZXJTZXJ2aWNlfSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblJlbGF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1yZWxhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblBheW1lbnRDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLXBheW1lbnQtY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ludGVybmFsUGFyYW19IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ludGVybmFsLXBhcmFtLmVudW1cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkhlYWRlclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLWhlYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge09iamVjdENvbmZpZ3VyYXRpb259IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL29iamVjdC1jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHtDb0N1cnJlbmN5UGlwZX0gZnJvbSBcIi4uLy4uLy4uL3BpcGUvY28tY3VycmVuY3kucGlwZVwiO1xyXG5pbXBvcnQge09yZGVyUGF5bWVudEFuYWx5c2lzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItcGF5bWVudC1hbmFseXNpcy5ibyc7XHJcbmltcG9ydCB7T3JkZXJQYXltZW50QW5hbHlzaXNGaWx0ZXJ9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1wYXltZW50LWFuYWx5c2lzLWZpbHRlci5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25SZWdpc3RlcmVkUGF5bWVudEluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1yZWdpc3RlcmVkLXBheW1lbnQtaW5mby5ibyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBheW1lbnRDYXRlZ29yeSB7XHJcbiAgaW5kZXg6IG51bWJlcjtcclxuICB0aXRsZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLXRyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC1wYXltZW50JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLWNhdGVnb3J5LXdyYXBwZXIgY28tc21hbGwtc2Nyb2xsYmFyXCI+XHJcbiAgICAgICAgICA8Y28tZm9ybT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLXNlY3Rpb24tbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1BheURvd25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIidUT19QQVlfRE9XTicgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtdHdvLWNvbHVtbi1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLWRlcG9zaXQtcGVyY2VudGFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjZmdOYW1lcy5EZXBvc2l0UGVyY2VudGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NrQW5kU2F2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcG9zaXRVcGRhdGVkKT1cInNob3dPdXRzdGFuZGluZ0Ftb3VudHMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1oZWFkZXItZGVwb3NpdC1wZXJjZW50YWdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1kZXBvc2l0LWFtb3VudCBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtdG90YWxzLXByaWNlIHByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuRGVwb3NpdEFtb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NrQW5kU2F2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1c2luZXNzUnVsZUFwcGxpZWQpPVwic2hvd0J1c2luZXNzUnVsZUluZm8gPSAkZXZlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWRlcG9zaXQtYW1vdW50PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtdGhyZWUtY29sdW1uLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItdXNlLWRlcG9zaXQtcnVsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgIT09IHRyYW5zS2luZC5QdXJjaGFzZU9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuVXNlRGVwb3NpdFJ1bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9ja0FuZFNhdmVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24taGVhZGVyLXVzZS1kZXBvc2l0LXJ1bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLWF1dG8tcmVjYWxjdWxhdGUtZGVwb3NpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgIT09IHRyYW5zS2luZC5QdXJjaGFzZU9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuQXV0b1JlY2FsY3VsYXRlRGVwb3NpdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NrQW5kU2F2ZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1oZWFkZXItYXV0by1yZWNhbGN1bGF0ZS1kZXBvc2l0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1kaXZpZGUtZXZlbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uS2luZCAhPT0gdHJhbnNLaW5kLlB1cmNoYXNlT3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjZmdOYW1lcy5EaXZpZGVFdmVubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9ja0FuZFNhdmVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWRpdmlkZS1ldmVubHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLWJ1c2luZXNzLXJ1bGUtYXBwbGllZFwiICpuZ0lmPVwic2hvd0J1c2luZXNzUnVsZUluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNpcmNsZUV4Y2xhbWF0aW9uUmVndWxhcilcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidERVBPU0lUX0JVU0lORVNTX1JVTEVfQVBQTElFRCcgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtdHdvLWNvbHVtbi1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLWFtb3VudC10by1zZXR0bGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuQW1vdW50VG9TZXR0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9ja0FuZFNhdmVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWFtb3VudC10by1zZXR0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLWFscmVhZHktcGFpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjZmdOYW1lcy5Ub3RhbFBhaWREb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVE9UQUxfUEFJRF9ET1dOJyB8IGxvY2FsaXplXCIgW2ZvcmNlUmVhZG9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwicGFpZERvd25cIiBbZm9ybWF0UGlwZV09XCJjdXJyZW5jeVBpcGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNmZ05hbWVzLlNldHRsZWRTb0ZhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFVFRMRURfU09fRkFSJyB8IGxvY2FsaXplXCIgW2ZvcmNlUmVhZG9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwic2V0dGxlZFwiIFtmb3JtYXRQaXBlXT1cImN1cnJlbmN5UGlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtdHdvLWNvbHVtbi1ncmlkXCIgKm5nSWY9XCJzaG93Q2FzaE9uRGVsaXZlcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXNoLW9uLWRlbGl2ZXJ5LXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0NBU0hfT05fREVMSVZFUlknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZvcmNlUmVhZG9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJjYXNoT25EZWxpdmVyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0UGlwZV09XCJjdXJyZW5jeVBpcGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRGlyZWN0U2VsbEVuYWJsZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlRydWNrTW92aW5nUmVndWxhcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhc2hPbkRlbGl2ZXJ5TW9kYWxWaXNpYmxlID0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC10d28tY29sdW1uLWdyaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNmZ05hbWVzLlBheW1lbnRCdG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLXBheW1lbnQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uS2luZCAhPT0gdHJhbnNLaW5kLlB1cmNoYXNlT3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiKCdERUxJVkVSWV9UT1RBTCcgfCBsb2NhbGl6ZSkgfCBhcHBlbmQ6JyAvICcgfCBhcHBlbmQ6KCdUT19TRVRUTEUnIHwgbG9jYWxpemU6ZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2tBbmRTYXZlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1wYXltZW50LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXltZW50QW5hbHlzaXNcIiBjbGFzcz1cInRyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtc2VjdGlvbi1sYWJlbFwiIFt0ZXh0Q29udGVudF09XCInVE9fSU5WT0lDRScgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpbGwtdG9wLXBheS1zdGF0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbdGV4dENvbnRlbnRdPVwiJ1RPX0JFX0lOVk9JQ0VEJyB8IGxvY2FsaXplXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW1vdW50XCI+e3sgcGF5bWVudEFuYWx5c2lzPy50b3RhbFRvSW52b2ljZSB8IGNvQ3VycmVuY3k6dHJ1ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFt0ZXh0Q29udGVudF09XCInQUxSRUFEWV9JTlZPSUNFRCcgfCBsb2NhbGl6ZVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudFwiPnt7IHBheW1lbnRBbmFseXNpcz8udG90YWxEZXBvc2l0SW52b2ljZSB8IGNvQ3VycmVuY3k6dHJ1ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFt0ZXh0Q29udGVudF09XCInU1RJTExfVE9fUEFZJyB8IGxvY2FsaXplXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW1vdW50XCIgW2NsYXNzLm91dHN0YW5kaW5nXT1cInBheW1lbnRBbmFseXNpcz8udG90YWxUb1BheSA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwYXltZW50QW5hbHlzaXM/LnRvdGFsVG9QYXkgfCBjb0N1cnJlbmN5OnRydWUgfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9yZGVyUGF5bWVudEFuYWx5c2lzLmxlbmd0aCA+IDBcIiBjbGFzcz1cInBheW1lbnQtaW5mb3JtYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2F2ZS1idXR0b24gcGF5bWVudC1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1BheW1lbnRCdXR0b24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DcmVkaXRDYXJkUmVndWxhcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUGF5bWVudCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtY2F0ZWdvcmllc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBheW1lbnQtY2F0ZWdvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiYWN0aXZlQ2F0ZWdvcnkuaW5kZXggPT09IGNhdGVnb3J5LmluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIHBheW1lbnRDYXRlZ29yaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNhdGVnb3J5Q2xpY2soY2F0ZWdvcnkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgW3RleHRDb250ZW50XT1cImNhdGVnb3J5LnRpdGxlIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDx0YWJsZSAqbmdJZj1cImFjdGl2ZUNhdGVnb3J5LmluZGV4ID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibGVmdFwiICpuZ0lmPVwic2hvd0ludm9pY2VTZWxlY3Rpb24oKVwiIFt0ZXh0Q29udGVudF09XCInUEFZJyB8IGxvY2FsaXplXCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJsZWZ0XCIgW3RleHRDb250ZW50XT1cIidERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFt0ZXh0Q29udGVudF09XCInQU1PVU5UMicgfCBsb2NhbGl6ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFt0ZXh0Q29udGVudF09XCInUEFJRCcgfCBsb2NhbGl6ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFt0ZXh0Q29udGVudF09XCInU0VUVExFRCcgfCBsb2NhbGl6ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFt0ZXh0Q29udGVudF09XCInT1VUU1RBTkRJTkcnIHwgbG9jYWxpemVcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHBheW1lbnRJbmZvIG9mIG9yZGVyUGF5bWVudEFuYWx5c2lzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGVmdFwiICpuZ0lmPVwic2hvd0ludm9pY2VTZWxlY3Rpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtcmFkaW8tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXltZW50SW5mby50cmFuc2FjdGlvbktpbmQgPT09IHRyYW5zS2luZC5TYWxlc0ludm9pY2UgJiYgcGF5bWVudEluZm8ub3V0c3RhbmRpbmdBbW91bnQgIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdC13aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicGF5bWVudEluZm8uaXNTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdEludm9pY2VMaW5lcyhwYXltZW50SW5mbylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXltZW50SW5mby50cmFuc2FjdGlvbktpbmQgPT09IHRyYW5zS2luZC5TYWxlc09yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiJ0RFUE9TSVQnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBheW1lbnRJbmZvLnRyYW5zYWN0aW9uS2luZCA9PT0gdHJhbnNLaW5kLlNhbGVzSW52b2ljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInSU5WT0lDRScgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ge3sgcGF5bWVudEluZm8udHJhbnNhY3Rpb25OdW1iZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IHBheW1lbnRJbmZvLnRyYW5zYWN0aW9uRGF0ZSB8IGRhdGU6J2RkLU1NLXl5eXknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHN0cm9uZz57eyBwYXltZW50SW5mby5pbnZvaWNlQW1vdW50IHwgY29DdXJyZW5jeTp0cnVlIH19PC9zdHJvbmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgW2NsYXNzLnBhaWRdPVwicGF5bWVudEluZm8ucGFpZEFtb3VudCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwYXltZW50SW5mby5wYWlkQW1vdW50IHwgY29DdXJyZW5jeTp0cnVlIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcGF5bWVudEluZm8uc2V0dGxlZEFtb3VudCB8IGNvQ3VycmVuY3k6dHJ1ZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtjbGFzcy5vdXRzdGFuZGluZ109XCJwYXltZW50SW5mby5vdXRzdGFuZGluZ0Ftb3VudCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwYXltZW50SW5mby5vdXRzdGFuZGluZ0Ftb3VudCB8IGNvQ3VycmVuY3k6dHJ1ZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVDYXRlZ29yeS5pbmRleCA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZWdpc3RlcmVkUGF5bWVudEluZm8gJiYgcmVnaXN0ZXJlZFBheW1lbnRJbmZvLnBheW1lbnRzLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCInTk9UX0ZPVU5EJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwicmVnaXN0ZXJlZFBheW1lbnRJbmZvICYmIHJlZ2lzdGVyZWRQYXltZW50SW5mby5wYXltZW50cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibGVmdFwiIFt0ZXh0Q29udGVudF09XCInREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggW3RleHRDb250ZW50XT1cIidBTU9VTlQyJyB8IGxvY2FsaXplXCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFt0ZXh0Q29udGVudF09XCInREFURScgfCBsb2NhbGl6ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHBheW1lbnRJbmZvIG9mIHJlZ2lzdGVyZWRQYXltZW50SW5mby5wYXltZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsZWZ0XCI+e3sgcGF5bWVudEluZm8ucmVmZXJlbmNlIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+e3sgcGF5bWVudEluZm8uYW1vdW50IHwgY29DdXJyZW5jeTp0cnVlIH19PC9zdHJvbmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHBheW1lbnRJbmZvLnBheW1lbnREYXRlVGltZSB8IGRhdGU6J2RkLU1NLXl5eXknIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvY28tZm9ybT5cclxuXHJcbiAgICAgICAgICA8Y28tY2FzaC1vbi1kZWxpdmVyeS1tb2RhbFxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNhc2hPbkRlbGl2ZXJ5TW9kYWxWaXNpYmxlXCJcclxuICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uSW5mb1V1aWRdPVwidHJhbnNhY3Rpb25JbmZvLnV1aWRcIlxyXG4gICAgICAgICAgICAgICAgICAoY2FzaEFtb3VudCk9XCJnZXRDYXNoQW1vdW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoc2hvd0Nhc2hPbkRlbGl2ZXJ5TW9kYWwpPVwic2hvd0Nhc2hPbkRlbGl2ZXJ5TW9kYWwoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9jby1jYXNoLW9uLWRlbGl2ZXJ5LW1vZGFsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxjby1kaWFsb2dcclxuICAgICAgICAgICAgICBjbGFzcz1cInBheW1lbnQtZGlhbG9nXCJcclxuICAgICAgICAgICAgICBbbW9kYWxdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dQYXltZW50RGlhbG9nXCJcclxuICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJoYW5kbGVDbG9zZURpYWxvZygpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctd3JhcHBlci1wb3B1cC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNyZWRpdENhcmRSZWd1bGFyQ2hlY2spXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCInUEFZTUVOVF9NRVRIT0QnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8Y28tcGF5bWVudFxyXG4gICAgICAgICAgICAgICAgICBbdHJhbnNJZF09XCJ0cmFuc2FjdGlvbklkVG9QYXlcIlxyXG4gICAgICAgICAgICAgICAgICBbYnJhbmNoXT1cInRyYW5zYWN0aW9uSW5mby5icmFuY2g/LnJlbGF0aW9uTnJcIlxyXG4gICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25VdWlkXT1cInRyYW5zYWN0aW9uSW5mby51dWlkXCJcclxuICAgICAgICAgICAgICAgICAgW2Ftb3VudF09XCJjaG9zZW5BbW91bnRUb1BheVwiXHJcbiAgICAgICAgICAgICAgICAgIFtyZW1haW5pbmdQYXltZW50XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbY3VycmVuY3lJZF09XCJ0cmFuc2FjdGlvbkluZm8uY3VycmVuY3lJZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkb05vdEZldGNoQW1vdW50VG9QYXlGb3JSZW1haW5pbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93UGF5bWVudERhdGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+PC9jby1wYXltZW50PlxyXG4gICAgICA8L2NvLWRpYWxvZz5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uSGVhZGVyUG9wdXBQYXltZW50Q29tcG9uZW50IGV4dGVuZHMgVHJhbnNhY3Rpb25IZWFkZXJQb3B1cEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby10cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtcGF5bWVudCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGN1cnJlbmN5UGlwZTogdHlwZW9mIENvQ3VycmVuY3lQaXBlID0gQ29DdXJyZW5jeVBpcGU7XHJcbiAgcHVibGljIHBhaWREb3duOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBzZXR0bGVkOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBjYXNoT25EZWxpdmVyeTogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgc2hvd0J1c2luZXNzUnVsZUluZm86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1BheURvd25MYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYXNoT25EZWxpdmVyeU1vZGFsVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93Q2FzaE9uRGVsaXZlcnk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1BheW1lbnREaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyBwdWJsaWMgb3V0c3RhbmRpbmdDdXN0b21lckFtb3VudDogT3V0c3RhbmRpbmdBbW91bnRDdXN0b21lcltdID0gW107XHJcbiAgcHVibGljIG9yZGVyUGF5bWVudEFuYWx5c2lzOiBPcmRlclBheW1lbnRBbmFseXNpc1tdID0gW107XHJcbiAgcHVibGljIHBheW1lbnRBbmFseXNpczogUGF5bWVudEFuYWx5c2lzO1xyXG4gIHB1YmxpYyBwYXltZW50Q2F0ZWdvcmllczogUGF5bWVudENhdGVnb3J5W10gPSBbXHJcbiAgICB7aW5kZXg6IDAsIHRpdGxlOiBcIlBBWU1FTlRfQU5BTFlTSVNcIn0sXHJcbiAgICB7aW5kZXg6IDEsIHRpdGxlOiBcIlBBWU1FTlRTX01BREVcIn1cclxuICBdO1xyXG4gIHB1YmxpYyBhY3RpdmVDYXRlZ29yeTogUGF5bWVudENhdGVnb3J5ID0gdGhpcy5wYXltZW50Q2F0ZWdvcmllc1swXTtcclxuICBwdWJsaWMgY2hvc2VuQW1vdW50VG9QYXk6IG51bWJlcjtcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25JZFRvUGF5OiBudW1iZXI7XHJcbiAgcHVibGljIHJlZ2lzdGVyZWRQYXltZW50SW5mbzogVHJhbnNhY3Rpb25SZWdpc3RlcmVkUGF5bWVudEluZm87XHJcblxyXG4gIHByaXZhdGUgX3BheW1lbnRTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkhlYWRlclNlcnZpY2U6IFRyYW5zYWN0aW9uSGVhZGVyU2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgaW1hZ2VTZXJ2aWNlOiBUcmFuc2FjdGlvbkltYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogVHJhbnNhY3Rpb25EaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGZvcm1NYXN0ZXJTZXJ2aWNlOiBGb3JtTWFzdGVyU2VydmljZSxcclxuICAgIHByb3RlY3RlZCByZWxhdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uUmVsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGF5bWVudENvbm5lY3RvclNlcnZpY2U6IFRyYW5zYWN0aW9uUGF5bWVudENvbm5lY3RvclNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKHRyYW5zYWN0aW9uSGVhZGVyU2VydmljZSwgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsIHNlcnZpY2UsIGljb25DYWNoZVNlcnZpY2UsIHRyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsIGRpY3Rpb25hcnlTZXJ2aWNlLCBpbWFnZVNlcnZpY2UsIGNoYW5nZURldGVjdG9yLCBkaWFsb2dTZXJ2aWNlLCBmb3JtTWFzdGVyU2VydmljZSwgcmVsYXRpb25TZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuX3BheW1lbnRTdWJzLnB1c2goXHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UudHJhbnNhY3Rpb25QYXltZW50RG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2dldERlcG9zaXRJbmZvKCk7XHJcbiAgICAgICAgdGhpcy5fZ2V0T3V0c3RhbmRpbmdBbW91bnRzKCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLnNjcmVlbkNvbmZpZ1NlcnZpY2UuY29uZmlnU2V0LnN1YnNjcmliZSgoY29uZmlnT2JqZWN0czogT2JqZWN0Q29uZmlndXJhdGlvbltdKSA9PiB0aGlzLl9nZXRPYmplY3RDb25maWd1cmF0aW9uKGNvbmZpZ09iamVjdHMpKVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2hvd0Nhc2hPbkRlbGl2ZXJ5ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0SW50ZXJuYWxQYXJhbWV0ZXIoSW50ZXJuYWxQYXJhbS5TZWxsRGlyZWN0bHlGcm9tU3VwcGwpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLl9wYXltZW50U3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIGF3YWl0IHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2F0ZWdvcnlDbGljayhjYXQ6IFBheW1lbnRDYXRlZ29yeSk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVDYXRlZ29yeSA9IGNhdDtcclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmVDYXRlZ29yeS5pbmRleCA9PT0gMSkge1xyXG4gICAgICB0aGlzLl9nZXRSZWdpc3RlcmVkUGF5bWVudEluZm8oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzaG93T3V0c3RhbmRpbmdBbW91bnRzKCkge1xyXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnNhdmVUcmFuc2FjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dDYXNoT25EZWxpdmVyeU1vZGFsKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhc2hPbkRlbGl2ZXJ5TW9kYWxWaXNpYmxlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2FzaEFtb3VudCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhc2hPbkRlbGl2ZXJ5ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1BheW1lbnRCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5zb21lKHQgPT4gdC5vdXRzdGFuZGluZ0Ftb3VudCA+IDApICYmIHRoaXMuY2hvc2VuQW1vdW50VG9QYXkgPiAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9wZW5QYXltZW50KGV2ZW50OiBNb3VzZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uSWRUb1BheSA9IHRoaXMudHJhbnNhY3Rpb25JZFRvUGF5ID8/IHRoaXMudHJhbnNhY3Rpb25JbmZvLmlkO1xyXG4gICAgaWYgKHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMuZmlsdGVyKHBheW1lbnQgPT4gcGF5bWVudC50cmFuc2FjdGlvbktpbmQgPT09IHRoaXMudHJhbnNLaW5kLlNhbGVzSW52b2ljZSAmJiBwYXltZW50Lm91dHN0YW5kaW5nQW1vdW50ID4gMCkubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IGxhc3RUcmFuc2FjdGlvbiA9IHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMuZmlsdGVyKHBheW1lbnQgPT4gcGF5bWVudC50cmFuc2FjdGlvbktpbmQgPT09IHRoaXMudHJhbnNLaW5kLlNhbGVzSW52b2ljZSAmJiBwYXltZW50Lm91dHN0YW5kaW5nQW1vdW50ID4gMClbMF07XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25JZFRvUGF5ID0gbGFzdFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSWQ7XHJcbiAgICB9XHJcbiAgICBpZiAoYXdhaXQgdGhpcy5sb2NrVHJhbnNhY3Rpb24oKSkge1xyXG4gICAgICB0aGlzLnNob3dQYXltZW50RGlhbG9nID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDbG9zZURpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1BheW1lbnREaWFsb2cgPSBmYWxzZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLnJvbGxiYWNrKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNEaXJlY3RTZWxsRW5hYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uTGluZXMuc29tZShsaW5lID0+IGxpbmUuZGlyZWN0U2VsbCAmJiBsaW5lLmRyb3BTaGlwbWVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0ludm9pY2VTZWxlY3Rpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5maWx0ZXIocGF5bWVudCA9PiBwYXltZW50LnRyYW5zYWN0aW9uS2luZCA9PT0gdGhpcy50cmFuc0tpbmQuU2FsZXNJbnZvaWNlICYmIHBheW1lbnQub3V0c3RhbmRpbmdBbW91bnQgIT09IDApLmxlbmd0aCA+IDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VsZWN0SW52b2ljZUxpbmVzKHBheW1lbnRJbmZvOiBPcmRlclBheW1lbnRBbmFseXNpcyk6IHZvaWQge1xyXG4gICAgdGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5mb3JFYWNoKGludm9pY2UgPT4gKGludm9pY2UgYXMgYW55KS5pc1NlbGVjdGVkID0gZmFsc2UpO1xyXG4gICAgKHBheW1lbnRJbmZvIGFzIGFueSkuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICB0aGlzLmNob3NlbkFtb3VudFRvUGF5ID0gcGF5bWVudEluZm8ub3V0c3RhbmRpbmdBbW91bnQ7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uSWRUb1BheSA9IHBheW1lbnRJbmZvLnRyYW5zYWN0aW9uSWQ7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25TZXQoKSB7XHJcbiAgICBzdXBlci50cmFuc2FjdGlvblNldCgpO1xyXG4gICAgdGhpcy5fZ2V0RGVwb3NpdEluZm8oKTtcclxuICAgIHRoaXMuX2dldE91dHN0YW5kaW5nQW1vdW50cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0RGVwb3NpdEluZm8oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wYXltZW50Q29ubmVjdG9yU2VydmljZS5nZXREZXBvc2l0UGF5bWVudEluZm8odGhpcy50cmFuc2FjdGlvbkluZm8udXVpZCkudGhlbigoaW5mbzogVHJhbnNhY3Rpb25EZXBvc2l0UGF5bWVudEluZm8pID0+IHtcclxuICAgICAgaWYgKGluZm8pIHtcclxuICAgICAgICB0aGlzLnBhaWREb3duID0gaW5mby5kZXBvc2l0UGF5bWVudEFtb3VudFRvdGFsO1xyXG4gICAgICAgIHRoaXMuc2V0dGxlZCA9IGluZm8uZGVwb3NpdEFtb3VudFNldHRsZWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0T3V0c3RhbmRpbmdBbW91bnRzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8ga2VlcGluZyB0aGlzIGZvciBub3csIGNvdWxkIGJlIHRoYXQgd2UgbmVlZCB0byB1c2UgdGhpcyBjYWxsIGFmdGVyIGFsbFxyXG4gICAgLy8gY29uc3Qgb3V0c3RhbmRpbmdBbW91bnRzUmVxdWVzdDogT3V0c3RhbmRpbmdBbW91bnRGaWx0ZXJDdXN0b21lciA9IG5ldyBPdXRzdGFuZGluZ0Ftb3VudEZpbHRlckN1c3RvbWVyKCk7XHJcbiAgICAvLyBvdXRzdGFuZGluZ0Ftb3VudHNSZXF1ZXN0LnRyYW5zYWN0aW9uSWQgPSB0aGlzLnRyYW5zYWN0aW9uSW5mby5pZDtcclxuICAgIC8vIHRoaXMuX3BheW1lbnRDb25uZWN0b3JTZXJ2aWNlLmdldE91dHN0YW5kaW5nQ3VzdG9tZXJBbW91bnRzKG91dHN0YW5kaW5nQW1vdW50c1JlcXVlc3QpLnRoZW4oKHJlc3BvbnNlOiBPdXRzdGFuZGluZ0Ftb3VudEN1c3RvbWVyW10pID0+IHtcclxuICAgIC8vICAgdGhpcy5vdXRzdGFuZGluZ0N1c3RvbWVyQW1vdW50ID0gcmVzcG9uc2U7XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICBjb25zdCBwYXltZW50QW5hbHlzaXNSZXF1ZXN0OiBPcmRlclBheW1lbnRBbmFseXNpc0ZpbHRlciA9IG5ldyBPcmRlclBheW1lbnRBbmFseXNpc0ZpbHRlcigpO1xyXG4gICAgcGF5bWVudEFuYWx5c2lzUmVxdWVzdC50cmFuc2FjdGlvbklkID0gdGhpcy50cmFuc2FjdGlvbkluZm8uaWQ7XHJcbiAgICBhd2FpdCB0aGlzLl9wYXltZW50Q29ubmVjdG9yU2VydmljZS5nZXRTYWxlc09yZGVyUGF5bWVudEFuYWx5c2lzKHBheW1lbnRBbmFseXNpc1JlcXVlc3QpLnRoZW4oKHJlc3BvbnNlOiBPcmRlclBheW1lbnRBbmFseXNpc1tdKSA9PiB7XHJcbiAgICAgIHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMgPSByZXNwb25zZTtcclxuICAgICAgdGhpcy5vcmRlclBheW1lbnRBbmFseXNpcyA9IHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMubWFwKHRyYW5zYWN0aW9uID0+ICh7XHJcbiAgICAgICAgLi4udHJhbnNhY3Rpb24sXHJcbiAgICAgICAgaXNTZWxlY3RlZDogZmFsc2VcclxuICAgICAgfSkpIGFzIHVua25vd24gYXMgT3JkZXJQYXltZW50QW5hbHlzaXNbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuX3BheW1lbnRDb25uZWN0b3JTZXJ2aWNlLmdldFBheW1lbnRBbmFseXNpcyh0aGlzLnRyYW5zYWN0aW9uSW5mby51dWlkKS50aGVuKChyZXNwb25zZTogUGF5bWVudEFuYWx5c2lzKSA9PiB7XHJcbiAgICAgIHRoaXMucGF5bWVudEFuYWx5c2lzID0gcmVzcG9uc2U7XHJcbiAgICAgIHRoaXMuY2hvc2VuQW1vdW50VG9QYXkgPSB0aGlzLnBheW1lbnRBbmFseXNpcy50b3RhbFRvUGF5O1xyXG4gICAgICB0aGlzLl91cGRhdGVDaG9zZW5BbW91bnRUb1BheSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRSZWdpc3RlcmVkUGF5bWVudEluZm8oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwYXltZW50SW5mbzogVHJhbnNhY3Rpb25SZWdpc3RlcmVkUGF5bWVudEluZm8gPSBhd2FpdCB0aGlzLl9wYXltZW50Q29ubmVjdG9yU2VydmljZS5nZXRSZWdpc3RlcmVkUGF5bWVudEluZm8odGhpcy50cmFuc2FjdGlvbkluZm8udXVpZCk7XHJcbiAgICBpZiAocGF5bWVudEluZm8pIHtcclxuICAgICAgdGhpcy5yZWdpc3RlcmVkUGF5bWVudEluZm8gPSBwYXltZW50SW5mbztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE9iamVjdENvbmZpZ3VyYXRpb24oY29uZmlnT2JqZWN0czogT2JqZWN0Q29uZmlndXJhdGlvbltdKTogdm9pZCB7XHJcbiAgICBpZiAoY29uZmlnT2JqZWN0cyAmJiBjb25maWdPYmplY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zaG93UGF5RG93bkxhYmVsID0gdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5jZmdOYW1lcy5EZXBvc2l0UGVyY2VudGFnZSkuaW1tZWRpYXRlbHlWaXNpYmxlKCkgfHxcclxuICAgICAgICB0aGlzLnNjcmVlbkNvbmZpZ1NlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmNmZ05hbWVzLkRlcG9zaXRBbW91bnQpLmltbWVkaWF0ZWx5VmlzaWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlQ2hvc2VuQW1vdW50VG9QYXkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5zb21lKHQgPT4gdC5vdXRzdGFuZGluZ0Ftb3VudCA+IDApICYmXHJcbiAgICAgIHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMuZmlsdGVyKHBheW1lbnQgPT4gcGF5bWVudC50cmFuc2FjdGlvbktpbmQgPT09IHRoaXMudHJhbnNLaW5kLlNhbGVzSW52b2ljZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY2hvc2VuQW1vdW50VG9QYXkgPSB0aGlzLnBheW1lbnRBbmFseXNpcy50b3RhbERlcG9zaXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGVwb3NpdCBvbmx5XHJcbiAgICBpZiAodGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5maWx0ZXIocGF5bWVudCA9PiBwYXltZW50LnRyYW5zYWN0aW9uS2luZCA9PT0gdGhpcy50cmFuc0tpbmQuU2FsZXNPcmRlciAmJlxyXG4gICAgICBwYXltZW50Lm91dHN0YW5kaW5nQW1vdW50ID4gMCkubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHRoaXMuY2hvc2VuQW1vdW50VG9QYXkgPSB0aGlzLm9yZGVyUGF5bWVudEFuYWx5c2lzWzBdLm91dHN0YW5kaW5nQW1vdW50O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9yZGVyUGF5bWVudEFuYWx5c2lzLmZpbHRlcihwYXltZW50ID0+IChwYXltZW50LnRyYW5zYWN0aW9uS2luZCA9PT0gdGhpcy50cmFuc0tpbmQuU2FsZXNJbnZvaWNlKSAmJiAocGF5bWVudC5vdXRzdGFuZGluZ0Ftb3VudCA+IDApKS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc3QgcmVtYWluaW5nSW52b2ljZSA9IHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMuZmlsdGVyKHBheW1lbnQgPT4gKHBheW1lbnQudHJhbnNhY3Rpb25LaW5kID09PSB0aGlzLnRyYW5zS2luZC5TYWxlc0ludm9pY2UpICYmIChwYXltZW50Lm91dHN0YW5kaW5nQW1vdW50ID4gMCkpWzBdO1xyXG4gICAgICB0aGlzLmNob3NlbkFtb3VudFRvUGF5ID0gcmVtYWluaW5nSW52b2ljZS5vdXRzdGFuZGluZ0Ftb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5maWx0ZXIocGF5bWVudCA9PiAocGF5bWVudC50cmFuc2FjdGlvbktpbmQgPT09IHRoaXMudHJhbnNLaW5kLlNhbGVzSW52b2ljZSkgJiYgKHBheW1lbnQub3V0c3RhbmRpbmdBbW91bnQgPiAwKSkubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmNob3NlbkFtb3VudFRvUGF5ID0gMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
452
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLXBheW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taGVhZGVyL3RyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC90cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtcGF5bWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFxQixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUc5RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUNoSCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUMxRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDL0UsT0FBTyxFQUFD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QVVqQix3QkFBd0I7WUFDeEIsaUJBQWlCO1lBQ2pCLDBCQUEwQjtZQUMxQixrQ0FBa0M7Ozt3QkE4UHZDLFdBQVcsU0FBQywyQ0FBMkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSGVhZGVyUG9wdXBCYXNlQ29tcG9uZW50fSBmcm9tICcuL3RyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25EZXBvc2l0UGF5bWVudEluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1kZXBvc2l0LXBheW1lbnQtaW5mby5ibyc7XHJcbmltcG9ydCB7UGF5bWVudEFuYWx5c2lzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGF5bWVudC1hbmFseXNpcy5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNjcmVlbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25JbWFnZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24taW1hZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25EaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtGb3JtTWFzdGVyU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25SZWxhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tcmVsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25QYXltZW50Q29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1wYXltZW50LWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9pbnRlcm5hbC1wYXJhbS5lbnVtXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25IZWFkZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2Uvc2VydmljZS90cmFuc2FjdGlvbi1oZWFkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9ufSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vYmplY3QtY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7Q29DdXJyZW5jeVBpcGV9IGZyb20gXCIuLi8uLi8uLi9waXBlL2NvLWN1cnJlbmN5LnBpcGVcIjtcclxuaW1wb3J0IHtPcmRlclBheW1lbnRBbmFseXNpc30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLXBheW1lbnQtYW5hbHlzaXMuYm8nO1xyXG5pbXBvcnQge09yZGVyUGF5bWVudEFuYWx5c2lzRmlsdGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItcGF5bWVudC1hbmFseXNpcy1maWx0ZXIuYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUmVnaXN0ZXJlZFBheW1lbnRJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tcmVnaXN0ZXJlZC1wYXltZW50LWluZm8uYm8nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXltZW50Q2F0ZWdvcnkge1xyXG4gIGluZGV4OiBudW1iZXI7XHJcbiAgdGl0bGU6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby10cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtcGF5bWVudCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC1jYXRlZ29yeS13cmFwcGVyIGNvLXNtYWxsLXNjcm9sbGJhclwiPlxyXG4gICAgICAgICAgPGNvLWZvcm0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC1zZWN0aW9uLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dQYXlEb3duTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCInVE9fUEFZX0RPV04nIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLXR3by1jb2x1bW4tZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1kZXBvc2l0LXBlcmNlbnRhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuRGVwb3NpdFBlcmNlbnRhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9ja0FuZFNhdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXBvc2l0VXBkYXRlZCk9XCJzaG93T3V0c3RhbmRpbmdBbW91bnRzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWRlcG9zaXQtcGVyY2VudGFnZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItZGVwb3NpdC1hbW91bnQgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLXRvdGFscy1wcmljZSBwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNmZ05hbWVzLkRlcG9zaXRBbW91bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9ja0FuZFNhdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXNpbmVzc1J1bGVBcHBsaWVkKT1cInNob3dCdXNpbmVzc1J1bGVJbmZvID0gJGV2ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1kZXBvc2l0LWFtb3VudD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLXRocmVlLWNvbHVtbi1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLXVzZS1kZXBvc2l0LXJ1bGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kICE9PSB0cmFuc0tpbmQuUHVyY2hhc2VPcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNmZ05hbWVzLlVzZURlcG9zaXRSdWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2tBbmRTYXZlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWhlYWRlci11c2UtZGVwb3NpdC1ydWxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1hdXRvLXJlY2FsY3VsYXRlLWRlcG9zaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kICE9PSB0cmFuc0tpbmQuUHVyY2hhc2VPcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNmZ05hbWVzLkF1dG9SZWNhbGN1bGF0ZURlcG9zaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9ja0FuZFNhdmVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWF1dG8tcmVjYWxjdWxhdGUtZGVwb3NpdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1oZWFkZXItZGl2aWRlLWV2ZW5seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgIT09IHRyYW5zS2luZC5QdXJjaGFzZU9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuRGl2aWRlRXZlbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2tBbmRTYXZlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1kaXZpZGUtZXZlbmx5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC1idXNpbmVzcy1ydWxlLWFwcGxpZWRcIiAqbmdJZj1cInNob3dCdXNpbmVzc1J1bGVJbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DaXJjbGVFeGNsYW1hdGlvblJlZ3VsYXIpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInREVQT1NJVF9CVVNJTkVTU19SVUxFX0FQUExJRUQnIHwgbG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLXR3by1jb2x1bW4tZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1hbW91bnQtdG8tc2V0dGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNmZ05hbWVzLkFtb3VudFRvU2V0dGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2tBbmRTYXZlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1hbW91bnQtdG8tc2V0dGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWhlYWRlci1wb3B1cC1hbHJlYWR5LXBhaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuVG90YWxQYWlkRG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1RPVEFMX1BBSURfRE9XTicgfCBsb2NhbGl6ZVwiIFtmb3JjZVJlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInBhaWREb3duXCIgW2Zvcm1hdFBpcGVdPVwiY3VycmVuY3lQaXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjZmdOYW1lcy5TZXR0bGVkU29GYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRVRUTEVEX1NPX0ZBUicgfCBsb2NhbGl6ZVwiIFtmb3JjZVJlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInNldHRsZWRcIiBbZm9ybWF0UGlwZV09XCJjdXJyZW5jeVBpcGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLXR3by1jb2x1bW4tZ3JpZFwiICpuZ0lmPVwic2hvd0Nhc2hPbkRlbGl2ZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzaC1vbi1kZWxpdmVyeS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidDQVNIX09OX0RFTElWRVJZJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JjZVJlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiY2FzaE9uRGVsaXZlcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdFBpcGVdPVwiY3VycmVuY3lQaXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2F2ZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0RpcmVjdFNlbGxFbmFibGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5UcnVja01vdmluZ1JlZ3VsYXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYXNoT25EZWxpdmVyeU1vZGFsVmlzaWJsZSA9IHRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtdHdvLWNvbHVtbi1ncmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjZmdOYW1lcy5QYXltZW50QnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5Db25maWdOYXRpdmVFbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1wYXltZW50LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgIT09IHRyYW5zS2luZC5QdXJjaGFzZU9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIignREVMSVZFUllfVE9UQUwnIHwgbG9jYWxpemUpIHwgYXBwZW5kOicgLyAnIHwgYXBwZW5kOignVE9fU0VUVExFJyB8IGxvY2FsaXplOmZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NrQW5kU2F2ZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1oZWFkZXItcGF5bWVudC1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGF5bWVudEFuYWx5c2lzXCIgY2xhc3M9XCJ0cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24taGVhZGVyLXBvcHVwLXNlY3Rpb24tbGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ1RPX0lOVk9JQ0UnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0aWxsLXRvcC1wYXktc3RhdHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW3RleHRDb250ZW50XT1cIidUT19CRV9JTlZPSUNFRCcgfCBsb2NhbGl6ZVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudFwiPnt7IHBheW1lbnRBbmFseXNpcz8udG90YWxUb0ludm9pY2UgfCBjb0N1cnJlbmN5OnRydWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbdGV4dENvbnRlbnRdPVwiJ0FMUkVBRFlfSU5WT0lDRUQnIHwgbG9jYWxpemVcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbW91bnRcIj57eyBwYXltZW50QW5hbHlzaXM/LnRvdGFsRGVwb3NpdEludm9pY2UgfCBjb0N1cnJlbmN5OnRydWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbdGV4dENvbnRlbnRdPVwiJ1NUSUxMX1RPX1BBWScgfCBsb2NhbGl6ZVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudFwiIFtjbGFzcy5vdXRzdGFuZGluZ109XCJwYXltZW50QW5hbHlzaXM/LnRvdGFsVG9QYXkgPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGF5bWVudEFuYWx5c2lzPy50b3RhbFRvUGF5IHwgY29DdXJyZW5jeTp0cnVlIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcmRlclBheW1lbnRBbmFseXNpcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJwYXltZW50LWluZm9ybWF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNhdmUtYnV0dG9uIHBheW1lbnQtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dQYXltZW50QnV0dG9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ3JlZGl0Q2FyZFJlZ3VsYXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblBheW1lbnQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWNhdGVnb3JpZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYXltZW50LWNhdGVnb3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImFjdGl2ZUNhdGVnb3J5LmluZGV4ID09PSBjYXRlZ29yeS5pbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBwYXltZW50Q2F0ZWdvcmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDYXRlZ29yeUNsaWNrKGNhdGVnb3J5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIFt0ZXh0Q29udGVudF09XCJjYXRlZ29yeS50aXRsZSB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgKm5nSWY9XCJhY3RpdmVDYXRlZ29yeS5pbmRleCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImxlZnRcIiAqbmdJZj1cInNob3dJbnZvaWNlU2VsZWN0aW9uKClcIiBbdGV4dENvbnRlbnRdPVwiJ1BBWScgfCBsb2NhbGl6ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibGVmdFwiIFt0ZXh0Q29udGVudF09XCInREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbdGV4dENvbnRlbnRdPVwiJ0FNT1VOVDInIHwgbG9jYWxpemVcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbdGV4dENvbnRlbnRdPVwiJ1BBSUQnIHwgbG9jYWxpemVcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbdGV4dENvbnRlbnRdPVwiJ1NFVFRMRUQnIHwgbG9jYWxpemVcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbdGV4dENvbnRlbnRdPVwiJ09VVFNUQU5ESU5HJyB8IGxvY2FsaXplXCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwYXltZW50SW5mbyBvZiBvcmRlclBheW1lbnRBbmFseXNpc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxlZnRcIiAqbmdJZj1cInNob3dJbnZvaWNlU2VsZWN0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGF5bWVudEluZm8udHJhbnNhY3Rpb25LaW5kID09PSB0cmFuc0tpbmQuU2FsZXNJbnZvaWNlICYmIHBheW1lbnRJbmZvLm91dHN0YW5kaW5nQW1vdW50ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRlZmF1bHQtd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInBheW1lbnRJbmZvLmlzU2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVTZWxlY3RJbnZvaWNlTGluZXMocGF5bWVudEluZm8pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28taW5wdXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGF5bWVudEluZm8udHJhbnNhY3Rpb25LaW5kID09PSB0cmFuc0tpbmQuU2FsZXNPcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIidERVBPU0lUJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYXltZW50SW5mby50cmFuc2FjdGlvbktpbmQgPT09IHRyYW5zS2luZC5TYWxlc0ludm9pY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiJ0lOVk9JQ0UnIHwgbG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IHBheW1lbnRJbmZvLnRyYW5zYWN0aW9uTnVtYmVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiB7eyBwYXltZW50SW5mby50cmFuc2FjdGlvbkRhdGUgfCBkYXRlOidkZC1NTS15eXl5JyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+e3sgcGF5bWVudEluZm8uaW52b2ljZUFtb3VudCB8IGNvQ3VycmVuY3k6dHJ1ZSB9fTwvc3Ryb25nPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtjbGFzcy5wYWlkXT1cInBheW1lbnRJbmZvLnBhaWRBbW91bnQgPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGF5bWVudEluZm8ucGFpZEFtb3VudCB8IGNvQ3VycmVuY3k6dHJ1ZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHBheW1lbnRJbmZvLnNldHRsZWRBbW91bnQgfCBjb0N1cnJlbmN5OnRydWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3Mub3V0c3RhbmRpbmddPVwicGF5bWVudEluZm8ub3V0c3RhbmRpbmdBbW91bnQgIT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBwYXltZW50SW5mby5vdXRzdGFuZGluZ0Ftb3VudCB8IGNvQ3VycmVuY3k6dHJ1ZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVDYXRlZ29yeS5pbmRleCA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZWdpc3RlcmVkUGF5bWVudEluZm8gJiYgcmVnaXN0ZXJlZFBheW1lbnRJbmZvLnBheW1lbnRzLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCInTk9UX0ZPVU5EJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwicmVnaXN0ZXJlZFBheW1lbnRJbmZvICYmIHJlZ2lzdGVyZWRQYXltZW50SW5mby5wYXltZW50cy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibGVmdFwiIFt0ZXh0Q29udGVudF09XCInREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggW3RleHRDb250ZW50XT1cIidBTU9VTlQyJyB8IGxvY2FsaXplXCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFt0ZXh0Q29udGVudF09XCInREFURScgfCBsb2NhbGl6ZVwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHBheW1lbnRJbmZvIG9mIHJlZ2lzdGVyZWRQYXltZW50SW5mby5wYXltZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsZWZ0XCI+e3sgcGF5bWVudEluZm8ucmVmZXJlbmNlIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxzdHJvbmc+e3sgcGF5bWVudEluZm8uYW1vdW50IHwgY29DdXJyZW5jeTp0cnVlIH19PC9zdHJvbmc+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHBheW1lbnRJbmZvLnBheW1lbnREYXRlVGltZSB8IGRhdGU6J2RkLU1NLXl5eXknIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvY28tZm9ybT5cclxuXHJcbiAgICAgICAgICA8Y28tY2FzaC1vbi1kZWxpdmVyeS1tb2RhbFxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNhc2hPbkRlbGl2ZXJ5TW9kYWxWaXNpYmxlXCJcclxuICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uSW5mb1V1aWRdPVwidHJhbnNhY3Rpb25JbmZvLnV1aWRcIlxyXG4gICAgICAgICAgICAgICAgICAoY2FzaEFtb3VudCk9XCJnZXRDYXNoQW1vdW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoc2hvd0Nhc2hPbkRlbGl2ZXJ5TW9kYWwpPVwic2hvd0Nhc2hPbkRlbGl2ZXJ5TW9kYWwoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9jby1jYXNoLW9uLWRlbGl2ZXJ5LW1vZGFsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxjby1kaWFsb2dcclxuICAgICAgICAgICAgICBjbGFzcz1cInBheW1lbnQtZGlhbG9nXCJcclxuICAgICAgICAgICAgICBbbW9kYWxdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dQYXltZW50RGlhbG9nXCJcclxuICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJoYW5kbGVDbG9zZURpYWxvZygpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjby1kaWFsb2ctd3JhcHBlci1wb3B1cC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNyZWRpdENhcmRSZWd1bGFyQ2hlY2spXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCInUEFZTUVOVF9NRVRIT0QnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8Y28tcGF5bWVudFxyXG4gICAgICAgICAgICAgICAgICBbdHJhbnNJZF09XCJ0cmFuc2FjdGlvbklkVG9QYXlcIlxyXG4gICAgICAgICAgICAgICAgICBbYnJhbmNoXT1cInRyYW5zYWN0aW9uSW5mby5icmFuY2g/LnJlbGF0aW9uTnJcIlxyXG4gICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25VdWlkXT1cInRyYW5zYWN0aW9uSW5mby51dWlkXCJcclxuICAgICAgICAgICAgICAgICAgW2Ftb3VudF09XCJjaG9zZW5BbW91bnRUb1BheVwiXHJcbiAgICAgICAgICAgICAgICAgIFtyZW1haW5pbmdQYXltZW50XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbY3VycmVuY3lJZF09XCJ0cmFuc2FjdGlvbkluZm8uY3VycmVuY3lJZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkb05vdEZldGNoQW1vdW50VG9QYXlGb3JSZW1haW5pbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93UGF5bWVudERhdGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+PC9jby1wYXltZW50PlxyXG4gICAgICA8L2NvLWRpYWxvZz5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uSGVhZGVyUG9wdXBQYXltZW50Q29tcG9uZW50IGV4dGVuZHMgVHJhbnNhY3Rpb25IZWFkZXJQb3B1cEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby10cmFuc2FjdGlvbi1oZWFkZXItcG9wdXAtcGF5bWVudCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGN1cnJlbmN5UGlwZTogdHlwZW9mIENvQ3VycmVuY3lQaXBlID0gQ29DdXJyZW5jeVBpcGU7XHJcbiAgcHVibGljIHBhaWREb3duOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBzZXR0bGVkOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBjYXNoT25EZWxpdmVyeTogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgc2hvd0J1c2luZXNzUnVsZUluZm86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1BheURvd25MYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYXNoT25EZWxpdmVyeU1vZGFsVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93Q2FzaE9uRGVsaXZlcnk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1BheW1lbnREaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyBwdWJsaWMgb3V0c3RhbmRpbmdDdXN0b21lckFtb3VudDogT3V0c3RhbmRpbmdBbW91bnRDdXN0b21lcltdID0gW107XHJcbiAgcHVibGljIG9yZGVyUGF5bWVudEFuYWx5c2lzOiBPcmRlclBheW1lbnRBbmFseXNpc1tdID0gW107XHJcbiAgcHVibGljIHBheW1lbnRBbmFseXNpczogUGF5bWVudEFuYWx5c2lzO1xyXG4gIHB1YmxpYyBwYXltZW50Q2F0ZWdvcmllczogUGF5bWVudENhdGVnb3J5W10gPSBbXHJcbiAgICB7aW5kZXg6IDAsIHRpdGxlOiBcIlBBWU1FTlRfQU5BTFlTSVNcIn0sXHJcbiAgICB7aW5kZXg6IDEsIHRpdGxlOiBcIlBBWU1FTlRTX01BREVcIn1cclxuICBdO1xyXG4gIHB1YmxpYyBhY3RpdmVDYXRlZ29yeTogUGF5bWVudENhdGVnb3J5ID0gdGhpcy5wYXltZW50Q2F0ZWdvcmllc1swXTtcclxuICBwdWJsaWMgY2hvc2VuQW1vdW50VG9QYXk6IG51bWJlcjtcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25JZFRvUGF5OiBudW1iZXI7XHJcbiAgcHVibGljIHJlZ2lzdGVyZWRQYXltZW50SW5mbzogVHJhbnNhY3Rpb25SZWdpc3RlcmVkUGF5bWVudEluZm87XHJcblxyXG4gIHByaXZhdGUgX3BheW1lbnRTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkhlYWRlclNlcnZpY2U6IFRyYW5zYWN0aW9uSGVhZGVyU2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgaW1hZ2VTZXJ2aWNlOiBUcmFuc2FjdGlvbkltYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogVHJhbnNhY3Rpb25EaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGZvcm1NYXN0ZXJTZXJ2aWNlOiBGb3JtTWFzdGVyU2VydmljZSxcclxuICAgIHByb3RlY3RlZCByZWxhdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uUmVsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGF5bWVudENvbm5lY3RvclNlcnZpY2U6IFRyYW5zYWN0aW9uUGF5bWVudENvbm5lY3RvclNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKHRyYW5zYWN0aW9uSGVhZGVyU2VydmljZSwgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsIHNlcnZpY2UsIGljb25DYWNoZVNlcnZpY2UsIHRyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsIGRpY3Rpb25hcnlTZXJ2aWNlLCBpbWFnZVNlcnZpY2UsIGNoYW5nZURldGVjdG9yLCBkaWFsb2dTZXJ2aWNlLCBmb3JtTWFzdGVyU2VydmljZSwgcmVsYXRpb25TZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuX3BheW1lbnRTdWJzLnB1c2goXHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UudHJhbnNhY3Rpb25QYXltZW50RG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2dldERlcG9zaXRJbmZvKCk7XHJcbiAgICAgICAgdGhpcy5fZ2V0T3V0c3RhbmRpbmdBbW91bnRzKCk7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVDbG9zZURpYWxvZygpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmNvbmZpZ1NldC5zdWJzY3JpYmUoKGNvbmZpZ09iamVjdHM6IE9iamVjdENvbmZpZ3VyYXRpb25bXSkgPT4gdGhpcy5fZ2V0T2JqZWN0Q29uZmlndXJhdGlvbihjb25maWdPYmplY3RzKSlcclxuICAgICk7XHJcbiAgICB0aGlzLnNob3dDYXNoT25EZWxpdmVyeSA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEludGVybmFsUGFyYW1ldGVyKEludGVybmFsUGFyYW0uU2VsbERpcmVjdGx5RnJvbVN1cHBsKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25EZXN0cm95KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fcGF5bWVudFN1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICBhd2FpdCBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhdGVnb3J5Q2xpY2soY2F0OiBQYXltZW50Q2F0ZWdvcnkpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlQ2F0ZWdvcnkgPSBjYXQ7XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aXZlQ2F0ZWdvcnkuaW5kZXggPT09IDEpIHtcclxuICAgICAgdGhpcy5fZ2V0UmVnaXN0ZXJlZFBheW1lbnRJbmZvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2hvd091dHN0YW5kaW5nQW1vdW50cygpIHtcclxuICAgIGF3YWl0IHRoaXMuc2VydmljZS5zYXZlVHJhbnNhY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93Q2FzaE9uRGVsaXZlcnlNb2RhbCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jYXNoT25EZWxpdmVyeU1vZGFsVmlzaWJsZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENhc2hBbW91bnQodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jYXNoT25EZWxpdmVyeSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dQYXltZW50QnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMuc29tZSh0ID0+IHQub3V0c3RhbmRpbmdBbW91bnQgIT09IDApICYmIHRoaXMuY2hvc2VuQW1vdW50VG9QYXkgIT09IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgb3BlblBheW1lbnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25JZFRvUGF5ID0gdGhpcy50cmFuc2FjdGlvbklkVG9QYXkgPz8gdGhpcy50cmFuc2FjdGlvbkluZm8uaWQ7XHJcbiAgICBpZiAodGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5maWx0ZXIocGF5bWVudCA9PiBwYXltZW50LnRyYW5zYWN0aW9uS2luZCA9PT0gdGhpcy50cmFuc0tpbmQuU2FsZXNJbnZvaWNlICYmIHBheW1lbnQub3V0c3RhbmRpbmdBbW91bnQgIT09IDApLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBjb25zdCBsYXN0VHJhbnNhY3Rpb24gPSB0aGlzLm9yZGVyUGF5bWVudEFuYWx5c2lzLmZpbHRlcihwYXltZW50ID0+IHBheW1lbnQudHJhbnNhY3Rpb25LaW5kID09PSB0aGlzLnRyYW5zS2luZC5TYWxlc0ludm9pY2UgJiYgcGF5bWVudC5vdXRzdGFuZGluZ0Ftb3VudCAhPT0gMClbMF07XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25JZFRvUGF5ID0gbGFzdFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSWQ7XHJcbiAgICB9XHJcbiAgICBpZiAoYXdhaXQgdGhpcy5sb2NrVHJhbnNhY3Rpb24oKSkge1xyXG4gICAgICB0aGlzLnNob3dQYXltZW50RGlhbG9nID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDbG9zZURpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1BheW1lbnREaWFsb2cgPSBmYWxzZTtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLnJvbGxiYWNrKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNEaXJlY3RTZWxsRW5hYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uTGluZXMuc29tZShsaW5lID0+IGxpbmUuZGlyZWN0U2VsbCAmJiBsaW5lLmRyb3BTaGlwbWVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0ludm9pY2VTZWxlY3Rpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5maWx0ZXIocGF5bWVudCA9PiBwYXltZW50LnRyYW5zYWN0aW9uS2luZCA9PT0gdGhpcy50cmFuc0tpbmQuU2FsZXNJbnZvaWNlICYmIHBheW1lbnQub3V0c3RhbmRpbmdBbW91bnQgIT09IDApLmxlbmd0aCA+IDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VsZWN0SW52b2ljZUxpbmVzKHBheW1lbnRJbmZvOiBPcmRlclBheW1lbnRBbmFseXNpcyk6IHZvaWQge1xyXG4gICAgdGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5mb3JFYWNoKGludm9pY2UgPT4gKGludm9pY2UgYXMgYW55KS5pc1NlbGVjdGVkID0gZmFsc2UpO1xyXG4gICAgKHBheW1lbnRJbmZvIGFzIGFueSkuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICB0aGlzLmNob3NlbkFtb3VudFRvUGF5ID0gcGF5bWVudEluZm8ub3V0c3RhbmRpbmdBbW91bnQ7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uSWRUb1BheSA9IHBheW1lbnRJbmZvLnRyYW5zYWN0aW9uSWQ7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25TZXQoKSB7XHJcbiAgICBzdXBlci50cmFuc2FjdGlvblNldCgpO1xyXG4gICAgdGhpcy5fZ2V0RGVwb3NpdEluZm8oKTtcclxuICAgIHRoaXMuX2dldE91dHN0YW5kaW5nQW1vdW50cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0RGVwb3NpdEluZm8oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wYXltZW50Q29ubmVjdG9yU2VydmljZS5nZXREZXBvc2l0UGF5bWVudEluZm8odGhpcy50cmFuc2FjdGlvbkluZm8udXVpZCkudGhlbigoaW5mbzogVHJhbnNhY3Rpb25EZXBvc2l0UGF5bWVudEluZm8pID0+IHtcclxuICAgICAgaWYgKGluZm8pIHtcclxuICAgICAgICB0aGlzLnBhaWREb3duID0gaW5mby5kZXBvc2l0UGF5bWVudEFtb3VudFRvdGFsO1xyXG4gICAgICAgIHRoaXMuc2V0dGxlZCA9IGluZm8uZGVwb3NpdEFtb3VudFNldHRsZWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0T3V0c3RhbmRpbmdBbW91bnRzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8ga2VlcGluZyB0aGlzIGZvciBub3csIGNvdWxkIGJlIHRoYXQgd2UgbmVlZCB0byB1c2UgdGhpcyBjYWxsIGFmdGVyIGFsbFxyXG4gICAgLy8gY29uc3Qgb3V0c3RhbmRpbmdBbW91bnRzUmVxdWVzdDogT3V0c3RhbmRpbmdBbW91bnRGaWx0ZXJDdXN0b21lciA9IG5ldyBPdXRzdGFuZGluZ0Ftb3VudEZpbHRlckN1c3RvbWVyKCk7XHJcbiAgICAvLyBvdXRzdGFuZGluZ0Ftb3VudHNSZXF1ZXN0LnRyYW5zYWN0aW9uSWQgPSB0aGlzLnRyYW5zYWN0aW9uSW5mby5pZDtcclxuICAgIC8vIHRoaXMuX3BheW1lbnRDb25uZWN0b3JTZXJ2aWNlLmdldE91dHN0YW5kaW5nQ3VzdG9tZXJBbW91bnRzKG91dHN0YW5kaW5nQW1vdW50c1JlcXVlc3QpLnRoZW4oKHJlc3BvbnNlOiBPdXRzdGFuZGluZ0Ftb3VudEN1c3RvbWVyW10pID0+IHtcclxuICAgIC8vICAgdGhpcy5vdXRzdGFuZGluZ0N1c3RvbWVyQW1vdW50ID0gcmVzcG9uc2U7XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICBjb25zdCBwYXltZW50QW5hbHlzaXNSZXF1ZXN0OiBPcmRlclBheW1lbnRBbmFseXNpc0ZpbHRlciA9IG5ldyBPcmRlclBheW1lbnRBbmFseXNpc0ZpbHRlcigpO1xyXG4gICAgcGF5bWVudEFuYWx5c2lzUmVxdWVzdC50cmFuc2FjdGlvbklkID0gdGhpcy50cmFuc2FjdGlvbkluZm8uaWQ7XHJcbiAgICBhd2FpdCB0aGlzLl9wYXltZW50Q29ubmVjdG9yU2VydmljZS5nZXRTYWxlc09yZGVyUGF5bWVudEFuYWx5c2lzKHBheW1lbnRBbmFseXNpc1JlcXVlc3QpLnRoZW4oKHJlc3BvbnNlOiBPcmRlclBheW1lbnRBbmFseXNpc1tdKSA9PiB7XHJcbiAgICAgIHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMgPSByZXNwb25zZTtcclxuICAgICAgdGhpcy5vcmRlclBheW1lbnRBbmFseXNpcyA9IHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMubWFwKHRyYW5zYWN0aW9uID0+ICh7XHJcbiAgICAgICAgLi4udHJhbnNhY3Rpb24sXHJcbiAgICAgICAgaXNTZWxlY3RlZDogZmFsc2VcclxuICAgICAgfSkpIGFzIHVua25vd24gYXMgT3JkZXJQYXltZW50QW5hbHlzaXNbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuX3BheW1lbnRDb25uZWN0b3JTZXJ2aWNlLmdldFBheW1lbnRBbmFseXNpcyh0aGlzLnRyYW5zYWN0aW9uSW5mby51dWlkKS50aGVuKChyZXNwb25zZTogUGF5bWVudEFuYWx5c2lzKSA9PiB7XHJcbiAgICAgIHRoaXMucGF5bWVudEFuYWx5c2lzID0gcmVzcG9uc2U7XHJcbiAgICAgIHRoaXMuY2hvc2VuQW1vdW50VG9QYXkgPSB0aGlzLnBheW1lbnRBbmFseXNpcy50b3RhbFRvUGF5O1xyXG4gICAgICB0aGlzLl91cGRhdGVDaG9zZW5BbW91bnRUb1BheSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRSZWdpc3RlcmVkUGF5bWVudEluZm8oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwYXltZW50SW5mbzogVHJhbnNhY3Rpb25SZWdpc3RlcmVkUGF5bWVudEluZm8gPSBhd2FpdCB0aGlzLl9wYXltZW50Q29ubmVjdG9yU2VydmljZS5nZXRSZWdpc3RlcmVkUGF5bWVudEluZm8odGhpcy50cmFuc2FjdGlvbkluZm8udXVpZCk7XHJcbiAgICBpZiAocGF5bWVudEluZm8pIHtcclxuICAgICAgdGhpcy5yZWdpc3RlcmVkUGF5bWVudEluZm8gPSBwYXltZW50SW5mbztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE9iamVjdENvbmZpZ3VyYXRpb24oY29uZmlnT2JqZWN0czogT2JqZWN0Q29uZmlndXJhdGlvbltdKTogdm9pZCB7XHJcbiAgICBpZiAoY29uZmlnT2JqZWN0cyAmJiBjb25maWdPYmplY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zaG93UGF5RG93bkxhYmVsID0gdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5jZmdOYW1lcy5EZXBvc2l0UGVyY2VudGFnZSkuaW1tZWRpYXRlbHlWaXNpYmxlKCkgfHxcclxuICAgICAgICB0aGlzLnNjcmVlbkNvbmZpZ1NlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmNmZ05hbWVzLkRlcG9zaXRBbW91bnQpLmltbWVkaWF0ZWx5VmlzaWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlQ2hvc2VuQW1vdW50VG9QYXkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5zb21lKHQgPT4gdC5vdXRzdGFuZGluZ0Ftb3VudCAhPT0gMCkgJiZcclxuICAgICAgdGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5maWx0ZXIocGF5bWVudCA9PiBwYXltZW50LnRyYW5zYWN0aW9uS2luZCA9PT0gdGhpcy50cmFuc0tpbmQuU2FsZXNJbnZvaWNlKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jaG9zZW5BbW91bnRUb1BheSA9IHRoaXMucGF5bWVudEFuYWx5c2lzLnRvdGFsRGVwb3NpdDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBEZXBvc2l0IG9ubHlcclxuICAgIGlmICh0aGlzLm9yZGVyUGF5bWVudEFuYWx5c2lzLmZpbHRlcihwYXltZW50ID0+IHBheW1lbnQudHJhbnNhY3Rpb25LaW5kID09PSB0aGlzLnRyYW5zS2luZC5TYWxlc09yZGVyICYmXHJcbiAgICAgIHBheW1lbnQub3V0c3RhbmRpbmdBbW91bnQgIT09IDApLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLmNob3NlbkFtb3VudFRvUGF5ID0gdGhpcy5vcmRlclBheW1lbnRBbmFseXNpc1swXS5vdXRzdGFuZGluZ0Ftb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcmRlclBheW1lbnRBbmFseXNpcy5maWx0ZXIocGF5bWVudCA9PiAocGF5bWVudC50cmFuc2FjdGlvbktpbmQgPT09IHRoaXMudHJhbnNLaW5kLlNhbGVzSW52b2ljZSkgJiYgKHBheW1lbnQub3V0c3RhbmRpbmdBbW91bnQgIT09IDApKS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc3QgcmVtYWluaW5nSW52b2ljZSA9IHRoaXMub3JkZXJQYXltZW50QW5hbHlzaXMuZmlsdGVyKHBheW1lbnQgPT4gKHBheW1lbnQudHJhbnNhY3Rpb25LaW5kID09PSB0aGlzLnRyYW5zS2luZC5TYWxlc0ludm9pY2UpICYmIChwYXltZW50Lm91dHN0YW5kaW5nQW1vdW50ICE9PSAwKSlbMF07XHJcbiAgICAgIHRoaXMuY2hvc2VuQW1vdW50VG9QYXkgPSByZW1haW5pbmdJbnZvaWNlLm91dHN0YW5kaW5nQW1vdW50O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9yZGVyUGF5bWVudEFuYWx5c2lzLmZpbHRlcihwYXltZW50ID0+IChwYXltZW50LnRyYW5zYWN0aW9uS2luZCA9PT0gdGhpcy50cmFuc0tpbmQuU2FsZXNJbnZvaWNlKSAmJiAocGF5bWVudC5vdXRzdGFuZGluZ0Ftb3VudCAhPT0gMCkpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5jaG9zZW5BbW91bnRUb1BheSA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|