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
|
@@ -104,6 +104,9 @@ let ShipmentService = class ShipmentService extends StepService {
|
|
|
104
104
|
};
|
|
105
105
|
this.setMethod = (method) => __awaiter(this, void 0, void 0, function* () {
|
|
106
106
|
var _a, _b;
|
|
107
|
+
if (!this.cartService.canMutateCart())
|
|
108
|
+
return false;
|
|
109
|
+
const cartContext = this.cartService.captureCartResponseContext();
|
|
107
110
|
// Deshabilitar todos los botones
|
|
108
111
|
this.buttonsDisabled = true;
|
|
109
112
|
this.errorSubject.next(null);
|
|
@@ -111,12 +114,25 @@ let ShipmentService = class ShipmentService extends StepService {
|
|
|
111
114
|
this.stateSubject.next({ doing: true, ok: false, data: { method } });
|
|
112
115
|
try {
|
|
113
116
|
const res = yield this.putShipment();
|
|
117
|
+
if (!this.cartService.applyCartResponse(res, cartContext, false)) {
|
|
118
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method } });
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
114
121
|
this.checkoutService.updateAsociatedData(res);
|
|
115
122
|
this.order = res;
|
|
116
123
|
const costs = yield this.getCalculatedCosts();
|
|
124
|
+
if (!this.cartService.canMutateCart()) {
|
|
125
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method } });
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
117
128
|
this.modifyCostsResponse(costs, (_b = (_a = this.getUserData()) === null || _a === void 0 ? void 0 : _a.shippingAddress) === null || _b === void 0 ? void 0 : _b.postcode, method);
|
|
118
129
|
}
|
|
119
130
|
catch (err) {
|
|
131
|
+
if (this.cartService.handleCartMutationError(err, cartContext.token)) {
|
|
132
|
+
this.errorSubject.next(null);
|
|
133
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method } });
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
120
136
|
console.error(err);
|
|
121
137
|
this.errorSubject.next('operation-error');
|
|
122
138
|
throw new Error(err.error);
|
|
@@ -127,46 +143,81 @@ let ShipmentService = class ShipmentService extends StepService {
|
|
|
127
143
|
}
|
|
128
144
|
});
|
|
129
145
|
this.setMethodOnly = (method) => __awaiter(this, void 0, void 0, function* () {
|
|
146
|
+
if (!this.cartService.canMutateCart())
|
|
147
|
+
return false;
|
|
148
|
+
const cartContext = this.cartService.captureCartResponseContext();
|
|
130
149
|
this.errorSubject.next(null);
|
|
131
150
|
this.stateSubject.next({ doing: true, ok: false, data: { method } });
|
|
132
151
|
try {
|
|
133
152
|
const res = yield this.putShipment();
|
|
153
|
+
if (!this.cartService.applyCartResponse(res, cartContext, false)) {
|
|
154
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method } });
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
134
157
|
this.checkoutService.updateAsociatedData(res);
|
|
135
158
|
this.order = res;
|
|
136
159
|
}
|
|
137
160
|
catch (err) {
|
|
161
|
+
if (this.cartService.handleCartMutationError(err, cartContext.token)) {
|
|
162
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method } });
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
138
165
|
console.error(err);
|
|
139
166
|
this.errorSubject.next('operation-error');
|
|
140
167
|
throw new Error(err.error);
|
|
141
168
|
}
|
|
142
169
|
});
|
|
143
170
|
this.setShippingOption = (payload, stepData = payload) => __awaiter(this, void 0, void 0, function* () {
|
|
171
|
+
if (!this.cartService.canMutateCart())
|
|
172
|
+
return false;
|
|
173
|
+
const cartContext = this.cartService.captureCartResponseContext();
|
|
144
174
|
this.errorSubject.next(null);
|
|
145
175
|
try {
|
|
146
176
|
const sanitizedPayload = this.stripFrontendOnlyShippingFields(payload);
|
|
147
177
|
const res = yield this.connection.put(this.putShippingOptionApi(), sanitizedPayload).toPromise();
|
|
178
|
+
if (!this.cartService.applyCartResponse(res, cartContext, false))
|
|
179
|
+
return false;
|
|
148
180
|
this.checkoutService.updateAsociatedData(res);
|
|
149
181
|
this.order = res;
|
|
150
182
|
return this.setStepReady(stepData, res);
|
|
151
183
|
}
|
|
152
184
|
catch (err) {
|
|
185
|
+
if (this.cartService.handleCartMutationError(err, cartContext.token)) {
|
|
186
|
+
this.errorSubject.next(null);
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
153
189
|
console.error(err);
|
|
154
190
|
this.errorSubject.next('operation-error');
|
|
155
191
|
throw new Error(err.error);
|
|
156
192
|
}
|
|
157
193
|
});
|
|
158
194
|
this.putShipment = () => this.connection.put(this.putShipmentApi(), { method: this.stateSubject.getValue().data.method }).toPromise();
|
|
159
|
-
this.getCalculatedCosts = () => this.connection.
|
|
195
|
+
this.getCalculatedCosts = () => this.connection.getErrorNotHandler(this.calculatedCostsApi()).toPromise().catch(error => {
|
|
196
|
+
if (this.cartService.handleCartMutationError(error, this.cartService.getCartToken()))
|
|
197
|
+
return null;
|
|
198
|
+
return null;
|
|
199
|
+
});
|
|
160
200
|
this.setContract = (contract) => __awaiter(this, void 0, void 0, function* () {
|
|
201
|
+
if (!this.cartService.canMutateCart())
|
|
202
|
+
return false;
|
|
203
|
+
const cartContext = this.cartService.captureCartResponseContext();
|
|
161
204
|
const stepData = Object.assign(Object.assign({}, contract), this.otherParamsForContract(contract));
|
|
162
205
|
const data = this.stripFrontendOnlyShippingFields(stepData);
|
|
163
206
|
return yield this.connection.put(this.putContractApi(), data)
|
|
164
207
|
.toPromise().then(order => {
|
|
208
|
+
if (!this.cartService.applyCartResponse(order, cartContext, false))
|
|
209
|
+
return false;
|
|
165
210
|
// this.analyticsService.callEvent('shipping_info', order);
|
|
166
211
|
return this.setStepReady(stepData, order);
|
|
167
212
|
}, err => {
|
|
213
|
+
if (this.cartService.handleCartMutationError(err, cartContext.token))
|
|
214
|
+
return undefined;
|
|
168
215
|
return new Promise((resolve, reject) => reject(new Error(err.error)));
|
|
169
|
-
}).catch(err =>
|
|
216
|
+
}).catch(err => {
|
|
217
|
+
if (this.cartService.handleCartMutationError(err, cartContext.token))
|
|
218
|
+
return undefined;
|
|
219
|
+
return console.error(err);
|
|
220
|
+
});
|
|
170
221
|
});
|
|
171
222
|
// UTILS
|
|
172
223
|
/**
|
|
@@ -325,4 +376,4 @@ ShipmentService = __decorate([
|
|
|
325
376
|
Injectable()
|
|
326
377
|
], ShipmentService);
|
|
327
378
|
export { ShipmentService };
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9zaGlwbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFnQyxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsSUFBSSxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUd6RixJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFnQixTQUFRLFdBQVc7SUFpQzVDLFlBQW9CLFVBQTZCLEVBQVUsV0FBb0MsRUFBVSxvQkFBaUQsRUFBVSxnQkFBa0MsRUFDMUwsTUFBaUIsRUFBVSxXQUF3QixFQUFVLGFBQTRCLEVBQVUsZUFBZ0M7UUFDM0ksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRlAsZUFBVSxHQUFWLFVBQVUsQ0FB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OEMsRUFBOUMsRUFBRSxhQUFhLE9BQStCLEVBQTdCLG9DQUE2QixDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FnQ0osQ0FBQTtBQWxURzs7R0FFRztBQUNXLGdDQUFnQixHQUFHLEtBQUssQ0FBQzs7WUFZUCxpQkFBaUI7WUFBdUIsdUJBQXVCO1lBQWdDLDJCQUEyQjtZQUE0QixnQkFBZ0I7WUFDbEwsU0FBUztZQUF1QixXQUFXO1lBQXlCLGFBQWE7WUFBMkIsZUFBZTs7QUFsQ3RJLGVBQWU7SUFEM0IsVUFBVSxFQUFFO0dBQ0EsZUFBZSxDQW9VM0I7U0FwVVksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBDaGVja291dFByb2Nlc3NTdGF0ZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2hlY2tvdXQtcHJvY2Vzcy1zdGF0ZSc7XG5pbXBvcnQgeyBTaGlwbWVudERhdGFUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL3V0aWxzL3NoaXBtZW50LXRyYW5zZm9ybWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3Jlc1NlcnZpY2UgfSBmcm9tICcuLi9zdG9yZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RlcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0L3N0ZXAtc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBTaGlwcGluZ09wdGlvbkNvbnRyYWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zaGlwcGluZy1vcHRpb24nO1xuaW1wb3J0IHsgU2hpcHBpbmdQcmljZURpc3BsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2hpcHBpbmctcHJpY2UtZGlzcGxheS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNoaXBtZW50U2VydmljZSBleHRlbmRzIFN0ZXBTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgc3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGVja291dFByb2Nlc3NTdGF0ZT4oeyBkb2luZzogZmFsc2UsIG9rOiBmYWxzZSwgZGF0YTogbnVsbCB9KTtcbiAgICBwcml2YXRlIG1ldGhvZHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcbiAgICBwcml2YXRlIGNvc3RzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSk7XG4gICAgcHJpdmF0ZSBlcnJvclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljIGJ1dHRvbnNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBvcmRlcjtcblxuICAgIHByaXZhdGUgYmFzZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy8nICsgJ2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpO1xuXG4gICAgcHVibGljIHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIG1ldGhvZHMgPSB0aGlzLm1ldGhvZHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBjb3N0cyA9IHRoaXMuY29zdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBlcnJvciQgPSB0aGlzLmVycm9yU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG1vcmVJbmZvSW5NZXRob2QgcG9yIGRlZmVjdG8gc3UgZXN0YWRvIGVzIGZhbHNlLCBzaSBzZSBkZXNlYSBxdWUgdmlzdWFsaWNlIGluZm9ybWFjacOzbiBhZGljaW9uYWwgZGUgY2FkYSBtw6l0b2RvIGRlIGVudmnDsyBhc2lnbmFyIHRydWUuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBtb3JlSW5mb0luTWV0aG9kID0gZmFsc2U7XG5cblxuICAgIHB1YmxpYyBzaGlwbWVudE1ldGhvZHNBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvc2hpcHBpbmcnO1xuICAgIHB1YmxpYyBzaGlwcGluZ09wdGlvbnNBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvc2hpcHBpbmctb3B0aW9ucyc7XG4gICAgcHVibGljIHB1dFNoaXBwaW5nT3B0aW9uQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3NoaXBwaW5nLW9wdGlvbic7XG5cbiAgICBwdWJsaWMgcGVyc2lzdFNoaXBtZW50QXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2FuZHJlYW5pLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9zaGlwJztcbiAgICBwdWJsaWMgcHV0U2hpcG1lbnRBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvc2hpcHBpbmcvJyArIHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCkuZGF0YS5tZXRob2Q7XG4gICAgcHVibGljIHB1dENvbnRyYWN0QXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9zaGlwcGluZy1jb250cmFjdCc7XG4gICAgcHVibGljIGNhbGN1bGF0ZWRDb3N0c0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jYXJ0cy8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvbXVsdGlwbGUtZXN0aW1hdGVkLXNoaXBwaW5nLWNvc3QnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSwgcHJpdmF0ZSB0cmFuc2Zvcm1lcjogU2hpcG1lbnREYXRhVHJhbnNmb3JtZXIsIHByaXZhdGUgc2hpcHBpbmdQcmljZURpc3BsYXk6IFNoaXBwaW5nUHJpY2VEaXNwbGF5U2VydmljZSwgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLCBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHJpdmF0ZSBzdG9yZXNTZXJ2aWNlOiBTdG9yZXNTZXJ2aWNlLCBwcml2YXRlIGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGNoZWNrb3V0U2VydmljZSk7XG4gICAgfVxuXG4gICAgZ2V0U2hpcG1lbnRNZXRob2RzID0gKCkgPT4ge1xuICAgICAgICAvLyB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuc2hpcG1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgIC8vICAgICByZXMgPT4gdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KHRoaXMucmVzcG9uc2VUb0xpc3QocmVzKSlcbiAgICAgICAgLy8gKS5jYXRjaChlcnIgPT4gdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKSlcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodGhpcy5zaGlwbWVudE1ldGhvZHNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMucmVzcG9uc2VUb0xpc3QocmVzKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQobGlzdClcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSlcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldFNoaXBwaW5nT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uc3RzLmdldENoZWNrb3V0VmlldygpICE9PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodGhpcy5zaGlwcGluZ09wdGlvbnNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMubm9ybWFsaXplU2hpcHBpbmdPcHRpb25zKHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KGxpc3QubWFwKGVudHJ5ID0+IGVudHJ5Lm1ldGhvZCkuZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0pXG4gICAgfVxuXG5cbiAgICBzZXRNZXRob2QgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIC8vIERlc2hhYmlsaXRhciB0b2RvcyBsb3MgYm90b25lc1xuICAgICAgICB0aGlzLmJ1dHRvbnNEaXNhYmxlZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5jb3N0c1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogdHJ1ZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnB1dFNoaXBtZW50KCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKHJlcyk7XG4gICAgICAgICAgICB0aGlzLm9yZGVyID0gcmVzO1xuICAgICAgICAgICAgY29uc3QgY29zdHMgPSBhd2FpdCB0aGlzLmdldENhbGN1bGF0ZWRDb3N0cygpO1xuICAgICAgICAgICAgdGhpcy5tb2RpZnlDb3N0c1Jlc3BvbnNlKGNvc3RzLCB0aGlzLmdldFVzZXJEYXRhKCk/LnNoaXBwaW5nQWRkcmVzcz8ucG9zdGNvZGUsIG1ldGhvZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLmVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIC8vIEhhYmlsaXRhciB0b2RvcyBsb3MgYm90b25lc1xuICAgICAgICAgICAgdGhpcy5idXR0b25zRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldE1ldGhvZE9ubHkgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogdHJ1ZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wdXRTaGlwbWVudCgpO1xuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShyZXMpO1xuICAgICAgICAgICAgdGhpcy5vcmRlciA9IHJlcztcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIuZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0U2hpcHBpbmdPcHRpb24gPSBhc3luYyAoXG4gICAgICAgIHBheWxvYWQ6IHsgbWV0aG9kOiBzdHJpbmc7IG9wdGlvbjogc3RyaW5nOyBjb250cmFjdDogc3RyaW5nOyBwcmljZTogbnVtYmVyOyBvcmlnaW5hbFByaWNlPzogbnVtYmVyIHwgbnVsbCB9LFxuICAgICAgICBzdGVwRGF0YTogYW55ID0gcGF5bG9hZFxuICAgICkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc2FuaXRpemVkUGF5bG9hZCA9IHRoaXMuc3RyaXBGcm9udGVuZE9ubHlTaGlwcGluZ0ZpZWxkcyhwYXlsb2FkKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5wdXRTaGlwcGluZ09wdGlvbkFwaSgpLCBzYW5pdGl6ZWRQYXlsb2FkKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEocmVzKTtcbiAgICAgICAgICAgIHRoaXMub3JkZXIgPSByZXM7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGVwUmVhZHkoc3RlcERhdGEsIHJlcyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLmVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHV0U2hpcG1lbnQgPSAoKSA9PiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0U2hpcG1lbnRBcGkoKSwgeyBtZXRob2Q6IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCkuZGF0YS5tZXRob2QgfSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDYWxjdWxhdGVkQ29zdHMgPSAoKSA9PiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY2FsY3VsYXRlZENvc3RzQXBpKCkpLnRvUHJvbWlzZSgpO1xuXG4gICAgc2V0Q29udHJhY3QgPSBhc3luYyAoY29udHJhY3Q6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBzdGVwRGF0YSA9IHsgLi4uY29udHJhY3QsIC4uLnRoaXMub3RoZXJQYXJhbXNGb3JDb250cmFjdChjb250cmFjdCkgfTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc3RyaXBGcm9udGVuZE9ubHlTaGlwcGluZ0ZpZWxkcyhzdGVwRGF0YSk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0Q29udHJhY3RBcGkoKSwgZGF0YSlcbiAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICBvcmRlciA9PiB7XG4gICAgICAgICAgICAgICAvLyAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2hpcHBpbmdfaW5mbycsIG9yZGVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGVwUmVhZHkoc3RlcERhdGEsIG9yZGVyKX0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZWplY3QobmV3IEVycm9yKGVyci5lcnJvcikpKVxuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpXG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uICYmIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLy8gVVRJTFNcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZXNwb25zZSBEZSBhcGkgZGUgc29saWNpdHVkIGRlIGNvc3RvcyBwb3IgbWV0b2RvIGRlIGVudsOtbyBzZWxlY2Npb25hZG9cbiAgICAgKiBAcGFyYW0gcG9zdF9jb2RlIEluZGljYWRvIGVuIGVsIHBhc28gZGUgQWRkcmVzc2luZyAoZGF0b3MgcGVyc29uYWxlcyB5IGRlIGZhY3R1cmFjacOzbilcbiAgICAgKiBAcGFyYW0gbWV0aG9kIE1ldG9kbyBkZSBlbnbDrW8gc2VsZWNjaW9uYWRvXG4gICAgICovXG4gICAgbW9kaWZ5Q29zdHNSZXNwb25zZSA9IGFzeW5jIChyZXNwb25zZSwgcG9zdF9jb2RlLCBtZXRob2QpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2UubXVsdGlwbGVQcmljZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5jb3N0c1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29zdHMgPSBhd2FpdCB0aGlzLmJ1aWxkQ29zdHNGcm9tUmVzcG9uc2UocmVzcG9uc2UsIG1ldGhvZCk7XG4gICAgICAgIHRoaXMuY29zdHNTdWJqZWN0Lm5leHQoY29zdHMpO1xuICAgIH1cblxuICAgIGJ1aWxkQ29zdHNGcm9tUmVzcG9uc2UgPSBhc3luYyAocmVzcG9uc2UsIG1ldGhvZCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZT8ubXVsdGlwbGVQcmljZXMgfHwgW107XG4gICAgICAgIGxldCBicmFuY2hfZGVsaXZlcnkgPSByZXN1bHQuZmluZEluZGV4KHN1Ym1ldGhvZCA9PiBzdWJtZXRob2QubmFtZSA9PSAnYnJhbmNoX2RlbGl2ZXJ5Jyk7XG4gICAgICAgIGlmIChicmFuY2hfZGVsaXZlcnkgIT0gLTEpIHtcbiAgICAgICAgICAgIHJlc3VsdFticmFuY2hfZGVsaXZlcnldLmNvbnRyYWN0cyA9IHJlc3VsdFticmFuY2hfZGVsaXZlcnldLmNvbnRyYWN0cy5tYXAoY29udHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDb250cmFjdCA9IHRoaXMubm9ybWFsaXplU2hpcHBpbmdDb250cmFjdChjb250cmFjdCk7XG4gICAgICAgICAgICAgICAgbGV0IGJyYW5jaF9wcm9wZXJ0eSA9IGNvbnRyYWN0LmJyYW5jaF9wcm9wZXJ0eSB8fCB7fTtcbiAgICAgICAgICAgICAgICBsZXQgYWRkcmVzc19kYXRhID0gYnJhbmNoX3Byb3BlcnR5LmFkZHJlc3MgfHwge307XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJhY3Q6ICdicmFuY2hfZGVsaXZlcnknLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBub3JtYWxpemVkQ29udHJhY3QubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IG5vcm1hbGl6ZWRDb250cmFjdC5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxQcmljZTogbm9ybWFsaXplZENvbnRyYWN0Lm9yaWdpbmFsUHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIC4uLmFkZHJlc3NfZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYnJhbmNoX3Byb3BlcnR5LFxuICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDogKGFkZHJlc3NfZGF0YS5zdHJlZXQgfHwgJycpICsgJyBOwrAgJyArIChhZGRyZXNzX2RhdGEubnVtYmVyIHx8ICcnKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWV0aG9kLmluY2x1ZGVzKCdwaWNrdXBfc3RvcmUnKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVzID0gYXdhaXQgdGhpcy5zdG9yZXNTZXJ2aWNlLnN0b3Jlcy5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgaWYgKHN0b3JlcyAmJiBzdG9yZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmZvckVhY2gocGlja3VwX3N0b3JlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGlja3VwX3N0b3JlLmNvbnRyYWN0cy5mb3JFYWNoKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRfc3RvcmUgPSBzdG9yZXMuZmluZChzdG9yZSA9PiBzdG9yZS5jb2RlID09IGNvbnRyYWN0Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50X3N0b3JlKSBjb250cmFjdC5kZXRhaWwgPSAnU2luIGluZm9ybWFjacOzbic7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbnRyYWN0LmRldGFpbCA9IGN1cnJlbnRfc3RvcmUubmFtZSArICcgLSAnICsgY3VycmVudF9zdG9yZS5hZGRyZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyYWN0O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRDb3N0c0Zvck1ldGhvZCA9IGFzeW5jIChtZXRob2QpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7IGRvaW5nOiB0cnVlLCBvazogZmFsc2UsIGRhdGE6IHsgbWV0aG9kIH0gfSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHV0U2hpcG1lbnQoKTtcbiAgICAgICAgcmVzICYmIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEocmVzKTtcbiAgICAgICAgY29uc3QgY29zdHMgPSBhd2FpdCB0aGlzLmdldENhbGN1bGF0ZWRDb3N0cygpO1xuICAgICAgICBpZiAoIWNvc3RzIHx8ICFjb3N0cy5tdWx0aXBsZVByaWNlcykge1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGRDb3N0c0Zyb21SZXNwb25zZShjb3N0cywgbWV0aG9kKTtcbiAgICB9XG5cbiAgICByZXNwb25zZVRvTGlzdCA9IChyZXNwb25zZSkgPT5cbiAgICAgICAgKHJlc3BvbnNlLnNoaXBtZW50cyAmJiByZXNwb25zZS5zaGlwbWVudHMubGVuZ3RoID4gMCkgJiYgT2JqZWN0LmtleXMocmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHNba2V5XSk7XG5cbiAgICByZXNwb25zZVRvU2hpcHBpbmdPcHRpb25zID0gKHJlc3BvbnNlKSA9PlxuICAgICAgICAocmVzcG9uc2Uuc2hpcG1lbnRzICYmIHJlc3BvbnNlLnNoaXBtZW50cy5sZW5ndGggPiAwKSAmJiBPYmplY3Qua2V5cyhyZXNwb25zZS5zaGlwbWVudHNbMF0ubWV0aG9kcykubWFwKGtleSA9PiByZXNwb25zZS5zaGlwbWVudHNbMF0ubWV0aG9kc1trZXldKTtcblxuICAgIHByaXZhdGUgYXN5bmMgbm9ybWFsaXplU2hpcHBpbmdPcHRpb25zKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLnJlc3BvbnNlVG9TaGlwcGluZ09wdGlvbnMocmVzcG9uc2UpIHx8IFtdO1xuICAgICAgICBsZXQgc3RvcmVzID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBsaXN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXRob2RDb2RlID0gZW50cnk/Lm1ldGhvZD8uY29kZSB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBlbnRyeT8ub3B0aW9ucyB8fCBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cmFjdHMgPSBvcHRpb24/LmNvbnRyYWN0cyB8fCBbXTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uPy5uYW1lID09PSAnYnJhbmNoX2RlbGl2ZXJ5Jykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb24uY29udHJhY3RzID0gY29udHJhY3RzLm1hcChjb250cmFjdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkQ29udHJhY3QgPSB0aGlzLm5vcm1hbGl6ZVNoaXBwaW5nQ29udHJhY3QoY29udHJhY3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYnJhbmNoID0gY29udHJhY3Q/LmJyYW5jaF9wcm9wZXJ0eSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBicmFuY2guYWRkcmVzcyB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmVldCA9IGFkZHJlc3Muc3RyZWV0IHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyID0gYWRkcmVzcy5udW1iZXIgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wdXRlZCA9IFtzdHJlZXQsIG51bWJlciA/IGBOwrAgJHtudW1iZXJ9YCA6ICcnXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jb250cmFjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ub3JtYWxpemVkQ29udHJhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5icmFuY2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3Q6IGNvbnRyYWN0Py5jb250cmFjdCB8fCBvcHRpb24ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb250cmFjdD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogbm9ybWFsaXplZENvbnRyYWN0LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsUHJpY2U6IG5vcm1hbGl6ZWRDb250cmFjdC5vcmlnaW5hbFByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkOiBjb21wdXRlZCB8fCBjb250cmFjdC5jb21wdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtZXRob2RDb2RlLmluY2x1ZGVzKCdwaWNrdXBfc3RvcmUnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0b3Jlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVzID0gYXdhaXQgdGhpcy5zdG9yZXNTZXJ2aWNlLnN0b3Jlcy5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG9yZXMgJiYgc3RvcmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmNvbnRyYWN0cyA9IGNvbnRyYWN0cy5tYXAoY29udHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdG9yZSA9IHN0b3Jlcy5maW5kKHN0b3JlID0+IHN0b3JlLmNvZGUgPT0gY29udHJhY3QubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50U3RvcmUpIHJldHVybiB7IC4uLmNvbnRyYWN0LCBkZXRhaWw6ICdTaW4gaW5mb3JtYWNpw7NuJyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmNvbnRyYWN0LCBkZXRhaWw6IGN1cnJlbnRTdG9yZS5uYW1lICsgJyAtICcgKyBjdXJyZW50U3RvcmUuYWRkcmVzcyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3JtYWxpemVTaGlwcGluZ0NvbnRyYWN0KGNvbnRyYWN0OiBTaGlwcGluZ09wdGlvbkNvbnRyYWN0IHwgYW55KTogU2hpcHBpbmdPcHRpb25Db250cmFjdCB7XG4gICAgICAgIGNvbnN0IHByaWNlID0gdGhpcy5zaGlwcGluZ1ByaWNlRGlzcGxheS5ub3JtYWxpemVQcmljZVZhbHVlKGNvbnRyYWN0Py5wcmljZSk7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsUHJpY2UgPSB0aGlzLnNoaXBwaW5nUHJpY2VEaXNwbGF5Lm5vcm1hbGl6ZVByaWNlVmFsdWUoY29udHJhY3Q/Lm9yaWdpbmFsUHJpY2UpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29udHJhY3QsXG4gICAgICAgICAgICBwcmljZTogcHJpY2UgIT09IG51bGwgPyBwcmljZSA6IGNvbnRyYWN0Py5wcmljZSxcbiAgICAgICAgICAgIG9yaWdpbmFsUHJpY2U6IG9yaWdpbmFsUHJpY2UgIT09IG51bGwgPyBvcmlnaW5hbFByaWNlIDogY29udHJhY3Q/Lm9yaWdpbmFsUHJpY2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0cmlwRnJvbnRlbmRPbmx5U2hpcHBpbmdGaWVsZHM8VCBleHRlbmRzIHsgb3JpZ2luYWxQcmljZT86IGFueSB9PihkYXRhOiBUKTogT21pdDxULCAnb3JpZ2luYWxQcmljZSc+IHtcbiAgICAgICAgY29uc3QgeyBvcmlnaW5hbFByaWNlLCAuLi5yZXN0IH0gPSBkYXRhIHx8ICh7fSBhcyBUKTtcbiAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgfVxuXG4gICAgb3RoZXJQYXJhbXNGb3JDb250cmFjdCA9IChjb250cmFjdCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hpcHBpbmdfbWV0aG9kX2NvbnRyYWN0OlxuICAgICAgICAgICAgICAgIGNvbnRyYWN0LnNoaXBwaW5nX21ldGhvZF9jb250cmFjdFxuICAgICAgICAgICAgICAgICAgICA/IGNvbnRyYWN0LnNoaXBwaW5nX21ldGhvZF9jb250cmFjdFxuICAgICAgICAgICAgICAgICAgICA6IGNvbnRyYWN0LmNvbnRyYWN0ICsgJ18nICsgY29udHJhY3QubmFtZSxcbiAgICAgICAgICAgIHNoaXBwaW5nX21ldGhvZF9icmFuY2hfY29kZTpcbiAgICAgICAgICAgICAgICBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGVcbiAgICAgICAgICAgICAgICAgICAgPyBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGVcbiAgICAgICAgICAgICAgICAgICAgOiAoY29udHJhY3QuY29udHJhY3QgJiYgY29udHJhY3QuY29udHJhY3QgPT0gXCJicmFuY2hfZGVsaXZlcnlcIikgPyBjb250cmFjdC5udW1iZXIgOiBjb250cmFjdC5uYW1lXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRCcmFuY2hPZmZpY2VzID0gKG1ldGhvZCkgPT4gdGhpcy5jb25uZWN0aW9uLmdldE91dHNpZGVyKHRoaXMudHJhbnNmb3JtZXIuZ2V0QXBpKG1ldGhvZC50b0xvd2VyQ2FzZSgpKSkudG9Qcm9taXNlKCk7XG5cbiAgICBmb3JtYXRVbm5lY2VzYXJ5RG9jdW1lbnQgPSAoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zaGlwcGluZ0FkZHJlc3M/LmRvY3VtZW50TnVtYmVyPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5zaGlwcGluZ0FkZHJlc3MuZG9jdW1lbnROdW1iZXIgPSAnMDAwMDAwMDAnXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuc2hpcHBpbmdBZGRyZXNzPy5kb2N1bWVudFR5cGU/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBkYXRhLnNoaXBwaW5nQWRkcmVzcy5kb2N1bWVudFR5cGUgPSAnWFhYJ1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmJpbGxpbmdBZGRyZXNzICYmIGRhdGEuYmlsbGluZ0FkZHJlc3MuZG9jdW1lbnROdW1iZXI/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBkYXRhLmJpbGxpbmdBZGRyZXNzLmRvY3VtZW50TnVtYmVyID0gJzAwMDAwMDAwJ1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmJpbGxpbmdBZGRyZXNzICYmIGRhdGEuYmlsbGluZ0FkZHJlc3MuZG9jdW1lbnRUeXBlPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5iaWxsaW5nQWRkcmVzcy5kb2N1bWVudFR5cGUgPSAnWFhYJ1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhXG4gICAgfVxufVxuIl19
|
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9zaGlwbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFnQyxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsSUFBSSxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUd6RixJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFnQixTQUFRLFdBQVc7SUFpQzVDLFlBQW9CLFVBQTZCLEVBQVUsV0FBb0MsRUFBVSxvQkFBaUQsRUFBVSxnQkFBa0MsRUFDMUwsTUFBaUIsRUFBVSxXQUF3QixFQUFVLGFBQTRCLEVBQVUsZUFBZ0M7UUFDM0ksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRlAsZUFBVSxHQUFWLFVBQVUsQ0FB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ZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBDaGVja291dFByb2Nlc3NTdGF0ZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2hlY2tvdXQtcHJvY2Vzcy1zdGF0ZSc7XG5pbXBvcnQgeyBTaGlwbWVudERhdGFUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL3V0aWxzL3NoaXBtZW50LXRyYW5zZm9ybWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3Jlc1NlcnZpY2UgfSBmcm9tICcuLi9zdG9yZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RlcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0L3N0ZXAtc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBTaGlwcGluZ09wdGlvbkNvbnRyYWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zaGlwcGluZy1vcHRpb24nO1xuaW1wb3J0IHsgU2hpcHBpbmdQcmljZURpc3BsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2hpcHBpbmctcHJpY2UtZGlzcGxheS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNoaXBtZW50U2VydmljZSBleHRlbmRzIFN0ZXBTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgc3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGVja291dFByb2Nlc3NTdGF0ZT4oeyBkb2luZzogZmFsc2UsIG9rOiBmYWxzZSwgZGF0YTogbnVsbCB9KTtcbiAgICBwcml2YXRlIG1ldGhvZHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcbiAgICBwcml2YXRlIGNvc3RzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSk7XG4gICAgcHJpdmF0ZSBlcnJvclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljIGJ1dHRvbnNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBvcmRlcjtcblxuICAgIHByaXZhdGUgYmFzZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy8nICsgJ2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpO1xuXG4gICAgcHVibGljIHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIG1ldGhvZHMgPSB0aGlzLm1ldGhvZHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBjb3N0cyA9IHRoaXMuY29zdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBlcnJvciQgPSB0aGlzLmVycm9yU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG1vcmVJbmZvSW5NZXRob2QgcG9yIGRlZmVjdG8gc3UgZXN0YWRvIGVzIGZhbHNlLCBzaSBzZSBkZXNlYSBxdWUgdmlzdWFsaWNlIGluZm9ybWFjacOzbiBhZGljaW9uYWwgZGUgY2FkYSBtw6l0b2RvIGRlIGVudmnDsyBhc2lnbmFyIHRydWUuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBtb3JlSW5mb0luTWV0aG9kID0gZmFsc2U7XG5cblxuICAgIHB1YmxpYyBzaGlwbWVudE1ldGhvZHNBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvc2hpcHBpbmcnO1xuICAgIHB1YmxpYyBzaGlwcGluZ09wdGlvbnNBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvc2hpcHBpbmctb3B0aW9ucyc7XG4gICAgcHVibGljIHB1dFNoaXBwaW5nT3B0aW9uQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3NoaXBwaW5nLW9wdGlvbic7XG5cbiAgICBwdWJsaWMgcGVyc2lzdFNoaXBtZW50QXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2FuZHJlYW5pLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9zaGlwJztcbiAgICBwdWJsaWMgcHV0U2hpcG1lbnRBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvc2hpcHBpbmcvJyArIHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCkuZGF0YS5tZXRob2Q7XG4gICAgcHVibGljIHB1dENvbnRyYWN0QXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NoZWNrb3V0LycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9zaGlwcGluZy1jb250cmFjdCc7XG4gICAgcHVibGljIGNhbGN1bGF0ZWRDb3N0c0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jYXJ0cy8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvbXVsdGlwbGUtZXN0aW1hdGVkLXNoaXBwaW5nLWNvc3QnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSwgcHJpdmF0ZSB0cmFuc2Zvcm1lcjogU2hpcG1lbnREYXRhVHJhbnNmb3JtZXIsIHByaXZhdGUgc2hpcHBpbmdQcmljZURpc3BsYXk6IFNoaXBwaW5nUHJpY2VEaXNwbGF5U2VydmljZSwgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLCBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSwgcHJpdmF0ZSBzdG9yZXNTZXJ2aWNlOiBTdG9yZXNTZXJ2aWNlLCBwcml2YXRlIGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGNoZWNrb3V0U2VydmljZSk7XG4gICAgfVxuXG4gICAgZ2V0U2hpcG1lbnRNZXRob2RzID0gKCkgPT4ge1xuICAgICAgICAvLyB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuc2hpcG1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgIC8vICAgICByZXMgPT4gdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KHRoaXMucmVzcG9uc2VUb0xpc3QocmVzKSlcbiAgICAgICAgLy8gKS5jYXRjaChlcnIgPT4gdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKSlcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodGhpcy5zaGlwbWVudE1ldGhvZHNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMucmVzcG9uc2VUb0xpc3QocmVzKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQobGlzdClcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSlcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldFNoaXBwaW5nT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uc3RzLmdldENoZWNrb3V0VmlldygpICE9PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodGhpcy5zaGlwcGluZ09wdGlvbnNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMubm9ybWFsaXplU2hpcHBpbmdPcHRpb25zKHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KGxpc3QubWFwKGVudHJ5ID0+IGVudHJ5Lm1ldGhvZCkuZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0pXG4gICAgfVxuXG5cbiAgICBzZXRNZXRob2QgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgY2FydENvbnRleHQgPSB0aGlzLmNhcnRTZXJ2aWNlLmNhcHR1cmVDYXJ0UmVzcG9uc2VDb250ZXh0KCk7XG4gICAgICAgIC8vIERlc2hhYmlsaXRhciB0b2RvcyBsb3MgYm90b25lc1xuICAgICAgICB0aGlzLmJ1dHRvbnNEaXNhYmxlZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5jb3N0c1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogdHJ1ZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnB1dFNoaXBtZW50KCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuYXBwbHlDYXJ0UmVzcG9uc2UocmVzLCBjYXJ0Q29udGV4dCwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7IGRvaW5nOiBmYWxzZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEocmVzKTtcbiAgICAgICAgICAgIHRoaXMub3JkZXIgPSByZXM7XG4gICAgICAgICAgICBjb25zdCBjb3N0cyA9IGF3YWl0IHRoaXMuZ2V0Q2FsY3VsYXRlZENvc3RzKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuY2FuTXV0YXRlQ2FydCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7IGRvaW5nOiBmYWxzZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubW9kaWZ5Q29zdHNSZXNwb25zZShjb3N0cywgdGhpcy5nZXRVc2VyRGF0YSgpPy5zaGlwcGluZ0FkZHJlc3M/LnBvc3Rjb2RlLCBtZXRob2QpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVyciwgY2FydENvbnRleHQudG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHsgZG9pbmc6IGZhbHNlLCBvazogZmFsc2UsIGRhdGE6IHsgbWV0aG9kIH0gfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLmVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIC8vIEhhYmlsaXRhciB0b2RvcyBsb3MgYm90b25lc1xuICAgICAgICAgICAgdGhpcy5idXR0b25zRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldE1ldGhvZE9ubHkgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgY2FydENvbnRleHQgPSB0aGlzLmNhcnRTZXJ2aWNlLmNhcHR1cmVDYXJ0UmVzcG9uc2VDb250ZXh0KCk7XG4gICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogdHJ1ZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wdXRTaGlwbWVudCgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmFwcGx5Q2FydFJlc3BvbnNlKHJlcywgY2FydENvbnRleHQsIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogZmFsc2UsIG9rOiBmYWxzZSwgZGF0YTogeyBtZXRob2QgfSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKHJlcyk7XG4gICAgICAgICAgICB0aGlzLm9yZGVyID0gcmVzO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVyciwgY2FydENvbnRleHQudG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7IGRvaW5nOiBmYWxzZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyci5lcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRTaGlwcGluZ09wdGlvbiA9IGFzeW5jIChcbiAgICAgICAgcGF5bG9hZDogeyBtZXRob2Q6IHN0cmluZzsgb3B0aW9uOiBzdHJpbmc7IGNvbnRyYWN0OiBzdHJpbmc7IHByaWNlOiBudW1iZXI7IG9yaWdpbmFsUHJpY2U/OiBudW1iZXIgfCBudWxsIH0sXG4gICAgICAgIHN0ZXBEYXRhOiBhbnkgPSBwYXlsb2FkXG4gICAgKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgY2FydENvbnRleHQgPSB0aGlzLmNhcnRTZXJ2aWNlLmNhcHR1cmVDYXJ0UmVzcG9uc2VDb250ZXh0KCk7XG4gICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRQYXlsb2FkID0gdGhpcy5zdHJpcEZyb250ZW5kT25seVNoaXBwaW5nRmllbGRzKHBheWxvYWQpO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLnB1dFNoaXBwaW5nT3B0aW9uQXBpKCksIHNhbml0aXplZFBheWxvYWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmFwcGx5Q2FydFJlc3BvbnNlKHJlcywgY2FydENvbnRleHQsIGZhbHNlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShyZXMpO1xuICAgICAgICAgICAgdGhpcy5vcmRlciA9IHJlcztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0ZXBSZWFkeShzdGVwRGF0YSwgcmVzKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jYXJ0U2VydmljZS5oYW5kbGVDYXJ0TXV0YXRpb25FcnJvcihlcnIsIGNhcnRDb250ZXh0LnRva2VuKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLmVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHV0U2hpcG1lbnQgPSAoKSA9PiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0U2hpcG1lbnRBcGkoKSwgeyBtZXRob2Q6IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCkuZGF0YS5tZXRob2QgfSkudG9Qcm9taXNlKCk7XG5cbiAgICBnZXRDYWxjdWxhdGVkQ29zdHMgPSAoKSA9PiB0aGlzLmNvbm5lY3Rpb24uZ2V0RXJyb3JOb3RIYW5kbGVyKHRoaXMuY2FsY3VsYXRlZENvc3RzQXBpKCkpLnRvUHJvbWlzZSgpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY2FydFNlcnZpY2UuaGFuZGxlQ2FydE11dGF0aW9uRXJyb3IoZXJyb3IsIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG5cbiAgICBzZXRDb250cmFjdCA9IGFzeW5jIChjb250cmFjdDogYW55KSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgY2FydENvbnRleHQgPSB0aGlzLmNhcnRTZXJ2aWNlLmNhcHR1cmVDYXJ0UmVzcG9uc2VDb250ZXh0KCk7XG4gICAgICAgIGNvbnN0IHN0ZXBEYXRhID0geyAuLi5jb250cmFjdCwgLi4udGhpcy5vdGhlclBhcmFtc0ZvckNvbnRyYWN0KGNvbnRyYWN0KSB9O1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5zdHJpcEZyb250ZW5kT25seVNoaXBwaW5nRmllbGRzKHN0ZXBEYXRhKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5wdXRDb250cmFjdEFwaSgpLCBkYXRhKVxuICAgICAgICAudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIG9yZGVyID0+IHtcbiAgICAgICAgICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5hcHBseUNhcnRSZXNwb25zZShvcmRlciwgY2FydENvbnRleHQsIGZhbHNlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgLy8gIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3NoaXBwaW5nX2luZm8nLCBvcmRlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RlcFJlYWR5KHN0ZXBEYXRhLCBvcmRlcil9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXJ0U2VydmljZS5oYW5kbGVDYXJ0TXV0YXRpb25FcnJvcihlcnIsIGNhcnRDb250ZXh0LnRva2VuKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0KG5ldyBFcnJvcihlcnIuZXJyb3IpKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FydFNlcnZpY2UuaGFuZGxlQ2FydE11dGF0aW9uRXJyb3IoZXJyLCBjYXJ0Q29udGV4dC50b2tlbikpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiAmJiB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIFVUSUxTXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgRGUgYXBpIGRlIHNvbGljaXR1ZCBkZSBjb3N0b3MgcG9yIG1ldG9kbyBkZSBlbnbDrW8gc2VsZWNjaW9uYWRvXG4gICAgICogQHBhcmFtIHBvc3RfY29kZSBJbmRpY2FkbyBlbiBlbCBwYXNvIGRlIEFkZHJlc3NpbmcgKGRhdG9zIHBlcnNvbmFsZXMgeSBkZSBmYWN0dXJhY2nDs24pXG4gICAgICogQHBhcmFtIG1ldGhvZCBNZXRvZG8gZGUgZW52w61vIHNlbGVjY2lvbmFkb1xuICAgICAqL1xuICAgIG1vZGlmeUNvc3RzUmVzcG9uc2UgPSBhc3luYyAocmVzcG9uc2UsIHBvc3RfY29kZSwgbWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2UgfHwgIXJlc3BvbnNlLm11bHRpcGxlUHJpY2VzKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMuY29zdHNTdWJqZWN0Lm5leHQoW10pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvc3RzID0gYXdhaXQgdGhpcy5idWlsZENvc3RzRnJvbVJlc3BvbnNlKHJlc3BvbnNlLCBtZXRob2QpO1xuICAgICAgICB0aGlzLmNvc3RzU3ViamVjdC5uZXh0KGNvc3RzKTtcbiAgICB9XG5cbiAgICBidWlsZENvc3RzRnJvbVJlc3BvbnNlID0gYXN5bmMgKHJlc3BvbnNlLCBtZXRob2QpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzcG9uc2U/Lm11bHRpcGxlUHJpY2VzIHx8IFtdO1xuICAgICAgICBsZXQgYnJhbmNoX2RlbGl2ZXJ5ID0gcmVzdWx0LmZpbmRJbmRleChzdWJtZXRob2QgPT4gc3VibWV0aG9kLm5hbWUgPT0gJ2JyYW5jaF9kZWxpdmVyeScpO1xuICAgICAgICBpZiAoYnJhbmNoX2RlbGl2ZXJ5ICE9IC0xKSB7XG4gICAgICAgICAgICByZXN1bHRbYnJhbmNoX2RlbGl2ZXJ5XS5jb250cmFjdHMgPSByZXN1bHRbYnJhbmNoX2RlbGl2ZXJ5XS5jb250cmFjdHMubWFwKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkQ29udHJhY3QgPSB0aGlzLm5vcm1hbGl6ZVNoaXBwaW5nQ29udHJhY3QoY29udHJhY3QpO1xuICAgICAgICAgICAgICAgIGxldCBicmFuY2hfcHJvcGVydHkgPSBjb250cmFjdC5icmFuY2hfcHJvcGVydHkgfHwge307XG4gICAgICAgICAgICAgICAgbGV0IGFkZHJlc3NfZGF0YSA9IGJyYW5jaF9wcm9wZXJ0eS5hZGRyZXNzIHx8IHt9O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0OiAnYnJhbmNoX2RlbGl2ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbm9ybWFsaXplZENvbnRyYWN0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBub3JtYWxpemVkQ29udHJhY3QucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsUHJpY2U6IG5vcm1hbGl6ZWRDb250cmFjdC5vcmlnaW5hbFByaWNlLFxuICAgICAgICAgICAgICAgICAgICAuLi5hZGRyZXNzX2RhdGEsXG4gICAgICAgICAgICAgICAgICAgIC4uLmJyYW5jaF9wcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQ6IChhZGRyZXNzX2RhdGEuc3RyZWV0IHx8ICcnKSArICcgTsKwICcgKyAoYWRkcmVzc19kYXRhLm51bWJlciB8fCAnJylcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZC5pbmNsdWRlcygncGlja3VwX3N0b3JlJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlcyA9IGF3YWl0IHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXMucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgIGlmIChzdG9yZXMgJiYgc3RvcmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5mb3JFYWNoKHBpY2t1cF9zdG9yZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBpY2t1cF9zdG9yZS5jb250cmFjdHMuZm9yRWFjaChjb250cmFjdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50X3N0b3JlID0gc3RvcmVzLmZpbmQoc3RvcmUgPT4gc3RvcmUuY29kZSA9PSBjb250cmFjdC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3VycmVudF9zdG9yZSkgY29udHJhY3QuZGV0YWlsID0gJ1NpbiBpbmZvcm1hY2nDs24nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb250cmFjdC5kZXRhaWwgPSBjdXJyZW50X3N0b3JlLm5hbWUgKyAnIC0gJyArIGN1cnJlbnRfc3RvcmUuYWRkcmVzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250cmFjdDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0Q29zdHNGb3JNZXRob2QgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogdHJ1ZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnB1dFNoaXBtZW50KCk7XG4gICAgICAgIHJlcyAmJiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKHJlcyk7XG4gICAgICAgIGNvbnN0IGNvc3RzID0gYXdhaXQgdGhpcy5nZXRDYWxjdWxhdGVkQ29zdHMoKTtcbiAgICAgICAgaWYgKCFjb3N0cyB8fCAhY29zdHMubXVsdGlwbGVQcmljZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJ1aWxkQ29zdHNGcm9tUmVzcG9uc2UoY29zdHMsIG1ldGhvZCk7XG4gICAgfVxuXG4gICAgcmVzcG9uc2VUb0xpc3QgPSAocmVzcG9uc2UpID0+XG4gICAgICAgIChyZXNwb25zZS5zaGlwbWVudHMgJiYgcmVzcG9uc2Uuc2hpcG1lbnRzLmxlbmd0aCA+IDApICYmIE9iamVjdC5rZXlzKHJlc3BvbnNlLnNoaXBtZW50c1swXS5tZXRob2RzKS5tYXAoa2V5ID0+IHJlc3BvbnNlLnNoaXBtZW50c1swXS5tZXRob2RzW2tleV0pO1xuXG4gICAgcmVzcG9uc2VUb1NoaXBwaW5nT3B0aW9ucyA9IChyZXNwb25zZSkgPT5cbiAgICAgICAgKHJlc3BvbnNlLnNoaXBtZW50cyAmJiByZXNwb25zZS5zaGlwbWVudHMubGVuZ3RoID4gMCkgJiYgT2JqZWN0LmtleXMocmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHNba2V5XSk7XG5cbiAgICBwcml2YXRlIGFzeW5jIG5vcm1hbGl6ZVNoaXBwaW5nT3B0aW9ucyhyZXNwb25zZSkge1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5yZXNwb25zZVRvU2hpcHBpbmdPcHRpb25zKHJlc3BvbnNlKSB8fCBbXTtcbiAgICAgICAgbGV0IHN0b3JlcyA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgbGlzdCkge1xuICAgICAgICAgICAgY29uc3QgbWV0aG9kQ29kZSA9IGVudHJ5Py5tZXRob2Q/LmNvZGUgfHwgJyc7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gZW50cnk/Lm9wdGlvbnMgfHwgW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJhY3RzID0gb3B0aW9uPy5jb250cmFjdHMgfHwgW107XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbj8ubmFtZSA9PT0gJ2JyYW5jaF9kZWxpdmVyeScpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmNvbnRyYWN0cyA9IGNvbnRyYWN0cy5tYXAoY29udHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZENvbnRyYWN0ID0gdGhpcy5ub3JtYWxpemVTaGlwcGluZ0NvbnRyYWN0KGNvbnRyYWN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGNvbnRyYWN0Py5icmFuY2hfcHJvcGVydHkgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzID0gYnJhbmNoLmFkZHJlc3MgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJlZXQgPSBhZGRyZXNzLnN0cmVldCB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IGFkZHJlc3MubnVtYmVyIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcHV0ZWQgPSBbc3RyZWV0LCBudW1iZXIgPyBgTsKwICR7bnVtYmVyfWAgOiAnJ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29udHJhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubm9ybWFsaXplZENvbnRyYWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnJhbmNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0OiBjb250cmFjdD8uY29udHJhY3QgfHwgb3B0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udHJhY3Q/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IG5vcm1hbGl6ZWRDb250cmFjdC5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFByaWNlOiBub3JtYWxpemVkQ29udHJhY3Qub3JpZ2luYWxQcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDogY29tcHV0ZWQgfHwgY29udHJhY3QuY29tcHV0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobWV0aG9kQ29kZS5pbmNsdWRlcygncGlja3VwX3N0b3JlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG9yZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlcyA9IGF3YWl0IHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXMucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmVzICYmIHN0b3Jlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5jb250cmFjdHMgPSBjb250cmFjdHMubWFwKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RvcmUgPSBzdG9yZXMuZmluZChzdG9yZSA9PiBzdG9yZS5jb2RlID09IGNvbnRyYWN0Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3VycmVudFN0b3JlKSByZXR1cm4geyAuLi5jb250cmFjdCwgZGV0YWlsOiAnU2luIGluZm9ybWFjacOzbicgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5jb250cmFjdCwgZGV0YWlsOiBjdXJyZW50U3RvcmUubmFtZSArICcgLSAnICsgY3VycmVudFN0b3JlLmFkZHJlc3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgbm9ybWFsaXplU2hpcHBpbmdDb250cmFjdChjb250cmFjdDogU2hpcHBpbmdPcHRpb25Db250cmFjdCB8IGFueSk6IFNoaXBwaW5nT3B0aW9uQ29udHJhY3Qge1xuICAgICAgICBjb25zdCBwcmljZSA9IHRoaXMuc2hpcHBpbmdQcmljZURpc3BsYXkubm9ybWFsaXplUHJpY2VWYWx1ZShjb250cmFjdD8ucHJpY2UpO1xuICAgICAgICBjb25zdCBvcmlnaW5hbFByaWNlID0gdGhpcy5zaGlwcGluZ1ByaWNlRGlzcGxheS5ub3JtYWxpemVQcmljZVZhbHVlKGNvbnRyYWN0Py5vcmlnaW5hbFByaWNlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNvbnRyYWN0LFxuICAgICAgICAgICAgcHJpY2U6IHByaWNlICE9PSBudWxsID8gcHJpY2UgOiBjb250cmFjdD8ucHJpY2UsXG4gICAgICAgICAgICBvcmlnaW5hbFByaWNlOiBvcmlnaW5hbFByaWNlICE9PSBudWxsID8gb3JpZ2luYWxQcmljZSA6IGNvbnRyYWN0Py5vcmlnaW5hbFByaWNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdHJpcEZyb250ZW5kT25seVNoaXBwaW5nRmllbGRzPFQgZXh0ZW5kcyB7IG9yaWdpbmFsUHJpY2U/OiBhbnkgfT4oZGF0YTogVCk6IE9taXQ8VCwgJ29yaWdpbmFsUHJpY2UnPiB7XG4gICAgICAgIGNvbnN0IHsgb3JpZ2luYWxQcmljZSwgLi4ucmVzdCB9ID0gZGF0YSB8fCAoe30gYXMgVCk7XG4gICAgICAgIHJldHVybiByZXN0O1xuICAgIH1cblxuICAgIG90aGVyUGFyYW1zRm9yQ29udHJhY3QgPSAoY29udHJhY3QpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNoaXBwaW5nX21ldGhvZF9jb250cmFjdDpcbiAgICAgICAgICAgICAgICBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfY29udHJhY3RcbiAgICAgICAgICAgICAgICAgICAgPyBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfY29udHJhY3RcbiAgICAgICAgICAgICAgICAgICAgOiBjb250cmFjdC5jb250cmFjdCArICdfJyArIGNvbnRyYWN0Lm5hbWUsXG4gICAgICAgICAgICBzaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGU6XG4gICAgICAgICAgICAgICAgY29udHJhY3Quc2hpcHBpbmdfbWV0aG9kX2JyYW5jaF9jb2RlXG4gICAgICAgICAgICAgICAgICAgID8gY29udHJhY3Quc2hpcHBpbmdfbWV0aG9kX2JyYW5jaF9jb2RlXG4gICAgICAgICAgICAgICAgICAgIDogKGNvbnRyYWN0LmNvbnRyYWN0ICYmIGNvbnRyYWN0LmNvbnRyYWN0ID09IFwiYnJhbmNoX2RlbGl2ZXJ5XCIpID8gY29udHJhY3QubnVtYmVyIDogY29udHJhY3QubmFtZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QnJhbmNoT2ZmaWNlcyA9IChtZXRob2QpID0+IHRoaXMuY29ubmVjdGlvbi5nZXRPdXRzaWRlcih0aGlzLnRyYW5zZm9ybWVyLmdldEFwaShtZXRob2QudG9Mb3dlckNhc2UoKSkpLnRvUHJvbWlzZSgpO1xuXG4gICAgZm9ybWF0VW5uZWNlc2FyeURvY3VtZW50ID0gKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGEuc2hpcHBpbmdBZGRyZXNzPy5kb2N1bWVudE51bWJlcj8ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGRhdGEuc2hpcHBpbmdBZGRyZXNzLmRvY3VtZW50TnVtYmVyID0gJzAwMDAwMDAwJ1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLnNoaXBwaW5nQWRkcmVzcz8uZG9jdW1lbnRUeXBlPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5zaGlwcGluZ0FkZHJlc3MuZG9jdW1lbnRUeXBlID0gJ1hYWCdcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5iaWxsaW5nQWRkcmVzcyAmJiBkYXRhLmJpbGxpbmdBZGRyZXNzLmRvY3VtZW50TnVtYmVyPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5iaWxsaW5nQWRkcmVzcy5kb2N1bWVudE51bWJlciA9ICcwMDAwMDAwMCdcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5iaWxsaW5nQWRkcmVzcyAmJiBkYXRhLmJpbGxpbmdBZGRyZXNzLmRvY3VtZW50VHlwZT8ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGRhdGEuYmlsbGluZ0FkZHJlc3MuZG9jdW1lbnRUeXBlID0gJ1hYWCdcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -18,7 +18,8 @@ import { BehaviorSubject } from 'rxjs';
|
|
|
18
18
|
import { ConnectionService } from '../api/connection.service';
|
|
19
19
|
import { Constants } from '../core.consts';
|
|
20
20
|
import * as i0 from "@angular/core";
|
|
21
|
-
import * as i1 from "
|
|
21
|
+
import * as i1 from "../core.consts";
|
|
22
|
+
import * as i2 from "../api/connection.service";
|
|
22
23
|
let ConcatenatedAssociationsService = class ConcatenatedAssociationsService {
|
|
23
24
|
constructor(consts, connection) {
|
|
24
25
|
this.consts = consts;
|
|
@@ -110,11 +111,11 @@ ConcatenatedAssociationsService.ctorParameters = () => [
|
|
|
110
111
|
{ type: Constants },
|
|
111
112
|
{ type: ConnectionService }
|
|
112
113
|
];
|
|
113
|
-
ConcatenatedAssociationsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConcatenatedAssociationsService_Factory() { return new
|
|
114
|
+
ConcatenatedAssociationsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConcatenatedAssociationsService_Factory() { return new ConcatenatedAssociationsService(i0.ɵɵinject(i1.Constants), i0.ɵɵinject(i2.ConnectionService)); }, token: ConcatenatedAssociationsService, providedIn: "root" });
|
|
114
115
|
ConcatenatedAssociationsService = __decorate([
|
|
115
116
|
Injectable({
|
|
116
117
|
providedIn: 'root'
|
|
117
118
|
})
|
|
118
119
|
], ConcatenatedAssociationsService);
|
|
119
120
|
export { ConcatenatedAssociationsService };
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uY2F0ZW5hdGVkLWFzc29jaWF0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NvbmNhdGVuYXRlZC1hc3NvY2lhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTTNDLElBQWEsK0JBQStCLEdBQTVDLE1BQWEsK0JBQStCO0lBb0J4QyxZQUFxQixNQUFnQixFQUFVLFVBQTZCO1FBQXZELFdBQU0sR0FBTixNQUFNLENBQVU7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQWxCcEUsb0JBQWUsR0FBa0MsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDeEUsdUJBQWtCLEdBQWdDLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzFFLGNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQy9DLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRTVEOztXQUVHO1FBQ0ssaUJBQVksR0FBeUIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDcEU7O1dBRUc7UUFDSSxXQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUVoRCxvQkFBb0I7UUFDcEIsZ0JBQVcsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFB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QUUsQ0FBQSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxHQUFBLENBQUE7SUFwRXZELENBQUM7Q0FzRXBGLENBQUE7O1lBdEUrQixTQUFTO1lBQXNCLGlCQUFpQjs7O0FBcEJuRSwrQkFBK0I7SUFIM0MsVUFBVSxDQUFDO1FBQ1YsVUFBVSxFQUFFLE1BQU07S0FDbkIsQ0FBQztHQUNXLCtCQUErQixDQTBGM0M7U0ExRlksK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5kLCBmaW5kSW5kZXggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgRmlsdGVyU3RlcCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmlsdGVyU3RlcCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbmNhdGVuYXRlZEFzc29jaWF0aW9uc1NlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzdGVwTGlzdFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJTdGVwW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSlcbiAgICBwcml2YXRlIGN1cnJlbnRTdGVwU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEZpbHRlclN0ZXA+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSlcbiAgICBwdWJsaWMgc3RlcExpc3QkID0gdGhpcy5zdGVwTGlzdFN1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICBwdWJsaWMgY3VycmVudFN0ZXAkID0gdGhpcy5jdXJyZW50U3RlcFN1YmplY3QuYXNPYnNlcnZhYmxlKClcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBzdWpldG8gcGFyYSBvYnNlcnZhciBsb3MgZXJyb3Jlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGVycm9yU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBvYnNlcnZhYmxlIHBhcmEgZWwgbWFuZWpvIGRlIGVycm9yZXMuXG4gICAgICovXG4gICAgcHVibGljIGVycm9yJCA9IHRoaXMuZXJyb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG5cbiAgICAvL0xpc3RhIGRlIGVuZHBvaW50c1xuICAgIHN0ZXBMaXN0QXBpID0gKHNlY3Rpb25OYW1lKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY29uY2F0ZW5hdGVkX2Fzc29jaWF0aW9ucy8nICsgc2VjdGlvbk5hbWU7XG4gICAgYXBwbHlGaWx0ZXJBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJysgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jb25jYXRlbmF0ZWRfYXNzb2NpYXRpb25zL3N0ZXBfYnlfc3RlcC8nO1xuXG4gICAgY29uc3RydWN0b3IoIHByaXZhdGUgY29uc3RzOkNvbnN0YW50cywgcHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT2J0aWVuZSBsYSBsaXN0YSBkZSBwYXNvcyBjb21wbGV0YSwgZGF0byBxdWUgc2UgcmVjaWJlIGN1YW5kbyBpbmljaWEgbGEgY2FyZ2EgZGUgZGF0b3MuXG4gICAgICogQHBhcmFtIHNlY3Rpb24gRXN0ZSBwYXJhbWV0cm8gcmVjaWJlIGxhIHNlY2Npb24gZGUgZG9uZGUgc2Ugb2J0ZW5kcmFuIGxhIGxpc3RhIGRlIHBhc29zXG4gICAgICogQHBhcmFtIGZhdGhlckNvZGUgRXN0ZSBwYXJhbWV0cm8gcmVjaWJlIGVsIGNvZGlnbyBwYWRyZSBkZSBlc2Egc2VjY2lvbiwgZXMgZGVjaXIgZGUgZG9uZGUgZW1waWV6YSBlbCBmaWx0cmFkbyBkZSBwYXNvcy4gXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdGVwTGlzdCA9IGFzeW5jIChzZWN0aW9uOnN0cmluZywgZmF0aGVyQ29kZT86c3RyaW5nKSA9PiBzZWN0aW9uICYmIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuc3RlcExpc3RBcGkoc2VjdGlvbikpLnN1YnNjcmliZSggcmVzID0+IHtcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCh7c3RhdGU6ZmFsc2V9KVxuICAgICAgICAvL1NpIGV4aXN0ZSBlbCBjb2RpZ28gZGVsIHBhZHJlXG4gICAgICAgIGlmKGZhdGhlckNvZGUpe1xuICAgICAgICAgICAgbGV0IHZhbHVlcyA9IHJlcy5maWx0ZXIoZSA9PiBlWzBdLmNvZGUgPT0gZmF0aGVyQ29kZSlcbiAgICAgICAgICAgIC8vU2kgb2J0dXZvcyByZXN1bHRhZG9zIGNvbiBsYSBidXNxdWVkYVxuICAgICAgICAgICAgaWYodmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpe1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVN0ZXBMaXN0KHZhbHVlc1swXSkgLy9pbmljaWFsaXphIFxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCh7c3RhdGU6dHJ1ZSwgZXJyb3I6ICdlcnJvciBubyBoYXkgbmFkYSBjb24gZXNlIGNvZGlnbyd9KVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBubyBoYXkgbmFkYSBjb24gZXNlIGNvZGlnbycpXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU3RlcExpc3QoW10pIC8vaW5pY2lhbGl6YSBjb24gdW4gYXJyZWdsbyB2YWNpb1xuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIC8vU2kgbm8gaGF5IGNvZGlnbyBkZWwgcGFkcmUsIGluaWNpYWxpemEgY29uIGVsIHByaW1lciB2YWxvciBkZWwgYXJyZWdsb1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU3RlcExpc3QocmVzWzBdKVxuICAgICAgICB9XG4gICAgfSwgZSA9PiB0aGlzLmVycm9yU3ViamVjdC5uZXh0KHtzdGF0ZTp0cnVlLCBlcnJvcjogZSB9KSkgXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pY2lhbGl6YSBsYSBjYXJnYSBkZSBkYXRvcyBhbCBzdWJqZXRvIGRlbCBvYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSByZXNwb25zZSBSZXNwdWVzdGEgcmVjaWJpZGEgZGVzZGUgZWwgYmFja2VuZFxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVN0ZXBMaXN0ID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RlcExpc3QocmVzcG9uc2UpXG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFN0ZXAocmVzcG9uc2VbMF0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVzdGEgZnVuY2lvbiBjYXJnYSBcbiAgICAgKiBAcGFyYW0gc2VjdGlvbiBcbiAgICAgKiBAcGFyYW0gZmF0aGVyQ29kZSBcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZCA9IChzZWN0aW9uOnN0cmluZywgZmF0aGVyQ29kZT86c3RyaW5nKSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coJ2VudHJlIGxvYWQnKVxuICAgICAgICB0aGlzLmdldFN0ZXBMaXN0KHNlY3Rpb24sIGZhdGhlckNvZGUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGFjdHVhbGl6YSBsYSBsaXN0YSBkZSBwYXNvc1xuICAgICAqIEBwYXJhbSB2YWx1ZSBcbiAgICAgKi9cbiAgICB1cGRhdGVTdGVwTGlzdCA9ICh2YWx1ZSkgPT57XG4gICAgICAgIC8vY29uc29sZS5sb2coJ2VudHJlIHVwZGF0ZScpXG4gICAgICAgIHRoaXMuc3RlcExpc3RTdWJqZWN0Lm5leHQodmFsdWUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlY3JpcHRpb24gYWN0dWFsaXphIGVsIHBhc28gYWN0dWFsIGVuIGRvbmRlIHNlIGVuY3VlbnRyYS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgXG4gICAgICovXG4gICAgdXBkYXRlQ3VycmVudFN0ZXAgPSAodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcFN1YmplY3QubmV4dCh2YWx1ZSlcbiAgICB9XG4gICAgXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGFwbGljYSBsb3MgZmlsdHJvcyBjb24gbG9zIHZhbG9yZXMgZGFkb3MuXG4gICAgICogQHBhcmFtIHZhbHVlcyBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBhcHBseUZpbHRlciA9IGFzeW5jICh2YWx1ZXMpID0+IHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuYXBwbHlGaWx0ZXJBcGkoKSwgdmFsdWVzKS50b1Byb21pc2UoKS50aGVuKHJlcyA9PnRoaXMudXBkYXRlQ3VycmVudFN0ZXAocmVzKSlcblxufVxuIl19
|
|
@@ -20,7 +20,9 @@ import { Constants } from '../core.consts';
|
|
|
20
20
|
import { ToastService } from '../utils/toast.service';
|
|
21
21
|
import { ChannelConfigService } from './channel-config.service';
|
|
22
22
|
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "
|
|
23
|
+
import * as i1 from "../core.consts";
|
|
24
|
+
import * as i2 from "../api/connection.service";
|
|
25
|
+
import * as i3 from "../utils/toast.service";
|
|
24
26
|
let CurrencyService = class CurrencyService {
|
|
25
27
|
constructor(consts, connection, toastr, injector) {
|
|
26
28
|
this.consts = consts;
|
|
@@ -187,11 +189,11 @@ CurrencyService.ctorParameters = () => [
|
|
|
187
189
|
{ type: ToastService },
|
|
188
190
|
{ type: Injector }
|
|
189
191
|
];
|
|
190
|
-
CurrencyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CurrencyService_Factory() { return new
|
|
192
|
+
CurrencyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CurrencyService_Factory() { return new CurrencyService(i0.ɵɵinject(i1.Constants), i0.ɵɵinject(i2.ConnectionService), i0.ɵɵinject(i3.ToastService), i0.ɵɵinject(i0.INJECTOR)); }, token: CurrencyService, providedIn: "root" });
|
|
191
193
|
CurrencyService = __decorate([
|
|
192
194
|
Injectable({
|
|
193
195
|
providedIn: 'root'
|
|
194
196
|
})
|
|
195
197
|
], CurrencyService);
|
|
196
198
|
export { CurrencyService };
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jdXJyZW5jeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBS2hFLElBQWEsZUFBZSxHQUE1QixNQUFhLGVBQWU7SUFleEIsWUFBb0IsTUFBaUIsRUFDekIsVUFBNkIsRUFDN0IsTUFBb0IsRUFDcEIsUUFBa0I7UUFIVixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWhCdEIsb0JBQWUsR0FBb0MsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUUsa0JBQWEsR0FBNkIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDcEUsd0JBQW1CLEdBQTJCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRXRFLGNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hELFlBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLG1C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LENBQUE7Z0JBQy9DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTthQUN4QztpQkFBTTtnQkFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2FBQ2xEO1FBQ0wsQ0FBQyxDQUFBO1FBckpHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2RSxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBbUpKLENBQUE7O1lBM0orQixTQUFTO1lBQ2IsaUJBQWlCO1lBQ3JCLFlBQVk7WUFDVixRQUFROzs7QUFsQnJCLGVBQWU7SUFIM0IsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztHQUNXLGVBQWUsQ0EwSzNCO1NBMUtZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQ3VycmVuY3lDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2N1cnJlbmN5Q29uZmlnJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NoYW5uZWwtY29uZmlnLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5U2VydmljZSB7XG5cbiAgICBwcml2YXRlIGN1cnJlbmN5U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEN1cnJlbmN5Q29uZmlnPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pXG4gICAgcHJpdmF0ZSB1cGRhdGVTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Qm9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKVxuICAgIHByaXZhdGUgY3VycmVuY3lMaXN0U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pXG5cbiAgICBwdWJsaWMgY3VycmVuY3kkID0gdGhpcy5jdXJyZW5jeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIHVwZGF0ZSQgPSB0aGlzLnVwZGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGN1cnJlbmN5TGlzdCQgPSB0aGlzLmN1cnJlbmN5TGlzdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwcml2YXRlIGVuYWJsZUFwcGx5Q3VycmVuY3lFeGNoYW5nZTogQm9vbGVhbiA9IHRydWU7XG5cbiAgICBwcml2YXRlIGdldEN1cnJlbmN5TGlzdEFwaSA9ICgpID0+ICdzaG9wLWFwaS9jdXJyZW5jaWVzJztcbiAgICBwcml2YXRlIGdldENvbnZlcnRpYmlsaXR5QXBpID0gKGJhc2VDdXJyZW5jeTogYW55LCB0YXJnZXRDdXJyZW5jeTogYW55KSA9PiAnc2hvcC1hcGkvY3VycmVuY2llcz9iYXNlQ3VycmVuY3k9JyArIGJhc2VDdXJyZW5jeSArICcmdGFyZ2V0Q3VycmVuY3k9JyArIHRhcmdldEN1cnJlbmN5O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbENvbmZpZ1NlcnZpY2UpLmNoYW5uZWxDb25maWckLnN1YnNjcmliZShjaGFubmVsID0+IHtcbiAgICAgICAgICAgIGNoYW5uZWwuYXBwbHlDdXJyZW5jeUV4Y2hhbmdlID8gdGhpcy5sb2FkQ3VycmVuY3lMaXN0KCkgOiB0aGlzLmxvYWREZWZhdWx0Q3VycmVuY3koY2hhbm5lbC5iYXNlQ3VycmVuY3kpO1xuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5lbmFibGVBcHBseUN1cnJlbmN5RXhjaGFuZ2UpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZSBjYXJnYSBsYSBtb25lZGEgcG9yIGRlZmVjdG8gY29uIG1ldGFkYXRvcyAoc8OtbWJvbG8sIHBvc2ljacOzbiwgZGVjaW1hbGVzKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWREZWZhdWx0Q3VycmVuY3kgPSAoY3VycmVuY3lDb2RlKSA9PiB7XG4gICAgICAgIC8vIFRyYWUgbGEgbGlzdGEgaWd1YWwgcGFyYSB0ZW5lciBsYSBjb25maWd1cmFjacOzbiBjb21wbGV0YVxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0Q3VycmVuY3lMaXN0QXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oKGxpc3Q6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5TGlzdFN1YmplY3QubmV4dChsaXN0KTtcbiAgICAgICAgICAgIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5VHlwZUNvbmZpZyhsaXN0KTtcblxuICAgICAgICAgICAgY29uc3QgY2ZnID0gbGlzdD8uZmluZChjID0+IGMuY29kZSA9PT0gY3VycmVuY3lDb2RlKTtcbiAgICAgICAgICAgIGlmIChjZmcpIHtcbiAgICAgICAgICAgICAgICAvLyBTZXRlYSBtb25lZGEgYWN0aXZhIGNvbiBzdSBjb25maWd1cmFjacOzbiBjb21wbGV0YVxuICAgICAgICAgICAgICAgIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5KGNmZy5jb2RlLCBjZmcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjdXJyZW5jeUNvZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxvYWQoKTtcbiAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gRW4gY2FzbyBkZSBlcnJvciwgYWwgbWVub3MgZmlqw6EgZWwgY8OzZGlnbyBwYXJhIG5vIHJvbXBlciBlbCBmbHVqb1xuICAgICAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY3VycmVuY3lDb2RlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gY2FsY3VsYSBsYSBjb252ZXRpYmlsaWRhZCBkZWwgcHJlY2lvICBwYXNhZG8gcG9yIHBhcmFtZW50cm8gc2VndW4gZXN0YSBmb3JtdWxhOlxuICAgICAqICoqYyA9IGEgKiBiKiogZG9uZGUgKmM9bW9uZWRhIGRlc3B1ZXMgZGVsIGNhbWJpbyosICphPXZhbG9yIHF1ZSBxdWllcm8gY2FtYmlhciogeSAqYj1yYXRpbyBkZSBjYW1iaW8qLiBcbiAgICAgKiBAcGFyYW0gcHJpY2UgUHJlY2lvIGEgY2FtYmlhclxuICAgICAqIEBwYXJhbSByYXRpbyBSYXRpbyBkZSBjYW1iaW9cbiAgICAgKiBAcmV0dXJucyBTaSBlbCByYXRpbyBubyBlcyBudWxsLCByZXRvcm5hIGVsIHByZWNpbyBjYW1iaWFkbywgc2lubyByZXRvcm5hIGVsIHByZWNpbyBzaW4gY2FtYmlvcy4gXG4gICAgICovXG4gICAgcHVibGljIGNhbGN1bGF0ZUNvbnZldGliaWxpdHkgPSAocHJpY2UsIHJhdGlvKSA9PiB7XG4gICAgICAgIHJldHVybiByYXRpbyA/IHByaWNlICogcmF0aW8gOiBwcmljZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY29kZSBDb2RpZ28gZGUgbW9uZWRhIGEgbGEgcXVlIHNlIGRlc2VhIGNhbWJpYXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0Q3VycmVuY3kgPSBhc3luYyAoY29kZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZ2V0Q29udmVydGliaWxpdHkodGhpcy5jb25zdHMuY3VycmVuY3kuY29kZSwgY29kZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXJnYSBsYSBsaXN0YSBkZSBtb25lZGFzIGRlc2RlIGxhIEFQSSB5IHJlZ2lzdHJhIGxhIGNvbmZpZ3VyYWNpw7NuIGNvbXBsZXRhIGVuIGBDb25zdGFudHNgLlxuICAgICAqXG4gICAgICogU2kgbm8gZXhpc3RlIHVuYSBtb25lZGEgYWN0aXZhIGd1YXJkYWRhIGVuIGBsb2NhbFN0b3JhZ2VgLCBpbmljaWFsaXphIGxhIG1vbmVkYSBhY3RpdmFcbiAgICAgKiB0b21hbmRvIGxhIG1vbmVkYSBiYXNlIGRlbCBjYW5hbCAoYENoYW5uZWxDb25maWdTZXJ2aWNlLmJhc2VDdXJyZW5jeWApIHkgc3VzIG1ldGFkYXRvc1xuICAgICAqIG9idGVuaWRvcyBkZSBsYSBsaXN0YSAoc8OtbWJvbG8sIHBvc2ljacOzbiwgZGVjaW1hbGVzKS4gU2kgbm8gc2UgZW5jdWVudHJhIGxhIGJhc2UgZW4gbGFcbiAgICAgKiBsaXN0YSwgdXNhIGxhIHByaW1lcmEgZGlzcG9uaWJsZS5cbiAgICAgKlxuICAgICAqIEZpbmFsbWVudGUsIGxsYW1hIGEgYGxvYWQoKWAgcGFyYSBwcm9wYWdhciBsYSBjb25maWd1cmFjacOzbiBhIGxvcyBvYnNlcnZhYmxlcyB5IChzaSBhcGxpY2EpXG4gICAgICogYWN0dWFsaXphciBgbG9jYWxTdG9yYWdlYC5cbiAgICAgKlxuICAgICAqIEBzaWRlRWZmZWN0IEFjdHVhbGl6YSBgY3VycmVuY3lMaXN0JGAsIGBDb25zdGFudHMuc2V0Q3VycmVuY3lUeXBlQ29uZmlnYCB5IHBvdGVuY2lhbG1lbnRlXG4gICAgICogICAgICAgICAgICAgYENvbnN0YW50cy5zZXRDdXJyZW5jeWAuXG4gICAgICogQHJldHVybnMgdm9pZFxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZEN1cnJlbmN5TGlzdCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldEN1cnJlbmN5TGlzdEFwaSgpKS50b1Byb21pc2UoKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5TGlzdFN1YmplY3QubmV4dChyZXMpO1xuICAgICAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3lUeXBlQ29uZmlnKHJlcyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW5jeScpO1xuICAgICAgICAgICAgaWYgKCFzdG9yZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYXNlID0gdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbENvbmZpZ1NlcnZpY2UpLmdldEFjdGl2ZUNoYW5uZWwoKT8uYmFzZUN1cnJlbmN5O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNmZyA9IHJlcz8uZmluZChjID0+IGMuY29kZSA9PT0gYmFzZSkgPz8gcmVzPy5bMF07XG4gICAgICAgICAgICAgICAgaWYgKGNmZykgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY2ZnLmNvZGUsIGNmZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGdlbmVyYSBsYSBjYXJnYSB5IGNvbmZpZ3VyYWNpw7NuIGRlIGxhIG1vbmVkYSBlbGVnaWRhIHBhcmEgbGEgY29udmVyc2lvbi5cbiAgICAgKiBAcGFyYW0gY3VycmVuY3kgTW9uZWRhIGEgY29udmVydGlyLlxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZEN1cnJlbmN5ID0gKGN1cnJlbmN5OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeVN1YmplY3QubmV4dChjdXJyZW5jeSk7XG4gICAgICAgIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5KGN1cnJlbmN5LmNvZGUpO1xuICAgICAgICBsZXQgdXBkYXRlID0gdGhpcy51cGRhdGVTdWJqZWN0LmdldFZhbHVlKClcbiAgICAgICAgdGhpcy51cGRhdGVTdWJqZWN0Lm5leHQoIXVwZGF0ZSlcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2N1cnJlbmN5JywgSlNPTi5zdHJpbmdpZnkodGhpcy5jb25zdHMuY3VycmVuY3kpKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lcmEgbGEgY29udmVydGliaWxpZGFkIGRlIGxhIG1vbmVkYSBiYXNlIGEgbGEgbnVldmEuIFNpIGJhc2VDdXJyZW5jeSBubyB0aWVuZSB2YWxvciBcbiAgICAgKiBlbnRvbmNlcyB1dGlsaXphIGxhIG1vbmVkYSBiYXNlIGRlbCBjYW5hbC5cbiAgICAgKiBAcGFyYW0gY3VycmVuY3kgT2JqZXRvIGRlIGxhIG1vbmVkYSBkZXN0aW5vLlxuICAgICAqIEBwYXJhbSBiYXNlQ3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBiYXNlLiAqRWo6IFVTRCB8IEFSUyB8IEVVUiB8Li4uKlxuICAgICAqL1xuICAgIGdlbmVyYXRlQ29udmVydGliaWxpdHkgPSBhc3luYyAoY3VycmVuY3k6IGFueSwgYmFzZUN1cnJlbmN5Pzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICghYmFzZUN1cnJlbmN5KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGJhc2VDdXJyZW5jeSA9IGF3YWl0IHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxDb25maWdTZXJ2aWNlKS5nZXRBY3RpdmVDaGFubmVsKCkuYmFzZUN1cnJlbmN5O1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgICAgICAgICAgYmFzZUN1cnJlbmN5ID0gJ1VTRCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVuY3kuY29kZSA9PSBiYXNlQ3VycmVuY3kpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEN1cnJlbmN5KGN1cnJlbmN5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29udmVydGliaWxpdHkoYmFzZUN1cnJlbmN5LCBjdXJyZW5jeS5jb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPYnRpZW5lIGxhIGNvbnZlcnNpb24gZGVzZGUgbGEgbW9uZWRhIGJhc2UgYSBsYSBkZXN0aW5vLiBSZWNpYmUgdW4gb2JqZXRvIGRlIHRpcG8gQ3VycmVuY3lDb25maWcuXG4gICAgICogU2kgbGEgY29udmVyc2lvbiByZXRvcm5hIHJlc3VsdGFkbyByZWFsaXphIGVsIGNhbWJpbywgZGUgbG8gY29udHJhcmlvIGVtaXRlIHVuIG1lbnNhamUgZGUgZXJyb3IuXG4gICAgICogQHBhcmFtIGJhc2VDdXJyZW5jeSBDb2RpZ28gZGUgbGEgbW9uZWRhIGJhc2UuXG4gICAgICogQHBhcmFtIHRhcmdldEN1cnJlbmN5IENvZGlnbyBkZSBsYSBtb25lZGEgZGVzdGluby5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENvbnZlcnRpYmlsaXR5ID0gKGJhc2VDdXJyZW5jeTogYW55LCB0YXJnZXRDdXJyZW5jeTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRDb252ZXJ0aWJpbGl0eUFwaShiYXNlQ3VycmVuY3ksIHRhcmdldEN1cnJlbmN5KSlcbiAgICAgICAgICAgIC50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wQ3VycmVuY3kgPSByZXNbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEN1cnJlbmN5KHRlbXBDdXJyZW5jeSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxhIHZhcmlhYmxlIHJlcyBubyBjb250aWVuZSB2YWxvciwgYXNlZ3VyZXNlIGRlIHF1ZSBlc3RhIGNvbnZlcnNpw7NuIGVzdGUgY29uZmlndXJhZGEgZW4gZWwgYmFja29mZmljZScpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdlcnJvci1jb252ZXJ0aWJpbGl0eScpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZyhlcnIpKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDYXJnYSBsYSBtb25lZGEsIHNpIGhheSB1bmEgZW4gZWwgbG9jYWxzdG9yYWdlIHRvbWEgZXNhIHkgcmVhbGl6YSBsYSBjb252ZXJzaW9uLlxuICAgICAqIGRlIGxvIGNvbnRyYXJpbyBzb2xvIHNldGVhIGVuIGVsIG9ic2VydmFibGUgY3VycmVuY3lTdWJqZWN0IGVsIHZhbG9yIHBvciBkZWZlY3RvIGNhcmdhZG8gZW4gbGFzIGNvbnN0YW50ZXMuIFxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZCA9ICgpID0+IHtcbiAgICAgICAgbGV0IGxvY2FsU3RvcmFnZUN1cnJlbmN5ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5JylcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZUN1cnJlbmN5KSB7XG4gICAgICAgICAgICBsZXQgY3VycmVuY3kgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZUN1cnJlbmN5KVxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUNvbnZlcnRpYmlsaXR5KGN1cnJlbmN5KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeVN1YmplY3QubmV4dCh0aGlzLmNvbnN0cy5jdXJyZW5jeSlcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jdXJyZW5jeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFLaEUsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQWV4QixZQUFvQixNQUFpQixFQUN6QixVQUE2QixFQUM3QixNQUFvQixFQUNwQixRQUFrQjtRQUhWLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBaEJ0QixvQkFBZSxHQUFvQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMxRSxrQkFBYSxHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwRSx3QkFBbUIsR0FBMkIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFdEUsY0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUMsa0JBQWEsR0FBRyxJQUFJLENBQUMs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QUMsQ0FBQTtnQkFDL0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFBO2FBQ3hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDbEQ7UUFDTCxDQUFDLENBQUE7UUFySkcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FtSkosQ0FBQTs7WUEzSitCLFNBQVM7WUFDYixpQkFBaUI7WUFDckIsWUFBWTtZQUNWLFFBQVE7OztBQWxCckIsZUFBZTtJQUgzQixVQUFVLENBQUM7UUFDUixVQUFVLEVBQUUsTUFBTTtLQUNyQixDQUFDO0dBQ1csZUFBZSxDQTBLM0I7U0ExS1ksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBDdXJyZW5jeUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3VycmVuY3lDb25maWcnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDaGFubmVsQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY2hhbm5lbC1jb25maWcuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgY3VycmVuY3lTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Q3VycmVuY3lDb25maWc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSlcbiAgICBwcml2YXRlIHVwZGF0ZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxCb29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG4gICAgcHJpdmF0ZSBjdXJyZW5jeUxpc3RTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSlcblxuICAgIHB1YmxpYyBjdXJyZW5jeSQgPSB0aGlzLmN1cnJlbmN5U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgdXBkYXRlJCA9IHRoaXMudXBkYXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgY3VycmVuY3lMaXN0JCA9IHRoaXMuY3VycmVuY3lMaXN0U3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHByaXZhdGUgZW5hYmxlQXBwbHlDdXJyZW5jeUV4Y2hhbmdlOiBCb29sZWFuID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgZ2V0Q3VycmVuY3lMaXN0QXBpID0gKCkgPT4gJ3Nob3AtYXBpL2N1cnJlbmNpZXMnO1xuICAgIHByaXZhdGUgZ2V0Q29udmVydGliaWxpdHlBcGkgPSAoYmFzZUN1cnJlbmN5OiBhbnksIHRhcmdldEN1cnJlbmN5OiBhbnkpID0+ICdzaG9wLWFwaS9jdXJyZW5jaWVzP2Jhc2VDdXJyZW5jeT0nICsgYmFzZUN1cnJlbmN5ICsgJyZ0YXJnZXRDdXJyZW5jeT0nICsgdGFyZ2V0Q3VycmVuY3k7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLFxuICAgICAgICBwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuY2hhbm5lbENvbmZpZyQuc3Vic2NyaWJlKGNoYW5uZWwgPT4ge1xuICAgICAgICAgICAgY2hhbm5lbC5hcHBseUN1cnJlbmN5RXhjaGFuZ2UgPyB0aGlzLmxvYWRDdXJyZW5jeUxpc3QoKSA6IHRoaXMubG9hZERlZmF1bHRDdXJyZW5jeShjaGFubmVsLmJhc2VDdXJyZW5jeSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmVuYWJsZUFwcGx5Q3VycmVuY3lFeGNoYW5nZSlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlIGNhcmdhIGxhIG1vbmVkYSBwb3IgZGVmZWN0byBjb24gbWV0YWRhdG9zIChzw61tYm9sbywgcG9zaWNpw7NuLCBkZWNpbWFsZXMpLlxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZERlZmF1bHRDdXJyZW5jeSA9IChjdXJyZW5jeUNvZGUpID0+IHtcbiAgICAgICAgLy8gVHJhZSBsYSBsaXN0YSBpZ3VhbCBwYXJhIHRlbmVyIGxhIGNvbmZpZ3VyYWNpw7NuIGNvbXBsZXRhXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRDdXJyZW5jeUxpc3RBcGkoKSkudG9Qcm9taXNlKCkudGhlbigobGlzdDogYW55W10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lMaXN0U3ViamVjdC5uZXh0KGxpc3QpO1xuICAgICAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3lUeXBlQ29uZmlnKGxpc3QpO1xuXG4gICAgICAgICAgICBjb25zdCBjZmcgPSBsaXN0Py5maW5kKGMgPT4gYy5jb2RlID09PSBjdXJyZW5jeUNvZGUpO1xuICAgICAgICAgICAgaWYgKGNmZykge1xuICAgICAgICAgICAgICAgIC8vIFNldGVhIG1vbmVkYSBhY3RpdmEgY29uIHN1IGNvbmZpZ3VyYWNpw7NuIGNvbXBsZXRhXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY2ZnLmNvZGUsIGNmZyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5KGN1cnJlbmN5Q29kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBFbiBjYXNvIGRlIGVycm9yLCBhbCBtZW5vcyBmaWrDoSBlbCBjw7NkaWdvIHBhcmEgbm8gcm9tcGVyIGVsIGZsdWpvXG4gICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjdXJyZW5jeUNvZGUpO1xuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBjYWxjdWxhIGxhIGNvbnZldGliaWxpZGFkIGRlbCBwcmVjaW8gIHBhc2FkbyBwb3IgcGFyYW1lbnRybyBzZWd1biBlc3RhIGZvcm11bGE6XG4gICAgICogKipjID0gYSAqIGIqKiBkb25kZSAqYz1tb25lZGEgZGVzcHVlcyBkZWwgY2FtYmlvKiwgKmE9dmFsb3IgcXVlIHF1aWVybyBjYW1iaWFyKiB5ICpiPXJhdGlvIGRlIGNhbWJpbyouIFxuICAgICAqIEBwYXJhbSBwcmljZSBQcmVjaW8gYSBjYW1iaWFyXG4gICAgICogQHBhcmFtIHJhdGlvIFJhdGlvIGRlIGNhbWJpb1xuICAgICAqIEByZXR1cm5zIFNpIGVsIHJhdGlvIG5vIGVzIG51bGwsIHJldG9ybmEgZWwgcHJlY2lvIGNhbWJpYWRvLCBzaW5vIHJldG9ybmEgZWwgcHJlY2lvIHNpbiBjYW1iaW9zLiBcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FsY3VsYXRlQ29udmV0aWJpbGl0eSA9IChwcmljZSwgcmF0aW8pID0+IHtcbiAgICAgICAgcmV0dXJuIHJhdGlvID8gcHJpY2UgKiByYXRpbyA6IHByaWNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjb2RlIENvZGlnbyBkZSBtb25lZGEgYSBsYSBxdWUgc2UgZGVzZWEgY2FtYmlhclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDdXJyZW5jeSA9IGFzeW5jIChjb2RlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5nZXRDb252ZXJ0aWJpbGl0eSh0aGlzLmNvbnN0cy5jdXJyZW5jeS5jb2RlLCBjb2RlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhcmdhIGxhIGxpc3RhIGRlIG1vbmVkYXMgZGVzZGUgbGEgQVBJIHkgcmVnaXN0cmEgbGEgY29uZmlndXJhY2nDs24gY29tcGxldGEgZW4gYENvbnN0YW50c2AuXG4gICAgICpcbiAgICAgKiBTaSBubyBleGlzdGUgdW5hIG1vbmVkYSBhY3RpdmEgZ3VhcmRhZGEgZW4gYGxvY2FsU3RvcmFnZWAsIGluaWNpYWxpemEgbGEgbW9uZWRhIGFjdGl2YVxuICAgICAqIHRvbWFuZG8gbGEgbW9uZWRhIGJhc2UgZGVsIGNhbmFsIChgQ2hhbm5lbENvbmZpZ1NlcnZpY2UuYmFzZUN1cnJlbmN5YCkgeSBzdXMgbWV0YWRhdG9zXG4gICAgICogb2J0ZW5pZG9zIGRlIGxhIGxpc3RhIChzw61tYm9sbywgcG9zaWNpw7NuLCBkZWNpbWFsZXMpLiBTaSBubyBzZSBlbmN1ZW50cmEgbGEgYmFzZSBlbiBsYVxuICAgICAqIGxpc3RhLCB1c2EgbGEgcHJpbWVyYSBkaXNwb25pYmxlLlxuICAgICAqXG4gICAgICogRmluYWxtZW50ZSwgbGxhbWEgYSBgbG9hZCgpYCBwYXJhIHByb3BhZ2FyIGxhIGNvbmZpZ3VyYWNpw7NuIGEgbG9zIG9ic2VydmFibGVzIHkgKHNpIGFwbGljYSlcbiAgICAgKiBhY3R1YWxpemFyIGBsb2NhbFN0b3JhZ2VgLlxuICAgICAqXG4gICAgICogQHNpZGVFZmZlY3QgQWN0dWFsaXphIGBjdXJyZW5jeUxpc3QkYCwgYENvbnN0YW50cy5zZXRDdXJyZW5jeVR5cGVDb25maWdgIHkgcG90ZW5jaWFsbWVudGVcbiAgICAgKiAgICAgICAgICAgICBgQ29uc3RhbnRzLnNldEN1cnJlbmN5YC5cbiAgICAgKiBAcmV0dXJucyB2b2lkXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkQ3VycmVuY3lMaXN0ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0Q3VycmVuY3lMaXN0QXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lMaXN0U3ViamVjdC5uZXh0KHJlcyk7XG4gICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeVR5cGVDb25maWcocmVzKTtcblxuICAgICAgICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5Jyk7XG4gICAgICAgICAgICBpZiAoIXN0b3JlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuZ2V0QWN0aXZlQ2hhbm5lbCgpPy5iYXNlQ3VycmVuY3k7XG4gICAgICAgICAgICAgICAgY29uc3QgY2ZnID0gcmVzPy5maW5kKGMgPT4gYy5jb2RlID09PSBiYXNlKSA/PyByZXM/LlswXTtcbiAgICAgICAgICAgICAgICBpZiAoY2ZnKSB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjZmcuY29kZSwgY2ZnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gZ2VuZXJhIGxhIGNhcmdhIHkgY29uZmlndXJhY2nDs24gZGUgbGEgbW9uZWRhIGVsZWdpZGEgcGFyYSBsYSBjb252ZXJzaW9uLlxuICAgICAqIEBwYXJhbSBjdXJyZW5jeSBNb25lZGEgYSBjb252ZXJ0aXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkQ3VycmVuY3kgPSAoY3VycmVuY3k6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbmN5U3ViamVjdC5uZXh0KGN1cnJlbmN5KTtcbiAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY3VycmVuY3kuY29kZSk7XG4gICAgICAgIGxldCB1cGRhdGUgPSB0aGlzLnVwZGF0ZVN1YmplY3QuZ2V0VmFsdWUoKVxuICAgICAgICB0aGlzLnVwZGF0ZVN1YmplY3QubmV4dCghdXBkYXRlKVxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY3VycmVuY3knLCBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnN0cy5jdXJyZW5jeSkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEdlbmVyYSBsYSBjb252ZXJ0aWJpbGlkYWQgZGUgbGEgbW9uZWRhIGJhc2UgYSBsYSBudWV2YS4gU2kgYmFzZUN1cnJlbmN5IG5vIHRpZW5lIHZhbG9yIFxuICAgICAqIGVudG9uY2VzIHV0aWxpemEgbGEgbW9uZWRhIGJhc2UgZGVsIGNhbmFsLlxuICAgICAqIEBwYXJhbSBjdXJyZW5jeSBPYmpldG8gZGUgbGEgbW9uZWRhIGRlc3Rpbm8uXG4gICAgICogQHBhcmFtIGJhc2VDdXJyZW5jeSBDb2RpZ28gZGUgbGEgbW9uZWRhIGJhc2UuICpFajogVVNEIHwgQVJTIHwgRVVSIHwuLi4qXG4gICAgICovXG4gICAgZ2VuZXJhdGVDb252ZXJ0aWJpbGl0eSA9IGFzeW5jIChjdXJyZW5jeTogYW55LCBiYXNlQ3VycmVuY3k/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKCFiYXNlQ3VycmVuY3kpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYmFzZUN1cnJlbmN5ID0gYXdhaXQgdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbENvbmZpZ1NlcnZpY2UpLmdldEFjdGl2ZUNoYW5uZWwoKS5iYXNlQ3VycmVuY3k7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICBiYXNlQ3VycmVuY3kgPSAnVVNEJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW5jeS5jb2RlID09IGJhc2VDdXJyZW5jeSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ3VycmVuY3koY3VycmVuY3kpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nZXRDb252ZXJ0aWJpbGl0eShiYXNlQ3VycmVuY3ksIGN1cnJlbmN5LmNvZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9idGllbmUgbGEgY29udmVyc2lvbiBkZXNkZSBsYSBtb25lZGEgYmFzZSBhIGxhIGRlc3Rpbm8uIFJlY2liZSB1biBvYmpldG8gZGUgdGlwbyBDdXJyZW5jeUNvbmZpZy5cbiAgICAgKiBTaSBsYSBjb252ZXJzaW9uIHJldG9ybmEgcmVzdWx0YWRvIHJlYWxpemEgZWwgY2FtYmlvLCBkZSBsbyBjb250cmFyaW8gZW1pdGUgdW4gbWVuc2FqZSBkZSBlcnJvci5cbiAgICAgKiBAcGFyYW0gYmFzZUN1cnJlbmN5IENvZGlnbyBkZSBsYSBtb25lZGEgYmFzZS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0Q3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBkZXN0aW5vLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q29udmVydGliaWxpdHkgPSAoYmFzZUN1cnJlbmN5OiBhbnksIHRhcmdldEN1cnJlbmN5OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldENvbnZlcnRpYmlsaXR5QXBpKGJhc2VDdXJyZW5jeSwgdGFyZ2V0Q3VycmVuY3kpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBDdXJyZW5jeSA9IHJlc1swXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkQ3VycmVuY3kodGVtcEN1cnJlbmN5KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbGEgdmFyaWFibGUgcmVzIG5vIGNvbnRpZW5lIHZhbG9yLCBhc2VndXJlc2UgZGUgcXVlIGVzdGEgY29udmVyc2nDs24gZXN0ZSBjb25maWd1cmFkYSBlbiBlbCBiYWNrb2ZmaWNlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ2Vycm9yLWNvbnZlcnRpYmlsaXR5JylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkuY2F0Y2goZXJyID0+IGNvbnNvbGUubG9nKGVycikpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhcmdhIGxhIG1vbmVkYSwgc2kgaGF5IHVuYSBlbiBlbCBsb2NhbHN0b3JhZ2UgdG9tYSBlc2EgeSByZWFsaXphIGxhIGNvbnZlcnNpb24uXG4gICAgICogZGUgbG8gY29udHJhcmlvIHNvbG8gc2V0ZWEgZW4gZWwgb2JzZXJ2YWJsZSBjdXJyZW5jeVN1YmplY3QgZWwgdmFsb3IgcG9yIGRlZmVjdG8gY2FyZ2FkbyBlbiBsYXMgY29uc3RhbnRlcy4gXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkID0gKCkgPT4ge1xuICAgICAgICBsZXQgbG9jYWxTdG9yYWdlQ3VycmVuY3kgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVuY3knKVxuICAgICAgICBpZiAobG9jYWxTdG9yYWdlQ3VycmVuY3kpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW5jeSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlQ3VycmVuY3kpXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ29udmVydGliaWxpdHkoY3VycmVuY3kpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5U3ViamVjdC5uZXh0KHRoaXMuY29uc3RzLmN1cnJlbmN5KVxuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -14,7 +14,7 @@ import { SortFilter } from '../classes/filters/SortFilter';
|
|
|
14
14
|
import { OptionsService } from './options.service';
|
|
15
15
|
import { PriceRangeFilter } from '../classes/filters/PriceRangeFilter';
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "
|
|
17
|
+
import * as i1 from "./options.service";
|
|
18
18
|
import * as i2 from "@angular/router";
|
|
19
19
|
let FiltersService = class FiltersService {
|
|
20
20
|
constructor(options, route) {
|
|
@@ -112,7 +112,7 @@ FiltersService.ctorParameters = () => [
|
|
|
112
112
|
{ type: OptionsService },
|
|
113
113
|
{ type: Router }
|
|
114
114
|
];
|
|
115
|
-
FiltersService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FiltersService_Factory() { return new
|
|
115
|
+
FiltersService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FiltersService_Factory() { return new FiltersService(i0.ɵɵinject(i1.OptionsService), i0.ɵɵinject(i2.Router)); }, token: FiltersService, providedIn: "root" });
|
|
116
116
|
FiltersService = __decorate([
|
|
117
117
|
Injectable({
|
|
118
118
|
providedIn: 'root'
|
|
@@ -12,7 +12,8 @@ import { catchError, first } from 'rxjs/operators';
|
|
|
12
12
|
import 'rxjs/add/operator/catch';
|
|
13
13
|
import { pickFooterForDevice } from './footer.pick';
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "
|
|
15
|
+
import * as i1 from "../../api/connection.service";
|
|
16
|
+
import * as i2 from "../../core.consts";
|
|
16
17
|
let FooterService = class FooterService {
|
|
17
18
|
constructor(conn, consts) {
|
|
18
19
|
this.conn = conn;
|
|
@@ -100,11 +101,11 @@ FooterService.ctorParameters = () => [
|
|
|
100
101
|
{ type: ConnectionService },
|
|
101
102
|
{ type: Constants }
|
|
102
103
|
];
|
|
103
|
-
FooterService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FooterService_Factory() { return new
|
|
104
|
+
FooterService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FooterService_Factory() { return new FooterService(i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i2.Constants)); }, token: FooterService, providedIn: "root" });
|
|
104
105
|
FooterService = __decorate([
|
|
105
106
|
Injectable({
|
|
106
107
|
providedIn: 'root'
|
|
107
108
|
})
|
|
108
109
|
], FooterService);
|
|
109
110
|
export { FooterService };
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZm9vdGVyL2Zvb3Rlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUtwRCxJQUFhLGFBQWEsR0FBMUIsTUFBYSxhQUFhO0lBV3RCLFlBQW9CLElBQXVCLEVBQVUsTUFBaUI7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBVjlELG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQzlELGFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTdDLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBQ3BFLFlBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTNDLGVBQVUsR0FBaUIsRUFBRSxDQUFDO1FBQzlCLGtCQUFhLEdBQXlCLFNBQVMsQ0FBQztRQUNoRCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBSWhCLGNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FDcEIsV0FBVyxHQUFHLElBQUksQ0FB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WUFBa0IsU0FBUzs7O0FBWDdELGFBQWE7SUFIekIsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztHQUNXLGFBQWEsQ0ErRnpCO1NBL0ZZLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL2NhdGNoJztcbmltcG9ydCB7IEZvb3RlckNvbHVtblZpZXcsIEZvb3RlckV4dHJhc1ZpZXcsIEZvb3RlclZpZXcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvb3Rlci50eXBlcyc7XG5pbXBvcnQgeyBwaWNrRm9vdGVyRm9yRGV2aWNlIH0gZnJvbSAnLi9mb290ZXIucGljayc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRm9vdGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSBjb2x1bW5zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9vdGVyQ29sdW1uVmlld1tdPihbXSk7XG4gICAgcHVibGljIGNvbHVtbnMkID0gdGhpcy5jb2x1bW5zU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHByaXZhdGUgZXh0cmFzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9vdGVyRXh0cmFzVmlldyB8IG51bGw+KG51bGwpO1xuICAgIHB1YmxpYyBleHRyYXMkID0gdGhpcy5leHRyYXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBjYWNoZWRMaXN0OiBGb290ZXJWaWV3W10gPSBbXTtcbiAgICBwcml2YXRlIGN1cnJlbnREZXZpY2U6ICdkZXNrdG9wJyB8ICdtb2JpbGUnID0gJ2Rlc2t0b3AnO1xuICAgIHByaXZhdGUgbG9hZGVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm46IENvbm5lY3Rpb25TZXJ2aWNlLCBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzKSB7IH1cblxuICAgIHB1YmxpYyBmb290ZXJBcGkgPSAoKSA9PlxuICAgICAgICAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvZm9vdGVyJyArICc/bG9jYWxlPScgKyB0aGlzLmNvbnN0cy5nZXRMb2NhbGUoKTtcblxuICAgIGxvYWQoZGV2aWNlPzogJ2Rlc2t0b3AnIHwgJ21vYmlsZScpIHtcbiAgICAgICAgdGhpcy5jb25uLmdldCh0aGlzLmZvb3RlckFwaSgpKVxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBGb290ZXJWaWV3W10gfCBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpc3Q6IEZvb3RlclZpZXdbXSA9IEFycmF5LmlzQXJyYXkocmVzKSA/IChyZXMgYXMgRm9vdGVyVmlld1tdKSA6IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGQ6ICdkZXNrdG9wJyB8ICdtb2JpbGUnID0gZGV2aWNlIHx8ICh0aGlzLmlzTW9iaWxlKCkgPyAnbW9iaWxlJyA6ICdkZXNrdG9wJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hvc2VuID0gcGlja0Zvb3RlckZvckRldmljZShsaXN0LCBkKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHMgPSAoY2hvc2VuPy5jb2x1bW5zIHx8IFtdKS5zbGljZSgpLnNvcnQodGhpcy5ieVBvcyk7XG4gICAgICAgICAgICAgICAgY29scy5mb3JFYWNoKGMgPT4gYy5pdGVtcyAmJiBjLml0ZW1zLnNvcnQodGhpcy5ieVBvcykpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1N1YmplY3QubmV4dChjb2xzKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZXh0cmFzU3ViamVjdC5uZXh0KGNob3Nlbj8uZXh0cmFzID8/IG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuICAgIGxvYWRPbmNlKGluaXRpYWxEZXZpY2U/OiAnZGVza3RvcCcgfCAnbW9iaWxlJykge1xuICAgICAgICBpZiAodGhpcy5sb2FkZWQpIHtcbiAgICAgICAgICAgIGlmIChpbml0aWFsRGV2aWNlICYmIGluaXRpYWxEZXZpY2UgIT09IHRoaXMuY3VycmVudERldmljZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERldmljZSA9IGluaXRpYWxEZXZpY2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseURldmljZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50RGV2aWNlID0gaW5pdGlhbERldmljZSB8fCB0aGlzLmdldERldmljZUJ5V2lkdGgoKTtcbiAgICAgICAgdGhpcy5jb25uLmdldCh0aGlzLmZvb3RlckFwaSgpKVxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihbXSBhcyBGb290ZXJWaWV3W10pKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogRm9vdGVyVmlld1tdIHwgYW55W10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlZExpc3QgPSBBcnJheS5pc0FycmF5KHJlcykgPyAocmVzIGFzIEZvb3RlclZpZXdbXSkgOiBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseURldmljZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0RGV2aWNlKGRldmljZTogJ2Rlc2t0b3AnIHwgJ21vYmlsZScpIHtcbiAgICAgICAgaWYgKGRldmljZSA9PT0gdGhpcy5jdXJyZW50RGV2aWNlKSByZXR1cm47XG4gICAgICAgIHRoaXMuY3VycmVudERldmljZSA9IGRldmljZTtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRlZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmFwcGx5RGV2aWNlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseURldmljZSgpIHtcbiAgICAgICAgY29uc3QgY2hvc2VuID0gcGlja0Zvb3RlckZvckRldmljZSh0aGlzLmNhY2hlZExpc3QsIHRoaXMuY3VycmVudERldmljZSk7XG5cbiAgICAgICAgY29uc3QgY29scyA9IChjaG9zZW4/LmNvbHVtbnMgfHwgW10pLnNsaWNlKCkuc29ydCh0aGlzLmJ5UG9zKTtcbiAgICAgICAgY29scy5mb3JFYWNoKGMgPT4gYy5pdGVtcyAmJiBjLml0ZW1zLnNvcnQodGhpcy5ieVBvcykpO1xuICAgICAgICB0aGlzLmNvbHVtbnNTdWJqZWN0Lm5leHQoY29scyk7XG5cbiAgICAgICAgdGhpcy5leHRyYXNTdWJqZWN0Lm5leHQoY2hvc2VuPy5leHRyYXMgPz8gbnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBieVBvcyA9IChhOiB7IHBvc2l0aW9uOiBudW1iZXIgfSwgYjogeyBwb3NpdGlvbjogbnVtYmVyIH0pID0+XG4gICAgICAgIChhPy5wb3NpdGlvbiB8fCAwKSAtIChiPy5wb3NpdGlvbiB8fCAwKTtcblxuICAgIHByaXZhdGUgZ2V0RGV2aWNlQnlXaWR0aCgpOiAnZGVza3RvcCcgfCAnbW9iaWxlJyB7XG4gICAgICAgIHJldHVybiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmlubmVyV2lkdGggPCA3NTApID8gJ21vYmlsZScgOiAnZGVza3RvcCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc01vYmlsZSA9ICgpID0+ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgJiYgd2luZG93LmlubmVyV2lkdGggPCA3NTA7XG5cbiAgICBwcmVmZXRjaChkZXZpY2U/OiAnZGVza3RvcCcgfCAnbW9iaWxlJyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbm4uZ2V0KHRoaXMuZm9vdGVyQXBpKCkpXG4gICAgICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpLCBmaXJzdCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55W10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkocmVzKSA/IHJlcyA6IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkOiAnZGVza3RvcCcgfCAnbW9iaWxlJyA9IGRldmljZSB8fCAodGhpcy5pc01vYmlsZSgpID8gJ21vYmlsZScgOiAnZGVza3RvcCcpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaG9zZW4gPSBwaWNrRm9vdGVyRm9yRGV2aWNlKGxpc3QgYXMgYW55LCBkKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xzID0gKGNob3Nlbj8uY29sdW1ucyB8fCBbXSkuc2xpY2UoKS5zb3J0KHRoaXMuYnlQb3MpO1xuICAgICAgICAgICAgICAgICAgICBjb2xzLmZvckVhY2goYyA9PiBjLml0ZW1zICYmIGMuaXRlbXMuc29ydCh0aGlzLmJ5UG9zKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1N1YmplY3QubmV4dChjb2xzKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4dHJhc1N1YmplY3QubmV4dCgoY2hvc2VuIGFzIEZvb3RlclZpZXcgfCB1bmRlZmluZWQpPy5leHRyYXMgPz8gbnVsbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZm9vdGVyL2Zvb3Rlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLcEQsSUFBYSxhQUFhLEdBQTFCLE1BQWEsYUFBYTtJQVd0QixZQUFvQixJQUF1QixFQUFVLE1BQWlCO1FBQWxELFNBQUksR0FBSixJQUFJLENBQW1CO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVY5RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFxQixFQUFFLENBQUMsQ0FBQztRQUM5RCxhQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUU3QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUEwQixJQUFJLENBQUMsQ0FBQztRQUNwRSxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUzQyxlQUFVLEdBQWlCLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUF5QixTQUFTLENBQUM7UUFDaEQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUloQixjQUFTLEdBQUcsR0FBRyxFQUFFLENBQ3BCLFdBQVcsR0FBRyxJQUFJLENB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O1lBQWtCLFNBQVM7OztBQVg3RCxhQUFhO0lBSHpCLFVBQVUsQ0FBQztRQUNSLFVBQVUsRUFBRSxNQUFNO0tBQ3JCLENBQUM7R0FDVyxhQUFhLENBK0Z6QjtTQS9GWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jYXRjaCc7XG5pbXBvcnQgeyBGb290ZXJDb2x1bW5WaWV3LCBGb290ZXJFeHRyYXNWaWV3LCBGb290ZXJWaWV3IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb290ZXIudHlwZXMnO1xuaW1wb3J0IHsgcGlja0Zvb3RlckZvckRldmljZSB9IGZyb20gJy4vZm9vdGVyLnBpY2snO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZvb3RlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgY29sdW1uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvb3RlckNvbHVtblZpZXdbXT4oW10pO1xuICAgIHB1YmxpYyBjb2x1bW5zJCA9IHRoaXMuY29sdW1uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwcml2YXRlIGV4dHJhc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvb3RlckV4dHJhc1ZpZXcgfCBudWxsPihudWxsKTtcbiAgICBwdWJsaWMgZXh0cmFzJCA9IHRoaXMuZXh0cmFzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHByaXZhdGUgY2FjaGVkTGlzdDogRm9vdGVyVmlld1tdID0gW107XG4gICAgcHJpdmF0ZSBjdXJyZW50RGV2aWNlOiAnZGVza3RvcCcgfCAnbW9iaWxlJyA9ICdkZXNrdG9wJztcbiAgICBwcml2YXRlIGxvYWRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uOiBDb25uZWN0aW9uU2VydmljZSwgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cykgeyB9XG5cbiAgICBwdWJsaWMgZm9vdGVyQXBpID0gKCkgPT5cbiAgICAgICAgJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2Zvb3RlcicgKyAnP2xvY2FsZT0nICsgdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCk7XG5cbiAgICBsb2FkKGRldmljZT86ICdkZXNrdG9wJyB8ICdtb2JpbGUnKSB7XG4gICAgICAgIHRoaXMuY29ubi5nZXQodGhpcy5mb290ZXJBcGkoKSlcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogRm9vdGVyVmlld1tdIHwgYW55W10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0OiBGb290ZXJWaWV3W10gPSBBcnJheS5pc0FycmF5KHJlcykgPyAocmVzIGFzIEZvb3RlclZpZXdbXSkgOiBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkOiAnZGVza3RvcCcgfCAnbW9iaWxlJyA9IGRldmljZSB8fCAodGhpcy5pc01vYmlsZSgpID8gJ21vYmlsZScgOiAnZGVza3RvcCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNob3NlbiA9IHBpY2tGb290ZXJGb3JEZXZpY2UobGlzdCwgZCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb2xzID0gKGNob3Nlbj8uY29sdW1ucyB8fCBbXSkuc2xpY2UoKS5zb3J0KHRoaXMuYnlQb3MpO1xuICAgICAgICAgICAgICAgIGNvbHMuZm9yRWFjaChjID0+IGMuaXRlbXMgJiYgYy5pdGVtcy5zb3J0KHRoaXMuYnlQb3MpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNTdWJqZWN0Lm5leHQoY29scyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhc1N1YmplY3QubmV4dChjaG9zZW4/LmV4dHJhcyA/PyBudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkT25jZShpbml0aWFsRGV2aWNlPzogJ2Rlc2t0b3AnIHwgJ21vYmlsZScpIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZGVkKSB7XG4gICAgICAgICAgICBpZiAoaW5pdGlhbERldmljZSAmJiBpbml0aWFsRGV2aWNlICE9PSB0aGlzLmN1cnJlbnREZXZpY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnREZXZpY2UgPSBpbml0aWFsRGV2aWNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlEZXZpY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudERldmljZSA9IGluaXRpYWxEZXZpY2UgfHwgdGhpcy5nZXREZXZpY2VCeVdpZHRoKCk7XG4gICAgICAgIHRoaXMuY29ubi5nZXQodGhpcy5mb290ZXJBcGkoKSlcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10gYXMgRm9vdGVyVmlld1tdKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IEZvb3RlclZpZXdbXSB8IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZWRMaXN0ID0gQXJyYXkuaXNBcnJheShyZXMpID8gKHJlcyBhcyBGb290ZXJWaWV3W10pIDogW107XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlEZXZpY2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldERldmljZShkZXZpY2U6ICdkZXNrdG9wJyB8ICdtb2JpbGUnKSB7XG4gICAgICAgIGlmIChkZXZpY2UgPT09IHRoaXMuY3VycmVudERldmljZSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmN1cnJlbnREZXZpY2UgPSBkZXZpY2U7XG4gICAgICAgIGlmICghdGhpcy5sb2FkZWQpIHJldHVybjtcbiAgICAgICAgdGhpcy5hcHBseURldmljZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlEZXZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGNob3NlbiA9IHBpY2tGb290ZXJGb3JEZXZpY2UodGhpcy5jYWNoZWRMaXN0LCB0aGlzLmN1cnJlbnREZXZpY2UpO1xuXG4gICAgICAgIGNvbnN0IGNvbHMgPSAoY2hvc2VuPy5jb2x1bW5zIHx8IFtdKS5zbGljZSgpLnNvcnQodGhpcy5ieVBvcyk7XG4gICAgICAgIGNvbHMuZm9yRWFjaChjID0+IGMuaXRlbXMgJiYgYy5pdGVtcy5zb3J0KHRoaXMuYnlQb3MpKTtcbiAgICAgICAgdGhpcy5jb2x1bW5zU3ViamVjdC5uZXh0KGNvbHMpO1xuXG4gICAgICAgIHRoaXMuZXh0cmFzU3ViamVjdC5uZXh0KGNob3Nlbj8uZXh0cmFzID8/IG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnlQb3MgPSAoYTogeyBwb3NpdGlvbjogbnVtYmVyIH0sIGI6IHsgcG9zaXRpb246IG51bWJlciB9KSA9PlxuICAgICAgICAoYT8ucG9zaXRpb24gfHwgMCkgLSAoYj8ucG9zaXRpb24gfHwgMCk7XG5cbiAgICBwcml2YXRlIGdldERldmljZUJ5V2lkdGgoKTogJ2Rlc2t0b3AnIHwgJ21vYmlsZScge1xuICAgICAgICByZXR1cm4gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5pbm5lcldpZHRoIDwgNzUwKSA/ICdtb2JpbGUnIDogJ2Rlc2t0b3AnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNb2JpbGUgPSAoKSA9PiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpICYmIHdpbmRvdy5pbm5lcldpZHRoIDwgNzUwO1xuXG4gICAgcHJlZmV0Y2goZGV2aWNlPzogJ2Rlc2t0b3AnIHwgJ21vYmlsZScpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb25uLmdldCh0aGlzLmZvb3RlckFwaSgpKVxuICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSwgZmlyc3QoKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBBcnJheS5pc0FycmF5KHJlcykgPyByZXMgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZDogJ2Rlc2t0b3AnIHwgJ21vYmlsZScgPSBkZXZpY2UgfHwgKHRoaXMuaXNNb2JpbGUoKSA/ICdtb2JpbGUnIDogJ2Rlc2t0b3AnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hvc2VuID0gcGlja0Zvb3RlckZvckRldmljZShsaXN0IGFzIGFueSwgZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29scyA9IChjaG9zZW4/LmNvbHVtbnMgfHwgW10pLnNsaWNlKCkuc29ydCh0aGlzLmJ5UG9zKTtcbiAgICAgICAgICAgICAgICAgICAgY29scy5mb3JFYWNoKGMgPT4gYy5pdGVtcyAmJiBjLml0ZW1zLnNvcnQodGhpcy5ieVBvcykpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNTdWJqZWN0Lm5leHQoY29scyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHRyYXNTdWJqZWN0Lm5leHQoKGNob3NlbiBhcyBGb290ZXJWaWV3IHwgdW5kZWZpbmVkKT8uZXh0cmFzID8/IG51bGwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|