ng-easycommerce 0.1.1 → 1.1.3
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/README.md +14 -0
- package/assets/ec-i18n/ct.json +4 -0
- package/assets/ec-i18n/en.json +4 -0
- package/assets/ec-i18n/es.json +4 -0
- package/assets/ec-i18n/fr.json +4 -0
- package/assets/ec-i18n/gl.json +4 -0
- package/assets/ec-i18n/pr.json +4 -0
- package/bundles/ng-easycommerce.umd.js +5191 -3521
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/api/connection.service.js +2 -2
- package/esm2015/lib/core.consts.js +4 -5
- package/esm2015/lib/ec-component/account-ec/order-ec/order-ec.component.js +2 -2
- package/esm2015/lib/ec-component/cart-bootstrap-navigation.js +27 -0
- package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
- package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +28 -3
- package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +185 -13
- package/esm2015/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +6 -2
- package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +26 -9
- package/esm2015/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.js +11 -3
- package/esm2015/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +4 -2
- package/esm2015/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
- package/esm2015/lib/guards/able-buyer-guard.service.js +2 -2
- package/esm2015/lib/guards/auth-guard.service.js +2 -2
- package/esm2015/lib/guards/checkout-ready.service.js +3 -3
- package/esm2015/lib/guards/loggedin-guard.service.js +2 -2
- package/esm2015/lib/guards/user-role-guard.service.js +2 -2
- package/esm2015/lib/interfaces/checkout-data.js +1 -1
- package/esm2015/lib/services/account/orders.service.js +6 -4
- package/esm2015/lib/services/auth.service.js +4 -3
- package/esm2015/lib/services/captcha.service.js +6 -4
- package/esm2015/lib/services/cart.service.js +1194 -74
- package/esm2015/lib/services/channel-config.service.js +4 -6
- package/esm2015/lib/services/checkout/addressing.service.js +65 -9
- package/esm2015/lib/services/checkout/checkout.service.js +58 -9
- package/esm2015/lib/services/checkout/error-handler.service.js +4 -3
- package/esm2015/lib/services/checkout/payment.service.js +35 -15
- package/esm2015/lib/services/checkout/shipment.service.js +54 -3
- package/esm2015/lib/services/concatenated-associations.service.js +4 -3
- package/esm2015/lib/services/currency.service.js +5 -3
- package/esm2015/lib/services/filters.service.js +2 -2
- package/esm2015/lib/services/footer/footer.service.js +4 -3
- package/esm2015/lib/services/gift-card.service.js +56 -5
- package/esm2015/lib/services/parameters.service.js +5 -3
- package/esm2015/lib/services/reviews.service.js +5 -4
- package/esm2015/lib/services/seo.service.js +4 -5
- package/esm2015/lib/services/stores.service.js +4 -3
- package/esm2015/lib/services/wishlist.service.js +3 -4
- package/esm2015/lib/utils/analytics/google-analytics.service.js +1 -1
- package/esm2015/lib/utils/order-util.service.js +22 -2
- package/esm2015/lib/utils/price-presentation.service.js +2 -3
- package/esm2015/lib/utils/shipping-price-display.service.js +2 -3
- package/esm5/lib/api/connection.service.js +2 -2
- package/esm5/lib/core.consts.js +4 -5
- package/esm5/lib/ec-component/account-ec/order-ec/order-ec.component.js +2 -2
- package/esm5/lib/ec-component/cart-bootstrap-navigation.js +27 -0
- package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
- package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +28 -3
- package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +206 -12
- package/esm5/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +6 -2
- package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +31 -14
- package/esm5/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.js +11 -3
- package/esm5/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +5 -3
- package/esm5/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
- package/esm5/lib/guards/able-buyer-guard.service.js +2 -2
- package/esm5/lib/guards/auth-guard.service.js +2 -2
- package/esm5/lib/guards/checkout-ready.service.js +3 -3
- package/esm5/lib/guards/loggedin-guard.service.js +2 -2
- package/esm5/lib/guards/user-role-guard.service.js +2 -2
- package/esm5/lib/interfaces/checkout-data.js +1 -1
- package/esm5/lib/services/account/orders.service.js +6 -4
- package/esm5/lib/services/auth.service.js +4 -3
- package/esm5/lib/services/captcha.service.js +6 -4
- package/esm5/lib/services/cart.service.js +1243 -94
- package/esm5/lib/services/channel-config.service.js +4 -6
- package/esm5/lib/services/checkout/addressing.service.js +65 -9
- package/esm5/lib/services/checkout/checkout.service.js +65 -13
- package/esm5/lib/services/checkout/error-handler.service.js +4 -3
- package/esm5/lib/services/checkout/payment.service.js +29 -11
- package/esm5/lib/services/checkout/shipment.service.js +58 -7
- package/esm5/lib/services/concatenated-associations.service.js +4 -3
- package/esm5/lib/services/currency.service.js +5 -3
- package/esm5/lib/services/filters.service.js +2 -2
- package/esm5/lib/services/footer/footer.service.js +4 -3
- package/esm5/lib/services/gift-card.service.js +59 -5
- package/esm5/lib/services/parameters.service.js +5 -3
- package/esm5/lib/services/reviews.service.js +5 -4
- package/esm5/lib/services/seo.service.js +4 -5
- package/esm5/lib/services/stores.service.js +4 -3
- package/esm5/lib/services/wishlist.service.js +3 -4
- package/esm5/lib/utils/analytics/google-analytics.service.js +1 -1
- package/esm5/lib/utils/order-util.service.js +22 -2
- package/esm5/lib/utils/price-presentation.service.js +2 -3
- package/esm5/lib/utils/shipping-price-display.service.js +2 -3
- package/fesm2015/ng-easycommerce.js +4360 -2745
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +5193 -3523
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/cart-bootstrap-navigation.d.ts +7 -0
- package/lib/ec-component/cart-ec/cart-ec.component.d.ts +5 -2
- package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +6 -1
- package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +27 -3
- package/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +1 -1
- package/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.d.ts +3 -0
- package/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.d.ts +3 -0
- package/lib/interfaces/checkout-data.d.ts +6 -1
- package/lib/services/cart.service.d.ts +123 -7
- package/lib/services/checkout/addressing.service.d.ts +1 -1
- package/lib/services/checkout/checkout.service.d.ts +3 -0
- package/lib/services/checkout/shipment.service.d.ts +2 -2
- package/lib/services/gift-card.service.d.ts +1 -0
- package/lib/utils/order-util.service.d.ts +1 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -10,10 +10,10 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
10
10
|
import { Injectable, Inject, Injector } from '@angular/core';
|
|
11
11
|
import { BehaviorSubject, ReplaySubject } from 'rxjs';
|
|
12
12
|
import { ConnectionService } from '../api/connection.service';
|
|
13
|
-
import { AddressingService } from './checkout/addressing.service';
|
|
14
13
|
import { Constants } from '../core.consts';
|
|
15
14
|
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "
|
|
15
|
+
import * as i1 from "../core.consts";
|
|
16
|
+
import * as i2 from "../api/connection.service";
|
|
17
17
|
var ChannelConfigService = /** @class */ (function () {
|
|
18
18
|
function ChannelConfigService(consts, env, connection, injector) {
|
|
19
19
|
var _this = this;
|
|
@@ -59,7 +59,6 @@ var ChannelConfigService = /** @class */ (function () {
|
|
|
59
59
|
locale: channelObj.locales.code,
|
|
60
60
|
checkoutView: channelObj.checkoutView
|
|
61
61
|
});
|
|
62
|
-
_this.injector.get(AddressingService).setTypeSelectAddress(channelObj.headquarterSelectionOnly || 'LOAD_ADDRESS_AND_SELECTION');
|
|
63
62
|
};
|
|
64
63
|
this.setChannelInfo = function (channelObj) {
|
|
65
64
|
_this.consts.modifyChannelConfig({
|
|
@@ -68,7 +67,6 @@ var ChannelConfigService = /** @class */ (function () {
|
|
|
68
67
|
checkoutView: channelObj.checkoutView
|
|
69
68
|
});
|
|
70
69
|
_this.channel = channelObj;
|
|
71
|
-
_this.injector.get(AddressingService).setTypeSelectAddress(channelObj.headquarterSelectionOnly || 'LOAD_ADDRESS_AND_SELECTION');
|
|
72
70
|
};
|
|
73
71
|
/**
|
|
74
72
|
* @description cambian de canal segun el hostname que recibe por parametro.
|
|
@@ -104,7 +102,7 @@ var ChannelConfigService = /** @class */ (function () {
|
|
|
104
102
|
{ type: ConnectionService },
|
|
105
103
|
{ type: Injector }
|
|
106
104
|
]; };
|
|
107
|
-
ChannelConfigService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ChannelConfigService_Factory() { return new
|
|
105
|
+
ChannelConfigService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ChannelConfigService_Factory() { return new ChannelConfigService(i0.ɵɵinject(i1.Constants), i0.ɵɵinject("env"), i0.ɵɵinject(i2.ConnectionService), i0.ɵɵinject(i0.INJECTOR)); }, token: ChannelConfigService, providedIn: "root" });
|
|
108
106
|
ChannelConfigService = __decorate([
|
|
109
107
|
Injectable({
|
|
110
108
|
providedIn: 'root'
|
|
@@ -114,4 +112,4 @@ var ChannelConfigService = /** @class */ (function () {
|
|
|
114
112
|
return ChannelConfigService;
|
|
115
113
|
}());
|
|
116
114
|
export { ChannelConfigService };
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUszQztJQUVJLDhCQUFvQixNQUFpQixFQUF5QixHQUFHLEVBQVUsVUFBNkIsRUFBVSxRQUFrQjtRQUFwSSxpQkFJQztRQUptQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQXlCLFFBQUcsR0FBSCxHQUFHLENBQUE7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFNNUgscUJBQWdCLEdBQUcsY0FBTSxPQUFBLFdBQVcsR0FBRyxLQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLFVBQVUsRUFBbkQsQ0FBbUQsQ0FBQTtRQUM1RSxlQUFVLEdBQUcsY0FBTSxPQUFBLFdBQVcsR0FBRyxLQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLFVBQVUsRUFBbkQsQ0FBbUQsQ0FBQTtRQUN0RSxnQkFBVyxHQUFHLGNBQU0sT0FBQSxtQkFBbUIsRUFBbkIsQ0FBbUIsQ0FBQTtRQUV2Qyx5QkFBb0IsR0FBRyxJQUFJLGFBQWEsRUFBTyxDQUFBO1FBQ2hELG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixD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WUFDRixnQkFBZ0I7UUFDcEIsQ0FBQyxDQUFBO1FBMUZHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDckIsQ0FBQzs7Z0JBSjJCLFNBQVM7Z0RBQUcsTUFBTSxTQUFDLEtBQUs7Z0JBQW1DLGlCQUFpQjtnQkFBb0IsUUFBUTs7O0lBRjNILG9CQUFvQjtRQUhoQyxVQUFVLENBQUM7WUFDUixVQUFVLEVBQUUsTUFBTTtTQUNyQixDQUFDO1FBRzBDLFdBQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO09BRjVDLG9CQUFvQixDQThGaEM7K0JBeEdEO0NBd0dDLEFBOUZELElBOEZDO1NBOUZZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkcmVzc2luZ1NlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0L2FkZHJlc3Npbmcuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi9jb3JlLmNvbnN0cyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbm5lbENvbmZpZ1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cywgQEluamVjdCgnZW52JykgcHJpdmF0ZSBlbnYsIHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHRoaXMuZ2V0Q2hhbm5lbENvbmZpZygpXG4gICAgICAgIHRoaXMuZ2V0Q2hhbm5lbHMoKVxuICAgICAgICB0aGlzLmdldExvY2FsZXMoKVxuICAgIH1cbiAgICBwdWJsaWMgY2hhbm5lbFR5cGU7XG4gICAgcHJpdmF0ZSBjaGFubmVsQ29uZmlnQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NoYW5uZWwnXG4gICAgcHJpdmF0ZSBsb2NhbGVzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2xvY2FsZXMnXG4gICAgcHJpdmF0ZSBjaGFubmVsc0FwaSA9ICgpID0+ICdzaG9wLWFwaS9jaGFubmVscydcblxuICAgIHByaXZhdGUgY2hhbm5lbENvbmZpZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KClcbiAgICBwdWJsaWMgY2hhbm5lbENvbmZpZyQgPSB0aGlzLmNoYW5uZWxDb25maWdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgcHJpdmF0ZSBjaGFubmVsOmFueTtcblxuICAgIHByaXZhdGUgY2hhbm5lbHNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pXG4gICAgcHVibGljIGNoYW5uZWxzID0gdGhpcy5jaGFubmVsc1N1YmplY3QuYXNPYnNlcnZhYmxlKClcblxuICAgIHByaXZhdGUgbG9jYWxlc1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSlcbiAgICBwdWJsaWMgbG9jYWxlcyA9IHRoaXMubG9jYWxlc1N1YmplY3QuYXNPYnNlcnZhYmxlKClcblxuICAgIHB1YmxpYyBnZXRDaGFubmVsQ29uZmlnID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY2hhbm5lbENvbmZpZ0FwaSgpKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q2hhbm5lbEluZm8ocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFubmVsVHlwZSA9IHJlcy50eXBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5uZWxDb25maWdTdWJqZWN0Lm5leHQocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5jaGFubmVsQ29uZmlnU3ViamVjdC5uZXh0KHt9KVxuICAgICAgICApLmNhdGNoKGVyciA9PiB0aGlzLmNoYW5uZWxDb25maWdTdWJqZWN0Lm5leHQobnVsbCkpXG4gICAgfVxuXG4gICAgcHVibGljIGdldENoYW5uZWxzID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY2hhbm5lbHNBcGkoKSkudG9Qcm9taXNlKClcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB0aGlzLmNoYW5uZWxzU3ViamVjdC5uZXh0KHJlcykpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHRoaXMuY2hhbm5lbHNTdWJqZWN0Lm5leHQoW10pKVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3RpdmVDaGFubmVsID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFubmVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMb2NhbGVzID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMubG9jYWxlc0FwaSgpKS50b1Byb21pc2UoKVxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMubG9jYWxlc1N1YmplY3QubmV4dChyZXMuaXRlbXMpKVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB0aGlzLmxvY2FsZXNTdWJqZWN0Lm5leHQoW10pKVxuICAgIH1cblxuICAgIHB1YmxpYyBjaGFuZ2VDaGFubmVsID0gY2hhbm5lbE9iaiA9PiB7XG4gICAgICAgIHRoaXMuY29uc3RzLm1vZGlmeUNoYW5uZWxDb25maWcoe1xuICAgICAgICAgICAgY2hhbm5lbDogY2hhbm5lbE9iai5jb2RlLFxuICAgICAgICAgICAgY3VycmVuY3k6IGNoYW5uZWxPYmouYmFzZUN1cnJlbmN5LFxuICAgICAgICAgICAgbG9jYWxlOiBjaGFubmVsT2JqLmxvY2FsZXMuY29kZSxcbiAgICAgICAgICAgIGNoZWNrb3V0VmlldzogY2hhbm5lbE9iai5jaGVja291dFZpZXdcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoQWRkcmVzc2luZ1NlcnZpY2UpLnNldFR5cGVTZWxlY3RBZGRyZXNzKGNoYW5uZWxPYmouaGVhZHF1YXJ0ZXJTZWxlY3Rpb25Pbmx5IHx8ICdMT0FEX0FERFJFU1NfQU5EX1NFTEVDVElPTicpXG4gICAgfVxuXG4gICAgcHVibGljIHNldENoYW5uZWxJbmZvID0gY2hhbm5lbE9iaiA9PiB7XG4gICAgICAgIHRoaXMuY29uc3RzLm1vZGlmeUNoYW5uZWxDb25maWcoe1xuICAgICAgICAgICAgY2hhbm5lbDogY2hhbm5lbE9iai5jb2RlLFxuICAgICAgICAgICAgY3VycmVuY3k6IGNoYW5uZWxPYmouYmFzZUN1cnJlbmN5LFxuICAgICAgICAgICAgY2hlY2tvdXRWaWV3OiBjaGFubmVsT2JqLmNoZWNrb3V0Vmlld1xuICAgICAgICB9KVxuICAgICAgICB0aGlzLmNoYW5uZWwgPSBjaGFubmVsT2JqXG4gICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KEFkZHJlc3NpbmdTZXJ2aWNlKS5zZXRUeXBlU2VsZWN0QWRkcmVzcyhjaGFubmVsT2JqLmhlYWRxdWFydGVyU2VsZWN0aW9uT25seSB8fCAnTE9BRF9BRERSRVNTX0FORF9TRUxFQ1RJT04nKVxuICAgIH1cbiAgICBcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gY2FtYmlhbiBkZSBjYW5hbCBzZWd1biBlbCBob3N0bmFtZSBxdWUgcmVjaWJlIHBvciBwYXJhbWV0cm8uXG4gICAgICogQHdhcm5pbmcgIGVzdGEgZnVuY2lvbiBlcyB1dGlsIHBhcmEgZWwgY2FzbyBlbiBxdWUgc2UgbmVjZXNpdGUgbWFuZWphciB1cmwgZGlzdGludGFzLCBcbiAgICAgKiBjYWRhIHVuYSBjb24gc3UgY29uZmlndXJhY2nDs24gZGUgY2FuYWwsIHBlcm8gdXRpbGl6YW5kbyBlbCBtaXNtbyBmcm9udGVuZC4gXG4gICAgICogRW4gY3VhbHF1aWVyIG90cm8gY2FzbywgdXRpbGl6YXIgbGFzIGRlbWFzIGhlcnJhbWllbnRhcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaG9zdG5hbWUgaG9zdG5hbWUgZGVsIGNhbmFsIHF1ZSBzZSByZXF1aWVyZSB1dGlsaXphci5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2hhbmdlQ2hhbm5lbEJ5SG9zdG5hbWUgPSAoaG9zdG5hbWU6c3RyaW5nKSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2codGhpcy5jaGFubmVsc1N1YmplY3QuZ2V0VmFsdWUoKSlcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNoYW5uZWxzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oIHJlcyA9PiB7XG4gICAgICAgICAgICBsZXQgY2hhbm5lbCA9IHJlcy5maWx0ZXIoZWxlbSA9PiBlbGVtLmhvc3RuYW1lID09IGhvc3RuYW1lKVxuICAgICAgICAgICAgaWYoY2hhbm5lbCl7XG4gICAgICAgICAgICAgICAgaWYgKGNoYW5uZWxbMF0uY29kZSAhPSB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbm5lbFswXSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGFubmVsKGNoYW5uZWxbMF0pXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVsIGhvc3RuYW1lIG5vIGNvaW5jaWRlIGNvbiBuaW5ndW5vIHF1ZSB2ZW5nYSBlbiBsb3MgY2FuYWxlc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLy9yZXR1cm4gY2hhbm5lbFxuICAgIH1cbn1cbiJdfQ==
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLM0M7SUFFSSw4QkFBb0IsTUFBaUIsRUFBeUIsR0FBRyxFQUFVLFVBQTZCLEVBQVUsUUFBa0I7UUFBcEksaUJBSUM7UUFKbUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUF5QixRQUFHLEdBQUgsR0FBRyxDQUFBO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTTVILHFCQUFnQixHQUFHLGNBQU0sT0FBQSxXQUFXLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxVQUFVLEVBQW5ELENBQW1ELENBQUE7UUFDNUUsZUFBVSxHQUFHLGNBQU0sT0FBQSxXQUFXLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxVQUFVLEVBQW5ELENBQW1ELENBQUE7UUFDdEUsZ0JBQVcsR0FBRyxjQUFNLE9BQUEsbUJBQW1CLEVBQW5CLENBQW1CLENBQUE7UUFFdkMseUJBQW9CLEdBQUcsSUFBSSxhQUFhLEVBQU8sQ0FBQTtRQUNoRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUd4RCxvQkFBZSxHQUF5QixJQUFJLGVB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QUFDO1FBRzBDLFdBQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO09BRjVDLG9CQUFvQixDQTRGaEM7K0JBckdEO0NBcUdDLEFBNUZELElBNEZDO1NBNUZZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29yZS5jb25zdHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENoYW5uZWxDb25maWdTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMsIEBJbmplY3QoJ2VudicpIHByaXZhdGUgZW52LCBwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICB0aGlzLmdldENoYW5uZWxDb25maWcoKVxuICAgICAgICB0aGlzLmdldENoYW5uZWxzKClcbiAgICAgICAgdGhpcy5nZXRMb2NhbGVzKClcbiAgICB9XG4gICAgcHVibGljIGNoYW5uZWxUeXBlO1xuICAgIHByaXZhdGUgY2hhbm5lbENvbmZpZ0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jaGFubmVsJ1xuICAgIHByaXZhdGUgbG9jYWxlc0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9sb2NhbGVzJ1xuICAgIHByaXZhdGUgY2hhbm5lbHNBcGkgPSAoKSA9PiAnc2hvcC1hcGkvY2hhbm5lbHMnXG5cbiAgICBwcml2YXRlIGNoYW5uZWxDb25maWdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigpXG4gICAgcHVibGljIGNoYW5uZWxDb25maWckID0gdGhpcy5jaGFubmVsQ29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKVxuICAgIHByaXZhdGUgY2hhbm5lbDphbnk7XG5cbiAgICBwcml2YXRlIGNoYW5uZWxzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKVxuICAgIHB1YmxpYyBjaGFubmVscyA9IHRoaXMuY2hhbm5lbHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG5cbiAgICBwcml2YXRlIGxvY2FsZXNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pXG4gICAgcHVibGljIGxvY2FsZXMgPSB0aGlzLmxvY2FsZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG5cbiAgICBwdWJsaWMgZ2V0Q2hhbm5lbENvbmZpZyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNoYW5uZWxDb25maWdBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldENoYW5uZWxJbmZvKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbm5lbFR5cGUgPSByZXMudHlwZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFubmVsQ29uZmlnU3ViamVjdC5uZXh0KHJlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHRoaXMuY2hhbm5lbENvbmZpZ1N1YmplY3QubmV4dCh7fSlcbiAgICAgICAgKS5jYXRjaChlcnIgPT4gdGhpcy5jaGFubmVsQ29uZmlnU3ViamVjdC5uZXh0KG51bGwpKVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGFubmVscyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNoYW5uZWxzQXBpKCkpLnRvUHJvbWlzZSgpXG4gICAgICAgICAgICAudGhlbihyZXMgPT4gdGhpcy5jaGFubmVsc1N1YmplY3QubmV4dChyZXMpKVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB0aGlzLmNoYW5uZWxzU3ViamVjdC5uZXh0KFtdKSlcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWN0aXZlQ2hhbm5lbCA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbm5lbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TG9jYWxlcyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmxvY2FsZXNBcGkoKSkudG9Qcm9taXNlKClcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB0aGlzLmxvY2FsZXNTdWJqZWN0Lm5leHQocmVzLml0ZW1zKSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4gdGhpcy5sb2NhbGVzU3ViamVjdC5uZXh0KFtdKSlcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlQ2hhbm5lbCA9IGNoYW5uZWxPYmogPT4ge1xuICAgICAgICB0aGlzLmNvbnN0cy5tb2RpZnlDaGFubmVsQ29uZmlnKHtcbiAgICAgICAgICAgIGNoYW5uZWw6IGNoYW5uZWxPYmouY29kZSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBjaGFubmVsT2JqLmJhc2VDdXJyZW5jeSxcbiAgICAgICAgICAgIGxvY2FsZTogY2hhbm5lbE9iai5sb2NhbGVzLmNvZGUsXG4gICAgICAgICAgICBjaGVja291dFZpZXc6IGNoYW5uZWxPYmouY2hlY2tvdXRWaWV3XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHVibGljIHNldENoYW5uZWxJbmZvID0gY2hhbm5lbE9iaiA9PiB7XG4gICAgICAgIHRoaXMuY29uc3RzLm1vZGlmeUNoYW5uZWxDb25maWcoe1xuICAgICAgICAgICAgY2hhbm5lbDogY2hhbm5lbE9iai5jb2RlLFxuICAgICAgICAgICAgY3VycmVuY3k6IGNoYW5uZWxPYmouYmFzZUN1cnJlbmN5LFxuICAgICAgICAgICAgY2hlY2tvdXRWaWV3OiBjaGFubmVsT2JqLmNoZWNrb3V0Vmlld1xuICAgICAgICB9KVxuICAgICAgICB0aGlzLmNoYW5uZWwgPSBjaGFubmVsT2JqXG4gICAgfVxuICAgIFxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBjYW1iaWFuIGRlIGNhbmFsIHNlZ3VuIGVsIGhvc3RuYW1lIHF1ZSByZWNpYmUgcG9yIHBhcmFtZXRyby5cbiAgICAgKiBAd2FybmluZyAgZXN0YSBmdW5jaW9uIGVzIHV0aWwgcGFyYSBlbCBjYXNvIGVuIHF1ZSBzZSBuZWNlc2l0ZSBtYW5lamFyIHVybCBkaXN0aW50YXMsIFxuICAgICAqIGNhZGEgdW5hIGNvbiBzdSBjb25maWd1cmFjacOzbiBkZSBjYW5hbCwgcGVybyB1dGlsaXphbmRvIGVsIG1pc21vIGZyb250ZW5kLiBcbiAgICAgKiBFbiBjdWFscXVpZXIgb3RybyBjYXNvLCB1dGlsaXphciBsYXMgZGVtYXMgaGVycmFtaWVudGFzLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBob3N0bmFtZSBob3N0bmFtZSBkZWwgY2FuYWwgcXVlIHNlIHJlcXVpZXJlIHV0aWxpemFyLlxuICAgICAqL1xuICAgIHB1YmxpYyBjaGFuZ2VDaGFubmVsQnlIb3N0bmFtZSA9IChob3N0bmFtZTpzdHJpbmcpID0+IHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyh0aGlzLmNoYW5uZWxzU3ViamVjdC5nZXRWYWx1ZSgpKVxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY2hhbm5lbHNBcGkoKSkudG9Qcm9taXNlKCkudGhlbiggcmVzID0+IHtcbiAgICAgICAgICAgIGxldCBjaGFubmVsID0gcmVzLmZpbHRlcihlbGVtID0+IGVsZW0uaG9zdG5hbWUgPT0gaG9zdG5hbWUpXG4gICAgICAgICAgICBpZihjaGFubmVsKXtcbiAgICAgICAgICAgICAgICBpZiAoY2hhbm5lbFswXS5jb2RlICE9IHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFubmVsWzBdKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNoYW5uZWwoY2hhbm5lbFswXSlcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRWwgaG9zdG5hbWUgbm8gY29pbmNpZGUgY29uIG5pbmd1bm8gcXVlIHZlbmdhIGVuIGxvcyBjYW5hbGVzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAvL3JldHVybiBjaGFubmVsXG4gICAgfVxufVxuIl19
|
|
@@ -75,7 +75,12 @@ import { AnalyticsService } from '../analytics.service';
|
|
|
75
75
|
import { Validators } from '@angular/forms';
|
|
76
76
|
import { ChannelConfigService } from '../channel-config.service';
|
|
77
77
|
import * as i0 from "@angular/core";
|
|
78
|
-
import * as i1 from "
|
|
78
|
+
import * as i1 from "../../api/connection.service";
|
|
79
|
+
import * as i2 from "../../core.consts";
|
|
80
|
+
import * as i3 from "../cart.service";
|
|
81
|
+
import * as i4 from "./checkout.service";
|
|
82
|
+
import * as i5 from "../analytics.service";
|
|
83
|
+
import * as i6 from "../channel-config.service";
|
|
79
84
|
var AddressingService = /** @class */ (function (_super) {
|
|
80
85
|
__extends(AddressingService, _super);
|
|
81
86
|
function AddressingService(connection, consts, cartService, checkoutService, analyticsService, channelConfig) {
|
|
@@ -105,13 +110,20 @@ var AddressingService = /** @class */ (function (_super) {
|
|
|
105
110
|
return [2 /*return*/, this.connection.get(this.addressBookApi()).pipe(map(function (res) { var _a; return ((_a = res) === null || _a === void 0 ? void 0 : _a.length) && res.map(function (addres) { return addres && __assign(__assign({}, addres), { selected: addres.default }); }) || null; })).toPromise()];
|
|
106
111
|
}); }); };
|
|
107
112
|
_this.setHeadquarter = function (sede) {
|
|
113
|
+
if (!_this.cartService.canMutateCart())
|
|
114
|
+
return Promise.resolve(false);
|
|
115
|
+
var cartContext = _this.cartService.captureCartResponseContext();
|
|
108
116
|
return _this.connection.put(_this.headquarterApi(), sede.selected)
|
|
109
117
|
.pipe(map(function (order) {
|
|
110
118
|
var _a, _b;
|
|
111
|
-
if (
|
|
119
|
+
if (!_this.cartService.isCartResponseContextCurrent(cartContext))
|
|
120
|
+
return false;
|
|
121
|
+
if (_this.cartService.isCartBusinessError(order)) {
|
|
112
122
|
_this.cartService.changeHaveToUpdate(false);
|
|
113
123
|
return false;
|
|
114
124
|
}
|
|
125
|
+
if (!_this.cartService.applyCartResponse(order, cartContext, false))
|
|
126
|
+
return false;
|
|
115
127
|
_this.checkoutService.updateAsociatedData(order);
|
|
116
128
|
_this.checkoutService.setCheckoutNotes(((_b = (_a = sede) === null || _a === void 0 ? void 0 : _a.selected) === null || _b === void 0 ? void 0 : _b.notes) || '');
|
|
117
129
|
_this.setStepReady(sede, order);
|
|
@@ -121,17 +133,26 @@ var AddressingService = /** @class */ (function (_super) {
|
|
|
121
133
|
_this.analyticsService.callEvent('payment_info', order);
|
|
122
134
|
return order;
|
|
123
135
|
})).toPromise().then(function (res) { return res; }, function (err) {
|
|
136
|
+
if (_this.cartService.handleCartMutationError(err, cartContext.token))
|
|
137
|
+
return undefined;
|
|
124
138
|
return new Promise(function (resolve, reject) { return reject(new Error(err.error)); });
|
|
125
139
|
}).catch(function (err) { return console.error(err); });
|
|
126
140
|
};
|
|
127
141
|
_this.setHeadquarterByIds = function (data) {
|
|
142
|
+
if (!_this.cartService.canMutateCart())
|
|
143
|
+
return Promise.resolve(false);
|
|
144
|
+
var cartContext = _this.cartService.captureCartResponseContext();
|
|
128
145
|
return _this.connection.put(_this.headquarterApi(), data)
|
|
129
146
|
.pipe(map(function (order) {
|
|
130
147
|
var _a;
|
|
131
|
-
if (
|
|
148
|
+
if (!_this.cartService.isCartResponseContextCurrent(cartContext))
|
|
149
|
+
return false;
|
|
150
|
+
if (_this.cartService.isCartBusinessError(order)) {
|
|
132
151
|
_this.cartService.changeHaveToUpdate(false);
|
|
133
152
|
return false;
|
|
134
153
|
}
|
|
154
|
+
if (!_this.cartService.applyCartResponse(order, cartContext, false))
|
|
155
|
+
return false;
|
|
135
156
|
_this.checkoutService.updateAsociatedData(order);
|
|
136
157
|
_this.checkoutService.setCheckoutNotes(((_a = data) === null || _a === void 0 ? void 0 : _a.notes) || '');
|
|
137
158
|
_this.setStepReady(data, order);
|
|
@@ -141,19 +162,28 @@ var AddressingService = /** @class */ (function (_super) {
|
|
|
141
162
|
_this.analyticsService.callEvent('payment_info', order);
|
|
142
163
|
return order;
|
|
143
164
|
})).toPromise().then(function (res) { return res; }, function (err) {
|
|
165
|
+
if (_this.cartService.handleCartMutationError(err, cartContext.token))
|
|
166
|
+
return undefined;
|
|
144
167
|
return new Promise(function (resolve, reject) { return reject(new Error(err.error)); });
|
|
145
168
|
}).catch(function (err) { return console.error(err); });
|
|
146
169
|
};
|
|
147
170
|
_this.setAddress = function (user_data) {
|
|
171
|
+
if (!_this.cartService.canMutateCart())
|
|
172
|
+
return Promise.resolve(false);
|
|
173
|
+
var cartContext = _this.cartService.captureCartResponseContext();
|
|
148
174
|
user_data.locale = _this.consts.getLocale();
|
|
149
175
|
// se modifica el código postal para castearlo a String antes de enviarlo
|
|
150
176
|
user_data.shippingAddress.postcode = user_data.shippingAddress.postcode.toString();
|
|
151
177
|
return _this.connection.put(_this.putAddressApi(), user_data).pipe(map(function (order) {
|
|
152
178
|
var _a;
|
|
153
|
-
if (
|
|
179
|
+
if (!_this.cartService.isCartResponseContextCurrent(cartContext))
|
|
180
|
+
return false;
|
|
181
|
+
if (_this.cartService.isCartBusinessError(order)) {
|
|
154
182
|
_this.cartService.changeHaveToUpdate(false);
|
|
155
183
|
return false;
|
|
156
184
|
}
|
|
185
|
+
if (!_this.cartService.applyCartResponse(order, cartContext, false))
|
|
186
|
+
return false;
|
|
157
187
|
_this.checkoutService.updateAsociatedData(order);
|
|
158
188
|
_this.checkoutService.setCheckoutNotes(((_a = user_data) === null || _a === void 0 ? void 0 : _a.notes) || '');
|
|
159
189
|
_this.setStepReady(user_data, order);
|
|
@@ -163,17 +193,38 @@ var AddressingService = /** @class */ (function (_super) {
|
|
|
163
193
|
_this.analyticsService.callEvent('payment_info', order);
|
|
164
194
|
return order;
|
|
165
195
|
})).toPromise().then(function (res) { return res; }, function (err) {
|
|
196
|
+
if (_this.cartService.handleCartMutationError(err, cartContext.token))
|
|
197
|
+
return undefined;
|
|
166
198
|
return new Promise(function (resolve, reject) { return reject(new Error(err.error)); });
|
|
167
199
|
}).catch(function (err) { return console.error(err); });
|
|
168
200
|
};
|
|
169
201
|
_this.putAddressAndHandle = function (user_data, next, onError) {
|
|
202
|
+
if (!_this.cartService.canMutateCart()) {
|
|
203
|
+
onError && onError({ error: 'cart-unavailable' });
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
var cartContext = _this.cartService.captureCartResponseContext();
|
|
170
207
|
user_data.locale = _this.consts.getLocale();
|
|
171
208
|
var data = { shippingAddress: __assign({}, user_data.data) };
|
|
172
209
|
_this.connection.put(_this.putAddressApi(), data).toPromise().then(function (res) {
|
|
210
|
+
if (!_this.cartService.isCartResponseContextCurrent(cartContext))
|
|
211
|
+
return;
|
|
212
|
+
if (_this.cartService.isCartBusinessError(res)) {
|
|
213
|
+
onError && onError(res);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (!_this.cartService.applyCartResponse(res, cartContext, false)) {
|
|
217
|
+
onError && onError(res);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
173
220
|
_this.setStepReady(user_data, res);
|
|
174
221
|
_this.analyticsService.callEvent('payment_info', res);
|
|
175
222
|
next && next();
|
|
176
|
-
}, function (err) {
|
|
223
|
+
}, function (err) {
|
|
224
|
+
if (_this.cartService.handleCartMutationError(err, cartContext.token))
|
|
225
|
+
return;
|
|
226
|
+
onError && onError(err);
|
|
227
|
+
});
|
|
177
228
|
};
|
|
178
229
|
_this.getTypeForm = function () {
|
|
179
230
|
var formsTypeCofig = [
|
|
@@ -297,7 +348,11 @@ var AddressingService = /** @class */ (function (_super) {
|
|
|
297
348
|
return typeConfig;
|
|
298
349
|
};
|
|
299
350
|
_this.setTypeSelectAddress = function (type) {
|
|
300
|
-
_this.modeSelectAddress = type
|
|
351
|
+
_this.modeSelectAddress = type === true
|
|
352
|
+
? 'ONLY_ADDRESS_SELECTION'
|
|
353
|
+
: type === false || !type
|
|
354
|
+
? 'LOAD_ADDRESS_AND_SELECTION'
|
|
355
|
+
: type;
|
|
301
356
|
};
|
|
302
357
|
_this.setTypeForms = function (type) {
|
|
303
358
|
_this.typeForms = type && type || 'ARG';
|
|
@@ -312,8 +367,9 @@ var AddressingService = /** @class */ (function (_super) {
|
|
|
312
367
|
});
|
|
313
368
|
_this.channelConfig.channelConfig$
|
|
314
369
|
.subscribe(function (cfg) {
|
|
315
|
-
var _a;
|
|
370
|
+
var _a, _b;
|
|
316
371
|
_this.checkoutNotesField = (_a = cfg) === null || _a === void 0 ? void 0 : _a.checkoutNotesField;
|
|
372
|
+
_this.setTypeSelectAddress((_b = cfg) === null || _b === void 0 ? void 0 : _b.headquarterSelectionOnly);
|
|
317
373
|
});
|
|
318
374
|
return _this;
|
|
319
375
|
}
|
|
@@ -327,7 +383,7 @@ var AddressingService = /** @class */ (function (_super) {
|
|
|
327
383
|
{ type: AnalyticsService },
|
|
328
384
|
{ type: ChannelConfigService }
|
|
329
385
|
]; };
|
|
330
|
-
AddressingService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AddressingService_Factory() { return new
|
|
386
|
+
AddressingService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AddressingService_Factory() { return new AddressingService(i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i2.Constants), i0.ɵɵinject(i3.CartService), i0.ɵɵinject(i4.CheckoutService), i0.ɵɵinject(i5.AnalyticsService), i0.ɵɵinject(i6.ChannelConfigService)); }, token: AddressingService, providedIn: "root" });
|
|
331
387
|
AddressingService = __decorate([
|
|
332
388
|
Injectable({
|
|
333
389
|
providedIn: 'root'
|
|
@@ -336,4 +392,4 @@ var AddressingService = /** @class */ (function (_super) {
|
|
|
336
392
|
return AddressingService;
|
|
337
393
|
}(StepService));
|
|
338
394
|
export { AddressingService };
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L2FkZHJlc3Npbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFRakU7SUFBdUMscUNBQVc7SUFpQjlDLDJCQUFvQixVQUE2QixFQUFVLE1BQWlCLEVBQVUsV0FBd0IsRUFBVSxlQUFnQyxFQUM1SSxnQkFBa0MsRUFBVSxhQUFtQztRQUQzRixZQUVJLGtCQUFNLGVBQWUsQ0FBQyxTQVl6QjtRQWRtQixnQkFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFBVSxZQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVUsaUJBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxxQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFD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LEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs0QkFDdEUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3BELFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDekMsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUMzQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDN0QsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUMxQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzs0QkFDL0IsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUMzQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzs0QkFDbkMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO3lCQUNkO3dCQUNELFdBQVcsRUFBRTs0QkFDVCxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3RDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDckMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7NEJBQ3RFLEtB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QWxCbEYsaUJBQWlCO1FBSDdCLFVBQVUsQ0FBQztZQUNSLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUM7T0FDVyxpQkFBaUIsQ0F1UTdCOzRCQXpSRDtDQXlSQyxBQXZRRCxDQUF1QyxXQUFXLEdBdVFqRDtTQXZRWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0ZXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jaGVja291dC9zdGVwLXNlcnZpY2UnO1xuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuLi9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGFubmVsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwtY29uZmlnLnNlcnZpY2UnO1xuXG50eXBlIHR5cGVGb3JtcyA9ICdFVVInIHwgJ0FSRyc7XG50eXBlIHR5cGVTZWxlY3RBZGRyZXNzID0gJ09OTFlfTE9BRF9BRERSRVNTJyB8ICdPTkxZX0FERFJFU1NfU0VMRUNUSU9OJyB8ICdMT0FEX0FERFJFU1NfQU5EX1NFTEVDVElPTic7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWRkcmVzc2luZ1NlcnZpY2UgZXh0ZW5kcyBTdGVwU2VydmljZSB7XG5cbiAgICBiYXNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnLycgKyAnY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7XG4gICAgY291bnRyaWVzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NvdW50cmllcyc7XG4gICAgem9uZXNBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvem9uZXMnO1xuICAgIHByb3ZpbmNlc0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9wcm92aW5jZXMnO1xuICAgIHB1dEFkZHJlc3NBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvYWRkcmVzcyc7XG4gICAgYWRkcmVzc0Jvb2tBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYWRkcmVzcy1ib29rJztcbiAgICBoZWFkcXVhcnRlckFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArJy9oZWFkcXVhcnRlcic7XG5cbiAgICBwdWJsaWMgdHlwZUZvcm1zOiB0eXBlRm9ybXMgPSAnQVJHJztcbiAgICBwdWJsaWMgbW9kZVNlbGVjdEFkZHJlc3M6IHR5cGVTZWxlY3RBZGRyZXNzID0gJ0xPQURfQUREUkVTU19BTkRfU0VMRUNUSU9OJztcbiAgICBwdWJsaWMgY291bnRyaWVzTGlzdCA9IFtdO1xuICAgIHB1YmxpYyBkb2N1bWVudFR5cGVzID0gW107XG4gICAgcHVibGljIHByb3ZpbmNlTGlzdCA9IFtdO1xuICAgIHB1YmxpYyBjaGVja291dE5vdGVzRmllbGQ6ICdzaG93J3wncmVxdWlyZWQnfCdoaWRlJ3x1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLCBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLCBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHJpdmF0ZSBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLCBwcml2YXRlIGNoYW5uZWxDb25maWc6IENoYW5uZWxDb25maWdTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGNoZWNrb3V0U2VydmljZSk7XG4gICAgICAgIHRoaXMuZ2V0QWRkcmVzc2luZ0RhdGEoKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVzID0gKHJlcy5maW5kKHBhaXNlcyA9PiB0aGlzLmNvbnN0cy5nZXRMb2NhbGUoKS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHBhaXNlcy5jb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkpKSk/LmRvY3VtZW50VHlwZXMgfHwgW11cbiAgICAgICAgICAgICAgICB0aGlzLnByb3ZpbmNlTGlzdCA9IChyZXMuZmluZChwYWlzZXMgPT4gdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCkudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhwYWlzZXMuY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSkpPy5wcm92aW5jZXMgfHwgW11cbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50cmllc0xpc3QgPSByZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5jaGFubmVsQ29uZmlnLmNoYW5uZWxDb25maWckXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGNmZyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dE5vdGVzRmllbGQgPSBjZmc/LmNoZWNrb3V0Tm90ZXNGaWVsZDtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuXG4gICAgfVxuXG4gICAgZ2V0QWRkcmVzc2luZ0RhdGEgPSBhc3luYyAoKSA9PlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY291bnRyaWVzQXBpKCkpLnBpcGUobWFwKHJlcyA9PiByZXM/Ll9lbWJlZGRlZD8uaXRlbXMpKS50b1Byb21pc2UoKTtcblxuICAgIGdldEFkZHJlc3NCb29rID0gYXN5bmMgKCkgPT5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmFkZHJlc3NCb29rQXBpKCkpLnBpcGUobWFwKHJlcyA9PiByZXM/Lmxlbmd0aCAmJiByZXMubWFwKGFkZHJlcyA9PiB7IHJldHVybiBhZGRyZXMgJiYgeyAuLi5hZGRyZXMsIHNlbGVjdGVkOiBhZGRyZXMuZGVmYXVsdCB9IH0pIHx8IG51bGwgKSkudG9Qcm9taXNlKCk7XG5cbiAgICBzZXRIZWFkcXVhcnRlciA9IChzZWRlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5oZWFkcXVhcnRlckFwaSgpLCBzZWRlLnNlbGVjdGVkKVxuICAgICAgICAgICAgLnBpcGUobWFwKG9yZGVyID0+IHtcbiAgICAgICAgICAgIGlmIChvcmRlciAmJiBvcmRlci5lcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2hhbmdlSGF2ZVRvVXBkYXRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKG9yZGVyKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnNldENoZWNrb3V0Tm90ZXMoc2VkZT8uc2VsZWN0ZWQ/Lm5vdGVzIHx8ICcnKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RlcFJlYWR5KHNlZGUsIG9yZGVyKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cy5nZXRDaGVja291dFZpZXcoKSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5wcmVmZXRjaFBheW1lbnRNZXRob2RzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdwYXltZW50X2luZm8nLCBvcmRlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgICAgICAgICAgfSkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHJlcyxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0KG5ldyBFcnJvcihlcnIuZXJyb3IpKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpXG4gICAgfVxuXG4gICAgc2V0SGVhZHF1YXJ0ZXJCeUlkcyA9IChkYXRhOiB7IHNoaXBwaW5nQWRkcmVzc0lkOiBudW1iZXIsIGJpbGxpbmdBZGRyZXNzSWQ6IG51bWJlciwgbm90ZXM6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMuaGVhZHF1YXJ0ZXJBcGkoKSwgZGF0YSlcbiAgICAgICAgICAgIC5waXBlKG1hcChvcmRlciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9yZGVyICYmIG9yZGVyLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2hhbmdlSGF2ZVRvVXBkYXRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKG9yZGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRDaGVja291dE5vdGVzKGRhdGE/Lm5vdGVzIHx8ICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0ZXBSZWFkeShkYXRhLCBvcmRlcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uc3RzLmdldENoZWNrb3V0VmlldygpID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5wcmVmZXRjaFBheW1lbnRNZXRob2RzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3BheW1lbnRfaW5mbycsIG9yZGVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXI7XG4gICAgICAgICAgICB9KSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgICAgICByZXMgPT4gcmVzLFxuICAgICAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZWplY3QobmV3IEVycm9yKGVyci5lcnJvcikpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSlcbiAgICB9XG5cbiAgICBzZXRBZGRyZXNzID0gKHVzZXJfZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHVzZXJfZGF0YS5sb2NhbGUgPSB0aGlzLmNvbnN0cy5nZXRMb2NhbGUoKTtcblxuICAgICAgICAvLyBzZSBtb2RpZmljYSBlbCBjw7NkaWdvIHBvc3RhbCBwYXJhIGNhc3RlYXJsbyBhIFN0cmluZyBhbnRlcyBkZSBlbnZpYXJsb1xuICAgICAgICB1c2VyX2RhdGEuc2hpcHBpbmdBZGRyZXNzLnBvc3Rjb2RlID0gdXNlcl9kYXRhLnNoaXBwaW5nQWRkcmVzcy5wb3N0Y29kZS50b1N0cmluZygpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0QWRkcmVzc0FwaSgpLCB1c2VyX2RhdGEpLnBpcGUobWFwKG9yZGVyID0+IHtcbiAgICAgICAgICAgIGlmIChvcmRlciAmJiBvcmRlci5lcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2hhbmdlSGF2ZVRvVXBkYXRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKG9yZGVyKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnNldENoZWNrb3V0Tm90ZXModXNlcl9kYXRhPy5ub3RlcyB8fCAnJyk7XG4gICAgICAgICAgICB0aGlzLnNldFN0ZXBSZWFkeSh1c2VyX2RhdGEsIG9yZGVyKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cy5nZXRDaGVja291dFZpZXcoKSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5wcmVmZXRjaFBheW1lbnRNZXRob2RzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdwYXltZW50X2luZm8nLCBvcmRlcik7XG4gICAgICAgICAgICByZXR1cm4gb3JkZXI7XG4gICAgICAgIH0pKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHJlcyxcbiAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyLmVycm9yKSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSlcbiAgICB9XG5cbiAgICBwdXRBZGRyZXNzQW5kSGFuZGxlID0gKHVzZXJfZGF0YSwgbmV4dD8sIG9uRXJyb3I/KSA9PiB7XG4gICAgICAgIHVzZXJfZGF0YS5sb2NhbGUgPSB0aGlzLmNvbnN0cy5nZXRMb2NhbGUoKTtcbiAgICAgICAgbGV0IGRhdGEgPSB7IHNoaXBwaW5nQWRkcmVzczogeyAuLi51c2VyX2RhdGEuZGF0YSB9IH07XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5wdXRBZGRyZXNzQXBpKCksIGRhdGEpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RlcFJlYWR5KHVzZXJfZGF0YSwgcmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdwYXltZW50X2luZm8nLCByZXMpO1xuICAgICAgICAgICAgICAgIG5leHQgJiYgbmV4dCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVyciA9PiBvbkVycm9yICYmIG9uRXJyb3IoZXJyKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZ2V0VHlwZUZvcm0gPSAoKSA9PiB7XG4gICAgICAgIGxldCBmb3Jtc1R5cGVDb2ZpZyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnRVVSJyxcbiAgICAgICAgICAgICAgICBjb25maWdGb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1BZGRyZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJ1swLTldKycpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiBbJycsIFtdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiBbJycsIFtdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2VDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGVybXM6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGVzOiBbJyddXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGZvcm1CaWxsaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKCdbMC05XSsnKV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZTogWycnLCBbXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudE51bWJlcjogWycnLCBbXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0Y29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGVzOiBbJyddXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZpZXdGb3Jtczoge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWVzOiB0aGlzLmRvY3VtZW50VHlwZXMgfSxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnROdW1iZXI6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHN0cmVldDogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBjaXR5OiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlQ29kZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBwb3N0Y29kZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICB0ZXJtczogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBub3RlczogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlczogW10gfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29kZTogJ0FSRycsXG4gICAgICAgICAgICAgICAgY29uZmlnRm9ybToge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQWRkcmVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKCdbMC05XSsnKV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnROdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2VDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZXM6IFsnJ11cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybUJpbGxpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJ1swLTldKycpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudE51bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlczogWycnXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2aWV3Rm9ybXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiB0aGlzLmRvY3VtZW50VHlwZXN9LFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudE51bWJlcjogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgY2l0eTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBwcm92aW5jZUNvZGU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgdGVybXM6IHsgZW5hYmxlZDogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBub3RlczogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlczogW10gfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuXG4gICAgICAgIGNvbnN0IHR5cGVDb25maWcgPSBmb3Jtc1R5cGVDb2ZpZy5maW5kKGN0ID0+IGN0LmNvZGUgPT0gdGhpcy50eXBlRm9ybXMpO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5jaGVja291dE5vdGVzRmllbGQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2hpZGUnOlxuICAgICAgICAgICAgICAgIHR5cGVDb25maWcudmlld0Zvcm1zLm5vdGVzLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0eXBlQ29uZmlnLnZpZXdGb3Jtcy5ub3Rlcy5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxuICAgICAgICAgICAgICAgIHR5cGVDb25maWcudmlld0Zvcm1zLm5vdGVzLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHR5cGVDb25maWcudmlld0Zvcm1zLm5vdGVzLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6IC8vICdzaG93JyBvIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHR5cGVDb25maWcudmlld0Zvcm1zLm5vdGVzLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHR5cGVDb25maWcudmlld0Zvcm1zLm5vdGVzLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub3RlVmFsaWRhdG9ycyA9IHR5cGVDb25maWcudmlld0Zvcm1zLm5vdGVzLnJlcXVpcmVkXG4gICAgICAgICAgICA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgXG4gICAgICAgICh0eXBlQ29uZmlnLmNvbmZpZ0Zvcm0uZm9ybUFkZHJlcyBhcyBhbnkpLm5vdGVzICA9IFsgJycsIG5vdGVWYWxpZGF0b3JzIF07XG4gICAgICAgICh0eXBlQ29uZmlnLmNvbmZpZ0Zvcm0uZm9ybUJpbGxpbmcgYXMgYW55KS5ub3RlcyA9IFsgJycsIG5vdGVWYWxpZGF0b3JzIF07XG5cbiAgICAgICAgcmV0dXJuIHR5cGVDb25maWc7XG4gICAgfVxuXG4gICAgc2V0VHlwZVNlbGVjdEFkZHJlc3MgPSAodHlwZTogdHlwZVNlbGVjdEFkZHJlc3MpID0+IHtcbiAgICAgICAgdGhpcy5tb2RlU2VsZWN0QWRkcmVzcyA9IHR5cGUgJiYgdHlwZSB8fCAnTE9BRF9BRERSRVNTX0FORF9TRUxFQ1RJT04nXG4gICAgfVxuXG4gICAgc2V0VHlwZUZvcm1zID0gKHR5cGU6IHR5cGVGb3JtcykgPT4ge1xuICAgICAgICB0aGlzLnR5cGVGb3JtcyA9IHR5cGUgJiYgdHlwZSB8fCAnQVJHJ1xuICAgIH1cbn1cbiJdfQ==
|
|
395
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NoZWNrb3V0L2FkZHJlc3Npbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQVFqRTtJQUF1QyxxQ0FBVztJQWlCOUMsMkJBQW9CLFVBQTZCLEVBQVUsTUFBaUIsRUFBVSxXQUF3QixFQUFVLGVBQWdDLEVBQzVJLGdCQUFrQyxFQUFVLGFBQW1DO1FBRDNGLFlBRUksa0JBQU0sZUFBZSxDQUFDLFNBYXpCO1FBZm1CLGdCQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUFVLFlBQU0sR0FBTixNQUFNLENBQVc7UUFBVSxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLHFCQUFlLEdBQWYsZUFBZSxDQUFp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QyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3RDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDckMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7NEJBQ3RFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNwRCxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDOzRCQUN0QixjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDOzRCQUN4QixNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDN0QsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUMxQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzs0QkFDL0IsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUMzQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzs0QkFDbkMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQ2xDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQzt5QkFDZDt3QkFDRCxXQUFXLEVBQUU7NEJBQ1QsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUN0QyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFD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OzRCQUNSLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDdEMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUNyQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs0QkFDdEUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3BELFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDekMsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUMzQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDN0QsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUMxQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzs0QkFDL0IsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUMzQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzs0QkFDbkMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO3lCQUNkO3dCQUNELFdBQVcsRUFBRTs0QkFDVCxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3RDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDckMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7NEJBQ3RFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNwRCxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3pDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDM0MsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzdELFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDMUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQy9CLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDM0MsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQzt5QkFDZDtxQkFDSjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7d0JBQ3hELFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO3dCQUN2RCxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTt3QkFDMUQsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7d0JBQ3BELFlBQVksRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSSxDQUFDLGFBQWEsRUFBQzt3QkFDMUUsY0FBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7d0JBQzdELE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO3dCQUNyRCxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTt3QkFDMUQsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7d0JBQ25ELFlBQVksRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO3dCQUMzRCxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTt3QkFDdkQsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7d0JBQ3RELEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO3FCQUN4RDtp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SSxDQUFDLGFBQWEsQ0FBQyxjQUFjO2FBQzVCLFNBQVMsQ0FBQyxVQUFBLEdBQUc7O1lBQ1YsS0FBSSxDQUFDLGtCQUFrQixTQUFHLEdBQUcsMENBQUUsa0JBQWtCLENBQUM7WUFDbEQsS0FBSSxDQUFDLG9CQUFvQixPQUFDLEdBQUcsMENBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQzs7SUFDWCxDQUFDO0lBRUQsb0NBQVEsR0FBUjtJQUVBLENBQUM7O2dCQW5CK0IsaUJBQWlCO2dCQUFrQixTQUFTO2dCQUF1QixXQUFXO2dCQUEyQixlQUFlO2dCQUMxSCxnQkFBZ0I7Z0JBQXlCLG9CQUFvQjs7O0lBbEJsRixpQkFBaUI7UUFIN0IsVUFBVSxDQUFDO1lBQ1IsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQztPQUNXLGlCQUFpQixDQTRTN0I7NEJBOVREO0NBOFRDLEFBNVNELENBQXVDLFdBQVcsR0E0U2pEO1NBNVNZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RlcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0L3N0ZXAtc2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uL3BhcmFtZXRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENoYW5uZWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC1jb25maWcuc2VydmljZSc7XG5cbnR5cGUgdHlwZUZvcm1zID0gJ0VVUicgfCAnQVJHJztcbnR5cGUgdHlwZVNlbGVjdEFkZHJlc3MgPSAnT05MWV9MT0FEX0FERFJFU1MnIHwgJ09OTFlfQUREUkVTU19TRUxFQ1RJT04nIHwgJ0xPQURfQUREUkVTU19BTkRfU0VMRUNUSU9OJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBZGRyZXNzaW5nU2VydmljZSBleHRlbmRzIFN0ZXBTZXJ2aWNlIHtcblxuICAgIGJhc2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvJyArICdjaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKTtcbiAgICBjb3VudHJpZXNBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY291bnRyaWVzJztcbiAgICB6b25lc0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy96b25lcyc7XG4gICAgcHJvdmluY2VzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL3Byb3ZpbmNlcyc7XG4gICAgcHV0QWRkcmVzc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9hZGRyZXNzJztcbiAgICBhZGRyZXNzQm9va0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9hZGRyZXNzLWJvb2snO1xuICAgIGhlYWRxdWFydGVyQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsnL2hlYWRxdWFydGVyJztcblxuICAgIHB1YmxpYyB0eXBlRm9ybXM6IHR5cGVGb3JtcyA9ICdBUkcnO1xuICAgIHB1YmxpYyBtb2RlU2VsZWN0QWRkcmVzczogdHlwZVNlbGVjdEFkZHJlc3MgPSAnTE9BRF9BRERSRVNTX0FORF9TRUxFQ1RJT04nO1xuICAgIHB1YmxpYyBjb3VudHJpZXNMaXN0ID0gW107XG4gICAgcHVibGljIGRvY3VtZW50VHlwZXMgPSBbXTtcbiAgICBwdWJsaWMgcHJvdmluY2VMaXN0ID0gW107XG4gICAgcHVibGljIGNoZWNrb3V0Tm90ZXNGaWVsZDogJ3Nob3cnfCdyZXF1aXJlZCd8J2hpZGUnfHVuZGVmaW5lZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsIHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMsIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLCBwcml2YXRlIGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsIHByaXZhdGUgY2hhbm5lbENvbmZpZzogQ2hhbm5lbENvbmZpZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoY2hlY2tvdXRTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5nZXRBZGRyZXNzaW5nRGF0YSgpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50VHlwZXMgPSAocmVzLmZpbmQocGFpc2VzID0+IHRoaXMuY29uc3RzLmdldExvY2FsZSgpLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMocGFpc2VzLmNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKSkpKT8uZG9jdW1lbnRUeXBlcyB8fCBbXVxuICAgICAgICAgICAgICAgIHRoaXMucHJvdmluY2VMaXN0ID0gKHJlcy5maW5kKHBhaXNlcyA9PiB0aGlzLmNvbnN0cy5nZXRMb2NhbGUoKS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHBhaXNlcy5jb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkpKSk/LnByb3ZpbmNlcyB8fCBbXVxuICAgICAgICAgICAgICAgIHRoaXMuY291bnRyaWVzTGlzdCA9IHJlc1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLmNoYW5uZWxDb25maWcuY2hhbm5lbENvbmZpZyRcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoY2ZnID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0Tm90ZXNGaWVsZCA9IGNmZz8uY2hlY2tvdXROb3Rlc0ZpZWxkO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VHlwZVNlbGVjdEFkZHJlc3MoY2ZnPy5oZWFkcXVhcnRlclNlbGVjdGlvbk9ubHkpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG5cbiAgICB9XG5cbiAgICBnZXRBZGRyZXNzaW5nRGF0YSA9IGFzeW5jICgpID0+XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5jb3VudHJpZXNBcGkoKSkucGlwZShtYXAocmVzID0+IHJlcz8uX2VtYmVkZGVkPy5pdGVtcykpLnRvUHJvbWlzZSgpO1xuXG4gICAgZ2V0QWRkcmVzc0Jvb2sgPSBhc3luYyAoKSA9PlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuYWRkcmVzc0Jvb2tBcGkoKSkucGlwZShtYXAocmVzID0+IHJlcz8ubGVuZ3RoICYmIHJlcy5tYXAoYWRkcmVzID0+IHsgcmV0dXJuIGFkZHJlcyAmJiB7IC4uLmFkZHJlcywgc2VsZWN0ZWQ6IGFkZHJlcy5kZWZhdWx0IH0gfSkgfHwgbnVsbCApKS50b1Byb21pc2UoKTtcblxuICAgIHNldEhlYWRxdWFydGVyID0gKHNlZGU6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuY2FuTXV0YXRlQ2FydCgpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgY29uc3QgY2FydENvbnRleHQgPSB0aGlzLmNhcnRTZXJ2aWNlLmNhcHR1cmVDYXJ0UmVzcG9uc2VDb250ZXh0KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMuaGVhZHF1YXJ0ZXJBcGkoKSwgc2VkZS5zZWxlY3RlZClcbiAgICAgICAgICAgIC5waXBlKG1hcChvcmRlciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmlzQ2FydFJlc3BvbnNlQ29udGV4dEN1cnJlbnQoY2FydENvbnRleHQpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FydFNlcnZpY2UuaXNDYXJ0QnVzaW5lc3NFcnJvcihvcmRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jaGFuZ2VIYXZlVG9VcGRhdGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5hcHBseUNhcnRSZXNwb25zZShvcmRlciwgY2FydENvbnRleHQsIGZhbHNlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEob3JkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnNldENoZWNrb3V0Tm90ZXMoc2VkZT8uc2VsZWN0ZWQ/Lm5vdGVzIHx8ICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0ZXBSZWFkeShzZWRlLCBvcmRlcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uc3RzLmdldENoZWNrb3V0VmlldygpID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5wcmVmZXRjaFBheW1lbnRNZXRob2RzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3BheW1lbnRfaW5mbycsIG9yZGVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXI7XG4gICAgICAgICAgICB9KSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgICAgICByZXMgPT4gcmVzLFxuICAgICAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVyciwgY2FydENvbnRleHQudG9rZW4pKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0KG5ldyBFcnJvcihlcnIuZXJyb3IpKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpXG4gICAgfVxuXG4gICAgc2V0SGVhZHF1YXJ0ZXJCeUlkcyA9IChkYXRhOiB7IHNoaXBwaW5nQWRkcmVzc0lkOiBudW1iZXIsIGJpbGxpbmdBZGRyZXNzSWQ6IG51bWJlciwgbm90ZXM6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgICAgICBjb25zdCBjYXJ0Q29udGV4dCA9IHRoaXMuY2FydFNlcnZpY2UuY2FwdHVyZUNhcnRSZXNwb25zZUNvbnRleHQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5oZWFkcXVhcnRlckFwaSgpLCBkYXRhKVxuICAgICAgICAgICAgLnBpcGUobWFwKG9yZGVyID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuaXNDYXJ0UmVzcG9uc2VDb250ZXh0Q3VycmVudChjYXJ0Q29udGV4dCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXJ0U2VydmljZS5pc0NhcnRCdXNpbmVzc0Vycm9yKG9yZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNoYW5nZUhhdmVUb1VwZGF0ZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmFwcGx5Q2FydFJlc3BvbnNlKG9yZGVyLCBjYXJ0Q29udGV4dCwgZmFsc2UpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShvcmRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2Uuc2V0Q2hlY2tvdXROb3RlcyhkYXRhPy5ub3RlcyB8fCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGVwUmVhZHkoZGF0YSwgb3JkZXIpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cy5nZXRDaGVja291dFZpZXcoKSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UucHJlZmV0Y2hQYXltZW50TWV0aG9kcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdwYXltZW50X2luZm8nLCBvcmRlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgICAgICAgICAgfSkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHJlcyxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXJ0U2VydmljZS5oYW5kbGVDYXJ0TXV0YXRpb25FcnJvcihlcnIsIGNhcnRDb250ZXh0LnRva2VuKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyLmVycm9yKSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKVxuICAgIH1cblxuICAgIHNldEFkZHJlc3MgPSAodXNlcl9kYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmNhbk11dGF0ZUNhcnQoKSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIGNvbnN0IGNhcnRDb250ZXh0ID0gdGhpcy5jYXJ0U2VydmljZS5jYXB0dXJlQ2FydFJlc3BvbnNlQ29udGV4dCgpO1xuICAgICAgICB1c2VyX2RhdGEubG9jYWxlID0gdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgLy8gc2UgbW9kaWZpY2EgZWwgY8OzZGlnbyBwb3N0YWwgcGFyYSBjYXN0ZWFybG8gYSBTdHJpbmcgYW50ZXMgZGUgZW52aWFybG9cbiAgICAgICAgdXNlcl9kYXRhLnNoaXBwaW5nQWRkcmVzcy5wb3N0Y29kZSA9IHVzZXJfZGF0YS5zaGlwcGluZ0FkZHJlc3MucG9zdGNvZGUudG9TdHJpbmcoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLnB1dEFkZHJlc3NBcGkoKSwgdXNlcl9kYXRhKS5waXBlKG1hcChvcmRlciA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuaXNDYXJ0UmVzcG9uc2VDb250ZXh0Q3VycmVudChjYXJ0Q29udGV4dCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmlzQ2FydEJ1c2luZXNzRXJyb3Iob3JkZXIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jaGFuZ2VIYXZlVG9VcGRhdGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5hcHBseUNhcnRSZXNwb25zZShvcmRlciwgY2FydENvbnRleHQsIGZhbHNlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShvcmRlcik7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5zZXRDaGVja291dE5vdGVzKHVzZXJfZGF0YT8ubm90ZXMgfHwgJycpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGVwUmVhZHkodXNlcl9kYXRhLCBvcmRlcik7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25zdHMuZ2V0Q2hlY2tvdXRWaWV3KCkgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UucHJlZmV0Y2hQYXltZW50TWV0aG9kcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncGF5bWVudF9pbmZvJywgb3JkZXIpO1xuICAgICAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgICAgICB9KSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiByZXMsXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVyciwgY2FydENvbnRleHQudG9rZW4pKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZWplY3QobmV3IEVycm9yKGVyci5lcnJvcikpKVxuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpXG4gICAgfVxuXG4gICAgcHV0QWRkcmVzc0FuZEhhbmRsZSA9ICh1c2VyX2RhdGEsIG5leHQ/LCBvbkVycm9yPykgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuY2FuTXV0YXRlQ2FydCgpKSB7XG4gICAgICAgICAgICBvbkVycm9yICYmIG9uRXJyb3IoeyBlcnJvcjogJ2NhcnQtdW5hdmFpbGFibGUnIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhcnRDb250ZXh0ID0gdGhpcy5jYXJ0U2VydmljZS5jYXB0dXJlQ2FydFJlc3BvbnNlQ29udGV4dCgpO1xuICAgICAgICB1c2VyX2RhdGEubG9jYWxlID0gdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCk7XG4gICAgICAgIGxldCBkYXRhID0geyBzaGlwcGluZ0FkZHJlc3M6IHsgLi4udXNlcl9kYXRhLmRhdGEgfSB9O1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0QWRkcmVzc0FwaSgpLCBkYXRhKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuaXNDYXJ0UmVzcG9uc2VDb250ZXh0Q3VycmVudChjYXJ0Q29udGV4dCkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXJ0U2VydmljZS5pc0NhcnRCdXNpbmVzc0Vycm9yKHJlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvciAmJiBvbkVycm9yKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmFwcGx5Q2FydFJlc3BvbnNlKHJlcywgY2FydENvbnRleHQsIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yICYmIG9uRXJyb3IocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0ZXBSZWFkeSh1c2VyX2RhdGEsIHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncGF5bWVudF9pbmZvJywgcmVzKTtcbiAgICAgICAgICAgICAgICBuZXh0ICYmIG5leHQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVyciwgY2FydENvbnRleHQudG9rZW4pKSByZXR1cm47XG4gICAgICAgICAgICAgICAgb25FcnJvciAmJiBvbkVycm9yKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRUeXBlRm9ybSA9ICgpID0+IHtcbiAgICAgICAgbGV0IGZvcm1zVHlwZUNvZmlnID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvZGU6ICdFVVInLFxuICAgICAgICAgICAgICAgIGNvbmZpZ0Zvcm06IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUFkZHJlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignWzAtOV0rJyldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IFsnJywgW11dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnROdW1iZXI6IFsnJywgW11dLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXJtczogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZXM6IFsnJ11cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybUJpbGxpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJ1swLTldKycpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiBbJycsIFtdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiBbJycsIFtdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2VDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZXM6IFsnJ11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmlld0Zvcm1zOiB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZXM6IHRoaXMuZG9jdW1lbnRUeXBlcyB9LFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudE51bWJlcjogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIGNpdHk6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgcHJvdmluY2VDb2RlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHBvc3Rjb2RlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHRlcm1zOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdGVzOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWVzOiBbXSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnQVJHJyxcbiAgICAgICAgICAgICAgICBjb25maWdGb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1BZGRyZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJ1swLTldKycpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudE51bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlczogWycnXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmb3JtQmlsbGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignWzAtOV0rJyldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0Y29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGVzOiBbJyddXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZpZXdGb3Jtczoge1xuICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IHsgZW5hYmxlZDogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IHRoaXMuZG9jdW1lbnRUeXBlc30sXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHN0cmVldDogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBjaXR5OiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiB0cnVlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlQ29kZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICBwb3N0Y29kZTogeyBlbmFibGVkOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSwgdmFsdWVzOiBbXSB9LFxuICAgICAgICAgICAgICAgICAgICB0ZXJtczogeyBlbmFibGVkOiBmYWxzZSwgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdGVzOiB7IGVuYWJsZWQ6IHRydWUsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWVzOiBbXSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG5cbiAgICAgICAgY29uc3QgdHlwZUNvbmZpZyA9IGZvcm1zVHlwZUNvZmlnLmZpbmQoY3QgPT4gY3QuY29kZSA9PSB0aGlzLnR5cGVGb3Jtcyk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmNoZWNrb3V0Tm90ZXNGaWVsZCkge1xuICAgICAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHR5cGVDb25maWcudmlld0Zvcm1zLm5vdGVzLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMuZW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDogLy8gJ3Nob3cnIG8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMuZW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vdGVWYWxpZGF0b3JzID0gdHlwZUNvbmZpZy52aWV3Rm9ybXMubm90ZXMucmVxdWlyZWRcbiAgICAgICAgICAgID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICBcbiAgICAgICAgKHR5cGVDb25maWcuY29uZmlnRm9ybS5mb3JtQWRkcmVzIGFzIGFueSkubm90ZXMgID0gWyAnJywgbm90ZVZhbGlkYXRvcnMgXTtcbiAgICAgICAgKHR5cGVDb25maWcuY29uZmlnRm9ybS5mb3JtQmlsbGluZyBhcyBhbnkpLm5vdGVzID0gWyAnJywgbm90ZVZhbGlkYXRvcnMgXTtcblxuICAgICAgICByZXR1cm4gdHlwZUNvbmZpZztcbiAgICB9XG5cbiAgICBzZXRUeXBlU2VsZWN0QWRkcmVzcyA9ICh0eXBlOiB0eXBlU2VsZWN0QWRkcmVzcyB8IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5tb2RlU2VsZWN0QWRkcmVzcyA9IHR5cGUgPT09IHRydWVcbiAgICAgICAgICAgID8gJ09OTFlfQUREUkVTU19TRUxFQ1RJT04nXG4gICAgICAgICAgICA6IHR5cGUgPT09IGZhbHNlIHx8ICF0eXBlXG4gICAgICAgICAgICAgICAgPyAnTE9BRF9BRERSRVNTX0FORF9TRUxFQ1RJT04nXG4gICAgICAgICAgICAgICAgOiB0eXBlO1xuICAgIH1cblxuICAgIHNldFR5cGVGb3JtcyA9ICh0eXBlOiB0eXBlRm9ybXMpID0+IHtcbiAgICAgICAgdGhpcy50eXBlRm9ybXMgPSB0eXBlICYmIHR5cGUgfHwgJ0FSRydcbiAgICB9XG59XG4iXX0=
|