@ethlete/query 4.7.7 → 4.9.0
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/esm2022/lib/devtools/components/query-devtools/query-devtools.component.mjs +3 -3
- package/esm2022/lib/devtools/pipes/query-short-name.pipe.mjs +3 -3
- package/esm2022/lib/directives/infinity-query-trigger.directive.mjs +3 -3
- package/esm2022/lib/directives/infinity-query.directive.mjs +3 -3
- package/esm2022/lib/directives/query.directive.mjs +7 -4
- package/esm2022/lib/query-client/query-client.types.mjs +1 -1
- package/esm2022/lib/request/request.mjs +16 -2
- package/fesm2022/ethlete-query.mjs +33 -16
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/directives/query.directive.d.ts +4 -0
- package/lib/query-client/query-client.types.d.ts +2 -2
- package/package.json +2 -2
|
@@ -199,10 +199,10 @@ export class QueryDevtoolsComponent {
|
|
|
199
199
|
clearQueryHistory() {
|
|
200
200
|
this.queryHistory.set([]);
|
|
201
201
|
}
|
|
202
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.
|
|
203
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ queryHistory().length }}/50)\n </button>\n <ng-container *ngIf=\"queryListMode() === 'history'\">\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n <ng-container *ngIf=\"query.isPolling || query._isPollingPaused\">\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".et-query-devtools{position:fixed;top:0;z-index:1000000;font-size:14px}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
202
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: QueryDevtoolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
203
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.8", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n\n <div *ngIf=\"selectedClientConfig() as cfg\" class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ queryHistory().length }}/50)\n </button>\n <ng-container *ngIf=\"queryListMode() === 'history'\">\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n <ng-container *ngIf=\"query.isPolling || query._isPollingPaused\">\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n </ng-container>\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".et-query-devtools{position:fixed;top:0;z-index:1000000;font-size:14px}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
204
204
|
}
|
|
205
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: QueryDevtoolsComponent, decorators: [{
|
|
206
206
|
type: Component,
|
|
207
207
|
args: [{ selector: 'et-query-devtools', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, host: {
|
|
208
208
|
class: 'et-query-devtools',
|
|
@@ -15,10 +15,10 @@ export class QueryShortNamePipe {
|
|
|
15
15
|
console.log(route);
|
|
16
16
|
return route;
|
|
17
17
|
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.
|
|
19
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: QueryShortNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
19
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.8", ngImport: i0, type: QueryShortNamePipe, isStandalone: true, name: "queryShortName" }); }
|
|
20
20
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: QueryShortNamePipe, decorators: [{
|
|
22
22
|
type: Pipe,
|
|
23
23
|
args: [{ name: 'queryShortName', standalone: true }]
|
|
24
24
|
}] });
|
|
@@ -38,10 +38,10 @@ export class InfinityQueryTriggerDirective {
|
|
|
38
38
|
});
|
|
39
39
|
this._observer.observe(this._elementRef.nativeElement);
|
|
40
40
|
}
|
|
41
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.
|
|
42
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
42
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.8", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 }); }
|
|
43
43
|
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
|
|
45
45
|
type: Directive,
|
|
46
46
|
args: [{
|
|
47
47
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -155,10 +155,10 @@ export class InfinityQueryDirective {
|
|
|
155
155
|
this._viewContext.currentQuery = null;
|
|
156
156
|
this._data$.next([]);
|
|
157
157
|
}
|
|
158
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.
|
|
159
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.
|
|
158
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
159
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.8", type: InfinityQueryDirective, isStandalone: true, selector: "[etInfinityQuery]", inputs: { infinityQuery: ["etInfinityQuery", "infinityQuery"] }, providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }], exportAs: ["etInfinityQuery"], hostDirectives: [{ directive: i1.DelayableDirective }], ngImport: i0 }); }
|
|
160
160
|
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: InfinityQueryDirective, decorators: [{
|
|
162
162
|
type: Directive,
|
|
163
163
|
args: [{
|
|
164
164
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -18,6 +18,7 @@ export class QueryDirective {
|
|
|
18
18
|
error: null,
|
|
19
19
|
progress: null,
|
|
20
20
|
scope: null,
|
|
21
|
+
query: null,
|
|
21
22
|
};
|
|
22
23
|
this._cache = false;
|
|
23
24
|
}
|
|
@@ -55,10 +56,12 @@ export class QueryDirective {
|
|
|
55
56
|
this._viewContext.error = null;
|
|
56
57
|
this._viewContext.progress = null;
|
|
57
58
|
this._viewContext.scope = null;
|
|
59
|
+
this._viewContext.query = null;
|
|
58
60
|
return;
|
|
59
61
|
}
|
|
60
62
|
const sub = query.state$.pipe(tap((state) => this._updateView(state))).subscribe();
|
|
61
63
|
this._viewContext.scope = isQueryCollection(query) ? query.type : null;
|
|
64
|
+
this._viewContext.query = query;
|
|
62
65
|
this._subscription = sub;
|
|
63
66
|
}
|
|
64
67
|
_updateView(state) {
|
|
@@ -97,10 +100,10 @@ export class QueryDirective {
|
|
|
97
100
|
this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);
|
|
98
101
|
}
|
|
99
102
|
}
|
|
100
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.
|
|
101
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.
|
|
103
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: QueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
104
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.8", type: QueryDirective, isStandalone: true, selector: "[etQuery]", inputs: { query: ["etQuery", "query"], cache: ["etQueryCache", "cache"] }, ngImport: i0 }); }
|
|
102
105
|
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: QueryDirective, decorators: [{
|
|
104
107
|
type: Directive,
|
|
105
108
|
args: [{
|
|
106
109
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -114,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
114
117
|
type: Input,
|
|
115
118
|
args: ['etQueryCache']
|
|
116
119
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQU1MLFlBQVksRUFDWixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsR0FDcEIsTUFBTSxVQUFVLENBQUM7O0FBOENsQixNQUFNLE9BQU8sY0FBYztJQUwzQjtRQU1VLHFCQUFnQixHQUFHLE1BQU0sQ0FBK0IsV0FBVyxDQUFDLENBQUM7UUFDckUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0Msa0JBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpDLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFFakMsaUJBQVksR0FBb0I7WUFDL0MsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxLQUFLO1lBQ2QsVUFBVSxFQUFFLEtBQUs7WUFDakIsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQztRQW9CTSxXQUFNLEdBQUcsS0FBSyxDQUFDO0tBZ0Z4QjtJQWxHQyxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxN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cnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFcnJvckhhbmRsZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQW55UXVlcnksXG4gIEFueVF1ZXJ5Q29sbGVjdGlvbixcbiAgUXVlcnlDb2xsZWN0aW9uS2V5c09mLFxuICBRdWVyeU9mLFxuICBRdWVyeVN0YXRlLFxuICBleHRyYWN0UXVlcnksXG4gIGlzUXVlcnlDb2xsZWN0aW9uLFxuICBpc1F1ZXJ5U3RhdGVGYWlsdXJlLFxuICBpc1F1ZXJ5U3RhdGVMb2FkaW5nLFxuICBpc1F1ZXJ5U3RhdGVTdWNjZXNzLFxufSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBRdWVyeURhdGFPZiB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuaW1wb3J0IHsgUmVxdWVzdEVycm9yLCBSZXF1ZXN0UHJvZ3Jlc3MgfSBmcm9tICcuLi9yZXF1ZXN0JztcblxuaW50ZXJmYWNlIFF1ZXJ5Q29udGV4dDxRIGV4dGVuZHMgQW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPiB7XG4gIC8qKlxuICAgKiBUaGUgcXVlcmllcydzIHJlc3BvbnNlIGRhdGEuXG4gICAqL1xuICAkaW1wbGljaXQ6IFF1ZXJ5RGF0YU9mPFF1ZXJ5T2Y8UT4+IHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIHF1ZXJpZXMncyByZXNwb25zZSBkYXRhLlxuICAgKi9cbiAgZXRRdWVyeTogUXVlcnlEYXRhT2Y8UXVlcnlPZjxRPj4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBJcyB0cnVlIHdoZW4gdGhlIHF1ZXJ5IGlzIHRyaWdnZXJlZCBieSB1c2VyIGludGVyYWN0aW9uLlxuICAgKi9cbiAgbG9hZGluZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSXMgdHJ1ZSB3aGVuIHRoZSBxdWVyeSBpcyB0cmlnZ2VyZWQgYnkgZWl0aGVyIHBvbGxpbmcgb3IgYXV0byByZWZyZXNoIGV2ZW50LlxuICAgKi9cbiAgcmVmcmVzaGluZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHF1ZXJ5J3MgcHJvZ3Jlc3Mgc3RhdGUuXG4gICAqL1xuICBwcm9ncmVzczogUmVxdWVzdFByb2dyZXNzIHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIHF1ZXJ5J3MgZXJyb3Igc3RhdGUuXG4gICAqL1xuICBlcnJvcjogUmVxdWVzdEVycm9yPHVua25vd24+IHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIHF1ZXJ5J3Mgc2NvcGUgKG9ubHkgYXZhaWxhYmxlIHdoZW4gdGhlIHF1ZXJ5IGlzIGEgY29sbGVjdGlvbilcbiAgICovXG4gIHNjb3BlOiBRdWVyeUNvbGxlY3Rpb25LZXlzT2Y8UT4gfCBudWxsO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbZXRRdWVyeV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeURpcmVjdGl2ZTxRIGV4dGVuZHMgQW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfbWFpblRlbXBsYXRlUmVmID0gaW5qZWN0PFRlbXBsYXRlUmVmPFF1ZXJ5Q29udGV4dDxRPj4+KFRlbXBsYXRlUmVmKTtcbiAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSBfZXJyb3JIYW5kbGVyID0gaW5qZWN0KEVycm9ySGFuZGxlcik7XG4gIHByaXZhdGUgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHJpdmF0ZSBfaXNNYWluVmlld0NyZWF0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGV4dDogUXVlcnlDb250ZXh0PFE+ID0ge1xuICAgICRpbXBsaWNpdDogbnVsbCxcbiAgICBldFF1ZXJ5OiBudWxsLFxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIHJlZnJlc2hpbmc6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuICAgIHByb2dyZXNzOiBudWxsLFxuICAgIHNjb3BlOiBudWxsLFxuICB9O1xuXG4gIEBJbnB1dCgnZXRRdWVyeScpXG4gIGdldCBxdWVyeSgpOiBRIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnk7XG4gIH1cbiAgc2V0IHF1ZXJ5KHY6IFEpIHtcbiAgICB0aGlzLl9xdWVyeSA9IHY7XG5cbiAgICB0aGlzLl9zdWJzY3JpYmVUb1F1ZXJ5KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcXVlcnkhOiBRO1xuXG4gIEBJbnB1dCgnZXRRdWVyeUNhY2hlJylcbiAgZ2V0IGNhY2hlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZTtcbiAgfVxuICBzZXQgY2FjaGUodjogYm9vbGVhbikge1xuICAgIHRoaXMuX2NhY2hlID0gdjtcbiAgfVxuICBwcml2YXRlIF9jYWNoZSA9IGZhbHNlO1xuXG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+KFxuICAgIGRpcjogUXVlcnlEaXJlY3RpdmU8UT4sXG4gICAgY3R4OiB1bmtub3duLFxuICApOiBjdHggaXMgUXVlcnlDb250ZXh0PFE+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlck1haW5WaWV3KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb1F1ZXJ5KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgcXVlcnkgPSBleHRyYWN0UXVlcnkodGhpcy5xdWVyeSk7XG5cbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBudWxsO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXRRdWVyeSA9IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5yZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5wcm9ncmVzcyA9IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5zY29wZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViID0gcXVlcnkuc3RhdGUkLnBpcGUodGFwKChzdGF0ZSkgPT4gdGhpcy5fdXBkYXRlVmlldyhzdGF0ZSkpKS5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3ZpZXdDb250ZXh0LnNjb3BlID0gaXNRdWVyeUNvbGxlY3Rpb24ocXVlcnkpID8gKHF1ZXJ5LnR5cGUgYXMgUXVlcnlDb2xsZWN0aW9uS2V5c09mPFE+KSA6IG51bGw7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBzdWI7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWaWV3KHN0YXRlOiBRdWVyeVN0YXRlKSB7XG4gICAgaWYgKGlzUXVlcnlTdGF0ZUxvYWRpbmcoc3RhdGUpKSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5wcm9ncmVzcyA9IHN0YXRlLnByb2dyZXNzID8/IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5yZWZyZXNoaW5nID0gc3RhdGUubWV0YS50cmlnZ2VyZWRWaWEgPT09ICdhdXRvJyB8fCBzdGF0ZS5tZXRhLnRyaWdnZXJlZFZpYSA9PT0gJ3BvbGwnO1xuXG4gICAgICBpZiAoIXRoaXMuX3ZpZXdDb250ZXh0LnJlZnJlc2hpbmcpIHtcbiAgICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnJlZnJlc2hpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnByb2dyZXNzID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmV0UXVlcnkgPSBzdGF0ZS5yZXNwb25zZSBhcyBRdWVyeURhdGFPZjxRdWVyeU9mPFE+PjtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IHN0YXRlLnJlc3BvbnNlIGFzIFF1ZXJ5RGF0YU9mPFF1ZXJ5T2Y8UT4+O1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmV0UXVlcnkgPSBudWxsO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuJGltcGxpY2l0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlRmFpbHVyZShzdGF0ZSkpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gc3RhdGUuZXJyb3I7XG5cbiAgICAgIHRoaXMuX2Vycm9ySGFuZGxlci5oYW5kbGVFcnJvcihzdGF0ZS5lcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJNYWluVmlldygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzTWFpblZpZXdDcmVhdGVkKSB7XG4gICAgICB0aGlzLl9pc01haW5WaWV3Q3JlYXRlZCA9IHRydWU7XG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9tYWluVGVtcGxhdGVSZWYsIHRoaXMuX3ZpZXdDb250ZXh0KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQU1MLFlBQVksRUFDWixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsR0FDcEIsTUFBTSxVQUFVLENBQUM7O0FBbURsQixNQUFNLE9BQU8sY0FBYztJQUwzQjtRQU1VLHFCQUFnQixHQUFHLE1BQU0sQ0FBK0IsV0FBVyxDQUFDLENBQUM7UUFDckUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0Msa0JBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpDLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFFakMsaUJBQVksR0FBb0I7WUFDL0MsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxLQUFLO1lBQ2QsVUFBVSxFQUFFLEtBQUs7WUFDakIsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxJQUFJO1lBQ1gsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDO1FBb0JNLFdBQU0sR0FBRyxLQUFLLENBQUM7S0FrRnhCO0lBcEdDLElBQ0ksS0FBSztR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VUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQXNCSyxLQUFLO3NCQURSLEtBQUs7dUJBQUMsU0FBUztnQkFZWixLQUFLO3NCQURSLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVycm9ySGFuZGxlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBbnlRdWVyeSxcbiAgQW55UXVlcnlDb2xsZWN0aW9uLFxuICBRdWVyeUNvbGxlY3Rpb25LZXlzT2YsXG4gIFF1ZXJ5T2YsXG4gIFF1ZXJ5U3RhdGUsXG4gIGV4dHJhY3RRdWVyeSxcbiAgaXNRdWVyeUNvbGxlY3Rpb24sXG4gIGlzUXVlcnlTdGF0ZUZhaWx1cmUsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5RGF0YU9mIH0gZnJvbSAnLi4vcXVlcnktY3JlYXRvcic7XG5pbXBvcnQgeyBSZXF1ZXN0RXJyb3IsIFJlcXVlc3RQcm9ncmVzcyB9IGZyb20gJy4uL3JlcXVlc3QnO1xuXG5pbnRlcmZhY2UgUXVlcnlDb250ZXh0PFEgZXh0ZW5kcyBBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+IHtcbiAgLyoqXG4gICAqIFRoZSBxdWVyaWVzJ3MgcmVzcG9uc2UgZGF0YS5cbiAgICovXG4gICRpbXBsaWNpdDogUXVlcnlEYXRhT2Y8UXVlcnlPZjxRPj4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgcXVlcmllcydzIHJlc3BvbnNlIGRhdGEuXG4gICAqL1xuICBldFF1ZXJ5OiBRdWVyeURhdGFPZjxRdWVyeU9mPFE+PiB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBxdWVyeSB1c2VkIGluc2lkZSB0aGlzIGRpcmVjdGl2ZS4gVXNlZnVsIGlmIGZvciBpbnN0YW5jZSB0aGUgcXVlcnkgZ2V0cyB1bndyYXBwZWQgdmlhIGFzeW5jIHBpcGUgaW5zaWRlIHRoZSBkaXJlY3RpdmUuXG4gICAqL1xuICBxdWVyeTogUXVlcnlPZjxRPiB8IG51bGw7XG5cbiAgLyoqXG4gICAqIElzIHRydWUgd2hlbiB0aGUgcXVlcnkgaXMgdHJpZ2dlcmVkIGJ5IHVzZXIgaW50ZXJhY3Rpb24uXG4gICAqL1xuICBsb2FkaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJcyB0cnVlIHdoZW4gdGhlIHF1ZXJ5IGlzIHRyaWdnZXJlZCBieSBlaXRoZXIgcG9sbGluZyBvciBhdXRvIHJlZnJlc2ggZXZlbnQuXG4gICAqL1xuICByZWZyZXNoaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcXVlcnkncyBwcm9ncmVzcyBzdGF0ZS5cbiAgICovXG4gIHByb2dyZXNzOiBSZXF1ZXN0UHJvZ3Jlc3MgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgcXVlcnkncyBlcnJvciBzdGF0ZS5cbiAgICovXG4gIGVycm9yOiBSZXF1ZXN0RXJyb3I8dW5rbm93bj4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgcXVlcnkncyBzY29wZSAob25seSBhdmFpbGFibGUgd2hlbiB0aGUgcXVlcnkgaXMgYSBjb2xsZWN0aW9uKVxuICAgKi9cbiAgc2NvcGU6IFF1ZXJ5Q29sbGVjdGlvbktleXNPZjxRPiB8IG51bGw7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tldFF1ZXJ5XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5RGlyZWN0aXZlPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9tYWluVGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8UXVlcnlDb250ZXh0PFE+Pj4oVGVtcGxhdGVSZWYpO1xuICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICBwcml2YXRlIF9lcnJvckhhbmRsZXIgPSBpbmplY3QoRXJyb3JIYW5kbGVyKTtcbiAgcHJpdmF0ZSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBwcml2YXRlIF9pc01haW5WaWV3Q3JlYXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250ZXh0OiBRdWVyeUNvbnRleHQ8UT4gPSB7XG4gICAgJGltcGxpY2l0OiBudWxsLFxuICAgIGV0UXVlcnk6IG51bGwsXG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgcmVmcmVzaGluZzogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gICAgcHJvZ3Jlc3M6IG51bGwsXG4gICAgc2NvcGU6IG51bGwsXG4gICAgcXVlcnk6IG51bGwsXG4gIH07XG5cbiAgQElucHV0KCdldFF1ZXJ5JylcbiAgZ2V0IHF1ZXJ5KCk6IFEge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeTtcbiAgfVxuICBzZXQgcXVlcnkodjogUSkge1xuICAgIHRoaXMuX3F1ZXJ5ID0gdjtcblxuICAgIHRoaXMuX3N1YnNjcmliZVRvUXVlcnkoKTtcbiAgfVxuICBwcml2YXRlIF9xdWVyeSE6IFE7XG5cbiAgQElucHV0KCdldFF1ZXJ5Q2FjaGUnKVxuICBnZXQgY2FjaGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlO1xuICB9XG4gIHNldCBjYWNoZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2FjaGUgPSB2O1xuICB9XG4gIHByaXZhdGUgX2NhY2hlID0gZmFsc2U7XG5cbiAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8USBleHRlbmRzIEFueVF1ZXJ5IHwgQW55UXVlcnlDb2xsZWN0aW9uIHwgbnVsbD4oXG4gICAgZGlyOiBRdWVyeURpcmVjdGl2ZTxRPixcbiAgICBjdHg6IHVua25vd24sXG4gICk6IGN0eCBpcyBRdWVyeUNvbnRleHQ8UT4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVuZGVyTWFpblZpZXcoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvUXVlcnkoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBxdWVyeSA9IGV4dHJhY3RRdWVyeSh0aGlzLnF1ZXJ5KTtcblxuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5ldFF1ZXJ5ID0gbnVsbDtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnJlZnJlc2hpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gbnVsbDtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnByb2dyZXNzID0gbnVsbDtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnNjb3BlID0gbnVsbDtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnF1ZXJ5ID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdWIgPSBxdWVyeS5zdGF0ZSQucGlwZSh0YXAoKHN0YXRlKSA9PiB0aGlzLl91cGRhdGVWaWV3KHN0YXRlKSkpLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQuc2NvcGUgPSBpc1F1ZXJ5Q29sbGVjdGlvbihxdWVyeSkgPyAocXVlcnkudHlwZSBhcyBRdWVyeUNvbGxlY3Rpb25LZXlzT2Y8UT4pIDogbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5xdWVyeSA9IHF1ZXJ5IGFzIFF1ZXJ5T2Y8UT47XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBzdWI7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWaWV3KHN0YXRlOiBRdWVyeVN0YXRlKSB7XG4gICAgaWYgKGlzUXVlcnlTdGF0ZUxvYWRpbmcoc3RhdGUpKSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5wcm9ncmVzcyA9IHN0YXRlLnByb2dyZXNzID8/IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5yZWZyZXNoaW5nID0gc3RhdGUubWV0YS50cmlnZ2VyZWRWaWEgPT09ICdhdXRvJyB8fCBzdGF0ZS5tZXRhLnRyaWdnZXJlZFZpYSA9PT0gJ3BvbGwnO1xuXG4gICAgICBpZiAoIXRoaXMuX3ZpZXdDb250ZXh0LnJlZnJlc2hpbmcpIHtcbiAgICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnJlZnJlc2hpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnByb2dyZXNzID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmV0UXVlcnkgPSBzdGF0ZS5yZXNwb25zZSBhcyBRdWVyeURhdGFPZjxRdWVyeU9mPFE+PjtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IHN0YXRlLnJlc3BvbnNlIGFzIFF1ZXJ5RGF0YU9mPFF1ZXJ5T2Y8UT4+O1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmV0UXVlcnkgPSBudWxsO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuJGltcGxpY2l0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlRmFpbHVyZShzdGF0ZSkpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gc3RhdGUuZXJyb3I7XG5cbiAgICAgIHRoaXMuX2Vycm9ySGFuZGxlci5oYW5kbGVFcnJvcihzdGF0ZS5lcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJNYWluVmlldygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzTWFpblZpZXdDcmVhdGVkKSB7XG4gICAgICB0aGlzLl9pc01haW5WaWV3Q3JlYXRlZCA9IHRydWU7XG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9tYWluVGVtcGxhdGVSZWYsIHRoaXMuX3ZpZXdDb250ZXh0KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2xpZW50LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3F1ZXJ5LWNsaWVudC9xdWVyeS1jbGllbnQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEdxbFRyYW5zZmVyT3B0aW9uIH0gZnJvbSAnLi4vcXVlcnkvcXVlcnkudHlwZXMnO1xuaW1wb3J0IHtcbiAgQnVpbGRRdWVyeVN0cmluZ0NvbmZpZyxcbiAgQ2FjaGVBZGFwdGVyRm4sXG4gIFJlcXVlc3RIZWFkZXJzLFxuICBSZXF1ZXN0SGVhZGVyc01ldGhvZE1hcCxcbiAgUmVxdWVzdFJldHJ5Rm4sXG59IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuL3F1ZXJ5LWNsaWVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlDbGllbnRDb25maWcge1xuICAvKipcbiAgICogVGhlIGFwaSBiYXNlIHJvdXRlLiBTaG91bGQgKipub3QqKiBlbmQgd2l0aCBhIHRyYWlsaW5nIHNsYXNoLlxuICAgKiBAZXhhbXBsZSAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20nXG4gICAqL1xuICBiYXNlUm91dGU6IHN0cmluZztcblxuICAvKipcbiAgICogTG9nZ2luZyBjb25maWd1cmF0aW9uIGZvciBkZWJ1Z2dpbmcuXG4gICAqL1xuICBsb2dnaW5nPzoge1xuICAgIC8qKlxuICAgICAqIExvZyBhbGwgcXVlcnkgc3RhdGUgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBxdWVyeVN0YXRlQ2hhbmdlcz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBMb2cgcXVlcnkgc3RhdGUgZ2FyYmFnZSBjb2xsZWN0b3IgcnVucy5cbiAgICAgKi9cbiAgICBxdWVyeVN0YXRlR2FyYmFnZUNvbGxlY3Rvcj86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBMb2cgaWYgc3Vic2NyaXB0aW9ucyBhcmUgbWFkZSB0byBxdWVyaWVzIHRoYXQgYXJlIGluIHRoZSBgcHJlcGFyZWRgIHN0YXRlLlxuICAgICAqIFRoaXMgdXN1YWxseSBpbmRpY2F0ZXMgdGhhdCB0aGUgYC5leGVjdXRlKClgIG1ldGhvZCB3YXMgZm9yZ290dGVuLlxuICAgICAqL1xuICAgIHByZXBhcmVkUXVlcnlTdWJzY3JpcHRpb25zPzogYm9vbGVhbjtcbiAgfTtcblxuICAvKipcbiAgICogUmVxdWVzdCBvcHRpb25zLlxuICAgKi9cbiAgcmVxdWVzdD86IHtcbiAgICAvKipcbiAgICAgKiBBZGFwdGVyIGZ1bmN0aW9uIHVzZWQgZm9yIGV4dHJhY3RpbmcgdGhlIHRpbWUgdW50aWwgdGhlIHJlc3BvbnNlIGlzIGludmFsaWQuXG4gICAgICogVGhlIGRlZmF1bHQgdXNlcyB0aGUgYGNhY2hlLWNvbnRyb2xgIChgbWF4LWFnZWAgJiBgcy1tYXhhZ2VgKSwgYGFnZWAgYW5kIGBleHBpcmVzYCBoZWFkZXJzLlxuICAgICAqIFNob3VsZCByZXR1cm4gYSBudW1iZXIgaW4gc2Vjb25kcy5cbiAgICAgKi9cbiAgICBjYWNoZUFkYXB0ZXI/OiBDYWNoZUFkYXB0ZXJGbjtcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgaGVhZGVycyB0byBiZSBzZW50IHdpdGggZXZlcnkgcmVxdWVzdC5cbiAgICAgKiBXaWxsIGJlIG92ZXJyaWRkZW4gYnkgaGVhZGVycyBwYXNzZWQgdG8gdGhlIHF1ZXJ5LlxuICAgICAqIERvIG5vdCBpbmNsdWRlIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyIGhlcmUuIFVzZSBhbiBgQXV0aFByb3ZpZGVyYCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGhlYWRlcnM/OiBSZXF1ZXN0SGVhZGVycyB8IFJlcXVlc3RIZWFkZXJzTWV0aG9kTWFwO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHJlZnJlc2ggZXhwaXJlZCBxdWVyaWVzIHdoZW4gdGhlIHdpbmRvdyByZWdhaW5zIGZvY3VzLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBhdXRvUmVmcmVzaFF1ZXJpZXNPbldpbmRvd0ZvY3VzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzdG9wIHBvbGxpbmcgcXVlcmllcyB3aGVuIHRoZSB3aW5kb3cgbG9zZXMgZm9jdXMuXG4gICAgICogUG9sbGluZyB3aWxsIHJlc3VtZSB3aGVuIHRoZSB3aW5kb3cgcmVnYWlucyBmb2N1cy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlU21hcnRQb2xsaW5nPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEEgcmV0cnkgZnVuY3Rpb24gdG8gYmUgdXNlZCBmb3IgYWxsIHF1ZXJpZXMuXG4gICAgICogQGRlZmF1bHQgc2hvdWxkUmV0cnlSZXF1ZXN0KClcbiAgICAgKi9cbiAgICByZXRyeUZuPzogUmVxdWVzdFJldHJ5Rm47XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGFsbCBncmFwaHFsIHF1ZXJpZXMuXG4gICAgICovXG4gICAgZ3FsPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBxdWVyeSBzaG91bGQgYmUgc2VudCB2aWEgR0VUIG9yIFBPU1QuXG4gICAgICAgKiAtIGBHRVRgOiBUaGUgcXVlcnkgd2lsbCBiZSBzZW50IHZpYSBxdWVyeSBwYXJhbWV0ZXJzLlxuICAgICAgICogLSBgUE9TVGA6IFRoZSBxdWVyeSB3aWxsIGJlIHNlbnQgdmlhIHRoZSBib2R5LlxuICAgICAgICogQGRlZmF1bHQgJ1BPU1QnXG4gICAgICAgKi9cbiAgICAgIHRyYW5zZmVyVmlhPzogR3FsVHJhbnNmZXJPcHRpb247XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYWxsIHF1ZXJ5IHN0cmluZ3MuXG4gICAgICovXG4gICAgcXVlcnlQYXJhbXM/OiBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQYXJlbnQgcXVlcnkgY2xpZW50LlxuICAgKiBVc2VkIGZvciBzaGFyaW5nIHRoZSBzYW1lIGF1dGggcHJvdmlkZXIuXG4gICAqL1xuICBwYXJlbnQ/OiBRdWVyeUNsaWVudDtcbn1cbiJdfQ==
|
|
@@ -54,7 +54,7 @@ export const request = (config) => {
|
|
|
54
54
|
observer.next({ type: 'start', headers, isRetry: true, retryNumber: currentRetryCount, retryDelay: _delay });
|
|
55
55
|
}, _delay);
|
|
56
56
|
};
|
|
57
|
-
const onLoad = () => {
|
|
57
|
+
const onLoad = async () => {
|
|
58
58
|
const { headers, statusText, url } = partialFromXhr();
|
|
59
59
|
let { status } = partialFromXhr();
|
|
60
60
|
let body = null;
|
|
@@ -79,6 +79,20 @@ export const request = (config) => {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
+
else if (!ok && body instanceof Blob) {
|
|
83
|
+
try {
|
|
84
|
+
const text = await body.text();
|
|
85
|
+
if (body.type === 'application/json') {
|
|
86
|
+
body = JSON.parse(text);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
body = text;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
// Ignore the error.
|
|
94
|
+
}
|
|
95
|
+
}
|
|
82
96
|
if (ok) {
|
|
83
97
|
const successEvent = {
|
|
84
98
|
type: 'success',
|
|
@@ -179,4 +193,4 @@ export const request = (config) => {
|
|
|
179
193
|
};
|
|
180
194
|
});
|
|
181
195
|
};
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9yZXF1ZXN0L3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBRUwseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLGNBQWMsRUFDZCxTQUFTLEVBQ1QsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYixrQkFBa0IsR0FDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQXFCLE1BQXFCLEVBQXNDLEVBQUU7SUFDdkcsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUM7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7SUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQztJQUNyRCxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBRXZDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUEwQyxFQUFFLEVBQUU7UUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEMsTUFB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TUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFNUMsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbkM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUU7Z0JBQ3pCLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7Z0JBRXBELElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO29CQUNsQyxHQUFHLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztpQkFDMUQ7YUFDRjtZQUVELElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFO2dCQUMvQixHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDYjtZQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGFydGlhbFhoclN0YXRlLCBSZXF1ZXN0Q29uZmlnLCBSZXF1ZXN0RXJyb3IsIFJlcXVlc3RFdmVudCB9IGZyb20gJy4vcmVxdWVzdC50eXBlcyc7XG5pbXBvcnQge1xuICBIdHRwU3RhdHVzQ29kZSxcbiAgYnVpbGRUaW1lc3RhbXBGcm9tU2Vjb25kcyxcbiAgZGV0ZWN0Q29udGVudFR5cGVIZWFkZXIsXG4gIGV4dHJhY3RFeHBpcmVzSW5TZWNvbmRzLFxuICBmb3JFYWNoSGVhZGVyLFxuICBnZXRSZXNwb25zZVVybCxcbiAgaGFzSGVhZGVyLFxuICBwYXJzZUFsbFhoclJlc3BvbnNlSGVhZGVycyxcbiAgc2VyaWFsaXplQm9keSxcbiAgc2hvdWxkUmV0cnlSZXF1ZXN0LFxufSBmcm9tICcuL3JlcXVlc3QudXRpbCc7XG5cbmNvbnN0IFhTU0lfUFJFRklYID0gL15cXClcXF1cXH0nLD9cXG4vO1xuXG5leHBvcnQgY29uc3QgcmVxdWVzdCA9IDxSZXNwb25zZSA9IHVua25vd24+KGNvbmZpZzogUmVxdWVzdENvbmZpZyk6IE9ic2VydmFibGU8UmVxdWVzdEV2ZW50PFJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCBoZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgfHwge307XG4gIGNvbnN0IHJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGUgfHwgJ2pzb24nO1xuICBjb25zdCBib2R5ID0gY29uZmlnLmJvZHkgfHwgbnVsbDtcbiAgY29uc3QgdXJsID0gY29uZmlnLnVybFdpdGhQYXJhbXMuc3BsaXQoJz8nKVswXTtcbiAgY29uc3QgcmV0cnlGbiA9IGNvbmZpZy5yZXRyeUZuIHx8IHNob3VsZFJldHJ5UmVxdWVzdDtcbiAgbGV0IGN1cnJlbnRSZXRyeUNvdW50ID0gMDtcbiAgbGV0IHJldHJ5VGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogT2JzZXJ2ZXI8UmVxdWVzdEV2ZW50PFJlc3BvbnNlPj4pID0+IHtcbiAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICBjb25zdCByZXFCb2R5ID0gc2VyaWFsaXplQm9keShib2R5KTtcblxuICAgIGNvbnN0IHNldHVwWGhyID0gKCkgPT4ge1xuICAgICAgeGhyLm9wZW4oY29uZmlnLm1ldGhvZCwgY29uZmlnLnVybFdpdGhQYXJhbXMpO1xuICAgICAgaWYgKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMpIHtcbiAgICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGZvckVhY2hIZWFkZXIoaGVhZGVycywgKG5hbWUsIHZhbHVlKSA9PiB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSkpO1xuXG4gICAgICBpZiAoIWhhc0hlYWRlcihoZWFkZXJzLCAnQWNjZXB0JykpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNIZWFkZXIoaGVhZGVycywgJ0NvbnRlbnQtVHlwZScpKSB7XG4gICAgICAgIGNvbnN0IGRldGVjdGVkVHlwZSA9IGRldGVjdENvbnRlbnRUeXBlSGVhZGVyKGJvZHkpO1xuXG4gICAgICAgIGlmIChkZXRlY3RlZFR5cGUpIHtcbiAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgZGV0ZWN0ZWRUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB4aHIucmVzcG9uc2VUeXBlID0gcmVzcG9uc2VUeXBlICE9PSAnanNvbicgPyByZXNwb25zZVR5cGUgOiAndGV4dCc7XG4gICAgfTtcblxuICAgIHNldHVwWGhyKCk7XG5cbiAgICBjb25zdCBwYXJ0aWFsRnJvbVhociA9ICgpOiBQYXJ0aWFsWGhyU3RhdGUgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzVGV4dCA9IHhoci5zdGF0dXNUZXh0IHx8ICdPSyc7XG4gICAgICBjb25zdCBoZWFkZXJzID0gcGFyc2VBbGxYaHJSZXNwb25zZUhlYWRlcnMoeGhyKTtcbiAgICAgIGNvbnN0IF91cmwgPSBnZXRSZXNwb25zZVVybCh4aHIpIHx8IHVybDtcblxuICAgICAgcmV0dXJuIHsgaGVhZGVycywgc3RhdHVzOiB4aHIuc3RhdHVzLCBzdGF0dXNUZXh0LCB1cmw6IF91cmwgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlUmV0cnkgPSAoZXJyb3I6IFJlcXVlc3RFcnJvcikgPT4ge1xuICAgICAgY29uc3QgbmV3UmV0cnlDb3VudCA9IGN1cnJlbnRSZXRyeUNvdW50ICsgMTtcbiAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gcGFydGlhbEZyb21YaHIoKTtcbiAgICAgIGNvbnN0IHsgcmV0cnksIGRlbGF5IH0gPSByZXRyeUZuKHsgY3VycmVudFJldHJ5Q291bnQ6IG5ld1JldHJ5Q291bnQsIGhlYWRlcnMsIGVycm9yIH0pO1xuXG4gICAgICBpZiAoIXJldHJ5KSB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoeyB0eXBlOiAnZmFpbHVyZScsIGhlYWRlcnMsIGVycm9yIH0pO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9kZWxheSA9IGRlbGF5ID8/IDEwMDA7XG4gICAgICBvYnNlcnZlci5uZXh0KHsgdHlwZTogJ2RlbGF5LXJldHJ5JywgaGVhZGVycywgcmV0cnlOdW1iZXI6IG5ld1JldHJ5Q291bnQsIHJldHJ5RGVsYXk6IF9kZWxheSB9KTtcblxuICAgICAgcmV0cnlUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXR1cFhocigpO1xuICAgICAgICB4aHIuc2VuZChyZXFCb2R5KTtcbiAgICAgICAgY3VycmVudFJldHJ5Q291bnQgPSBuZXdSZXRyeUNvdW50O1xuICAgICAgICBvYnNlcnZlci5uZXh0KHsgdHlwZTogJ3N0YXJ0JywgaGVhZGVycywgaXNSZXRyeTogdHJ1ZSwgcmV0cnlOdW1iZXI6IGN1cnJlbnRSZXRyeUNvdW50LCByZXRyeURlbGF5OiBfZGVsYXkgfSk7XG4gICAgICB9LCBfZGVsYXkpO1xuICAgIH07XG5cbiAgICBjb25zdCBvbkxvYWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCB7IGhlYWRlcnMsIHN0YXR1c1RleHQsIHVybCB9ID0gcGFydGlhbEZyb21YaHIoKTtcblxuICAgICAgbGV0IHsgc3RhdHVzIH0gPSBwYXJ0aWFsRnJvbVhocigpO1xuXG4gICAgICBsZXQgYm9keTogdW5rbm93biB8IG51bGwgPSBudWxsO1xuXG4gICAgICBpZiAoc3RhdHVzICE9PSBIdHRwU3RhdHVzQ29kZS5Ob0NvbnRlbnQpIHtcbiAgICAgICAgYm9keSA9IHR5cGVvZiB4aHIucmVzcG9uc2UgPT09ICd1bmRlZmluZWQnID8geGhyLnJlc3BvbnNlVGV4dCA6IHhoci5yZXNwb25zZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXR1cyA9PT0gMCkge1xuICAgICAgICBzdGF0dXMgPSBib2R5ID8gSHR0cFN0YXR1c0NvZGUuT2sgOiAwO1xuICAgICAgfVxuXG4gICAgICBsZXQgb2sgPSBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcblxuICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nICYmIHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBvcmlnaW5hbEJvZHkgPSBib2R5O1xuICAgICAgICBib2R5ID0gYm9keS5yZXBsYWNlKFhTU0lfUFJFRklYLCAnJyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYm9keSA9IGJvZHkgIT09ICcnID8gSlNPTi5wYXJzZShib2R5IGFzIHN0cmluZykgOiBudWxsO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGJvZHkgPSBvcmlnaW5hbEJvZHk7XG5cbiAgICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICAgIG9rID0gZmFsc2U7XG4gICAgICAgICAgICBib2R5ID0geyBlcnJvciwgdGV4dDogYm9keSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob2spIHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc0V2ZW50OiBSZXF1ZXN0RXZlbnQ8UmVzcG9uc2U+ID0ge1xuICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIHJlc3BvbnNlOiBib2R5IGFzIFJlc3BvbnNlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGV4cGlyZXNJblNlY29uZHMgPSBjb25maWcuY2FjaGVBZGFwdGVyPy4oaGVhZGVycykgPz8gZXh0cmFjdEV4cGlyZXNJblNlY29uZHMoaGVhZGVycyk7XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJblRpbWVzdGFtcCA9IGJ1aWxkVGltZXN0YW1wRnJvbVNlY29uZHMoZXhwaXJlc0luU2Vjb25kcyk7XG5cbiAgICAgICAgaWYgKGV4cGlyZXNJblRpbWVzdGFtcCkge1xuICAgICAgICAgIHN1Y2Nlc3NFdmVudC5leHBpcmVzSW5UaW1lc3RhbXAgPSBleHBpcmVzSW5UaW1lc3RhbXA7XG4gICAgICAgIH1cblxuICAgICAgICBvYnNlcnZlci5uZXh0KHN1Y2Nlc3NFdmVudCk7XG5cbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZVJldHJ5KHtcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgZGV0YWlsOiBib2R5LFxuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBzdGF0dXNUZXh0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25FcnJvciA9IChlcnJvcjogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgdXJsIH0gPSBwYXJ0aWFsRnJvbVhocigpO1xuXG4gICAgICBoYW5kbGVSZXRyeSh7XG4gICAgICAgIHVybCxcbiAgICAgICAgZGV0YWlsOiBlcnJvcixcbiAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzIHx8IDAsXG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0IHx8ICdVbmtub3duIEVycm9yJyxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvbkRvd25Qcm9ncmVzcyA9IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBoZWFkZXJzIH0gPSBwYXJ0aWFsRnJvbVhocigpO1xuXG4gICAgICBjb25zdCBwcm9ncmVzczogUmVxdWVzdEV2ZW50ID0ge1xuICAgICAgICB0eXBlOiAnZG93bmxvYWQtcHJvZ3Jlc3MnLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBwcm9ncmVzczoge1xuICAgICAgICAgIGN1cnJlbnQ6IGV2ZW50LmxvYWRlZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGlmIChldmVudC5sZW5ndGhDb21wdXRhYmxlKSB7XG4gICAgICAgIGNvbnN0IHByb2dyZXNzUGVyY2VudCA9IChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCkgKiAxMDA7XG4gICAgICAgIHByb2dyZXNzLnByb2dyZXNzLnBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKHByb2dyZXNzUGVyY2VudCAqIDEwMCkgLyAxMDA7XG4gICAgICAgIHByb2dyZXNzLnByb2dyZXNzLnRvdGFsID0gZXZlbnQudG90YWw7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNwb25zZVR5cGUgPT09ICd0ZXh0JyAmJiAhIXhoci5yZXNwb25zZVRleHQpIHtcbiAgICAgICAgcHJvZ3Jlc3MucGFydGlhbFRleHQgPSB4aHIucmVzcG9uc2VUZXh0O1xuICAgICAgfVxuXG4gICAgICBvYnNlcnZlci5uZXh0KHByb2dyZXNzKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25VcFByb2dyZXNzID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGhlYWRlcnMgfSA9IHBhcnRpYWxGcm9tWGhyKCk7XG5cbiAgICAgIGNvbnN0IHByb2dyZXNzOiBSZXF1ZXN0RXZlbnQgPSB7XG4gICAgICAgIHR5cGU6ICd1cGxvYWQtcHJvZ3Jlc3MnLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBwcm9ncmVzczoge1xuICAgICAgICAgIGN1cnJlbnQ6IGV2ZW50LmxvYWRlZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGlmIChldmVudC5sZW5ndGhDb21wdXRhYmxlKSB7XG4gICAgICAgIGNvbnN0IHByb2dyZXNzUGVyY2VudCA9IChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCkgKiAxMDA7XG4gICAgICAgIHByb2dyZXNzLnByb2dyZXNzLnBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKHByb2dyZXNzUGVyY2VudCAqIDEwMCkgLyAxMDA7XG4gICAgICAgIHByb2dyZXNzLnByb2dyZXNzLnRvdGFsID0gZXZlbnQudG90YWw7XG4gICAgICB9XG5cbiAgICAgIG9ic2VydmVyLm5leHQocHJvZ3Jlc3MpO1xuICAgIH07XG5cbiAgICB4aHIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIG9uTG9hZCk7XG4gICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWVvdXQnLCBvbkVycm9yKTtcbiAgICB4aHIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkVycm9yKTtcblxuICAgIGlmIChjb25maWcucmVwb3J0UHJvZ3Jlc3MpIHtcbiAgICAgIHhoci5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9uRG93blByb2dyZXNzKTtcblxuICAgICAgaWYgKHJlcUJvZHkgIT09IG51bGwgJiYgeGhyLnVwbG9hZCkge1xuICAgICAgICB4aHIudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgb25VcFByb2dyZXNzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZChyZXFCb2R5KTtcbiAgICBvYnNlcnZlci5uZXh0KHsgdHlwZTogJ3N0YXJ0JywgaGVhZGVycyB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB4aHIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgIHhoci5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uRXJyb3IpO1xuICAgICAgeGhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkxvYWQpO1xuICAgICAgeGhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RpbWVvdXQnLCBvbkVycm9yKTtcblxuICAgICAgaWYgKHJldHJ5VGltZW91dCkge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHJldHJ5VGltZW91dCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcucmVwb3J0UHJvZ3Jlc3MpIHtcbiAgICAgICAgeGhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgb25Eb3duUHJvZ3Jlc3MpO1xuXG4gICAgICAgIGlmIChyZXFCb2R5ICE9PSBudWxsICYmIHhoci51cGxvYWQpIHtcbiAgICAgICAgICB4aHIudXBsb2FkLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgb25VcFByb2dyZXNzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgIT09IHhoci5ET05FKSB7XG4gICAgICAgIHhoci5hYm9ydCgpO1xuICAgICAgfVxuXG4gICAgICBvYnNlcnZlci5uZXh0KHsgdHlwZTogJ2NhbmNlbCcsIGhlYWRlcnMgfSk7XG4gICAgfTtcbiAgfSk7XG59O1xuIl19
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9yZXF1ZXN0L3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBRUwseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLGNBQWMsRUFDZCxTQUFTLEVBQ1QsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYixrQkFBa0IsR0FDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQXFCLE1BQXFCLEVBQXNDLEVBQUU7SUFDdkcsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUM7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7SUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQztJQUNyRCxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBRXZDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUEwQyxFQUFFLEVBQUU7UUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDOUMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFO2dCQUMxQixHQUFHLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQzthQUM1QjtZQUVELGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFM0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2pDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsbUNBQW1DLENBQUMsQ0FBQzthQUNyRTtZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFbkQsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7aUJBQ3BEO2FBQ0Y7WUFFRCxHQUFHLENBQUMsWUFBWSxHQUFHLFlBQVksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3JFLENBQUMsQ0FBQztRQUVGLFFBQVEsRUFBRSxDQUFDO1FBRVgsTUFBTSxjQUFjLEdBQUcsR0FBb0IsRUFBRTtZQUMzQyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztZQUMxQyxNQUFNLE9BQU8sR0FBRywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1lBRXhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNoRSxDQUFDLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUMxQyxNQUFNLGFBQWEsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDNUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRXZGLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ25ELFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsT0FBTzthQUNSO1lBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQztZQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUVoRyxZQUFZLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BDLFFBQVEsRUFBRSxDQUFDO2dCQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2xCLGlCQUFpQixHQUFHLGFBQWEsQ0FBQztnQkFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQy9HLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ3hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBRXRELElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUVsQyxJQUFJLElBQUksR0FBbUIsSUFBSSxDQUFDO1lBRWhDLElBQUksTUFBTSx1Q0FBNkIsRUFBRTtnQkFDdkMsSUFBSSxHQUFHLE9BQU8sR0FBRyxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7YUFDOUU7WUFFRCxJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2hCLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyw2QkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2QztZQUVELElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUV2QyxJQUFJLFlBQVksS0FBSyxNQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUN2RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQzFCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckMsSUFBSTtvQkFDRixJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2lCQUN4RDtnQkFBQyxPQUFPLEtBQUssRUFBRTtvQkFDZCxJQUFJLEdBQUcsWUFBWSxDQUFDO29CQUVwQixJQUFJLEVBQUUsRUFBRTt3QkFDTixFQUFFLEdBQUcsS0FBSyxDQUFDO3dCQUNYLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7cUJBQzlCO2lCQUNGO2FBQ0Y7aUJBQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLFlBQVksSUFBSSxFQUFFO2dCQUN0QyxJQUFJO29CQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUUvQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUU7d0JBQ3BDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN6Qjt5QkFBTTt3QkFDTCxJQUFJLEdBQUcsSUFBSSxDQUFDO3FCQUNiO2lCQUNGO2dCQUFDLE9BQU8sS0FBSyxFQUFFO29CQUNkLG9CQUFvQjtpQkFDckI7YUFDRjtZQUVELElBQUksRUFBRSxFQUFFO2dCQUNOLE1BQU0sWUFBWSxHQUEyQjtvQkFDM0MsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsT0FBTztvQkFDUCxRQUFRLEVBQUUsSUFBZ0I7aUJBQzNCLENBQUM7Z0JBRUYsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVGLE1BQU0sa0JBQWtCLEdBQUcseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFFdkUsSUFBSSxrQkFBa0IsRUFBRTtvQkFDdEIsWUFBWSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO2lCQUN0RDtnQkFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUU1QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDckI7aUJBQU07Z0JBQ0wsV0FBVyxDQUFDO29CQUNWLEdBQUc7b0JBQ0gsTUFBTSxFQUFFLElBQUk7b0JBQ1osTUFBTTtvQkFDTixVQUFVO2lCQUNYLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUMvQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7WUFFakMsV0FBVyxDQUFDO2dCQUNWLEdBQUc7Z0JBQ0gsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFDdkIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLElBQUksZUFBZTthQUM5QyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUM5QyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7WUFFckMsTUFBTSxRQUFRLEdBQWlCO2dCQUM3QixJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixPQUFPO2dCQUNQLFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU07aUJBQ3RCO2FBQ0YsQ0FBQztZQUVGLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQixNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDM0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUN2RSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ3ZDO1lBRUQsSUFBSSxZQUFZLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFO2dCQUNqRCxRQUFRLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7YUFDekM7WUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQzVDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUVyQyxNQUFNLFFBQVEsR0FBaUI7Z0JBQzdCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLE9BQU87Z0JBQ1AsUUFBUSxFQUFFO29CQUNSLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTTtpQkFDdEI7YUFDRixDQUFDO1lBRUYsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzFCLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUMzRCxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZFLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDdkM7WUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQztRQUVGLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFdkMsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO1lBQ3pCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFFakQsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7UUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFMUMsT0FBTyxHQUFHLEVBQUU7WUFDVixHQUFHLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDMUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN4QyxHQUFHLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTVDLElBQUksWUFBWSxFQUFFO2dCQUNoQixNQUFNLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ25DO1lBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO2dCQUN6QixHQUFHLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUVwRCxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRTtvQkFDbEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7aUJBQzFEO2FBQ0Y7WUFFRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRTtnQkFDL0IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2I7WUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhcnRpYWxYaHJTdGF0ZSwgUmVxdWVzdENvbmZpZywgUmVxdWVzdEVycm9yLCBSZXF1ZXN0RXZlbnQgfSBmcm9tICcuL3JlcXVlc3QudHlwZXMnO1xuaW1wb3J0IHtcbiAgSHR0cFN0YXR1c0NvZGUsXG4gIGJ1aWxkVGltZXN0YW1wRnJvbVNlY29uZHMsXG4gIGRldGVjdENvbnRlbnRUeXBlSGVhZGVyLFxuICBleHRyYWN0RXhwaXJlc0luU2Vjb25kcyxcbiAgZm9yRWFjaEhlYWRlcixcbiAgZ2V0UmVzcG9uc2VVcmwsXG4gIGhhc0hlYWRlcixcbiAgcGFyc2VBbGxYaHJSZXNwb25zZUhlYWRlcnMsXG4gIHNlcmlhbGl6ZUJvZHksXG4gIHNob3VsZFJldHJ5UmVxdWVzdCxcbn0gZnJvbSAnLi9yZXF1ZXN0LnV0aWwnO1xuXG5jb25zdCBYU1NJX1BSRUZJWCA9IC9eXFwpXFxdXFx9Jyw/XFxuLztcblxuZXhwb3J0IGNvbnN0IHJlcXVlc3QgPSA8UmVzcG9uc2UgPSB1bmtub3duPihjb25maWc6IFJlcXVlc3RDb25maWcpOiBPYnNlcnZhYmxlPFJlcXVlc3RFdmVudDxSZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xuICBjb25zdCByZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlIHx8ICdqc29uJztcbiAgY29uc3QgYm9keSA9IGNvbmZpZy5ib2R5IHx8IG51bGw7XG4gIGNvbnN0IHVybCA9IGNvbmZpZy51cmxXaXRoUGFyYW1zLnNwbGl0KCc/JylbMF07XG4gIGNvbnN0IHJldHJ5Rm4gPSBjb25maWcucmV0cnlGbiB8fCBzaG91bGRSZXRyeVJlcXVlc3Q7XG4gIGxldCBjdXJyZW50UmV0cnlDb3VudCA9IDA7XG4gIGxldCByZXRyeVRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPFJlcXVlc3RFdmVudDxSZXNwb25zZT4+KSA9PiB7XG4gICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgY29uc3QgcmVxQm9keSA9IHNlcmlhbGl6ZUJvZHkoYm9keSk7XG5cbiAgICBjb25zdCBzZXR1cFhociA9ICgpID0+IHtcbiAgICAgIHhoci5vcGVuKGNvbmZpZy5tZXRob2QsIGNvbmZpZy51cmxXaXRoUGFyYW1zKTtcbiAgICAgIGlmIChjb25maWcud2l0aENyZWRlbnRpYWxzKSB7XG4gICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBmb3JFYWNoSGVhZGVyKGhlYWRlcnMsIChuYW1lLCB2YWx1ZSkgPT4geGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpKTtcblxuICAgICAgaWYgKCFoYXNIZWFkZXIoaGVhZGVycywgJ0FjY2VwdCcpKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzSGVhZGVyKGhlYWRlcnMsICdDb250ZW50LVR5cGUnKSkge1xuICAgICAgICBjb25zdCBkZXRlY3RlZFR5cGUgPSBkZXRlY3RDb250ZW50VHlwZUhlYWRlcihib2R5KTtcblxuICAgICAgICBpZiAoZGV0ZWN0ZWRUeXBlKSB7XG4gICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGRldGVjdGVkVHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nID8gcmVzcG9uc2VUeXBlIDogJ3RleHQnO1xuICAgIH07XG5cbiAgICBzZXR1cFhocigpO1xuXG4gICAgY29uc3QgcGFydGlhbEZyb21YaHIgPSAoKTogUGFydGlhbFhoclN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHN0YXR1c1RleHQgPSB4aHIuc3RhdHVzVGV4dCB8fCAnT0snO1xuICAgICAgY29uc3QgaGVhZGVycyA9IHBhcnNlQWxsWGhyUmVzcG9uc2VIZWFkZXJzKHhocik7XG4gICAgICBjb25zdCBfdXJsID0gZ2V0UmVzcG9uc2VVcmwoeGhyKSB8fCB1cmw7XG5cbiAgICAgIHJldHVybiB7IGhlYWRlcnMsIHN0YXR1czogeGhyLnN0YXR1cywgc3RhdHVzVGV4dCwgdXJsOiBfdXJsIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJldHJ5ID0gKGVycm9yOiBSZXF1ZXN0RXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IG5ld1JldHJ5Q291bnQgPSBjdXJyZW50UmV0cnlDb3VudCArIDE7XG4gICAgICBjb25zdCB7IGhlYWRlcnMgfSA9IHBhcnRpYWxGcm9tWGhyKCk7XG4gICAgICBjb25zdCB7IHJldHJ5LCBkZWxheSB9ID0gcmV0cnlGbih7IGN1cnJlbnRSZXRyeUNvdW50OiBuZXdSZXRyeUNvdW50LCBoZWFkZXJzLCBlcnJvciB9KTtcblxuICAgICAgaWYgKCFyZXRyeSkge1xuICAgICAgICBvYnNlcnZlci5uZXh0KHsgdHlwZTogJ2ZhaWx1cmUnLCBoZWFkZXJzLCBlcnJvciB9KTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBfZGVsYXkgPSBkZWxheSA/PyAxMDAwO1xuICAgICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICdkZWxheS1yZXRyeScsIGhlYWRlcnMsIHJldHJ5TnVtYmVyOiBuZXdSZXRyeUNvdW50LCByZXRyeURlbGF5OiBfZGVsYXkgfSk7XG5cbiAgICAgIHJldHJ5VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0dXBYaHIoKTtcbiAgICAgICAgeGhyLnNlbmQocmVxQm9keSk7XG4gICAgICAgIGN1cnJlbnRSZXRyeUNvdW50ID0gbmV3UmV0cnlDb3VudDtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICdzdGFydCcsIGhlYWRlcnMsIGlzUmV0cnk6IHRydWUsIHJldHJ5TnVtYmVyOiBjdXJyZW50UmV0cnlDb3VudCwgcmV0cnlEZWxheTogX2RlbGF5IH0pO1xuICAgICAgfSwgX2RlbGF5KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Mb2FkID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgeyBoZWFkZXJzLCBzdGF0dXNUZXh0LCB1cmwgfSA9IHBhcnRpYWxGcm9tWGhyKCk7XG5cbiAgICAgIGxldCB7IHN0YXR1cyB9ID0gcGFydGlhbEZyb21YaHIoKTtcblxuICAgICAgbGV0IGJvZHk6IHVua25vd24gfCBudWxsID0gbnVsbDtcblxuICAgICAgaWYgKHN0YXR1cyAhPT0gSHR0cFN0YXR1c0NvZGUuTm9Db250ZW50KSB7XG4gICAgICAgIGJvZHkgPSB0eXBlb2YgeGhyLnJlc3BvbnNlID09PSAndW5kZWZpbmVkJyA/IHhoci5yZXNwb25zZVRleHQgOiB4aHIucmVzcG9uc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0dXMgPT09IDApIHtcbiAgICAgICAgc3RhdHVzID0gYm9keSA/IEh0dHBTdGF0dXNDb2RlLk9rIDogMDtcbiAgICAgIH1cblxuICAgICAgbGV0IG9rID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG5cbiAgICAgIGlmIChyZXNwb25zZVR5cGUgPT09ICdqc29uJyAmJiB0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxCb2R5ID0gYm9keTtcbiAgICAgICAgYm9keSA9IGJvZHkucmVwbGFjZShYU1NJX1BSRUZJWCwgJycpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGJvZHkgPSBib2R5ICE9PSAnJyA/IEpTT04ucGFyc2UoYm9keSBhcyBzdHJpbmcpIDogbnVsbDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBib2R5ID0gb3JpZ2luYWxCb2R5O1xuXG4gICAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgICBvayA9IGZhbHNlO1xuICAgICAgICAgICAgYm9keSA9IHsgZXJyb3IsIHRleHQ6IGJvZHkgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIW9rICYmIGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJvZHkudGV4dCgpO1xuXG4gICAgICAgICAgaWYgKGJvZHkudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSB7XG4gICAgICAgICAgICBib2R5ID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYm9keSA9IHRleHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIElnbm9yZSB0aGUgZXJyb3IuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9rKSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NFdmVudDogUmVxdWVzdEV2ZW50PFJlc3BvbnNlPiA9IHtcbiAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICByZXNwb25zZTogYm9keSBhcyBSZXNwb25zZSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBleHBpcmVzSW5TZWNvbmRzID0gY29uZmlnLmNhY2hlQWRhcHRlcj8uKGhlYWRlcnMpID8/IGV4dHJhY3RFeHBpcmVzSW5TZWNvbmRzKGhlYWRlcnMpO1xuICAgICAgICBjb25zdCBleHBpcmVzSW5UaW1lc3RhbXAgPSBidWlsZFRpbWVzdGFtcEZyb21TZWNvbmRzKGV4cGlyZXNJblNlY29uZHMpO1xuXG4gICAgICAgIGlmIChleHBpcmVzSW5UaW1lc3RhbXApIHtcbiAgICAgICAgICBzdWNjZXNzRXZlbnQuZXhwaXJlc0luVGltZXN0YW1wID0gZXhwaXJlc0luVGltZXN0YW1wO1xuICAgICAgICB9XG5cbiAgICAgICAgb2JzZXJ2ZXIubmV4dChzdWNjZXNzRXZlbnQpO1xuXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVSZXRyeSh7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGRldGFpbDogYm9keSxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyb3I6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IHVybCB9ID0gcGFydGlhbEZyb21YaHIoKTtcblxuICAgICAgaGFuZGxlUmV0cnkoe1xuICAgICAgICB1cmwsXG4gICAgICAgIGRldGFpbDogZXJyb3IsXG4gICAgICAgIHN0YXR1czogeGhyLnN0YXR1cyB8fCAwLFxuICAgICAgICBzdGF0dXNUZXh0OiB4aHIuc3RhdHVzVGV4dCB8fCAnVW5rbm93biBFcnJvcicsXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Eb3duUHJvZ3Jlc3MgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gcGFydGlhbEZyb21YaHIoKTtcblxuICAgICAgY29uc3QgcHJvZ3Jlc3M6IFJlcXVlc3RFdmVudCA9IHtcbiAgICAgICAgdHlwZTogJ2Rvd25sb2FkLXByb2dyZXNzJyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICBjdXJyZW50OiBldmVudC5sb2FkZWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBpZiAoZXZlbnQubGVuZ3RoQ29tcHV0YWJsZSkge1xuICAgICAgICBjb25zdCBwcm9ncmVzc1BlcmNlbnQgPSAoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpICogMTAwO1xuICAgICAgICBwcm9ncmVzcy5wcm9ncmVzcy5wZXJjZW50YWdlID0gTWF0aC5yb3VuZChwcm9ncmVzc1BlcmNlbnQgKiAxMDApIC8gMTAwO1xuICAgICAgICBwcm9ncmVzcy5wcm9ncmVzcy50b3RhbCA9IGV2ZW50LnRvdGFsO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzcG9uc2VUeXBlID09PSAndGV4dCcgJiYgISF4aHIucmVzcG9uc2VUZXh0KSB7XG4gICAgICAgIHByb2dyZXNzLnBhcnRpYWxUZXh0ID0geGhyLnJlc3BvbnNlVGV4dDtcbiAgICAgIH1cblxuICAgICAgb2JzZXJ2ZXIubmV4dChwcm9ncmVzcyk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uVXBQcm9ncmVzcyA9IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBoZWFkZXJzIH0gPSBwYXJ0aWFsRnJvbVhocigpO1xuXG4gICAgICBjb25zdCBwcm9ncmVzczogUmVxdWVzdEV2ZW50ID0ge1xuICAgICAgICB0eXBlOiAndXBsb2FkLXByb2dyZXNzJyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICBjdXJyZW50OiBldmVudC5sb2FkZWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBpZiAoZXZlbnQubGVuZ3RoQ29tcHV0YWJsZSkge1xuICAgICAgICBjb25zdCBwcm9ncmVzc1BlcmNlbnQgPSAoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpICogMTAwO1xuICAgICAgICBwcm9ncmVzcy5wcm9ncmVzcy5wZXJjZW50YWdlID0gTWF0aC5yb3VuZChwcm9ncmVzc1BlcmNlbnQgKiAxMDApIC8gMTAwO1xuICAgICAgICBwcm9ncmVzcy5wcm9ncmVzcy50b3RhbCA9IGV2ZW50LnRvdGFsO1xuICAgICAgfVxuXG4gICAgICBvYnNlcnZlci5uZXh0KHByb2dyZXNzKTtcbiAgICB9O1xuXG4gICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkxvYWQpO1xuICAgIHhoci5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgIHhoci5hZGRFdmVudExpc3RlbmVyKCd0aW1lb3V0Jywgb25FcnJvcik7XG4gICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25FcnJvcik7XG5cbiAgICBpZiAoY29uZmlnLnJlcG9ydFByb2dyZXNzKSB7XG4gICAgICB4aHIuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBvbkRvd25Qcm9ncmVzcyk7XG5cbiAgICAgIGlmIChyZXFCb2R5ICE9PSBudWxsICYmIHhoci51cGxvYWQpIHtcbiAgICAgICAgeGhyLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9uVXBQcm9ncmVzcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLnNlbmQocmVxQm9keSk7XG4gICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICdzdGFydCcsIGhlYWRlcnMgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgeGhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICB4aHIucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkVycm9yKTtcbiAgICAgIHhoci5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgb25Mb2FkKTtcbiAgICAgIHhoci5yZW1vdmVFdmVudExpc3RlbmVyKCd0aW1lb3V0Jywgb25FcnJvcik7XG5cbiAgICAgIGlmIChyZXRyeVRpbWVvdXQpIHtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChyZXRyeVRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnJlcG9ydFByb2dyZXNzKSB7XG4gICAgICAgIHhoci5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9uRG93blByb2dyZXNzKTtcblxuICAgICAgICBpZiAocmVxQm9keSAhPT0gbnVsbCAmJiB4aHIudXBsb2FkKSB7XG4gICAgICAgICAgeGhyLnVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9uVXBQcm9ncmVzcyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9PSB4aHIuRE9ORSkge1xuICAgICAgICB4aHIuYWJvcnQoKTtcbiAgICAgIH1cblxuICAgICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICdjYW5jZWwnLCBoZWFkZXJzIH0pO1xuICAgIH07XG4gIH0pO1xufTtcbiJdfQ==
|