@infrab4a/connect-angular 4.14.0-beta.5 → 4.14.0-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.
@@ -214,7 +214,7 @@ export class CartService {
214
214
  if (filterProductsCategories.length) {
215
215
  const cartValuelWithCategories = filterProductsCategories.reduce((a, b) => a + b.pricePaid * b.quantity, 0);
216
216
  const cartItensQuantityWithCategories = filterProductsCategories.reduce((a, b) => a + b.quantity, 0);
217
- const hasMinValue = cartValuelWithCategories >= campaign.cartValueMin;
217
+ const hasMinValue = campaign.cartValueMin && cartValuelWithCategories >= campaign.cartValueMin;
218
218
  const hasMinQuantity = campaign.cartItensQuantityMin && cartItensQuantityWithCategories >= campaign.cartItensQuantityMin;
219
219
  console.log('------------------------------');
220
220
  console.log('campaing WITH categories', campaign.name, campaign.cartValueMin, campaign.cartItensQuantityMin);
@@ -302,4 +302,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
302
302
  type: Inject,
303
303
  args: ['Buy2WinRepository']
304
304
  }] }]; } });
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUVMLDBCQUEwQixFQUUxQixRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixhQUFhLEVBR2Isd0JBQXdCLEVBRXhCLEtBQUssRUFJTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBOzs7OztBQVFwRCxNQUFNLE9BQU8sV0FBVztJQUl0QixZQUNtQixXQUF3QixFQUN4QixlQUFnQyxFQUNWLFdBQWtCLEVBQ1gsaUJBQW9DLEVBQ25DLGtCQUFzQyxFQUN2QyxpQkFBb0MsRUFDcEMsaUJBQTZDO1FBTjFFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNWLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ1gsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7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RTtZQUN4QixNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQTtZQUM1RixNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUU1RSxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3pCLEtBQUs7Z0JBQ0wsVUFBVTtnQkFDVixRQUFRO2dCQUNSLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJO2dCQUNKLEtBQUs7Z0JBQ0wsR0FBRztnQkFDSCxJQUFJO2dCQUNKLEtBQUs7Z0JBQ0wsTUFBTTtnQkFDTixHQUFHO2dCQUNILEtBQUs7Z0JBQ0wsU0FBUyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7O3dHQTlhVSxXQUFXLDRFQU9aLFlBQVksYUFDWixtQkFBbUIsYUFDbkIsb0JBQW9CLGFBQ3BCLG1CQUFtQixhQUNuQixtQkFBbUI7NEdBWGxCLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVTs7MEJBUU4sTUFBTTsyQkFBQyxZQUFZOzswQkFDbkIsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIEJ1eTJXaW4sXHJcbiAgQnV5MldpbkZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0LFxyXG4gIGlzTmlsLFxyXG4gIExpbmVJdGVtLFxyXG4gIE5vdEZvdW5kRXJyb3IsXHJcbiAgUHJvZHVjdCxcclxuICBQcm9kdWN0UmVwb3NpdG9yeSxcclxuICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIsXHJcbiAgU2hvcFByaWNlLFxyXG4gIFNob3BzLFxyXG4gIFVzZXIsXHJcbiAgVmFyaWFudCxcclxuICBWYXJpYW50UmVwb3NpdG9yeSxcclxuICBXaGVyZSxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgZnJvbSwgaWlmLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgbWFwLCBtZXJnZU1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSdcclxuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5leHBvcnQgdHlwZSBDYXJ0ID0ge1xyXG4gIFtpZDogc3RyaW5nXTogTGluZUl0ZW1cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2FydFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgY2FydFN1YmplY3Q6IFN1YmplY3Q8Q2FydD4gPSBuZXcgU3ViamVjdCgpXHJcbiAgcHJpdmF0ZSB1c2VyOiBVc2VyXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlLFxyXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxyXG4gICAgQEluamVjdCgnUHJvZHVjdFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdWYXJpYW50UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdmFyaWFudFJlcG9zaXRvcnk6IFZhcmlhbnRSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnQnV5MldpblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGJ1eTJXaW5SZXBvc2l0b3J5OiBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICApIHt9XHJcblxyXG4gIGFkZEl0ZW0oaXRlbTogTGluZUl0ZW0sIHF1YW50aXR5OiBudW1iZXIgPSAxKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoYXN5bmMgKGNoZWNrb3V0KSA9PiBhd2FpdCB0aGlzLmJ1aWxkTGluZUl0ZW0oeyBjaGVja291dCwgaXRlbSwgcXVhbnRpdHk6IHF1YW50aXR5IHx8IDEgfSkpLFxyXG4gICAgICBtZXJnZU1hcCgoeyBjaGVja291dCwgbGluZUl0ZW0gfSkgPT4gdGhpcy51cGRhdGVMaW5lSXRlbUluQ2FydChsaW5lSXRlbSwgcXVhbnRpdHkgfHwgMSwgY2hlY2tvdXQgYXMgQ2hlY2tvdXQpKSxcclxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZGVjcmVhc2VJdGVtKGl0ZW06IExpbmVJdGVtKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2hlY2tvdXRJdGVtID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maW5kKChsaW5lSXRlbSkgPT4gbGluZUl0ZW0uaWQgPT09IGl0ZW0uaWQpXHJcblxyXG4gICAgICAgIGlmICghaXNOaWwoY2hlY2tvdXRJdGVtKSkgY2hlY2tvdXRJdGVtLnF1YW50aXR5IC09IGNoZWNrb3V0SXRlbS5xdWFudGl0eSA+IDEgPyAxIDogMFxyXG5cclxuICAgICAgICByZXR1cm4gY2hlY2tvdXRcclxuICAgICAgfSksXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUNoZWNrb3V0TGluZUl0ZW1zKGNoZWNrb3V0KSksXHJcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KGNoZWNrb3V0LmxpbmVJdGVtcykpLFxyXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRDYXJ0KGNoZWNrb3V0PzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIHRoaXMuYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KGNoZWNrb3V0KS5zdWJzY3JpYmUoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSlcclxuXHJcbiAgICByZXR1cm4gdGhpcy5jYXJ0U3ViamVjdFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVGhlIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWRcclxuICAgKi9cclxuICBnZXRWYXJpYW50UHJpY2VEaXNjb3VudChpdGVtOiBMaW5lSXRlbSk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyKCkucGlwZShcclxuICAgICAgY29uY2F0TWFwKCh1c2VyKSA9PlxyXG4gICAgICAgIGlpZihcclxuICAgICAgICAgICgpID0+IHVzZXIuaXNTdWJzY3JpYmVyICYmICEhaXRlbS5wcmljZS5zdWJzY3JpYmVyUHJpY2UsXHJcbiAgICAgICAgICBvZihpdGVtLnByaWNlLnN1YnNjcmliZXJQcmljZSksXHJcbiAgICAgICAgICBvZihpdGVtLnByaWNlLnByaWNlKSxcclxuICAgICAgICApLFxyXG4gICAgICApLFxyXG4gICAgICBjYXRjaEVycm9yKCgpID0+IG9mKGl0ZW0ucHJpY2UucHJpY2UpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW0oaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IGNoZWNrb3V0LmxpbmVJdGVtcy5maW5kSW5kZXgoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5pZCA9PT0gaXRlbS5pZClcclxuXHJcbiAgICAgICAgaWYgKGluZGV4ID49IDApIGNoZWNrb3V0LmxpbmVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpXHJcblxyXG4gICAgICAgIHJldHVybiBjaGVja291dFxyXG4gICAgICB9KSxcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQpKSxcclxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXHJcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHVwZGF0ZVVzZXJDYXJ0KHVzZXI6IFVzZXIpOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIGNvbnN0IGlzU2FtZVVzZXJJZCA9ICF1c2VyPy5pZCB8fCB0aGlzLnVzZXI/LmlkID09PSB1c2VyPy5pZFxyXG4gICAgY29uc3QgaXNTYW1lVXNlciA9IGlzU2FtZVVzZXJJZCAmJiAhIXRoaXMudXNlcj8uaXNTdWJzY3JpYmVyID09PSAhIXVzZXI/LmlzU3Vic2NyaWJlclxyXG5cclxuICAgIGlmIChpc1NhbWVVc2VyKSByZXR1cm4gdGhpcy5nZXRDYXJ0KClcclxuXHJcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUNoZWNrb3V0VXNlcihDaGVja291dC50b0luc3RhbmNlKHsgLi4uY2hlY2tvdXQudG9QbGFpbigpLCB1c2VyIH0pKSxcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKFxyXG4gICAgICAgIGFzeW5jIChjaGVja291dCkgPT5cclxuICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tvdXRTZXJ2aWNlXHJcbiAgICAgICAgICAgIC51cGRhdGVDaGVja291dExpbmVJdGVtcyhcclxuICAgICAgICAgICAgICBDaGVja291dC50b0luc3RhbmNlKHtcclxuICAgICAgICAgICAgICAgIC4uLmNoZWNrb3V0LnRvUGxhaW4oKSxcclxuICAgICAgICAgICAgICAgIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zPy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgPyBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrb3V0LmxpbmVJdGVtcz8ubWFwKGFzeW5jIChpdGVtKSA9PiAoYXdhaXQgdGhpcy5idWlsZExpbmVJdGVtKHsgY2hlY2tvdXQsIGl0ZW0gfSkpLmxpbmVJdGVtKSxcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLFxyXG4gICAgICApLFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmdlbmVyYXRlQ2FydE9iamVjdChjaGVja291dC5saW5lSXRlbXMpKSxcclxuICAgICAgdGFwKChjYXJ0KSA9PiAodGhpcy51c2VyID0gdXNlcikpLFxyXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjbGVhckNhcnQoKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UuY2xlYXJDaGVja291dEZyb21TZXNzaW9uKClcclxuICAgICAgICByZXR1cm4gY2hlY2tvdXRcclxuICAgICAgfSksXHJcbiAgICAgIGNvbmNhdE1hcCgob2xkQ2hlY2tvdXQpID0+IHRoaXMuYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KG9sZENoZWNrb3V0KSksXHJcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoY2hlY2tvdXREYXRhKS5waXBlKFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiBjaGVja291dC5saW5lSXRlbXMpLFxyXG4gICAgICBjb25jYXRNYXAoKGxpbmVJdGVtcykgPT4gb2YodGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QobGluZUl0ZW1zKSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVMaW5lSXRlbUluQ2FydCA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHF1YW50aXR5OiBudW1iZXIsIGNoZWNrb3V0PzogQ2hlY2tvdXQpOiBPYnNlcnZhYmxlPENhcnQ+ID0+XHJcbiAgICAoaXNOaWwoY2hlY2tvdXQpID8gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKSA6IG9mKGNoZWNrb3V0KSkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dExvYWRlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zOiBMaW5lSXRlbVtdID0gW11cclxuICAgICAgICBjb25zdCBpbmRleCA9IGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcz8ubWFwKChjaGVja291dEl0ZW0pID0+IGNoZWNrb3V0SXRlbS5pZCkuaW5kZXhPZihsaW5lSXRlbS5pZClcclxuICAgICAgICBjb25zdCBpc0dpZnQgPSBjaGVja291dExvYWRlZC5saW5lSXRlbXM/LltpbmRleF0/LmlzR2lmdFxyXG5cclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zW2luZGV4XS5xdWFudGl0eSArPSBxdWFudGl0eVxyXG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zW2luZGV4XS5wcmljZVBhaWQgPSBpc0dpZnQgPyAwIDogbGluZUl0ZW0ucHJpY2VQYWlkXHJcbiAgICAgICAgICBjaGVja291dExvYWRlZC5saW5lSXRlbXNbaW5kZXhdLnByaWNlID0gbGluZUl0ZW0ucHJpY2VcclxuICAgICAgICB9IGVsc2VcclxuICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcyA9IGl0ZW1zLmNvbmNhdChcclxuICAgICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zID8gY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zLmNvbmNhdChbbGluZUl0ZW1dKSA6IFtsaW5lSXRlbV0sXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlXHJcbiAgICAgICAgICAudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXRMb2FkZWQpXHJcbiAgICAgICAgICAucGlwZShtYXAoKHVwZGF0ZWRDaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QodXBkYXRlZENoZWNrb3V0LmxpbmVJdGVtcykpKVxyXG4gICAgICB9KSxcclxuICAgIClcclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUNhcnRPYmplY3QgPSAoaXRlbXM6IExpbmVJdGVtW10pOiBDYXJ0ID0+XHJcbiAgICBpdGVtcz8ucmVkdWNlKFxyXG4gICAgICAoY2FydCwgaXRlbSkgPT4gKHtcclxuICAgICAgICAuLi5jYXJ0LFxyXG4gICAgICAgIFtpdGVtLmlkXTogTGluZUl0ZW0udG9JbnN0YW5jZSh7XHJcbiAgICAgICAgICAuLi4oY2FydFtpdGVtLmlkXSB8fCBpdGVtKSxcclxuICAgICAgICAgIHF1YW50aXR5OiAoY2FydFtpdGVtLmlkXT8ucXVhbnRpdHkgfHwgMCkgKyAoaXRlbS5xdWFudGl0eSA/IGl0ZW0ucXVhbnRpdHkgOiAxKSxcclxuICAgICAgICB9KSxcclxuICAgICAgfSksXHJcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIExpbmVJdGVtPixcclxuICAgICkgfHwge31cclxuXHJcbiAgcHJpdmF0ZSBidWlsZExpbmVJdGVtID0gYXN5bmMgKHtcclxuICAgIGNoZWNrb3V0LFxyXG4gICAgaXRlbSxcclxuICAgIHF1YW50aXR5LFxyXG4gIH06IHtcclxuICAgIGNoZWNrb3V0OiBSZXF1aXJlZENoZWNrb3V0RGF0YVxyXG4gICAgaXRlbTogTGluZUl0ZW1cclxuICAgIHF1YW50aXR5PzogbnVtYmVyXHJcbiAgfSk6IFByb21pc2U8eyBjaGVja291dDogUGFydGlhbDxDaGVja291dD47IGxpbmVJdGVtOiBMaW5lSXRlbSB9PiA9PiB7XHJcbiAgICBjb25zdCBwcm9kdWN0ID0gYXdhaXQgdGhpcy5nZXRQcm9kdWN0RGF0YShpdGVtLmlkKVxyXG5cclxuICAgIGl0ZW0ucXVhbnRpdHkgPSBpdGVtPy5xdWFudGl0eSB8fCBjaGVja291dD8ubGluZUl0ZW1zPy5maW5kKChsaW5lSXRlbSkgPT4gbGluZUl0ZW0uaWQgPT09IGl0ZW0uaWQpPy5xdWFudGl0eSB8fCAwXHJcblxyXG4gICAgaWYgKHRoaXMuY2hlY2tNYXhTdG9jayhwcm9kdWN0LnN0b2NrLnF1YW50aXR5LCBpdGVtLnF1YW50aXR5IHx8IDAsIHF1YW50aXR5IHx8IDApKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rlc2N1bHBlISBUZW1vcyBhcGVuYXMgJyArIHByb2R1Y3Quc3RvY2s/LnF1YW50aXR5ICsgJyBlbSBlc3RvcXVlLicpXHJcblxyXG4gICAgY29uc3QgaW1hZ2UgPSBpdGVtLmltYWdlIHx8IGl0ZW0uaW1hZ2VzPy5zaGlmdCgpXHJcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBFQU4sIHNsdWcsIHdlaWdodCwgc2t1LCB0eXBlIH0gPSBpdGVtXHJcbiAgICBjb25zdCBpc0dpZnQgPSBpdGVtPy5pc0dpZnQgfHwgbnVsbFxyXG4gICAgY29uc3QgcHJpY2VQYWlkID0gaXNHaWZ0XHJcbiAgICAgID8gMFxyXG4gICAgICA6IHRoaXMuZ2V0UHJvZHVjdFByaWNlKHtcclxuICAgICAgICAgIHByb2R1Y3Q6IExpbmVJdGVtLnRvSW5zdGFuY2UocHJvZHVjdCksXHJcbiAgICAgICAgICBzaG9wOiBjaGVja291dC5zaG9wIHx8IHRoaXMuZGVmYXVsdFNob3AsXHJcbiAgICAgICAgICBpc1N1YnNjcmliZXI6IGNoZWNrb3V0LnVzZXI/LmlzU3Vic2NyaWJlcixcclxuICAgICAgICB9KVxyXG5cclxuICAgIFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlci5yb3VuZFByb2R1Y3RQcmljZXMoaXRlbSlcclxuICAgIFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlci5yb3VuZFByb2R1Y3RQcmljZXMocHJvZHVjdCBhcyBQcm9kdWN0KVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNoZWNrb3V0LFxyXG4gICAgICBsaW5lSXRlbTogTGluZUl0ZW0udG9JbnN0YW5jZSh7XHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgbmFtZTogbmFtZSA/PyBwcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgRUFOOiBFQU4gPz8gcHJvZHVjdC5FQU4sXHJcbiAgICAgICAgYnJhbmQ6IHByb2R1Y3QuYnJhbmQsXHJcbiAgICAgICAgc2x1Zzogc2x1ZyA/PyBwcm9kdWN0LnNsdWcsXHJcbiAgICAgICAgc2t1OiBza3UgPz8gcHJvZHVjdC5za3UsXHJcbiAgICAgICAgc3RvY2s6IHByb2R1Y3Quc3RvY2ssXHJcbiAgICAgICAgcHJpY2U6IHRoaXMucm91bmRQcmljZShwcm9kdWN0LnByaWNlKSxcclxuICAgICAgICBpbWFnZSxcclxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCA/PyBwcm9kdWN0LndlaWdodCxcclxuICAgICAgICBxdWFudGl0eTogKGl0ZW0ucXVhbnRpdHkgfHwgMCkgKyAocXVhbnRpdHkgfHwgMCksXHJcbiAgICAgICAgcHJpY2VQYWlkLFxyXG4gICAgICAgIGRpc2NvdW50OiAwLFxyXG4gICAgICAgIGNhdGVnb3JpZXM6IHByb2R1Y3QuY2F0ZWdvcmllcyB8fCBwcm9kdWN0LmNhdGVnb3J5Py5pZCA/IFtwcm9kdWN0LmNhdGVnb3J5Py5pZCwgLi4ucHJvZHVjdC5jYXRlZ29yaWVzXSA6IFtdLFxyXG4gICAgICAgIGNhdGVnb3J5OiBwcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgIGlzR2lmdDogaXNHaWZ0ID8/IG51bGwsXHJcbiAgICAgICAgY29zdFByaWNlOiBpc0dpZnQgPyAwIDogcHJvZHVjdC5jb3N0UHJpY2UgPz8gMCxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICB9KSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcm91bmRQcmljZShwcm9kdWN0UHJpY2U6IFNob3BQcmljZSk6IFNob3BQcmljZSB7XHJcbiAgICBjb25zdCB7IHByaWNlLCBmdWxsUHJpY2UsIHN1YnNjcmliZXJQcmljZSB9ID0gcHJvZHVjdFByaWNlXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5wcm9kdWN0UHJpY2UsXHJcbiAgICAgIHByaWNlOiBOdW1iZXIocHJpY2UudG9GaXhlZCgyKSksXHJcbiAgICAgIGZ1bGxQcmljZTogTnVtYmVyKGZ1bGxQcmljZS50b0ZpeGVkKDIpKSxcclxuICAgICAgLi4uKHN1YnNjcmliZXJQcmljZSAmJiB7IHN1YnNjcmliZXJQcmljZTogTnVtYmVyKHN1YnNjcmliZXJQcmljZS50b0ZpeGVkKDIpKSB9KSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0UHJvZHVjdERhdGEocHJvZHVjdElkOiBzdHJpbmcpOiBQcm9taXNlPFBhcnRpYWw8UHJvZHVjdD4+IHtcclxuICAgIGxldCBwcm9kdWN0OiBQcm9kdWN0XHJcbiAgICBsZXQgdmFyaWFudDogVmFyaWFudFxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIHByb2R1Y3QgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmdldCh7IGlkOiBwcm9kdWN0SWQgfSlcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikpIHRocm93IGVycm9yXHJcblxyXG4gICAgICBjb25zdCB7IGRhdGE6IHZhcmlhbnRzIH0gPSBhd2FpdCB0aGlzLnZhcmlhbnRSZXBvc2l0b3J5LmZpbmQoeyBmaWx0ZXJzOiB7IGlkOiBwcm9kdWN0SWQgfSB9KVxyXG5cclxuICAgICAgdmFyaWFudCA9IHZhcmlhbnRzLnNoaWZ0KClcclxuXHJcbiAgICAgIGlmICghdmFyaWFudCkgdGhyb3cgZXJyb3JcclxuXHJcbiAgICAgIHByb2R1Y3QgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmdldCh7IGlkOiB2YXJpYW50LnByb2R1Y3RJZCB9KVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnByb2R1Y3QudG9QbGFpbigpLFxyXG4gICAgICAuLi4odmFyaWFudCAmJiB7IC4uLnZhcmlhbnQudG9QbGFpbigpIH0pLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcm9kdWN0UHJpY2UgPSAoe1xyXG4gICAgcHJvZHVjdCxcclxuICAgIGlzU3Vic2NyaWJlcixcclxuICB9OiB7XHJcbiAgICBwcm9kdWN0OiBMaW5lSXRlbVxyXG4gICAgc2hvcDogU2hvcHNcclxuICAgIGlzU3Vic2NyaWJlcjogYm9vbGVhblxyXG4gIH0pOiBudW1iZXIgPT4ge1xyXG4gICAgY29uc3QgaW5mbyA9IHByb2R1Y3QucHJpY2VcclxuXHJcbiAgICBpZiAocHJvZHVjdC5pc0dpZnQpIHJldHVybiAwXHJcblxyXG4gICAgcmV0dXJuIGlzU3Vic2NyaWJlciAmJiBpbmZvLnN1YnNjcmliZXJQcmljZSA+IDBcclxuICAgICAgPyBOdW1iZXIoaW5mby5zdWJzY3JpYmVyUHJpY2UudG9GaXhlZCgyKSlcclxuICAgICAgOiBOdW1iZXIoaW5mby5wcmljZS50b0ZpeGVkKDIpKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja01heFN0b2NrID0gKGN1cnJlbnRTdG9jazogbnVtYmVyLCBjdXJyZW50SXRlbVF0ZDogbnVtYmVyLCBxdWFudGl0eVRvQWRkOiBudW1iZXIpID0+IHtcclxuICAgIGNvbnN0IG1heFN0b2NrID0gY3VycmVudFN0b2NrIHx8IDBcclxuICAgIGNvbnN0IGN1cnJlbnRJdGVtQW1vdW50ID0gY3VycmVudEl0ZW1RdGQgfHwgMFxyXG5cclxuICAgIHJldHVybiBjdXJyZW50SXRlbUFtb3VudCArIHF1YW50aXR5VG9BZGQgPiBtYXhTdG9ja1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEdpZnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KCkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoYXN5bmMgKGNoZWNrb3V0KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgbm90R2lmdEl0ZW1zOiBMaW5lSXRlbVtdID0gY2hlY2tvdXQubGluZUl0ZW1zID8gY2hlY2tvdXQubGluZUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaXNHaWZ0KSA6IFtdXHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgJ25vdEdpZnRJdGVtcycsXHJcbiAgICAgICAgICBub3RHaWZ0SXRlbXMubWFwKChpKSA9PiAoeyBuYW1lOiBpLm5hbWUsIHF1YW50aXR5OiBpLnF1YW50aXR5IH0pKSxcclxuICAgICAgICApXHJcblxyXG4gICAgICAgIGlmICghbm90R2lmdEl0ZW1zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogW10gfSBhcyBDaGVja291dFxyXG5cclxuICAgICAgICBjb25zdCBjYW1wYWlnbnMgPSBhd2FpdCB0aGlzLmJ1eTJXaW5SZXBvc2l0b3J5XHJcbiAgICAgICAgICAuZmluZCh7XHJcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgICAgICBhY3RpdmU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRydWUgfSxcclxuICAgICAgICAgICAgICAvLyBzaG9wOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0aGlzLmRlZmF1bHRTaG9wIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oKGRhdGEpID0+XHJcbiAgICAgICAgICAgIGRhdGEuZGF0YS5maWx0ZXIoKGNhbXBhaWduKSA9PiBjYW1wYWlnbi5zaG9wID09PSBTaG9wcy5BTEwgfHwgY2FtcGFpZ24uc2hvcCA9PT0gdGhpcy5kZWZhdWx0U2hvcCksXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgIGlmICghY2FtcGFpZ25zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcclxuXHJcbiAgICAgICAgY29uc3QgZWxlZ2libGVDYW1wYWlnbnM6IEJ1eTJXaW5bXSA9IFtdXHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgY2FtcGFpZ24gb2YgY2FtcGFpZ25zKSB7XHJcbiAgICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXHJcblxyXG4gICAgICAgICAgaWYgKCEoY2FtcGFpZ24uc3RhcnREYXRlLmdldFRpbWUoKSA8PSB0b2RheSkgJiYgIShjYW1wYWlnbi5lbmREYXRlLmdldFRpbWUoKSA+PSB0b2RheSkpIGNvbnRpbnVlXHJcblxyXG4gICAgICAgICAgaWYgKGNhbXBhaWduLmFjdGl2ZUNhdGVnb3J5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXNDYW1wYWluZyA9IGNhbXBhaWduLmNhdGVnb3JpZXMubWFwKChjKSA9PiBjLmlkLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXNDYW1wYWluZ0Z1bGxUcmVlID0gW11cclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2YgY2F0ZWdvcmllc0NhbXBhaW5nKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBhd2FpdCB0aGlzLmNhdGVnb3J5UmVwb3NpdG9yeS5nZXRDaGlsZHJlbihwYXJzZUludChpZCkpXHJcblxyXG4gICAgICAgICAgICAgIGNhdGVnb3JpZXNDYW1wYWluZ0Z1bGxUcmVlLnB1c2goaWQsIC4uLmNoaWxkcmVuLm1hcCgoYykgPT4gYy5pZC50b1N0cmluZygpKSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc0NhbXBhaW5nVHJlZSA9IFsuLi5uZXcgU2V0KGNhdGVnb3JpZXNDYW1wYWluZ0Z1bGxUcmVlKV1cclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyUHJvZHVjdHNDYXRlZ29yaWVzID0gbm90R2lmdEl0ZW1zLmZpbHRlcigobCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghbC5jYXRlZ29yaWVzIHx8ICFsLmNhdGVnb3JpZXM/Lmxlbmd0aCkgcmV0dXJuIHRydWVcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIGwuY2F0ZWdvcmllcy5zb21lKChjKSA9PiBjYXRlZ29yaWVzQ2FtcGFpbmdUcmVlLnNvbWUoKGNhdCkgPT4gY2F0ID09IGMpKVxyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgaWYgKGZpbHRlclByb2R1Y3RzQ2F0ZWdvcmllcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjYXJ0VmFsdWVsV2l0aENhdGVnb3JpZXMgPSBmaWx0ZXJQcm9kdWN0c0NhdGVnb3JpZXMucmVkdWNlKFxyXG4gICAgICAgICAgICAgICAgKGEsIGIpID0+IGEgKyBiLnByaWNlUGFpZCAqIGIucXVhbnRpdHksXHJcbiAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBjb25zdCBjYXJ0SXRlbnNRdWFudGl0eVdpdGhDYXRlZ29yaWVzID0gZmlsdGVyUHJvZHVjdHNDYXRlZ29yaWVzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIucXVhbnRpdHksIDApXHJcbiAgICAgICAgICAgICAgY29uc3QgaGFzTWluVmFsdWUgPSBjYXJ0VmFsdWVsV2l0aENhdGVnb3JpZXMgPj0gY2FtcGFpZ24uY2FydFZhbHVlTWluXHJcbiAgICAgICAgICAgICAgY29uc3QgaGFzTWluUXVhbnRpdHkgPVxyXG4gICAgICAgICAgICAgICAgY2FtcGFpZ24uY2FydEl0ZW5zUXVhbnRpdHlNaW4gJiYgY2FydEl0ZW5zUXVhbnRpdHlXaXRoQ2F0ZWdvcmllcyA+PSBjYW1wYWlnbi5jYXJ0SXRlbnNRdWFudGl0eU1pblxyXG5cclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJylcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICdjYW1wYWluZyBXSVRIIGNhdGVnb3JpZXMnLFxyXG4gICAgICAgICAgICAgICAgY2FtcGFpZ24ubmFtZSxcclxuICAgICAgICAgICAgICAgIGNhbXBhaWduLmNhcnRWYWx1ZU1pbixcclxuICAgICAgICAgICAgICAgIGNhbXBhaWduLmNhcnRJdGVuc1F1YW50aXR5TWluLFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICdjYXJ0VmFsdWVsV2l0aENhdGVnb3JpZXMnLFxyXG4gICAgICAgICAgICAgICAgY2FydFZhbHVlbFdpdGhDYXRlZ29yaWVzLFxyXG4gICAgICAgICAgICAgICAgJ2NhcnRJdGVuc1F1YW50aXR5V2l0aENhdGVnb3JpZXMnLFxyXG4gICAgICAgICAgICAgICAgY2FydEl0ZW5zUXVhbnRpdHlXaXRoQ2F0ZWdvcmllcyxcclxuICAgICAgICAgICAgICAgICdoYXNNaW5WYWx1ZScsXHJcbiAgICAgICAgICAgICAgICBoYXNNaW5WYWx1ZSxcclxuICAgICAgICAgICAgICAgICdoYXNNaW5RdWFudGl0eScsXHJcbiAgICAgICAgICAgICAgICBoYXNNaW5RdWFudGl0eSxcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgaWYgKGhhc01pblF1YW50aXR5IHx8IGhhc01pblZhbHVlKSBlbGVnaWJsZUNhbXBhaWducy5wdXNoKGNhbXBhaWduKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBjYXJ0VG90YWwgPSBub3RHaWZ0SXRlbXMucmVkdWNlKChhLCBiKSA9PiBhICsgYi5wcmljZVBhaWQgKiBiLnF1YW50aXR5LCAwKVxyXG4gICAgICAgICAgICBjb25zdCBjYXJ0SXRlbnNRdWFudGl0eSA9IG5vdEdpZnRJdGVtcy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLnF1YW50aXR5LCAwKVxyXG4gICAgICAgICAgICBjb25zdCBoYXNNaW5WYWx1ZSA9IGNhbXBhaWduLmNhcnRWYWx1ZSAmJiBjYW1wYWlnbi5jYXJ0VmFsdWUgPiAwICYmIGNhbXBhaWduLmNhcnRWYWx1ZSA8PSBjYXJ0VG90YWxcclxuICAgICAgICAgICAgY29uc3QgaGFzTWluUXVhbnRpdHkgPSBjYW1wYWlnbi5jYXJ0SXRlbnNRdWFudGl0eU1pbiAmJiBjYXJ0SXRlbnNRdWFudGl0eSA+PSBjYW1wYWlnbi5jYXJ0SXRlbnNRdWFudGl0eU1pblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJylcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhbXBhaW5nIFdJVEhPVVQgY2F0ZWdvcmllcycsIGNhbXBhaWduLm5hbWUsIGNhbXBhaWduLmNhcnRWYWx1ZSwgY2FtcGFpZ24uY2FydEl0ZW5zUXVhbnRpdHlNaW4pXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICdjYXJ0VG90YWwnLFxyXG4gICAgICAgICAgICAgIGNhcnRUb3RhbCxcclxuICAgICAgICAgICAgICAnY2FydEl0ZW5zUXVhbnRpdHknLFxyXG4gICAgICAgICAgICAgIGNhcnRJdGVuc1F1YW50aXR5LFxyXG4gICAgICAgICAgICAgICdoYXNNaW5WYWx1ZScsXHJcbiAgICAgICAgICAgICAgaGFzTWluVmFsdWUsXHJcbiAgICAgICAgICAgICAgJ2hhc01pblF1YW50aXR5JyxcclxuICAgICAgICAgICAgICBoYXNNaW5RdWFudGl0eSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBpZiAoaGFzTWluUXVhbnRpdHkgfHwgaGFzTWluVmFsdWUpIGVsZWdpYmxlQ2FtcGFpZ25zLnB1c2goY2FtcGFpZ24pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICdlbGVnaWJsZUNhbXBhaWducycsXHJcbiAgICAgICAgICBlbGVnaWJsZUNhbXBhaWducy5tYXAoKGMpID0+IGMubmFtZSksXHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgICBpZiAoIWVsZWdpYmxlQ2FtcGFpZ25zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcclxuXHJcbiAgICAgICAgY29uc3QgY2FtcGFpbmduUHJvZHVjdHM6IFByb2R1Y3RbXVtdID0gW11cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBjYW1wYWlnbiBvZiBlbGVnaWJsZUNhbXBhaWducykge1xyXG4gICAgICAgICAgbGV0IGVsZWdpYmxlUHJvZHVjdHMgPSBbXVxyXG5cclxuICAgICAgICAgIGZvciAoY29uc3QgcHJvZHVjdCBvZiBjYW1wYWlnbi5wcm9kdWN0cykge1xyXG4gICAgICAgICAgICBjb25zdCB7IGRhdGE6IHByb2R1Y3REYXRhIH0gPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmQoeyBmaWx0ZXJzOiB7IHNrdTogcHJvZHVjdCB9IH0pXHJcblxyXG4gICAgICAgICAgICBpZiAoIXByb2R1Y3REYXRhLmxlbmd0aCkgY29udGludWVcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGdpZnQgPSBwcm9kdWN0RGF0YS5zaGlmdCgpXHJcblxyXG4gICAgICAgICAgICBpZiAoZ2lmdC5zdG9jay5xdWFudGl0eSA8IDEpIGNvbnRpbnVlXHJcblxyXG4gICAgICAgICAgICBlbGVnaWJsZVByb2R1Y3RzLnB1c2goZ2lmdClcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjYW1wYWluZ25Qcm9kdWN0cy5wdXNoKGVsZWdpYmxlUHJvZHVjdHMpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWNhbXBhaW5nblByb2R1Y3RzLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcclxuXHJcbiAgICAgICAgY29uc3QgZ2lmdHMgPSB0aGlzLmdpZnRUb0xpbmVJdGVtcyhbXS5jb25jYXQoLi4uY2FtcGFpbmduUHJvZHVjdHMpKVxyXG5cclxuICAgICAgICByZXR1cm4geyAuLi5jaGVja291dCwgbGluZUl0ZW1zOiBub3RHaWZ0SXRlbXMuY29uY2F0KGdpZnRzKSB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dCkpLFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmdlbmVyYXRlQ2FydE9iamVjdChjaGVja291dC5saW5lSXRlbXMpKSxcclxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnaWZ0VG9MaW5lSXRlbXMoaXRlbXM6IFByb2R1Y3RbXSk6IExpbmVJdGVtW10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGJyYW5kLCBjYXRlZ29yaWVzLCBjYXRlZ29yeSwgaWQsIG5hbWUsIHByaWNlLCBza3UsIHNsdWcsIHN0b2NrLCB3ZWlnaHQsIEVBTiB9ID0gaXRlbVxyXG4gICAgICBjb25zdCBpbWFnZSA9IGl0ZW0/Lm1pbmlhdHVyZXM/Lmxlbmd0aCA/IGl0ZW0ubWluaWF0dXJlc1swXSA6IGl0ZW0uaW1hZ2VzWzBdXHJcblxyXG4gICAgICByZXR1cm4gTGluZUl0ZW0udG9JbnN0YW5jZSh7XHJcbiAgICAgICAgYnJhbmQsXHJcbiAgICAgICAgY2F0ZWdvcmllcyxcclxuICAgICAgICBjYXRlZ29yeSxcclxuICAgICAgICBpZDogaWQudG9TdHJpbmcoKSxcclxuICAgICAgICBuYW1lLFxyXG4gICAgICAgIHByaWNlLFxyXG4gICAgICAgIHNrdSxcclxuICAgICAgICBzbHVnLFxyXG4gICAgICAgIHN0b2NrLFxyXG4gICAgICAgIHdlaWdodCxcclxuICAgICAgICBFQU4sXHJcbiAgICAgICAgaW1hZ2UsXHJcbiAgICAgICAgcHJpY2VQYWlkOiAwLFxyXG4gICAgICAgIHF1YW50aXR5OiAxLFxyXG4gICAgICAgIGlzR2lmdDogdHJ1ZSxcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUVMLDBCQUEwQixFQUUxQixRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixhQUFhLEVBR2Isd0JBQXdCLEVBRXhCLEtBQUssRUFJTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBOzs7OztBQVFwRCxNQUFNLE9BQU8sV0FBVztJQUl0QixZQUNtQixXQUF3QixFQUN4QixlQUFnQyxFQUNWLFdBQWtCLEVBQ1gsaUJBQW9DLEVBQ25DLGtCQUFzQyxFQUN2QyxpQkFBb0MsRUFDcEMsaUJBQTZDO1FBTjFFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNWLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ1gsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7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bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQnV5MldpbixcclxuICBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXQsXHJcbiAgaXNOaWwsXHJcbiAgTGluZUl0ZW0sXHJcbiAgTm90Rm91bmRFcnJvcixcclxuICBQcm9kdWN0LFxyXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxyXG4gIFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlcixcclxuICBTaG9wUHJpY2UsXHJcbiAgU2hvcHMsXHJcbiAgVXNlcixcclxuICBWYXJpYW50LFxyXG4gIFZhcmlhbnRSZXBvc2l0b3J5LFxyXG4gIFdoZXJlLFxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5pbXBvcnQgeyBmcm9tLCBpaWYsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29uY2F0TWFwLCBtYXAsIG1lcmdlTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuaW1wb3J0IHsgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vY29uc3RzJ1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0LnNlcnZpY2UnXHJcbmltcG9ydCB7IFJlcXVpcmVkQ2hlY2tvdXREYXRhIH0gZnJvbSAnLi90eXBlcydcclxuXHJcbmV4cG9ydCB0eXBlIENhcnQgPSB7XHJcbiAgW2lkOiBzdHJpbmddOiBMaW5lSXRlbVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjYXJ0U3ViamVjdDogU3ViamVjdDxDYXJ0PiA9IG5ldyBTdWJqZWN0KClcclxuICBwcml2YXRlIHVzZXI6IFVzZXJcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UsXHJcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXHJcbiAgICBASW5qZWN0KCdQcm9kdWN0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ1ZhcmlhbnRSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSB2YXJpYW50UmVwb3NpdG9yeTogVmFyaWFudFJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdCdXkyV2luUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgYnV5MldpblJlcG9zaXRvcnk6IEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gICkge31cclxuXHJcbiAgYWRkSXRlbShpdGVtOiBMaW5lSXRlbSwgcXVhbnRpdHk6IG51bWJlciA9IDEpOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KCkpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcChhc3luYyAoY2hlY2tvdXQpID0+IGF3YWl0IHRoaXMuYnVpbGRMaW5lSXRlbSh7IGNoZWNrb3V0LCBpdGVtLCBxdWFudGl0eTogcXVhbnRpdHkgfHwgMSB9KSksXHJcbiAgICAgIG1lcmdlTWFwKCh7IGNoZWNrb3V0LCBsaW5lSXRlbSB9KSA9PiB0aGlzLnVwZGF0ZUxpbmVJdGVtSW5DYXJ0KGxpbmVJdGVtLCBxdWFudGl0eSB8fCAxLCBjaGVja291dCBhcyBDaGVja291dCkpLFxyXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBkZWNyZWFzZUl0ZW0oaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHtcclxuICAgICAgICBjb25zdCBjaGVja291dEl0ZW0gPSBjaGVja291dC5saW5lSXRlbXM/LmZpbmQoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5pZCA9PT0gaXRlbS5pZClcclxuXHJcbiAgICAgICAgaWYgKCFpc05pbChjaGVja291dEl0ZW0pKSBjaGVja291dEl0ZW0ucXVhbnRpdHkgLT0gY2hlY2tvdXRJdGVtLnF1YW50aXR5ID4gMSA/IDEgOiAwXHJcblxyXG4gICAgICAgIHJldHVybiBjaGVja291dFxyXG4gICAgICB9KSxcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQpKSxcclxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXHJcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldENhcnQoY2hlY2tvdXQ/OiBSZXF1aXJlZENoZWNrb3V0RGF0YSk6IE9ic2VydmFibGU8Q2FydD4ge1xyXG4gICAgdGhpcy5idWlsZENhcnRGcm9tQ2hlY2tvdXQoY2hlY2tvdXQpLnN1YnNjcmliZSgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNhcnRTdWJqZWN0XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBUaGUgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZFxyXG4gICAqL1xyXG4gIGdldFZhcmlhbnRQcmljZURpc2NvdW50KGl0ZW06IExpbmVJdGVtKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXIoKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKHVzZXIpID0+XHJcbiAgICAgICAgaWlmKFxyXG4gICAgICAgICAgKCkgPT4gdXNlci5pc1N1YnNjcmliZXIgJiYgISFpdGVtLnByaWNlLnN1YnNjcmliZXJQcmljZSxcclxuICAgICAgICAgIG9mKGl0ZW0ucHJpY2Uuc3Vic2NyaWJlclByaWNlKSxcclxuICAgICAgICAgIG9mKGl0ZW0ucHJpY2UucHJpY2UpLFxyXG4gICAgICAgICksXHJcbiAgICAgICksXHJcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoaXRlbS5wcmljZS5wcmljZSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSXRlbShpdGVtOiBMaW5lSXRlbSk6IE9ic2VydmFibGU8Q2FydD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KCkucGlwZShcclxuICAgICAgbWFwKChjaGVja291dCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2hlY2tvdXQubGluZUl0ZW1zLmZpbmRJbmRleCgobGluZUl0ZW0pID0+IGxpbmVJdGVtLmlkID09PSBpdGVtLmlkKVxyXG5cclxuICAgICAgICBpZiAoaW5kZXggPj0gMCkgY2hlY2tvdXQubGluZUl0ZW1zLnNwbGljZShpbmRleCwgMSlcclxuXHJcbiAgICAgICAgcmV0dXJuIGNoZWNrb3V0XHJcbiAgICAgIH0pLFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dCkpLFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmdlbmVyYXRlQ2FydE9iamVjdChjaGVja291dC5saW5lSXRlbXMpKSxcclxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlVXNlckNhcnQodXNlcjogVXNlcik6IE9ic2VydmFibGU8Q2FydD4ge1xyXG4gICAgY29uc3QgaXNTYW1lVXNlcklkID0gIXVzZXI/LmlkIHx8IHRoaXMudXNlcj8uaWQgPT09IHVzZXI/LmlkXHJcbiAgICBjb25zdCBpc1NhbWVVc2VyID0gaXNTYW1lVXNlcklkICYmICEhdGhpcy51c2VyPy5pc1N1YnNjcmliZXIgPT09ICEhdXNlcj8uaXNTdWJzY3JpYmVyXHJcblxyXG4gICAgaWYgKGlzU2FtZVVzZXIpIHJldHVybiB0aGlzLmdldENhcnQoKVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRVc2VyKENoZWNrb3V0LnRvSW5zdGFuY2UoeyAuLi5jaGVja291dC50b1BsYWluKCksIHVzZXIgfSkpLFxyXG4gICAgICApLFxyXG4gICAgICBjb25jYXRNYXAoXHJcbiAgICAgICAgYXN5bmMgKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jaGVja291dFNlcnZpY2VcclxuICAgICAgICAgICAgLnVwZGF0ZUNoZWNrb3V0TGluZUl0ZW1zKFxyXG4gICAgICAgICAgICAgIENoZWNrb3V0LnRvSW5zdGFuY2Uoe1xyXG4gICAgICAgICAgICAgICAgLi4uY2hlY2tvdXQudG9QbGFpbigpLFxyXG4gICAgICAgICAgICAgICAgbGluZUl0ZW1zOiBjaGVja291dC5saW5lSXRlbXM/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICA/IGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tvdXQubGluZUl0ZW1zPy5tYXAoYXN5bmMgKGl0ZW0pID0+IChhd2FpdCB0aGlzLmJ1aWxkTGluZUl0ZW0oeyBjaGVja291dCwgaXRlbSB9KSkubGluZUl0ZW0pLFxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCksXHJcbiAgICAgICksXHJcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KGNoZWNrb3V0LmxpbmVJdGVtcykpLFxyXG4gICAgICB0YXAoKGNhcnQpID0+ICh0aGlzLnVzZXIgPSB1c2VyKSksXHJcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNsZWFyQ2FydCgpOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5jbGVhckNoZWNrb3V0RnJvbVNlc3Npb24oKVxyXG4gICAgICAgIHJldHVybiBjaGVja291dFxyXG4gICAgICB9KSxcclxuICAgICAgY29uY2F0TWFwKChvbGRDaGVja291dCkgPT4gdGhpcy5idWlsZENhcnRGcm9tQ2hlY2tvdXQob2xkQ2hlY2tvdXQpKSxcclxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZENhcnRGcm9tQ2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dChjaGVja291dERhdGEpLnBpcGUoXHJcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IGNoZWNrb3V0LmxpbmVJdGVtcyksXHJcbiAgICAgIGNvbmNhdE1hcCgobGluZUl0ZW1zKSA9PiBvZih0aGlzLmdlbmVyYXRlQ2FydE9iamVjdChsaW5lSXRlbXMpKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUxpbmVJdGVtSW5DYXJ0ID0gKGxpbmVJdGVtOiBMaW5lSXRlbSwgcXVhbnRpdHk6IG51bWJlciwgY2hlY2tvdXQ/OiBDaGVja291dCk6IE9ic2VydmFibGU8Q2FydD4gPT5cclxuICAgIChpc05pbChjaGVja291dCkgPyB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpIDogb2YoY2hlY2tvdXQpKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0TG9hZGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbXM6IExpbmVJdGVtW10gPSBbXVxyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zPy5tYXAoKGNoZWNrb3V0SXRlbSkgPT4gY2hlY2tvdXRJdGVtLmlkKS5pbmRleE9mKGxpbmVJdGVtLmlkKVxyXG4gICAgICAgIGNvbnN0IGlzR2lmdCA9IGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcz8uW2luZGV4XT8uaXNHaWZ0XHJcblxyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICBjaGVja291dExvYWRlZC5saW5lSXRlbXNbaW5kZXhdLnF1YW50aXR5ICs9IHF1YW50aXR5XHJcbiAgICAgICAgICBjaGVja291dExvYWRlZC5saW5lSXRlbXNbaW5kZXhdLnByaWNlUGFpZCA9IGlzR2lmdCA/IDAgOiBsaW5lSXRlbS5wcmljZVBhaWRcclxuICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtc1tpbmRleF0ucHJpY2UgPSBsaW5lSXRlbS5wcmljZVxyXG4gICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zID0gaXRlbXMuY29uY2F0KFxyXG4gICAgICAgICAgICBjaGVja291dExvYWRlZC5saW5lSXRlbXMgPyBjaGVja291dExvYWRlZC5saW5lSXRlbXMuY29uY2F0KFtsaW5lSXRlbV0pIDogW2xpbmVJdGVtXSxcclxuICAgICAgICAgIClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2VcclxuICAgICAgICAgIC51cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dExvYWRlZClcclxuICAgICAgICAgIC5waXBlKG1hcCgodXBkYXRlZENoZWNrb3V0KSA9PiB0aGlzLmdlbmVyYXRlQ2FydE9iamVjdCh1cGRhdGVkQ2hlY2tvdXQubGluZUl0ZW1zKSkpXHJcbiAgICAgIH0pLFxyXG4gICAgKVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlQ2FydE9iamVjdCA9IChpdGVtczogTGluZUl0ZW1bXSk6IENhcnQgPT5cclxuICAgIGl0ZW1zPy5yZWR1Y2UoXHJcbiAgICAgIChjYXJ0LCBpdGVtKSA9PiAoe1xyXG4gICAgICAgIC4uLmNhcnQsXHJcbiAgICAgICAgW2l0ZW0uaWRdOiBMaW5lSXRlbS50b0luc3RhbmNlKHtcclxuICAgICAgICAgIC4uLihjYXJ0W2l0ZW0uaWRdIHx8IGl0ZW0pLFxyXG4gICAgICAgICAgcXVhbnRpdHk6IChjYXJ0W2l0ZW0uaWRdPy5xdWFudGl0eSB8fCAwKSArIChpdGVtLnF1YW50aXR5ID8gaXRlbS5xdWFudGl0eSA6IDEpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9KSxcclxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgTGluZUl0ZW0+LFxyXG4gICAgKSB8fCB7fVxyXG5cclxuICBwcml2YXRlIGJ1aWxkTGluZUl0ZW0gPSBhc3luYyAoe1xyXG4gICAgY2hlY2tvdXQsXHJcbiAgICBpdGVtLFxyXG4gICAgcXVhbnRpdHksXHJcbiAgfToge1xyXG4gICAgY2hlY2tvdXQ6IFJlcXVpcmVkQ2hlY2tvdXREYXRhXHJcbiAgICBpdGVtOiBMaW5lSXRlbVxyXG4gICAgcXVhbnRpdHk/OiBudW1iZXJcclxuICB9KTogUHJvbWlzZTx7IGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0PjsgbGluZUl0ZW06IExpbmVJdGVtIH0+ID0+IHtcclxuICAgIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCB0aGlzLmdldFByb2R1Y3REYXRhKGl0ZW0uaWQpXHJcblxyXG4gICAgaXRlbS5xdWFudGl0eSA9IGl0ZW0/LnF1YW50aXR5IHx8IGNoZWNrb3V0Py5saW5lSXRlbXM/LmZpbmQoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5pZCA9PT0gaXRlbS5pZCk/LnF1YW50aXR5IHx8IDBcclxuXHJcbiAgICBpZiAodGhpcy5jaGVja01heFN0b2NrKHByb2R1Y3Quc3RvY2sucXVhbnRpdHksIGl0ZW0ucXVhbnRpdHkgfHwgMCwgcXVhbnRpdHkgfHwgMCkpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGVzY3VscGUhIFRlbW9zIGFwZW5hcyAnICsgcHJvZHVjdC5zdG9jaz8ucXVhbnRpdHkgKyAnIGVtIGVzdG9xdWUuJylcclxuXHJcbiAgICBjb25zdCBpbWFnZSA9IGl0ZW0uaW1hZ2UgfHwgaXRlbS5pbWFnZXM/LnNoaWZ0KClcclxuICAgIGNvbnN0IHsgaWQsIG5hbWUsIEVBTiwgc2x1Zywgd2VpZ2h0LCBza3UsIHR5cGUgfSA9IGl0ZW1cclxuICAgIGNvbnN0IGlzR2lmdCA9IGl0ZW0/LmlzR2lmdCB8fCBudWxsXHJcbiAgICBjb25zdCBwcmljZVBhaWQgPSBpc0dpZnRcclxuICAgICAgPyAwXHJcbiAgICAgIDogdGhpcy5nZXRQcm9kdWN0UHJpY2Uoe1xyXG4gICAgICAgICAgcHJvZHVjdDogTGluZUl0ZW0udG9JbnN0YW5jZShwcm9kdWN0KSxcclxuICAgICAgICAgIHNob3A6IGNoZWNrb3V0LnNob3AgfHwgdGhpcy5kZWZhdWx0U2hvcCxcclxuICAgICAgICAgIGlzU3Vic2NyaWJlcjogY2hlY2tvdXQudXNlcj8uaXNTdWJzY3JpYmVyLFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgUm91bmRQcm9kdWN0UHJpY2VzSGVscGVyLnJvdW5kUHJvZHVjdFByaWNlcyhpdGVtKVxyXG4gICAgUm91bmRQcm9kdWN0UHJpY2VzSGVscGVyLnJvdW5kUHJvZHVjdFByaWNlcyhwcm9kdWN0IGFzIFByb2R1Y3QpXHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2hlY2tvdXQsXHJcbiAgICAgIGxpbmVJdGVtOiBMaW5lSXRlbS50b0luc3RhbmNlKHtcclxuICAgICAgICBpZCxcclxuICAgICAgICBuYW1lOiBuYW1lID8/IHByb2R1Y3QubmFtZSxcclxuICAgICAgICBFQU46IEVBTiA/PyBwcm9kdWN0LkVBTixcclxuICAgICAgICBicmFuZDogcHJvZHVjdC5icmFuZCxcclxuICAgICAgICBzbHVnOiBzbHVnID8/IHByb2R1Y3Quc2x1ZyxcclxuICAgICAgICBza3U6IHNrdSA/PyBwcm9kdWN0LnNrdSxcclxuICAgICAgICBzdG9jazogcHJvZHVjdC5zdG9jayxcclxuICAgICAgICBwcmljZTogdGhpcy5yb3VuZFByaWNlKHByb2R1Y3QucHJpY2UpLFxyXG4gICAgICAgIGltYWdlLFxyXG4gICAgICAgIHdlaWdodDogd2VpZ2h0ID8/IHByb2R1Y3Qud2VpZ2h0LFxyXG4gICAgICAgIHF1YW50aXR5OiAoaXRlbS5xdWFudGl0eSB8fCAwKSArIChxdWFudGl0eSB8fCAwKSxcclxuICAgICAgICBwcmljZVBhaWQsXHJcbiAgICAgICAgZGlzY291bnQ6IDAsXHJcbiAgICAgICAgY2F0ZWdvcmllczogcHJvZHVjdC5jYXRlZ29yaWVzIHx8IHByb2R1Y3QuY2F0ZWdvcnk/LmlkID8gW3Byb2R1Y3QuY2F0ZWdvcnk/LmlkLCAuLi5wcm9kdWN0LmNhdGVnb3JpZXNdIDogW10sXHJcbiAgICAgICAgY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXHJcbiAgICAgICAgaXNHaWZ0OiBpc0dpZnQgPz8gbnVsbCxcclxuICAgICAgICBjb3N0UHJpY2U6IGlzR2lmdCA/IDAgOiBwcm9kdWN0LmNvc3RQcmljZSA/PyAwLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgIH0pLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByb3VuZFByaWNlKHByb2R1Y3RQcmljZTogU2hvcFByaWNlKTogU2hvcFByaWNlIHtcclxuICAgIGNvbnN0IHsgcHJpY2UsIGZ1bGxQcmljZSwgc3Vic2NyaWJlclByaWNlIH0gPSBwcm9kdWN0UHJpY2VcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnByb2R1Y3RQcmljZSxcclxuICAgICAgcHJpY2U6IE51bWJlcihwcmljZS50b0ZpeGVkKDIpKSxcclxuICAgICAgZnVsbFByaWNlOiBOdW1iZXIoZnVsbFByaWNlLnRvRml4ZWQoMikpLFxyXG4gICAgICAuLi4oc3Vic2NyaWJlclByaWNlICYmIHsgc3Vic2NyaWJlclByaWNlOiBOdW1iZXIoc3Vic2NyaWJlclByaWNlLnRvRml4ZWQoMikpIH0pLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm9kdWN0RGF0YShwcm9kdWN0SWQ6IHN0cmluZyk6IFByb21pc2U8UGFydGlhbDxQcm9kdWN0Pj4ge1xyXG4gICAgbGV0IHByb2R1Y3Q6IFByb2R1Y3RcclxuICAgIGxldCB2YXJpYW50OiBWYXJpYW50XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgcHJvZHVjdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IHByb2R1Y3RJZCB9KVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSkgdGhyb3cgZXJyb3JcclxuXHJcbiAgICAgIGNvbnN0IHsgZGF0YTogdmFyaWFudHMgfSA9IGF3YWl0IHRoaXMudmFyaWFudFJlcG9zaXRvcnkuZmluZCh7IGZpbHRlcnM6IHsgaWQ6IHByb2R1Y3RJZCB9IH0pXHJcblxyXG4gICAgICB2YXJpYW50ID0gdmFyaWFudHMuc2hpZnQoKVxyXG5cclxuICAgICAgaWYgKCF2YXJpYW50KSB0aHJvdyBlcnJvclxyXG5cclxuICAgICAgcHJvZHVjdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IHZhcmlhbnQucHJvZHVjdElkIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4ucHJvZHVjdC50b1BsYWluKCksXHJcbiAgICAgIC4uLih2YXJpYW50ICYmIHsgLi4udmFyaWFudC50b1BsYWluKCkgfSksXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByb2R1Y3RQcmljZSA9ICh7XHJcbiAgICBwcm9kdWN0LFxyXG4gICAgaXNTdWJzY3JpYmVyLFxyXG4gIH06IHtcclxuICAgIHByb2R1Y3Q6IExpbmVJdGVtXHJcbiAgICBzaG9wOiBTaG9wc1xyXG4gICAgaXNTdWJzY3JpYmVyOiBib29sZWFuXHJcbiAgfSk6IG51bWJlciA9PiB7XHJcbiAgICBjb25zdCBpbmZvID0gcHJvZHVjdC5wcmljZVxyXG5cclxuICAgIGlmIChwcm9kdWN0LmlzR2lmdCkgcmV0dXJuIDBcclxuXHJcbiAgICByZXR1cm4gaXNTdWJzY3JpYmVyICYmIGluZm8uc3Vic2NyaWJlclByaWNlID4gMFxyXG4gICAgICA/IE51bWJlcihpbmZvLnN1YnNjcmliZXJQcmljZS50b0ZpeGVkKDIpKVxyXG4gICAgICA6IE51bWJlcihpbmZvLnByaWNlLnRvRml4ZWQoMikpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrTWF4U3RvY2sgPSAoY3VycmVudFN0b2NrOiBudW1iZXIsIGN1cnJlbnRJdGVtUXRkOiBudW1iZXIsIHF1YW50aXR5VG9BZGQ6IG51bWJlcikgPT4ge1xyXG4gICAgY29uc3QgbWF4U3RvY2sgPSBjdXJyZW50U3RvY2sgfHwgMFxyXG4gICAgY29uc3QgY3VycmVudEl0ZW1BbW91bnQgPSBjdXJyZW50SXRlbVF0ZCB8fCAwXHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnRJdGVtQW1vdW50ICsgcXVhbnRpdHlUb0FkZCA+IG1heFN0b2NrXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0R2lmdHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcChhc3luYyAoY2hlY2tvdXQpID0+IHtcclxuICAgICAgICBjb25zdCBub3RHaWZ0SXRlbXM6IExpbmVJdGVtW10gPSBjaGVja291dC5saW5lSXRlbXMgPyBjaGVja291dC5saW5lSXRlbXMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc0dpZnQpIDogW11cclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAnbm90R2lmdEl0ZW1zJyxcclxuICAgICAgICAgIG5vdEdpZnRJdGVtcy5tYXAoKGkpID0+ICh7IG5hbWU6IGkubmFtZSwgcXVhbnRpdHk6IGkucXVhbnRpdHkgfSkpLFxyXG4gICAgICAgIClcclxuXHJcbiAgICAgICAgaWYgKCFub3RHaWZ0SXRlbXMubGVuZ3RoKSByZXR1cm4geyAuLi5jaGVja291dCwgbGluZUl0ZW1zOiBbXSB9IGFzIENoZWNrb3V0XHJcblxyXG4gICAgICAgIGNvbnN0IGNhbXBhaWducyA9IGF3YWl0IHRoaXMuYnV5MldpblJlcG9zaXRvcnlcclxuICAgICAgICAgIC5maW5kKHtcclxuICAgICAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgICAgIGFjdGl2ZTogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgIC8vIHNob3A6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRoaXMuZGVmYXVsdFNob3AgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbigoZGF0YSkgPT5cclxuICAgICAgICAgICAgZGF0YS5kYXRhLmZpbHRlcigoY2FtcGFpZ24pID0+IGNhbXBhaWduLnNob3AgPT09IFNob3BzLkFMTCB8fCBjYW1wYWlnbi5zaG9wID09PSB0aGlzLmRlZmF1bHRTaG9wKSxcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgaWYgKCFjYW1wYWlnbnMubGVuZ3RoKSByZXR1cm4geyAuLi5jaGVja291dCwgbGluZUl0ZW1zOiBub3RHaWZ0SXRlbXMgfSBhcyBDaGVja291dFxyXG5cclxuICAgICAgICBjb25zdCBlbGVnaWJsZUNhbXBhaWduczogQnV5MldpbltdID0gW11cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBjYW1wYWlnbiBvZiBjYW1wYWlnbnMpIHtcclxuICAgICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcclxuXHJcbiAgICAgICAgICBpZiAoIShjYW1wYWlnbi5zdGFydERhdGUuZ2V0VGltZSgpIDw9IHRvZGF5KSAmJiAhKGNhbXBhaWduLmVuZERhdGUuZ2V0VGltZSgpID49IHRvZGF5KSkgY29udGludWVcclxuXHJcbiAgICAgICAgICBpZiAoY2FtcGFpZ24uYWN0aXZlQ2F0ZWdvcnkpIHtcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc0NhbXBhaW5nID0gY2FtcGFpZ24uY2F0ZWdvcmllcy5tYXAoKGMpID0+IGMuaWQudG9TdHJpbmcoKSlcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc0NhbXBhaW5nRnVsbFRyZWUgPSBbXVxyXG5cclxuICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBjYXRlZ29yaWVzQ2FtcGFpbmcpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldENoaWxkcmVuKHBhcnNlSW50KGlkKSlcclxuXHJcbiAgICAgICAgICAgICAgY2F0ZWdvcmllc0NhbXBhaW5nRnVsbFRyZWUucHVzaChpZCwgLi4uY2hpbGRyZW4ubWFwKChjKSA9PiBjLmlkLnRvU3RyaW5nKCkpKVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzQ2FtcGFpbmdUcmVlID0gWy4uLm5ldyBTZXQoY2F0ZWdvcmllc0NhbXBhaW5nRnVsbFRyZWUpXVxyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJQcm9kdWN0c0NhdGVnb3JpZXMgPSBub3RHaWZ0SXRlbXMuZmlsdGVyKChsKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKCFsLmNhdGVnb3JpZXMgfHwgIWwuY2F0ZWdvcmllcz8ubGVuZ3RoKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAgICAgICAgICAgICByZXR1cm4gbC5jYXRlZ29yaWVzLnNvbWUoKGMpID0+IGNhdGVnb3JpZXNDYW1wYWluZ1RyZWUuc29tZSgoY2F0KSA9PiBjYXQgPT0gYykpXHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICBpZiAoZmlsdGVyUHJvZHVjdHNDYXRlZ29yaWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNhcnRWYWx1ZWxXaXRoQ2F0ZWdvcmllcyA9IGZpbHRlclByb2R1Y3RzQ2F0ZWdvcmllcy5yZWR1Y2UoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYSArIGIucHJpY2VQYWlkICogYi5xdWFudGl0eSxcclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGNvbnN0IGNhcnRJdGVuc1F1YW50aXR5V2l0aENhdGVnb3JpZXMgPSBmaWx0ZXJQcm9kdWN0c0NhdGVnb3JpZXMucmVkdWNlKChhLCBiKSA9PiBhICsgYi5xdWFudGl0eSwgMClcclxuICAgICAgICAgICAgICBjb25zdCBoYXNNaW5WYWx1ZSA9IGNhbXBhaWduLmNhcnRWYWx1ZU1pbiAmJiBjYXJ0VmFsdWVsV2l0aENhdGVnb3JpZXMgPj0gY2FtcGFpZ24uY2FydFZhbHVlTWluXHJcbiAgICAgICAgICAgICAgY29uc3QgaGFzTWluUXVhbnRpdHkgPVxyXG4gICAgICAgICAgICAgICAgY2FtcGFpZ24uY2FydEl0ZW5zUXVhbnRpdHlNaW4gJiYgY2FydEl0ZW5zUXVhbnRpdHlXaXRoQ2F0ZWdvcmllcyA+PSBjYW1wYWlnbi5jYXJ0SXRlbnNRdWFudGl0eU1pblxyXG5cclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJylcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICdjYW1wYWluZyBXSVRIIGNhdGVnb3JpZXMnLFxyXG4gICAgICAgICAgICAgICAgY2FtcGFpZ24ubmFtZSxcclxuICAgICAgICAgICAgICAgIGNhbXBhaWduLmNhcnRWYWx1ZU1pbixcclxuICAgICAgICAgICAgICAgIGNhbXBhaWduLmNhcnRJdGVuc1F1YW50aXR5TWluLFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICdjYXJ0VmFsdWVsV2l0aENhdGVnb3JpZXMnLFxyXG4gICAgICAgICAgICAgICAgY2FydFZhbHVlbFdpdGhDYXRlZ29yaWVzLFxyXG4gICAgICAgICAgICAgICAgJ2NhcnRJdGVuc1F1YW50aXR5V2l0aENhdGVnb3JpZXMnLFxyXG4gICAgICAgICAgICAgICAgY2FydEl0ZW5zUXVhbnRpdHlXaXRoQ2F0ZWdvcmllcyxcclxuICAgICAgICAgICAgICAgICdoYXNNaW5WYWx1ZScsXHJcbiAgICAgICAgICAgICAgICBoYXNNaW5WYWx1ZSxcclxuICAgICAgICAgICAgICAgICdoYXNNaW5RdWFudGl0eScsXHJcbiAgICAgICAgICAgICAgICBoYXNNaW5RdWFudGl0eSxcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgaWYgKGhhc01pblF1YW50aXR5IHx8IGhhc01pblZhbHVlKSBlbGVnaWJsZUNhbXBhaWducy5wdXNoKGNhbXBhaWduKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBjYXJ0VG90YWwgPSBub3RHaWZ0SXRlbXMucmVkdWNlKChhLCBiKSA9PiBhICsgYi5wcmljZVBhaWQgKiBiLnF1YW50aXR5LCAwKVxyXG4gICAgICAgICAgICBjb25zdCBjYXJ0SXRlbnNRdWFudGl0eSA9IG5vdEdpZnRJdGVtcy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLnF1YW50aXR5LCAwKVxyXG4gICAgICAgICAgICBjb25zdCBoYXNNaW5WYWx1ZSA9IGNhbXBhaWduLmNhcnRWYWx1ZSAmJiBjYW1wYWlnbi5jYXJ0VmFsdWUgPiAwICYmIGNhbXBhaWduLmNhcnRWYWx1ZSA8PSBjYXJ0VG90YWxcclxuICAgICAgICAgICAgY29uc3QgaGFzTWluUXVhbnRpdHkgPSBjYW1wYWlnbi5jYXJ0SXRlbnNRdWFudGl0eU1pbiAmJiBjYXJ0SXRlbnNRdWFudGl0eSA+PSBjYW1wYWlnbi5jYXJ0SXRlbnNRdWFudGl0eU1pblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJylcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhbXBhaW5nIFdJVEhPVVQgY2F0ZWdvcmllcycsIGNhbXBhaWduLm5hbWUsIGNhbXBhaWduLmNhcnRWYWx1ZSwgY2FtcGFpZ24uY2FydEl0ZW5zUXVhbnRpdHlNaW4pXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICdjYXJ0VG90YWwnLFxyXG4gICAgICAgICAgICAgIGNhcnRUb3RhbCxcclxuICAgICAgICAgICAgICAnY2FydEl0ZW5zUXVhbnRpdHknLFxyXG4gICAgICAgICAgICAgIGNhcnRJdGVuc1F1YW50aXR5LFxyXG4gICAgICAgICAgICAgICdoYXNNaW5WYWx1ZScsXHJcbiAgICAgICAgICAgICAgaGFzTWluVmFsdWUsXHJcbiAgICAgICAgICAgICAgJ2hhc01pblF1YW50aXR5JyxcclxuICAgICAgICAgICAgICBoYXNNaW5RdWFudGl0eSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBpZiAoaGFzTWluUXVhbnRpdHkgfHwgaGFzTWluVmFsdWUpIGVsZWdpYmxlQ2FtcGFpZ25zLnB1c2goY2FtcGFpZ24pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICdlbGVnaWJsZUNhbXBhaWducycsXHJcbiAgICAgICAgICBlbGVnaWJsZUNhbXBhaWducy5tYXAoKGMpID0+IGMubmFtZSksXHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgICBpZiAoIWVsZWdpYmxlQ2FtcGFpZ25zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcclxuXHJcbiAgICAgICAgY29uc3QgY2FtcGFpbmduUHJvZHVjdHM6IFByb2R1Y3RbXVtdID0gW11cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBjYW1wYWlnbiBvZiBlbGVnaWJsZUNhbXBhaWducykge1xyXG4gICAgICAgICAgbGV0IGVsZWdpYmxlUHJvZHVjdHMgPSBbXVxyXG5cclxuICAgICAgICAgIGZvciAoY29uc3QgcHJvZHVjdCBvZiBjYW1wYWlnbi5wcm9kdWN0cykge1xyXG4gICAgICAgICAgICBjb25zdCB7IGRhdGE6IHByb2R1Y3REYXRhIH0gPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmQoeyBmaWx0ZXJzOiB7IHNrdTogcHJvZHVjdCB9IH0pXHJcblxyXG4gICAgICAgICAgICBpZiAoIXByb2R1Y3REYXRhLmxlbmd0aCkgY29udGludWVcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGdpZnQgPSBwcm9kdWN0RGF0YS5zaGlmdCgpXHJcblxyXG4gICAgICAgICAgICBpZiAoZ2lmdC5zdG9jay5xdWFudGl0eSA8IDEpIGNvbnRpbnVlXHJcblxyXG4gICAgICAgICAgICBlbGVnaWJsZVByb2R1Y3RzLnB1c2goZ2lmdClcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjYW1wYWluZ25Qcm9kdWN0cy5wdXNoKGVsZWdpYmxlUHJvZHVjdHMpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWNhbXBhaW5nblByb2R1Y3RzLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcclxuXHJcbiAgICAgICAgY29uc3QgZ2lmdHMgPSB0aGlzLmdpZnRUb0xpbmVJdGVtcyhbXS5jb25jYXQoLi4uY2FtcGFpbmduUHJvZHVjdHMpKVxyXG5cclxuICAgICAgICByZXR1cm4geyAuLi5jaGVja291dCwgbGluZUl0ZW1zOiBub3RHaWZ0SXRlbXMuY29uY2F0KGdpZnRzKSB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dCkpLFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmdlbmVyYXRlQ2FydE9iamVjdChjaGVja291dC5saW5lSXRlbXMpKSxcclxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnaWZ0VG9MaW5lSXRlbXMoaXRlbXM6IFByb2R1Y3RbXSk6IExpbmVJdGVtW10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGJyYW5kLCBjYXRlZ29yaWVzLCBjYXRlZ29yeSwgaWQsIG5hbWUsIHByaWNlLCBza3UsIHNsdWcsIHN0b2NrLCB3ZWlnaHQsIEVBTiB9ID0gaXRlbVxyXG4gICAgICBjb25zdCBpbWFnZSA9IGl0ZW0/Lm1pbmlhdHVyZXM/Lmxlbmd0aCA/IGl0ZW0ubWluaWF0dXJlc1swXSA6IGl0ZW0uaW1hZ2VzWzBdXHJcblxyXG4gICAgICByZXR1cm4gTGluZUl0ZW0udG9JbnN0YW5jZSh7XHJcbiAgICAgICAgYnJhbmQsXHJcbiAgICAgICAgY2F0ZWdvcmllcyxcclxuICAgICAgICBjYXRlZ29yeSxcclxuICAgICAgICBpZDogaWQudG9TdHJpbmcoKSxcclxuICAgICAgICBuYW1lLFxyXG4gICAgICAgIHByaWNlLFxyXG4gICAgICAgIHNrdSxcclxuICAgICAgICBzbHVnLFxyXG4gICAgICAgIHN0b2NrLFxyXG4gICAgICAgIHdlaWdodCxcclxuICAgICAgICBFQU4sXHJcbiAgICAgICAgaW1hZ2UsXHJcbiAgICAgICAgcHJpY2VQYWlkOiAwLFxyXG4gICAgICAgIHF1YW50aXR5OiAxLFxyXG4gICAgICAgIGlzR2lmdDogdHJ1ZSxcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1599,7 +1599,7 @@ class CartService {
1599
1599
  if (filterProductsCategories.length) {
1600
1600
  const cartValuelWithCategories = filterProductsCategories.reduce((a, b) => a + b.pricePaid * b.quantity, 0);
1601
1601
  const cartItensQuantityWithCategories = filterProductsCategories.reduce((a, b) => a + b.quantity, 0);
1602
- const hasMinValue = cartValuelWithCategories >= campaign.cartValueMin;
1602
+ const hasMinValue = campaign.cartValueMin && cartValuelWithCategories >= campaign.cartValueMin;
1603
1603
  const hasMinQuantity = campaign.cartItensQuantityMin && cartItensQuantityWithCategories >= campaign.cartItensQuantityMin;
1604
1604
  console.log('------------------------------');
1605
1605
  console.log('campaing WITH categories', campaign.name, campaign.cartValueMin, campaign.cartItensQuantityMin);