@colijnit/transaction 12.1.172 → 12.1.174
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 +530 -265
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +143 -145
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/colijnit-transaction.js +144 -146
- package/esm2015/lib/component/add-product/add-product.component.js +53 -24
- package/esm2015/lib/component/checkout/checkout-overview-delivery-edit/checkout-overview-delivery-edit.component.js +3 -3
- package/esm2015/lib/component/checkout/checkout-overview-relation-edit/checkout-overview-relation-edit.component.js +3 -3
- package/esm2015/lib/component/core/base/transaction-base.component.js +5 -1
- package/esm2015/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.component.js +45 -12
- package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-discount/dialog-transaction-line-discount.component.js +2 -3
- package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-transaction-line-warehouse-cc.component.js +1 -4
- package/esm2015/lib/component/quick-send-button/quick-send-button.component.js +5 -5
- package/esm2015/lib/component/relation/relation-addresses/relation-addresses.component.js +3 -3
- package/esm2015/lib/component/shared/transaction-article-text/transaction-article-text.component.js +4 -4
- package/esm2015/lib/component/transaction-button-bar/transaction-button-bar.component.js +17 -4
- package/esm2015/lib/component/transaction-card/transaction-card-goods-allocation/transaction-card-goods-allocation.component.js +3 -2
- package/esm2015/lib/component/transaction-card/transaction-card-invoice/transaction-card-invoice.component.js +2 -1
- package/esm2015/lib/component/transaction-card/transaction-card-order-delivery/transaction-card-order-delivery.component.js +2 -1
- package/esm2015/lib/component/transaction-card/transaction-card-picked/transaction-card-picked.component.js +3 -2
- package/esm2015/lib/component/transaction-card/transaction-card-purchase/transaction-card-purchase.component.js +6 -1
- package/esm2015/lib/component/transaction-card/transaction-card-purchase/transaction-card-purchase.module.js +4 -2
- package/esm2015/lib/component/transaction-card/transaction-card-receive-goods/transaction-card-receive-goods.component.js +2 -1
- package/esm2015/lib/component/transaction-card/transaction-card-to-be-picked/transaction-card-to-be-picked.component.js +3 -2
- package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.js +2 -2
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-delivery.component.js +3 -3
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-order.component.js +3 -3
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-payment.component.js +3 -3
- package/esm2015/lib/component/transaction-header/transaction-header-popup/transaction-header-popup-relation.component.js +3 -3
- package/esm2015/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.js +16 -5
- package/esm2015/lib/component/transaction-line/transaction-goods-allocation-line/transaction-goods-allocation-line.component.js +2 -1
- package/esm2015/lib/component/transaction-line/transaction-invoice-line/transaction-invoice-line.component.js +2 -1
- package/esm2015/lib/component/transaction-line/transaction-order-delivery-line/transaction-order-delivery-line.component.js +2 -1
- package/esm2015/lib/component/transaction-line/transaction-overview-line/transaction-overview-line.component.js +1 -2
- package/esm2015/lib/component/transaction-line/transaction-picked-line/transaction-picked-line.component.js +2 -1
- package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line-base.component.js +2 -2
- package/esm2015/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.component.js +28 -13
- package/esm2015/lib/component/transaction-line/transaction-purchase-order-line/transaction-purchase-order-line.component.js +2 -1
- package/esm2015/lib/component/transaction-line/transaction-receive-goods-line/transaction-receive-goods-line.component.js +11 -2
- package/esm2015/lib/component/transaction-line/transaction-receive-goods-line/transaction-receive-goods-line.module.js +4 -2
- package/esm2015/lib/component/transaction-line/transaction-to-be-picked-line/transaction-to-be-picked-line.component.js +2 -1
- package/esm2015/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.component.js +2 -1
- package/esm2015/lib/component/transaction-line-fields/transaction-line-amount.component.js +1 -5
- package/esm2015/lib/component/transaction-line-fields/transaction-line-quantity.component.js +4 -3
- package/esm2015/lib/component/transaction-line-purchase-confirmation/transaction-line-purchase-confirmation.component.js +24 -9
- package/esm2015/lib/component/transaction-line-purchase-receive-goods/transaction-line-purchase-receive-goods.component.js +4 -3
- package/esm2015/lib/component/transaction-line-sales-allocation/transaction-line-sales-allocation.component.js +4 -3
- package/esm2015/lib/component/transaction-lines/transaction-lines.component.js +1 -2
- package/esm2015/lib/component/transaction-search/service/transaction-search.service.js +6 -1
- package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.component.js +16 -1
- package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.js +3 -2
- package/esm2015/lib/model/transaction-bar-button.js +1 -1
- package/esm2015/lib/res/dictionary/dictionaries.js +2 -2
- package/esm2015/lib/service/article-connector.service.js +39 -10
- package/esm2015/lib/service/transaction-base.service.js +2 -1
- package/esm2015/lib/service/transaction-connector-adapter.service.js +19 -1
- package/esm2015/lib/service/transaction-connector.service.js +11 -1
- package/esm2015/lib/service/transaction-event.service.js +2 -1
- package/esm2015/lib/service/transaction-mapping.service.js +13 -7
- package/esm2015/lib/service/transaction.service.js +22 -1
- package/esm2015/lib/transaction-version.js +3 -3
- package/esm2015/public_api.js +3 -1
- package/fesm2015/colijnit-transaction.js +351 -110
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/add-product/add-product.component.d.ts +15 -2
- package/lib/component/core/base/components/characteristic-answer/style/_layout.scss +1 -1
- package/lib/component/core/base/components/warehouse/style/_layout.scss +1 -1
- package/lib/component/dialog/catalog/dialog-catalog/dialog-catalog.component.d.ts +18 -7
- package/lib/component/dialog/transaction-header/dialog-transaction-header-branch/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-header/dialog-transaction-header-delivery-method/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-header/dialog-transaction-header-discount/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-line/dialog-transaction-line-commission-code/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-line/dialog-transaction-line-delivery-method/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-line/dialog-transaction-line-discount/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-line/dialog-transaction-line-price-list/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-line/dialog-transaction-line-supplier/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-line/dialog-transaction-line-vat/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/style/_layout.scss +1 -1
- package/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-location/style/_layout.scss +1 -1
- package/lib/component/quick-send-button/quick-send-button.component.d.ts +3 -3
- package/lib/component/quick-send-button/style/_layout.scss +6 -1
- package/lib/component/shared/transaction-article-text/style/_layout.scss +0 -1
- package/lib/component/shared/transaction-article-text/transaction-article-text.component.d.ts +4 -4
- package/lib/component/transaction-card/transaction-card-goods-allocation/transaction-card-goods-allocation.component.d.ts +1 -1
- package/lib/component/transaction-card/transaction-card-picked/transaction-card-picked.component.d.ts +1 -1
- package/lib/component/transaction-card/transaction-card-to-be-picked/transaction-card-to-be-picked.component.d.ts +1 -1
- package/lib/component/transaction-header/transaction-header-payment/style/_layout.scss +1 -1
- package/lib/component/transaction-internal/style/_layout.scss +0 -101
- package/lib/component/transaction-internal/style/_material-definition.scss +0 -19
- package/lib/component/transaction-line/transaction-base-line/transaction-base-line.component.d.ts +5 -3
- package/lib/component/transaction-line/transaction-purchase-line/transaction-purchase-line.component.d.ts +1 -0
- package/lib/component/transaction-line/transaction-purchase-order-line/style/_layout.scss +4 -4
- package/lib/component/transaction-line-fields/transaction-line-amount.component.d.ts +0 -1
- package/lib/component/transaction-line-fields/transaction-line-quantity.component.d.ts +1 -1
- package/lib/component/transaction-search/service/transaction-search.service.d.ts +2 -0
- package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.component.d.ts +6 -0
- package/lib/model/transaction-bar-button.d.ts +1 -0
- package/lib/res/dictionary/dictionaries.d.ts +4 -0
- package/lib/service/article-connector.service.d.ts +8 -3
- package/lib/service/transaction-base.service.d.ts +1 -0
- package/lib/service/transaction-connector-adapter.service.d.ts +4 -0
- package/lib/service/transaction-connector.service.d.ts +4 -0
- package/lib/service/transaction-event.service.d.ts +4 -0
- package/lib/service/transaction-mapping.service.d.ts +3 -0
- package/lib/service/transaction.service.d.ts +7 -0
- package/lib/style/_variables.scss +27 -0
- package/lib/style/transaction-globals.scss +112 -8
- package/package.json +5 -5
- package/public_api.d.ts +2 -0
|
@@ -306,7 +306,7 @@ CheckoutOverviewRelationEditComponent.decorators = [
|
|
|
306
306
|
selector: 'co-checkout-overview-relation-edit',
|
|
307
307
|
template: `
|
|
308
308
|
<div class="relation-edit-content">
|
|
309
|
-
<co-form>
|
|
309
|
+
<co-form-test>
|
|
310
310
|
<div class="checkout-form-wrapper">
|
|
311
311
|
<div class="checkout-label-column">
|
|
312
312
|
<span #indexLabel></span>
|
|
@@ -407,7 +407,7 @@ CheckoutOverviewRelationEditComponent.decorators = [
|
|
|
407
407
|
</div>
|
|
408
408
|
</ng-container>
|
|
409
409
|
</div>
|
|
410
|
-
</co-form>
|
|
410
|
+
</co-form-test>
|
|
411
411
|
</div>
|
|
412
412
|
<div class="suggestions-sidebar" *ngIf="showSuggestionsSidebar && showSuggestions" @showHideSidebar>
|
|
413
413
|
<icon (click)="hideSidebar()" [icon]="icons.Crossskinny" class="close-button"></icon>
|
|
@@ -459,4 +459,4 @@ CheckoutOverviewRelationEditComponent.propDecorators = {
|
|
|
459
459
|
relationChange: [{ type: Output }],
|
|
460
460
|
showClass: [{ type: HostBinding, args: ['class.co-checkout-overview-relation-edit',] }]
|
|
461
461
|
};
|
|
462
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRS9FLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDakYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBRy9FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBSTdGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRTlELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUtyRSxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQTBJcEcsTUFBTSxPQUFPLHFDQUFxQztJQTBIOUMsWUFDWSxXQUE4QixFQUMvQixPQUEyQixFQUMxQixnQkFBaUMsRUFDakMsY0FBNkIsRUFDN0Isb0JBQXdEO1FBSnhELGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQUMvQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBb0M7UUE5SHBELGFBQVEsR0FBMkIsZUFBZSxDQUFDO1FBQ25ELFlBQU8sR0FBd0IsWUFBWSxDQUFDO1FBQzVDLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBQzFCLGdCQUFXLEdBQXVCLFdBQVcsQ0FBQztRQTREdkQsZ0JBQVcsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUczRCxrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzdELDBCQUFxQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3pFLHlCQUFvQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3hFLG1CQUFjLEdBQWtDLElBQUksWUFBWSxFQUFtQixDQUFDO1FBU3BGLGlCQUFZLEdBQXFCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUUxRCx3QkFBbUIsR0FBeUIsRUFBRSxDQUFDO1FBQy9DLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUV4Qyw4QkFBeUIsR0FBbUM7WUFDL0QsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYTtZQUMxQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQjtZQUN4RCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QjtTQUNqRSxDQUFDO1FBQ0ssK0JBQTBCLEdBQTRCO1lBQ3pELGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWU7WUFDOUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7WUFDbEQsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYztZQUM1QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtZQUNoRCxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjO1lBQzVDLGNBQWMsRUFBRSxJQUFJLENBQUMseUJBQXlCO1NBQ2pELENBQUM7UUFDSywrQkFBMEIsR0FBNEI7WUFDekQsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYztZQUM1QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlO1lBQzlDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCO1lBQ3BELFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVk7WUFDeEMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZTtZQUM5QyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQjtTQUN2RCxDQUFDO1FBQ0ssdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRTlCLGNBQVMsR0FBb0IsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3RELGtCQUFhLEdBQWlCLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDcEQsMkJBQXNCLEdBQStCLEVBQUUsQ0FBQztRQUV4RCxVQUFLLEdBQW1CLEVBQUUsQ0FBQztJQVNuQyxDQUFDO0lBNUhELElBQXNELFlBQVksQ0FBQyxRQUFRO1FBQ3ZFLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDL0Y7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLEtBQXNCO1FBQ3RDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQzVILE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLFlBQVksa0JBQWtCLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7YUFDaEQ7WUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLFlBQVksa0JBQWtCLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7YUFDckQ7WUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUMzRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUMvQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDNUQ7U0FDSjtJQUNMLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ1csWUFBWSxDQUFDLEtBQW1CO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQXdCTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQWtESyxRQUFROztZQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNYLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBdUIsRUFBRSxFQUFFO2dCQUN0RSxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQ3pJLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDM0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQ3JJLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO3dCQUM5QyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQ3BELElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUU7Z0NBQy9FLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7Z0NBQy9CLE9BQU87NkJBQ1Y7eUJBQ0o7cUJBQ0o7aUJBQ0o7WUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLEVBQUUsQ0FBQzthQUM5RDtRQUNMLENBQUM7S0FBQTtJQUVELGVBQWU7UUFDWCxNQUFNLGtCQUFrQixHQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDOUgsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUM1RDtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0saUJBQWlCLENBQUMsT0FBbUM7UUFDeEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xGLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO2FBQU07WUFDSCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsa0VBQWtFO0lBQzNELFdBQVc7UUFDZCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN4QyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRVkseUJBQXlCLENBQUMsaUJBQXFDOztZQUN4RSxJQUFJLGlCQUFpQixFQUFFO2dCQUNuQixNQUFNLFVBQVUsR0FBcUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pKLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO29CQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDbEc7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNuQixNQUFNLGlCQUFpQixHQUFvQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUMzSixJQUFJLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDNUYsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNoRjtvQkFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDO29CQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO2lCQUM5QzthQUNKO1FBQ0wsQ0FBQztLQUFBO0lBRU0sd0JBQXdCLENBQUMsUUFBa0I7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBaUI7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLCtCQUErQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLHlCQUF5QixDQUFDLEtBQWE7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsU0FBUyxZQUFZLGtCQUFrQixFQUFFO1lBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDckQ7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLEdBQW9CO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLE1BQU0sa0JBQWtCLEdBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM5SCxJQUFJLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDO1FBQ2xDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTSwyQkFBMkIsQ0FBQyxLQUFhO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFO1lBQzNDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsT0FBZ0I7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFYSx3QkFBd0IsQ0FBQyxPQUFnQjs7WUFDbkQsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDM0MsTUFBTSxPQUFPLEdBQVksTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzFFLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUM3QztRQUNMLENBQUM7S0FBQTtJQUVELCtCQUErQjtJQUN2QixzQkFBc0I7UUFDMUIsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1FBQzNDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCxtQkFBbUI7SUFDTCwrQkFBK0I7O1lBQ3pDLE1BQU0sZUFBZSxHQUFvQixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQy9ELGVBQWUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1lBQ2pGLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRTtnQkFDckMsZUFBZSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDO2FBQ2pFO1lBQ0QsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFO2dCQUN2QyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUM7YUFDckU7WUFDRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3hDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQzthQUN2RTtZQUNELElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsRUFBRTtnQkFDeEMsZUFBZSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDO2FBQ3ZFO1lBQ0QsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFO2dCQUNyQyxlQUFlLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDNUU7WUFDRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQzthQUMvRDtZQUNELElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRTtnQkFDbEMsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDO2FBQzNEO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQStCLEVBQUUsRUFBRTtnQkFDbkcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztnQkFDckMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDdEI7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUN0QjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztLQUFBO0lBRU8sMEJBQTBCO1FBQzlCLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ3pDLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDakQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDeEksT0FBTyxLQUFLLENBQUM7aUJBQ2hCO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxtQ0FBbUM7UUFDdkMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQzVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDaEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO2FBQ3pEO1NBQ0o7SUFDTCxDQUFDOzs7WUFqZEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxvQ0FBb0M7Z0JBQzlDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW1IVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1AsaUJBQWlCO2lCQUNwQjtnQkFDRCxVQUFVLEVBQUU7b0JBQ1IsT0FBTyxDQUFDLGlCQUFpQixFQUFFO3dCQUN2QixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBQyxDQUFDLENBQUM7d0JBQ3JELEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUM7d0JBQy9DLFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7cUJBQ3pELENBQUM7b0JBQ0YsT0FBTyxDQUFDLHdCQUF3QixFQUFFO3dCQUM5QixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7d0JBQzdDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDNUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt3QkFDckQsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztxQkFDckQsQ0FBQztpQkFDTDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O1lBaEtPLGlCQUFpQjtZQURqQixrQkFBa0I7WUFnQmxCLGVBQWU7WUFDZixhQUFhO1lBT2Isa0NBQWtDOzs7MkJBK0lyQyxZQUFZLFNBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTt1QkFZL0MsS0FBSzsyQkE0QkwsS0FBSzttQ0FZTCxLQUFLO2tDQUdMLEtBQUs7MEJBR0wsTUFBTTs0QkFHTixNQUFNO29DQUdOLE1BQU07bUNBR04sTUFBTTs2QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQywwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtGb3JtTWFzdGVyU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0NvdW50cnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3VudHJ5LmJvJztcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vLi4vZW51bS9pY29uLmVudW0nO1xuaW1wb3J0IHtDdXN0b21lckZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1mdWxsLW9iamVjdC5ibyc7XG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtJztcbmltcG9ydCB7QWRkcmVzc1R5cGV9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9lbnVtL2FkZHJlc3MtdHlwZS5lbnVtJztcbmltcG9ydCB7UmVsYXRpb25BbnlUeXBlfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZSc7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9hZGRyZXNzLmJvJztcbmltcG9ydCB7UmVsYXRpb25OYW1lS2luZH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24tbmFtZS1raW5kLmVudW0nO1xuaW1wb3J0IHtTdXBwbGllckZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1mdWxsLW9iamVjdC5ibyc7XG5pbXBvcnQge1JlbGF0aW9ufSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24uYm8nO1xuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ibyc7XG5pbXBvcnQge1ZhbGlkYXRpb25SZXN1bHR9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0JztcbmltcG9ydCB7UmVsYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1JlbGF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9yZWxhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQge1JlbGF0aW9uU3VnZ2VzdGlvbnNSZXF1ZXN0fSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2UvcmVsYXRpb24tc3VnZ2VzdGlvbnMtcmVxdWVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtDaGVja291dENmZ05hbWV9IGZyb20gJy4uLy4uLy4uL2VudW0vY2hlY2tvdXQtY2ZnLW5hbWUuZW51bSc7XG5pbXBvcnQge1JlbGF0aW9uR2VuZXJhbENmZ05hbWVzfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2UvcmVsYXRpb24tZ2VuZXJhbC1jZmctbmFtZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7UmVsYXRpb25BZGRyZXNzQ2ZnTmFtZXN9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZS9yZWxhdGlvbi1hZGRyZXNzLWNmZy1uYW1lcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtSZWxhdGlvbkNvbnRhY3REZXRhaWxzQ2ZnTmFtZXN9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZS9yZWxhdGlvbi1jb250YWN0LWRldGFpbHMtY2ZnLW5hbWVzLmludGVyZmFjZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NoZWNrb3V0U2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvY2hlY2tvdXQtc2NyZWVuLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aW9uLWVkaXQtY29udGVudFwiPlxuICAgICAgICAgICAgPGNvLWZvcm0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWZvcm0td3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAjaW5kZXhMYWJlbD48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cIidQRVJTT05BTF9EQVRBJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tdHlwZSAqbmdJZj1cInJlbGF0aW9uS2luZCA9PT0gcmVsS2luZC5DdXN0b21lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuUmVsYXRpb25UeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsYXRpb25dPVwicmVsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWxhdGlvbkNoYW5nZSk9XCJoYW5kbGVSZWxhdGlvblR5cGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tcmVsYXRpb24tdHlwZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwiZW1wdHktcmVsYXRpb24tYnV0dG9uIGRlZmF1bHQtd2lkdGhcIiBbbGFiZWxdPVwiJ0VNUFRZJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbXB0eVJlbGF0aW9uKCRldmVudClcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCIgKm5nSWY9XCJyZWxhdGlvbktpbmQgPT09IHJlbEtpbmQuQ3VzdG9tZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVsYXRpb24tY3VzdG9tZXItZ3JvdXBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjZmdOYW1lcy5SZWxhdGlvbkN1c3RvbWVyR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImN1c3RvbWVyR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZUN1c3RvbWVyR3JvdXBDaGFuZ2UoJGV2ZW50KVwiIHJlcXVpcmVkPjwvcmVsYXRpb24tY3VzdG9tZXItZ3JvdXBzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tZ2VuZXJhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ05hbWVzXT1cInJlbGF0aW9uR2VuZXJhbENvbmZpZ05hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsYXRpb25UeXBlXT1cInJlbGF0aW9uVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVsYXRpb25DaGFuZ2UpPVwidXBkYXRlUmVsYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2VGb3JTdWdnZXN0aW9ucyk9XCJoYW5kbGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1yZWxhdGlvbi1nZW5lcmFsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ05hbWVzXT1cInJlbGF0aW9uQWRkcmVzc0NvbmZpZ05hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzXT1cImFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRm9yU3VnZ2VzdGlvbnMpPVwiaGFuZGxlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tcmVsYXRpb24tYWRkcmVzcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dBZGRyZXNzZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tYWRkcmVzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uXT1cInJlbGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzc2VzXT1cInJlbGF0aW9uLmFkZHJlc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiYWRkcmVzc1R5cGUuRGVsaXZlcnlBZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWROYXdOcl09XCJkZWxpdmVyeUFkZHJlc3NOYXdOclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTmF3TnJDaGFuZ2UpPVwiaGFuZGxlRGVsaXZlcnlBZGRyZXNzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1yZWxhdGlvbi1hZGRyZXNzZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIiAqbmdJZj1cInJlbGF0aW9uS2luZCA9PT0gcmVsS2luZC5DdXN0b21lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICNpbmRleExhYmVsPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cIidJTlZPSUNFX0FERFJFU1MnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiICpuZ0lmPVwicmVsYXRpb25LaW5kID09PSByZWxLaW5kLkN1c3RvbWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBbKG1vZGVsKV09XCJzZXJ2aWNlLmludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnlcIiAobW9kZWxDaGFuZ2UpPVwiY2hlY2tTYW1lQWRkcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU0FNRV9BU19ERUxJVkVSWScgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJ2aWV3LWRlbGl2ZXJ5LWludm9pY2UtYWRkcmVzc1wiICpuZ0lmPVwiIXNlcnZpY2UuaW52b2ljZUFkZHJlc3NTYW1lQXNEZWxpdmVyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2hvd0hpZGVJbnZvaWNlQWRkcmVzcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tYWRkcmVzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzZXNdPVwicmVsYXRpb24uYWN0aXZlQWRkcmVzc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiYWRkcmVzc1R5cGUuQmlsbGluZ0FkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWROYXdOcl09XCJpbnZvaWNlQWRkcmVzc05hd05yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTmF3TnJDaGFuZ2UpPVwiaW52b2ljZUFkZHJlc3NDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLXJlbGF0aW9uLWFkZHJlc3Nlcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Q29udGFjdERldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAjaW5kZXhMYWJlbD48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCInQ09OVEFDVF9ERVRBSUxTJyB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLXJlbGF0aW9uLWNvbnRhY3QtZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb25maWdOYW1lc109XCJjb250YWN0RGV0YWlsc0NvbmZpZ05hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsYXRpb25dPVwicmVsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxhdGlvbktpbmRdPVwicmVsYXRpb25LaW5kXCI+PC9jby1yZWxhdGlvbi1jb250YWN0LWRldGFpbHM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWxhdGlvbktpbmQgPT09IHJlbEtpbmQuQ3VzdG9tZXIgJiYgc2hvd1ByZWZlcmVuY2VzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtbGFiZWwtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gI2luZGV4TGFiZWw+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiJ1BSSVZBQ1lfUFJFRkVSRU5DRVMnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tcHJlZmVyZW5jZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHJlbGF0aW9uKV09XCJyZWxhdGlvblwiPjwvY28tcmVsYXRpb24tcHJlZmVyZW5jZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2NvLWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvbnMtc2lkZWJhclwiICpuZ0lmPVwic2hvd1N1Z2dlc3Rpb25zU2lkZWJhciAmJiBzaG93U3VnZ2VzdGlvbnNcIiBAc2hvd0hpZGVTaWRlYmFyPlxuICAgICAgICAgIDxpY29uIChjbGljayk9XCJoaWRlU2lkZWJhcigpXCIgW2ljb25dPVwiaWNvbnMuQ3Jvc3Nza2lubnlcIiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiPjwvaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1zaWRlYmFyLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWgzXCIgW3RleHRDb250ZW50XT1cIidTVUdHRVNUSU9OUycgfCBsb2NhbGl6ZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjby1yZWxhdGlvbi1zdWdnZXN0aW9ucy1saXN0XG4gICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJyZWxhdGlvblN1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKHN1Z2dlc3Rpb25TZWxlY3RlZCk9XCJvblJlbGF0aW9uU3VnZ2VzdGlvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgPjwvY28tcmVsYXRpb24tc3VnZ2VzdGlvbnMtbGlzdD5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgRm9ybU1hc3RlclNlcnZpY2VcbiAgICBdLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignc2hvd0hpZGVTaWRlYmFyJywgW1xuICAgICAgICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKSd9KSksXG4gICAgICAgICAgICBzdGF0ZSgnKicsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJ30pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPD0+IConLCBhbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpKVxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignc2hvd0hpZGVJbnZvaWNlQWRkcmVzcycsIFtcbiAgICAgICAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe2hlaWdodDogMCwgb3BhY2l0eTogMH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCcqJywgc3R5bGUoe2hlaWdodDogJyonLCBvcGFjaXR5OiAxfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbi1vdXQnKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcpKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dE92ZXJ2aWV3UmVsYXRpb25FZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyByZWFkb25seSBjZmdOYW1lczogdHlwZW9mIENoZWNrb3V0Q2ZnTmFtZSA9IENoZWNrb3V0Q2ZnTmFtZTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVsS2luZDogdHlwZW9mIFJlbGF0aW9uS2luZCA9IFJlbGF0aW9uS2luZDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYWRkcmVzc1R5cGU6IHR5cGVvZiBBZGRyZXNzVHlwZSA9IEFkZHJlc3NUeXBlO1xuICAgIEBWaWV3Q2hpbGRyZW4oXCJpbmRleExhYmVsXCIsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBzZXQgdmlld0NoaWxkcmVuKGNoaWxkcmVuKSB7XG4gICAgICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzcGFucyA9IGNoaWxkcmVuLnRvQXJyYXkoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BhbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gc3BhbnNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHNwYW4ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBzcGFuLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gKGkgKyAxIDwgMTApID8gJzAnICsgKGkgKyAxKS50b1N0cmluZygpIDogKGkgKyAxKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZWxhdGlvbih2YWx1ZTogUmVsYXRpb25BbnlUeXBlKSB7XG4gICAgICAgIGlmICh0aGlzLl9yZWxhdGlvbiAmJiB2YWx1ZSAmJiB0aGlzLl9yZWxhdGlvbi5yZWxhdGlvbklkICYmIHZhbHVlLnJlbGF0aW9uSWQgJiYgdGhpcy5fcmVsYXRpb24ucmVsYXRpb25JZCA9PT0gdmFsdWUucmVsYXRpb25JZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3JlbGF0aW9uID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3JlbGF0aW9uIGluc3RhbmNlb2YgU3VwcGxpZXJGdWxsT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVsYXRpb24udHlwZSA9IFJlbGF0aW9uTmFtZUtpbmQuQ29tcGFueTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aW9uVHlwZSA9IFJlbGF0aW9uTmFtZUtpbmQuQ29tcGFueTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9yZWxhdGlvbiBpbnN0YW5jZW9mIEN1c3RvbWVyRnVsbE9iamVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tZXJHcm91cCA9IHRoaXMuX3JlbGF0aW9uLmN1c3RvbWVyR3JvdXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFkZHJlc3MgPSB0aGlzLl9yZWxhdGlvbi5nZXRGaXJzdEFkZHJlc3NPckNyZWF0ZU5ldygpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYWRkcmVzcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIgPSB0aGlzLmFkZHJlc3MubmF3TnI7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NDaGFuZ2UuZW1pdCh0aGlzLmRlbGl2ZXJ5QWRkcmVzc05hd05yKTtcbiAgICAgICAgICAgICAgICB0aGlzLmludm9pY2VBZGRyZXNzTmF3TnIgPSB0aGlzLmFkZHJlc3MubmF3TnI7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZvaWNlQWRkcmVzc0NoYW5nZS5lbWl0KHRoaXMuaW52b2ljZUFkZHJlc3NOYXdOcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlbGF0aW9uKCk6IFJlbGF0aW9uQW55VHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbjtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcmVsYXRpb25LaW5kKHZhbHVlOiBSZWxhdGlvbktpbmQpIHtcbiAgICAgICAgdGhpcy5fcmVsYXRpb25LaW5kID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl9yZWxhdGlvbktpbmQgPT09IFJlbGF0aW9uS2luZC5TdXBwbGllcikge1xuICAgICAgICAgICAgdGhpcy5yZWxhdGlvblR5cGUgPSBSZWxhdGlvbk5hbWVLaW5kLkNvbXBhbnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlbGF0aW9uS2luZCgpOiBSZWxhdGlvbktpbmQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVsYXRpb25LaW5kO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlbGl2ZXJ5QWRkcmVzc05hd05yOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbnZvaWNlQWRkcmVzc05hd05yOiBudW1iZXI7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsaWRTdWJtaXQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpbnZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZGVsaXZlcnlBZGRyZXNzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGludm9pY2VBZGRyZXNzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlbGF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVsYXRpb25BbnlUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVsYXRpb25BbnlUeXBlPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0JylcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkcmVzczogQWRkcmVzcztcbiAgICBwdWJsaWMgY3VzdG9tZXJHcm91cDogc3RyaW5nO1xuICAgIHB1YmxpYyByZWxhdGlvblR5cGU6IFJlbGF0aW9uTmFtZUtpbmQgPSBSZWxhdGlvbk5hbWVLaW5kLlByaXZhdGU7XG5cbiAgICBwdWJsaWMgcmVsYXRpb25TdWdnZXN0aW9uczogUmVsYXRpb25MaXN0T2JqZWN0W10gPSBbXTtcbiAgICBwdWJsaWMgc2hvd1N1Z2dlc3Rpb25zU2lkZWJhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnRhY3REZXRhaWxzQ29uZmlnTmFtZXM6IFJlbGF0aW9uQ29udGFjdERldGFpbHNDZmdOYW1lcyA9IHtcbiAgICAgICAgcmVsYXRpb25QaG9uZTogdGhpcy5jZmdOYW1lcy5SZWxhdGlvblBob25lLFxuICAgICAgICByZWxhdGlvbkVtYWlsQWRkcmVzczogdGhpcy5jZmdOYW1lcy5SZWxhdGlvbkVtYWlsQWRkcmVzcyxcbiAgICAgICAgcmVsYXRpb25JbnZpdGVUb0FjY291bnQ6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25JbnZpdGVUb0FjY291bnRcbiAgICB9O1xuICAgIHB1YmxpYyByZWxhdGlvbkdlbmVyYWxDb25maWdOYW1lczogUmVsYXRpb25HZW5lcmFsQ2ZnTmFtZXMgPSB7XG4gICAgICAgIHJlbGF0aW9uQ29tcGFueTogdGhpcy5jZmdOYW1lcy5SZWxhdGlvbkNvbXBhbnksXG4gICAgICAgIHJlbGF0aW9uRmlyc3ROYW1lOiB0aGlzLmNmZ05hbWVzLlJlbGF0aW9uRmlyc3ROYW1lLFxuICAgICAgICByZWxhdGlvblByZWZpeDogdGhpcy5jZmdOYW1lcy5SZWxhdGlvblByZWZpeCxcbiAgICAgICAgcmVsYXRpb25MYXN0TmFtZTogdGhpcy5jZmdOYW1lcy5SZWxhdGlvbkxhc3ROYW1lLFxuICAgICAgICByZWxhdGlvbkdlbmRlcjogdGhpcy5jZmdOYW1lcy5SZWxhdGlvbkdlbmRlcixcbiAgICAgICAgY29udGFjdERldGFpbHM6IHRoaXMuY29udGFjdERldGFpbHNDb25maWdOYW1lc1xuICAgIH07XG4gICAgcHVibGljIHJlbGF0aW9uQWRkcmVzc0NvbmZpZ05hbWVzOiBSZWxhdGlvbkFkZHJlc3NDZmdOYW1lcyA9IHtcbiAgICAgICAgcmVsYXRpb25TdHJlZXQ6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25TdHJlZXQsXG4gICAgICAgIHJlbGF0aW9uSG91c2VOcjogdGhpcy5jZmdOYW1lcy5SZWxhdGlvbkhvdXNlTnIsXG4gICAgICAgIHJlbGF0aW9uSG91c2VOckFkZDogdGhpcy5jZmdOYW1lcy5SZWxhdGlvbkhvdXNlTnJBZGQsXG4gICAgICAgIHJlbGF0aW9uQ2l0eTogdGhpcy5jZmdOYW1lcy5SZWxhdGlvbkNpdHksXG4gICAgICAgIHJlbGF0aW9uQ291bnRyeTogdGhpcy5jZmdOYW1lcy5SZWxhdGlvbkNvdW50cnksXG4gICAgICAgIHJlbGF0aW9uUG9zdGFsQ29kZTogdGhpcy5jZmdOYW1lcy5SZWxhdGlvblBvc3RhbENvZGVcbiAgICB9O1xuICAgIHB1YmxpYyBzaG93Q29udGFjdERldGFpbHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgc2hvd1ByZWZlcmVuY2VzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHNob3dTdWdnZXN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBzaG93QWRkcmVzc2VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9yZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlID0gbmV3IEN1c3RvbWVyRnVsbE9iamVjdCgpO1xuICAgIHByaXZhdGUgX3JlbGF0aW9uS2luZDogUmVsYXRpb25LaW5kID0gUmVsYXRpb25LaW5kLkN1c3RvbWVyO1xuICAgIHByaXZhdGUgX3JlcXVlc3RGb3JTdWdnZXN0aW9uczogUmVsYXRpb25TdWdnZXN0aW9uc1JlcXVlc3QgPSB7fTtcbiAgICBwcml2YXRlIF9zdWdnZXN0aW9uTGlzdFRpbWVvdXQ6IGFueTtcbiAgICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2Zvcm1NYXN0ZXI6IEZvcm1NYXN0ZXJTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9yZWxhdGlvblNlcnZpY2U6IFJlbGF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfc2NyZWVuQ29uZmlnU2VydmljZTogQ2hlY2tvdXRTY3JlZW5Db25maWd1cmF0aW9uU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9zdWJzLnB1c2goXG4gICAgICAgICAgICB0aGlzLl9zY3JlZW5Db25maWdTZXJ2aWNlLmNvbmZpZ1NldC5zdWJzY3JpYmUoKGNvbmZpZ09iamVjdHM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZ09iamVjdHMgJiYgY29uZmlnT2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1ByZWZlcmVuY2VzID0gdGhpcy5fc2NyZWVuQ29uZmlnU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25QcmVmZXJlbmNlc0hlYWRlcikuaW1tZWRpYXRlbHlWaXNpYmxlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb25zID0gdGhpcy5fc2NyZWVuQ29uZmlnU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuY2ZnTmFtZXMuU3VnZ2VzdGlvbnMpLmltbWVkaWF0ZWx5VmlzaWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBZGRyZXNzZXMgPSB0aGlzLl9zY3JlZW5Db25maWdTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5jZmdOYW1lcy5SZWxhdGlvbkFkZHJlc3Nlc0hlYWRlcikuaW1tZWRpYXRlbHlWaXNpYmxlKCk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29udGFjdERldGFpbHNDb25maWdOYW1lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGFjdERldGFpbHNDb25maWdOYW1lcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlbkNvbmZpZ1NlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcihrZXkpLmltbWVkaWF0ZWx5VmlzaWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NvbnRhY3REZXRhaWxzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLl9yZWxhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzID0gdGhpcy5fcmVsYXRpb24uZ2V0Rmlyc3RBZGRyZXNzT3JDcmVhdGVOZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlyc3RBY3RpdmVBZGRyZXNzOiBBZGRyZXNzID0gdGhpcy5fcmVsYXRpb24uYWN0aXZlQWRkcmVzc2VzLmxlbmd0aCA+IDAgPyB0aGlzLl9yZWxhdGlvbi5hY3RpdmVBZGRyZXNzZXNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOcikge1xuICAgICAgICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOciA9IGZpcnN0QWN0aXZlQWRkcmVzcyA/IGZpcnN0QWN0aXZlQWRkcmVzcy5uYXdOciA6IDA7XG4gICAgICAgICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc0NoYW5nZS5lbWl0KHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5pbnZvaWNlQWRkcmVzc05hd05yKSB7XG4gICAgICAgICAgICB0aGlzLmludm9pY2VBZGRyZXNzTmF3TnIgPSBmaXJzdEFjdGl2ZUFkZHJlc3MgPyBmaXJzdEFjdGl2ZUFkZHJlc3MubmF3TnIgOiAwO1xuICAgICAgICAgICAgdGhpcy5pbnZvaWNlQWRkcmVzc0NoYW5nZS5lbWl0KHRoaXMuaW52b2ljZUFkZHJlc3NOYXdOcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlSW5wdXRDaGFuZ2UocmVxdWVzdDogUmVsYXRpb25TdWdnZXN0aW9uc1JlcXVlc3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zID0gT2JqZWN0LmFzc2lnbih0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMsIHJlcXVlc3QpO1xuICAgICAgICBpZiAodGhpcy5faXNFbXB0eVN1Z2dlc3Rpb25zUmVxdWVzdCgpKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVTaWRlYmFyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uTGlzdFJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzaG93U2lkZWJhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbnNTaWRlYmFyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBIaWRlIHNpZGViYXIgd2l0aCBhIGxpdHRsZSB0aW1lb3V0IHRvIHByZXZlbnQgbWlzc2luZyB0aGUgY2xpY2tcbiAgICBwdWJsaWMgaGlkZVNpZGViYXIoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbnNTaWRlYmFyID0gZmFsc2U7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG9uUmVsYXRpb25TdWdnZXN0aW9uQ2xpY2socmVsYXRpb25TdWdnZXN0ZWQ6IFJlbGF0aW9uTGlzdE9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAocmVsYXRpb25TdWdnZXN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tSZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLl9yZWxhdGlvblNlcnZpY2UubG9ja1JlbGF0aW9uKHJlbGF0aW9uU3VnZ2VzdGVkLnJlbGF0aW9uVHlwZSwgcGFyc2VJbnQocmVsYXRpb25TdWdnZXN0ZWQucmVsYXRpb25OciwgMCkpO1xuICAgICAgICAgICAgaWYgKCFsb2NrUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlLnNob3dFcnJvcignUkVMQVRJT05fQUxSRUFEWV9MT0NLRUQnLCB0cnVlLCBsb2NrUmVzdWx0Lm1lc3NhZ2VzWzBdLm1lc3NhZ2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVTaWRlYmFyKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VnZ2VzdGVkUmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSA9IGF3YWl0IHRoaXMuX3JlbGF0aW9uU2VydmljZS5nZXRSZWxhdGlvbihyZWxhdGlvblN1Z2dlc3RlZC5yZWxhdGlvblR5cGUsIHBhcnNlSW50KHJlbGF0aW9uU3VnZ2VzdGVkLnJlbGF0aW9uTnIpKTtcbiAgICAgICAgICAgICAgICBpZiAoc3VnZ2VzdGVkUmVsYXRpb24gJiYgc3VnZ2VzdGVkUmVsYXRpb24uYWRkcmVzc2VzICYmIHN1Z2dlc3RlZFJlbGF0aW9uLmFkZHJlc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3RlZFJlbGF0aW9uLmFkZHJlc3Nlcy5zb3J0KChhLCBiKSA9PiBhLnNlcXVlbmNlIDwgYi5zZXF1ZW5jZSA/IC0xIDogMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVsYXRpb24gPSBzdWdnZXN0ZWRSZWxhdGlvbjtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aW9uQ2hhbmdlLm5leHQodGhpcy5yZWxhdGlvbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRTdWdnZXN0aW9uUmVxdWVzdFdpdGhSZWxhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZVJlbGF0aW9uVHlwZUNoYW5nZShyZWxhdGlvbjogUmVsYXRpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWxhdGlvblR5cGUgPSByZWxhdGlvbi50eXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbXB0eVJlbGF0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVOZXdSZWxhdGlvbigpO1xuICAgICAgICB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMgPSB7fTtcbiAgICAgICAgdGhpcy5fcmVsYXRpb25TZXJ2aWNlLnJlbGF0aW9uU3VnZ2VzdGlvbnNSZXF1ZXN0Q2xlYXIubmV4dCgpO1xuICAgICAgICB0aGlzLmhpZGVTaWRlYmFyKCk7XG4gICAgICAgIHRoaXMudXBkYXRlUmVsYXRpb24odGhpcy5zZXJ2aWNlLnJlbGF0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlQ3VzdG9tZXJHcm91cENoYW5nZShncm91cDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VzdG9tZXJHcm91cCA9IGdyb3VwO1xuICAgICAgICBpZiAodGhpcy5fcmVsYXRpb24gaW5zdGFuY2VvZiBDdXN0b21lckZ1bGxPYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbGF0aW9uLmN1c3RvbWVyR3JvdXAgPSB0aGlzLmN1c3RvbWVyR3JvdXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUmVsYXRpb24ocmVsOiBSZWxhdGlvbkFueVR5cGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWxhdGlvbiA9IHJlbDtcbiAgICAgICAgY29uc3QgZmlyc3RBY3RpdmVBZGRyZXNzOiBBZGRyZXNzID0gdGhpcy5fcmVsYXRpb24uYWN0aXZlQWRkcmVzc2VzLmxlbmd0aCA+IDAgPyB0aGlzLl9yZWxhdGlvbi5hY3RpdmVBZGRyZXNzZXNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWRkcmVzcyA9IGZpcnN0QWN0aXZlQWRkcmVzcztcbiAgICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOciA9IGZpcnN0QWN0aXZlQWRkcmVzcyA/IGZpcnN0QWN0aXZlQWRkcmVzcy5uYXdOciA6IDA7XG4gICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzQ2hhbmdlLmVtaXQodGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOcik7XG4gICAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NOYXdOciA9IGZpcnN0QWN0aXZlQWRkcmVzcyA/IGZpcnN0QWN0aXZlQWRkcmVzcy5uYXdOciA6IDA7XG4gICAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NDaGFuZ2UuZW1pdCh0aGlzLmludm9pY2VBZGRyZXNzTmF3TnIpO1xuICAgICAgICB0aGlzLnJlbGF0aW9uQ2hhbmdlLmVtaXQodGhpcy5yZWxhdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIHN1Ym1pdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1NYXN0ZXIuc3VibWl0U2xhdmVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZURlbGl2ZXJ5QWRkcmVzc0NoYW5nZShuYXdOcjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzQ2hhbmdlLmVtaXQobmF3TnIpO1xuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLmludm9pY2VBZGRyZXNzU2FtZUFzRGVsaXZlcnkpIHtcbiAgICAgICAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NDaGFuZ2UuZW1pdChuYXdOcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2tTYW1lQWRkcmVzcyhjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NOYXdOciA9IHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnI7XG4gICAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NDaGFuZ2UubmV4dCh0aGlzLmludm9pY2VBZGRyZXNzTmF3TnIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldENvdW50cnlOYW1lVG9BZGRyZXNzKGFkZHJlc3M6IEFkZHJlc3MpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKGFkZHJlc3MuY291bnRyeUlkICYmICFhZGRyZXNzLmNvdW50cnlOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBjb3VudHJ5OiBDb3VudHJ5ID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldENvdW50cnkoYWRkcmVzcy5jb3VudHJ5SWQpO1xuICAgICAgICAgICAgYWRkcmVzcy5jb3VudHJ5TmFtZSA9IGNvdW50cnkuZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBmZXRjaGVzIHJlbGF0aW9uIHN1Z2dlc3Rpb25zXG4gICAgcHJpdmF0ZSBfc3VnZ2VzdGlvbkxpc3RSZWZyZXNoKCk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fc3VnZ2VzdGlvbkxpc3RUaW1lb3V0KTtcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbkxpc3RUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uTGlzdFJlZnJlc2hIYW5kbGVyRm4oKTtcbiAgICAgICAgfSwgNjAwKTtcbiAgICB9XG5cbiAgICAvLyBsb2FkIHN1Z2dlc3Rpb25zXG4gICAgcHJpdmF0ZSBhc3luYyBfc3VnZ2VzdGlvbkxpc3RSZWZyZXNoSGFuZGxlckZuKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uUmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0ID0gbmV3IFJlbGF0aW9uUmVxdWVzdCgpO1xuICAgICAgICByZWxhdGlvblJlcXVlc3QucmVsYXRpb25UeXBlID0gdGhpcy5zZXJ2aWNlLmdldFJlbGF0aW9uS2luZEZyb21UcmFuc2FjdGlvbktpbmQoKTtcbiAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5nZW5lcmFsKSB7XG4gICAgICAgICAgICByZWxhdGlvblJlcXVlc3QuZ2VuZXJhbCA9IHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5nZW5lcmFsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuZmlyc3ROYW1lKSB7XG4gICAgICAgICAgICByZWxhdGlvblJlcXVlc3QuZmlyc3ROYW1lID0gdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmZpcnN0TmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmZhbWlseU5hbWUpIHtcbiAgICAgICAgICAgIHJlbGF0aW9uUmVxdWVzdC5mYW1pbHlOYW1lID0gdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmZhbWlseU5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5wb3N0YWxDb2RlKSB7XG4gICAgICAgICAgICByZWxhdGlvblJlcXVlc3QucG9zdGFsQ29kZSA9IHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5wb3N0YWxDb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuaG91c2VOcikge1xuICAgICAgICAgICAgcmVsYXRpb25SZXF1ZXN0LmhvdXNlTnIgPSB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuaG91c2VOci50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuc3RyZWV0KSB7XG4gICAgICAgICAgICByZWxhdGlvblJlcXVlc3Quc3RyZWV0ID0gdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLnN0cmVldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmNpdHkpIHtcbiAgICAgICAgICAgIHJlbGF0aW9uUmVxdWVzdC5jaXR5ID0gdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmNpdHk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZWxhdGlvblNlcnZpY2UuZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZWxhdGlvblJlcXVlc3QpLnRoZW4oKHJlbGF0aW9uczogUmVsYXRpb25MaXN0T2JqZWN0W10pID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25TdWdnZXN0aW9ucyA9IHJlbGF0aW9ucztcbiAgICAgICAgICAgIGlmIChyZWxhdGlvbnMgJiYgcmVsYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTaWRlYmFyKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZVNpZGViYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXNFbXB0eVN1Z2dlc3Rpb25zUmVxdWVzdCgpOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9uc1trZXldICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zW2tleV0gIT09IG51bGwgJiYgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zW2tleV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzZXRTdWdnZXN0aW9uUmVxdWVzdFdpdGhSZWxhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zID0ge307XG4gICAgICAgIGlmICh0aGlzLnJlbGF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuZmlyc3ROYW1lID0gdGhpcy5yZWxhdGlvbi5maXJzdE5hbWU7XG4gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuZmFtaWx5TmFtZSA9IHRoaXMucmVsYXRpb24uZmFtaWx5TmFtZTtcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLnJlbGF0aW9uLmFkZHJlc3Nlc1swXTtcbiAgICAgICAgICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLnN0cmVldCA9IGFkZHJlc3Muc3RyZWV0TmFtZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMucG9zdGFsQ29kZSA9IGFkZHJlc3MucG9zdGFsQ29kZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuY2l0eSA9IGFkZHJlc3MuY2l0eTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuaG91c2VOciA9IGFkZHJlc3MuaG91c2VObztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
462
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jaGVja291dC9jaGVja291dC1vdmVydmlldy1yZWxhdGlvbi1lZGl0L2NoZWNrb3V0LW92ZXJ2aWV3LXJlbGF0aW9uLWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRS9FLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDakYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBRy9FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBSTdGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUNBQW1DLENB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QUMsU0FBUyxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUM7d0JBQy9DLFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7cUJBQ3pELENBQUM7b0JBQ0YsT0FBTyxDQUFDLHdCQUF3QixFQUFFO3dCQUM5QixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7d0JBQzdDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzt3QkFDNUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt3QkFDckQsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztxQkFDckQsQ0FBQztpQkFDTDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O1lBaEtPLGlCQUFpQjtZQURqQixrQkFBa0I7WUFnQmxCLGVBQWU7WUFDZixhQUFhO1lBT2Isa0NBQWtDOzs7MkJBK0lyQyxZQUFZLFNBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTt1QkFZL0MsS0FBSzsyQkE0QkwsS0FBSzttQ0FZTCxLQUFLO2tDQUdMLEtBQUs7MEJBR0wsTUFBTTs0QkFHTixNQUFNO29DQUdOLE1BQU07bUNBR04sTUFBTTs2QkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQywwQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtGb3JtTWFzdGVyU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0NvdW50cnl9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jb3VudHJ5LmJvJztcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vLi4vZW51bS9pY29uLmVudW0nO1xuaW1wb3J0IHtDdXN0b21lckZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1mdWxsLW9iamVjdC5ibyc7XG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtJztcbmltcG9ydCB7QWRkcmVzc1R5cGV9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9lbnVtL2FkZHJlc3MtdHlwZS5lbnVtJztcbmltcG9ydCB7UmVsYXRpb25BbnlUeXBlfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZSc7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9hZGRyZXNzLmJvJztcbmltcG9ydCB7UmVsYXRpb25OYW1lS2luZH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24tbmFtZS1raW5kLmVudW0nO1xuaW1wb3J0IHtTdXBwbGllckZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1mdWxsLW9iamVjdC5ibyc7XG5pbXBvcnQge1JlbGF0aW9ufSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24uYm8nO1xuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ibyc7XG5pbXBvcnQge1ZhbGlkYXRpb25SZXN1bHR9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0JztcbmltcG9ydCB7UmVsYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcmVxdWVzdCc7XG5pbXBvcnQge1JlbGF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9yZWxhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQge1JlbGF0aW9uU3VnZ2VzdGlvbnNSZXF1ZXN0fSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2UvcmVsYXRpb24tc3VnZ2VzdGlvbnMtcmVxdWVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtDaGVja291dENmZ05hbWV9IGZyb20gJy4uLy4uLy4uL2VudW0vY2hlY2tvdXQtY2ZnLW5hbWUuZW51bSc7XG5pbXBvcnQge1JlbGF0aW9uR2VuZXJhbENmZ05hbWVzfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2UvcmVsYXRpb24tZ2VuZXJhbC1jZmctbmFtZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7UmVsYXRpb25BZGRyZXNzQ2ZnTmFtZXN9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZS9yZWxhdGlvbi1hZGRyZXNzLWNmZy1uYW1lcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtSZWxhdGlvbkNvbnRhY3REZXRhaWxzQ2ZnTmFtZXN9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZS9yZWxhdGlvbi1jb250YWN0LWRldGFpbHMtY2ZnLW5hbWVzLmludGVyZmFjZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NoZWNrb3V0U2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvY2hlY2tvdXQtc2NyZWVuLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aW9uLWVkaXQtY29udGVudFwiPlxuICAgICAgICAgICAgPGNvLWZvcm0tdGVzdD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZm9ybS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICNpbmRleExhYmVsPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiJ1BFUlNPTkFMX0RBVEEnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1yZWxhdGlvbi10eXBlICpuZ0lmPVwicmVsYXRpb25LaW5kID09PSByZWxLaW5kLkN1c3RvbWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjZmdOYW1lcy5SZWxhdGlvblR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbGF0aW9uQ2hhbmdlKT1cImhhbmRsZVJlbGF0aW9uVHlwZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1yZWxhdGlvbi10eXBlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJlbXB0eS1yZWxhdGlvbi1idXR0b24gZGVmYXVsdC13aWR0aFwiIFtsYWJlbF09XCInRU1QVFknIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtcHR5UmVsYXRpb24oJGV2ZW50KVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIiAqbmdJZj1cInJlbGF0aW9uS2luZCA9PT0gcmVsS2luZC5DdXN0b21lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWxhdGlvbi1jdXN0b21lci1ncm91cHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNmZ05hbWVzLlJlbGF0aW9uQ3VzdG9tZXJHcm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiY3VzdG9tZXJHcm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlQ3VzdG9tZXJHcm91cENoYW5nZSgkZXZlbnQpXCIgcmVxdWlyZWQ+PC9yZWxhdGlvbi1jdXN0b21lci1ncm91cHM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1yZWxhdGlvbi1nZW5lcmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnTmFtZXNdPVwicmVsYXRpb25HZW5lcmFsQ29uZmlnTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uXT1cInJlbGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxhdGlvblR5cGVdPVwicmVsYXRpb25UeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWxhdGlvbkNoYW5nZSk9XCJ1cGRhdGVSZWxhdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZUZvclN1Z2dlc3Rpb25zKT1cImhhbmRsZUlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLXJlbGF0aW9uLWdlbmVyYWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnTmFtZXNdPVwicmVsYXRpb25BZGRyZXNzQ29uZmlnTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3NdPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2VGb3JTdWdnZXN0aW9ucyk9XCJoYW5kbGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1yZWxhdGlvbi1hZGRyZXNzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0FkZHJlc3Nlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsYXRpb25dPVwicmVsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzZXNdPVwicmVsYXRpb24uYWRkcmVzc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJhZGRyZXNzVHlwZS5EZWxpdmVyeUFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZE5hd05yXT1cImRlbGl2ZXJ5QWRkcmVzc05hd05yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWROYXdOckNoYW5nZSk9XCJoYW5kbGVEZWxpdmVyeUFkZHJlc3NDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLXJlbGF0aW9uLWFkZHJlc3Nlcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiICpuZ0lmPVwicmVsYXRpb25LaW5kID09PSByZWxLaW5kLkN1c3RvbWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gI2luZGV4TGFiZWw+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiJ0lOVk9JQ0VfQUREUkVTUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCIgKm5nSWY9XCJyZWxhdGlvbktpbmQgPT09IHJlbEtpbmQuQ3VzdG9tZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFsobW9kZWwpXT1cInNlcnZpY2UuaW52b2ljZUFkZHJlc3NTYW1lQXNEZWxpdmVyeVwiIChtb2RlbENoYW5nZSk9XCJjaGVja1NhbWVBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTQU1FX0FTX0RFTElWRVJZJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcnZpZXctZGVsaXZlcnktaW52b2ljZS1hZGRyZXNzXCIgKm5nSWY9XCIhc2VydmljZS5pbnZvaWNlQWRkcmVzc1NhbWVBc0RlbGl2ZXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzaG93SGlkZUludm9pY2VBZGRyZXNzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tvdXQtZGF0YS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1yZWxhdGlvbi1hZGRyZXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uXT1cInJlbGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3Nlc109XCJyZWxhdGlvbi5hY3RpdmVBZGRyZXNzZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJhZGRyZXNzVHlwZS5CaWxsaW5nQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZE5hd05yXT1cImludm9pY2VBZGRyZXNzTmF3TnJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWROYXdOckNoYW5nZSk9XCJpbnZvaWNlQWRkcmVzc0NoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tcmVsYXRpb24tYWRkcmVzc2VzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDb250YWN0RGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWxhYmVsLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICNpbmRleExhYmVsPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cIidDT05UQUNUX0RFVEFJTFMnIHwgbG9jYWxpemVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1kYXRhLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tcmVsYXRpb24tY29udGFjdC1kZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ05hbWVzXT1cImNvbnRhY3REZXRhaWxzQ29uZmlnTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxhdGlvbl09XCJyZWxhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uS2luZF09XCJyZWxhdGlvbktpbmRcIj48L2NvLXJlbGF0aW9uLWNvbnRhY3QtZGV0YWlscz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlbGF0aW9uS2luZCA9PT0gcmVsS2luZC5DdXN0b21lciAmJiBzaG93UHJlZmVyZW5jZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja291dC1sYWJlbC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAjaW5kZXhMYWJlbD48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCInUFJJVkFDWV9QUkVGRVJFTkNFUycgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrb3V0LWRhdGEtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1yZWxhdGlvbi1wcmVmZXJlbmNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsocmVsYXRpb24pXT1cInJlbGF0aW9uXCI+PC9jby1yZWxhdGlvbi1wcmVmZXJlbmNlcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvY28tZm9ybS10ZXN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN1Z2dlc3Rpb25zLXNpZGViYXJcIiAqbmdJZj1cInNob3dTdWdnZXN0aW9uc1NpZGViYXIgJiYgc2hvd1N1Z2dlc3Rpb25zXCIgQHNob3dIaWRlU2lkZWJhcj5cbiAgICAgICAgICA8aWNvbiAoY2xpY2spPVwiaGlkZVNpZGViYXIoKVwiIFtpY29uXT1cImljb25zLkNyb3Nzc2tpbm55XCIgY2xhc3M9XCJjbG9zZS1idXR0b25cIj48L2ljb24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tc2lkZWJhci1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja291dC1sYWJlbC1oM1wiIFt0ZXh0Q29udGVudF09XCInU1VHR0VTVElPTlMnIHwgbG9jYWxpemVcIj48L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Y28tcmVsYXRpb24tc3VnZ2VzdGlvbnMtbGlzdFxuICAgICAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwicmVsYXRpb25TdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIChzdWdnZXN0aW9uU2VsZWN0ZWQpPVwib25SZWxhdGlvblN1Z2dlc3Rpb25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2NvLXJlbGF0aW9uLXN1Z2dlc3Rpb25zLWxpc3Q+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEZvcm1NYXN0ZXJTZXJ2aWNlXG4gICAgXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3Nob3dIaWRlU2lkZWJhcicsIFtcbiAgICAgICAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknfSkpLFxuICAgICAgICAgICAgc3RhdGUoJyonLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKSd9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkIDw9PiAqJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbi1vdXQnKSlcbiAgICAgICAgXSksXG4gICAgICAgIHRyaWdnZXIoJ3Nob3dIaWRlSW52b2ljZUFkZHJlc3MnLCBbXG4gICAgICAgICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHtoZWlnaHQ6IDAsIG9wYWNpdHk6IDB9KSksXG4gICAgICAgICAgICBzdGF0ZSgnKicsIHN0eWxlKHtoZWlnaHQ6ICcqJywgb3BhY2l0eTogMX0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4tb3V0JykpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRPdmVydmlld1JlbGF0aW9uRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2ZnTmFtZXM6IHR5cGVvZiBDaGVja291dENmZ05hbWUgPSBDaGVja291dENmZ05hbWU7XG4gICAgcHVibGljIHJlYWRvbmx5IHJlbEtpbmQ6IHR5cGVvZiBSZWxhdGlvbktpbmQgPSBSZWxhdGlvbktpbmQ7XG4gICAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XG4gICAgcHVibGljIHJlYWRvbmx5IGFkZHJlc3NUeXBlOiB0eXBlb2YgQWRkcmVzc1R5cGUgPSBBZGRyZXNzVHlwZTtcbiAgICBAVmlld0NoaWxkcmVuKFwiaW5kZXhMYWJlbFwiLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgc2V0IHZpZXdDaGlsZHJlbihjaGlsZHJlbikge1xuICAgICAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgc3BhbnMgPSBjaGlsZHJlbi50b0FycmF5KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwYW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BhbiA9IHNwYW5zW2ldO1xuICAgICAgICAgICAgICAgIGlmIChzcGFuLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IChpICsgMSA8IDEwKSA/ICcwJyArIChpICsgMSkudG9TdHJpbmcoKSA6IChpICsgMSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcmVsYXRpb24odmFsdWU6IFJlbGF0aW9uQW55VHlwZSkge1xuICAgICAgICBpZiAodGhpcy5fcmVsYXRpb24gJiYgdmFsdWUgJiYgdGhpcy5fcmVsYXRpb24ucmVsYXRpb25JZCAmJiB2YWx1ZS5yZWxhdGlvbklkICYmIHRoaXMuX3JlbGF0aW9uLnJlbGF0aW9uSWQgPT09IHZhbHVlLnJlbGF0aW9uSWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZWxhdGlvbiA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fcmVsYXRpb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZWxhdGlvbiBpbnN0YW5jZW9mIFN1cHBsaWVyRnVsbE9iamVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbGF0aW9uLnR5cGUgPSBSZWxhdGlvbk5hbWVLaW5kLkNvbXBhbnk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGlvblR5cGUgPSBSZWxhdGlvbk5hbWVLaW5kLkNvbXBhbnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5fcmVsYXRpb24gaW5zdGFuY2VvZiBDdXN0b21lckZ1bGxPYmplY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWVyR3JvdXAgPSB0aGlzLl9yZWxhdGlvbi5jdXN0b21lckdyb3VwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZGRyZXNzID0gdGhpcy5fcmVsYXRpb24uZ2V0Rmlyc3RBZGRyZXNzT3JDcmVhdGVOZXcoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFkZHJlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc05hd05yID0gdGhpcy5hZGRyZXNzLm5hd05yO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzQ2hhbmdlLmVtaXQodGhpcy5kZWxpdmVyeUFkZHJlc3NOYXdOcik7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZvaWNlQWRkcmVzc05hd05yID0gdGhpcy5hZGRyZXNzLm5hd05yO1xuICAgICAgICAgICAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NDaGFuZ2UuZW1pdCh0aGlzLmludm9pY2VBZGRyZXNzTmF3TnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZWxhdGlvbigpOiBSZWxhdGlvbkFueVR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVsYXRpb247XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlbGF0aW9uS2luZCh2YWx1ZTogUmVsYXRpb25LaW5kKSB7XG4gICAgICAgIHRoaXMuX3JlbGF0aW9uS2luZCA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fcmVsYXRpb25LaW5kID09PSBSZWxhdGlvbktpbmQuU3VwcGxpZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25UeXBlID0gUmVsYXRpb25OYW1lS2luZC5Db21wYW55O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZWxhdGlvbktpbmQoKTogUmVsYXRpb25LaW5kIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uS2luZDtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkZWxpdmVyeUFkZHJlc3NOYXdOcjogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW52b2ljZUFkZHJlc3NOYXdOcjogbnVtYmVyO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbGlkU3VibWl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaW52YWxpZFN1Ym1pdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRlbGl2ZXJ5QWRkcmVzc0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpbnZvaWNlQWRkcmVzc0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWxhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tY2hlY2tvdXQtb3ZlcnZpZXctcmVsYXRpb24tZWRpdCcpXG4gICAgcHVibGljIHNob3dDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZHJlc3M6IEFkZHJlc3M7XG4gICAgcHVibGljIGN1c3RvbWVyR3JvdXA6IHN0cmluZztcbiAgICBwdWJsaWMgcmVsYXRpb25UeXBlOiBSZWxhdGlvbk5hbWVLaW5kID0gUmVsYXRpb25OYW1lS2luZC5Qcml2YXRlO1xuXG4gICAgcHVibGljIHJlbGF0aW9uU3VnZ2VzdGlvbnM6IFJlbGF0aW9uTGlzdE9iamVjdFtdID0gW107XG4gICAgcHVibGljIHNob3dTdWdnZXN0aW9uc1NpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb250YWN0RGV0YWlsc0NvbmZpZ05hbWVzOiBSZWxhdGlvbkNvbnRhY3REZXRhaWxzQ2ZnTmFtZXMgPSB7XG4gICAgICAgIHJlbGF0aW9uUGhvbmU6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25QaG9uZSxcbiAgICAgICAgcmVsYXRpb25FbWFpbEFkZHJlc3M6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25FbWFpbEFkZHJlc3MsXG4gICAgICAgIHJlbGF0aW9uSW52aXRlVG9BY2NvdW50OiB0aGlzLmNmZ05hbWVzLlJlbGF0aW9uSW52aXRlVG9BY2NvdW50XG4gICAgfTtcbiAgICBwdWJsaWMgcmVsYXRpb25HZW5lcmFsQ29uZmlnTmFtZXM6IFJlbGF0aW9uR2VuZXJhbENmZ05hbWVzID0ge1xuICAgICAgICByZWxhdGlvbkNvbXBhbnk6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25Db21wYW55LFxuICAgICAgICByZWxhdGlvbkZpcnN0TmFtZTogdGhpcy5jZmdOYW1lcy5SZWxhdGlvbkZpcnN0TmFtZSxcbiAgICAgICAgcmVsYXRpb25QcmVmaXg6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25QcmVmaXgsXG4gICAgICAgIHJlbGF0aW9uTGFzdE5hbWU6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25MYXN0TmFtZSxcbiAgICAgICAgcmVsYXRpb25HZW5kZXI6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25HZW5kZXIsXG4gICAgICAgIGNvbnRhY3REZXRhaWxzOiB0aGlzLmNvbnRhY3REZXRhaWxzQ29uZmlnTmFtZXNcbiAgICB9O1xuICAgIHB1YmxpYyByZWxhdGlvbkFkZHJlc3NDb25maWdOYW1lczogUmVsYXRpb25BZGRyZXNzQ2ZnTmFtZXMgPSB7XG4gICAgICAgIHJlbGF0aW9uU3RyZWV0OiB0aGlzLmNmZ05hbWVzLlJlbGF0aW9uU3RyZWV0LFxuICAgICAgICByZWxhdGlvbkhvdXNlTnI6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25Ib3VzZU5yLFxuICAgICAgICByZWxhdGlvbkhvdXNlTnJBZGQ6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25Ib3VzZU5yQWRkLFxuICAgICAgICByZWxhdGlvbkNpdHk6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25DaXR5LFxuICAgICAgICByZWxhdGlvbkNvdW50cnk6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25Db3VudHJ5LFxuICAgICAgICByZWxhdGlvblBvc3RhbENvZGU6IHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25Qb3N0YWxDb2RlXG4gICAgfTtcbiAgICBwdWJsaWMgc2hvd0NvbnRhY3REZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHNob3dQcmVmZXJlbmNlczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBzaG93U3VnZ2VzdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgc2hvd0FkZHJlc3NlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfcmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSA9IG5ldyBDdXN0b21lckZ1bGxPYmplY3QoKTtcbiAgICBwcml2YXRlIF9yZWxhdGlvbktpbmQ6IFJlbGF0aW9uS2luZCA9IFJlbGF0aW9uS2luZC5DdXN0b21lcjtcbiAgICBwcml2YXRlIF9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnM6IFJlbGF0aW9uU3VnZ2VzdGlvbnNSZXF1ZXN0ID0ge307XG4gICAgcHJpdmF0ZSBfc3VnZ2VzdGlvbkxpc3RUaW1lb3V0OiBhbnk7XG4gICAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9mb3JtTWFzdGVyOiBGb3JtTWFzdGVyU2VydmljZSxcbiAgICAgICAgcHVibGljIHNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfcmVsYXRpb25TZXJ2aWNlOiBSZWxhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3NjcmVlbkNvbmZpZ1NlcnZpY2U6IENoZWNrb3V0U2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5fc3Vicy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5fc2NyZWVuQ29uZmlnU2VydmljZS5jb25maWdTZXQuc3Vic2NyaWJlKChjb25maWdPYmplY3RzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb25maWdPYmplY3RzICYmIGNvbmZpZ09iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dQcmVmZXJlbmNlcyA9IHRoaXMuX3NjcmVlbkNvbmZpZ1NlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmNmZ05hbWVzLlJlbGF0aW9uUHJlZmVyZW5jZXNIZWFkZXIpLmltbWVkaWF0ZWx5VmlzaWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dTdWdnZXN0aW9ucyA9IHRoaXMuX3NjcmVlbkNvbmZpZ1NlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmNmZ05hbWVzLlN1Z2dlc3Rpb25zKS5pbW1lZGlhdGVseVZpc2libGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QWRkcmVzc2VzID0gdGhpcy5fc2NyZWVuQ29uZmlnU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25BZGRyZXNzZXNIZWFkZXIpLmltbWVkaWF0ZWx5VmlzaWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbnRhY3REZXRhaWxzQ29uZmlnTmFtZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhY3REZXRhaWxzQ29uZmlnTmFtZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY3JlZW5Db25maWdTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3Ioa2V5KS5pbW1lZGlhdGVseVZpc2libGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dDb250YWN0RGV0YWlscyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5fcmVsYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzcyA9IHRoaXMuX3JlbGF0aW9uLmdldEZpcnN0QWRkcmVzc09yQ3JlYXRlTmV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpcnN0QWN0aXZlQWRkcmVzczogQWRkcmVzcyA9IHRoaXMuX3JlbGF0aW9uLmFjdGl2ZUFkZHJlc3Nlcy5sZW5ndGggPiAwID8gdGhpcy5fcmVsYXRpb24uYWN0aXZlQWRkcmVzc2VzWzBdIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIXRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIgPSBmaXJzdEFjdGl2ZUFkZHJlc3MgPyBmaXJzdEFjdGl2ZUFkZHJlc3MubmF3TnIgOiAwO1xuICAgICAgICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NDaGFuZ2UuZW1pdCh0aGlzLmRlbGl2ZXJ5QWRkcmVzc05hd05yKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaW52b2ljZUFkZHJlc3NOYXdOcikge1xuICAgICAgICAgICAgdGhpcy5pbnZvaWNlQWRkcmVzc05hd05yID0gZmlyc3RBY3RpdmVBZGRyZXNzID8gZmlyc3RBY3RpdmVBZGRyZXNzLm5hd05yIDogMDtcbiAgICAgICAgICAgIHRoaXMuaW52b2ljZUFkZHJlc3NDaGFuZ2UuZW1pdCh0aGlzLmludm9pY2VBZGRyZXNzTmF3TnIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUlucHV0Q2hhbmdlKHJlcXVlc3Q6IFJlbGF0aW9uU3VnZ2VzdGlvbnNSZXF1ZXN0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucyA9IE9iamVjdC5hc3NpZ24odGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLCByZXF1ZXN0KTtcbiAgICAgICAgaWYgKHRoaXMuX2lzRW1wdHlTdWdnZXN0aW9uc1JlcXVlc3QoKSkge1xuICAgICAgICAgICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbkxpc3RSZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd1NpZGViYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb25zU2lkZWJhciA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gSGlkZSBzaWRlYmFyIHdpdGggYSBsaXR0bGUgdGltZW91dCB0byBwcmV2ZW50IG1pc3NpbmcgdGhlIGNsaWNrXG4gICAgcHVibGljIGhpZGVTaWRlYmFyKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb25zU2lkZWJhciA9IGZhbHNlO1xuICAgICAgICB9LCAyMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvblJlbGF0aW9uU3VnZ2VzdGlvbkNsaWNrKHJlbGF0aW9uU3VnZ2VzdGVkOiBSZWxhdGlvbkxpc3RPYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHJlbGF0aW9uU3VnZ2VzdGVkKSB7XG4gICAgICAgICAgICBjb25zdCBsb2NrUmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdGhpcy5fcmVsYXRpb25TZXJ2aWNlLmxvY2tSZWxhdGlvbihyZWxhdGlvblN1Z2dlc3RlZC5yZWxhdGlvblR5cGUsIHBhcnNlSW50KHJlbGF0aW9uU3VnZ2VzdGVkLnJlbGF0aW9uTnIsIDApKTtcbiAgICAgICAgICAgIGlmICghbG9ja1Jlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5zaG93RXJyb3IoJ1JFTEFUSU9OX0FMUkVBRFlfTE9DS0VEJywgdHJ1ZSwgbG9ja1Jlc3VsdC5tZXNzYWdlc1swXS5tZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1Z2dlc3RlZFJlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUgPSBhd2FpdCB0aGlzLl9yZWxhdGlvblNlcnZpY2UuZ2V0UmVsYXRpb24ocmVsYXRpb25TdWdnZXN0ZWQucmVsYXRpb25UeXBlLCBwYXJzZUludChyZWxhdGlvblN1Z2dlc3RlZC5yZWxhdGlvbk5yKSk7XG4gICAgICAgICAgICAgICAgaWYgKHN1Z2dlc3RlZFJlbGF0aW9uICYmIHN1Z2dlc3RlZFJlbGF0aW9uLmFkZHJlc3NlcyAmJiBzdWdnZXN0ZWRSZWxhdGlvbi5hZGRyZXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0ZWRSZWxhdGlvbi5hZGRyZXNzZXMuc29ydCgoYSwgYikgPT4gYS5zZXF1ZW5jZSA8IGIuc2VxdWVuY2UgPyAtMSA6IDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aW9uID0gc3VnZ2VzdGVkUmVsYXRpb247XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGlvbkNoYW5nZS5uZXh0KHRoaXMucmVsYXRpb24pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0U3VnZ2VzdGlvblJlcXVlc3RXaXRoUmVsYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVSZWxhdGlvblR5cGVDaGFuZ2UocmVsYXRpb246IFJlbGF0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVsYXRpb25UeXBlID0gcmVsYXRpb24udHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW1wdHlSZWxhdGlvbihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UuY3JlYXRlTmV3UmVsYXRpb24oKTtcbiAgICAgICAgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zID0ge307XG4gICAgICAgIHRoaXMuX3JlbGF0aW9uU2VydmljZS5yZWxhdGlvblN1Z2dlc3Rpb25zUmVxdWVzdENsZWFyLm5leHQoKTtcbiAgICAgICAgdGhpcy5oaWRlU2lkZWJhcigpO1xuICAgICAgICB0aGlzLnVwZGF0ZVJlbGF0aW9uKHRoaXMuc2VydmljZS5yZWxhdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUN1c3RvbWVyR3JvdXBDaGFuZ2UoZ3JvdXA6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbWVyR3JvdXAgPSBncm91cDtcbiAgICAgICAgaWYgKHRoaXMuX3JlbGF0aW9uIGluc3RhbmNlb2YgQ3VzdG9tZXJGdWxsT2JqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLl9yZWxhdGlvbi5jdXN0b21lckdyb3VwID0gdGhpcy5jdXN0b21lckdyb3VwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVJlbGF0aW9uKHJlbDogUmVsYXRpb25BbnlUeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVsYXRpb24gPSByZWw7XG4gICAgICAgIGNvbnN0IGZpcnN0QWN0aXZlQWRkcmVzczogQWRkcmVzcyA9IHRoaXMuX3JlbGF0aW9uLmFjdGl2ZUFkZHJlc3Nlcy5sZW5ndGggPiAwID8gdGhpcy5fcmVsYXRpb24uYWN0aXZlQWRkcmVzc2VzWzBdIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFkZHJlc3MgPSBmaXJzdEFjdGl2ZUFkZHJlc3M7XG4gICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIgPSBmaXJzdEFjdGl2ZUFkZHJlc3MgPyBmaXJzdEFjdGl2ZUFkZHJlc3MubmF3TnIgOiAwO1xuICAgICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc0NoYW5nZS5lbWl0KHRoaXMuZGVsaXZlcnlBZGRyZXNzTmF3TnIpO1xuICAgICAgICB0aGlzLmludm9pY2VBZGRyZXNzTmF3TnIgPSBmaXJzdEFjdGl2ZUFkZHJlc3MgPyBmaXJzdEFjdGl2ZUFkZHJlc3MubmF3TnIgOiAwO1xuICAgICAgICB0aGlzLmludm9pY2VBZGRyZXNzQ2hhbmdlLmVtaXQodGhpcy5pbnZvaWNlQWRkcmVzc05hd05yKTtcbiAgICAgICAgdGhpcy5yZWxhdGlvbkNoYW5nZS5lbWl0KHRoaXMucmVsYXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtTWFzdGVyLnN1Ym1pdFNsYXZlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVEZWxpdmVyeUFkZHJlc3NDaGFuZ2UobmF3TnI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc0NoYW5nZS5lbWl0KG5hd05yKTtcbiAgICAgICAgaWYgKHRoaXMuc2VydmljZS5pbnZvaWNlQWRkcmVzc1NhbWVBc0RlbGl2ZXJ5KSB7XG4gICAgICAgICAgICB0aGlzLmludm9pY2VBZGRyZXNzQ2hhbmdlLmVtaXQobmF3TnIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrU2FtZUFkZHJlc3MoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmludm9pY2VBZGRyZXNzTmF3TnIgPSB0aGlzLmRlbGl2ZXJ5QWRkcmVzc05hd05yO1xuICAgICAgICB0aGlzLmludm9pY2VBZGRyZXNzQ2hhbmdlLm5leHQodGhpcy5pbnZvaWNlQWRkcmVzc05hd05yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRDb3VudHJ5TmFtZVRvQWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChhZGRyZXNzLmNvdW50cnlJZCAmJiAhYWRkcmVzcy5jb3VudHJ5TmFtZSkge1xuICAgICAgICAgICAgY29uc3QgY291bnRyeTogQ291bnRyeSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRDb3VudHJ5KGFkZHJlc3MuY291bnRyeUlkKTtcbiAgICAgICAgICAgIGFkZHJlc3MuY291bnRyeU5hbWUgPSBjb3VudHJ5LmRlc2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZmV0Y2hlcyByZWxhdGlvbiBzdWdnZXN0aW9uc1xuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25MaXN0UmVmcmVzaCgpOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3N1Z2dlc3Rpb25MaXN0VGltZW91dCk7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25MaXN0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbkxpc3RSZWZyZXNoSGFuZGxlckZuKCk7XG4gICAgICAgIH0sIDYwMCk7XG4gICAgfVxuXG4gICAgLy8gbG9hZCBzdWdnZXN0aW9uc1xuICAgIHByaXZhdGUgYXN5bmMgX3N1Z2dlc3Rpb25MaXN0UmVmcmVzaEhhbmRsZXJGbigpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCByZWxhdGlvblJlcXVlc3Q6IFJlbGF0aW9uUmVxdWVzdCA9IG5ldyBSZWxhdGlvblJlcXVlc3QoKTtcbiAgICAgICAgcmVsYXRpb25SZXF1ZXN0LnJlbGF0aW9uVHlwZSA9IHRoaXMuc2VydmljZS5nZXRSZWxhdGlvbktpbmRGcm9tVHJhbnNhY3Rpb25LaW5kKCk7XG4gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuZ2VuZXJhbCkge1xuICAgICAgICAgICAgcmVsYXRpb25SZXF1ZXN0LmdlbmVyYWwgPSB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuZ2VuZXJhbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmZpcnN0TmFtZSkge1xuICAgICAgICAgICAgcmVsYXRpb25SZXF1ZXN0LmZpcnN0TmFtZSA9IHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5maXJzdE5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5mYW1pbHlOYW1lKSB7XG4gICAgICAgICAgICByZWxhdGlvblJlcXVlc3QuZmFtaWx5TmFtZSA9IHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5mYW1pbHlOYW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMucG9zdGFsQ29kZSkge1xuICAgICAgICAgICAgcmVsYXRpb25SZXF1ZXN0LnBvc3RhbENvZGUgPSB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMucG9zdGFsQ29kZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmhvdXNlTnIpIHtcbiAgICAgICAgICAgIHJlbGF0aW9uUmVxdWVzdC5ob3VzZU5yID0gdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmhvdXNlTnIudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLnN0cmVldCkge1xuICAgICAgICAgICAgcmVsYXRpb25SZXF1ZXN0LnN0cmVldCA9IHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5zdHJlZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5jaXR5KSB7XG4gICAgICAgICAgICByZWxhdGlvblJlcXVlc3QuY2l0eSA9IHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5jaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVsYXRpb25TZXJ2aWNlLmdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVsYXRpb25SZXF1ZXN0KS50aGVuKChyZWxhdGlvbnM6IFJlbGF0aW9uTGlzdE9iamVjdFtdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbGF0aW9uU3VnZ2VzdGlvbnMgPSByZWxhdGlvbnM7XG4gICAgICAgICAgICBpZiAocmVsYXRpb25zICYmIHJlbGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93U2lkZWJhcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVTaWRlYmFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzRW1wdHlTdWdnZXN0aW9uc1JlcXVlc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Rm9yU3VnZ2VzdGlvbnNba2V5XSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9uc1trZXldICE9PSBudWxsICYmIHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9uc1trZXldICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc2V0U3VnZ2VzdGlvblJlcXVlc3RXaXRoUmVsYXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucyA9IHt9O1xuICAgICAgICBpZiAodGhpcy5yZWxhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmZpcnN0TmFtZSA9IHRoaXMucmVsYXRpb24uZmlyc3ROYW1lO1xuICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmZhbWlseU5hbWUgPSB0aGlzLnJlbGF0aW9uLmZhbWlseU5hbWU7XG4gICAgICAgICAgICBjb25zdCBhZGRyZXNzID0gdGhpcy5yZWxhdGlvbi5hZGRyZXNzZXNbMF07XG4gICAgICAgICAgICBpZiAoYWRkcmVzcykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RGb3JTdWdnZXN0aW9ucy5zdHJlZXQgPSBhZGRyZXNzLnN0cmVldE5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLnBvc3RhbENvZGUgPSBhZGRyZXNzLnBvc3RhbENvZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmNpdHkgPSBhZGRyZXNzLmNpdHk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZvclN1Z2dlc3Rpb25zLmhvdXNlTnIgPSBhZGRyZXNzLmhvdXNlTm87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -74,6 +74,7 @@ export class TransactionBaseComponent {
|
|
|
74
74
|
this.lineQuantityPurchaseConfirmed = 0;
|
|
75
75
|
this.lineQuantityTransportNotification = 0;
|
|
76
76
|
this.lineQuantityInvoiceControl = 0;
|
|
77
|
+
this.decimals = 0;
|
|
77
78
|
this.headerTooltipMessages = [];
|
|
78
79
|
this.lineTooltipMessages = [];
|
|
79
80
|
this._relation = NULL_CUSTOMER_FULL_OBJECT;
|
|
@@ -130,6 +131,9 @@ export class TransactionBaseComponent {
|
|
|
130
131
|
set transactionLine(value) {
|
|
131
132
|
if (value) {
|
|
132
133
|
this._transactionLine = value;
|
|
134
|
+
if (this._transactionLine.salesUnitDecimals) {
|
|
135
|
+
this.decimals = this._transactionLine.salesUnitDecimals;
|
|
136
|
+
}
|
|
133
137
|
// this._transactionLine.selected = this._selected;
|
|
134
138
|
this.isText = this._transactionLine.isText;
|
|
135
139
|
this.isArticle = this._transactionLine.isArticle;
|
|
@@ -373,4 +377,4 @@ TransactionBaseComponent.propDecorators = {
|
|
|
373
377
|
isArticle: [{ type: HostBinding, args: ['class.is-article',] }],
|
|
374
378
|
showLoader: [{ type: HostBinding, args: ["class.show-loader",] }]
|
|
375
379
|
};
|
|
376
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDekYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBRzNGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUVuRixPQUFPLEVBQUMsWUFBWSxF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QU85QixXQUFXLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25LaW5kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW0nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uVG90YWx9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi10b3RhbC5ibyc7XHJcbmltcG9ydCB7TGluZU9wZXJhdGlvblN0YXR1c30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXN0YXR1cy5ibyc7XHJcbmltcG9ydCB7UmVsYXRpb25BbnlUeXBlfSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tYW55LXR5cGUnO1xyXG5pbXBvcnQge05VTExfQ1VTVE9NRVJfRlVMTF9PQkpFQ1R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9udWwtcmVsYXRpb24tb2JqZWN0JztcclxuaW1wb3J0IHtSZWxhdGlvbk5hbWVLaW5kfSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvZW51bS9yZWxhdGlvbi1uYW1lLWtpbmQuZW51bSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnl9IGZyb20gJy4uLy4uLy4uL2VudW0vdHJhbnNhY3Rpb24tdHlwZS1jYXRlZ29yeS5lbnVtJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25JbWFnZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24taW1hZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtSZWxhdGlvbktpbmR9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLWtpbmQuZW51bSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25EZWxpdmVyeUNvc3RMaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWRlbGl2ZXJ5LWNvc3QtbGluZS1pbmZvLmJvJztcclxuaW1wb3J0IHtPcmRlckxpbmVTZXRJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZS1zZXQtaW5mby5ibyc7XHJcbmltcG9ydCB7U2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25DZmdOYW1lfSBmcm9tICcuLi8uLi8uLi9lbnVtL3RyYW5zYWN0aW9uLWNmZy1uYW1lLmVudW0nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2NyZWVuLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50IHtcclxuICAgIHB1YmxpYyByZWFkb25seSBjZmdOYW1lczogdHlwZW9mIFRyYW5zYWN0aW9uQ2ZnTmFtZSA9IFRyYW5zYWN0aW9uQ2ZnTmFtZTtcclxuICAgIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IHJlbEtpbmQ6IHR5cGVvZiBSZWxhdGlvbktpbmQgPSBSZWxhdGlvbktpbmQ7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNLaW5kOiB0eXBlb2YgVHJhbnNhY3Rpb25LaW5kID0gVHJhbnNhY3Rpb25LaW5kO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGNhdGVnb3J5OiB0eXBlb2YgVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkgPSBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBjZmdOYW1lKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9jZmdOYW1lID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5jb25maWdTZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGNmZ05hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2ZnTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB0cmFuc2FjdGlvbih2YWx1ZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpIHtcclxuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uSW5mbyA9IHRoaXMuX3RyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mbztcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25LaW5kID0gdGhpcy50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc1NlcnZpY2UgPSB0aGlzLl90cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kID09PSBUcmFuc2FjdGlvbktpbmQuU2VydmljZU9yZGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZXMgPSB0aGlzLl90cmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi5kZWxpdmVyeUNvc3RMaW5lcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kZWxpdmVyeUNvc3RMaW5lcyA9IHRoaXMuX3RyYW5zYWN0aW9uLmRlbGl2ZXJ5Q29zdExpbmVzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi50cmFuc2FjdGlvblRvdGFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uVG90YWwgPSB0aGlzLl90cmFuc2FjdGlvbi50cmFuc2FjdGlvblRvdGFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi5saW5lT3BlcmF0aW9uU3RhdHVzZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGluZU9wZXJhdGlvblN0YXR1c2VzID0gdGhpcy5fdHJhbnNhY3Rpb24ubGluZU9wZXJhdGlvblN0YXR1c2VzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8gJiYgdGhpcy5fdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmhhc011bHRpcGxlTGluZXMgPSB0aGlzLnRyYW5zYWN0aW9uTGluZXMubGVuZ3RoICsgdGhpcy5kZWxpdmVyeUNvc3RMaW5lcy5sZW5ndGggPiAxO1xyXG4gICAgICAgICAgICB0aGlzLmNhbkFsbExpbmVzQmVEZWxpdmVyZWQgPSB0aGlzLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKGwgPT4gbC5hcnRpY2xlTGluZVN0YXR1cyA/IChsLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9EZWxpdmVyID09PSAwKSA6IGZhbHNlKS5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuQWxsTGluZXNCZUludm9pY2VkID0gdGhpcy50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcihsID0+IGwuYXJ0aWNsZUxpbmVTdGF0dXMgPyAobC5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvSW52b2ljZSA9PT0gMCkgOiBmYWxzZSkubGVuZ3RoID09PSAwO1xyXG4gICAgICAgICAgICB0aGlzLmhhc0xpbmVzVG9EZWxpdmVyID0gdGhpcy50cmFuc2FjdGlvbkluZm8uYWxsb3dQYXJ0aWFsRGVsaXZlcnkgP1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcihsID0+IGwuYXJ0aWNsZUxpbmVTdGF0dXMgPyBsLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9EZWxpdmVyICE9PSAwIDogZmFsc2UpLmxlbmd0aCA+IDAgOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcihsID0+IGwuYXJ0aWNsZUxpbmVTdGF0dXMgPyBsLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9EZWxpdmVyID09PSAwIDogZmFsc2UpLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICAgICAgdGhpcy5oYXNMaW5lc1RvSW52b2ljZSA9IHRoaXMudHJhbnNhY3Rpb25JbmZvLmFsbG93UGFydGlhbERlbGl2ZXJ5ID9cclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lcy5maWx0ZXIobCA9PiBsLmFydGljbGVMaW5lU3RhdHVzID8gbC5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvSW52b2ljZSAhPT0gMCA6IGZhbHNlKS5sZW5ndGggPiAwIDpcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lcy5maWx0ZXIobCA9PiBsLmFydGljbGVMaW5lU3RhdHVzID8gbC5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvSW52b2ljZSA9PT0gMCA6IGZhbHNlKS5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB0cmFuc2FjdGlvbkxpbmUodmFsdWU6IFRyYW5zYWN0aW9uTGluZUluZm8pIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25MaW5lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgICAgICAgICB0aGlzLmlzVGV4dCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5pc1RleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuaXNBcnRpY2xlID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmlzQXJ0aWNsZTtcclxuICAgICAgICAgICAgdGhpcy5saW5lSGFzTG9naXN0aWNhbFN0YXRlID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmXHJcbiAgICAgICAgICAgICAgICAoKHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlEZWxpdmVyZWQnKSAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlEZWxpdmVyZWQgIT09IDApIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlJbnZvaWNlZCcpICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eUludm9pY2VkICE9PSAwKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5UGlja2VkJykgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5UGlja2VkICE9PSAwKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5VG9CZVBpY2tlZCcpICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvQmVQaWNrZWQgIT09IDApIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlBbGxvY2F0ZWQnKSAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlBbGxvY2F0ZWQgPCAwKSk7XHJcbiAgICAgICAgICAgIHRoaXMubGluZUlzT3JkZXJlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ2lzRnVsbHlPcmRlcmVkJykgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmlzRnVsbHlPcmRlcmVkO1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVJc0RlbGl2ZXJlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ2lzRnVsbHlEZWxpdmVyZWQnKSAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaXNGdWxseURlbGl2ZXJlZDtcclxuICAgICAgICAgICAgdGhpcy5saW5lSXNJbnZvaWNlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ2lzRnVsbHlJbnZvaWNlZCcpICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5pc0Z1bGx5SW52b2ljZWQ7XHJcbiAgICAgICAgICAgIHRoaXMubGluZUlzUmVjZWl2ZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdpc0Z1bGx5UmVjZWl2ZWQnKSAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaXNGdWxseVJlY2VpdmVkO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlUb0ludm9pY2UgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eVRvSW52b2ljZScpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9JbnZvaWNlIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlJbnZvaWNlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5SW52b2ljZWQnKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eUludm9pY2VkIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlUb1JlY2VpdmUgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eVRvUmVjZWl2ZScpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9SZWNlaXZlIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlSZWNlaXZlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5UmVjZWl2ZWQnKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVJlY2VpdmVkIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlUb0RlbGl2ZXIgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eVRvRGVsaXZlcicpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9EZWxpdmVyIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlEZWxpdmVyZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eURlbGl2ZXJlZCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5RGVsaXZlcmVkIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlUb0FsbG9jYXRlID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlUb0FsbG9jYXRlJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUb0FsbG9jYXRlIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlBbGxvY2F0ZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eUFsbG9jYXRlZCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5QWxsb2NhdGVkIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlPcmRlcmVkID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlPcmRlcmVkJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlPcmRlcmVkIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlQbGFubmluZ1JlcXVlc3RlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5UGxhbm5pbmdSZXF1ZXN0ZWQnKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVBsYW5uaW5nUmVxdWVzdGVkIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlQbGFubmluZ1ByZWZlcnJlZERhdGVFbnRlcmVkID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlQbGFubmluZ1ByZWZlcnJlZERhdGVFbnRlcmVkJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlQbGFubmluZ1ByZWZlcnJlZERhdGVFbnRlcmVkIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlUb0JlUGlja2VkID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlUb0JlUGlja2VkJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUb0JlUGlja2VkIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlQaWNrZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eVBpY2tlZCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5UGlja2VkIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlQbGFubmluZ0ZpbmFsID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlQbGFubmluZ0ZpbmFsJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlQbGFubmluZ0ZpbmFsIDogMDtcclxuICAgICAgICAgICAgdGhpcy5saW5lUXVhbnRpdHlSZWNlaXZlZFVucHJvY2Vzc2VkID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlSZWNlaXZlZFVucHJvY2Vzc2VkJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlSZWNlaXZlZFVucHJvY2Vzc2VkIDogMDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5UHVyY2hhc2VDb25maXJtZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eVB1cmNoYXNlQ29uZmlybWVkJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlQdXJjaGFzZUNvbmZpcm1lZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5VHJhbnNwb3J0Tm90aWZpY2F0aW9uID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlUcmFuc3BvcnROb3RpZmljYXRpb24nKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRyYW5zcG9ydE5vdGlmaWNhdGlvbiA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5SW52b2ljZUNvbnRyb2wgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eUludm9pY2VDb250cm9sJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlJbnZvaWNlQ29udHJvbCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lU2V0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdHJhbnNhY3Rpb25MaW5lKCk6IFRyYW5zYWN0aW9uTGluZUluZm8ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkxpbmU7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgdHJhbnNhY3Rpb25JbmZvKHZhbHVlOiBUcmFuc2FjdGlvbkluZm8pIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWFkZXJSZWFkb25seSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25JbmZvID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25LaW5kID0gdGhpcy5fdHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uS2luZDtcclxuICAgICAgICAgICAgdGhpcy5mdWxseUludm9pY2VkID1cclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSW5mbyAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmhhc093blByb3BlcnR5KCdpc0Z1bGx5SW52b2ljZWQnKSAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMuaXNGdWxseUludm9pY2VkO1xyXG4gICAgICAgICAgICB0aGlzLmZ1bGx5RGVsaXZlcmVkID1cclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSW5mbyAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmhhc093blByb3BlcnR5KCdpc0Z1bGx5RGVsaXZlcmVkJykgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlEZWxpdmVyZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrSGVhZGVyUmVhZG9ubHkoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0cykge1xyXG4gICAgICAgICAgICAgIHRoaXMub3JkZXJMaW5lU2V0cyA9IHRoaXMuX3RyYW5zYWN0aW9uSW5mby5vcmRlckxpbmVTZXRzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkluZm9TZXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB0cmFuc2FjdGlvbkluZm8oKTogVHJhbnNhY3Rpb25JbmZvIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25JbmZvO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IG9yZGVyTGluZVNldHModmFsdWU6IE9yZGVyTGluZVNldEluZm9bXSkge1xyXG4gICAgICB0aGlzLl9vcmRlckxpbmVTZXRzID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBvcmRlckxpbmVTZXRzKCk6IE9yZGVyTGluZVNldEluZm9bXSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9vcmRlckxpbmVTZXRzO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHRyYW5zYWN0aW9uVG90YWwodmFsdWU6IFRyYW5zYWN0aW9uVG90YWwpIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25Ub3RhbCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uVG90YWxTZXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB0cmFuc2FjdGlvblRvdGFsKCk6IFRyYW5zYWN0aW9uVG90YWwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvblRvdGFsO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHJlbGF0aW9uKHZhbHVlOiBSZWxhdGlvbkFueVR5cGUpIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVsYXRpb24gPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZWxhdGlvbktpbmQgPSB0aGlzLl9yZWxhdGlvbi5yZWxhdGlvblR5cGU7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25UeXBlID0gdGhpcy5fcmVsYXRpb24udHlwZTtcclxuICAgICAgICAgICAgdGhpcy5yZWxhdGlvblNldCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHJlbGF0aW9uKCk6IFJlbGF0aW9uQW55VHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbG9ja0FuZFNhdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZXhwYW5kZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucHJldmlldycpXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHByZXZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXNlbGVjdGVkJylcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy50cmFuc2FjdGlvbkxpbmUpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkxpbmUuc2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZWFkLW9ubHknKVxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXRyYW5zYWN0aW9uLWhpZGRlblwiKVxyXG4gICAgcHVibGljIGhpZGRlbjogYm9vbGVhbjtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWxhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4oKTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXRleHQnKVxyXG4gICAgcHVibGljIGlzVGV4dDogYm9vbGVhbjtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWFydGljbGUnKVxyXG4gICAgcHVibGljIGlzQXJ0aWNsZTogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCk6IFRyYW5zYWN0aW9uTGluZUluZm8gfCBUcmFuc2FjdGlvbkluZm8ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuaGFzT3duUHJvcGVydHkoJ2xpbmVOcicpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lIDogdGhpcy5fdHJhbnNhY3Rpb25JbmZvO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLnNob3ctbG9hZGVyXCIpXHJcbiAgICBwdWJsaWMgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBpc1NlcnZpY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBsaW5lT3BlcmF0aW9uU3RhdHVzZXM6IExpbmVPcGVyYXRpb25TdGF0dXNbXSA9IFtdO1xyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uTGluZXM6IFRyYW5zYWN0aW9uTGluZUluZm9bXSA9IFtdO1xyXG4gICAgcHVibGljIGRlbGl2ZXJ5Q29zdExpbmVzOiBUcmFuc2FjdGlvbkRlbGl2ZXJ5Q29zdExpbmVJbmZvW10gPSBbXTtcclxuICAgIHB1YmxpYyByZWxhdGlvbktpbmQ6IFJlbGF0aW9uS2luZCA9IFJlbGF0aW9uS2luZC5DdXN0b21lcjtcclxuICAgIHB1YmxpYyByZWxhdGlvblR5cGU6IFJlbGF0aW9uTmFtZUtpbmQgPSBSZWxhdGlvbk5hbWVLaW5kLlByaXZhdGU7XHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcjtcclxuICAgIHB1YmxpYyB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGVhZGVyUmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjb21taXR0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgdG9vbHRpcE1lc3NhZ2U6IHN0cmluZztcclxuICAgIHB1YmxpYyBmdWxseUludm9pY2VkOiBib29sZWFuO1xyXG4gICAgcHVibGljIGZ1bGx5RGVsaXZlcmVkOiBib29sZWFuO1xyXG4gICAgcHVibGljIGhhc011bHRpcGxlTGluZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjYW5BbGxMaW5lc0JlRGVsaXZlcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY2FuQWxsTGluZXNCZUludm9pY2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGFzTGluZXNUb0RlbGl2ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBoYXNMaW5lc1RvSW52b2ljZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBsaW5lSGFzTG9naXN0aWNhbFN0YXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgbGluZUlzT3JkZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGxpbmVJc0RlbGl2ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGxpbmVJc0ludm9pY2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgbGluZUlzUmVjZWl2ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlUb0ludm9pY2U6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5SW52b2ljZWQ6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5VG9SZWNlaXZlOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eVJlY2VpdmVkOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eVRvRGVsaXZlcjogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlEZWxpdmVyZWQ6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5VG9BbGxvY2F0ZTogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlBbGxvY2F0ZWQ6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5T3JkZXJlZDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlQbGFubmluZ1JlcXVlc3RlZDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlQbGFubmluZ1ByZWZlcnJlZERhdGVFbnRlcmVkOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eVRvQmVQaWNrZWQ6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5UGlja2VkOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eVBsYW5uaW5nRmluYWw6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5UmVjZWl2ZWRVbnByb2Nlc3NlZDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlQdXJjaGFzZUNvbmZpcm1lZDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlUcmFuc3BvcnROb3RpZmljYXRpb246IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5SW52b2ljZUNvbnRyb2w6IG51bWJlciA9IDA7XHJcblxyXG4gICAgcHVibGljIG9iamVjdENvbmZpZ05hbWU6IHN0cmluZztcclxuICAgIHB1YmxpYyByZXF1aXJlZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBmb3JjZVJlYWRvbmx5OiBib29sZWFuO1xyXG4gICAgcHVibGljIG1heExlbmd0aDogbnVtYmVyO1xyXG4gICAgcHVibGljIGRlY2ltYWxzOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgcmVkRXJyb3JCYWNrZ3JvdW5kOiBib29sZWFuO1xyXG5cclxuICAgIHByb3RlY3RlZCBoZWFkZXJUb29sdGlwTWVzc2FnZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBwcm90ZWN0ZWQgbGluZVRvb2x0aXBNZXNzYWdlczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIF9yZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlID0gTlVMTF9DVVNUT01FUl9GVUxMX09CSkVDVDtcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZTtcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyA9IG5ldyBUcmFuc2FjdGlvbkxpbmVJbmZvKCk7XHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkluZm86IFRyYW5zYWN0aW9uSW5mbyA9IG5ldyBUcmFuc2FjdGlvbkluZm8oKTtcclxuICAgIHByaXZhdGUgX29yZGVyTGluZVNldHM6IE9yZGVyTGluZVNldEluZm9bXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25Ub3RhbDogVHJhbnNhY3Rpb25Ub3RhbCA9IG5ldyBUcmFuc2FjdGlvblRvdGFsKCk7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZDogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgX2Jhc2VTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBfY2ZnTmFtZTogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyB0cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHNjcmVlbkNvbmZpZ1NlcnZpY2U6IFRyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIGltYWdlU2VydmljZTogVHJhbnNhY3Rpb25JbWFnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIGRpY3Rpb25hcnlTZXJ2aWNlOiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2Jhc2VTdWJzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UudHJhbnNhY3Rpb25MaW5lVmlzaWJpbGl0eUNoYW5nZS5zdWJzY3JpYmUoKGRhdGE6IHsgbGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbywgdmlzaWJsZTogYm9vbGVhbiB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSAmJiB0aGlzLnRyYW5zYWN0aW9uTGluZSAmJiBkYXRhLmxpbmUubGluZU5yID09PSB0aGlzLnRyYW5zYWN0aW9uTGluZS5saW5lTnIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXQoZGF0YS52aXNpYmxlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMuc2NyZWVuQ29uZmlnU2VydmljZS5jb25maWdTZXQuc3Vic2NyaWJlKChjb25maWdPYmplY3RzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZ09iamVjdHMgJiYgY29uZmlnT2JqZWN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2Jhc2VTdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVDb21taXQodmFsdWU6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGlmIChhd2FpdCB0aGlzLmxvY2tUcmFuc2FjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbWl0dGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlOiBib29sZWFuID0gYXdhaXQgdGhpcy5jb21taXQodmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZGVsZXRlVHJhbnNhY3Rpb25MaW5lQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGlmIChhd2FpdCB0aGlzLmxvY2tUcmFuc2FjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmRlbGV0ZVRyYW5zYWN0aW9uTGluZSh0aGlzLnRyYW5zYWN0aW9uSW5mby51dWlkLCB0aGlzLnRyYW5zYWN0aW9uTGluZS51dWlkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbywgdmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UudHJhbnNhY3Rpb25MaW5lVmlzaWJpbGl0eUNoYW5nZS5uZXh0KHtsaW5lLCB2aXNpYmxlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbW1pdCh2YWx1ZTogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdmlzaWJpbGl0eVNldCh2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY29uZmlnU2V0KCk6IHZvaWQge1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0cmFuc2FjdGlvblNldCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBvdmVycmlkZGVuIGJ5IGRlc2NlbmRlbnRzXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlbGF0aW9uU2V0KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIG92ZXJyaWRkZW4gYnkgZGVzY2VuZGVudHNcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25MaW5lU2V0KCk6IHZvaWQge1xyXG4gICAgfVxyXG5cclxuICAgIC8vIG92ZXJyaWRkZW4gYnkgZGVzY2VuZGVudHNcclxuICAgIHByb3RlY3RlZCB0cmFuc2FjdGlvbkluZm9TZXQoKTogdm9pZCB7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9yZGVyTGluZVNldHNTZXQoKTogdm9pZCB7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFkZExpbmVUb29sdGlwTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5saW5lVG9vbHRpcE1lc3NhZ2VzLmluZGV4T2YobWVzc2FnZSkgPCAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVRvb2x0aXBNZXNzYWdlcy5wdXNoKGA8aT4ke21lc3NhZ2V9PC9pPmApO1xyXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVUb29sdGlwTWVzc2FnZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWRkSGVhZGVyVG9vbHRpcE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGVhZGVyVG9vbHRpcE1lc3NhZ2VzLmluZGV4T2YobWVzc2FnZSkgPCAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyVG9vbHRpcE1lc3NhZ2VzLnB1c2goYDxpPiR7bWVzc2FnZX08L2k+YCk7XHJcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVRvb2x0aXBNZXNzYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwcmVwYXJlVG9vbHRpcE1lc3NhZ2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50b29sdGlwTWVzc2FnZSA9ICcnO1xyXG4gICAgICAgIGxldCB0b29sdGlwczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5oZWFkZXJUb29sdGlwTWVzc2FnZXMubGVuZ3RoID4gMCB8fCB0aGlzLmxpbmVUb29sdGlwTWVzc2FnZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0b29sdGlwcyA9IHRoaXMuaGVhZGVyVG9vbHRpcE1lc3NhZ2VzLmNvbmNhdCh0aGlzLmxpbmVUb29sdGlwTWVzc2FnZXMpO1xyXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gYCR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXQoJ0ZJRUxEX0lTX1JFQURPTkxZX0JFQ0FVU0UnKX08L2JyPjwvYnI+JHt0b29sdGlwcy5qb2luKCc8L2JyPicpfWA7XHJcbiAgICAgICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBvdmVycmlkZGVuIGJ5IGRlc2NlbmRlbnRzXHJcbiAgICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb25Ub3RhbFNldCgpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIGxvY2tUcmFuc2FjdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBpZiAodGhpcy5sb2NrQW5kU2F2ZSAmJiB0aGlzLnRyYW5zYWN0aW9uSW5mby5pZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblNlcnZpY2UudHJ5VG9Mb2NrVHJhbnNhY3Rpb24odGhpcy50cmFuc2FjdGlvbkluZm8uaWQsIHRoaXMudHJhbnNhY3Rpb25JbmZvLnZlcnNpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgcm9sbGJhY2soKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgLy8gdG9kbzogc2hvdWxkIGJlIGFuIHVubG9jayBmdW5jdGlvbiBpbiB0aGUgYmFja2VuZCwgYnV0IHRoYXQgZG9lc24ndCBleGlzdCB5ZXRcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblNlcnZpY2Uucm9sbGJhY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgX2NoZWNrSGVhZGVyUmVhZG9ubHkoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJUb29sdGlwTWVzc2FnZXMubGVuZ3RoID0gMDtcclxuICAgICAgICB0aGlzLmhlYWRlclJlYWRvbmx5ID0gdGhpcy5oZWFkZXJSZWFkb25seSB8fCB0aGlzLmZ1bGx5SW52b2ljZWQgfHwgdGhpcy5mdWxseURlbGl2ZXJlZDtcclxuICAgICAgICBpZiAodGhpcy5mdWxseUludm9pY2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkSGVhZGVyVG9vbHRpcE1lc3NhZ2UodGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXQoJ0NPTVBMRVRFTFlfSU5WT0lDRUQnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmZ1bGx5RGVsaXZlcmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkSGVhZGVyVG9vbHRpcE1lc3NhZ2UodGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXQoJ0NPTVBMRVRFTFlfREVMSVZFUkVEJykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
|
|
380
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDekYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBRzNGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUVuRixPQUFPLEVBQUMsWUFBWSxF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QUMsbUJBQW1CLGNBQy9CLEtBQUs7dUJBWUwsV0FBVyxTQUFDLGlCQUFpQixjQUM3QixLQUFLO3FCQUdMLFdBQVcsU0FBQyw2QkFBNkI7NkJBR3pDLE1BQU07cUJBR04sV0FBVyxTQUFDLGVBQWU7d0JBRzNCLFdBQVcsU0FBQyxrQkFBa0I7eUJBTzlCLFdBQVcsU0FBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25Ub3RhbH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLXRvdGFsLmJvJztcclxuaW1wb3J0IHtMaW5lT3BlcmF0aW9uU3RhdHVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGluZS1vcGVyYXRpb24tc3RhdHVzLmJvJztcclxuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZSc7XHJcbmltcG9ydCB7TlVMTF9DVVNUT01FUl9GVUxMX09CSkVDVH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL251bC1yZWxhdGlvbi1vYmplY3QnO1xyXG5pbXBvcnQge1JlbGF0aW9uTmFtZUtpbmR9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9lbnVtL3JlbGF0aW9uLW5hbWUta2luZC5lbnVtJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblR5cGVDYXRlZ29yeX0gZnJvbSAnLi4vLi4vLi4vZW51bS90cmFuc2FjdGlvbi10eXBlLWNhdGVnb3J5LmVudW0nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkltYWdlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1pbWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkRlbGl2ZXJ5Q29zdExpbmVJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tZGVsaXZlcnktY29zdC1saW5lLWluZm8uYm8nO1xyXG5pbXBvcnQge09yZGVyTGluZVNldEluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lLXNldC1pbmZvLmJvJztcclxuaW1wb3J0IHtTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50fSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkNmZ05hbWV9IGZyb20gJy4uLy4uLy4uL2VudW0vdHJhbnNhY3Rpb24tY2ZnLW5hbWUuZW51bSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1zY3JlZW4tY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIFNjcmVlbkNvbmZpZ0FkYXB0ZXJDb21wb25lbnQge1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGNmZ05hbWVzOiB0eXBlb2YgVHJhbnNhY3Rpb25DZmdOYW1lID0gVHJhbnNhY3Rpb25DZmdOYW1lO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVsS2luZDogdHlwZW9mIFJlbGF0aW9uS2luZCA9IFJlbGF0aW9uS2luZDtcclxuICAgIHB1YmxpYyByZWFkb25seSB0cmFuc0tpbmQ6IHR5cGVvZiBUcmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQ7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2F0ZWdvcnk6IHR5cGVvZiBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeSA9IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGNmZ05hbWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2NmZ05hbWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNvbmZpZ1NldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY2ZnTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jZmdOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHRyYW5zYWN0aW9uKHZhbHVlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkge1xyXG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25JbmZvID0gdGhpcy5fdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbktpbmQgPSB0aGlzLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2VydmljZSA9IHRoaXMuX3RyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgPT09IFRyYW5zYWN0aW9uS2luZC5TZXJ2aWNlT3JkZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lcyA9IHRoaXMuX3RyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uLmRlbGl2ZXJ5Q29zdExpbmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGl2ZXJ5Q29zdExpbmVzID0gdGhpcy5fdHJhbnNhY3Rpb24uZGVsaXZlcnlDb3N0TGluZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVG90YWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25Ub3RhbCA9IHRoaXMuX3RyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVG90YWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uLmxpbmVPcGVyYXRpb25TdGF0dXNlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saW5lT3BlcmF0aW9uU3RhdHVzZXMgPSB0aGlzLl90cmFuc2FjdGlvbi5saW5lT3BlcmF0aW9uU3RhdHVzZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mbyAmJiB0aGlzLl90cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvblNldCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaGFzTXVsdGlwbGVMaW5lcyA9IHRoaXMudHJhbnNhY3Rpb25MaW5lcy5sZW5ndGggKyB0aGlzLmRlbGl2ZXJ5Q29zdExpbmVzLmxlbmd0aCA+IDE7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuQWxsTGluZXNCZURlbGl2ZXJlZCA9IHRoaXMudHJhbnNhY3Rpb25MaW5lcy5maWx0ZXIobCA9PiBsLmFydGljbGVMaW5lU3RhdHVzID8gKGwuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUb0RlbGl2ZXIgPT09IDApIDogZmFsc2UpLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICAgICAgdGhpcy5jYW5BbGxMaW5lc0JlSW52b2ljZWQgPSB0aGlzLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKGwgPT4gbC5hcnRpY2xlTGluZVN0YXR1cyA/IChsLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9JbnZvaWNlID09PSAwKSA6IGZhbHNlKS5sZW5ndGggPT09IDA7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzTGluZXNUb0RlbGl2ZXIgPSB0aGlzLnRyYW5zYWN0aW9uSW5mby5hbGxvd1BhcnRpYWxEZWxpdmVyeSA/XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKGwgPT4gbC5hcnRpY2xlTGluZVN0YXR1cyA/IGwuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUb0RlbGl2ZXIgIT09IDAgOiBmYWxzZSkubGVuZ3RoID4gMCA6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKGwgPT4gbC5hcnRpY2xlTGluZVN0YXR1cyA/IGwuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUb0RlbGl2ZXIgPT09IDAgOiBmYWxzZSkubGVuZ3RoID09PSAwO1xyXG4gICAgICAgICAgICB0aGlzLmhhc0xpbmVzVG9JbnZvaWNlID0gdGhpcy50cmFuc2FjdGlvbkluZm8uYWxsb3dQYXJ0aWFsRGVsaXZlcnkgP1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcihsID0+IGwuYXJ0aWNsZUxpbmVTdGF0dXMgPyBsLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9JbnZvaWNlICE9PSAwIDogZmFsc2UpLmxlbmd0aCA+IDAgOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcihsID0+IGwuYXJ0aWNsZUxpbmVTdGF0dXMgPyBsLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9JbnZvaWNlID09PSAwIDogZmFsc2UpLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHRyYW5zYWN0aW9uTGluZSh2YWx1ZTogVHJhbnNhY3Rpb25MaW5lSW5mbykge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkxpbmUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uTGluZS5zYWxlc1VuaXREZWNpbWFscykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kZWNpbWFscyA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5zYWxlc1VuaXREZWNpbWFscztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuc2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZDtcclxuICAgICAgICAgICAgdGhpcy5pc1RleHQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuaXNUZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmlzQXJ0aWNsZSA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5pc0FydGljbGU7XHJcbiAgICAgICAgICAgIHRoaXMubGluZUhhc0xvZ2lzdGljYWxTdGF0ZSA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJlxyXG4gICAgICAgICAgICAgICAgKCh0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5RGVsaXZlcmVkJykgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5RGVsaXZlcmVkICE9PSAwKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5SW52b2ljZWQnKSAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlJbnZvaWNlZCAhPT0gMCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eVBpY2tlZCcpICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVBpY2tlZCAhPT0gMCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eVRvQmVQaWNrZWQnKSAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUb0JlUGlja2VkICE9PSAwKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5QWxsb2NhdGVkJykgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5QWxsb2NhdGVkIDwgMCkpO1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVJc09yZGVyZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdpc0Z1bGx5T3JkZXJlZCcpICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5pc0Z1bGx5T3JkZXJlZDtcclxuICAgICAgICAgICAgdGhpcy5saW5lSXNEZWxpdmVyZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdpc0Z1bGx5RGVsaXZlcmVkJykgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmlzRnVsbHlEZWxpdmVyZWQ7XHJcbiAgICAgICAgICAgIHRoaXMubGluZUlzSW52b2ljZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdpc0Z1bGx5SW52b2ljZWQnKSAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaXNGdWxseUludm9pY2VkO1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVJc1JlY2VpdmVkID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgnaXNGdWxseVJlY2VpdmVkJykgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmlzRnVsbHlSZWNlaXZlZDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5VG9JbnZvaWNlID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlUb0ludm9pY2UnKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvSW52b2ljZSA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5SW52b2ljZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eUludm9pY2VkJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlJbnZvaWNlZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5VG9SZWNlaXZlID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlUb1JlY2VpdmUnKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvUmVjZWl2ZSA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5UmVjZWl2ZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eVJlY2VpdmVkJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlSZWNlaXZlZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5VG9EZWxpdmVyID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlUb0RlbGl2ZXInKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvRGVsaXZlciA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5RGVsaXZlcmVkID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlEZWxpdmVyZWQnKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eURlbGl2ZXJlZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5VG9BbGxvY2F0ZSA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5VG9BbGxvY2F0ZScpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9BbGxvY2F0ZSA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5QWxsb2NhdGVkID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlBbGxvY2F0ZWQnKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eUFsbG9jYXRlZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5T3JkZXJlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5T3JkZXJlZCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5T3JkZXJlZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5UGxhbm5pbmdSZXF1ZXN0ZWQgPSB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMgJiYgdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLmhhc093blByb3BlcnR5KCdxdWFudGl0eVBsYW5uaW5nUmVxdWVzdGVkJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlQbGFubmluZ1JlcXVlc3RlZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5UGxhbm5pbmdQcmVmZXJyZWREYXRlRW50ZXJlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5UGxhbm5pbmdQcmVmZXJyZWREYXRlRW50ZXJlZCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5UGxhbm5pbmdQcmVmZXJyZWREYXRlRW50ZXJlZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5VG9CZVBpY2tlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5VG9CZVBpY2tlZCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5VG9CZVBpY2tlZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5UGlja2VkID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlQaWNrZWQnKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVBpY2tlZCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5UGxhbm5pbmdGaW5hbCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5UGxhbm5pbmdGaW5hbCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5UGxhbm5pbmdGaW5hbCA6IDA7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVF1YW50aXR5UmVjZWl2ZWRVbnByb2Nlc3NlZCA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5UmVjZWl2ZWRVbnByb2Nlc3NlZCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5UmVjZWl2ZWRVbnByb2Nlc3NlZCA6IDA7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmxpbmVRdWFudGl0eVB1cmNoYXNlQ29uZmlybWVkID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlQdXJjaGFzZUNvbmZpcm1lZCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5UHVyY2hhc2VDb25maXJtZWQgOiAwO1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVRdWFudGl0eVRyYW5zcG9ydE5vdGlmaWNhdGlvbiA9IHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cyAmJiB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMuaGFzT3duUHJvcGVydHkoJ3F1YW50aXR5VHJhbnNwb3J0Tm90aWZpY2F0aW9uJykgPyB0aGlzLl90cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUcmFuc3BvcnROb3RpZmljYXRpb24gOiAwO1xyXG4gICAgICAgICAgICB0aGlzLmxpbmVRdWFudGl0eUludm9pY2VDb250cm9sID0gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzICYmIHRoaXMuX3RyYW5zYWN0aW9uTGluZS5hcnRpY2xlTGluZVN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgncXVhbnRpdHlJbnZvaWNlQ29udHJvbCcpID8gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmFydGljbGVMaW5lU3RhdHVzLnF1YW50aXR5SW52b2ljZUNvbnRyb2wgOiAwO1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZVNldCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHRyYW5zYWN0aW9uTGluZSgpOiBUcmFuc2FjdGlvbkxpbmVJbmZvIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25MaW5lO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHRyYW5zYWN0aW9uSW5mbyh2YWx1ZTogVHJhbnNhY3Rpb25JbmZvKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyUmVhZG9ubHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSW5mbyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uS2luZCA9IHRoaXMuX3RyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQ7XHJcbiAgICAgICAgICAgIHRoaXMuZnVsbHlJbnZvaWNlZCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkluZm8gJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cy5oYXNPd25Qcm9wZXJ0eSgnaXNGdWxseUludm9pY2VkJykgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlJbnZvaWNlZDtcclxuICAgICAgICAgICAgdGhpcy5mdWxseURlbGl2ZXJlZCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkluZm8gJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cy5oYXNPd25Qcm9wZXJ0eSgnaXNGdWxseURlbGl2ZXJlZCcpICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cy5pc0Z1bGx5RGVsaXZlcmVkO1xyXG4gICAgICAgICAgICB0aGlzLl9jaGVja0hlYWRlclJlYWRvbmx5KCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9yZGVyTGluZVNldHMgPSB0aGlzLl90cmFuc2FjdGlvbkluZm8ub3JkZXJMaW5lU2V0c1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25JbmZvU2V0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdHJhbnNhY3Rpb25JbmZvKCk6IFRyYW5zYWN0aW9uSW5mbyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uSW5mbztcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBvcmRlckxpbmVTZXRzKHZhbHVlOiBPcmRlckxpbmVTZXRJbmZvW10pIHtcclxuICAgICAgdGhpcy5fb3JkZXJMaW5lU2V0cyA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgb3JkZXJMaW5lU2V0cygpOiBPcmRlckxpbmVTZXRJbmZvW10ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fb3JkZXJMaW5lU2V0cztcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB0cmFuc2FjdGlvblRvdGFsKHZhbHVlOiBUcmFuc2FjdGlvblRvdGFsKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uVG90YWwgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvblRvdGFsU2V0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdHJhbnNhY3Rpb25Ub3RhbCgpOiBUcmFuc2FjdGlvblRvdGFsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25Ub3RhbDtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCByZWxhdGlvbih2YWx1ZTogUmVsYXRpb25BbnlUeXBlKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbGF0aW9uID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25LaW5kID0gdGhpcy5fcmVsYXRpb24ucmVsYXRpb25UeXBlO1xyXG4gICAgICAgICAgICB0aGlzLnJlbGF0aW9uVHlwZSA9IHRoaXMuX3JlbGF0aW9uLnR5cGU7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25TZXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCByZWxhdGlvbigpOiBSZWxhdGlvbkFueVR5cGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZWxhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxvY2tBbmRTYXZlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGV4cGFuZGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnByZXZpZXcnKVxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBwcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zZWxlY3RlZCcpXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBzZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMudHJhbnNhY3Rpb25MaW5lKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lLnNlbGVjdGVkID0gdGhpcy5fc2VsZWN0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucmVhZC1vbmx5JylcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby10cmFuc2FjdGlvbi1oaWRkZW5cIilcclxuICAgIHB1YmxpYyBoaWRkZW46IGJvb2xlYW47XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVsYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+KCk7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy10ZXh0JylcclxuICAgIHB1YmxpYyBpc1RleHQ6IGJvb2xlYW47XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1hcnRpY2xlJylcclxuICAgIHB1YmxpYyBpc0FydGljbGU6IGJvb2xlYW47XHJcblxyXG4gICAgcHVibGljIGdldCBtb2RlbCgpOiBUcmFuc2FjdGlvbkxpbmVJbmZvIHwgVHJhbnNhY3Rpb25JbmZvIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25MaW5lLmhhc093blByb3BlcnR5KCdsaW5lTnInKSA/IHRoaXMuX3RyYW5zYWN0aW9uTGluZSA6IHRoaXMuX3RyYW5zYWN0aW9uSW5mbztcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5zaG93LWxvYWRlclwiKVxyXG4gICAgcHVibGljIHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgaXNTZXJ2aWNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgbGluZU9wZXJhdGlvblN0YXR1c2VzOiBMaW5lT3BlcmF0aW9uU3RhdHVzW10gPSBbXTtcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkxpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10gPSBbXTtcclxuICAgIHB1YmxpYyBkZWxpdmVyeUNvc3RMaW5lczogVHJhbnNhY3Rpb25EZWxpdmVyeUNvc3RMaW5lSW5mb1tdID0gW107XHJcbiAgICBwdWJsaWMgcmVsYXRpb25LaW5kOiBSZWxhdGlvbktpbmQgPSBSZWxhdGlvbktpbmQuQ3VzdG9tZXI7XHJcbiAgICBwdWJsaWMgcmVsYXRpb25UeXBlOiBSZWxhdGlvbk5hbWVLaW5kID0gUmVsYXRpb25OYW1lS2luZC5Qcml2YXRlO1xyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uS2luZDogVHJhbnNhY3Rpb25LaW5kID0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXI7XHJcbiAgICBwdWJsaWMgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGhlYWRlclJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY29tbWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHRvb2x0aXBNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZnVsbHlJbnZvaWNlZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBmdWxseURlbGl2ZXJlZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBoYXNNdWx0aXBsZUxpbmVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY2FuQWxsTGluZXNCZURlbGl2ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNhbkFsbExpbmVzQmVJbnZvaWNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGhhc0xpbmVzVG9EZWxpdmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGFzTGluZXNUb0ludm9pY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgbGluZUhhc0xvZ2lzdGljYWxTdGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGxpbmVJc09yZGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBsaW5lSXNEZWxpdmVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBsaW5lSXNJbnZvaWNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGxpbmVJc1JlY2VpdmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5VG9JbnZvaWNlOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eUludm9pY2VkOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eVRvUmVjZWl2ZTogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlSZWNlaXZlZDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlUb0RlbGl2ZXI6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5RGVsaXZlcmVkOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eVRvQWxsb2NhdGU6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5QWxsb2NhdGVkOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eU9yZGVyZWQ6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5UGxhbm5pbmdSZXF1ZXN0ZWQ6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5UGxhbm5pbmdQcmVmZXJyZWREYXRlRW50ZXJlZDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlUb0JlUGlja2VkOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eVBpY2tlZDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBsaW5lUXVhbnRpdHlQbGFubmluZ0ZpbmFsOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eVJlY2VpdmVkVW5wcm9jZXNzZWQ6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5UHVyY2hhc2VDb25maXJtZWQ6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgbGluZVF1YW50aXR5VHJhbnNwb3J0Tm90aWZpY2F0aW9uOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIGxpbmVRdWFudGl0eUludm9pY2VDb250cm9sOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHB1YmxpYyBvYmplY3RDb25maWdOYW1lOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgZm9yY2VSZWFkb25seTogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBtYXhMZW5ndGg6IG51bWJlcjtcclxuICAgIHB1YmxpYyBkZWNpbWFsczogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyByZWRFcnJvckJhY2tncm91bmQ6IGJvb2xlYW47XHJcblxyXG4gICAgcHJvdGVjdGVkIGhlYWRlclRvb2x0aXBNZXNzYWdlczogc3RyaW5nW10gPSBbXTtcclxuICAgIHByb3RlY3RlZCBsaW5lVG9vbHRpcE1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgX3JlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUgPSBOVUxMX0NVU1RPTUVSX0ZVTExfT0JKRUNUO1xyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25MaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvID0gbmV3IFRyYW5zYWN0aW9uTGluZUluZm8oKTtcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uSW5mbzogVHJhbnNhY3Rpb25JbmZvID0gbmV3IFRyYW5zYWN0aW9uSW5mbygpO1xyXG4gICAgcHJpdmF0ZSBfb3JkZXJMaW5lU2V0czogT3JkZXJMaW5lU2V0SW5mb1tdID0gW107XHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvblRvdGFsOiBUcmFuc2FjdGlvblRvdGFsID0gbmV3IFRyYW5zYWN0aW9uVG90YWwoKTtcclxuICAgIHByaXZhdGUgX3NlbGVjdGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBfYmFzZVN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgICBwcml2YXRlIF9jZmdOYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIHRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgc2NyZWVuQ29uZmlnU2VydmljZTogVHJhbnNhY3Rpb25TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgaW1hZ2VTZXJ2aWNlOiBUcmFuc2FjdGlvbkltYWdlU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZGljdGlvbmFyeVNlcnZpY2U6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYmFzZVN1YnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS50cmFuc2FjdGlvbkxpbmVWaXNpYmlsaXR5Q2hhbmdlLnN1YnNjcmliZSgoZGF0YTogeyBsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvLCB2aXNpYmxlOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhICYmIHRoaXMudHJhbnNhY3Rpb25MaW5lICYmIGRhdGEubGluZS5saW5lTnIgPT09IHRoaXMudHJhbnNhY3Rpb25MaW5lLmxpbmVOcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNldChkYXRhLnZpc2libGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmNvbmZpZ1NldC5zdWJzY3JpYmUoKGNvbmZpZ09iamVjdHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnT2JqZWN0cyAmJiBjb25maWdPYmplY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NldCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYmFzZVN1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZUNvbW1pdCh2YWx1ZTogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgaWYgKGF3YWl0IHRoaXMubG9ja1RyYW5zYWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21taXR0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2U6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBkZWxldGVUcmFuc2FjdGlvbkxpbmVDbGljayhldmVudDogTW91c2VFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKGF3YWl0IHRoaXMubG9ja1RyYW5zYWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZGVsZXRlVHJhbnNhY3Rpb25MaW5lKHRoaXMudHJhbnNhY3Rpb25JbmZvLnV1aWQsIHRoaXMudHJhbnNhY3Rpb25MaW5lLnV1aWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZShsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvLCB2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS50cmFuc2FjdGlvbkxpbmVWaXNpYmlsaXR5Q2hhbmdlLm5leHQoe2xpbmUsIHZpc2libGV9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY29tbWl0KHZhbHVlOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB2aXNpYmlsaXR5U2V0KHZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZpc2libGUgPSB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjb25maWdTZXQoKTogdm9pZCB7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHRyYW5zYWN0aW9uU2V0KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIG92ZXJyaWRkZW4gYnkgZGVzY2VuZGVudHNcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVsYXRpb25TZXQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gb3ZlcnJpZGRlbiBieSBkZXNjZW5kZW50c1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0cmFuc2FjdGlvbkxpbmVTZXQoKTogdm9pZCB7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gb3ZlcnJpZGRlbiBieSBkZXNjZW5kZW50c1xyXG4gICAgcHJvdGVjdGVkIHRyYW5zYWN0aW9uSW5mb1NldCgpOiB2b2lkIHtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3JkZXJMaW5lU2V0c1NldCgpOiB2b2lkIHtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWRkTGluZVRvb2x0aXBNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmxpbmVUb29sdGlwTWVzc2FnZXMuaW5kZXhPZihtZXNzYWdlKSA8IDApIHtcclxuICAgICAgICAgICAgdGhpcy5saW5lVG9vbHRpcE1lc3NhZ2VzLnB1c2goYDxpPiR7bWVzc2FnZX08L2k+YCk7XHJcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVRvb2x0aXBNZXNzYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhZGRIZWFkZXJUb29sdGlwTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5oZWFkZXJUb29sdGlwTWVzc2FnZXMuaW5kZXhPZihtZXNzYWdlKSA8IDApIHtcclxuICAgICAgICAgICAgdGhpcy5oZWFkZXJUb29sdGlwTWVzc2FnZXMucHVzaChgPGk+JHttZXNzYWdlfTwvaT5gKTtcclxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlVG9vbHRpcE1lc3NhZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHByZXBhcmVUb29sdGlwTWVzc2FnZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gJyc7XHJcbiAgICAgICAgbGV0IHRvb2x0aXBzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmhlYWRlclRvb2x0aXBNZXNzYWdlcy5sZW5ndGggPiAwIHx8IHRoaXMubGluZVRvb2x0aXBNZXNzYWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRvb2x0aXBzID0gdGhpcy5oZWFkZXJUb29sdGlwTWVzc2FnZXMuY29uY2F0KHRoaXMubGluZVRvb2x0aXBNZXNzYWdlcyk7XHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE1lc3NhZ2UgPSBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldCgnRklFTERfSVNfUkVBRE9OTFlfQkVDQVVTRScpfTwvYnI+PC9icj4ke3Rvb2x0aXBzLmpvaW4oJzwvYnI+Jyl9YDtcclxuICAgICAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIG92ZXJyaWRkZW4gYnkgZGVzY2VuZGVudHNcclxuICAgIHByb3RlY3RlZCB0cmFuc2FjdGlvblRvdGFsU2V0KCk6IHZvaWQge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgbG9ja1RyYW5zYWN0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGlmICh0aGlzLmxvY2tBbmRTYXZlICYmIHRoaXMudHJhbnNhY3Rpb25JbmZvLmlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS50cnlUb0xvY2tUcmFuc2FjdGlvbih0aGlzLnRyYW5zYWN0aW9uSW5mby5pZCwgdGhpcy50cmFuc2FjdGlvbkluZm8udmVyc2lvbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyByb2xsYmFjaygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICAvLyB0b2RvOiBzaG91bGQgYmUgYW4gdW5sb2NrIGZ1bmN0aW9uIGluIHRoZSBiYWNrZW5kLCBidXQgdGhhdCBkb2Vzbid0IGV4aXN0IHlldFxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5yb2xsYmFjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBfY2hlY2tIZWFkZXJSZWFkb25seSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhlYWRlclRvb2x0aXBNZXNzYWdlcy5sZW5ndGggPSAwO1xyXG4gICAgICAgIHRoaXMuaGVhZGVyUmVhZG9ubHkgPSB0aGlzLmhlYWRlclJlYWRvbmx5IHx8IHRoaXMuZnVsbHlJbnZvaWNlZCB8fCB0aGlzLmZ1bGx5RGVsaXZlcmVkO1xyXG4gICAgICAgIGlmICh0aGlzLmZ1bGx5SW52b2ljZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJUb29sdGlwTWVzc2FnZSh0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldCgnQ09NUExFVEVMWV9JTlZPSUNFRCcpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZnVsbHlEZWxpdmVyZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJUb29sdGlwTWVzc2FnZSh0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldCgnQ09NUExFVEVMWV9ERUxJVkVSRUQnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
|