@infrab4a/connect-angular 2.0.6-beta.5 → 2.0.6-beta.6
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.
|
@@ -189,14 +189,28 @@ export class CouponService {
|
|
|
189
189
|
console.log('produto não tem categorias');
|
|
190
190
|
return true;
|
|
191
191
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
192
|
+
let couponCategories = [];
|
|
193
|
+
for (let index = 0; index < coupon.productsCategories.length; index++) {
|
|
194
|
+
let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
|
|
195
|
+
couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
|
|
196
|
+
}
|
|
197
|
+
console.log('couponCategories', couponCategories.length, couponCategories);
|
|
198
|
+
return i.categories.some((c) => {
|
|
199
|
+
console.log('some 1 ', c);
|
|
200
|
+
return couponCategories.some(cat => {
|
|
201
|
+
console.log('some 2', cat, cat.id == c, cat.firestoreId);
|
|
202
|
+
if (cat.id == c || cat.firestoreId)
|
|
203
|
+
return true;
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
// return i.categories.some(async (c) => {
|
|
207
|
+
// console.log('some category c', c)
|
|
208
|
+
// const categoria: Category & { firestoreId?: string } = await this.categoryRepository.get({id: c})
|
|
209
|
+
// console.log(categoria)
|
|
210
|
+
// console.log(coupon.productsCategories.includes(categoria.id), coupon.productsCategories.includes(categoria.firestoreId), i.isGift)
|
|
211
|
+
// console.log('validation', (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift)
|
|
212
|
+
// return (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift
|
|
213
|
+
// })
|
|
200
214
|
}));
|
|
201
215
|
console.log('final return', hasCategories, hasCategories.length);
|
|
202
216
|
return hasCategories.length ? true : false;
|
|
@@ -262,4 +276,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
|
|
|
262
276
|
type: Inject,
|
|
263
277
|
args: ['CategoryRepository']
|
|
264
278
|
}] }]; } });
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBS0wsYUFBYSxFQUNiLE1BQU0sRUFFTixXQUFXLEVBQ1gsYUFBYSxFQUdiLEtBQUssRUFDTCxNQUFNLEVBRU4sS0FBSyxFQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUs3QyxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0IsRUFDYixlQUFnQyxFQUN6QixzQkFBOEMsRUFDbEQsa0JBQXNDO1FBSnhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87UUFDYixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDekIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUNsRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBMEIvRSw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtRQThQNUYseUJBQW9CLEdBQUcsQ0FDN0Is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ci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENhdGVnb3J5LFxyXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICBDaGVja291dCxcclxuICBDaGVja291dFN1YnNjcmlwdGlvbixcclxuICBDaGVja291dFR5cGVzLFxyXG4gIENvdXBvbixcclxuICBDb3Vwb25SZXBvc2l0b3J5LFxyXG4gIENvdXBvblR5cGVzLFxyXG4gIEV4Y2x1c2l2aXRpZXMsXHJcbiAgTGluZUl0ZW0sXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIFNob3BzLFxyXG4gIFN0YXR1cyxcclxuICBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gIFdoZXJlXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IEludmFsaWRDb3Vwb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvdXBvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ291cG9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY291cG9uUmVwb3NpdG9yeTogQ291cG9uUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTaG9wOiBTaG9wcyxcclxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICApIHt9XHJcblxyXG4gIGNoZWNrQ291cG9uKFxyXG4gICAgbmlja25hbWU6IHN0cmluZyxcclxuICAgIHVzZXJFbWFpbDogc3RyaW5nLFxyXG4gICAgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzLFxyXG4gICAgcGxhbj86IHN0cmluZyxcclxuICAgIGNoZWNrb3V0PzogUGFydGlhbDxDaGVja291dD4sXHJcbiAgICBpc1N1YnNjcmlwdGlvbj86IGJvb2xlYW4sXHJcbiAgKTogT2JzZXJ2YWJsZTxDb3Vwb24+IHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLmNvdXBvblJlcG9zaXRvcnkuZmluZCh7XHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgbmlja25hbWU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IG5pY2tuYW1lIH0sXHJcbiAgICAgICAgICBhY3RpdmU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRydWUgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KSxcclxuICAgICkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjb3Vwb25zKSA9PiB0aGlzLmNoZWNrQ291cG9uUnVsZXMoY291cG9ucywgY2hlY2tvdXRUeXBlLCBwbGFuLCBjaGVja291dCwgaXNTdWJzY3JpcHRpb24pKSxcclxuICAgICAgY29uY2F0TWFwKChjb3Vwb246IENvdXBvbikgPT4gdGhpcy5jaGVja0NvdXBvblVzZUFuZExpbWl0KGNvdXBvbiwgdXNlckVtYWlsLCBjaGVja291dCkpLFxyXG4gICAgICBtYXAoKGNvdXBvbjogQ291cG9uKSA9PiB0aGlzLmlzVmFsaWRDb3Vwb24oY291cG9uLCB1c2VyRW1haWwpKSxcclxuICAgICAgbWFwKChjb3Vwb246IENvdXBvbikgPT4gY291cG9uKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1haWxJc0Zyb21Db2xsYWJvcmF0b3IgPSAodXNlckVtYWlsOiBzdHJpbmcpOiBib29sZWFuID0+ICEhdXNlckVtYWlsPy5tYXRjaCgvQGI0YS5jb20uYnIvZylcclxuXHJcbiAgcHJpdmF0ZSBjaGVja0NvdXBvblJ1bGVzKFxyXG4gICAgY291cG9ucyxcclxuICAgIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyxcclxuICAgIHBsYW4/OiBzdHJpbmcsXHJcbiAgICBjaGVja291dD86IFBhcnRpYWw8Q2hlY2tvdXQ+LFxyXG4gICAgaXNTdWJzY3JpcHRpb24/OiBib29sZWFuLFxyXG4gICkge1xyXG4gICAgLy8gQ2FzbyBuw6NvIGFjaGUgbmVuaHVtIGN1cG9tLCByZXRvcm5hIGVycm9cclxuICAgIGlmIChjb3Vwb25zLmNvdW50IDwgMSkge1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvLicpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gR2V0IFByaW1laXJvIEN1cG9tIChvIGZpbmQgZG8gcmVwb3NpdG9yeSByZXRvcm5hIHVtIGFycmF5KVxyXG4gICAgY29uc3QgY291cG9uOiBDb3Vwb24gPSBjb3Vwb25zLmRhdGEuc2hpZnQoKVxyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBjdXBvbSDDqSBhcGxpY2F2ZWwgbmEgbG9qYVxyXG4gICAgY29uc3QgaXNJblNob3AgPSBjb3Vwb24uc2hvcEF2YWlsYWJpbGl0eSA9PT0gU2hvcHMuQUxMIHx8IGNvdXBvbi5zaG9wQXZhaWxhYmlsaXR5ID09PSB0aGlzLmRlZmF1bHRTaG9wXHJcblxyXG4gICAgLy8gQ3Vwb24gbsOjbyBhcGxpY2F2ZWwgYSBsb2phIHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFpc0luU2hvcCkgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkbyBwYXJhIGxvamEuJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGNvdXBvbiDDqSBhcGxpY2FkbyBubyBjaGVja291dCBxdWUgZXN0w6Egc2VuZG8gcmVhbGl6YWRvXHJcbiAgICBjb25zdCBpc0NoZWNrb3V0VHlwZSA9IGNvdXBvbi5jaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuQUxMIHx8IGNvdXBvbi5jaGVja291dFR5cGUgPT09IGNoZWNrb3V0VHlwZVxyXG5cclxuICAgIC8vIEN1cG9uIG7Do28gYXBsaWNhdmVsIGFvIGNoZWNrb3V0IHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFpc0NoZWNrb3V0VHlwZSkgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkby4gRXJybyBkZSBjaGVja291dC4nKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gY3Vwb20gw6kgb3UgcG9kZSBzZXIgYXBsaWNhZG8gcGFyYSBzdWJzY3JpcHRpb25cclxuICAgIGlmIChjaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuQUxMIHx8IGNoZWNrb3V0VHlwZSA9PT0gQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04pIHtcclxuICAgICAgLy8gU2UgbyBjdXBvbSB0aXZlciB1bSBwbGFubyBhc3NvY2lhZG8sIHZlcmlmaWNhIHNlIMOpIG8gbWVzbW8gcGxhbm8gZG8gY2hlY2tvdXQgZGEgYXNzaW5hdHVyYVxyXG4gICAgICBpZiAoY291cG9uLnBsYW4gJiYgY291cG9uLnBsYW4udG9VcHBlckNhc2UoKSAhPT0gcGxhbi50b1VwcGVyQ2FzZSgpKVxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8gcGFyYSBzdWEgYXNzaW5hdHVyYS4nKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc1N1YnNjcmlwdGlvbikgcmV0dXJuIG9mKGNvdXBvbilcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBwb3NzdWkgbyB2YWxvciBtaW5pbW8gZGUgY29tcHJhIHBhcmEgdXRpbGl6YcOnw6NvIGRvIGN1cG9tXHJcbiAgICBjb25zdCBoYXNNaW5TdWJUb3RhbCA9IHRoaXMuaGFzTWluU3ViVG90YWwoY291cG9uLCBjaGVja291dClcclxuXHJcbiAgICAvLyBTZSBuw6NvIHRlbSB2YWxvciBtw61uaW1vIGF0aW5naWRvLCByZXRvcm5hIGVycm9cclxuICAgIGlmICghaGFzTWluU3ViVG90YWwpIHJldHVybiB0aHJvd0Vycm9yKCdWYWxvciBtw61uaW1vIG7Do28gYXRpbmdpZG8nKVxyXG5cclxuICAgIHJldHVybiBvZihjb3Vwb24pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmFsaWRDb3Vwb24oY291cG9uOiBDb3Vwb24sIHVzZXJFbWFpbDogc3RyaW5nKTogQ291cG9uIHtcclxuICAgIC8vIFZlcmlmaWNhIGEgZGF0YSBkZSBpbmljaW8gZGUgdmFsaWRhZGUgZG8gY3Vwb21cclxuICAgIGlmIChjb3Vwb24/LmJlZ2luQXQgPiBuZXcgRGF0ZSgpKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBhaW5kYSBuw6NvIGxpYmVyYWRvLicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2EgYSBkYXRhIGRlIHZhbGlkYWRlIGRvIGN1cG9tXHJcbiAgICBpZiAoY291cG9uPy5leHBpcmVzSW4gPCBuZXcgRGF0ZSgpKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBleHBpcmFkby4nKVxyXG5cclxuICAgIHJldHVybiBjb3Vwb25cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tDb3Vwb25Vc2VBbmRMaW1pdChjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcsIGNoZWNrb3V0KSB7XHJcbiAgICAvLyBCdXNjYSBvcmRlcnMgcXVlIHBvc3N1ZW0gbyBjdXBvbSBlIHF1ZSBlc3TDo28gcGFnYXNcclxuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IHRoaXMub3JkZXJSZXBvc2l0b3J5LmZpbmQoe1xyXG4gICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgY291cG9uOiB7IGlkOiBjb3Vwb24uaWQgfSxcclxuICAgICAgICBwYXltZW50OiB7IHN0YXR1czogJ3BhaWQnIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG5cclxuICAgIC8vIG9yZGVycyBxdWUgdXN1YXJpbyBqYSBmZXogY29tIG8gY3Vwb21cclxuICAgIGNvbnN0IG9yZGVyc1VzZXJDb3Vwb24gPSBvcmRlcnMuZGF0YS5maWx0ZXIoKG8pID0+IG8udXNlci5lbWFpbCA9PSB1c2VyRW1haWwpXHJcblxyXG4gICAgLy8gVmVyaWZpY2EgbyBsaW1pdGUgZGUgdXNvIGRlIGN1cG9tIHBvciB1c3VhcmlvXHJcbiAgICBpZiAoY291cG9uLnVzZUxpbWl0UGVyVXNlciAmJiBvcmRlcnNVc2VyQ291cG9uLmxlbmd0aClcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignTGltaXRlIGRlIHVzbyBwb3IgdXN1w6FyaW8gYXRpbmdpZG8uJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBvIGxpbWl0ZSBkZSB1c28gZ2VyYWwgcG9yIHVzdWFyaW9cclxuICAgIGlmIChjb3Vwb24udXNlTGltaXQgJiYgb3JkZXJzLmRhdGEubGVuZ3RoID49IGNvdXBvbi51c2VMaW1pdClcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignTGltaXRlIGRlIHVzbyBhdGluZ2lkby4nKVxyXG5cclxuICAgIGNvbnN0IHZhbGlkVXNlciA9IGF3YWl0IHRoaXMudXNlclZhbGlkYXRpb25BbmRTdWJzY3JpcHRpb25TdGF0dXMoY291cG9uLCB1c2VyRW1haWwpXHJcbiAgICBpZiAoIXZhbGlkVXNlcikgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignVXN1w6FyaW8gbsOjbyBlbGVnw612ZWwuJylcclxuXHJcbiAgICAgLy8gVmVyaWZpY2Egc2UgYSBjb21wcmEgcG9zc3VpIHByb2R1dG9zIGVsZWfDrXZlaXMgcGFyYSBkZXNjb250b1xyXG4gICAgY29uc3QgaGFzUHJvZHVjdENhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmhhc1Byb2R1Y3RDYXRlZ29yaWVzKGNvdXBvbiwgY2hlY2tvdXQpXHJcbiAgICBjb25zb2xlLmxvZygnaGFzUHJvZHVjdENhdGVnb3JpZXMnLCBoYXNQcm9kdWN0Q2F0ZWdvcmllcylcclxuICAgIC8vIFNlIG7Do28gdGVtIHByb2R1dG9zIGVsZWfDrXZlaXMsIHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFoYXNQcm9kdWN0Q2F0ZWdvcmllcykgcmV0dXJuIHRocm93RXJyb3IoJ1NldSBjYXJyaW5obyBuw6NvIHBvc3N1aSBwcm9kdXRvcyBlbGVnw612ZWlzIHBhcmEgZGVzY29udG8uJylcclxuICAgIFxyXG4gICAgcmV0dXJuIGNvdXBvblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGNEaXNjb3VudFN1YnNjcmlwdGlvbihjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXRTdWJzY3JpcHRpb24+KTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIC8vXHJcbiAgICBsZXQgZGlzY291bnQgPSAwXHJcblxyXG4gICAgaWYgKGNvdXBvbi50eXBlID09PSBDb3Vwb25UeXBlcy5BQlNPTFVURSkgZGlzY291bnQgPSBjb3Vwb24uZGlzY291bnRcclxuICAgIGVsc2UgaWYgKGNvdXBvbi50eXBlID09PSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFKVxyXG4gICAgICBkaXNjb3VudCA9IGNoZWNrb3V0LnN1YnNjcmlwdGlvblBsYW4ucmVjdXJyZW5jZVByaWNlICogKGNvdXBvbi5kaXNjb3VudCAvIDEwMClcclxuXHJcbiAgICByZXR1cm4gb2YoZGlzY291bnQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY0Rpc2NvdW50U2hvcHBpbmcoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICBsZXQgZGlzY291bnQgPSAwXHJcblxyXG4gICAgc3dpdGNoIChjb3Vwb24udHlwZSkge1xyXG4gICAgICBjYXNlIENvdXBvblR5cGVzLkFCU09MVVRFOiB7XHJcbiAgICAgICAgZGlzY291bnQgPSBjb3Vwb24uZGlzY291bnRcclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlIENvdXBvblR5cGVzLlBFUkNFTlRBR0U6IHtcclxuICAgICAgICBkaXNjb3VudCA9IHRoaXMuY2FsY1Nob3BwaW5nUGVyY2VudGFnZURpc2NvdW50KGNvdXBvbiwgY2hlY2tvdXQpXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvZihkaXNjb3VudClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY1Nob3BwaW5nUGVyY2VudGFnZURpc2NvdW50KGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBudW1iZXIge1xyXG4gICAgbGV0IGRpc2NvdW50ID0gMFxyXG4gICAgY29uc3Qgc2hvcCA9IGNoZWNrb3V0LnNob3BcclxuICAgIGxldCBsaW5lSXRlbnNEaXNjb3VudCA9IFtdXHJcblxyXG4gICAgaWYgKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMgJiYgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5sZW5ndGgpIHtcclxuICAgICAgbGluZUl0ZW5zRGlzY291bnQgPSBjaGVja291dC5saW5lSXRlbXM/LmZpbHRlcigoaSkgPT4ge1xyXG4gICAgICAgIGlmIChpLmNhdGVnb3JpZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGkuY2F0ZWdvcmllcy5zb21lKChjKSA9PiBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGMpKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGluZUl0ZW5zRGlzY291bnQgPSBjaGVja291dC5saW5lSXRlbXNcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdWJUb3RhbCA9XHJcbiAgICAgIGxpbmVJdGVuc0Rpc2NvdW50LnJlZHVjZShcclxuICAgICAgICAoYWNjLCBjdXJyOiBMaW5lSXRlbSkgPT5cclxuICAgICAgICAgIGNoZWNrb3V0LnVzZXI/LmlzU3Vic2NyaWJlciAmJiBjdXJyLnByaWNlW3Nob3BdPy5zdWJzY3JpYmVyUHJpY2VcclxuICAgICAgICAgICAgPyBhY2MgKyBjdXJyLnByaWNlW3Nob3BdPy5zdWJzY3JpYmVyUHJpY2UgKiBjdXJyLnF1YW50aXR5XHJcbiAgICAgICAgICAgIDogYWNjICsgY3Vyci5wcmljZVBhaWQgKiBjdXJyLnF1YW50aXR5LFxyXG4gICAgICAgIDAsXHJcbiAgICAgICkgfHwgMFxyXG5cclxuICAgIGRpc2NvdW50ID0gc3ViVG90YWwgKiAoY291cG9uLmRpc2NvdW50IC8gMTAwKVxyXG5cclxuICAgIHJldHVybiBkaXNjb3VudFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNNaW5TdWJUb3RhbChjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWNvdXBvbi5taW5TdWJUb3RhbFZhbHVlKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAgIGNvbnN0IHNob3AgPSBjaGVja291dC5zaG9wXHJcblxyXG4gICAgbGV0IHN1YlRvdGFsID1cclxuICAgICAgY2hlY2tvdXQubGluZUl0ZW1zPy5yZWR1Y2UoXHJcbiAgICAgICAgKGFjYywgY3VycikgPT5cclxuICAgICAgICAgIGNoZWNrb3V0LnVzZXI/LmlzU3Vic2NyaWJlciAmJiBjdXJyLnByaWNlW3Nob3BdPy5zdWJzY3JpYmVyUHJpY2VcclxuICAgICAgICAgICAgPyBhY2MgKyBjdXJyLnByaWNlW3Nob3BdPy5zdWJzY3JpYmVyUHJpY2UgKiBjdXJyLnF1YW50aXR5XHJcbiAgICAgICAgICAgIDogYWNjICsgY3Vyci5wcmljZVBhaWQgKiBjdXJyLnF1YW50aXR5LFxyXG4gICAgICAgIDAsXHJcbiAgICAgICkgfHwgMFxyXG5cclxuICAgIGlmIChjb3Vwb24ubWluU3ViVG90YWxWYWx1ZSA8PSBzdWJUb3RhbCkgcmV0dXJuIHRydWVcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYXNQcm9kdWN0Q2F0ZWdvcmllcyhjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogUHJvbWlzZTxib29sZWFuPiB7XHJcblxyXG4gICAgaWYgKCFjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzICYmICFjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmxlbmd0aCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnbsOjbyBwb3NzdWkgY2F0ZWdvcmllcycpXHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICAgIFxyXG4gICAgY29uc3QgaGFzQ2F0ZWdvcmllcyA9IGNoZWNrb3V0LmxpbmVJdGVtcz8uZmlsdGVyKGFzeW5jIChpKSA9PiB7XHJcblxyXG4gICAgICBpZiAoIWkuY2F0ZWdvcmllcyB8fCAhaS5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygncHJvZHV0byBuw6NvIHRlbSBjYXRlZ29yaWFzJylcclxuICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoYXN5bmMgKGMpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnc29tZSBjYXRlZ29yeSBjJywgYylcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWE6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHtpZDogY30pICAgICAgICAgIFxyXG4gICAgICAgIGNvbnNvbGUubG9nKGNhdGVnb3JpYSlcclxuICAgICAgICBjb25zb2xlLmxvZyhjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5pZCksIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSwgaS5pc0dpZnQpXHJcbiAgICAgICAgY29uc29sZS5sb2coJ3ZhbGlkYXRpb24nLCAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0KVxyXG4gICAgICAgIHJldHVybiAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgY29uc29sZS5sb2coJ2ZpbmFsIHJldHVybicsIGhhc0NhdGVnb3JpZXMsIGhhc0NhdGVnb3JpZXMubGVuZ3RoKVxyXG4gICAgcmV0dXJuIGhhc0NhdGVnb3JpZXMubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlXHJcblxyXG5cclxuICAgIC8vIGlmIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzICYmIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XHJcbiAgICAvLyAgIGNvbnN0IGhhc0NhdGVnb3JpZXMgPSBjaGVja291dC5saW5lSXRlbXM/LmZpbHRlcigoaSkgPT4ge1xyXG4gICAgLy8gICAgIGlmIChpLmNhdGVnb3JpZXM/Lmxlbmd0aCkge1xyXG4gXHJcbiAgICAvLyAgICAgICByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoYXN5bmMgKGMpID0+IHtcclxuICAgIC8vICAgICAgICAgY29uc3QgY2F0ZWdvcmlhOiBDYXRlZ29yeSAmIHsgZmlyZXN0b3JlSWQ/OiBzdHJpbmcgfSA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldCh7aWQ6IGN9KSAgICAgICAgICBcclxuICAgIC8vICAgICAgICAgY29uc29sZS5sb2coY2F0ZWdvcmlhKVxyXG4gICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5pZCksIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSwgaS5pc0dpZnQpXHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCd2YWxpZGF0aW9uJywgKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSB8fCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCkpICYmICFpLmlzR2lmdClcclxuICAgIC8vICAgICAgICAgcmV0dXJuIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5pZCkgfHwgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuZmlyZXN0b3JlSWQpKSAmJiAhaS5pc0dpZnRcclxuICAgIC8vICAgICAgIH0pXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHJldHVybiB0cnVlXHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyAgIHJldHVybiBoYXNDYXRlZ29yaWVzLmxlbmd0aCA/IHRydWUgOiBmYWxzZVxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgcmV0dXJuIHRydWVcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXNlclZhbGlkYXRpb25BbmRTdWJzY3JpcHRpb25TdGF0dXMoY291cG9uOiBDb3Vwb24sIHVzZXJFbWFpbDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGVtYWlsIGRvIHVzdcOhcmlvIMOpIGNvb3Jwb3JhdGl2b1xyXG4gICAgaWYgKCF0aGlzLmVtYWlsSXNGcm9tQ29sbGFib3JhdG9yKHVzZXJFbWFpbCkgJiYgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5DT0xMQUJPUkFUT1JTKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdWb2PDqiBuw6NvIMOpIGNvbGFib3JhZG9yLicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBlbWFpbCBkbyB1c3XDoXJpbyDDqSBhc3NvY2lhZG8gYW8gY3Vwb20gZGUgdXNvIHBvciB1c3VhcmlvXHJcbiAgICBpZiAoY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5TUEVDSUZJQ19VU0VSICYmIGNvdXBvbi51c2VyRXhjbHVzaXZlRW1haWwgIT09IHVzZXJFbWFpbClcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gbsOjbyDDqSB2w6FsaWRvIHBhcmEgZXN0ZSB1c3XDoXJpby4nKVxyXG5cclxuICAgIGNvbnN0IGNvdXBvblJ1bGVTdWJzY3JpcHRpb24gPVxyXG4gICAgICBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLkFDVElWRV9TVUJTQ1JJQkVSIHx8XHJcbiAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuSU5BQ1RJVkVfU1VCU0NSSUJFUiB8fFxyXG4gICAgICBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLk5PTl9TVUJTQ1JJQkVSXHJcblxyXG4gICAgaWYgKGNvdXBvblJ1bGVTdWJzY3JpcHRpb24gJiYgdXNlckVtYWlsKSB7XHJcbiAgICAgIGNvbnN0IHN1YiA9IGF3YWl0IHRoaXMuc3Vic2NyaXB0aW9uUmVwb3NpdG9yeVxyXG4gICAgICAgIC5maW5kKHtcclxuICAgICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgICAgdXNlcjoge1xyXG4gICAgICAgICAgICAgIGVtYWlsOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB1c2VyRW1haWwgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbigoc3ViKSA9PiBzdWIuZGF0YSlcclxuXHJcbiAgICAgIGNvbnN0IGFjdGl2ZVN1YnMgPSBzdWI/LmZpbHRlcigocykgPT4gcy5zdGF0dXMgPT09IFN0YXR1cy5BQ1RJVkUpXHJcblxyXG4gICAgICBzd2l0Y2ggKGNvdXBvbi5leGNsdXNpdml0eVR5cGUpIHtcclxuICAgICAgICBjYXNlIEV4Y2x1c2l2aXRpZXMuQUNUSVZFX1NVQlNDUklCRVI6XHJcbiAgICAgICAgICByZXR1cm4gYWN0aXZlU3Vicy5sZW5ndGggPiAwXHJcbiAgICAgICAgY2FzZSBFeGNsdXNpdml0aWVzLklOQUNUSVZFX1NVQlNDUklCRVI6XHJcbiAgICAgICAgICByZXR1cm4gYWN0aXZlU3Vicy5sZW5ndGggPT09IDBcclxuICAgICAgICBjYXNlIEV4Y2x1c2l2aXRpZXMuTk9OX1NVQlNDUklCRVI6XHJcbiAgICAgICAgICByZXR1cm4gc3ViLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlcGFyYXRlVmFsaWRDb3Vwb25zID0gKFxyXG4gICAgY291cG9uczogQ291cG9uW10sXHJcbiAgICB1c2VyRW1haWw6IHN0cmluZyxcclxuICApOiB7IHZhbGlkczogQ291cG9uW107IGludmFsaWRzOiBJbnZhbGlkQ291cG9uRXJyb3JbXSB9ID0+XHJcbiAgICBjb3Vwb25zXHJcbiAgICAgIC5tYXAoKGNvdXBvbikgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAoIShjb3Vwb24gaW5zdGFuY2VvZiBDb3Vwb24pKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBpbnbDoWxpZG8uJylcclxuICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRDb3Vwb24oY291cG9uLCB1c2VyRW1haWwpKSByZXR1cm4gY291cG9uXHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIHJldHVybiBlcnJvciBhcyBJbnZhbGlkQ291cG9uRXJyb3JcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5yZWR1Y2UoXHJcbiAgICAgICAgKGN1cnJlbnQsIGNvdXBvbikgPT4gKHtcclxuICAgICAgICAgIC4uLmN1cnJlbnQsXHJcbiAgICAgICAgICAuLi4oY291cG9uIGluc3RhbmNlb2YgQ291cG9uXHJcbiAgICAgICAgICAgID8geyB2YWxpZHM6IFsuLi5jdXJyZW50LnZhbGlkcywgY291cG9uXSB9XHJcbiAgICAgICAgICAgIDogeyBpbnZhbGlkczogWy4uLmN1cnJlbnQuaW52YWxpZHMsIGNvdXBvbl0gfSksXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFsaWRzOiBbXSBhcyBDb3Vwb25bXSxcclxuICAgICAgICAgIGludmFsaWRzOiBbXSBhcyBJbnZhbGlkQ291cG9uRXJyb3JbXSxcclxuICAgICAgICB9LFxyXG4gICAgICApXHJcbn1cclxuIl19
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBS0wsYUFBYSxFQUNiLE1BQU0sRUFFTixXQUFXLEVBQ1gsYUFBYSxFQUdiLEtBQUssRUFDTCxNQUFNLEVBRU4sS0FBSyxFQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUs3QyxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0IsRUFDYixlQUFnQyxFQUN6QixzQkFBOEMsRUFDbEQsa0JBQXNDO1FBSnhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87UUFDYixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDekIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUNsRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBMEIvRSw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtRQW1SNUYseUJBQW9CLEdBQUcsQ0FDN0Is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bkIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBQy9CLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBDYXRlZ29yeSxcclxuICBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXQsXHJcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb24sXHJcbiAgQ2hlY2tvdXRUeXBlcyxcclxuICBDb3Vwb24sXHJcbiAgQ291cG9uUmVwb3NpdG9yeSxcclxuICBDb3Vwb25UeXBlcyxcclxuICBFeGNsdXNpdml0aWVzLFxyXG4gIExpbmVJdGVtLFxyXG4gIE9yZGVyUmVwb3NpdG9yeSxcclxuICBTaG9wcyxcclxuICBTdGF0dXMsXHJcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICBXaGVyZVxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcblxyXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXHJcblxyXG5pbXBvcnQgeyBJbnZhbGlkQ291cG9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycydcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3Vwb25TZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ0NvdXBvblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNvdXBvblJlcG9zaXRvcnk6IENvdXBvblJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXHJcbiAgICBASW5qZWN0KCdPcmRlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IG9yZGVyUmVwb3NpdG9yeTogT3JkZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgKSB7fVxyXG5cclxuICBjaGVja0NvdXBvbihcclxuICAgIG5pY2tuYW1lOiBzdHJpbmcsXHJcbiAgICB1c2VyRW1haWw6IHN0cmluZyxcclxuICAgIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyxcclxuICAgIHBsYW4/OiBzdHJpbmcsXHJcbiAgICBjaGVja291dD86IFBhcnRpYWw8Q2hlY2tvdXQ+LFxyXG4gICAgaXNTdWJzY3JpcHRpb24/OiBib29sZWFuLFxyXG4gICk6IE9ic2VydmFibGU8Q291cG9uPiB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5jb3Vwb25SZXBvc2l0b3J5LmZpbmQoe1xyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIG5pY2tuYW1lOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiBuaWNrbmFtZSB9LFxyXG4gICAgICAgICAgYWN0aXZlOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0cnVlIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSksXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY291cG9ucykgPT4gdGhpcy5jaGVja0NvdXBvblJ1bGVzKGNvdXBvbnMsIGNoZWNrb3V0VHlwZSwgcGxhbiwgY2hlY2tvdXQsIGlzU3Vic2NyaXB0aW9uKSksXHJcbiAgICAgIGNvbmNhdE1hcCgoY291cG9uOiBDb3Vwb24pID0+IHRoaXMuY2hlY2tDb3Vwb25Vc2VBbmRMaW1pdChjb3Vwb24sIHVzZXJFbWFpbCwgY2hlY2tvdXQpKSxcclxuICAgICAgbWFwKChjb3Vwb246IENvdXBvbikgPT4gdGhpcy5pc1ZhbGlkQ291cG9uKGNvdXBvbiwgdXNlckVtYWlsKSksXHJcbiAgICAgIG1hcCgoY291cG9uOiBDb3Vwb24pID0+IGNvdXBvbiksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtYWlsSXNGcm9tQ29sbGFib3JhdG9yID0gKHVzZXJFbWFpbDogc3RyaW5nKTogYm9vbGVhbiA9PiAhIXVzZXJFbWFpbD8ubWF0Y2goL0BiNGEuY29tLmJyL2cpXHJcblxyXG4gIHByaXZhdGUgY2hlY2tDb3Vwb25SdWxlcyhcclxuICAgIGNvdXBvbnMsXHJcbiAgICBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMsXHJcbiAgICBwbGFuPzogc3RyaW5nLFxyXG4gICAgY2hlY2tvdXQ/OiBQYXJ0aWFsPENoZWNrb3V0PixcclxuICAgIGlzU3Vic2NyaXB0aW9uPzogYm9vbGVhbixcclxuICApIHtcclxuICAgIC8vIENhc28gbsOjbyBhY2hlIG5lbmh1bSBjdXBvbSwgcmV0b3JuYSBlcnJvXHJcbiAgICBpZiAoY291cG9ucy5jb3VudCA8IDEpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkby4nKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBQcmltZWlybyBDdXBvbSAobyBmaW5kIGRvIHJlcG9zaXRvcnkgcmV0b3JuYSB1bSBhcnJheSlcclxuICAgIGNvbnN0IGNvdXBvbjogQ291cG9uID0gY291cG9ucy5kYXRhLnNoaWZ0KClcclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gY3Vwb20gw6kgYXBsaWNhdmVsIG5hIGxvamFcclxuICAgIGNvbnN0IGlzSW5TaG9wID0gY291cG9uLnNob3BBdmFpbGFiaWxpdHkgPT09IFNob3BzLkFMTCB8fCBjb3Vwb24uc2hvcEF2YWlsYWJpbGl0eSA9PT0gdGhpcy5kZWZhdWx0U2hvcFxyXG5cclxuICAgIC8vIEN1cG9uIG7Do28gYXBsaWNhdmVsIGEgbG9qYSByZXRvcm5hIGVycm9cclxuICAgIGlmICghaXNJblNob3ApIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8gcGFyYSBsb2phLicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBjb3Vwb24gw6kgYXBsaWNhZG8gbm8gY2hlY2tvdXQgcXVlIGVzdMOhIHNlbmRvIHJlYWxpemFkb1xyXG4gICAgY29uc3QgaXNDaGVja291dFR5cGUgPSBjb3Vwb24uY2hlY2tvdXRUeXBlID09PSBDaGVja291dFR5cGVzLkFMTCB8fCBjb3Vwb24uY2hlY2tvdXRUeXBlID09PSBjaGVja291dFR5cGVcclxuXHJcbiAgICAvLyBDdXBvbiBuw6NvIGFwbGljYXZlbCBhbyBjaGVja291dCByZXRvcm5hIGVycm9cclxuICAgIGlmICghaXNDaGVja291dFR5cGUpIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8uIEVycm8gZGUgY2hlY2tvdXQuJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGN1cG9tIMOpIG91IHBvZGUgc2VyIGFwbGljYWRvIHBhcmEgc3Vic2NyaXB0aW9uXHJcbiAgICBpZiAoY2hlY2tvdXRUeXBlID09PSBDaGVja291dFR5cGVzLkFMTCB8fCBjaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuU1VCU0NSSVBUSU9OKSB7XHJcbiAgICAgIC8vIFNlIG8gY3Vwb20gdGl2ZXIgdW0gcGxhbm8gYXNzb2NpYWRvLCB2ZXJpZmljYSBzZSDDqSBvIG1lc21vIHBsYW5vIGRvIGNoZWNrb3V0IGRhIGFzc2luYXR1cmFcclxuICAgICAgaWYgKGNvdXBvbi5wbGFuICYmIGNvdXBvbi5wbGFuLnRvVXBwZXJDYXNlKCkgIT09IHBsYW4udG9VcHBlckNhc2UoKSlcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvIHBhcmEgc3VhIGFzc2luYXR1cmEuJylcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNTdWJzY3JpcHRpb24pIHJldHVybiBvZihjb3Vwb24pXHJcblxyXG4gICAgLy8gVmVyaWZpY2Egc2UgcG9zc3VpIG8gdmFsb3IgbWluaW1vIGRlIGNvbXByYSBwYXJhIHV0aWxpemHDp8OjbyBkbyBjdXBvbVxyXG4gICAgY29uc3QgaGFzTWluU3ViVG90YWwgPSB0aGlzLmhhc01pblN1YlRvdGFsKGNvdXBvbiwgY2hlY2tvdXQpXHJcblxyXG4gICAgLy8gU2UgbsOjbyB0ZW0gdmFsb3IgbcOtbmltbyBhdGluZ2lkbywgcmV0b3JuYSBlcnJvXHJcbiAgICBpZiAoIWhhc01pblN1YlRvdGFsKSByZXR1cm4gdGhyb3dFcnJvcignVmFsb3IgbcOtbmltbyBuw6NvIGF0aW5naWRvJylcclxuXHJcbiAgICByZXR1cm4gb2YoY291cG9uKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1ZhbGlkQ291cG9uKGNvdXBvbjogQ291cG9uLCB1c2VyRW1haWw6IHN0cmluZyk6IENvdXBvbiB7XHJcbiAgICAvLyBWZXJpZmljYSBhIGRhdGEgZGUgaW5pY2lvIGRlIHZhbGlkYWRlIGRvIGN1cG9tXHJcbiAgICBpZiAoY291cG9uPy5iZWdpbkF0ID4gbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gYWluZGEgbsOjbyBsaWJlcmFkby4nKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIGEgZGF0YSBkZSB2YWxpZGFkZSBkbyBjdXBvbVxyXG4gICAgaWYgKGNvdXBvbj8uZXhwaXJlc0luIDwgbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gZXhwaXJhZG8uJylcclxuXHJcbiAgICByZXR1cm4gY291cG9uXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNoZWNrQ291cG9uVXNlQW5kTGltaXQoY291cG9uOiBDb3Vwb24sIHVzZXJFbWFpbDogc3RyaW5nLCBjaGVja291dCkge1xyXG4gICAgLy8gQnVzY2Egb3JkZXJzIHF1ZSBwb3NzdWVtIG8gY3Vwb20gZSBxdWUgZXN0w6NvIHBhZ2FzXHJcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCB0aGlzLm9yZGVyUmVwb3NpdG9yeS5maW5kKHtcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIGNvdXBvbjogeyBpZDogY291cG9uLmlkIH0sXHJcbiAgICAgICAgcGF5bWVudDogeyBzdGF0dXM6ICdwYWlkJyB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICAvLyBvcmRlcnMgcXVlIHVzdWFyaW8gamEgZmV6IGNvbSBvIGN1cG9tXHJcbiAgICBjb25zdCBvcmRlcnNVc2VyQ291cG9uID0gb3JkZXJzLmRhdGEuZmlsdGVyKChvKSA9PiBvLnVzZXIuZW1haWwgPT0gdXNlckVtYWlsKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIG8gbGltaXRlIGRlIHVzbyBkZSBjdXBvbSBwb3IgdXN1YXJpb1xyXG4gICAgaWYgKGNvdXBvbi51c2VMaW1pdFBlclVzZXIgJiYgb3JkZXJzVXNlckNvdXBvbi5sZW5ndGgpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0xpbWl0ZSBkZSB1c28gcG9yIHVzdcOhcmlvIGF0aW5naWRvLicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2EgbyBsaW1pdGUgZGUgdXNvIGdlcmFsIHBvciB1c3VhcmlvXHJcbiAgICBpZiAoY291cG9uLnVzZUxpbWl0ICYmIG9yZGVycy5kYXRhLmxlbmd0aCA+PSBjb3Vwb24udXNlTGltaXQpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0xpbWl0ZSBkZSB1c28gYXRpbmdpZG8uJylcclxuXHJcbiAgICBjb25zdCB2YWxpZFVzZXIgPSBhd2FpdCB0aGlzLnVzZXJWYWxpZGF0aW9uQW5kU3Vic2NyaXB0aW9uU3RhdHVzKGNvdXBvbiwgdXNlckVtYWlsKVxyXG4gICAgaWYgKCF2YWxpZFVzZXIpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ1VzdcOhcmlvIG7Do28gZWxlZ8OtdmVsLicpXHJcblxyXG4gICAgIC8vIFZlcmlmaWNhIHNlIGEgY29tcHJhIHBvc3N1aSBwcm9kdXRvcyBlbGVnw612ZWlzIHBhcmEgZGVzY29udG9cclxuICAgIGNvbnN0IGhhc1Byb2R1Y3RDYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5oYXNQcm9kdWN0Q2F0ZWdvcmllcyhjb3Vwb24sIGNoZWNrb3V0KVxyXG4gICAgY29uc29sZS5sb2coJ2hhc1Byb2R1Y3RDYXRlZ29yaWVzJywgaGFzUHJvZHVjdENhdGVnb3JpZXMpXHJcbiAgICAvLyBTZSBuw6NvIHRlbSBwcm9kdXRvcyBlbGVnw612ZWlzLCByZXRvcm5hIGVycm9cclxuICAgIGlmICghaGFzUHJvZHVjdENhdGVnb3JpZXMpIHJldHVybiB0aHJvd0Vycm9yKCdTZXUgY2FycmluaG8gbsOjbyBwb3NzdWkgcHJvZHV0b3MgZWxlZ8OtdmVpcyBwYXJhIGRlc2NvbnRvLicpXHJcbiAgICBcclxuICAgIHJldHVybiBjb3Vwb25cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYWxjRGlzY291bnRTdWJzY3JpcHRpb24oY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0U3Vic2NyaXB0aW9uPik6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICAvL1xyXG4gICAgbGV0IGRpc2NvdW50ID0gMFxyXG5cclxuICAgIGlmIChjb3Vwb24udHlwZSA9PT0gQ291cG9uVHlwZXMuQUJTT0xVVEUpIGRpc2NvdW50ID0gY291cG9uLmRpc2NvdW50XHJcbiAgICBlbHNlIGlmIChjb3Vwb24udHlwZSA9PT0gQ291cG9uVHlwZXMuUEVSQ0VOVEFHRSlcclxuICAgICAgZGlzY291bnQgPSBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLnJlY3VycmVuY2VQcmljZSAqIChjb3Vwb24uZGlzY291bnQgLyAxMDApXHJcblxyXG4gICAgcmV0dXJuIG9mKGRpc2NvdW50KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGNEaXNjb3VudFNob3BwaW5nKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgbGV0IGRpc2NvdW50ID0gMFxyXG5cclxuICAgIHN3aXRjaCAoY291cG9uLnR5cGUpIHtcclxuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5BQlNPTFVURToge1xyXG4gICAgICAgIGRpc2NvdW50ID0gY291cG9uLmRpc2NvdW50XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFOiB7XHJcbiAgICAgICAgZGlzY291bnQgPSB0aGlzLmNhbGNTaG9wcGluZ1BlcmNlbnRhZ2VEaXNjb3VudChjb3Vwb24sIGNoZWNrb3V0KVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2YoZGlzY291bnQpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGNTaG9wcGluZ1BlcmNlbnRhZ2VEaXNjb3VudChjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogbnVtYmVyIHtcclxuICAgIGxldCBkaXNjb3VudCA9IDBcclxuICAgIGNvbnN0IHNob3AgPSBjaGVja291dC5zaG9wXHJcbiAgICBsZXQgbGluZUl0ZW5zRGlzY291bnQgPSBbXVxyXG5cclxuICAgIGlmIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzICYmIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XHJcbiAgICAgIGxpbmVJdGVuc0Rpc2NvdW50ID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maWx0ZXIoKGkpID0+IHtcclxuICAgICAgICBpZiAoaS5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBpLmNhdGVnb3JpZXMuc29tZSgoYykgPT4gY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxpbmVJdGVuc0Rpc2NvdW50ID0gY2hlY2tvdXQubGluZUl0ZW1zXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3ViVG90YWwgPVxyXG4gICAgICBsaW5lSXRlbnNEaXNjb3VudC5yZWR1Y2UoXHJcbiAgICAgICAgKGFjYywgY3VycjogTGluZUl0ZW0pID0+XHJcbiAgICAgICAgICBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIgJiYgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlXHJcbiAgICAgICAgICAgID8gYWNjICsgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlICogY3Vyci5xdWFudGl0eVxyXG4gICAgICAgICAgICA6IGFjYyArIGN1cnIucHJpY2VQYWlkICogY3Vyci5xdWFudGl0eSxcclxuICAgICAgICAwLFxyXG4gICAgICApIHx8IDBcclxuXHJcbiAgICBkaXNjb3VudCA9IHN1YlRvdGFsICogKGNvdXBvbi5kaXNjb3VudCAvIDEwMClcclxuXHJcbiAgICByZXR1cm4gZGlzY291bnRcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzTWluU3ViVG90YWwoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjb3Vwb24ubWluU3ViVG90YWxWYWx1ZSkgcmV0dXJuIHRydWVcclxuXHJcbiAgICBjb25zdCBzaG9wID0gY2hlY2tvdXQuc2hvcFxyXG5cclxuICAgIGxldCBzdWJUb3RhbCA9XHJcbiAgICAgIGNoZWNrb3V0LmxpbmVJdGVtcz8ucmVkdWNlKFxyXG4gICAgICAgIChhY2MsIGN1cnIpID0+XHJcbiAgICAgICAgICBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIgJiYgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlXHJcbiAgICAgICAgICAgID8gYWNjICsgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlICogY3Vyci5xdWFudGl0eVxyXG4gICAgICAgICAgICA6IGFjYyArIGN1cnIucHJpY2VQYWlkICogY3Vyci5xdWFudGl0eSxcclxuICAgICAgICAwLFxyXG4gICAgICApIHx8IDBcclxuXHJcbiAgICBpZiAoY291cG9uLm1pblN1YlRvdGFsVmFsdWUgPD0gc3ViVG90YWwpIHJldHVybiB0cnVlXHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaGFzUHJvZHVjdENhdGVnb3JpZXMoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG5cclxuICAgIGlmICghY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcyAmJiAhY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5sZW5ndGgpIHtcclxuICAgICAgY29uc29sZS5sb2coJ27Do28gcG9zc3VpIGNhdGVnb3JpZXMnKVxyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgICBcclxuICAgIGNvbnN0IGhhc0NhdGVnb3JpZXMgPSBjaGVja291dC5saW5lSXRlbXM/LmZpbHRlcihhc3luYyAoaSkgPT4ge1xyXG5cclxuICAgICAgaWYgKCFpLmNhdGVnb3JpZXMgfHwgIWkuY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3Byb2R1dG8gbsOjbyB0ZW0gY2F0ZWdvcmlhcycpXHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGNvdXBvbkNhdGVnb3JpZXM6IHsgaWQ6IHN0cmluZywgZmlyZXN0b3JlSWQ6IHN0cmluZyB9W10gPSBbXVxyXG5cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgbGV0IGM6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXNbaW5kZXhdIH0pICAgIFxyXG4gICAgICAgIGNvdXBvbkNhdGVnb3JpZXMucHVzaCh7IGlkOiBjLmlkLCBmaXJlc3RvcmVJZDogYy5maXJlc3RvcmVJZH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKCdjb3Vwb25DYXRlZ29yaWVzJywgY291cG9uQ2F0ZWdvcmllcy5sZW5ndGgsIGNvdXBvbkNhdGVnb3JpZXMpXHJcblxyXG4gICAgICByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoKGMpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnc29tZSAxICcsIGMpXHJcblxyXG4gICAgICAgIHJldHVybiBjb3Vwb25DYXRlZ29yaWVzLnNvbWUoY2F0ID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdzb21lIDInLCBjYXQsIGNhdC5pZCA9PSBjLCBjYXQuZmlyZXN0b3JlSWQpXHJcbiAgICAgICAgICBpZiAoY2F0LmlkID09IGMgfHwgY2F0LmZpcmVzdG9yZUlkKSByZXR1cm4gdHJ1ZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAvLyByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoYXN5bmMgKGMpID0+IHtcclxuXHJcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3NvbWUgY2F0ZWdvcnkgYycsIGMpXHJcbiAgICAgIC8vICAgY29uc3QgY2F0ZWdvcmlhOiBDYXRlZ29yeSAmIHsgZmlyZXN0b3JlSWQ/OiBzdHJpbmcgfSA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldCh7aWQ6IGN9KSAgICAgICAgICBcclxuICAgICAgLy8gICBjb25zb2xlLmxvZyhjYXRlZ29yaWEpXHJcbiAgICAgIC8vICAgY29uc29sZS5sb2coY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpLCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCksIGkuaXNHaWZ0KVxyXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCd2YWxpZGF0aW9uJywgKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSB8fCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCkpICYmICFpLmlzR2lmdClcclxuICAgICAgLy8gICByZXR1cm4gKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSB8fCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCkpICYmICFpLmlzR2lmdFxyXG4gICAgICBcclxuICAgICAgLy8gfSlcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmxvZygnZmluYWwgcmV0dXJuJywgaGFzQ2F0ZWdvcmllcywgaGFzQ2F0ZWdvcmllcy5sZW5ndGgpXHJcbiAgICByZXR1cm4gaGFzQ2F0ZWdvcmllcy5sZW5ndGggPyB0cnVlIDogZmFsc2VcclxuXHJcblxyXG4gICAgLy8gaWYgKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMgJiYgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5sZW5ndGgpIHtcclxuICAgIC8vICAgY29uc3QgaGFzQ2F0ZWdvcmllcyA9IGNoZWNrb3V0LmxpbmVJdGVtcz8uZmlsdGVyKChpKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGkuY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XHJcbiBcclxuICAgIC8vICAgICAgIHJldHVybiBpLmNhdGVnb3JpZXMuc29tZShhc3luYyAoYykgPT4ge1xyXG4gICAgLy8gICAgICAgICBjb25zdCBjYXRlZ29yaWE6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHtpZDogY30pICAgICAgICAgIFxyXG4gICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhjYXRlZ29yaWEpXHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSwgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuZmlyZXN0b3JlSWQpLCBpLmlzR2lmdClcclxuICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ3ZhbGlkYXRpb24nLCAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0KVxyXG4gICAgLy8gICAgICAgICByZXR1cm4gKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSB8fCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCkpICYmICFpLmlzR2lmdFxyXG4gICAgLy8gICAgICAgfSlcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIHRydWVcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgcmV0dXJuIGhhc0NhdGVnb3JpZXMubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICByZXR1cm4gdHJ1ZVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1c2VyVmFsaWRhdGlvbkFuZFN1YnNjcmlwdGlvblN0YXR1cyhjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gZW1haWwgZG8gdXN1w6FyaW8gw6kgY29vcnBvcmF0aXZvXHJcbiAgICBpZiAoIXRoaXMuZW1haWxJc0Zyb21Db2xsYWJvcmF0b3IodXNlckVtYWlsKSAmJiBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLkNPTExBQk9SQVRPUlMpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ1ZvY8OqIG7Do28gw6kgY29sYWJvcmFkb3IuJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGVtYWlsIGRvIHVzdcOhcmlvIMOpIGFzc29jaWFkbyBhbyBjdXBvbSBkZSB1c28gcG9yIHVzdWFyaW9cclxuICAgIGlmIChjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLlNQRUNJRklDX1VTRVIgJiYgY291cG9uLnVzZXJFeGNsdXNpdmVFbWFpbCAhPT0gdXNlckVtYWlsKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBuw6NvIMOpIHbDoWxpZG8gcGFyYSBlc3RlIHVzdcOhcmlvLicpXHJcblxyXG4gICAgY29uc3QgY291cG9uUnVsZVN1YnNjcmlwdGlvbiA9XHJcbiAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuQUNUSVZFX1NVQlNDUklCRVIgfHxcclxuICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5JTkFDVElWRV9TVUJTQ1JJQkVSIHx8XHJcbiAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuTk9OX1NVQlNDUklCRVJcclxuXHJcbiAgICBpZiAoY291cG9uUnVsZVN1YnNjcmlwdGlvbiAmJiB1c2VyRW1haWwpIHtcclxuICAgICAgY29uc3Qgc3ViID0gYXdhaXQgdGhpcy5zdWJzY3JpcHRpb25SZXBvc2l0b3J5XHJcbiAgICAgICAgLmZpbmQoe1xyXG4gICAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgICB1c2VyOiB7XHJcbiAgICAgICAgICAgICAgZW1haWw6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHVzZXJFbWFpbCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50aGVuKChzdWIpID0+IHN1Yi5kYXRhKVxyXG5cclxuICAgICAgY29uc3QgYWN0aXZlU3VicyA9IHN1Yj8uZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gU3RhdHVzLkFDVElWRSlcclxuXHJcbiAgICAgIHN3aXRjaCAoY291cG9uLmV4Y2x1c2l2aXR5VHlwZSkge1xyXG4gICAgICAgIGNhc2UgRXhjbHVzaXZpdGllcy5BQ1RJVkVfU1VCU0NSSUJFUjpcclxuICAgICAgICAgIHJldHVybiBhY3RpdmVTdWJzLmxlbmd0aCA+IDBcclxuICAgICAgICBjYXNlIEV4Y2x1c2l2aXRpZXMuSU5BQ1RJVkVfU1VCU0NSSUJFUjpcclxuICAgICAgICAgIHJldHVybiBhY3RpdmVTdWJzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgIGNhc2UgRXhjbHVzaXZpdGllcy5OT05fU1VCU0NSSUJFUjpcclxuICAgICAgICAgIHJldHVybiBzdWIubGVuZ3RoID09PSAwXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VwYXJhdGVWYWxpZENvdXBvbnMgPSAoXHJcbiAgICBjb3Vwb25zOiBDb3Vwb25bXSxcclxuICAgIHVzZXJFbWFpbDogc3RyaW5nLFxyXG4gICk6IHsgdmFsaWRzOiBDb3Vwb25bXTsgaW52YWxpZHM6IEludmFsaWRDb3Vwb25FcnJvcltdIH0gPT5cclxuICAgIGNvdXBvbnNcclxuICAgICAgLm1hcCgoY291cG9uKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICghKGNvdXBvbiBpbnN0YW5jZW9mIENvdXBvbikpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0N1cG9tIGludsOhbGlkby4nKVxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZENvdXBvbihjb3Vwb24sIHVzZXJFbWFpbCkpIHJldHVybiBjb3Vwb25cclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgcmV0dXJuIGVycm9yIGFzIEludmFsaWRDb3Vwb25FcnJvclxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLnJlZHVjZShcclxuICAgICAgICAoY3VycmVudCwgY291cG9uKSA9PiAoe1xyXG4gICAgICAgICAgLi4uY3VycmVudCxcclxuICAgICAgICAgIC4uLihjb3Vwb24gaW5zdGFuY2VvZiBDb3Vwb25cclxuICAgICAgICAgICAgPyB7IHZhbGlkczogWy4uLmN1cnJlbnQudmFsaWRzLCBjb3Vwb25dIH1cclxuICAgICAgICAgICAgOiB7IGludmFsaWRzOiBbLi4uY3VycmVudC5pbnZhbGlkcywgY291cG9uXSB9KSxcclxuICAgICAgICB9KSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWxpZHM6IFtdIGFzIENvdXBvbltdLFxyXG4gICAgICAgICAgaW52YWxpZHM6IFtdIGFzIEludmFsaWRDb3Vwb25FcnJvcltdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIClcclxufVxyXG4iXX0=
|
|
@@ -251,14 +251,28 @@ class CouponService {
|
|
|
251
251
|
console.log('produto não tem categorias');
|
|
252
252
|
return true;
|
|
253
253
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
254
|
+
let couponCategories = [];
|
|
255
|
+
for (let index = 0; index < coupon.productsCategories.length; index++) {
|
|
256
|
+
let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
|
|
257
|
+
couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
|
|
258
|
+
}
|
|
259
|
+
console.log('couponCategories', couponCategories.length, couponCategories);
|
|
260
|
+
return i.categories.some((c) => {
|
|
261
|
+
console.log('some 1 ', c);
|
|
262
|
+
return couponCategories.some(cat => {
|
|
263
|
+
console.log('some 2', cat, cat.id == c, cat.firestoreId);
|
|
264
|
+
if (cat.id == c || cat.firestoreId)
|
|
265
|
+
return true;
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
// return i.categories.some(async (c) => {
|
|
269
|
+
// console.log('some category c', c)
|
|
270
|
+
// const categoria: Category & { firestoreId?: string } = await this.categoryRepository.get({id: c})
|
|
271
|
+
// console.log(categoria)
|
|
272
|
+
// console.log(coupon.productsCategories.includes(categoria.id), coupon.productsCategories.includes(categoria.firestoreId), i.isGift)
|
|
273
|
+
// console.log('validation', (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift)
|
|
274
|
+
// return (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift
|
|
275
|
+
// })
|
|
262
276
|
}));
|
|
263
277
|
console.log('final return', hasCategories, hasCategories.length);
|
|
264
278
|
return hasCategories.length ? true : false;
|