ngx-sfc-common 0.0.34 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/load-more-button/load-more-button.component.mjs +2 -2
- package/esm2020/lib/components/pagination/pagination.component.mjs +2 -2
- package/esm2020/lib/components/tag/tag.component.mjs +4 -3
- package/esm2020/lib/constants/common.constants.mjs +3 -1
- package/esm2020/lib/enums/color.enum.mjs +43 -0
- package/esm2020/lib/enums/index.mjs +2 -1
- package/esm2020/lib/models/index.mjs +1 -1
- package/esm2020/lib/models/position.model.mjs +2 -0
- package/esm2020/lib/types/index.mjs +1 -1
- package/esm2020/lib/types/primitive.type.mjs +2 -0
- package/esm2020/lib/types/segment.type.mjs +2 -0
- package/esm2020/lib/utils/collections.utils.mjs +16 -1
- package/esm2020/lib/utils/common.utils.mjs +171 -31
- package/esm2020/lib/utils/index.mjs +3 -3
- package/fesm2015/ngx-sfc-common.mjs +239 -38
- package/fesm2015/ngx-sfc-common.mjs.map +1 -1
- package/fesm2020/ngx-sfc-common.mjs +239 -38
- package/fesm2020/ngx-sfc-common.mjs.map +1 -1
- package/lib/constants/common.constants.d.ts +2 -0
- package/lib/enums/color.enum.d.ts +30 -0
- package/lib/enums/index.d.ts +1 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/position.model.d.ts +4 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/primitive.type.d.ts +1 -0
- package/lib/types/segment.type.d.ts +1 -0
- package/lib/utils/collections.utils.d.ts +7 -0
- package/lib/utils/common.utils.d.ts +25 -9
- package/lib/utils/index.d.ts +2 -2
- package/package.json +1 -1
- package/styles/_colors.scss +1 -1
- package/styles/_mixins.scss +36 -1
|
@@ -17,10 +17,10 @@ export class LoadMoreButtonComponent {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
LoadMoreButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
-
LoadMoreButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadMoreButtonComponent, selector: "sfc-load-more-button", inputs: { label: "label", icon: "icon" }, outputs: { more: "more" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700
|
|
20
|
+
LoadMoreButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadMoreButtonComponent, selector: "sfc-load-more-button", inputs: { label: "label", icon: "icon" }, outputs: { more: "more" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700}:host .container .button:hover{color:#ffce54}\n"], dependencies: [{ kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i2.MouseDownDirective, selector: "[sfcMouseDown]", inputs: ["button"], outputs: ["sfcMouseDown"] }, { kind: "component", type: i3.DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
|
|
21
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreButtonComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
|
-
args: [{ selector: 'sfc-load-more-button', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700
|
|
23
|
+
args: [{ selector: 'sfc-load-more-button', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700}:host .container .button:hover{color:#ffce54}\n"] }]
|
|
24
24
|
}], propDecorators: { label: [{
|
|
25
25
|
type: Input
|
|
26
26
|
}], icon: [{
|
|
@@ -85,10 +85,10 @@ export class PaginationComponent {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationComponent, deps: [{ token: i1.PaginationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
88
|
-
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PaginationComponent, selector: "sfc-pagination", inputs: { count: "count", full: "full", limits: "limits", page: "page", total: "total", size: "size" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i4.ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }, { kind: "component", type: i5.DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
|
|
88
|
+
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PaginationComponent, selector: "sfc-pagination", inputs: { count: "count", full: "full", limits: "limits", page: "page", total: "total", size: "size" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:1em;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i4.ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }, { kind: "component", type: i5.DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
|
|
89
89
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
90
90
|
type: Component,
|
|
91
|
-
args: [{ selector: 'sfc-pagination', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"] }]
|
|
91
|
+
args: [{ selector: 'sfc-pagination', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:1em;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"] }]
|
|
92
92
|
}], ctorParameters: function () { return [{ type: i1.PaginationService }]; }, propDecorators: { count: [{
|
|
93
93
|
type: Input
|
|
94
94
|
}], full: [{
|
|
@@ -12,6 +12,7 @@ export class TagComponent {
|
|
|
12
12
|
key: CommonConstants.DEFAULT_KEY_VALUE,
|
|
13
13
|
label: TagConstants.DEFAULT_LABEL
|
|
14
14
|
};
|
|
15
|
+
// eslint-disable-next-line @angular-eslint/no-output-rename
|
|
15
16
|
this.removeAction = new EventEmitter();
|
|
16
17
|
this.disabled = false;
|
|
17
18
|
}
|
|
@@ -22,10 +23,10 @@ export class TagComponent {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
TagComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
TagComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TagComponent, selector: "sfc-tag", inputs: { model: "model", disabled: "disabled" }, outputs: { removeAction: "remove" }, host: { listeners: { "click": "_onClick()" }, properties: { "class.disabled": "this.disabled" } }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <sfc-icon [icon]=\"model.icon\" [imageSrc]=\"model.imageSrc\"></sfc-icon>\r\n <span>{{model.label}}</span>\r\n <sfc-close *ngIf=\"model.allowRemove\" (click)=\"onRemove()\"></sfc-close>\r\n </div>\r\n</div>", styles: [":host{cursor:default;-webkit-user-select:none;user-select:none;display:inline-block}:host .container .content{
|
|
26
|
+
TagComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TagComponent, selector: "sfc-tag", inputs: { model: "model", disabled: "disabled" }, outputs: { removeAction: "remove" }, host: { listeners: { "click": "_onClick()" }, properties: { "class.disabled": "this.disabled" } }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <sfc-icon [icon]=\"model.icon\" [imageSrc]=\"model.imageSrc\"></sfc-icon>\r\n <span>{{model.label}}</span>\r\n <sfc-close *ngIf=\"model.allowRemove\" (click)=\"onRemove()\"></sfc-close>\r\n </div>\r\n</div>", styles: [":host{cursor:default;-webkit-user-select:none;user-select:none;display:inline-block}:host .container .content{align-items:center;text-align:center;padding:.3em .8em;display:inline-flex;border-radius:1em;font-weight:700;-webkit-user-select:none;user-select:none;transition:color .5s ease;transition:background-color .5s ease;transition:color .5s ease,background-color .5s ease,border-color .5s ease;border:.125em solid transparent}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{color:#fff}:host-context(.sfc-dark-theme) :host .container .content{color:#545e61}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{background-color:#545e61}:host-context(.sfc-dark-theme) :host .container .content{background-color:#fff}:host .container .content sfc-icon{margin-right:.2em}:host .container .content sfc-icon ::ng-deep .container img{max-width:1em;max-height:1em}:host .container .content sfc-close{margin-left:.6em;color:#ed5565;font-size:.8em}:host:hover .container .content{background-color:#ffce54;color:#fff}:host.disabled .container .content{pointer-events:none;transition:color .5s ease;transition:background-color .5s ease}:host.disabled .container .content,:host-context(.sfc-default-theme) :host.disabled .container .content{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container .content{color:#e9e9e9}:host.disabled .container .content,:host-context(.sfc-default-theme) :host.disabled .container .content{background-color:#f6f6f6}:host-context(.sfc-dark-theme) :host.disabled .container .content{background-color:#656d78}:host.disabled .container .content sfc-close{transition:color .5s ease}:host.disabled .container .content sfc-close,:host-context(.sfc-default-theme) :host.disabled .container .content sfc-close{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container .content sfc-close{color:#656d78}:host.disabled:hover .container .content{background-color:initial}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CloseComponent, selector: "sfc-close" }, { kind: "component", type: i3.IconComponent, selector: "sfc-icon", inputs: ["icon", "imageSrc"] }] });
|
|
26
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TagComponent, decorators: [{
|
|
27
28
|
type: Component,
|
|
28
|
-
args: [{ selector: 'sfc-tag', template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <sfc-icon [icon]=\"model.icon\" [imageSrc]=\"model.imageSrc\"></sfc-icon>\r\n <span>{{model.label}}</span>\r\n <sfc-close *ngIf=\"model.allowRemove\" (click)=\"onRemove()\"></sfc-close>\r\n </div>\r\n</div>", styles: [":host{cursor:default;-webkit-user-select:none;user-select:none;display:inline-block}:host .container .content{
|
|
29
|
+
args: [{ selector: 'sfc-tag', template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <sfc-icon [icon]=\"model.icon\" [imageSrc]=\"model.imageSrc\"></sfc-icon>\r\n <span>{{model.label}}</span>\r\n <sfc-close *ngIf=\"model.allowRemove\" (click)=\"onRemove()\"></sfc-close>\r\n </div>\r\n</div>", styles: [":host{cursor:default;-webkit-user-select:none;user-select:none;display:inline-block}:host .container .content{align-items:center;text-align:center;padding:.3em .8em;display:inline-flex;border-radius:1em;font-weight:700;-webkit-user-select:none;user-select:none;transition:color .5s ease;transition:background-color .5s ease;transition:color .5s ease,background-color .5s ease,border-color .5s ease;border:.125em solid transparent}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{color:#fff}:host-context(.sfc-dark-theme) :host .container .content{color:#545e61}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{background-color:#545e61}:host-context(.sfc-dark-theme) :host .container .content{background-color:#fff}:host .container .content sfc-icon{margin-right:.2em}:host .container .content sfc-icon ::ng-deep .container img{max-width:1em;max-height:1em}:host .container .content sfc-close{margin-left:.6em;color:#ed5565;font-size:.8em}:host:hover .container .content{background-color:#ffce54;color:#fff}:host.disabled .container .content{pointer-events:none;transition:color .5s ease;transition:background-color .5s ease}:host.disabled .container .content,:host-context(.sfc-default-theme) :host.disabled .container .content{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container .content{color:#e9e9e9}:host.disabled .container .content,:host-context(.sfc-default-theme) :host.disabled .container .content{background-color:#f6f6f6}:host-context(.sfc-dark-theme) :host.disabled .container .content{background-color:#656d78}:host.disabled .container .content sfc-close{transition:color .5s ease}:host.disabled .container .content sfc-close,:host-context(.sfc-default-theme) :host.disabled .container .content sfc-close{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container .content sfc-close{color:#656d78}:host.disabled:hover .container .content{background-color:initial}\n"] }]
|
|
29
30
|
}], propDecorators: { model: [{
|
|
30
31
|
type: Input
|
|
31
32
|
}], removeAction: [{
|
|
@@ -40,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
40
41
|
type: HostListener,
|
|
41
42
|
args: ['click']
|
|
42
43
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZmMtY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy90YWcvdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZmMtY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy90YWcvdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBUS9DLE1BQU0sT0FBTyxZQUFZO0lBTHpCO1FBUUUsVUFBSyxHQUFjO1lBQ2pCLEdBQUcsRUFBRSxlQUFlLENBQUMsaUJBQWlCO1lBQ3RDLEtBQUssRUFBRSxZQUFZLENBQUMsYUFBYTtTQUNsQyxDQUFDO1FBRUYsNERBQTREO1FBRTVELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUk3QyxhQUFRLEdBQVksS0FBSyxDQUFDO0tBUTNCO0lBTFMsUUFBUSxLQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1FBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6RSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7O3lHQXJCVSxZQUFZOzZGQUFaLFlBQVkseU9DWHpCLHFTQU1NOzJGREtPLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsU0FBUzs4QkFPbkIsS0FBSztzQkFESixLQUFLO2dCQVFOLFlBQVk7c0JBRFgsTUFBTTt1QkFBQyxRQUFRO2dCQUtoQixRQUFRO3NCQUZQLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsU0FBUyxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUloQyxRQUFRO3NCQURmLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFVJQ2xhc3MgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IFRhZ0NvbnN0YW50cyB9IGZyb20gJy4vdGFnLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IElUYWdNb2RlbCB9IGZyb20gJy4vdGFnLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ZjLXRhZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFnLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhZ0NvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbW9kZWw6IElUYWdNb2RlbCA9IHtcclxuICAgIGtleTogQ29tbW9uQ29uc3RhbnRzLkRFRkFVTFRfS0VZX1ZBTFVFLFxyXG4gICAgbGFiZWw6IFRhZ0NvbnN0YW50cy5ERUZBVUxUX0xBQkVMXHJcbiAgfTtcclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXHJcbiAgQE91dHB1dCgncmVtb3ZlJylcclxuICByZW1vdmVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElUYWdNb2RlbD4oKTtcclxuXHJcbiAgQElucHV0KClcclxuICBASG9zdEJpbmRpbmcoYGNsYXNzLiR7VUlDbGFzcy5EaXNhYmxlZH1gKVxyXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcclxuICBwcml2YXRlIF9vbkNsaWNrKCk6IHZvaWQgeyBpZiAodGhpcy5tb2RlbC5jbGljaykgdGhpcy5tb2RlbC5jbGljayh0aGlzLm1vZGVsKTsgfVxyXG5cclxuICBwdWJsaWMgb25SZW1vdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUFjdGlvbi5lbWl0KHRoaXMubW9kZWwpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxyXG4gICAgICAgIDxzZmMtaWNvbiBbaWNvbl09XCJtb2RlbC5pY29uXCIgW2ltYWdlU3JjXT1cIm1vZGVsLmltYWdlU3JjXCI+PC9zZmMtaWNvbj5cclxuICAgICAgICA8c3Bhbj57e21vZGVsLmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgPHNmYy1jbG9zZSAqbmdJZj1cIm1vZGVsLmFsbG93UmVtb3ZlXCIgKGNsaWNrKT1cIm9uUmVtb3ZlKClcIj48L3NmYy1jbG9zZT5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
@@ -5,7 +5,9 @@ CommonConstants.EMPTY_STRING = '';
|
|
|
5
5
|
CommonConstants.DEFAULT_KEY_VALUE = 0;
|
|
6
6
|
CommonConstants.MOUSE_BUTTON_LEFT = 0;
|
|
7
7
|
CommonConstants.FULL_PERCENTAGE = 100;
|
|
8
|
+
CommonConstants.LOW_PERCENTAGE = 0;
|
|
8
9
|
CommonConstants.COMMON_TEXT_DELIMETER = '/';
|
|
9
10
|
CommonConstants.PERCENTAGE_SYMBOL = '%';
|
|
10
11
|
CommonConstants.DOT = '.';
|
|
11
|
-
|
|
12
|
+
CommonConstants.ASTERISK = '*';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZmMtY29tbW9uL3NyYy9saWIvY29uc3RhbnRzL2NvbW1vbi5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGVBQWU7O0FBQ2pCLCtCQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckIsNEJBQVksR0FBRyxFQUFFLENBQUM7QUFDbEIsaUNBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLGlDQUFpQixHQUFHLENBQUMsQ0FBQztBQUN0QiwrQkFBZSxHQUFHLEdBQUcsQ0FBQztBQUN0Qiw4QkFBYyxHQUFHLENBQUMsQ0FBQztBQUNuQixxQ0FBcUIsR0FBRyxHQUFHLENBQUM7QUFDNUIsaUNBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLG1CQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ1Ysd0JBQVEsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ29tbW9uQ29uc3RhbnRzIHtcclxuICAgIHN0YXRpYyBOT1RfRk9VTkRfSU5ERVggPSAtMTtcclxuICAgIHN0YXRpYyBFTVBUWV9TVFJJTkcgPSAnJztcclxuICAgIHN0YXRpYyBERUZBVUxUX0tFWV9WQUxVRSA9IDA7XHJcbiAgICBzdGF0aWMgTU9VU0VfQlVUVE9OX0xFRlQgPSAwO1xyXG4gICAgc3RhdGljIEZVTExfUEVSQ0VOVEFHRSA9IDEwMDtcclxuICAgIHN0YXRpYyBMT1dfUEVSQ0VOVEFHRSA9IDA7XHJcbiAgICBzdGF0aWMgQ09NTU9OX1RFWFRfREVMSU1FVEVSID0gJy8nO1xyXG4gICAgc3RhdGljIFBFUkNFTlRBR0VfU1lNQk9MID0gJyUnO1xyXG4gICAgc3RhdGljIERPVCA9ICcuJztcclxuICAgIHN0YXRpYyBBU1RFUklTSyA9ICcqJztcclxufSJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export var Color;
|
|
2
|
+
(function (Color) {
|
|
3
|
+
// white
|
|
4
|
+
Color["White_0"] = "#fff";
|
|
5
|
+
Color["White_1"] = "#e6e9ed";
|
|
6
|
+
// grey
|
|
7
|
+
Color["Grey_0"] = "#ccd1d9";
|
|
8
|
+
Color["Grey_1"] = "#aab2bd";
|
|
9
|
+
Color["Grey_2"] = "#656d78";
|
|
10
|
+
// black
|
|
11
|
+
Color["Black_0"] = "#34323d";
|
|
12
|
+
Color["Black_1"] = "#1b1d1f";
|
|
13
|
+
Color["Black_2"] = "#000";
|
|
14
|
+
// red
|
|
15
|
+
Color["Red_0"] = "#ed5565";
|
|
16
|
+
Color["Red_1"] = "#da4453";
|
|
17
|
+
// orange
|
|
18
|
+
Color["Orange_0"] = "#fc6e51";
|
|
19
|
+
Color["Orange_1"] = "#e9573f";
|
|
20
|
+
// yellow
|
|
21
|
+
Color["Yellow_0"] = "#ffce54";
|
|
22
|
+
Color["Yellow_1"] = "#fcbb42";
|
|
23
|
+
Color["Yellow_2"] = "#f8e976";
|
|
24
|
+
// green
|
|
25
|
+
Color["Green_0"] = "#a0d468";
|
|
26
|
+
Color["Green_1"] = "#8cc152";
|
|
27
|
+
Color["Green_2"] = "#48cfad";
|
|
28
|
+
Color["Green_3"] = "#37bc9b";
|
|
29
|
+
Color["Green_4"] = "#2bbbad";
|
|
30
|
+
// blue
|
|
31
|
+
Color["Blue_0"] = "#4fc1e9";
|
|
32
|
+
Color["Blue_1"] = "#3bafda";
|
|
33
|
+
Color["Blue_2"] = "#5d9cec";
|
|
34
|
+
Color["Blue_3"] = "#4a89dc";
|
|
35
|
+
// magenta
|
|
36
|
+
Color["Magenta_0"] = "#ac92ec";
|
|
37
|
+
Color["Magenta_1"] = "#967adc";
|
|
38
|
+
// pink
|
|
39
|
+
Color["Pink_0"] = "#ec87c0";
|
|
40
|
+
Color["Pink_1"] = "#d770ad";
|
|
41
|
+
})(Color || (Color = {}));
|
|
42
|
+
;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZmMtY29tbW9uL3NyYy9saWIvZW51bXMvY29sb3IuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxLQXVDWDtBQXZDRCxXQUFZLEtBQUs7SUFDYixRQUFRO0lBQ1IseUJBQWdCLENBQUE7SUFDaEIsNEJBQW1CLENBQUE7SUFDbkIsT0FBTztJQUNQLDJCQUFrQixDQUFBO0lBQ2xCLDJCQUFrQixDQUFBO0lBQ2xCLDJCQUFrQixDQUFBO0lBQ2xCLFFBQVE7SUFDUiw0QkFBbUIsQ0FBQTtJQUNuQiw0QkFBbUIsQ0FBQTtJQUNuQix5QkFBZ0IsQ0FBQTtJQUNoQixNQUFNO0lBQ04sMEJBQWlCLENBQUE7SUFDakIsMEJBQWlCLENBQUE7SUFDakIsU0FBUztJQUNULDZCQUFvQixDQUFBO0lBQ3BCLDZCQUFvQixDQUFBO0lBQ3BCLFNBQVM7SUFDVCw2QkFBb0IsQ0FBQTtJQUNwQiw2QkFBb0IsQ0FBQTtJQUNwQiw2QkFBb0IsQ0FBQTtJQUNwQixRQUFRO0lBQ1IsNEJBQW1CLENBQUE7SUFDbkIsNEJBQW1CLENBQUE7SUFDbkIsNEJBQW1CLENBQUE7SUFDbkIsNEJBQW1CLENBQUE7SUFDbkIsNEJBQW1CLENBQUE7SUFDbkIsT0FBTztJQUNQLDJCQUFrQixDQUFBO0lBQ2xCLDJCQUFrQixDQUFBO0lBQ2xCLDJCQUFrQixDQUFBO0lBQ2xCLDJCQUFrQixDQUFBO0lBQ2xCLFVBQVU7SUFDViw4QkFBcUIsQ0FBQTtJQUNyQiw4QkFBcUIsQ0FBQTtJQUNyQixPQUFPO0lBQ1AsMkJBQWtCLENBQUE7SUFDbEIsMkJBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQXZDVyxLQUFLLEtBQUwsS0FBSyxRQXVDaEI7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQ29sb3Ige1xyXG4gICAgLy8gd2hpdGVcclxuICAgIFdoaXRlXzAgPSAnI2ZmZicsXHJcbiAgICBXaGl0ZV8xID0gJyNlNmU5ZWQnLFxyXG4gICAgLy8gZ3JleVxyXG4gICAgR3JleV8wID0gJyNjY2QxZDknLFxyXG4gICAgR3JleV8xID0gJyNhYWIyYmQnLFxyXG4gICAgR3JleV8yID0gJyM2NTZkNzgnLFxyXG4gICAgLy8gYmxhY2tcclxuICAgIEJsYWNrXzAgPSAnIzM0MzIzZCcsXHJcbiAgICBCbGFja18xID0gJyMxYjFkMWYnLFxyXG4gICAgQmxhY2tfMiA9ICcjMDAwJyxcclxuICAgIC8vIHJlZFxyXG4gICAgUmVkXzAgPSAnI2VkNTU2NScsXHJcbiAgICBSZWRfMSA9ICcjZGE0NDUzJyxcclxuICAgIC8vIG9yYW5nZVxyXG4gICAgT3JhbmdlXzAgPSAnI2ZjNmU1MScsXHJcbiAgICBPcmFuZ2VfMSA9ICcjZTk1NzNmJyxcclxuICAgIC8vIHllbGxvd1xyXG4gICAgWWVsbG93XzAgPSAnI2ZmY2U1NCcsXHJcbiAgICBZZWxsb3dfMSA9ICcjZmNiYjQyJyxcclxuICAgIFllbGxvd18yID0gJyNmOGU5NzYnLFxyXG4gICAgLy8gZ3JlZW5cclxuICAgIEdyZWVuXzAgPSAnI2EwZDQ2OCcsXHJcbiAgICBHcmVlbl8xID0gJyM4Y2MxNTInLFxyXG4gICAgR3JlZW5fMiA9ICcjNDhjZmFkJyxcclxuICAgIEdyZWVuXzMgPSAnIzM3YmM5YicsXHJcbiAgICBHcmVlbl80ID0gJyMyYmJiYWQnLFxyXG4gICAgLy8gYmx1ZVxyXG4gICAgQmx1ZV8wID0gJyM0ZmMxZTknLFxyXG4gICAgQmx1ZV8xID0gJyMzYmFmZGEnLFxyXG4gICAgQmx1ZV8yID0gJyM1ZDljZWMnLFxyXG4gICAgQmx1ZV8zID0gJyM0YTg5ZGMnLFxyXG4gICAgLy8gbWFnZW50YVxyXG4gICAgTWFnZW50YV8wID0gJyNhYzkyZWMnLFxyXG4gICAgTWFnZW50YV8xID0gJyM5NjdhZGMnLFxyXG4gICAgLy8gcGlua1xyXG4gICAgUGlua18wID0gJyNlYzg3YzAnLFxyXG4gICAgUGlua18xID0gJyNkNzcwYWQnLFxyXG59OyJdfQ==
|
|
@@ -11,4 +11,5 @@ export { State } from './state.enum';
|
|
|
11
11
|
export { NotificationType } from './notification-type.enum';
|
|
12
12
|
export { Select } from './select.enum';
|
|
13
13
|
export { ItemsView } from './items-view.enum';
|
|
14
|
-
|
|
14
|
+
export { Color } from './color.enum';
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbW1vbi9zcmMvbGliL2VudW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvbXBvbmVudFNpemUgfSBmcm9tICcuL3NpemUuZW51bSc7XHJcbmV4cG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJy4vZGlyZWN0aW9uLmVudW0nO1xyXG5leHBvcnQgeyBNZWRpYUxpbWl0cyB9IGZyb20gJy4vbWVkaWEuZW51bSc7XHJcbmV4cG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi9wb3NpdGlvbi5lbnVtJztcclxuZXhwb3J0IHsgU29ydGluZ0RpcmVjdGlvbiB9IGZyb20gJy4vc29ydGluZy1kaXJlY3Rpb24uZW51bSc7XHJcbmV4cG9ydCB7IFRoZW1lIH0gZnJvbSAnLi90aGVtZS5lbnVtJztcclxuZXhwb3J0IHsgVUlDbGFzcyB9IGZyb20gJy4vdWkuZW51bSc7XHJcbmV4cG9ydCB7IFNlcXVlbmNlIH0gZnJvbSAnLi9zZXF1ZW5jZS5lbnVtJztcclxuZXhwb3J0IHsgQ29tcGFyZSB9IGZyb20gJy4vY29tcGFyZS5lbnVtJztcclxuZXhwb3J0IHsgU3RhdGUgfSBmcm9tICcuL3N0YXRlLmVudW0nO1xyXG5leHBvcnQgeyBOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tdHlwZS5lbnVtJztcclxuZXhwb3J0IHsgU2VsZWN0IH0gZnJvbSAnLi9zZWxlY3QuZW51bSc7XHJcbmV4cG9ydCB7IEl0ZW1zVmlldyB9IGZyb20gJy4vaXRlbXMtdmlldy5lbnVtJztcclxuZXhwb3J0IHsgQ29sb3IgfSBmcm9tICcuL2NvbG9yLmVudW0nOyJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { ObservableModel, ObservableBehaviorModel } from './observable.model';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbW1vbi9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBJQ2xhc3NNb2RlbCB9IGZyb20gJy4vY2xhc3MubW9kZWwnO1xyXG5leHBvcnQgeyBJU2VsZWN0TW9kZWwgfSBmcm9tICcuL3NlbGVjdC5tb2RlbCc7XHJcbmV4cG9ydCB7IE9ic2VydmFibGVNb2RlbCwgT2JzZXJ2YWJsZUJlaGF2aW9yTW9kZWwgfSBmcm9tICcuL29ic2VydmFibGUubW9kZWwnO1xyXG5leHBvcnQgeyBJUG9zaXRpb25Nb2RlbCB9IGZyb20gJy4vcG9zaXRpb24ubW9kZWwnOyJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbW1vbi9zcmMvbGliL21vZGVscy9wb3NpdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJUG9zaXRpb25Nb2RlbDxUWCwgVFk+IHtcclxuICAgIHg6IFRYO1xyXG4gICAgeTogVFk7XHJcbn0iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbW1vbi9zcmMvbGliL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBlbXB0eSB9IGZyb20gJy4vZW1wdHkudHlwZSc7XHJcbmV4cG9ydCB7IHByaW1pdGl2ZSB9IGZyb20gJy4vcHJpbWl0aXZlLnR5cGUnOyJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWl0aXZlLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbW1vbi9zcmMvbGliL3R5cGVzL3ByaW1pdGl2ZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBwcmltaXRpdmUgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCB8IHN5bWJvbCB8IGJpZ2ludDsiXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNmYy1jb21tb24vc3JjL2xpYi90eXBlcy9zZWdtZW50LnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHNlZ21lbnQgPSBzdHJpbmcgfCBudW1iZXIgfCBcIipcIjsiXX0=
|
|
@@ -278,6 +278,21 @@ export function updateItemBy(collection, predicate, newItem) {
|
|
|
278
278
|
}
|
|
279
279
|
return null;
|
|
280
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* Toggle item in array
|
|
283
|
+
* @param arr Array of items
|
|
284
|
+
* @param item Item to toggle
|
|
285
|
+
* @returns Toggling result array
|
|
286
|
+
*/
|
|
287
|
+
export function toggleItem(array, item) {
|
|
288
|
+
if (hasItem(array, item)) {
|
|
289
|
+
removeItem(array, item);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
addItem(array, item);
|
|
293
|
+
}
|
|
294
|
+
return array;
|
|
295
|
+
}
|
|
281
296
|
/**
|
|
282
297
|
* Return collection or empty if collection is not defined
|
|
283
298
|
* @param collection Array of items
|
|
@@ -303,4 +318,4 @@ export function isArraysEquals(a, b) {
|
|
|
303
318
|
}
|
|
304
319
|
return true;
|
|
305
320
|
}
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbW1vbi9zcmMvbGliL3V0aWxzL2NvbGxlY3Rpb25zLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBSSxVQUF1QztJQUMxRCxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSyxVQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBSSxVQUFvQixFQUFFLEtBQVE7SUFDckQsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDO1dBQ2YsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsS0FBSyxlQUFlLENBQUMsZUFBZSxDQUFDO0FBQzVGLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUksVUFBb0IsRUFBRSxTQUErQjtJQUM5RSxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLGVBQWUsQ0FBQyxlQUFlLENBQUM7QUFDbEcsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUksVUFBc0IsRUFBRSxvQkFBb0I7QUFDekUsUUFBZ0IsRUFBRSxLQUFRO0lBQzFCLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQztXQUNmLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7ZUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssQ0FBQyxLQUFLLGVBQWUsQ0FBQyxlQUFlLENBQUM7QUFDN0UsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBSSxXQUFnQixFQUFFLFdBQWdCO0lBQzVELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFJLFVBQXVDLEVBQ3JFLFNBQStCO0lBRS9CLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFJLFVBQW9CO0lBQzdDLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUksVUFBb0I7SUFDNUMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBSSxVQUFvQixFQUFFLFNBQStCO0lBQ3hFLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDOUYsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBSSxVQUFvQixFQUFFLFNBQStCO0lBQzFFLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDL0MsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBSSxVQUFvQixFQUFFLFNBQStCO0lBRTFFLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDakUsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxJQUFJLENBQUksVUFBb0IsRUFBRSxJQUFZLEVBQUUsSUFBWTtJQUNwRSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNqQixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDOUIsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDaEQ7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDO0FBRUQsTUFBTSxVQUFVLElBQUksQ0FBSSxVQUFvQixFQUFFLFlBQThCLGdCQUFnQixDQUFDLFNBQVM7SUFDbEcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDakIsT0FBTyxTQUFTLElBQUksZ0JBQWdCLENBQUMsU0FBUztZQUMxQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBSSxVQUFvQixFQUFFLFFBQWdCLEVBQzVELFNBQTJCO0lBQzNCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ2pCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQy9CLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFFLENBQ3ZCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5QyxPQUFPLFNBQVMsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTO1lBQzFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyRTtJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFJLFVBQW9CLEVBQUUsSUFBWSxFQUFFLFNBQTJCO0lBRXpGLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ2pCLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztRQUVuRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO1FBRXZGLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFFckMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDVixPQUFPLENBQUMsR0FBRyxXQUFXLEVBQUU7Z0JBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUFDLENBQUMsRUFBRSxDQUFDO2FBQUU7WUFFMUUsT0FBTyxTQUFTLElBQUksZ0JBQWdCLENBQUMsU0FBUztnQkFDMUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sVUFBVSxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFJLFVBQW9CO0lBQzVDLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNsQixDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQztRQUMxRSxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQUksVUFBb0IsRUFBRSxNQUEyQjtJQUNwRSxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDbEIsQ0FBQyxDQUFDLFVBQVU7YUFDUCxHQUFHLENBQUMsTUFBTSxDQUFDO2FBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBSSxVQUFvQixFQUFFLE1BQTJCO0lBQ3BFLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUUvQyxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUE7QUFDL0UsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFJLFVBQW9CLEVBQUUsU0FBK0I7SUFDM0UsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUMxQixPQUFPLENBQUMsRUFBRSxFQUFFO1FBQ1IsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDM0I7S0FDSjtBQUNMLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFJLFVBQW9CLEVBQUUsSUFBTyxFQUNwRCxZQUEyQyxJQUFJO0lBRS9DLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQ3RCLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBSyxDQUFDO0lBRWhDLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVUsQ0FBQyxJQUFJLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUM7SUFFakIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV0QixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFJLFVBQW9CLEVBQUUsSUFBTztJQUN2RCxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQzlDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQztLQUNmO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBSSxVQUFvQixFQUFFLFNBQStCO0lBQ2pGLE1BQU0sU0FBUyxHQUF5QixjQUFjLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlFLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQ3RCLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztLQUNmO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBSSxVQUFvQixFQUFFLFNBQStCLEVBQUUsT0FBVTtJQUU3RixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWxELElBQUksU0FBUyxLQUFLLGVBQWUsQ0FBQyxlQUFlLEVBQUU7UUFDL0MsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUc7WUFDaEIsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQ3hCLEdBQUcsT0FBTztTQUNiLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQTtLQUNoQjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFJLFVBQW9CO0lBQ3hELE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFJLENBQVcsRUFBRSxDQUFXO0lBQ3RELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXhDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNULENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVULEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQy9CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztLQUNuQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Db25zdGFudHMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tIFwiLi4vZW51bXNcIjtcclxuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSBcIi4vY29tbW9uLnV0aWxzXCI7XHJcbmltcG9ydCB7IGlzTnVsbE9yRW1wdHlTdHJpbmcgfSBmcm9tIFwiLi9zdHJpbmcudXRpbHNcIjtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gdHJ1ZSBpZiBjb2xsZWN0aW9uIG5vdCBlbXB0eVxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcmV0dXJucyBUcnVlIGlmIGNvbGxlY3Rpb24gbm90IGVtcHR5XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYW55PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzRGVmaW5lZChjb2xsZWN0aW9uKSAmJiAoY29sbGVjdGlvbiBhcyBBcnJheTxUPikubGVuZ3RoID4gMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiB0cnVlIGlmIGNvbGxlY3Rpb24gaGFzIHN1Y2ggdmFsdWVcclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGNoZWNrXHJcbiAqIEByZXR1cm5zIFRydWUgaWYgZm91bmQgdmFsdWUgaW4gY29sbGVjdGlvblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhhc0l0ZW08VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHZhbHVlOiBUKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYW55KGNvbGxlY3Rpb24pXHJcbiAgICAgICAgJiYgY29sbGVjdGlvbi5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB2YWx1ZSkgIT09IENvbW1vbkNvbnN0YW50cy5OT1RfRk9VTkRfSU5ERVg7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gdHJ1ZSBpZiBjb2xsZWN0aW9uIGhhcyBzdWNoIHZhbHVlIGJ5IHByZWRpY2F0ZSBmdW5jdGlvblxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcGFyYW0gcHJlZGljYXRlIEZ1bmN0aW9uIHRvIGRlZmluZSBjaGVjayBsb2dpY1xyXG4gKiBAcmV0dXJucyBUcnVlIGlmIGZvdW5kIHZhbHVlIGluIGNvbGxlY3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoYXNJdGVtQnk8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHByZWRpY2F0ZTogKGl0ZW06IFQpID0+IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBhbnkoY29sbGVjdGlvbikgJiYgY29sbGVjdGlvbi5maW5kSW5kZXgocHJlZGljYXRlKSAhPT0gQ29tbW9uQ29uc3RhbnRzLk5PVF9GT1VORF9JTkRFWDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiB0cnVlIGlmIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBoYXMgc3VjaCB2YWx1ZSBhcyBvYmplY3RcclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2Ygb2JqZWN0c1xyXG4gKiBAcGFyYW0gcHJvcGVydHkgUHJvcGVydHkgbmFtZVxyXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcclxuICogQHJldHVybnMgVHJ1ZSBpZiBmb3VuZCB2YWx1ZSBpbiBjb2xsZWN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaGFzT2JqZWN0SXRlbTxUPihjb2xsZWN0aW9uOiBBcnJheTxhbnk+LCAvLyBUT0RPIDwtLSBBcnJheTxUPlxyXG4gICAgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IFQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBhbnkoY29sbGVjdGlvbilcclxuICAgICAgICAmJiBjb2xsZWN0aW9uLmZpbmRJbmRleChpdGVtID0+XHJcbiAgICAgICAgICAgIGl0ZW0uaGFzT3duUHJvcGVydHkocHJvcGVydHkpXHJcbiAgICAgICAgICAgICYmIGl0ZW1bcHJvcGVydHldID09PSB2YWx1ZSkgIT09IENvbW1vbkNvbnN0YW50cy5OT1RfRk9VTkRfSU5ERVg7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gdHJ1ZSBpZiBmaXJzdCBjb2xsZWN0aW9uIGhhcyBpdGVtIGluIHNlY29uZCBjb2xsZWN0aW9uXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uMSBBcnJheSBvZiBvYmplY3RzIHdoZXJlIHNlYXJjaFxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbjIgQXJyYXkgb2Ygb2JqZWN0cyB3aGVyZSB0cnkgdG8gZmluZFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoYXNBbnlJdGVtPFQ+KGNvbGxlY3Rpb24xOiBUW10sIGNvbGxlY3Rpb24yOiBUW10pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb2xsZWN0aW9uMS5zb21lKGl0ZW0gPT4gY29sbGVjdGlvbjIuaW5jbHVkZXMoaXRlbSkpO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIHZhbHVlIGZyb20gY29sbGVjdGlvbiBieSBwcmVkaWNhdGUgZnVuY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHBhcmFtIHByZWRpY2F0ZSBGdW5jdGlvbiB0byBkZWZpbmUgc2VhcmNoIGxvZ2ljXHJcbiAqIEByZXR1cm5zIFZhbHVlIGZyb20gY29sbGVjdGlvblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZpcnN0T3JEZWZhdWx0PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+IHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgIHByZWRpY2F0ZTogKGl0ZW06IFQpID0+IGJvb2xlYW4pXHJcbiAgICA6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIGFueShjb2xsZWN0aW9uKSA/IGNvbGxlY3Rpb24/LmZpbmQocHJlZGljYXRlKSA6IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBmaXJzdCBpdGVtIGZyb20gY29sbGVjdGlvblxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcmV0dXJucyBGaXJzdCB2YWx1ZSBmcm9tIGNvbGxlY3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBmaXJzdEl0ZW08VD4oY29sbGVjdGlvbjogQXJyYXk8VD4pOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gYW55KGNvbGxlY3Rpb24pID8gY29sbGVjdGlvblswXSA6IG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gbGFzdCBpdGVtIGZyb20gY29sbGVjdGlvblxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcmV0dXJucyBMYXN0IHZhbHVlIGZyb20gY29sbGVjdGlvblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGxhc3RJdGVtPFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+KTogVCB8IG51bGwgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIGFueShjb2xsZWN0aW9uKSA/IGNvbGxlY3Rpb25bY29sbGVjdGlvbi5sZW5ndGggLSAxXSA6IG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gVHJ1ZSBpZiBhbGwgdmFsdWVzIG1hdGNoIHByZWRpY2F0ZSBmdW5jdGlvblxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBvYmplY3RzXHJcbiAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gdG8gZGVmaW5lIGNoZWNrIGxvZ2ljXHJcbiAqIEByZXR1cm5zIFRydWUgaWYgYWxsIHZhbHVlcyBtYXRjaCBwcmVkaWNhdGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhbGw8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHByZWRpY2F0ZTogKGl0ZW06IFQpID0+IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBhbnkoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uLmZpbHRlcihwcmVkaWNhdGUpLmxlbmd0aCA9PSBjb2xsZWN0aW9uLmxlbmd0aCA6IGZhbHNlO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIGNvdW50IGJ5IHByZWRpY2F0ZVxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBvYmplY3RzXHJcbiAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gdG8gZGVmaW5lIGNoZWNrIGxvZ2ljXHJcbiAqIEByZXR1cm5zIEl0ZW1zIGNvdW50XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY291bnQ8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHByZWRpY2F0ZTogKGl0ZW06IFQpID0+IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGNvbGxlY3Rpb24uZmlsdGVyKHByZWRpY2F0ZSkubGVuZ3RoO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIGl0ZW1zIGZyb20gY29sbGVjdGlvbiBieSBwcmVkaWNhdGUgZnVuY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHBhcmFtIHByZWRpY2F0ZSBGdW5jdGlvbiB0byBkZWZpbmUgc2VhcmNoIGxvZ2ljXHJcbiAqIEByZXR1cm5zIFZhbHVlcyBmcm9tIGNvbGxlY3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB3aGVyZTxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiwgcHJlZGljYXRlOiAoaXRlbTogVCkgPT4gYm9vbGVhbilcclxuICAgIDogQXJyYXk8VD4gfCBudWxsIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBhbnkoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uLmZpbHRlcihwcmVkaWNhdGUpIDogbnVsbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBzbGljZWQgY29sbGVjdGlvbiBieSBwYWdlIG51bWJlciBhbmQgcGFnZSBzaXplXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBwYWdlIFBhZ2UgbnVtYmVyXHJcbiAqIEBwYXJhbSBzaXplIFBhZ2Ugc2l6ZVxyXG4gKiBAcmV0dXJucyBTbGljZWQgY29sbGVjdGlvblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNraXA8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHBhZ2U6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogQXJyYXk8VD4ge1xyXG4gICAgaWYgKGFueShjb2xsZWN0aW9uKSkge1xyXG4gICAgICAgIGxldCBzdGFydCA9IChwYWdlIC0gMSkgKiBzaXplO1xyXG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNsaWNlKHN0YXJ0LCBzdGFydCArIHNpemUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2xsZWN0aW9uO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc29ydDxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiwgZGlyZWN0aW9uOiBTb3J0aW5nRGlyZWN0aW9uID0gU29ydGluZ0RpcmVjdGlvbi5Bc2NlbmRpbmcpOiBBcnJheTxUPiB7XHJcbiAgICBpZiAoYW55KGNvbGxlY3Rpb24pKSB7XHJcbiAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTb3J0aW5nRGlyZWN0aW9uLkFzY2VuZGluZ1xyXG4gICAgICAgICAgICA/IGNvbGxlY3Rpb24uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGEgLSBiKVxyXG4gICAgICAgICAgICA6IGNvbGxlY3Rpb24uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGIgLSBhKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sbGVjdGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBzb3J0ZWQgY29sbGVjdGlvbiBvZiBvYmplY3RzIGJ5IHByb3BlcnR5XHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBwcm9wZXJ0eSBQcm9wZXJ0eSBuYW1lXHJcbiAqIEBwYXJhbSBkaXJlY3Rpb24gU29ydGluZyBkaXJlY3Rpb25cclxuICogQHJldHVybnMgU29ydGVkIGNvbGxlY3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzb3J0Qnk8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHByb3BlcnR5OiBzdHJpbmcsXHJcbiAgICBkaXJlY3Rpb246IFNvcnRpbmdEaXJlY3Rpb24pOiBBcnJheTxUPiB7XHJcbiAgICBpZiAoYW55KGNvbGxlY3Rpb24pKSB7XHJcbiAgICAgICAgbGV0IF9zb3J0RnVuYyA9IChhOiBhbnksIGI6IGFueSkgPT5cclxuICAgICAgICAgICAgKHQxOiBudW1iZXIsIHQyOiBudW1iZXIpID0+XHJcbiAgICAgICAgICAgICAgICAoYVtwcm9wZXJ0eV0gPiBiW3Byb3BlcnR5XSA/IHQxIDogdDIpO1xyXG5cclxuICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFNvcnRpbmdEaXJlY3Rpb24uQXNjZW5kaW5nXHJcbiAgICAgICAgICAgID8gY29sbGVjdGlvbi5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gX3NvcnRGdW5jKGEsIGIpKDEsIC0xKSlcclxuICAgICAgICAgICAgOiBjb2xsZWN0aW9uLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBfc29ydEZ1bmMoYSwgYikoLTEsIDEpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sbGVjdGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBzb3J0ZWQgY29sbGVjdGlvbiBvZiBvYmplY3RzIGJ5IHBhdGhcclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHBhcmFtIHBhdGggUGF0aCB0byBwcm9wZXJ0eVxyXG4gKiBAcGFyYW0gZGlyZWN0aW9uIFNvcnRpbmcgZGlyZWN0aW9uXHJcbiAqIEByZXR1cm5zIFNvcnRlZCBjb2xsZWN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc29ydEJ5UGF0aDxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiwgcGF0aDogc3RyaW5nLCBkaXJlY3Rpb246IFNvcnRpbmdEaXJlY3Rpb24pXHJcbiAgICA6IEFycmF5PFQ+IHtcclxuICAgIGlmIChhbnkoY29sbGVjdGlvbikpIHtcclxuICAgICAgICBpZiAoaXNOdWxsT3JFbXB0eVN0cmluZyhwYXRoKSlcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2xsZWN0aW9uIHV0aWxzIHwgU29ydCBCeSBQYXRoIGZ1bmN0aW9uIC0tPiBQYXRoIGlzIGVtcHR5LicpO1xyXG5cclxuICAgICAgICBjb25zdCBwYXRoUGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XHJcblxyXG4gICAgICAgIGlmICghYW55KHBhdGhQYXJ0cykpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29sbGVjdGlvbiB1dGlscyB8IFNvcnQgQnkgUGF0aCBmdW5jdGlvbiAtLT4gUGF0aCBpcyBpbmNvcnJlY3QuJyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcnRzTGVuZ3RoID0gcGF0aFBhcnRzLmxlbmd0aDtcclxuXHJcbiAgICAgICAgY29sbGVjdGlvbi5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgaSA9IDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChpIDwgcGFydHNMZW5ndGgpIHsgYSA9IGFbcGF0aFBhcnRzW2ldXTsgYiA9IGJbcGF0aFBhcnRzW2ldXTsgaSsrOyB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFNvcnRpbmdEaXJlY3Rpb24uQXNjZW5kaW5nXHJcbiAgICAgICAgICAgICAgICA/IGEgPj0gYiA/IDEgOiAtMVxyXG4gICAgICAgICAgICAgICAgOiBhID4gYiA/IC0xIDogMTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gY29sbGVjdGlvbiB3aXRob3V0IG1hdGNoZXNcclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHJldHVybnMgQ29sbGVjdGlvbiB3aXRob3V0IG1hdGNoZXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkaXN0aW5jdDxUPihjb2xsZWN0aW9uOiBBcnJheTxUPik6IEFycmF5PFQ+IHtcclxuICAgIHJldHVybiBhbnkoY29sbGVjdGlvbilcclxuICAgICAgICA/IGNvbGxlY3Rpb24uZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4KVxyXG4gICAgICAgIDogY29sbGVjdGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBzdW0gdmFsdWUgZnJvbSBjb2xsZWN0aW9uIGl0ZW1zIGJ5IG1hcCBmdW5jdGlvblxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcGFyYW0gc2VsZWN0IE1hcCBmdW5jdGlvblxyXG4gKiBAcmV0dXJucyBTdW0gdmFsdWUgb2YgY29sZWN0aW9uIGl0ZW1zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc3VtPFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBzZWxlY3Q6IChpdGVtOiBUKSA9PiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGFueShjb2xsZWN0aW9uKVxyXG4gICAgICAgID8gY29sbGVjdGlvblxyXG4gICAgICAgICAgICAubWFwKHNlbGVjdClcclxuICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4geyByZXR1cm4gYSArIGIgfSwgMClcclxuICAgICAgICA6IDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gbWF4IHZhbHVlIGZyb20gY29sbGVjdGlvbiBpdGVtcyBieSBtYXAgZnVuY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHBhcmFtIHNlbGVjdCBNYXAgZnVuY3Rpb25cclxuICogQHJldHVybnMgTWF4IHZhbHVlIG9mIGNvbGxlY3Rpb24gaXRlbXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXg8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHNlbGVjdDogKGl0ZW06IFQpID0+IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBpZiAoYW55KGNvbGxlY3Rpb24pKVxyXG4gICAgICAgIHJldHVybiBNYXRoLm1heCguLi5jb2xsZWN0aW9uLm1hcChzZWxlY3QpKTtcclxuXHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbGxlY3Rpb24gdXRpbHMgfCBNYXggZnVuY3Rpb24gLS0+IENvbGxlY3Rpb24gaXMgZW1wdHkuJylcclxufVxyXG5cclxuLyoqXHJcbiAqIERlbGV0ZSBpdGVtcyBmcm9tIGNvbGxlY3Rpb24gYnkgcHJlZGljYXRlXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gdG8gZGVmaW5lIHJlbW92ZSBsb2dpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZTxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiwgcHJlZGljYXRlOiAoaXRlbTogVCkgPT4gYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdmFyIGkgPSBjb2xsZWN0aW9uLmxlbmd0aDtcclxuICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICBpZiAocHJlZGljYXRlKGNvbGxlY3Rpb25baV0pKSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24uc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCBpdGVtIHRvIGNvbGxlY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHBhcmFtIGl0ZW0gTmV3IGl0ZW1cclxuICogQHBhcmFtIHByZWRpY2F0ZSBGdW5jdGlvbiB0byBkZWZpbmUgaWYgYWxsb3dlZCB0byBhZGQgbmV3IGl0ZW1cclxuICogQHJldHVybnMgVHJ1ZSBpZiBzdWNjZXNzZnVsbHkgYWRkZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRJdGVtPFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBpdGVtOiBULFxyXG4gICAgcHJlZGljYXRlOiAoKGl0ZW06IFQpID0+IGJvb2xlYW4pIHwgbnVsbCA9IG51bGwpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAoIWlzRGVmaW5lZChjb2xsZWN0aW9uKSlcclxuICAgICAgICBjb2xsZWN0aW9uID0gbmV3IEFycmF5PFQ+KCk7XHJcblxyXG4gICAgaWYgKGlzRGVmaW5lZChwcmVkaWNhdGUpICYmIHByZWRpY2F0ZSEoaXRlbSkpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbGxlY3Rpb24ucHVzaChpdGVtKTtcclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERlbGV0ZSBpdGVtIGZyb20gY29sbGVjdGlvblxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGRlbGV0ZVxyXG4gKiBAcmV0dXJucyBUcnVlIGlmIHN1Y2Nlc3NmdWxseSByZW1vdmVkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlSXRlbTxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiwgaXRlbTogVCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGlzRGVmaW5lZChpdGVtKSAmJiBoYXNJdGVtKGNvbGxlY3Rpb24sIGl0ZW0pKSB7XHJcbiAgICAgICAgY29sbGVjdGlvbi5zcGxpY2UoY29sbGVjdGlvbi5pbmRleE9mKGl0ZW0pLCAxKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZWxldGUgaXRlbSBmcm9tIGNvbGxlY3Rpb24gYnkgcHJlZGljYXRlXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gdG8gZGVmaW5lIHJlbW92ZSBsb2dpY1xyXG4gKiBAcmV0dXJucyBUcnVlIGlmIHN1Y2Nlc3NmdWxseSByZW1vdmVkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlSXRlbUJ5PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmb3VuZEl0ZW06IFQgfCBudWxsIHwgdW5kZWZpbmVkID0gZmlyc3RPckRlZmF1bHQoY29sbGVjdGlvbiwgcHJlZGljYXRlKTtcclxuICAgIGlmIChpc0RlZmluZWQoZm91bmRJdGVtKSkge1xyXG4gICAgICAgIGNvbGxlY3Rpb24uc3BsaWNlKGNvbGxlY3Rpb24uaW5kZXhPZihmb3VuZEl0ZW0gYXMgVCksIDEpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFVwZGF0ZSBpdGVtIGluIGNvbGxlY3Rpb24gYnkgcHJlZGljYXRlXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gdG8gZGVmaW5lIGl0ZW0gZm9yIGRlbGV0aW5nXHJcbiAqIEByZXR1cm5zIFRydWUgaWYgc3VjY2Vzc2Z1bGx5IHJlbW92ZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVJdGVtQnk8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHByZWRpY2F0ZTogKGl0ZW06IFQpID0+IGJvb2xlYW4sIG5ld0l0ZW06IFQpXHJcbiAgICA6IEFycmF5PFQ+IHwgbnVsbCB7XHJcbiAgICBjb25zdCBpdGVtSW5kZXggPSBjb2xsZWN0aW9uLmZpbmRJbmRleChwcmVkaWNhdGUpO1xyXG5cclxuICAgIGlmIChpdGVtSW5kZXggIT09IENvbW1vbkNvbnN0YW50cy5OT1RfRk9VTkRfSU5ERVgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBjb2xsZWN0aW9uLnNsaWNlKDApO1xyXG4gICAgICAgIHJlc3VsdFtpdGVtSW5kZXhdID0ge1xyXG4gICAgICAgICAgICAuLi5jb2xsZWN0aW9uW2l0ZW1JbmRleF0sXHJcbiAgICAgICAgICAgIC4uLm5ld0l0ZW1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiByZXN1bHRcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBjb2xsZWN0aW9uIG9yIGVtcHR5IGlmIGNvbGxlY3Rpb24gaXMgbm90IGRlZmluZWRcclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHJldHVybnMgQ29sbGVjdGlvbiBvciBlbXB0eVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbGxlY3Rpb25PckVtcHR5PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+KTogQXJyYXk8VD4ge1xyXG4gICAgcmV0dXJuIGlzRGVmaW5lZChjb2xsZWN0aW9uKSA/IGNvbGxlY3Rpb24gOiBbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIGFycmF5cyBhcmUgZXF1YWxcclxuICogQHBhcmFtIGEgRmlyc3QgYXJyYXlcclxuICogQHBhcmFtIGIgU2Vjb25kIGFycmF5XHJcbiAqIEByZXR1cm5zIFRydWUgaWYgYXJyYXlzIGFyZSBlcXVhbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXlzRXF1YWxzPFQ+KGE6IEFycmF5PFQ+LCBiOiBBcnJheTxUPik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGEuc29ydCgpO1xyXG4gICAgYi5zb3J0KCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufSJdfQ==
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbW1vbi9zcmMvbGliL3V0aWxzL2NvbGxlY3Rpb25zLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBSSxVQUF1QztJQUMxRCxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSyxVQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBSSxVQUFvQixFQUFFLEtBQVE7SUFDckQsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDO1dBQ2YsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsS0FBSyxlQUFlLENBQUMsZUFBZSxDQUFDO0FBQzVGLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUksVUFBb0IsRUFBRSxTQUErQjtJQUM5RSxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLGVBQWUsQ0FBQyxlQUFlLENBQUM7QUFDbEcsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUksVUFBc0IsRUFBRSxvQkFBb0I7QUFDekUsUUFBZ0IsRUFBRSxLQUFRO0lBQzFCLE9BQU8s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QUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7S0FDbkM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uQ29uc3RhbnRzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSBcIi4uL2VudW1zXCI7XHJcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gXCIuL2NvbW1vbi51dGlsc1wiO1xyXG5pbXBvcnQgeyBpc051bGxPckVtcHR5U3RyaW5nIH0gZnJvbSBcIi4vc3RyaW5nLnV0aWxzXCI7XHJcblxyXG4vKipcclxuICogUmV0dXJuIHRydWUgaWYgY29sbGVjdGlvbiBub3QgZW1wdHlcclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHJldHVybnMgVHJ1ZSBpZiBjb2xsZWN0aW9uIG5vdCBlbXB0eVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFueTxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpc0RlZmluZWQoY29sbGVjdGlvbikgJiYgKGNvbGxlY3Rpb24gYXMgQXJyYXk8VD4pLmxlbmd0aCA+IDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gdHJ1ZSBpZiBjb2xsZWN0aW9uIGhhcyBzdWNoIHZhbHVlXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBjaGVja1xyXG4gKiBAcmV0dXJucyBUcnVlIGlmIGZvdW5kIHZhbHVlIGluIGNvbGxlY3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoYXNJdGVtPFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCB2YWx1ZTogVCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGFueShjb2xsZWN0aW9uKVxyXG4gICAgICAgICYmIGNvbGxlY3Rpb24uZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdmFsdWUpICE9PSBDb21tb25Db25zdGFudHMuTk9UX0ZPVU5EX0lOREVYO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIHRydWUgaWYgY29sbGVjdGlvbiBoYXMgc3VjaCB2YWx1ZSBieSBwcmVkaWNhdGUgZnVuY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHBhcmFtIHByZWRpY2F0ZSBGdW5jdGlvbiB0byBkZWZpbmUgY2hlY2sgbG9naWNcclxuICogQHJldHVybnMgVHJ1ZSBpZiBmb3VuZCB2YWx1ZSBpbiBjb2xsZWN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaGFzSXRlbUJ5PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYW55KGNvbGxlY3Rpb24pICYmIGNvbGxlY3Rpb24uZmluZEluZGV4KHByZWRpY2F0ZSkgIT09IENvbW1vbkNvbnN0YW50cy5OT1RfRk9VTkRfSU5ERVg7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gdHJ1ZSBpZiBjb2xsZWN0aW9uIG9mIG9iamVjdHMgaGFzIHN1Y2ggdmFsdWUgYXMgb2JqZWN0XHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIG9iamVjdHNcclxuICogQHBhcmFtIHByb3BlcnR5IFByb3BlcnR5IG5hbWVcclxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGNoZWNrXHJcbiAqIEByZXR1cm5zIFRydWUgaWYgZm91bmQgdmFsdWUgaW4gY29sbGVjdGlvblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhhc09iamVjdEl0ZW08VD4oY29sbGVjdGlvbjogQXJyYXk8YW55PiwgLy8gVE9ETyA8LS0gQXJyYXk8VD5cclxuICAgIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBUKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYW55KGNvbGxlY3Rpb24pXHJcbiAgICAgICAgJiYgY29sbGVjdGlvbi5maW5kSW5kZXgoaXRlbSA9PlxyXG4gICAgICAgICAgICBpdGVtLmhhc093blByb3BlcnR5KHByb3BlcnR5KVxyXG4gICAgICAgICAgICAmJiBpdGVtW3Byb3BlcnR5XSA9PT0gdmFsdWUpICE9PSBDb21tb25Db25zdGFudHMuTk9UX0ZPVU5EX0lOREVYO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIHRydWUgaWYgZmlyc3QgY29sbGVjdGlvbiBoYXMgaXRlbSBpbiBzZWNvbmQgY29sbGVjdGlvblxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbjEgQXJyYXkgb2Ygb2JqZWN0cyB3aGVyZSBzZWFyY2hcclxuICogQHBhcmFtIGNvbGxlY3Rpb24yIEFycmF5IG9mIG9iamVjdHMgd2hlcmUgdHJ5IHRvIGZpbmRcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaGFzQW55SXRlbTxUPihjb2xsZWN0aW9uMTogVFtdLCBjb2xsZWN0aW9uMjogVFtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29sbGVjdGlvbjEuc29tZShpdGVtID0+IGNvbGxlY3Rpb24yLmluY2x1ZGVzKGl0ZW0pKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiB2YWx1ZSBmcm9tIGNvbGxlY3Rpb24gYnkgcHJlZGljYXRlIGZ1bmN0aW9uXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gdG8gZGVmaW5lIHNlYXJjaCBsb2dpY1xyXG4gKiBAcmV0dXJucyBWYWx1ZSBmcm9tIGNvbGxlY3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBmaXJzdE9yRGVmYXVsdDxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICBwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuKVxyXG4gICAgOiBUIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBhbnkoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uPy5maW5kKHByZWRpY2F0ZSkgOiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gZmlyc3QgaXRlbSBmcm9tIGNvbGxlY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHJldHVybnMgRmlyc3QgdmFsdWUgZnJvbSBjb2xsZWN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RJdGVtPFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+KTogVCB8IG51bGwgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIGFueShjb2xsZWN0aW9uKSA/IGNvbGxlY3Rpb25bMF0gOiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIGxhc3QgaXRlbSBmcm9tIGNvbGxlY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHJldHVybnMgTGFzdCB2YWx1ZSBmcm9tIGNvbGxlY3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBsYXN0SXRlbTxUPihjb2xsZWN0aW9uOiBBcnJheTxUPik6IFQgfCBudWxsIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBhbnkoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uW2NvbGxlY3Rpb24ubGVuZ3RoIC0gMV0gOiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIFRydWUgaWYgYWxsIHZhbHVlcyBtYXRjaCBwcmVkaWNhdGUgZnVuY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2Ygb2JqZWN0c1xyXG4gKiBAcGFyYW0gcHJlZGljYXRlIEZ1bmN0aW9uIHRvIGRlZmluZSBjaGVjayBsb2dpY1xyXG4gKiBAcmV0dXJucyBUcnVlIGlmIGFsbCB2YWx1ZXMgbWF0Y2ggcHJlZGljYXRlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWxsPFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYW55KGNvbGxlY3Rpb24pID8gY29sbGVjdGlvbi5maWx0ZXIocHJlZGljYXRlKS5sZW5ndGggPT0gY29sbGVjdGlvbi5sZW5ndGggOiBmYWxzZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBjb3VudCBieSBwcmVkaWNhdGVcclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2Ygb2JqZWN0c1xyXG4gKiBAcGFyYW0gcHJlZGljYXRlIEZ1bmN0aW9uIHRvIGRlZmluZSBjaGVjayBsb2dpY1xyXG4gKiBAcmV0dXJucyBJdGVtcyBjb3VudFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNvdW50PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBjb2xsZWN0aW9uLmZpbHRlcihwcmVkaWNhdGUpLmxlbmd0aDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBpdGVtcyBmcm9tIGNvbGxlY3Rpb24gYnkgcHJlZGljYXRlIGZ1bmN0aW9uXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gdG8gZGVmaW5lIHNlYXJjaCBsb2dpY1xyXG4gKiBAcmV0dXJucyBWYWx1ZXMgZnJvbSBjb2xsZWN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gd2hlcmU8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHByZWRpY2F0ZTogKGl0ZW06IFQpID0+IGJvb2xlYW4pXHJcbiAgICA6IEFycmF5PFQ+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gYW55KGNvbGxlY3Rpb24pID8gY29sbGVjdGlvbi5maWx0ZXIocHJlZGljYXRlKSA6IG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gc2xpY2VkIGNvbGxlY3Rpb24gYnkgcGFnZSBudW1iZXIgYW5kIHBhZ2Ugc2l6ZVxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcGFyYW0gcGFnZSBQYWdlIG51bWJlclxyXG4gKiBAcGFyYW0gc2l6ZSBQYWdlIHNpemVcclxuICogQHJldHVybnMgU2xpY2VkIGNvbGxlY3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBza2lwPFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBwYWdlOiBudW1iZXIsIHNpemU6IG51bWJlcik6IEFycmF5PFQ+IHtcclxuICAgIGlmIChhbnkoY29sbGVjdGlvbikpIHtcclxuICAgICAgICBsZXQgc3RhcnQgPSAocGFnZSAtIDEpICogc2l6ZTtcclxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5zbGljZShzdGFydCwgc3RhcnQgKyBzaXplKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29sbGVjdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNvcnQ8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIGRpcmVjdGlvbjogU29ydGluZ0RpcmVjdGlvbiA9IFNvcnRpbmdEaXJlY3Rpb24uQXNjZW5kaW5nKTogQXJyYXk8VD4ge1xyXG4gICAgaWYgKGFueShjb2xsZWN0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0gU29ydGluZ0RpcmVjdGlvbi5Bc2NlbmRpbmdcclxuICAgICAgICAgICAgPyBjb2xsZWN0aW9uLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBhIC0gYilcclxuICAgICAgICAgICAgOiBjb2xsZWN0aW9uLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBiIC0gYSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gc29ydGVkIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBieSBwcm9wZXJ0eVxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcGFyYW0gcHJvcGVydHkgUHJvcGVydHkgbmFtZVxyXG4gKiBAcGFyYW0gZGlyZWN0aW9uIFNvcnRpbmcgZGlyZWN0aW9uXHJcbiAqIEByZXR1cm5zIFNvcnRlZCBjb2xsZWN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc29ydEJ5PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBwcm9wZXJ0eTogc3RyaW5nLFxyXG4gICAgZGlyZWN0aW9uOiBTb3J0aW5nRGlyZWN0aW9uKTogQXJyYXk8VD4ge1xyXG4gICAgaWYgKGFueShjb2xsZWN0aW9uKSkge1xyXG4gICAgICAgIGxldCBfc29ydEZ1bmMgPSAoYTogYW55LCBiOiBhbnkpID0+XHJcbiAgICAgICAgICAgICh0MTogbnVtYmVyLCB0MjogbnVtYmVyKSA9PlxyXG4gICAgICAgICAgICAgICAgKGFbcHJvcGVydHldID4gYltwcm9wZXJ0eV0gPyB0MSA6IHQyKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTb3J0aW5nRGlyZWN0aW9uLkFzY2VuZGluZ1xyXG4gICAgICAgICAgICA/IGNvbGxlY3Rpb24uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IF9zb3J0RnVuYyhhLCBiKSgxLCAtMSkpXHJcbiAgICAgICAgICAgIDogY29sbGVjdGlvbi5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gX3NvcnRGdW5jKGEsIGIpKC0xLCAxKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gc29ydGVkIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBieSBwYXRoXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBwYXRoIFBhdGggdG8gcHJvcGVydHlcclxuICogQHBhcmFtIGRpcmVjdGlvbiBTb3J0aW5nIGRpcmVjdGlvblxyXG4gKiBAcmV0dXJucyBTb3J0ZWQgY29sbGVjdGlvblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRCeVBhdGg8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHBhdGg6IHN0cmluZywgZGlyZWN0aW9uOiBTb3J0aW5nRGlyZWN0aW9uKVxyXG4gICAgOiBBcnJheTxUPiB7XHJcbiAgICBpZiAoYW55KGNvbGxlY3Rpb24pKSB7XHJcbiAgICAgICAgaWYgKGlzTnVsbE9yRW1wdHlTdHJpbmcocGF0aCkpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29sbGVjdGlvbiB1dGlscyB8IFNvcnQgQnkgUGF0aCBmdW5jdGlvbiAtLT4gUGF0aCBpcyBlbXB0eS4nKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGF0aFBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xyXG5cclxuICAgICAgICBpZiAoIWFueShwYXRoUGFydHMpKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbGxlY3Rpb24gdXRpbHMgfCBTb3J0IEJ5IFBhdGggZnVuY3Rpb24gLS0+IFBhdGggaXMgaW5jb3JyZWN0LicpO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJ0c0xlbmd0aCA9IHBhdGhQYXJ0cy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGNvbGxlY3Rpb24uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyIGkgPSAwO1xyXG4gICAgICAgICAgICB3aGlsZSAoaSA8IHBhcnRzTGVuZ3RoKSB7IGEgPSBhW3BhdGhQYXJ0c1tpXV07IGIgPSBiW3BhdGhQYXJ0c1tpXV07IGkrKzsgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTb3J0aW5nRGlyZWN0aW9uLkFzY2VuZGluZ1xyXG4gICAgICAgICAgICAgICAgPyBhID49IGIgPyAxIDogLTFcclxuICAgICAgICAgICAgICAgIDogYSA+IGIgPyAtMSA6IDE7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2xsZWN0aW9uO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIGNvbGxlY3Rpb24gd2l0aG91dCBtYXRjaGVzXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEByZXR1cm5zIENvbGxlY3Rpb24gd2l0aG91dCBtYXRjaGVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGlzdGluY3Q8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4pOiBBcnJheTxUPiB7XHJcbiAgICByZXR1cm4gYW55KGNvbGxlY3Rpb24pXHJcbiAgICAgICAgPyBjb2xsZWN0aW9uLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleClcclxuICAgICAgICA6IGNvbGxlY3Rpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gc3VtIHZhbHVlIGZyb20gY29sbGVjdGlvbiBpdGVtcyBieSBtYXAgZnVuY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHBhcmFtIHNlbGVjdCBNYXAgZnVuY3Rpb25cclxuICogQHJldHVybnMgU3VtIHZhbHVlIG9mIGNvbGVjdGlvbiBpdGVtc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN1bTxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiwgc2VsZWN0OiAoaXRlbTogVCkgPT4gbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBhbnkoY29sbGVjdGlvbilcclxuICAgICAgICA/IGNvbGxlY3Rpb25cclxuICAgICAgICAgICAgLm1hcChzZWxlY3QpXHJcbiAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IHsgcmV0dXJuIGEgKyBiIH0sIDApXHJcbiAgICAgICAgOiAwO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJuIG1heCB2YWx1ZSBmcm9tIGNvbGxlY3Rpb24gaXRlbXMgYnkgbWFwIGZ1bmN0aW9uXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBzZWxlY3QgTWFwIGZ1bmN0aW9uXHJcbiAqIEByZXR1cm5zIE1heCB2YWx1ZSBvZiBjb2xsZWN0aW9uIGl0ZW1zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbWF4PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBzZWxlY3Q6IChpdGVtOiBUKSA9PiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgaWYgKGFueShjb2xsZWN0aW9uKSlcclxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoLi4uY29sbGVjdGlvbi5tYXAoc2VsZWN0KSk7XHJcblxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb2xsZWN0aW9uIHV0aWxzIHwgTWF4IGZ1bmN0aW9uIC0tPiBDb2xsZWN0aW9uIGlzIGVtcHR5LicpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZWxldGUgaXRlbXMgZnJvbSBjb2xsZWN0aW9uIGJ5IHByZWRpY2F0ZVxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcGFyYW0gcHJlZGljYXRlIEZ1bmN0aW9uIHRvIGRlZmluZSByZW1vdmUgbG9naWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmU8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIHByZWRpY2F0ZTogKGl0ZW06IFQpID0+IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHZhciBpID0gY29sbGVjdGlvbi5sZW5ndGg7XHJcbiAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgaWYgKHByZWRpY2F0ZShjb2xsZWN0aW9uW2ldKSkge1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uLnNwbGljZShpLCAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZGQgaXRlbSB0byBjb2xsZWN0aW9uXHJcbiAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBpdGVtIE5ldyBpdGVtXHJcbiAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gdG8gZGVmaW5lIGlmIGFsbG93ZWQgdG8gYWRkIG5ldyBpdGVtXHJcbiAqIEByZXR1cm5zIFRydWUgaWYgc3VjY2Vzc2Z1bGx5IGFkZGVkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkSXRlbTxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiwgaXRlbTogVCxcclxuICAgIHByZWRpY2F0ZTogKChpdGVtOiBUKSA9PiBib29sZWFuKSB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKCFpc0RlZmluZWQoY29sbGVjdGlvbikpXHJcbiAgICAgICAgY29sbGVjdGlvbiA9IG5ldyBBcnJheTxUPigpO1xyXG5cclxuICAgIGlmIChpc0RlZmluZWQocHJlZGljYXRlKSAmJiBwcmVkaWNhdGUhKGl0ZW0pKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb2xsZWN0aW9uLnB1c2goaXRlbSk7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZWxldGUgaXRlbSBmcm9tIGNvbGxlY3Rpb25cclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHBhcmFtIGl0ZW0gSXRlbSB0byBkZWxldGVcclxuICogQHJldHVybnMgVHJ1ZSBpZiBzdWNjZXNzZnVsbHkgcmVtb3ZlZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUl0ZW08VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIGl0ZW06IFQpOiBib29sZWFuIHtcclxuICAgIGlmIChpc0RlZmluZWQoaXRlbSkgJiYgaGFzSXRlbShjb2xsZWN0aW9uLCBpdGVtKSkge1xyXG4gICAgICAgIGNvbGxlY3Rpb24uc3BsaWNlKGNvbGxlY3Rpb24uaW5kZXhPZihpdGVtKSwgMSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG4vKipcclxuICogRGVsZXRlIGl0ZW0gZnJvbSBjb2xsZWN0aW9uIGJ5IHByZWRpY2F0ZVxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcGFyYW0gcHJlZGljYXRlIEZ1bmN0aW9uIHRvIGRlZmluZSByZW1vdmUgbG9naWNcclxuICogQHJldHVybnMgVHJ1ZSBpZiBzdWNjZXNzZnVsbHkgcmVtb3ZlZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUl0ZW1CeTxUPihjb2xsZWN0aW9uOiBBcnJheTxUPiwgcHJlZGljYXRlOiAoaXRlbTogVCkgPT4gYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm91bmRJdGVtOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCA9IGZpcnN0T3JEZWZhdWx0KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSk7XHJcbiAgICBpZiAoaXNEZWZpbmVkKGZvdW5kSXRlbSkpIHtcclxuICAgICAgICBjb2xsZWN0aW9uLnNwbGljZShjb2xsZWN0aW9uLmluZGV4T2YoZm91bmRJdGVtIGFzIFQpLCAxKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBVcGRhdGUgaXRlbSBpbiBjb2xsZWN0aW9uIGJ5IHByZWRpY2F0ZVxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBBcnJheSBvZiBpdGVtc1xyXG4gKiBAcGFyYW0gcHJlZGljYXRlIEZ1bmN0aW9uIHRvIGRlZmluZSBpdGVtIGZvciBkZWxldGluZ1xyXG4gKiBAcmV0dXJucyBUcnVlIGlmIHN1Y2Nlc3NmdWxseSByZW1vdmVkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlSXRlbUJ5PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+LCBwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuLCBuZXdJdGVtOiBUKVxyXG4gICAgOiBBcnJheTxUPiB8IG51bGwge1xyXG4gICAgY29uc3QgaXRlbUluZGV4ID0gY29sbGVjdGlvbi5maW5kSW5kZXgocHJlZGljYXRlKTtcclxuXHJcbiAgICBpZiAoaXRlbUluZGV4ICE9PSBDb21tb25Db25zdGFudHMuTk9UX0ZPVU5EX0lOREVYKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY29sbGVjdGlvbi5zbGljZSgwKTtcclxuICAgICAgICByZXN1bHRbaXRlbUluZGV4XSA9IHtcclxuICAgICAgICAgICAgLi4uY29sbGVjdGlvbltpdGVtSW5kZXhdLFxyXG4gICAgICAgICAgICAuLi5uZXdJdGVtXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUb2dnbGUgaXRlbSBpbiBhcnJheVxyXG4gKiBAcGFyYW0gYXJyIEFycmF5IG9mIGl0ZW1zXHJcbiAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gdG9nZ2xlXHJcbiAqIEByZXR1cm5zIFRvZ2dsaW5nIHJlc3VsdCBhcnJheVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUl0ZW08VD4oYXJyYXk6IFRbXSwgaXRlbTogVCk6IFRbXSB7XHJcbiAgICBpZiAoaGFzSXRlbShhcnJheSwgaXRlbSkpIHtcclxuICAgICAgICByZW1vdmVJdGVtKGFycmF5LCBpdGVtKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGFkZEl0ZW0oYXJyYXksIGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhcnJheTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBjb2xsZWN0aW9uIG9yIGVtcHR5IGlmIGNvbGxlY3Rpb24gaXMgbm90IGRlZmluZWRcclxuICogQHBhcmFtIGNvbGxlY3Rpb24gQXJyYXkgb2YgaXRlbXNcclxuICogQHJldHVybnMgQ29sbGVjdGlvbiBvciBlbXB0eVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbGxlY3Rpb25PckVtcHR5PFQ+KGNvbGxlY3Rpb246IEFycmF5PFQ+KTogQXJyYXk8VD4ge1xyXG4gICAgcmV0dXJuIGlzRGVmaW5lZChjb2xsZWN0aW9uKSA/IGNvbGxlY3Rpb24gOiBbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIGFycmF5cyBhcmUgZXF1YWxcclxuICogQHBhcmFtIGEgRmlyc3QgYXJyYXlcclxuICogQHBhcmFtIGIgU2Vjb25kIGFycmF5XHJcbiAqIEByZXR1cm5zIFRydWUgaWYgYXJyYXlzIGFyZSBlcXVhbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXlzRXF1YWxzPFQ+KGE6IEFycmF5PFQ+LCBiOiBBcnJheTxUPik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGEuc29ydCgpO1xyXG4gICAgYi5zb3J0KCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufSJdfQ==
|