igniteui-angular 12.3.16 → 12.3.19

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.
Files changed (56) hide show
  1. package/README.md +252 -252
  2. package/bundles/igniteui-angular.umd.js +199 -42
  3. package/bundles/igniteui-angular.umd.js.map +1 -1
  4. package/esm2015/lib/carousel/carousel-base.js +1 -1
  5. package/esm2015/lib/carousel/public_api.js +1 -1
  6. package/esm2015/lib/data-operations/filtering-condition.js +150 -6
  7. package/esm2015/lib/grids/common/cell.interface.js +1 -1
  8. package/esm2015/lib/grids/common/crud.service.js +9 -6
  9. package/esm2015/lib/grids/common/pipes.js +2 -2
  10. package/esm2015/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.js +2 -2
  11. package/esm2015/lib/grids/filtering/excel-style/excel-style-header.component.js +2 -2
  12. package/esm2015/lib/grids/filtering/excel-style/public_api.js +1 -1
  13. package/esm2015/lib/grids/grid/grid.component.js +5 -3
  14. package/esm2015/lib/grids/grid-base.directive.js +4 -6
  15. package/esm2015/lib/grids/grid-navigation.service.js +12 -6
  16. package/esm2015/lib/grids/grid-public-cell.js +1 -1
  17. package/esm2015/lib/grids/grid-public-row.js +1 -1
  18. package/esm2015/lib/grids/grouping/group-by-area.directive.js +2 -2
  19. package/esm2015/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.js +3 -3
  20. package/esm2015/lib/grids/hierarchical-grid/hierarchical-grid.component.js +2 -2
  21. package/esm2015/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.js +2 -2
  22. package/esm2015/lib/grids/toolbar/grid-toolbar-exporter.component.js +2 -2
  23. package/esm2015/lib/grids/toolbar/grid-toolbar-hiding.component.js +2 -2
  24. package/esm2015/lib/grids/toolbar/grid-toolbar-pinning.component.js +2 -2
  25. package/esm2015/lib/grids/tree-grid/tree-grid.component.js +2 -2
  26. package/esm2015/lib/grids/tree-grid/tree-grid.filtering.strategy.js +1 -1
  27. package/esm2015/lib/simple-combo/simple-combo.component.js +6 -2
  28. package/esm2015/lib/tabs/bottom-nav/bottom-nav-content.component.js +2 -2
  29. package/esm2015/lib/tabs/bottom-nav/bottom-nav-header.component.js +2 -2
  30. package/esm2015/lib/tabs/bottom-nav/bottom-nav-item.component.js +2 -2
  31. package/esm2015/lib/tabs/bottom-nav/bottom-nav.component.js +2 -2
  32. package/esm2015/lib/tabs/bottom-nav/bottom-nav.directives.js +1 -1
  33. package/esm2015/lib/tabs/bottom-nav/bottom-nav.module.js +1 -1
  34. package/esm2015/lib/tabs/bottom-nav/public_api.js +1 -1
  35. package/esm2015/lib/tabs/public_api.js +1 -1
  36. package/esm2015/lib/tabs/tab-content.directive.js +1 -1
  37. package/esm2015/lib/tabs/tab-header.directive.js +1 -1
  38. package/esm2015/lib/tabs/tab-item.directive.js +1 -1
  39. package/esm2015/lib/tabs/tabs/public_api.js +1 -1
  40. package/esm2015/lib/tabs/tabs/tab-content.component.js +2 -2
  41. package/esm2015/lib/tabs/tabs/tab-header.component.js +2 -2
  42. package/esm2015/lib/tabs/tabs/tab-item.component.js +2 -2
  43. package/esm2015/lib/tabs/tabs/tabs.component.js +2 -2
  44. package/esm2015/lib/tabs/tabs/tabs.directives.js +1 -1
  45. package/esm2015/lib/tabs/tabs/tabs.module.js +1 -1
  46. package/esm2015/lib/tabs/tabs.base.js +1 -1
  47. package/esm2015/lib/tabs/tabs.directive.js +1 -1
  48. package/fesm2015/igniteui-angular.js +200 -43
  49. package/fesm2015/igniteui-angular.js.map +1 -1
  50. package/igniteui-angular.metadata.json +1 -1
  51. package/lib/data-operations/filtering-condition.d.ts +1 -1
  52. package/lib/grids/common/pipes.d.ts +1 -1
  53. package/lib/grids/grouping/group-by-area.directive.d.ts +1 -1
  54. package/lib/simple-combo/simple-combo.component.d.ts +2 -0
  55. package/migrations/update-12_1_0/changes/classes.json +28 -28
  56. package/package.json +1 -1
@@ -141,4 +141,4 @@ export class IgxCarouselComponentBase {
141
141
  this.leaveAnimationPlayer.play();
142
142
  }
143
143
  }
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYXJvdXNlbC9jYXJvdXNlbC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE1BQU0sQ0FBTixJQUFZLFNBQThCO0FBQTFDLFdBQVksU0FBUztJQUFHLHlDQUFJLENBQUE7SUFBRSx5Q0FBSSxDQUFBO0lBQUUseUNBQUksQ0FBQTtBQUFDLENBQUMsRUFBOUIsU0FBUyxLQUFULFNBQVMsUUFBcUI7QUFFMUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDO0lBQ3hDLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtDQUNmLENBQUMsQ0FBQztBQWNILGNBQWM7QUFDZCxNQUFNLE9BQWdCLHdCQUF3QjtJQW1CMUMsWUFBb0IsT0FBeUIsRUFBVSxHQUFzQjtRQUF6RCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbEI3RSxjQUFjO1FBQ1Asa0JBQWEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7UUFVbkQsY0FBYztRQUNKLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUNsQyxjQUFjO1FBQ0osc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLGNBQWM7UUFDSixnQkFBVyxHQUFHLENBQUMsQ0FBQztJQUcxQixDQUFDO0lBRUQsY0FBYztJQUNKLGlCQUFpQjtRQUN2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SSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUNyRCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osT0FBTztTQUNWO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQzthQUNwQztZQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUtKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uQnVpbGRlciwgQW5pbWF0aW9uUGxheWVyLCBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSwgdXNlQW5pbWF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZhZGVJbiB9IGZyb20gJy4uL2FuaW1hdGlvbnMvZmFkZSc7XHJcbmltcG9ydCB7IHNsaWRlSW5MZWZ0IH0gZnJvbSAnLi4vYW5pbWF0aW9ucy9zbGlkZSc7XHJcbmltcG9ydCB7IG1rZW51bSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xyXG5cclxuZXhwb3J0IGVudW0gRGlyZWN0aW9uIHsgTk9ORSwgTkVYVCwgUFJFViB9XHJcblxyXG5leHBvcnQgY29uc3QgQ2Fyb3VzZWxBbmltYXRpb25UeXBlID0gbWtlbnVtKHtcclxuICAgIG5vbmU6ICdub25lJyxcclxuICAgIHNsaWRlOiAnc2xpZGUnLFxyXG4gICAgZmFkZTogJ2ZhZGUnXHJcbn0pO1xyXG5leHBvcnQgdHlwZSBDYXJvdXNlbEFuaW1hdGlvblR5cGUgPSAodHlwZW9mIENhcm91c2VsQW5pbWF0aW9uVHlwZSlba2V5b2YgdHlwZW9mIENhcm91c2VsQW5pbWF0aW9uVHlwZV07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENhcm91c2VsQW5pbWF0aW9uU2V0dGluZ3Mge1xyXG4gICAgZW50ZXJBbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhO1xyXG4gICAgbGVhdmVBbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhO1xyXG59XHJcblxyXG4vKiogQGhpZGRlbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElneFNsaWRlQ29tcG9uZW50QmFzZSB7XHJcbiAgICBkaXJlY3Rpb246IERpcmVjdGlvbjtcclxuICAgIHByZXZpb3VzOiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogQGhpZGRlbiAqL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWd4Q2Fyb3VzZWxDb21wb25lbnRCYXNlIHtcclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBwdWJsaWMgYW5pbWF0aW9uVHlwZSA9IENhcm91c2VsQW5pbWF0aW9uVHlwZS5zbGlkZTtcclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHJvdGVjdGVkIGN1cnJlbnRJdGVtOiBJZ3hTbGlkZUNvbXBvbmVudEJhc2U7XHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHJvdGVjdGVkIHByZXZpb3VzSXRlbTogSWd4U2xpZGVDb21wb25lbnRCYXNlO1xyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBlbnRlckFuaW1hdGlvblBsYXllcj86IEFuaW1hdGlvblBsYXllcjtcclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBwcm90ZWN0ZWQgbGVhdmVBbmltYXRpb25QbGF5ZXI/OiBBbmltYXRpb25QbGF5ZXI7XHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHJvdGVjdGVkIGFuaW1hdGlvbkR1cmF0aW9uID0gMzIwO1xyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBhbmltYXRpb25Qb3NpdGlvbiA9IDA7XHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHJvdGVjdGVkIG5ld0R1cmF0aW9uID0gMDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJ1aWxkZXI6IEFuaW1hdGlvbkJ1aWxkZXIsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBwcm90ZWN0ZWQgdHJpZ2dlckFuaW1hdGlvbnMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uVHlwZSAhPT0gQ2Fyb3VzZWxBbmltYXRpb25UeXBlLm5vbmUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uU3RhcnRlZCh0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyKSB8fCB0aGlzLmFuaW1hdGlvblN0YXJ0ZWQodGhpcy5lbnRlckFuaW1hdGlvblBsYXllcikpIHtcclxuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEFuaW1hdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXlBbmltYXRpb25zKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGxheUFuaW1hdGlvbnMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHJvdGVjdGVkIGFuaW1hdGlvblN0YXJ0ZWQoYW5pbWF0aW9uOiBBbmltYXRpb25QbGF5ZXIpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gYW5pbWF0aW9uICYmIGFuaW1hdGlvbi5oYXNTdGFydGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBwbGF5QW5pbWF0aW9ucygpIHtcclxuICAgICAgICB0aGlzLnBsYXlMZWF2ZUFuaW1hdGlvbigpO1xyXG4gICAgICAgIHRoaXMucGxheUVudGVyQW5pbWF0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZXNldEFuaW1hdGlvbnMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uU3RhcnRlZCh0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyKSkge1xyXG4gICAgICAgICAgICB0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyLnJlc2V0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hbmltYXRpb25TdGFydGVkKHRoaXMuZW50ZXJBbmltYXRpb25QbGF5ZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW50ZXJBbmltYXRpb25QbGF5ZXIucmVzZXQoKTtcclxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0QW5pbWF0aW9uKCk6IENhcm91c2VsQW5pbWF0aW9uU2V0dGluZ3Mge1xyXG4gICAgICAgIGxldCBkdXJhdGlvbjtcclxuICAgICAgICBpZiAodGhpcy5uZXdEdXJhdGlvbikge1xyXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHRoaXMuYW5pbWF0aW9uUG9zaXRpb24gPyB0aGlzLmFuaW1hdGlvblBvc2l0aW9uICogdGhpcy5uZXdEdXJhdGlvbiA6IHRoaXMubmV3RHVyYXRpb247XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZHVyYXRpb24gPSB0aGlzLmFuaW1hdGlvblBvc2l0aW9uID8gdGhpcy5hbmltYXRpb25Qb3NpdGlvbiAqIHRoaXMuYW5pbWF0aW9uRHVyYXRpb24gOiB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmFuaW1hdGlvblR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBDYXJvdXNlbEFuaW1hdGlvblR5cGUuc2xpZGU6XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFucyA9IHRoaXMuYW5pbWF0aW9uUG9zaXRpb24gPyB0aGlzLmFuaW1hdGlvblBvc2l0aW9uICogMTAwIDogMTAwO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRlckFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKHNsaWRlSW5MZWZ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogJzBzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7ZHVyYXRpb259bXNgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9wYWNpdHk6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPcGFjaXR5OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogYHRyYW5zbGF0ZVgoJHt0aGlzLmN1cnJlbnRJdGVtLmRpcmVjdGlvbiA9PT0gMSA/IHRyYW5zIDogLXRyYW5zfSUpYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1Bvc2l0aW9uOiAndHJhbnNsYXRlWCgwJSknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGxlYXZlQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oc2xpZGVJbkxlZnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiAnMHMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtkdXJhdGlvbn1tc2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kT3BhY2l0eTogMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9wYWNpdHk6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBvc2l0aW9uOiBgdHJhbnNsYXRlWCgwJSlgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvUG9zaXRpb246IGB0cmFuc2xhdGVYKCR7dGhpcy5jdXJyZW50SXRlbS5kaXJlY3Rpb24gPT09IDEgPyAtdHJhbnMgOiB0cmFuc30lKWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjYXNlIENhcm91c2VsQW5pbWF0aW9uVHlwZS5mYWRlOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRlckFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKGZhZGVJbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBwYXJhbXM6IHsgZHVyYXRpb246IGAke2R1cmF0aW9ufW1zYCwgc3RhcnRPcGFjaXR5OiBgJHt0aGlzLmFuaW1hdGlvblBvc2l0aW9ufWAgfSB9KSxcclxuICAgICAgICAgICAgICAgICAgICBsZWF2ZUFuaW1hdGlvbjogbnVsbFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZW50ZXJBbmltYXRpb246IG51bGwsXHJcbiAgICAgICAgICAgIGxlYXZlQW5pbWF0aW9uOiBudWxsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHBsYXlFbnRlckFuaW1hdGlvbigpIHtcclxuICAgICAgICBjb25zdCBhbmltYXRpb24gPSB0aGlzLmdldEFuaW1hdGlvbigpLmVudGVyQW5pbWF0aW9uO1xyXG4gICAgICAgIGlmICghYW5pbWF0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYW5pbWF0aW9uQnVpbGRlciA9IHRoaXMuYnVpbGRlci5idWlsZChhbmltYXRpb24pO1xyXG5cclxuICAgICAgICB0aGlzLmVudGVyQW5pbWF0aW9uUGxheWVyID0gYW5pbWF0aW9uQnVpbGRlci5jcmVhdGUodGhpcy5nZXRDdXJyZW50RWxlbWVudCgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5lbnRlckFuaW1hdGlvblBsYXllci5vbkRvbmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5lbnRlckFuaW1hdGlvblBsYXllcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbnRlckFuaW1hdGlvblBsYXllci5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbnRlckFuaW1hdGlvblBsYXllciA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25Qb3NpdGlvbiA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMubmV3RHVyYXRpb24gPSAwO1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzSXRlbS5wcmV2aW91cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnByZXZpb3VzSXRlbS5wcmV2aW91cyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lbnRlckFuaW1hdGlvblBsYXllci5wbGF5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwbGF5TGVhdmVBbmltYXRpb24oKSB7XHJcbiAgICAgICAgY29uc3QgYW5pbWF0aW9uID0gdGhpcy5nZXRBbmltYXRpb24oKS5sZWF2ZUFuaW1hdGlvbjtcclxuICAgICAgICBpZiAoIWFuaW1hdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBhbmltYXRpb25CdWlsZGVyID0gdGhpcy5idWlsZGVyLmJ1aWxkKGFuaW1hdGlvbik7XHJcbiAgICAgICAgdGhpcy5sZWF2ZUFuaW1hdGlvblBsYXllciA9IGFuaW1hdGlvbkJ1aWxkZXIuY3JlYXRlKHRoaXMuZ2V0UHJldmlvdXNFbGVtZW50KCkpO1xyXG5cclxuICAgICAgICB0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyLm9uRG9uZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFuaW1hdGlvblBvc2l0aW9uID0gMDtcclxuICAgICAgICAgICAgdGhpcy5uZXdEdXJhdGlvbiA9IDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5sZWF2ZUFuaW1hdGlvblBsYXllci5wbGF5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFByZXZpb3VzRWxlbWVudCgpOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q3VycmVudEVsZW1lbnQoKTogSFRNTEVsZW1lbnQ7XHJcbn1cclxuIl19
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYXJvdXNlbC9jYXJvdXNlbC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE1BQU0sQ0FBTixJQUFZLFNBQThCO0FBQTFDLFdBQVksU0FBUztJQUFHLHlDQUFJLENBQUE7SUFBRSx5Q0FBSSxDQUFBO0lBQUUseUNBQUksQ0FBQTtBQUFDLENBQUMsRUFBOUIsU0FBUyxLQUFULFNBQVMsUUFBcUI7QUFFMUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDO0lBQ3hDLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtDQUNmLENBQUMsQ0FBQztBQWNILGNBQWM7QUFDZCxNQUFNLE9BQWdCLHdCQUF3QjtJQW1CMUMsWUFBb0IsT0FBeUIsRUFBVSxHQUFzQjtRQUF6RCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbEI3RSxjQUFjO1FBQ1Asa0JBQWEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7UUFVbkQsY0FBYztRQUNKLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUNsQyxjQUFjO1FBQ0osc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLGNBQWM7UUFDSixnQkFBVyxHQUFHLENBQUMsQ0FBQztJQUcxQixDQUFDO0lBRUQsY0FBYztJQUNKLGlCQUFpQjtRQUN2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SSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUNyRCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osT0FBTztTQUNWO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQzthQUNwQztZQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUtKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uQnVpbGRlciwgQW5pbWF0aW9uUGxheWVyLCBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSwgdXNlQW5pbWF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmFkZUluIH0gZnJvbSAnLi4vYW5pbWF0aW9ucy9mYWRlJztcbmltcG9ydCB7IHNsaWRlSW5MZWZ0IH0gZnJvbSAnLi4vYW5pbWF0aW9ucy9zbGlkZSc7XG5pbXBvcnQgeyBta2VudW0gfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcblxuZXhwb3J0IGVudW0gRGlyZWN0aW9uIHsgTk9ORSwgTkVYVCwgUFJFViB9XG5cbmV4cG9ydCBjb25zdCBDYXJvdXNlbEFuaW1hdGlvblR5cGUgPSBta2VudW0oe1xuICAgIG5vbmU6ICdub25lJyxcbiAgICBzbGlkZTogJ3NsaWRlJyxcbiAgICBmYWRlOiAnZmFkZSdcbn0pO1xuZXhwb3J0IHR5cGUgQ2Fyb3VzZWxBbmltYXRpb25UeXBlID0gKHR5cGVvZiBDYXJvdXNlbEFuaW1hdGlvblR5cGUpW2tleW9mIHR5cGVvZiBDYXJvdXNlbEFuaW1hdGlvblR5cGVdO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhcm91c2VsQW5pbWF0aW9uU2V0dGluZ3Mge1xuICAgIGVudGVyQW5pbWF0aW9uOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YTtcbiAgICBsZWF2ZUFuaW1hdGlvbjogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGE7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgaW50ZXJmYWNlIElneFNsaWRlQ29tcG9uZW50QmFzZSB7XG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb247XG4gICAgcHJldmlvdXM6IGJvb2xlYW47XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWd4Q2Fyb3VzZWxDb21wb25lbnRCYXNlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBhbmltYXRpb25UeXBlID0gQ2Fyb3VzZWxBbmltYXRpb25UeXBlLnNsaWRlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgY3VycmVudEl0ZW06IElneFNsaWRlQ29tcG9uZW50QmFzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBwcmV2aW91c0l0ZW06IElneFNsaWRlQ29tcG9uZW50QmFzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBlbnRlckFuaW1hdGlvblBsYXllcj86IEFuaW1hdGlvblBsYXllcjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBsZWF2ZUFuaW1hdGlvblBsYXllcj86IEFuaW1hdGlvblBsYXllcjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBhbmltYXRpb25EdXJhdGlvbiA9IDMyMDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBhbmltYXRpb25Qb3NpdGlvbiA9IDA7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgbmV3RHVyYXRpb24gPSAwO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBidWlsZGVyOiBBbmltYXRpb25CdWlsZGVyLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCB0cmlnZ2VyQW5pbWF0aW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uVHlwZSAhPT0gQ2Fyb3VzZWxBbmltYXRpb25UeXBlLm5vbmUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGlvblN0YXJ0ZWQodGhpcy5sZWF2ZUFuaW1hdGlvblBsYXllcikgfHwgdGhpcy5hbmltYXRpb25TdGFydGVkKHRoaXMuZW50ZXJBbmltYXRpb25QbGF5ZXIpKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEFuaW1hdGlvbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5QW5pbWF0aW9ucygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXlBbmltYXRpb25zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBhbmltYXRpb25TdGFydGVkKGFuaW1hdGlvbjogQW5pbWF0aW9uUGxheWVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBhbmltYXRpb24gJiYgYW5pbWF0aW9uLmhhc1N0YXJ0ZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBwbGF5QW5pbWF0aW9ucygpIHtcbiAgICAgICAgdGhpcy5wbGF5TGVhdmVBbmltYXRpb24oKTtcbiAgICAgICAgdGhpcy5wbGF5RW50ZXJBbmltYXRpb24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0QW5pbWF0aW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uU3RhcnRlZCh0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyKSkge1xuICAgICAgICAgICAgdGhpcy5sZWF2ZUFuaW1hdGlvblBsYXllci5yZXNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uU3RhcnRlZCh0aGlzLmVudGVyQW5pbWF0aW9uUGxheWVyKSkge1xuICAgICAgICAgICAgdGhpcy5lbnRlckFuaW1hdGlvblBsYXllci5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFuaW1hdGlvbigpOiBDYXJvdXNlbEFuaW1hdGlvblNldHRpbmdzIHtcbiAgICAgICAgbGV0IGR1cmF0aW9uO1xuICAgICAgICBpZiAodGhpcy5uZXdEdXJhdGlvbikge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB0aGlzLmFuaW1hdGlvblBvc2l0aW9uID8gdGhpcy5hbmltYXRpb25Qb3NpdGlvbiAqIHRoaXMubmV3RHVyYXRpb24gOiB0aGlzLm5ld0R1cmF0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB0aGlzLmFuaW1hdGlvblBvc2l0aW9uID8gdGhpcy5hbmltYXRpb25Qb3NpdGlvbiAqIHRoaXMuYW5pbWF0aW9uRHVyYXRpb24gOiB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmFuaW1hdGlvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ2Fyb3VzZWxBbmltYXRpb25UeXBlLnNsaWRlOlxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zID0gdGhpcy5hbmltYXRpb25Qb3NpdGlvbiA/IHRoaXMuYW5pbWF0aW9uUG9zaXRpb24gKiAxMDAgOiAxMDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZW50ZXJBbmltYXRpb246IHVzZUFuaW1hdGlvbihzbGlkZUluTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6ICcwcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtkdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBvc2l0aW9uOiBgdHJhbnNsYXRlWCgke3RoaXMuY3VycmVudEl0ZW0uZGlyZWN0aW9uID09PSAxID8gdHJhbnMgOiAtdHJhbnN9JSlgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1Bvc2l0aW9uOiAndHJhbnNsYXRlWCgwJSknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGxlYXZlQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oc2xpZGVJbkxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiAnMHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7ZHVyYXRpb259bXNgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogYHRyYW5zbGF0ZVgoMCUpYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9Qb3NpdGlvbjogYHRyYW5zbGF0ZVgoJHt0aGlzLmN1cnJlbnRJdGVtLmRpcmVjdGlvbiA9PT0gMSA/IC10cmFucyA6IHRyYW5zfSUpYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIENhcm91c2VsQW5pbWF0aW9uVHlwZS5mYWRlOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGVudGVyQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oZmFkZUluLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBwYXJhbXM6IHsgZHVyYXRpb246IGAke2R1cmF0aW9ufW1zYCwgc3RhcnRPcGFjaXR5OiBgJHt0aGlzLmFuaW1hdGlvblBvc2l0aW9ufWAgfSB9KSxcbiAgICAgICAgICAgICAgICAgICAgbGVhdmVBbmltYXRpb246IG51bGxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbnRlckFuaW1hdGlvbjogbnVsbCxcbiAgICAgICAgICAgIGxlYXZlQW5pbWF0aW9uOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwbGF5RW50ZXJBbmltYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGFuaW1hdGlvbiA9IHRoaXMuZ2V0QW5pbWF0aW9uKCkuZW50ZXJBbmltYXRpb247XG4gICAgICAgIGlmICghYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5pbWF0aW9uQnVpbGRlciA9IHRoaXMuYnVpbGRlci5idWlsZChhbmltYXRpb24pO1xuXG4gICAgICAgIHRoaXMuZW50ZXJBbmltYXRpb25QbGF5ZXIgPSBhbmltYXRpb25CdWlsZGVyLmNyZWF0ZSh0aGlzLmdldEN1cnJlbnRFbGVtZW50KCkpO1xuXG4gICAgICAgIHRoaXMuZW50ZXJBbmltYXRpb25QbGF5ZXIub25Eb25lKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudGVyQW5pbWF0aW9uUGxheWVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRlckFuaW1hdGlvblBsYXllci5yZXNldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50ZXJBbmltYXRpb25QbGF5ZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25Qb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICB0aGlzLm5ld0R1cmF0aW9uID0gMDtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNJdGVtLnByZXZpb3VzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJldmlvdXNJdGVtLnByZXZpb3VzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lbnRlckFuaW1hdGlvblBsYXllci5wbGF5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwbGF5TGVhdmVBbmltYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGFuaW1hdGlvbiA9IHRoaXMuZ2V0QW5pbWF0aW9uKCkubGVhdmVBbmltYXRpb247XG4gICAgICAgIGlmICghYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhbmltYXRpb25CdWlsZGVyID0gdGhpcy5idWlsZGVyLmJ1aWxkKGFuaW1hdGlvbik7XG4gICAgICAgIHRoaXMubGVhdmVBbmltYXRpb25QbGF5ZXIgPSBhbmltYXRpb25CdWlsZGVyLmNyZWF0ZSh0aGlzLmdldFByZXZpb3VzRWxlbWVudCgpKTtcblxuICAgICAgICB0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyLm9uRG9uZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5sZWF2ZUFuaW1hdGlvblBsYXllcikge1xuICAgICAgICAgICAgICAgIHRoaXMubGVhdmVBbmltYXRpb25QbGF5ZXIucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9uUG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgdGhpcy5uZXdEdXJhdGlvbiA9IDA7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxlYXZlQW5pbWF0aW9uUGxheWVyLnBsYXkoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0UHJldmlvdXNFbGVtZW50KCk6IEhUTUxFbGVtZW50O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEN1cnJlbnRFbGVtZW50KCk6IEhUTUxFbGVtZW50O1xufVxuIl19
@@ -1,4 +1,4 @@
1
1
  export * from './carousel-base';
2
2
  export * from './carousel.component';
3
3
  export * from './slide.component';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYXJvdXNlbC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYXJvdXNlbC1iYXNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jYXJvdXNlbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NsaWRlLmNvbXBvbmVudCc7XHJcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYXJvdXNlbC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYXJvdXNlbC1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2Fyb3VzZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2xpZGUuY29tcG9uZW50JztcbiJdfQ==
@@ -354,13 +354,9 @@ export class IgxDateFilteringOperand extends IgxBaseDateTimeFilteringOperand {
354
354
  }].concat(this.operations);
355
355
  }
356
356
  }
357
- export class IgxDateTimeFilteringOperand extends IgxDateFilteringOperand {
357
+ export class IgxDateTimeFilteringOperand extends IgxBaseDateTimeFilteringOperand {
358
358
  constructor() {
359
359
  super();
360
- let index = this.operations.indexOf(this.condition('equals'));
361
- this.operations.splice(index, 1);
362
- index = this.operations.indexOf(this.condition('doesNotEqual'));
363
- this.operations.splice(index, 1);
364
360
  this.operations = [{
365
361
  name: 'equals',
366
362
  isUnary: false,
@@ -397,6 +393,154 @@ export class IgxDateTimeFilteringOperand extends IgxDateFilteringOperand {
397
393
  targetp.minutes !== searchp.minutes ||
398
394
  targetp.seconds !== searchp.seconds;
399
395
  }
396
+ }, {
397
+ name: 'before',
398
+ isUnary: false,
399
+ iconName: 'is-before',
400
+ logic: (target, searchVal) => {
401
+ if (!target) {
402
+ return false;
403
+ }
404
+ this.validateInputData(target);
405
+ return target < searchVal;
406
+ }
407
+ }, {
408
+ name: 'after',
409
+ isUnary: false,
410
+ iconName: 'is-after',
411
+ logic: (target, searchVal) => {
412
+ if (!target) {
413
+ return false;
414
+ }
415
+ this.validateInputData(target);
416
+ return target > searchVal;
417
+ }
418
+ }, {
419
+ name: 'today',
420
+ isUnary: true,
421
+ iconName: 'today',
422
+ logic: (target) => {
423
+ if (!target) {
424
+ return false;
425
+ }
426
+ this.validateInputData(target);
427
+ const d = IgxDateTimeFilteringOperand.getDateParts(target, 'yMd');
428
+ const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'yMd');
429
+ return d.year === now.year &&
430
+ d.month === now.month &&
431
+ d.day === now.day;
432
+ }
433
+ }, {
434
+ name: 'yesterday',
435
+ isUnary: true,
436
+ iconName: 'yesterday',
437
+ logic: (target) => {
438
+ if (!target) {
439
+ return false;
440
+ }
441
+ this.validateInputData(target);
442
+ const td = IgxDateTimeFilteringOperand.getDateParts(target, 'yMd');
443
+ const y = ((d) => new Date(d.setDate(d.getDate() - 1)))(new Date());
444
+ const yesterday = IgxDateTimeFilteringOperand.getDateParts(y, 'yMd');
445
+ return td.year === yesterday.year &&
446
+ td.month === yesterday.month &&
447
+ td.day === yesterday.day;
448
+ }
449
+ }, {
450
+ name: 'thisMonth',
451
+ isUnary: true,
452
+ iconName: 'this-month',
453
+ logic: (target) => {
454
+ if (!target) {
455
+ return false;
456
+ }
457
+ this.validateInputData(target);
458
+ const d = IgxDateTimeFilteringOperand.getDateParts(target, 'yM');
459
+ const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'yM');
460
+ return d.year === now.year &&
461
+ d.month === now.month;
462
+ }
463
+ }, {
464
+ name: 'lastMonth',
465
+ isUnary: true,
466
+ iconName: 'last-month',
467
+ logic: (target) => {
468
+ if (!target) {
469
+ return false;
470
+ }
471
+ this.validateInputData(target);
472
+ const d = IgxDateTimeFilteringOperand.getDateParts(target, 'yM');
473
+ const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'yM');
474
+ if (!now.month) {
475
+ now.month = 11;
476
+ now.year -= 1;
477
+ }
478
+ else {
479
+ now.month--;
480
+ }
481
+ return d.year === now.year &&
482
+ d.month === now.month;
483
+ }
484
+ }, {
485
+ name: 'nextMonth',
486
+ isUnary: true,
487
+ iconName: 'next-month',
488
+ logic: (target) => {
489
+ if (!target) {
490
+ return false;
491
+ }
492
+ this.validateInputData(target);
493
+ const d = IgxDateTimeFilteringOperand.getDateParts(target, 'yM');
494
+ const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'yM');
495
+ if (now.month === 11) {
496
+ now.month = 0;
497
+ now.year += 1;
498
+ }
499
+ else {
500
+ now.month++;
501
+ }
502
+ return d.year === now.year &&
503
+ d.month === now.month;
504
+ }
505
+ }, {
506
+ name: 'thisYear',
507
+ isUnary: true,
508
+ iconName: 'this-year',
509
+ logic: (target) => {
510
+ if (!target) {
511
+ return false;
512
+ }
513
+ this.validateInputData(target);
514
+ const d = IgxDateTimeFilteringOperand.getDateParts(target, 'y');
515
+ const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'y');
516
+ return d.year === now.year;
517
+ }
518
+ }, {
519
+ name: 'lastYear',
520
+ isUnary: true,
521
+ iconName: 'last-year',
522
+ logic: (target) => {
523
+ if (!target) {
524
+ return false;
525
+ }
526
+ this.validateInputData(target);
527
+ const d = IgxDateTimeFilteringOperand.getDateParts(target, 'y');
528
+ const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'y');
529
+ return d.year === now.year - 1;
530
+ }
531
+ }, {
532
+ name: 'nextYear',
533
+ isUnary: true,
534
+ iconName: 'next-year',
535
+ logic: (target) => {
536
+ if (!target) {
537
+ return false;
538
+ }
539
+ this.validateInputData(target);
540
+ const d = IgxDateTimeFilteringOperand.getDateParts(target, 'y');
541
+ const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'y');
542
+ return d.year === now.year + 1;
543
+ }
400
544
  }].concat(this.operations);
401
545
  }
402
546
  }
@@ -636,4 +780,4 @@ export class IgxStringFilteringOperand extends IgxFilteringOperand {
636
780
  return ignoreCase ? ('' + a).toLowerCase() : a;
637
781
  }
638
782
  }
639
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLWNvbmRpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWNvbmRpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFJNUI7UUFDSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLE1BQU07Z0JBQ1osT0FBTyxFQUFFLElBQUk7Z0JBQ2IsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLEtBQUssRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUk7YUFDMUMsRUFBRTtnQkFDQyxJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsSUFBSTtnQkFDYixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsS0FBSyxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSTthQUMxQyxFQUFFO2dCQUNDLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixNQUFNLEVBQUUsSUFBSTtnQkFDWixLQUFLLEVBQUUsQ0FBQyxNQUFXLEVBQUUsU0FBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO2FBQ3RGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FB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QyxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO2FBQzFGLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFTLEVBQUUsVUFBbUI7UUFDeEQsQ0FBQyxHQUFHLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLEVBQUUsQ0FBQztRQUNaLGNBQWM7UUFDZCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3ZpZGVzIGJhc2UgZmlsdGVyaW5nIG9wZXJhdGlvbnNcbiAqIEltcGxlbWVudGF0aW9ucyBzaG91bGQgYmUgU2luZ2xldG9uXG4gKlxuICogQGV4cG9ydFxuICovXG5leHBvcnQgY2xhc3MgSWd4RmlsdGVyaW5nT3BlcmFuZCB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfaW5zdGFuY2U6IElneEZpbHRlcmluZ09wZXJhbmQgPSBudWxsO1xuICAgIHB1YmxpYyBvcGVyYXRpb25zOiBJRmlsdGVyaW5nT3BlcmF0aW9uW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5vcGVyYXRpb25zID0gW3tcbiAgICAgICAgICAgIG5hbWU6ICdudWxsJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLW51bGwnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IGFueSkgPT4gdGFyZ2V0ID09PSBudWxsXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdub3ROdWxsJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLW5vdC1udWxsJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBhbnkpID0+IHRhcmdldCAhPT0gbnVsbFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnaW4nLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLWluJyxcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBhbnksIHNlYXJjaFZhbDogU2V0PGFueT4pID0+IHRoaXMuZmluZFZhbHVlSW5TZXQodGFyZ2V0LCBzZWFyY2hWYWwpXG4gICAgICAgIH1dO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKTogSWd4RmlsdGVyaW5nT3BlcmFuZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgdGhpcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIG5hbWVzIG9mIHRoZSBjb25kaXRpb25zIHdoaWNoIGFyZSB2aXNpYmxlIGluIHRoZSBVSVxuICAgICAqL1xuICAgIHB1YmxpYyBjb25kaXRpb25MaXN0KCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlcmF0aW9ucy5maWx0ZXIoZiA9PiAhZi5oaWRkZW4pLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC5uYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBjb25kaXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29uZGl0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25kaXRpb24obmFtZTogc3RyaW5nKTogSUZpbHRlcmluZ09wZXJhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbnMuZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5uYW1lID09PSBuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IGNvbmRpdGlvbiB0byB0aGUgZmlsdGVyaW5nIG9wZXJhdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3BlcmF0aW9uIFRoZSBmaWx0ZXJpbmcgb3BlcmF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBhcHBlbmQob3BlcmF0aW9uOiBJRmlsdGVyaW5nT3BlcmF0aW9uKSB7XG4gICAgICAgIHRoaXMub3BlcmF0aW9ucy5wdXNoKG9wZXJhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaW5kVmFsdWVJblNldCh0YXJnZXQ6IGFueSwgc2VhcmNoVmFsOiBTZXQ8YW55Pikge1xuICAgICAgICByZXR1cm4gc2VhcmNoVmFsLmhhcyh0YXJnZXQpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBQcm92aWRlcyBmaWx0ZXJpbmcgb3BlcmF0aW9ucyBmb3IgYm9vbGVhbnNcbiAqXG4gKiBAZXhwb3J0XG4gKi9cbmV4cG9ydCBjbGFzcyBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZCBleHRlbmRzIElneEZpbHRlcmluZ09wZXJhbmQge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5vcGVyYXRpb25zID0gW3tcbiAgICAgICAgICAgIG5hbWU6ICdhbGwnLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnc2VsZWN0LWFsbCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogYm9vbGVhbikgPT4gdHJ1ZVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAndHJ1ZScsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy10cnVlJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBib29sZWFuKSA9PiAhISh0YXJnZXQgJiYgdGFyZ2V0ICE9PSBudWxsICYmIHRhcmdldCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnZmFsc2UnLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtZmFsc2UnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IGJvb2xlYW4pID0+ICF0YXJnZXQgJiYgdGFyZ2V0ICE9PSBudWxsICYmIHRhcmdldCAhPT0gdW5kZWZpbmVkXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdlbXB0eScsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy1lbXB0eScsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogYm9vbGVhbikgPT4gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdW5kZWZpbmVkXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdub3RFbXB0eScsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdub3QtZW1wdHknLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IGJvb2xlYW4pID0+IHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09IHVuZGVmaW5lZFxuICAgICAgICB9XS5jb25jYXQodGhpcy5vcGVyYXRpb25zKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAaGlkZGVuXG4gKi9cbmNsYXNzIElneEJhc2VEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQgZXh0ZW5kcyBJZ3hGaWx0ZXJpbmdPcGVyYW5kIHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMub3BlcmF0aW9ucyA9IFt7XG4gICAgICAgICAgICBuYW1lOiAnZW1wdHknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtZW1wdHknLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IERhdGUpID0+IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHVuZGVmaW5lZFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnbm90RW1wdHknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbm90LWVtcHR5JyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB0YXJnZXQgIT09IG51bGwgJiYgdGFyZ2V0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgfV0uY29uY2F0KHRoaXMub3BlcmF0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3BsaXRzIGEgRGF0ZSBvYmplY3QgaW50byBwYXJ0c1xuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneERhdGVGaWx0ZXJpbmdPcGVyYW5kXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXREYXRlUGFydHMoZGF0ZTogRGF0ZSwgZGF0ZUZvcm1hdD86IHN0cmluZyk6IElEYXRlUGFydHMge1xuICAgICAgICBjb25zdCByZXMgPSB7XG4gICAgICAgICAgICBkYXk6IG51bGwsXG4gICAgICAgICAgICBob3VyczogbnVsbCxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kczogbnVsbCxcbiAgICAgICAgICAgIG1pbnV0ZXM6IG51bGwsXG4gICAgICAgICAgICBtb250aDogbnVsbCxcbiAgICAgICAgICAgIHNlY29uZHM6IG51bGwsXG4gICAgICAgICAgICB5ZWFyOiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghZGF0ZSB8fCAhZGF0ZUZvcm1hdCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0ZUZvcm1hdC5pbmRleE9mKCd5JykgPj0gMCkge1xuICAgICAgICAgICAgcmVzLnllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGVGb3JtYXQuaW5kZXhPZignTScpID49IDApIHtcbiAgICAgICAgICAgIHJlcy5tb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0ZUZvcm1hdC5pbmRleE9mKCdkJykgPj0gMCkge1xuICAgICAgICAgICAgcmVzLmRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRlRm9ybWF0LmluZGV4T2YoJ2gnKSA+PSAwKSB7XG4gICAgICAgICAgICByZXMuaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGVGb3JtYXQuaW5kZXhPZignbScpID49IDApIHtcbiAgICAgICAgICAgIHJlcy5taW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGVGb3JtYXQuaW5kZXhPZigncycpID49IDApIHtcbiAgICAgICAgICAgIHJlcy5zZWNvbmRzID0gZGF0ZS5nZXRTZWNvbmRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGVGb3JtYXQuaW5kZXhPZignZicpID49IDApIHtcbiAgICAgICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSBkYXRlLmdldE1pbGxpc2Vjb25kcygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbmRWYWx1ZUluU2V0KHRhcmdldDogYW55LCBzZWFyY2hWYWw6IFNldDxhbnk+KSB7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlYXJjaFZhbC5oYXMoKHRhcmdldCBpbnN0YW5jZW9mIERhdGUpID8gdGFyZ2V0LnRvSVNPU3RyaW5nKCkgOiB0YXJnZXQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQ6IERhdGUpIHtcbiAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHBlcmZvcm0gZmlsdGVyaW5nIG9uIFxcJ2RhdGVcXCcgY29sdW1uIGJlY2F1c2UgdGhlIGRhdGFzb3VyY2Ugb2JqZWN0IHR5cGUgaXMgbm90IFxcJ0RhdGVcXCcuJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIFByb3ZpZGVzIGZpbHRlcmluZyBvcGVyYXRpb25zIGZvciBEYXRlc1xuICpcbiAqIEBleHBvcnRcbiAqL1xuZXhwb3J0IGNsYXNzIElneERhdGVGaWx0ZXJpbmdPcGVyYW5kIGV4dGVuZHMgSWd4QmFzZURhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9wZXJhdGlvbnMgPSBbe1xuICAgICAgICAgICAgbmFtZTogJ2VxdWFscycsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnZXF1YWxzJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0cCA9IElneERhdGVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICd5TWQnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hwID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHNlYXJjaFZhbCwgJ3lNZCcpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRwLnllYXIgPT09IHNlYXJjaHAueWVhciAmJlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLm1vbnRoID09PSBzZWFyY2hwLm1vbnRoICYmXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAuZGF5ID09PSBzZWFyY2hwLmRheTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2RvZXNOb3RFcXVhbCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbm90LWVxdWFsJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRwID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3lNZCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaHAgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMoc2VhcmNoVmFsLCAneU1kJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldHAueWVhciAhPT0gc2VhcmNocC55ZWFyIHx8XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAubW9udGggIT09IHNlYXJjaHAubW9udGggfHxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5kYXkgIT09IHNlYXJjaHAuZGF5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnYmVmb3JlJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy1iZWZvcmUnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IERhdGUsIHNlYXJjaFZhbDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0IDwgc2VhcmNoVmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnYWZ0ZXInLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLWFmdGVyJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCA+IHNlYXJjaFZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ3RvZGF5JyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ3RvZGF5JyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneU1kJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKG5ldyBEYXRlKCksICd5TWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC55ZWFyID09PSBub3cueWVhciAmJlxuICAgICAgICAgICAgICAgICAgICBkLm1vbnRoID09PSBub3cubW9udGggJiZcbiAgICAgICAgICAgICAgICAgICAgZC5kYXkgPT09IG5vdy5kYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICd5ZXN0ZXJkYXknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAneWVzdGVyZGF5JyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRkID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3lNZCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHkgPSAoKGQpID0+IG5ldyBEYXRlKGQuc2V0RGF0ZShkLmdldERhdGUoKSAtIDEpKSkobmV3IERhdGUoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeWVzdGVyZGF5ID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHksICd5TWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGQueWVhciA9PT0geWVzdGVyZGF5LnllYXIgJiZcbiAgICAgICAgICAgICAgICAgICAgdGQubW9udGggPT09IHllc3RlcmRheS5tb250aCAmJlxuICAgICAgICAgICAgICAgICAgICB0ZC5kYXkgPT09IHllc3RlcmRheS5kYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICd0aGlzTW9udGgnLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAndGhpcy1tb250aCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3lNJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKG5ldyBEYXRlKCksICd5TScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyICYmXG4gICAgICAgICAgICAgICAgICAgIGQubW9udGggPT09IG5vdy5tb250aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2xhc3RNb250aCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdsYXN0LW1vbnRoJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneU0nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMobmV3IERhdGUoKSwgJ3lNJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFub3cubW9udGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbm93Lm1vbnRoID0gMTE7XG4gICAgICAgICAgICAgICAgICAgIG5vdy55ZWFyIC09IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm93Lm1vbnRoLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyICYmXG4gICAgICAgICAgICAgICAgICAgIGQubW9udGggPT09IG5vdy5tb250aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ25leHRNb250aCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICduZXh0LW1vbnRoJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneU0nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMobmV3IERhdGUoKSwgJ3lNJyk7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy5tb250aCA9PT0gMTEpIHtcbiAgICAgICAgICAgICAgICAgICAgbm93Lm1vbnRoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgbm93LnllYXIgKz0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3cubW9udGgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGQueWVhciA9PT0gbm93LnllYXIgJiZcbiAgICAgICAgICAgICAgICAgICAgZC5tb250aCA9PT0gbm93Lm1vbnRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAndGhpc1llYXInLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAndGhpcy15ZWFyJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IElneERhdGVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhuZXcgRGF0ZSgpLCAneScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnbGFzdFllYXInLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbGFzdC15ZWFyJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IElneERhdGVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhuZXcgRGF0ZSgpLCAneScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ25leHRZZWFyJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ25leHQteWVhcicsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3knKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMobmV3IERhdGUoKSwgJ3knKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC55ZWFyID09PSBub3cueWVhciArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1dLmNvbmNhdCh0aGlzLm9wZXJhdGlvbnMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZCBleHRlbmRzIElneERhdGVGaWx0ZXJpbmdPcGVyYW5kIHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMub3BlcmF0aW9ucy5pbmRleE9mKHRoaXMuY29uZGl0aW9uKCdlcXVhbHMnKSk7XG4gICAgICAgIHRoaXMub3BlcmF0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBpbmRleCA9IHRoaXMub3BlcmF0aW9ucy5pbmRleE9mKHRoaXMuY29uZGl0aW9uKCdkb2VzTm90RXF1YWwnKSk7XG4gICAgICAgIHRoaXMub3BlcmF0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLm9wZXJhdGlvbnMgPSBbe1xuICAgICAgICAgICAgbmFtZTogJ2VxdWFscycsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnZXF1YWxzJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRwID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICd5TWRobXMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hwID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhzZWFyY2hWYWwsICd5TWRobXMnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0cC55ZWFyID09PSBzZWFyY2hwLnllYXIgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5tb250aCA9PT0gc2VhcmNocC5tb250aCAmJlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLmRheSA9PT0gc2VhcmNocC5kYXkgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5ob3VycyA9PT0gc2VhcmNocC5ob3VycyAmJlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLm1pbnV0ZXMgPT09IHNlYXJjaHAubWludXRlcyAmJlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLnNlY29uZHMgPT09IHNlYXJjaHAuc2Vjb25kcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2RvZXNOb3RFcXVhbCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbm90LWVxdWFsJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldHAgPSBJZ3hEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3lNZGhtcycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaHAgPSBJZ3hEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHNlYXJjaFZhbCwgJ3lNZGhtcycpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRwLnllYXIgIT09IHNlYXJjaHAueWVhciB8fFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLm1vbnRoICE9PSBzZWFyY2hwLm1vbnRoIHx8XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAuZGF5ICE9PSBzZWFyY2hwLmRheSB8fFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLmhvdXJzICE9PSBzZWFyY2hwLmhvdXJzIHx8XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAubWludXRlcyAhPT0gc2VhcmNocC5taW51dGVzIHx8XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAuc2Vjb25kcyAhPT0gc2VhcmNocC5zZWNvbmRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XS5jb25jYXQodGhpcy5vcGVyYXRpb25zKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZ3hUaW1lRmlsdGVyaW5nT3BlcmFuZCBleHRlbmRzIElneEJhc2VEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5vcGVyYXRpb25zID0gW3tcbiAgICAgICAgICAgIG5hbWU6ICdhdCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnZXF1YWxzJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRwID0gSWd4VGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ2htcycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaHAgPSBJZ3hUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMoc2VhcmNoVmFsLCAnaG1zJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldHAuaG91cnMgPT09IHNlYXJjaHAuaG91cnMgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5taW51dGVzID09PSBzZWFyY2hwLm1pbnV0ZXMgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5zZWNvbmRzID09PSBzZWFyY2hwLnNlY29uZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdub3RfYXQnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ25vdC1lcXVhbCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSwgc2VhcmNoVmFsOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRwID0gSWd4VGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ2htcycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaHAgPSBJZ3hUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMoc2VhcmNoVmFsLCAnaG1zJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldHAuaG91cnMgIT09IHNlYXJjaHAuaG91cnMgfHxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5taW51dGVzICE9PSBzZWFyY2hwLm1pbnV0ZXMgfHxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5zZWNvbmRzICE9PSBzZWFyY2hwLnNlY29uZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdiZWZvcmUnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLWJlZm9yZScsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSwgc2VhcmNoVmFsOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRuID0gSWd4VGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ2htcycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IElneFRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhzZWFyY2hWYWwsICdobXMnKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRuLmhvdXJzIDwgc2VhcmNoLmhvdXJzID8gdHJ1ZSA6IHRhcmdldG4uaG91cnMgPT09IHNlYXJjaC5ob3VycyAmJiB0YXJnZXRuLm1pbnV0ZXMgPCBzZWFyY2gubWludXRlcyA/XG4gICAgICAgICAgICAgICAgICAgIHRydWUgOiB0YXJnZXRuLmhvdXJzID09PSBzZWFyY2guaG91cnMgJiYgdGFyZ2V0bi5taW51dGVzID09PSBzZWFyY2gubWludXRlcyAmJiB0YXJnZXRuLnNlY29uZHMgPCBzZWFyY2guc2Vjb25kcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2FmdGVyJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy1hZnRlcicsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSwgc2VhcmNoVmFsOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRuID0gSWd4VGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ2htcycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IElneFRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhzZWFyY2hWYWwsICdobXMnKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRuLmhvdXJzID4gc2VhcmNoLmhvdXJzID8gdHJ1ZSA6IHRhcmdldG4uaG91cnMgPT09IHNlYXJjaC5ob3VycyAmJiB0YXJnZXRuLm1pbnV0ZXMgPiBzZWFyY2gubWludXRlcyA/XG4gICAgICAgICAgICAgICAgICAgIHRydWUgOiB0YXJnZXRuLmhvdXJzID09PSBzZWFyY2guaG91cnMgJiYgdGFyZ2V0bi5taW51dGVzID09PSBzZWFyY2gubWludXRlcyAmJiB0YXJnZXRuLnNlY29uZHMgPiBzZWFyY2guc2Vjb25kcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2F0X2JlZm9yZScsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtYmVmb3JlJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldG4gPSBJZ3hUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAnaG1zJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gSWd4VGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHNlYXJjaFZhbCwgJ2htcycpO1xuICAgICAgICAgICAgICAgIHJldHVybiAodGFyZ2V0bi5ob3VycyA9PT0gc2VhcmNoLmhvdXJzICYmIHRhcmdldG4ubWludXRlcyA9PT0gc2VhcmNoLm1pbnV0ZXMgJiYgdGFyZ2V0bi5zZWNvbmRzID09PSBzZWFyY2guc2Vjb25kcykgfHxcbiAgICAgICAgICAgICAgICB0YXJnZXRuLmhvdXJzIDwgc2VhcmNoLmhvdXJzID8gdHJ1ZSA6IHRhcmdldG4uaG91cnMgPT09IHNlYXJjaC5ob3VycyAmJiB0YXJnZXRuLm1pbnV0ZXMgPCBzZWFyY2gubWludXRlcyA/XG4gICAgICAgICAgICAgICAgICAgIHRydWUgOiB0YXJnZXRuLmhvdXJzID09PSBzZWFyY2guaG91cnMgJiYgdGFyZ2V0bi5taW51dGVzID09PSBzZWFyY2gubWludXRlcyAmJiB0YXJnZXRuLnNlY29uZHMgPCBzZWFyY2guc2Vjb25kcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2F0X2FmdGVyJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy1hZnRlcicsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSwgc2VhcmNoVmFsOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRuID0gSWd4VGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ2htcycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IElneFRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhzZWFyY2hWYWwsICdobXMnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHRhcmdldG4uaG91cnMgPT09IHNlYXJjaC5ob3VycyAmJiB0YXJnZXRuLm1pbnV0ZXMgPT09IHNlYXJjaC5taW51dGVzICYmIHRhcmdldG4uc2Vjb25kcyA9PT0gc2VhcmNoLnNlY29uZHMpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldG4uaG91cnMgPiBzZWFyY2guaG91cnMgPyB0cnVlIDogdGFyZ2V0bi5ob3VycyA9PT0gc2VhcmNoLmhvdXJzICYmIHRhcmdldG4ubWludXRlcyA+IHNlYXJjaC5taW51dGVzID9cbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSA6IHRhcmdldG4uaG91cnMgPT09IHNlYXJjaC5ob3VycyAmJiB0YXJnZXRuLm1pbnV0ZXMgPT09IHNlYXJjaC5taW51dGVzICYmIHRhcmdldG4uc2Vjb25kcyA+IHNlYXJjaC5zZWNvbmRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XS5jb25jYXQodGhpcy5vcGVyYXRpb25zKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZFZhbHVlSW5TZXQodGFyZ2V0OiBhbnksIHNlYXJjaFZhbDogU2V0PGFueT4pIHtcbiAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VhcmNoVmFsLmhhcyh0YXJnZXQudG9Mb2NhbGVUaW1lU3RyaW5nKCkpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBQcm92aWRlcyBmaWx0ZXJpbmcgb3BlcmF0aW9ucyBmb3IgbnVtYmVyc1xuICpcbiAqIEBleHBvcnRcbiAqL1xuZXhwb3J0IGNsYXNzIElneE51bWJlckZpbHRlcmluZ09wZXJhbmQgZXh0ZW5kcyBJZ3hGaWx0ZXJpbmdPcGVyYW5kIHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMub3BlcmF0aW9ucyA9IFt7XG4gICAgICAgICAgICBuYW1lOiAnZXF1YWxzJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdlcXVhbHMnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IG51bWJlciwgc2VhcmNoVmFsOiBudW1iZXIpID0+IHRhcmdldCA9PT0gc2VhcmNoVmFsXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdkb2VzTm90RXF1YWwnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ25vdC1lcXVhbCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogbnVtYmVyLCBzZWFyY2hWYWw6IG51bWJlcikgPT4gdGFyZ2V0ICE9PSBzZWFyY2hWYWxcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2dyZWF0ZXJUaGFuJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdncmVhdGVyLXRoYW4nLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IG51bWJlciwgc2VhcmNoVmFsOiBudW1iZXIpID0+IHRhcmdldCA+IHNlYXJjaFZhbFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnbGVzc1RoYW4nLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2xlc3MtdGhhbicsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogbnVtYmVyLCBzZWFyY2hWYWw6IG51bWJlcikgPT4gdGFyZ2V0IDwgc2VhcmNoVmFsXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdncmVhdGVyVGhhbk9yRXF1YWxUbycsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnZ3JlYXRlci10aGFuLW9yLWVxdWFsJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBudW1iZXIsIHNlYXJjaFZhbDogbnVtYmVyKSA9PiB0YXJnZXQgPj0gc2VhcmNoVmFsXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdsZXNzVGhhbk9yRXF1YWxUbycsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbGVzcy10aGFuLW9yLWVxdWFsJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBudW1iZXIsIHNlYXJjaFZhbDogbnVtYmVyKSA9PiB0YXJnZXQgPD0gc2VhcmNoVmFsXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdlbXB0eScsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy1lbXB0eScsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogbnVtYmVyKSA9PiB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB1bmRlZmluZWQgfHwgaXNOYU4odGFyZ2V0KVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnbm90RW1wdHknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbm90LWVtcHR5JyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBudW1iZXIpID0+IHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09IHVuZGVmaW5lZCAmJiAhaXNOYU4odGFyZ2V0KVxuICAgICAgICB9XS5jb25jYXQodGhpcy5vcGVyYXRpb25zKTtcbiAgICB9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZmlsdGVyaW5nIG9wZXJhdGlvbnMgZm9yIHN0cmluZ3NcbiAqXG4gKiBAZXhwb3J0XG4gKi9cbmV4cG9ydCBjbGFzcyBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kIGV4dGVuZHMgSWd4RmlsdGVyaW5nT3BlcmFuZCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9wZXJhdGlvbnMgPSBbe1xuICAgICAgICAgICAgbmFtZTogJ2NvbnRhaW5zJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdjb250YWlucycsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogc3RyaW5nLCBzZWFyY2hWYWw6IHN0cmluZywgaWdub3JlQ2FzZT86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2ggPSBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLmFwcGx5SWdub3JlQ2FzZShzZWFyY2hWYWwsIGlnbm9yZUNhc2UpO1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuYXBwbHlJZ25vcmVDYXNlKHRhcmdldCwgaWdub3JlQ2FzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5pbmRleE9mKHNlYXJjaCkgIT09IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnZG9lc05vdENvbnRhaW4nLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2RvZXMtbm90LWNvbnRhaW4nLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IHN0cmluZywgc2VhcmNoVmFsOiBzdHJpbmcsIGlnbm9yZUNhc2U/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZC5hcHBseUlnbm9yZUNhc2Uoc2VhcmNoVmFsLCBpZ25vcmVDYXNlKTtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLmFwcGx5SWdub3JlQ2FzZSh0YXJnZXQsIGlnbm9yZUNhc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQuaW5kZXhPZihzZWFyY2gpID09PSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ3N0YXJ0c1dpdGgnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ3N0YXJ0cy13aXRoJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBzdHJpbmcsIHNlYXJjaFZhbDogc3RyaW5nLCBpZ25vcmVDYXNlPzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuYXBwbHlJZ25vcmVDYXNlKHNlYXJjaFZhbCwgaWdub3JlQ2FzZSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZC5hcHBseUlnbm9yZUNhc2UodGFyZ2V0LCBpZ25vcmVDYXNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnN0YXJ0c1dpdGgoc2VhcmNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2VuZHNXaXRoJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdlbmRzLXdpdGgnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IHN0cmluZywgc2VhcmNoVmFsOiBzdHJpbmcsIGlnbm9yZUNhc2U/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZC5hcHBseUlnbm9yZUNhc2Uoc2VhcmNoVmFsLCBpZ25vcmVDYXNlKTtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLmFwcGx5SWdub3JlQ2FzZSh0YXJnZXQsIGlnbm9yZUNhc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQuZW5kc1dpdGgoc2VhcmNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2VxdWFscycsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnZXF1YWxzJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBzdHJpbmcsIHNlYXJjaFZhbDogc3RyaW5nLCBpZ25vcmVDYXNlPzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuYXBwbHlJZ25vcmVDYXNlKHNlYXJjaFZhbCwgaWdub3JlQ2FzZSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZC5hcHBseUlnbm9yZUNhc2UodGFyZ2V0LCBpZ25vcmVDYXNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0ID09PSBzZWFyY2g7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdkb2VzTm90RXF1YWwnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ25vdC1lcXVhbCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogc3RyaW5nLCBzZWFyY2hWYWw6IHN0cmluZywgaWdub3JlQ2FzZT86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2ggPSBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLmFwcGx5SWdub3JlQ2FzZShzZWFyY2hWYWwsIGlnbm9yZUNhc2UpO1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuYXBwbHlJZ25vcmVDYXNlKHRhcmdldCwgaWdub3JlQ2FzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCAhPT0gc2VhcmNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnZW1wdHknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtZW1wdHknLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IHN0cmluZykgPT4gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdW5kZWZpbmVkIHx8IHRhcmdldC5sZW5ndGggPT09IDBcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ25vdEVtcHR5JyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ25vdC1lbXB0eScsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogc3RyaW5nKSA9PiB0YXJnZXQgIT09IG51bGwgJiYgdGFyZ2V0ICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0Lmxlbmd0aCA+IDBcbiAgICAgICAgfV0uY29uY2F0KHRoaXMub3BlcmF0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbGllcyBjYXNlIHNlbnNpdGl2aXR5IG9uIHN0cmluZ3MgaWYgcHJvdmlkZWRcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBhcHBseUlnbm9yZUNhc2UoYTogc3RyaW5nLCBpZ25vcmVDYXNlOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgICAgYSA9IGEgPz8gJyc7XG4gICAgICAgIC8vIGJ1bGxldHByb29mXG4gICAgICAgIHJldHVybiBpZ25vcmVDYXNlID8gKCcnICsgYSkudG9Mb3dlckNhc2UoKSA6IGE7XG4gICAgfVxufVxuXG4vKipcbiAqIEludGVyZmFjZSBkZXNjcmliaW5nIGZpbHRlcmluZyBvcGVyYXRpb25zXG4gKlxuICogQGV4cG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJpbmdPcGVyYXRpb24ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpc1VuYXJ5OiBib29sZWFuO1xuICAgIGljb25OYW1lOiBzdHJpbmc7XG4gICAgaGlkZGVuPzogYm9vbGVhbjtcbiAgICBsb2dpYzogKHZhbHVlOiBhbnksIHNlYXJjaFZhbD86IGFueSwgaWdub3JlQ2FzZT86IGJvb2xlYW4pID0+IGJvb2xlYW47XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGRlc2NyaWJpbmcgRGF0ZSBvYmplY3QgaW4gcGFydHNcbiAqXG4gKiBAZXhwb3J0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGVQYXJ0cyB7XG4gICAgeWVhcjogbnVtYmVyO1xuICAgIG1vbnRoOiBudW1iZXI7XG4gICAgZGF5OiBudW1iZXI7XG4gICAgaG91cnM6IG51bWJlcjtcbiAgICBtaW51dGVzOiBudW1iZXI7XG4gICAgc2Vjb25kczogbnVtYmVyO1xuICAgIG1pbGxpc2Vjb25kczogbnVtYmVyO1xufVxuIl19
783
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLWNvbmRpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWNvbmRpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFJNUI7UUFDSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLE1BQU07Z0JBQ1osT0FBTyxFQUFFLElBQUk7Z0JBQ2IsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLEtBQUssRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUk7YUFDMUMsRUFBRTtnQkFDQyxJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsSUFBSTtnQkFDYixRQUFRLEVBQUUsYUFBYTtnQkFDdkIsS0FBSyxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSTthQUMxQyxFQUFFO2dCQUNDLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixNQUFNLEVBQUUsSUFBSTtnQkFDWixLQUFLLEVBQUUsQ0FBQyxNQUFXLEVBQUUsU0FBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO2FBQ3RGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FB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Qy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFTLEVBQUUsVUFBbUI7UUFDeEQsQ0FBQyxHQUFHLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLEVBQUUsQ0FBQztRQUNaLGNBQWM7UUFDZCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3ZpZGVzIGJhc2UgZmlsdGVyaW5nIG9wZXJhdGlvbnNcbiAqIEltcGxlbWVudGF0aW9ucyBzaG91bGQgYmUgU2luZ2xldG9uXG4gKlxuICogQGV4cG9ydFxuICovXG5leHBvcnQgY2xhc3MgSWd4RmlsdGVyaW5nT3BlcmFuZCB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfaW5zdGFuY2U6IElneEZpbHRlcmluZ09wZXJhbmQgPSBudWxsO1xuICAgIHB1YmxpYyBvcGVyYXRpb25zOiBJRmlsdGVyaW5nT3BlcmF0aW9uW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5vcGVyYXRpb25zID0gW3tcbiAgICAgICAgICAgIG5hbWU6ICdudWxsJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLW51bGwnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IGFueSkgPT4gdGFyZ2V0ID09PSBudWxsXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdub3ROdWxsJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLW5vdC1udWxsJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBhbnkpID0+IHRhcmdldCAhPT0gbnVsbFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnaW4nLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLWluJyxcbiAgICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBhbnksIHNlYXJjaFZhbDogU2V0PGFueT4pID0+IHRoaXMuZmluZFZhbHVlSW5TZXQodGFyZ2V0LCBzZWFyY2hWYWwpXG4gICAgICAgIH1dO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKTogSWd4RmlsdGVyaW5nT3BlcmFuZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgdGhpcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIG5hbWVzIG9mIHRoZSBjb25kaXRpb25zIHdoaWNoIGFyZSB2aXNpYmxlIGluIHRoZSBVSVxuICAgICAqL1xuICAgIHB1YmxpYyBjb25kaXRpb25MaXN0KCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlcmF0aW9ucy5maWx0ZXIoZiA9PiAhZi5oaWRkZW4pLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC5uYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBjb25kaXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29uZGl0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25kaXRpb24obmFtZTogc3RyaW5nKTogSUZpbHRlcmluZ09wZXJhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbnMuZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5uYW1lID09PSBuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IGNvbmRpdGlvbiB0byB0aGUgZmlsdGVyaW5nIG9wZXJhdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3BlcmF0aW9uIFRoZSBmaWx0ZXJpbmcgb3BlcmF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBhcHBlbmQob3BlcmF0aW9uOiBJRmlsdGVyaW5nT3BlcmF0aW9uKSB7XG4gICAgICAgIHRoaXMub3BlcmF0aW9ucy5wdXNoKG9wZXJhdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaW5kVmFsdWVJblNldCh0YXJnZXQ6IGFueSwgc2VhcmNoVmFsOiBTZXQ8YW55Pikge1xuICAgICAgICByZXR1cm4gc2VhcmNoVmFsLmhhcyh0YXJnZXQpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBQcm92aWRlcyBmaWx0ZXJpbmcgb3BlcmF0aW9ucyBmb3IgYm9vbGVhbnNcbiAqXG4gKiBAZXhwb3J0XG4gKi9cbmV4cG9ydCBjbGFzcyBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZCBleHRlbmRzIElneEZpbHRlcmluZ09wZXJhbmQge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5vcGVyYXRpb25zID0gW3tcbiAgICAgICAgICAgIG5hbWU6ICdhbGwnLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnc2VsZWN0LWFsbCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogYm9vbGVhbikgPT4gdHJ1ZVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAndHJ1ZScsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy10cnVlJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBib29sZWFuKSA9PiAhISh0YXJnZXQgJiYgdGFyZ2V0ICE9PSBudWxsICYmIHRhcmdldCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnZmFsc2UnLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtZmFsc2UnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IGJvb2xlYW4pID0+ICF0YXJnZXQgJiYgdGFyZ2V0ICE9PSBudWxsICYmIHRhcmdldCAhPT0gdW5kZWZpbmVkXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdlbXB0eScsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy1lbXB0eScsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogYm9vbGVhbikgPT4gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdW5kZWZpbmVkXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdub3RFbXB0eScsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdub3QtZW1wdHknLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IGJvb2xlYW4pID0+IHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09IHVuZGVmaW5lZFxuICAgICAgICB9XS5jb25jYXQodGhpcy5vcGVyYXRpb25zKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAaGlkZGVuXG4gKi9cbmNsYXNzIElneEJhc2VEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQgZXh0ZW5kcyBJZ3hGaWx0ZXJpbmdPcGVyYW5kIHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMub3BlcmF0aW9ucyA9IFt7XG4gICAgICAgICAgICBuYW1lOiAnZW1wdHknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtZW1wdHknLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IERhdGUpID0+IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHVuZGVmaW5lZFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnbm90RW1wdHknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbm90LWVtcHR5JyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB0YXJnZXQgIT09IG51bGwgJiYgdGFyZ2V0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgfV0uY29uY2F0KHRoaXMub3BlcmF0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3BsaXRzIGEgRGF0ZSBvYmplY3QgaW50byBwYXJ0c1xuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneERhdGVGaWx0ZXJpbmdPcGVyYW5kXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXREYXRlUGFydHMoZGF0ZTogRGF0ZSwgZGF0ZUZvcm1hdD86IHN0cmluZyk6IElEYXRlUGFydHMge1xuICAgICAgICBjb25zdCByZXMgPSB7XG4gICAgICAgICAgICBkYXk6IG51bGwsXG4gICAgICAgICAgICBob3VyczogbnVsbCxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kczogbnVsbCxcbiAgICAgICAgICAgIG1pbnV0ZXM6IG51bGwsXG4gICAgICAgICAgICBtb250aDogbnVsbCxcbiAgICAgICAgICAgIHNlY29uZHM6IG51bGwsXG4gICAgICAgICAgICB5ZWFyOiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghZGF0ZSB8fCAhZGF0ZUZvcm1hdCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0ZUZvcm1hdC5pbmRleE9mKCd5JykgPj0gMCkge1xuICAgICAgICAgICAgcmVzLnllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGVGb3JtYXQuaW5kZXhPZignTScpID49IDApIHtcbiAgICAgICAgICAgIHJlcy5tb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0ZUZvcm1hdC5pbmRleE9mKCdkJykgPj0gMCkge1xuICAgICAgICAgICAgcmVzLmRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRlRm9ybWF0LmluZGV4T2YoJ2gnKSA+PSAwKSB7XG4gICAgICAgICAgICByZXMuaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGVGb3JtYXQuaW5kZXhPZignbScpID49IDApIHtcbiAgICAgICAgICAgIHJlcy5taW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGVGb3JtYXQuaW5kZXhPZigncycpID49IDApIHtcbiAgICAgICAgICAgIHJlcy5zZWNvbmRzID0gZGF0ZS5nZXRTZWNvbmRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGVGb3JtYXQuaW5kZXhPZignZicpID49IDApIHtcbiAgICAgICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSBkYXRlLmdldE1pbGxpc2Vjb25kcygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbmRWYWx1ZUluU2V0KHRhcmdldDogYW55LCBzZWFyY2hWYWw6IFNldDxhbnk+KSB7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlYXJjaFZhbC5oYXMoKHRhcmdldCBpbnN0YW5jZW9mIERhdGUpID8gdGFyZ2V0LnRvSVNPU3RyaW5nKCkgOiB0YXJnZXQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQ6IERhdGUpIHtcbiAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHBlcmZvcm0gZmlsdGVyaW5nIG9uIFxcJ2RhdGVcXCcgY29sdW1uIGJlY2F1c2UgdGhlIGRhdGFzb3VyY2Ugb2JqZWN0IHR5cGUgaXMgbm90IFxcJ0RhdGVcXCcuJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIFByb3ZpZGVzIGZpbHRlcmluZyBvcGVyYXRpb25zIGZvciBEYXRlc1xuICpcbiAqIEBleHBvcnRcbiAqL1xuZXhwb3J0IGNsYXNzIElneERhdGVGaWx0ZXJpbmdPcGVyYW5kIGV4dGVuZHMgSWd4QmFzZURhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9wZXJhdGlvbnMgPSBbe1xuICAgICAgICAgICAgbmFtZTogJ2VxdWFscycsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnZXF1YWxzJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0cCA9IElneERhdGVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICd5TWQnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hwID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHNlYXJjaFZhbCwgJ3lNZCcpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRwLnllYXIgPT09IHNlYXJjaHAueWVhciAmJlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLm1vbnRoID09PSBzZWFyY2hwLm1vbnRoICYmXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAuZGF5ID09PSBzZWFyY2hwLmRheTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2RvZXNOb3RFcXVhbCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbm90LWVxdWFsJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRwID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3lNZCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaHAgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMoc2VhcmNoVmFsLCAneU1kJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldHAueWVhciAhPT0gc2VhcmNocC55ZWFyIHx8XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAubW9udGggIT09IHNlYXJjaHAubW9udGggfHxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5kYXkgIT09IHNlYXJjaHAuZGF5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnYmVmb3JlJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy1iZWZvcmUnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IERhdGUsIHNlYXJjaFZhbDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0IDwgc2VhcmNoVmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnYWZ0ZXInLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLWFmdGVyJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCA+IHNlYXJjaFZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ3RvZGF5JyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ3RvZGF5JyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneU1kJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKG5ldyBEYXRlKCksICd5TWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC55ZWFyID09PSBub3cueWVhciAmJlxuICAgICAgICAgICAgICAgICAgICBkLm1vbnRoID09PSBub3cubW9udGggJiZcbiAgICAgICAgICAgICAgICAgICAgZC5kYXkgPT09IG5vdy5kYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICd5ZXN0ZXJkYXknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAneWVzdGVyZGF5JyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRkID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3lNZCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHkgPSAoKGQpID0+IG5ldyBEYXRlKGQuc2V0RGF0ZShkLmdldERhdGUoKSAtIDEpKSkobmV3IERhdGUoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeWVzdGVyZGF5ID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHksICd5TWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGQueWVhciA9PT0geWVzdGVyZGF5LnllYXIgJiZcbiAgICAgICAgICAgICAgICAgICAgdGQubW9udGggPT09IHllc3RlcmRheS5tb250aCAmJlxuICAgICAgICAgICAgICAgICAgICB0ZC5kYXkgPT09IHllc3RlcmRheS5kYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICd0aGlzTW9udGgnLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAndGhpcy1tb250aCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3lNJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKG5ldyBEYXRlKCksICd5TScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyICYmXG4gICAgICAgICAgICAgICAgICAgIGQubW9udGggPT09IG5vdy5tb250aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2xhc3RNb250aCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdsYXN0LW1vbnRoJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneU0nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMobmV3IERhdGUoKSwgJ3lNJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFub3cubW9udGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbm93Lm1vbnRoID0gMTE7XG4gICAgICAgICAgICAgICAgICAgIG5vdy55ZWFyIC09IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm93Lm1vbnRoLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyICYmXG4gICAgICAgICAgICAgICAgICAgIGQubW9udGggPT09IG5vdy5tb250aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ25leHRNb250aCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICduZXh0LW1vbnRoJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneU0nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMobmV3IERhdGUoKSwgJ3lNJyk7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy5tb250aCA9PT0gMTEpIHtcbiAgICAgICAgICAgICAgICAgICAgbm93Lm1vbnRoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgbm93LnllYXIgKz0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3cubW9udGgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGQueWVhciA9PT0gbm93LnllYXIgJiZcbiAgICAgICAgICAgICAgICAgICAgZC5tb250aCA9PT0gbm93Lm1vbnRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAndGhpc1llYXInLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAndGhpcy15ZWFyJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IElneERhdGVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhuZXcgRGF0ZSgpLCAneScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnbGFzdFllYXInLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbGFzdC15ZWFyJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IElneERhdGVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhuZXcgRGF0ZSgpLCAneScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ25leHRZZWFyJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ25leHQteWVhcicsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3knKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMobmV3IERhdGUoKSwgJ3knKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC55ZWFyID09PSBub3cueWVhciArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1dLmNvbmNhdCh0aGlzLm9wZXJhdGlvbnMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZCBleHRlbmRzIElneEJhc2VEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5vcGVyYXRpb25zID0gW3tcbiAgICAgICAgICAgIG5hbWU6ICdlcXVhbHMnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2VxdWFscycsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSwgc2VhcmNoVmFsOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0cCA9IElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneU1kaG1zJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNocCA9IElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMoc2VhcmNoVmFsLCAneU1kaG1zJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldHAueWVhciA9PT0gc2VhcmNocC55ZWFyICYmXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAubW9udGggPT09IHNlYXJjaHAubW9udGggJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5kYXkgPT09IHNlYXJjaHAuZGF5ICYmXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAuaG91cnMgPT09IHNlYXJjaHAuaG91cnMgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5taW51dGVzID09PSBzZWFyY2hwLm1pbnV0ZXMgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5zZWNvbmRzID09PSBzZWFyY2hwLnNlY29uZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdkb2VzTm90RXF1YWwnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ25vdC1lcXVhbCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSwgc2VhcmNoVmFsOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRwID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICd5TWRobXMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hwID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhzZWFyY2hWYWwsICd5TWRobXMnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0cC55ZWFyICE9PSBzZWFyY2hwLnllYXIgfHxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5tb250aCAhPT0gc2VhcmNocC5tb250aCB8fFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLmRheSAhPT0gc2VhcmNocC5kYXkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cC5ob3VycyAhPT0gc2VhcmNocC5ob3VycyB8fFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLm1pbnV0ZXMgIT09IHNlYXJjaHAubWludXRlcyB8fFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRwLnNlY29uZHMgIT09IHNlYXJjaHAuc2Vjb25kcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2JlZm9yZScsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtYmVmb3JlJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlLCBzZWFyY2hWYWw6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCA8IHNlYXJjaFZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2FmdGVyJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy1hZnRlcicsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSwgc2VhcmNoVmFsOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQgPiBzZWFyY2hWYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICd0b2RheScsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICd0b2RheScsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICd5TWQnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBJZ3hEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKG5ldyBEYXRlKCksICd5TWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC55ZWFyID09PSBub3cueWVhciAmJlxuICAgICAgICAgICAgICAgICAgICBkLm1vbnRoID09PSBub3cubW9udGggJiZcbiAgICAgICAgICAgICAgICAgICAgZC5kYXkgPT09IG5vdy5kYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICd5ZXN0ZXJkYXknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAneWVzdGVyZGF5JyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRkID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICd5TWQnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB5ID0gKChkKSA9PiBuZXcgRGF0ZShkLnNldERhdGUoZC5nZXREYXRlKCkgLSAxKSkpKG5ldyBEYXRlKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHllc3RlcmRheSA9IElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMoeSwgJ3lNZCcpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0ZC55ZWFyID09PSB5ZXN0ZXJkYXkueWVhciAmJlxuICAgICAgICAgICAgICAgICAgICB0ZC5tb250aCA9PT0geWVzdGVyZGF5Lm1vbnRoICYmXG4gICAgICAgICAgICAgICAgICAgIHRkLmRheSA9PT0geWVzdGVyZGF5LmRheTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ3RoaXNNb250aCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICd0aGlzLW1vbnRoJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3lNJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhuZXcgRGF0ZSgpLCAneU0nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC55ZWFyID09PSBub3cueWVhciAmJlxuICAgICAgICAgICAgICAgICAgICBkLm1vbnRoID09PSBub3cubW9udGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdsYXN0TW9udGgnLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnbGFzdC1tb250aCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICd5TScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMobmV3IERhdGUoKSwgJ3lNJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFub3cubW9udGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbm93Lm1vbnRoID0gMTE7XG4gICAgICAgICAgICAgICAgICAgIG5vdy55ZWFyIC09IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm93Lm1vbnRoLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyICYmXG4gICAgICAgICAgICAgICAgICAgIGQubW9udGggPT09IG5vdy5tb250aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ25leHRNb250aCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICduZXh0LW1vbnRoJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBJZ3hEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ3lNJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhuZXcgRGF0ZSgpLCAneU0nKTtcbiAgICAgICAgICAgICAgICBpZiAobm93Lm1vbnRoID09PSAxMSkge1xuICAgICAgICAgICAgICAgICAgICBub3cubW9udGggPSAwO1xuICAgICAgICAgICAgICAgICAgICBub3cueWVhciArPSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vdy5tb250aCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZC55ZWFyID09PSBub3cueWVhciAmJlxuICAgICAgICAgICAgICAgICAgICBkLm1vbnRoID09PSBub3cubW9udGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICd0aGlzWWVhcicsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICd0aGlzLXllYXInLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0RGF0YSh0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHModGFyZ2V0LCAneScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMobmV3IERhdGUoKSwgJ3knKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC55ZWFyID09PSBub3cueWVhcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2xhc3RZZWFyJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2xhc3QteWVhcicsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICd5Jyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhuZXcgRGF0ZSgpLCAneScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ25leHRZZWFyJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ25leHQteWVhcicsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICd5Jyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhuZXcgRGF0ZSgpLCAneScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnllYXIgPT09IG5vdy55ZWFyICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfV0uY29uY2F0KHRoaXMub3BlcmF0aW9ucyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSWd4VGltZUZpbHRlcmluZ09wZXJhbmQgZXh0ZW5kcyBJZ3hCYXNlRGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kIHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMub3BlcmF0aW9ucyA9IFt7XG4gICAgICAgICAgICBuYW1lOiAnYXQnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2VxdWFscycsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSwgc2VhcmNoVmFsOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0cCA9IElneFRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICdobXMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hwID0gSWd4VGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHNlYXJjaFZhbCwgJ2htcycpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRwLmhvdXJzID09PSBzZWFyY2hwLmhvdXJzICYmXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAubWludXRlcyA9PT0gc2VhcmNocC5taW51dGVzICYmXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAuc2Vjb25kcyA9PT0gc2VhcmNocC5zZWNvbmRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnbm90X2F0JyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdub3QtZXF1YWwnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IERhdGUsIHNlYXJjaFZhbDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0cCA9IElneFRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICdobXMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hwID0gSWd4VGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHNlYXJjaFZhbCwgJ2htcycpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRwLmhvdXJzICE9PSBzZWFyY2hwLmhvdXJzIHx8XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAubWludXRlcyAhPT0gc2VhcmNocC5taW51dGVzIHx8XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHAuc2Vjb25kcyAhPT0gc2VhcmNocC5zZWNvbmRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnYmVmb3JlJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdpcy1iZWZvcmUnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IERhdGUsIHNlYXJjaFZhbDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0biA9IElneFRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICdobXMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2ggPSBJZ3hUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMoc2VhcmNoVmFsLCAnaG1zJyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0bi5ob3VycyA8IHNlYXJjaC5ob3VycyA/IHRydWUgOiB0YXJnZXRuLmhvdXJzID09PSBzZWFyY2guaG91cnMgJiYgdGFyZ2V0bi5taW51dGVzIDwgc2VhcmNoLm1pbnV0ZXMgP1xuICAgICAgICAgICAgICAgICAgICB0cnVlIDogdGFyZ2V0bi5ob3VycyA9PT0gc2VhcmNoLmhvdXJzICYmIHRhcmdldG4ubWludXRlcyA9PT0gc2VhcmNoLm1pbnV0ZXMgJiYgdGFyZ2V0bi5zZWNvbmRzIDwgc2VhcmNoLnNlY29uZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdhZnRlcicsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtYWZ0ZXInLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IERhdGUsIHNlYXJjaFZhbDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0biA9IElneFRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICdobXMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2ggPSBJZ3hUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMoc2VhcmNoVmFsLCAnaG1zJyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0bi5ob3VycyA+IHNlYXJjaC5ob3VycyA/IHRydWUgOiB0YXJnZXRuLmhvdXJzID09PSBzZWFyY2guaG91cnMgJiYgdGFyZ2V0bi5taW51dGVzID4gc2VhcmNoLm1pbnV0ZXMgP1xuICAgICAgICAgICAgICAgICAgICB0cnVlIDogdGFyZ2V0bi5ob3VycyA9PT0gc2VhcmNoLmhvdXJzICYmIHRhcmdldG4ubWludXRlcyA9PT0gc2VhcmNoLm1pbnV0ZXMgJiYgdGFyZ2V0bi5zZWNvbmRzID4gc2VhcmNoLnNlY29uZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdhdF9iZWZvcmUnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLWJlZm9yZScsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogRGF0ZSwgc2VhcmNoVmFsOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dERhdGEodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRuID0gSWd4VGltZUZpbHRlcmluZ09wZXJhbmQuZ2V0RGF0ZVBhcnRzKHRhcmdldCwgJ2htcycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IElneFRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyhzZWFyY2hWYWwsICdobXMnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHRhcmdldG4uaG91cnMgPT09IHNlYXJjaC5ob3VycyAmJiB0YXJnZXRuLm1pbnV0ZXMgPT09IHNlYXJjaC5taW51dGVzICYmIHRhcmdldG4uc2Vjb25kcyA9PT0gc2VhcmNoLnNlY29uZHMpIHx8XG4gICAgICAgICAgICAgICAgdGFyZ2V0bi5ob3VycyA8IHNlYXJjaC5ob3VycyA/IHRydWUgOiB0YXJnZXRuLmhvdXJzID09PSBzZWFyY2guaG91cnMgJiYgdGFyZ2V0bi5taW51dGVzIDwgc2VhcmNoLm1pbnV0ZXMgP1xuICAgICAgICAgICAgICAgICAgICB0cnVlIDogdGFyZ2V0bi5ob3VycyA9PT0gc2VhcmNoLmhvdXJzICYmIHRhcmdldG4ubWludXRlcyA9PT0gc2VhcmNoLm1pbnV0ZXMgJiYgdGFyZ2V0bi5zZWNvbmRzIDwgc2VhcmNoLnNlY29uZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdhdF9hZnRlcicsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtYWZ0ZXInLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IERhdGUsIHNlYXJjaFZhbDogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlSW5wdXREYXRhKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0biA9IElneFRpbWVGaWx0ZXJpbmdPcGVyYW5kLmdldERhdGVQYXJ0cyh0YXJnZXQsICdobXMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2ggPSBJZ3hUaW1lRmlsdGVyaW5nT3BlcmFuZC5nZXREYXRlUGFydHMoc2VhcmNoVmFsLCAnaG1zJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0YXJnZXRuLmhvdXJzID09PSBzZWFyY2guaG91cnMgJiYgdGFyZ2V0bi5taW51dGVzID09PSBzZWFyY2gubWludXRlcyAmJiB0YXJnZXRuLnNlY29uZHMgPT09IHNlYXJjaC5zZWNvbmRzKSB8fFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRuLmhvdXJzID4gc2VhcmNoLmhvdXJzID8gdHJ1ZSA6IHRhcmdldG4uaG91cnMgPT09IHNlYXJjaC5ob3VycyAmJiB0YXJnZXRuLm1pbnV0ZXMgPiBzZWFyY2gubWludXRlcyA/XG4gICAgICAgICAgICAgICAgICAgIHRydWUgOiB0YXJnZXRuLmhvdXJzID09PSBzZWFyY2guaG91cnMgJiYgdGFyZ2V0bi5taW51dGVzID09PSBzZWFyY2gubWludXRlcyAmJiB0YXJnZXRuLnNlY29uZHMgPiBzZWFyY2guc2Vjb25kcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfV0uY29uY2F0KHRoaXMub3BlcmF0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbmRWYWx1ZUluU2V0KHRhcmdldDogYW55LCBzZWFyY2hWYWw6IFNldDxhbnk+KSB7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlYXJjaFZhbC5oYXModGFyZ2V0LnRvTG9jYWxlVGltZVN0cmluZygpKTtcbiAgICB9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZmlsdGVyaW5nIG9wZXJhdGlvbnMgZm9yIG51bWJlcnNcbiAqXG4gKiBAZXhwb3J0XG4gKi9cbmV4cG9ydCBjbGFzcyBJZ3hOdW1iZXJGaWx0ZXJpbmdPcGVyYW5kIGV4dGVuZHMgSWd4RmlsdGVyaW5nT3BlcmFuZCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9wZXJhdGlvbnMgPSBbe1xuICAgICAgICAgICAgbmFtZTogJ2VxdWFscycsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnZXF1YWxzJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBudW1iZXIsIHNlYXJjaFZhbDogbnVtYmVyKSA9PiB0YXJnZXQgPT09IHNlYXJjaFZhbFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnZG9lc05vdEVxdWFsJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdub3QtZXF1YWwnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IG51bWJlciwgc2VhcmNoVmFsOiBudW1iZXIpID0+IHRhcmdldCAhPT0gc2VhcmNoVmFsXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdncmVhdGVyVGhhbicsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnZ3JlYXRlci10aGFuJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBudW1iZXIsIHNlYXJjaFZhbDogbnVtYmVyKSA9PiB0YXJnZXQgPiBzZWFyY2hWYWxcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2xlc3NUaGFuJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdsZXNzLXRoYW4nLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IG51bWJlciwgc2VhcmNoVmFsOiBudW1iZXIpID0+IHRhcmdldCA8IHNlYXJjaFZhbFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnZ3JlYXRlclRoYW5PckVxdWFsVG8nLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2dyZWF0ZXItdGhhbi1vci1lcXVhbCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogbnVtYmVyLCBzZWFyY2hWYWw6IG51bWJlcikgPT4gdGFyZ2V0ID49IHNlYXJjaFZhbFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnbGVzc1RoYW5PckVxdWFsVG8nLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2xlc3MtdGhhbi1vci1lcXVhbCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogbnVtYmVyLCBzZWFyY2hWYWw6IG51bWJlcikgPT4gdGFyZ2V0IDw9IHNlYXJjaFZhbFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnZW1wdHknLFxuICAgICAgICAgICAgaXNVbmFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnaXMtZW1wdHknLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IG51bWJlcikgPT4gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKHRhcmdldClcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ25vdEVtcHR5JyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ25vdC1lbXB0eScsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogbnVtYmVyKSA9PiB0YXJnZXQgIT09IG51bGwgJiYgdGFyZ2V0ICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKHRhcmdldClcbiAgICAgICAgfV0uY29uY2F0KHRoaXMub3BlcmF0aW9ucyk7XG4gICAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIGZpbHRlcmluZyBvcGVyYXRpb25zIGZvciBzdHJpbmdzXG4gKlxuICogQGV4cG9ydFxuICovXG5leHBvcnQgY2xhc3MgSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZCBleHRlbmRzIElneEZpbHRlcmluZ09wZXJhbmQge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5vcGVyYXRpb25zID0gW3tcbiAgICAgICAgICAgIG5hbWU6ICdjb250YWlucycsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnY29udGFpbnMnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IHN0cmluZywgc2VhcmNoVmFsOiBzdHJpbmcsIGlnbm9yZUNhc2U/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZC5hcHBseUlnbm9yZUNhc2Uoc2VhcmNoVmFsLCBpZ25vcmVDYXNlKTtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLmFwcGx5SWdub3JlQ2FzZSh0YXJnZXQsIGlnbm9yZUNhc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQuaW5kZXhPZihzZWFyY2gpICE9PSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2RvZXNOb3RDb250YWluJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdkb2VzLW5vdC1jb250YWluJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBzdHJpbmcsIHNlYXJjaFZhbDogc3RyaW5nLCBpZ25vcmVDYXNlPzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuYXBwbHlJZ25vcmVDYXNlKHNlYXJjaFZhbCwgaWdub3JlQ2FzZSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZC5hcHBseUlnbm9yZUNhc2UodGFyZ2V0LCBpZ25vcmVDYXNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmluZGV4T2Yoc2VhcmNoKSA9PT0gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdzdGFydHNXaXRoJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdzdGFydHMtd2l0aCcsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogc3RyaW5nLCBzZWFyY2hWYWw6IHN0cmluZywgaWdub3JlQ2FzZT86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2ggPSBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLmFwcGx5SWdub3JlQ2FzZShzZWFyY2hWYWwsIGlnbm9yZUNhc2UpO1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuYXBwbHlJZ25vcmVDYXNlKHRhcmdldCwgaWdub3JlQ2FzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5zdGFydHNXaXRoKHNlYXJjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdlbmRzV2l0aCcsXG4gICAgICAgICAgICBpc1VuYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb25OYW1lOiAnZW5kcy13aXRoJyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBzdHJpbmcsIHNlYXJjaFZhbDogc3RyaW5nLCBpZ25vcmVDYXNlPzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuYXBwbHlJZ25vcmVDYXNlKHNlYXJjaFZhbCwgaWdub3JlQ2FzZSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZC5hcHBseUlnbm9yZUNhc2UodGFyZ2V0LCBpZ25vcmVDYXNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmVuZHNXaXRoKHNlYXJjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdlcXVhbHMnLFxuICAgICAgICAgICAgaXNVbmFyeTogZmFsc2UsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2VxdWFscycsXG4gICAgICAgICAgICBsb2dpYzogKHRhcmdldDogc3RyaW5nLCBzZWFyY2hWYWw6IHN0cmluZywgaWdub3JlQ2FzZT86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2ggPSBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLmFwcGx5SWdub3JlQ2FzZShzZWFyY2hWYWwsIGlnbm9yZUNhc2UpO1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuYXBwbHlJZ25vcmVDYXNlKHRhcmdldCwgaWdub3JlQ2FzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCA9PT0gc2VhcmNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnZG9lc05vdEVxdWFsJyxcbiAgICAgICAgICAgIGlzVW5hcnk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdub3QtZXF1YWwnLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IHN0cmluZywgc2VhcmNoVmFsOiBzdHJpbmcsIGlnbm9yZUNhc2U/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZC5hcHBseUlnbm9yZUNhc2Uoc2VhcmNoVmFsLCBpZ25vcmVDYXNlKTtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLmFwcGx5SWdub3JlQ2FzZSh0YXJnZXQsIGlnbm9yZUNhc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQgIT09IHNlYXJjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbmFtZTogJ2VtcHR5JyxcbiAgICAgICAgICAgIGlzVW5hcnk6IHRydWUsXG4gICAgICAgICAgICBpY29uTmFtZTogJ2lzLWVtcHR5JyxcbiAgICAgICAgICAgIGxvZ2ljOiAodGFyZ2V0OiBzdHJpbmcpID0+IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHVuZGVmaW5lZCB8fCB0YXJnZXQubGVuZ3RoID09PSAwXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG5hbWU6ICdub3RFbXB0eScsXG4gICAgICAgICAgICBpc1VuYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaWNvbk5hbWU6ICdub3QtZW1wdHknLFxuICAgICAgICAgICAgbG9naWM6ICh0YXJnZXQ6IHN0cmluZykgPT4gdGFyZ2V0ICE9PSBudWxsICYmIHRhcmdldCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldC5sZW5ndGggPiAwXG4gICAgICAgIH1dLmNvbmNhdCh0aGlzLm9wZXJhdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgY2FzZSBzZW5zaXRpdml0eSBvbiBzdHJpbmdzIGlmIHByb3ZpZGVkXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgYXBwbHlJZ25vcmVDYXNlKGE6IHN0cmluZywgaWdub3JlQ2FzZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGEgPSBhID8/ICcnO1xuICAgICAgICAvLyBidWxsZXRwcm9vZlxuICAgICAgICByZXR1cm4gaWdub3JlQ2FzZSA/ICgnJyArIGEpLnRvTG93ZXJDYXNlKCkgOiBhO1xuICAgIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVzY3JpYmluZyBmaWx0ZXJpbmcgb3BlcmF0aW9uc1xuICpcbiAqIEBleHBvcnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyaW5nT3BlcmF0aW9uIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaXNVbmFyeTogYm9vbGVhbjtcbiAgICBpY29uTmFtZTogc3RyaW5nO1xuICAgIGhpZGRlbj86IGJvb2xlYW47XG4gICAgbG9naWM6ICh2YWx1ZTogYW55LCBzZWFyY2hWYWw/OiBhbnksIGlnbm9yZUNhc2U/OiBib29sZWFuKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBkZXNjcmliaW5nIERhdGUgb2JqZWN0IGluIHBhcnRzXG4gKlxuICogQGV4cG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEYXRlUGFydHMge1xuICAgIHllYXI6IG51bWJlcjtcbiAgICBtb250aDogbnVtYmVyO1xuICAgIGRheTogbnVtYmVyO1xuICAgIGhvdXJzOiBudW1iZXI7XG4gICAgbWludXRlczogbnVtYmVyO1xuICAgIHNlY29uZHM6IG51bWJlcjtcbiAgICBtaWxsaXNlY29uZHM6IG51bWJlcjtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL2NlbGwuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJZ3hDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2NvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJZ3hHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElneEhpZXJhcmNoaWNhbEdyaWRDb21wb25lbnQgfSBmcm9tICcuLi9oaWVyYXJjaGljYWwtZ3JpZC9oaWVyYXJjaGljYWwtZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJZ3hUcmVlR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL3RyZWUtZ3JpZC90cmVlLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUm93VHlwZSB9IGZyb20gJy4vcm93LmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENlbGxUeXBlIHtcclxuXHR2YWx1ZTogYW55O1xyXG5cdGVkaXRWYWx1ZTogYW55O1xyXG5cdHNlbGVjdGVkOiBib29sZWFuO1xyXG5cdGFjdGl2ZTogYm9vbGVhbjtcclxuXHRlZGl0YWJsZTogYm9vbGVhbjtcclxuXHRlZGl0TW9kZTogYm9vbGVhbjtcclxuXHRjb2x1bW46IElneENvbHVtbkNvbXBvbmVudDtcclxuXHRyb3c6IFJvd1R5cGU7XHJcblx0Z3JpZDogSWd4R3JpZENvbXBvbmVudCB8IElneFRyZWVHcmlkQ29tcG9uZW50IHwgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudDtcclxuXHRpZDogeyByb3dJRDogYW55OyBjb2x1bW5JRDogbnVtYmVyOyByb3dJbmRleDogbnVtYmVyIH07XHJcblx0d2lkdGg6IHN0cmluZztcclxuXHR1cGRhdGU6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xyXG59XHJcblxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL2NlbGwuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJZ3hDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4R3JpZENvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL2hpZXJhcmNoaWNhbC1ncmlkL2hpZXJhcmNoaWNhbC1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hUcmVlR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL3RyZWUtZ3JpZC90cmVlLWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IFJvd1R5cGUgfSBmcm9tICcuL3Jvdy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENlbGxUeXBlIHtcblx0dmFsdWU6IGFueTtcblx0ZWRpdFZhbHVlOiBhbnk7XG5cdHNlbGVjdGVkOiBib29sZWFuO1xuXHRhY3RpdmU6IGJvb2xlYW47XG5cdGVkaXRhYmxlOiBib29sZWFuO1xuXHRlZGl0TW9kZTogYm9vbGVhbjtcblx0Y29sdW1uOiBJZ3hDb2x1bW5Db21wb25lbnQ7XG5cdHJvdzogUm93VHlwZTtcblx0Z3JpZDogSWd4R3JpZENvbXBvbmVudCB8IElneFRyZWVHcmlkQ29tcG9uZW50IHwgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudDtcblx0aWQ6IHsgcm93SUQ6IGFueTsgY29sdW1uSUQ6IG51bWJlcjsgcm93SW5kZXg6IG51bWJlciB9O1xuXHR3aWR0aDogc3RyaW5nO1xuXHR1cGRhdGU6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xufVxuXG4iXX0=