@decaf-ts/for-angular 0.0.19 → 0.0.21
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/README.md +2 -2
- package/components/crud-form/crud-form.component.d.ts +1 -1
- package/components/fieldset/fieldset.component.d.ts +1 -1
- package/components/filter/filter.component.d.ts +1 -1
- package/components/for-angular-components.module.d.ts +1 -2
- package/components/list/constants.d.ts +5 -9
- package/components/list-item/list-item.component.d.ts +1 -1
- package/engine/NgxBaseComponent.d.ts +1 -1
- package/esm2022/components/component-renderer/component-renderer.component.mjs +7 -7
- package/esm2022/components/crud-field/crud-field.component.mjs +13 -12
- package/esm2022/components/crud-form/crud-form.component.mjs +9 -9
- package/esm2022/components/empty-state/empty-state.component.mjs +8 -12
- package/esm2022/components/fieldset/fieldset.component.mjs +27 -19
- package/esm2022/components/filter/filter.component.mjs +14 -13
- package/esm2022/components/for-angular-components.module.mjs +17 -9
- package/esm2022/components/layout/layout.component.mjs +6 -7
- package/esm2022/components/list/constants.mjs +1 -1
- package/esm2022/components/list/list.component.mjs +8 -11
- package/esm2022/components/list-item/list-item.component.mjs +9 -12
- package/esm2022/components/model-renderer/model-renderer.component.mjs +5 -7
- package/esm2022/components/pagination/pagination.component.mjs +7 -9
- package/esm2022/components/searchbar/searchbar.component.mjs +5 -7
- package/esm2022/directives/collapsable.directive.mjs +3 -3
- package/esm2022/engine/NgxBaseComponent.mjs +11 -10
- package/esm2022/engine/NgxFormService.mjs +12 -3
- package/esm2022/engine/NgxRenderingEngine.mjs +3 -2
- package/esm2022/for-angular-common.module.mjs +82 -0
- package/esm2022/helpers/utils.mjs +2 -2
- package/esm2022/i18n/Loader.mjs +10 -6
- package/esm2022/i18n/data/en.json +80 -0
- package/esm2022/public-apis.mjs +3 -2
- package/fesm2022/decaf-ts-for-angular.mjs +255 -170
- package/fesm2022/decaf-ts-for-angular.mjs.map +1 -1
- package/for-angular-common.module.d.ts +44 -0
- package/package.json +6 -3
- package/public-apis.d.ts +2 -1
- package/esm2022/for-angular.module.mjs +0 -118
- package/for-angular.module.d.ts +0 -45
|
@@ -2,7 +2,6 @@ import { __decorate, __metadata } from "tslib";
|
|
|
2
2
|
import { Component, EventEmitter, HostListener, inject, Input, Output, ViewChild } from '@angular/core';
|
|
3
3
|
import { OperationKeys } from '@decaf-ts/db-decorators';
|
|
4
4
|
import { NgxBaseComponent } from '../../engine/NgxBaseComponent';
|
|
5
|
-
import { ForAngularModule } from '../../for-angular.module';
|
|
6
5
|
import { removeFocusTrap, stringToBoolean } from '../../helpers/utils';
|
|
7
6
|
import { getWindowWidth, windowEventEmitter } from '../../helpers/utils';
|
|
8
7
|
import { Dynamic, EventConstants } from '../../engine';
|
|
@@ -10,10 +9,8 @@ import { NavController } from '@ionic/angular';
|
|
|
10
9
|
import { IonButton, IonItem, IonLabel, IonList, IonContent, IonIcon, IonListHeader, IonPopover, IonItemSliding, IonItemOptions, IonItemOption } from '@ionic/angular/standalone';
|
|
11
10
|
import * as AllIcons from 'ionicons/icons';
|
|
12
11
|
import { addIcons } from 'ionicons';
|
|
12
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@ionic/angular/standalone";
|
|
15
|
-
import * as i2 from "@angular/common";
|
|
16
|
-
import * as i3 from "@ngx-translate/core";
|
|
17
14
|
/**
|
|
18
15
|
* @description A component for displaying a list item with various customization options.
|
|
19
16
|
* @summary The ListItemComponent is an Angular component that extends NgxBaseComponent. It provides a flexible and customizable list item interface with support for icons, buttons, and various text elements. The component also handles actions and navigation based on user interactions.
|
|
@@ -244,7 +241,7 @@ let ListItemComponent = class ListItemComponent extends NgxBaseComponent {
|
|
|
244
241
|
* L->>W: getWindowWidth()
|
|
245
242
|
* W-->>L: Return current width
|
|
246
243
|
* L->>L: Store windowWidth
|
|
247
|
-
* alt No operations OR width >
|
|
244
|
+
* alt No operations OR width > 639px
|
|
248
245
|
* L->>U: showSlideItems = false
|
|
249
246
|
* else Operations include UPDATE/DELETE
|
|
250
247
|
* L->>U: showSlideItems = true
|
|
@@ -255,7 +252,7 @@ let ListItemComponent = class ListItemComponent extends NgxBaseComponent {
|
|
|
255
252
|
*/
|
|
256
253
|
enableSlideItems() {
|
|
257
254
|
this.windowWidth = getWindowWidth();
|
|
258
|
-
if (!this.operations?.length || this.windowWidth >
|
|
255
|
+
if (!this.operations?.length || this.windowWidth > 639)
|
|
259
256
|
return this.showSlideItems = false;
|
|
260
257
|
this.showSlideItems = this.operations.includes(OperationKeys.UPDATE) || this.operations.includes(OperationKeys.DELETE);
|
|
261
258
|
return this.showSlideItems;
|
|
@@ -354,18 +351,18 @@ let ListItemComponent = class ListItemComponent extends NgxBaseComponent {
|
|
|
354
351
|
this.actionMenuComponent.event = event;
|
|
355
352
|
this.actionMenuOpen = true;
|
|
356
353
|
}
|
|
357
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
358
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ListItemComponent, isStandalone: true, selector: "ngx-decaf-list-item", inputs: { lines: "lines", item: "item", icon: "icon", iconSlot: "iconSlot", button: "button", title: "title", description: "description", info: "info", subinfo: "subinfo" }, outputs: { clickEvent: "clickEvent" }, host: { listeners: { "window:resize": "enableSlideItems($event)" } }, viewQueries: [{ propertyName: "actionMenuComponent", first: true, predicate: ["actionMenuComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n@if(title || description) {\n <ion-item-sliding #component>\n <ion-item\n [id]=\"uid\"\n [lines]=\"lines\"\n [button]=\"button\"\n [class]=\"className\"\n (click)=\"operations?.includes('read') ? handleAction('read', $event, component) : ''\n \">\n @if(icon && lines !== 'inset') {\n <div class=\"dcf-icon\" [slot]=\"iconSlot\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-flex dcf-flex-middle dcf-grid-collapse\" dcf-grid>\n @if(icon && lines === 'inset') {\n <div class=\"dcf-icon dcf-grid-icon\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand@s dcf-width-1-1 dcf-label\">\n <ion-label class=\"dcf-item-title\" [innerHTML]=\"uid + ' - ' + title\" ></ion-label>\n <div *ngIf =\"description\" class=\"dcf-description\" [innerHTML]=\"description\"></div>\n </div>\n @if(info || subinfo) {\n <div class=\"dcf-width-auto@s dcf-width-expand dcf-info dcf-flex dcf-flex-right@s\">\n <div>\n <span *ngIf=\"info\" [innerHTML]=\"info\"></span>\n <div *ngIf=\"subinfo\" class=\"dcf-subinfo dcf-text-truncate\" [innerHTML]=\"subinfo\" ></div>\n </div>\n </div>\n }\n\n <div class=\"dcf-width-auto dcf-flex dcf-flex-middle dcf-flex-right\">\n @if((operations.includes('delete') || operations.includes('update')) && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n <ion-button class=\"dcf-hidden@m\" shape=\"round\" fill=\"clear\" color=\"primary\" (click)=\"presentActionsMenu($event)\">\n <ion-icon slot=\"icon-only\" aria-hidden=\"true\" name=\"ellipsis-vertical-outline\"></ion-icon>\n </ion-button>\n <ion-popover\n #actionMenuComponent\n side=\"bottom\"\n alignment=\"left\"\n\n [isOpen]=\"actionMenuOpen\"\n (didDismiss)=\"actionMenuOpen = false\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <ion-list-header>\n <h4 class=\"dcf-text-capitalize\" [innerHTML]=\"'actions' | translate\"></h4>\n </ion-list-header>\n @for (operation of ['update', 'delete']; track operation) {\n @if(operations.includes(operation)) {\n <ion-item [button]=\"true\" (click)=\"handleAction(operation, $event, component)\">\n <ion-avatar class=\"dcf-flex dcf-flex-middle\" aria-hidden=\"true\" slot=\"start\">\n @if(operation === 'update') {\n <ion-icon color=\"primary\" aria-hidden=\"true\" name=\"create-outline\"></ion-icon>\n } @else {\n <ion-icon color=\"danger\" aria-hidden=\"true\" name=\"trash\"></ion-icon>\n }\n </ion-avatar>\n <ion-label class=\"dcf-text-capitalize\">{{ operation | translate }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </div>\n }\n <!-- @if(operations?.length && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n @if(operations?.includes('update')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"primary\" (click)=\"handleAction('update', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-button>\n }\n @if(operations?.includes('delete')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"danger\" (click)=\"handleAction('delete', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n }\n </div>\n } -->\n @if(windowWidth > 768) {\n <div id=\"end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n </div>\n }\n </div>\n </div>\n </div>\n </ion-item>\n @if(showSlideItems && uid) {\n <ion-item-options side=\"end\" (ionSwipe)=\"operations.length === 1 ? handleAction(operations[0], $event, component) : ''\">\n @if(operations?.includes('update')) {\n <ion-item-option class=\"dcf-update\" (click)=\"handleAction('update', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-item-option>\n }\n @if(operations?.includes('delete')) {\n <ion-item-option class=\"dcf- delete\" (click)=\"handleAction('delete', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n }\n </ion-item-options>\n }\n </ion-item-sliding>\n}\n", styles: ["ion-item{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--background-hover: var(--dcf-color-gray-8);--background-focused: var(--dcf-color-gray-8)}@media (prefers-color-scheme: dark){ion-item{--background-hover-opacity: .25;--background-focused-opacity: .25}}@media (prefers-color-scheme: light){ion-item{--background-hover-opacity: .1;--background-focused-opacity: .1}}ion-item.item-lines-full{--padding-top: .5rem;--padding-bottom: .5rem;--padding-start: .25rem;-padding-end:.25rem;padding:0 .65rem}ion-item.item-lines-inset{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important}@media (prefers-color-scheme: light){ion-item{--border-color: var(--dcf-color-gray-2)}ion-item .dcf-info{color:var(--dcf-color-gray-6)}ion-item .dcf-item-title{color:var(--dcf-color-gray-8)}ion-item .dcf-description{color:var(--dcf-color-gray-6)}}@media (prefers-color-scheme: dark){ion-item{--border-color: var(--dcf-color-gray-6)}ion-item .dcf-description{color:var(--dcf-color-gray-4)}}ion-item .dcf-info{min-width:10vw;background:transparent!important}ion-item .dcf-grid{padding:0!important;margin:0!important;min-width:100%!important}ion-item .dcf-item-title{font-style:normal;font-weight:700}ion-item .dcf-description{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:400;font-size:.925rem}ion-item::part(native){min-width:100%}ion-item [slot=start]{margin-right:.5rem!important}ion-item [slot=end]{margin-left:.5rem!important}ion-item .dcf-info{font-size:.9rem}ion-item .dcf-info .dcf-subinfo.dcf-line{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item .dcf-info .dcf-subinfo.dcf-line{display:block;margin-left:0}}ion-item #dcf-actions{padding:5px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-actions{display:none;pointer-events:none!important;cursor:text!important}ion-item #dcf-actions *{display:none;pointer-events:none!important;cursor:text!important}}ion-item #dcf-actions ion-button{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--dcf-color-gray-2) !important}ion-item #dcf-actions ion-button ion-icon{position:relative;left:-1px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-end,ion-item [slot=end]{display:none!important}}ion-item #dcf-end{padding-top:5px;display:flex;align-items:flex-end}ion-item .dcf-icon{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item .dcf-icon.dcf-grid-icon{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: var(--dcf-width-s)){ion-item .dcf-icon{align-items:flex-start!important}}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-7);--background: var(--dcf-color-gray-1) !important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-1)!important;--background: var(--dcf-color-gray-7) !important}}ion-item .dcf-icon ion-button ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar{width:48px;height:48px;display:flex;justify-content:center;align-items:center;text-align:center}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-7);background:var(--dcf-color-gray-1)!important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-1)!important;background:var(--dcf-background-color)!important}}ion-item .dcf-icon ion-avatar ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar .dcf-icon-large{transform:translateY(5px)}ion-item-sliding{box-sizing:border-box}@media (prefers-color-scheme: light){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),.25)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-7)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-primary)!important}}@media (prefers-color-scheme: dark){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),1)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-2)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-gray-2)!important}}ion-item-sliding[class*=active-slide]{border-color:var(--dcf-color-gray-3)}ion-item-sliding ion-item-option{color:var(--dcf-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--dcf-color-dark-rgb),.15)!important;background:var(--dcf-color-gray-3)}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "component", type: IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: IonItemOption, selector: "ion-item-option", inputs: ["color", "disabled", "download", "expandable", "href", "mode", "rel", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonPopover, selector: "ion-popover" }] }); }
|
|
354
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
355
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListItemComponent, isStandalone: true, selector: "ngx-decaf-list-item", inputs: { lines: "lines", item: "item", icon: "icon", iconSlot: "iconSlot", button: "button", title: "title", description: "description", info: "info", subinfo: "subinfo" }, outputs: { clickEvent: "clickEvent" }, host: { listeners: { "window:resize": "enableSlideItems($event)" } }, viewQueries: [{ propertyName: "actionMenuComponent", first: true, predicate: ["actionMenuComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n@if(title || description) {\n <ion-item-sliding #component>\n <ion-item\n [id]=\"uid\"\n [lines]=\"lines\"\n [button]=\"button\"\n [class]=\"className\"\n (click)=\"operations?.includes('read') ? handleAction('read', $event, component) : ''\n \">\n @if(icon && lines !== 'inset') {\n <div class=\"dcf-icon\" [slot]=\"iconSlot\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-flex dcf-flex-middle dcf-grid-collapse\" dcf-grid>\n @if(icon && lines === 'inset') {\n <div class=\"dcf-icon dcf-grid-icon\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand@s dcf-width-1-1 dcf-label\">\n <ion-label class=\"dcf-item-title\" [innerHTML]=\"uid + ' - ' + title\" ></ion-label>\n @if(description) {\n <div class=\"dcf-description\" [innerHTML]=\"description\"></div>\n }\n </div>\n @if(info || subinfo) {\n <div class=\"dcf-width-auto@s dcf-width-expand dcf-info dcf-flex dcf-flex-right@s\">\n <div>\n @if(info) {\n <span [innerHTML]=\"info\"></span>\n }\n @if(subinfo) {\n <div class=\"dcf-subinfo dcf-text-truncate\" [innerHTML]=\"subinfo\" ></div>\n }\n </div>\n </div>\n }\n\n <div class=\"dcf-width-auto dcf-flex dcf-flex-middle dcf-flex-right\">\n @if((operations.includes('delete') || operations.includes('update')) && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n <ion-button class=\"dcf-hidden@m\" shape=\"round\" fill=\"clear\" color=\"primary\" (click)=\"presentActionsMenu($event)\">\n <ion-icon slot=\"icon-only\" aria-hidden=\"true\" name=\"ellipsis-vertical-outline\"></ion-icon>\n </ion-button>\n <ion-popover\n #actionMenuComponent\n side=\"bottom\"\n alignment=\"left\"\n\n [isOpen]=\"actionMenuOpen\"\n (didDismiss)=\"actionMenuOpen = false\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <ion-list-header>\n <h4 class=\"dcf-text-capitalize\" [innerHTML]=\"'actions' | translate\"></h4>\n </ion-list-header>\n @for (operation of ['update', 'delete']; track operation) {\n @if(operations.includes(operation)) {\n <ion-item [button]=\"true\" (click)=\"handleAction(operation, $event, component)\">\n <ion-avatar class=\"dcf-flex dcf-flex-middle\" aria-hidden=\"true\" slot=\"start\">\n @if(operation === 'update') {\n <ion-icon color=\"primary\" aria-hidden=\"true\" name=\"create-outline\"></ion-icon>\n } @else {\n <ion-icon color=\"danger\" aria-hidden=\"true\" name=\"trash\"></ion-icon>\n }\n </ion-avatar>\n <ion-label class=\"dcf-text-capitalize\">{{ operation | translate }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </div>\n }\n <!-- @if(operations?.length && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n @if(operations?.includes('update')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"primary\" (click)=\"handleAction('update', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-button>\n }\n @if(operations?.includes('delete')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"danger\" (click)=\"handleAction('delete', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n }\n </div>\n } -->\n @if(windowWidth > 639) {\n <div id=\"end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n </div>\n }\n </div>\n </div>\n </div>\n </ion-item>\n @if(showSlideItems && uid) {\n <ion-item-options side=\"end\" (ionSwipe)=\"operations.length === 1 ? handleAction(operations[0], $event, component) : ''\">\n @if(operations?.includes('update')) {\n <ion-item-option class=\"dcf-update\" (click)=\"handleAction('update', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-item-option>\n }\n @if(operations?.includes('delete')) {\n <ion-item-option class=\"dcf- delete\" (click)=\"handleAction('delete', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n }\n </ion-item-options>\n }\n </ion-item-sliding>\n}\n", styles: ["ion-item{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--background-hover: var(--dcf-color-gray-8);--background-focused: var(--dcf-color-gray-8)}@media (prefers-color-scheme: dark){ion-item{--background-hover-opacity: .25;--background-focused-opacity: .25}}@media (prefers-color-scheme: light){ion-item{--background-hover-opacity: .1;--background-focused-opacity: .1}}ion-item.item-lines-full{--padding-top: .5rem;--padding-bottom: .5rem;--padding-start: .25rem;-padding-end:.25rem;padding:0 .65rem}ion-item.item-lines-inset{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important}@media (prefers-color-scheme: light){ion-item{--border-color: var(--dcf-color-gray-2)}ion-item .dcf-info{color:var(--dcf-color-gray-6)}ion-item .dcf-item-title{color:var(--dcf-color-gray-8)}ion-item .dcf-description{color:var(--dcf-color-gray-6)}}@media (prefers-color-scheme: dark){ion-item{--border-color: var(--dcf-color-gray-6)}ion-item .dcf-description{color:var(--dcf-color-gray-4)}}ion-item .dcf-info{min-width:10vw;background:transparent!important}ion-item .dcf-grid{padding:0!important;margin:0!important;min-width:100%!important}ion-item .dcf-item-title{font-style:normal;font-weight:700}ion-item .dcf-description{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:400;font-size:.925rem}ion-item::part(native){min-width:100%}ion-item [slot=start]{margin-right:.5rem!important}ion-item [slot=end]{margin-left:.5rem!important}ion-item .dcf-info{font-size:.9rem}ion-item .dcf-info .dcf-subinfo.dcf-line{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item .dcf-info .dcf-subinfo.dcf-line{display:block;margin-left:0}}ion-item #dcf-actions{padding:5px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-actions{display:none;pointer-events:none!important;cursor:text!important}ion-item #dcf-actions *{display:none;pointer-events:none!important;cursor:text!important}}ion-item #dcf-actions ion-button{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--dcf-color-gray-2) !important}ion-item #dcf-actions ion-button ion-icon{position:relative;left:-1px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-end,ion-item [slot=end]{display:none!important}}ion-item #dcf-end{padding-top:5px;display:flex;align-items:flex-end}ion-item .dcf-icon{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item .dcf-icon.dcf-grid-icon{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: var(--dcf-width-s)){ion-item .dcf-icon{align-items:flex-start!important}}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-7);--background: var(--dcf-color-gray-1) !important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-1)!important;--background: var(--dcf-color-gray-7) !important}}ion-item .dcf-icon ion-button ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar{width:48px;height:48px;display:flex;justify-content:center;align-items:center;text-align:center}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-7);background:var(--dcf-color-gray-1)!important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-1)!important;background:var(--dcf-background-color)!important}}ion-item .dcf-icon ion-avatar ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar .dcf-icon-large{transform:translateY(5px)}ion-item-sliding{box-sizing:border-box}@media (prefers-color-scheme: light){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),.25)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-7)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-primary)!important}}@media (prefers-color-scheme: dark){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),1)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-2)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-gray-2)!important}}ion-item-sliding[class*=active-slide]{border-color:var(--dcf-color-gray-3)}ion-item-sliding ion-item-option{color:var(--dcf-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--dcf-color-dark-rgb),.15)!important;background:var(--dcf-color-gray-3)}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "component", type: IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: IonItemOption, selector: "ion-item-option", inputs: ["color", "disabled", "download", "expandable", "href", "mode", "rel", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonPopover, selector: "ion-popover" }] }); }
|
|
359
356
|
};
|
|
360
357
|
ListItemComponent = __decorate([
|
|
361
358
|
Dynamic(),
|
|
362
359
|
__metadata("design:paramtypes", [])
|
|
363
360
|
], ListItemComponent);
|
|
364
361
|
export { ListItemComponent };
|
|
365
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
362
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListItemComponent, decorators: [{
|
|
366
363
|
type: Component,
|
|
367
364
|
args: [{ selector: 'ngx-decaf-list-item', standalone: true, imports: [
|
|
368
|
-
|
|
365
|
+
TranslatePipe,
|
|
369
366
|
IonList,
|
|
370
367
|
IonListHeader,
|
|
371
368
|
IonItem,
|
|
@@ -377,7 +374,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
377
374
|
IonButton,
|
|
378
375
|
IonContent,
|
|
379
376
|
IonPopover
|
|
380
|
-
], template: "\n@if(title || description) {\n <ion-item-sliding #component>\n <ion-item\n [id]=\"uid\"\n [lines]=\"lines\"\n [button]=\"button\"\n [class]=\"className\"\n (click)=\"operations?.includes('read') ? handleAction('read', $event, component) : ''\n \">\n @if(icon && lines !== 'inset') {\n <div class=\"dcf-icon\" [slot]=\"iconSlot\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-flex dcf-flex-middle dcf-grid-collapse\" dcf-grid>\n @if(icon && lines === 'inset') {\n <div class=\"dcf-icon dcf-grid-icon\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand@s dcf-width-1-1 dcf-label\">\n <ion-label class=\"dcf-item-title\" [innerHTML]=\"uid + ' - ' + title\" ></ion-label>\n <div *ngIf =\"description\" class=\"dcf-description\" [innerHTML]=\"description\"></div>\n </div>\n @if(info || subinfo) {\n <div class=\"dcf-width-auto@s dcf-width-expand dcf-info dcf-flex dcf-flex-right@s\">\n <div>\n <span *ngIf=\"info\" [innerHTML]=\"info\"></span>\n <div *ngIf=\"subinfo\" class=\"dcf-subinfo dcf-text-truncate\" [innerHTML]=\"subinfo\" ></div>\n </div>\n </div>\n }\n\n <div class=\"dcf-width-auto dcf-flex dcf-flex-middle dcf-flex-right\">\n @if((operations.includes('delete') || operations.includes('update')) && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n <ion-button class=\"dcf-hidden@m\" shape=\"round\" fill=\"clear\" color=\"primary\" (click)=\"presentActionsMenu($event)\">\n <ion-icon slot=\"icon-only\" aria-hidden=\"true\" name=\"ellipsis-vertical-outline\"></ion-icon>\n </ion-button>\n <ion-popover\n #actionMenuComponent\n side=\"bottom\"\n alignment=\"left\"\n\n [isOpen]=\"actionMenuOpen\"\n (didDismiss)=\"actionMenuOpen = false\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <ion-list-header>\n <h4 class=\"dcf-text-capitalize\" [innerHTML]=\"'actions' | translate\"></h4>\n </ion-list-header>\n @for (operation of ['update', 'delete']; track operation) {\n @if(operations.includes(operation)) {\n <ion-item [button]=\"true\" (click)=\"handleAction(operation, $event, component)\">\n <ion-avatar class=\"dcf-flex dcf-flex-middle\" aria-hidden=\"true\" slot=\"start\">\n @if(operation === 'update') {\n <ion-icon color=\"primary\" aria-hidden=\"true\" name=\"create-outline\"></ion-icon>\n } @else {\n <ion-icon color=\"danger\" aria-hidden=\"true\" name=\"trash\"></ion-icon>\n }\n </ion-avatar>\n <ion-label class=\"dcf-text-capitalize\">{{ operation | translate }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </div>\n }\n <!-- @if(operations?.length && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n @if(operations?.includes('update')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"primary\" (click)=\"handleAction('update', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-button>\n }\n @if(operations?.includes('delete')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"danger\" (click)=\"handleAction('delete', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n }\n </div>\n } -->\n @if(windowWidth > 768) {\n <div id=\"end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n </div>\n }\n </div>\n </div>\n </div>\n </ion-item>\n @if(showSlideItems && uid) {\n <ion-item-options side=\"end\" (ionSwipe)=\"operations.length === 1 ? handleAction(operations[0], $event, component) : ''\">\n @if(operations?.includes('update')) {\n <ion-item-option class=\"dcf-update\" (click)=\"handleAction('update', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-item-option>\n }\n @if(operations?.includes('delete')) {\n <ion-item-option class=\"dcf- delete\" (click)=\"handleAction('delete', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n }\n </ion-item-options>\n }\n </ion-item-sliding>\n}\n", styles: ["ion-item{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--background-hover: var(--dcf-color-gray-8);--background-focused: var(--dcf-color-gray-8)}@media (prefers-color-scheme: dark){ion-item{--background-hover-opacity: .25;--background-focused-opacity: .25}}@media (prefers-color-scheme: light){ion-item{--background-hover-opacity: .1;--background-focused-opacity: .1}}ion-item.item-lines-full{--padding-top: .5rem;--padding-bottom: .5rem;--padding-start: .25rem;-padding-end:.25rem;padding:0 .65rem}ion-item.item-lines-inset{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important}@media (prefers-color-scheme: light){ion-item{--border-color: var(--dcf-color-gray-2)}ion-item .dcf-info{color:var(--dcf-color-gray-6)}ion-item .dcf-item-title{color:var(--dcf-color-gray-8)}ion-item .dcf-description{color:var(--dcf-color-gray-6)}}@media (prefers-color-scheme: dark){ion-item{--border-color: var(--dcf-color-gray-6)}ion-item .dcf-description{color:var(--dcf-color-gray-4)}}ion-item .dcf-info{min-width:10vw;background:transparent!important}ion-item .dcf-grid{padding:0!important;margin:0!important;min-width:100%!important}ion-item .dcf-item-title{font-style:normal;font-weight:700}ion-item .dcf-description{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:400;font-size:.925rem}ion-item::part(native){min-width:100%}ion-item [slot=start]{margin-right:.5rem!important}ion-item [slot=end]{margin-left:.5rem!important}ion-item .dcf-info{font-size:.9rem}ion-item .dcf-info .dcf-subinfo.dcf-line{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item .dcf-info .dcf-subinfo.dcf-line{display:block;margin-left:0}}ion-item #dcf-actions{padding:5px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-actions{display:none;pointer-events:none!important;cursor:text!important}ion-item #dcf-actions *{display:none;pointer-events:none!important;cursor:text!important}}ion-item #dcf-actions ion-button{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--dcf-color-gray-2) !important}ion-item #dcf-actions ion-button ion-icon{position:relative;left:-1px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-end,ion-item [slot=end]{display:none!important}}ion-item #dcf-end{padding-top:5px;display:flex;align-items:flex-end}ion-item .dcf-icon{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item .dcf-icon.dcf-grid-icon{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: var(--dcf-width-s)){ion-item .dcf-icon{align-items:flex-start!important}}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-7);--background: var(--dcf-color-gray-1) !important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-1)!important;--background: var(--dcf-color-gray-7) !important}}ion-item .dcf-icon ion-button ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar{width:48px;height:48px;display:flex;justify-content:center;align-items:center;text-align:center}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-7);background:var(--dcf-color-gray-1)!important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-1)!important;background:var(--dcf-background-color)!important}}ion-item .dcf-icon ion-avatar ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar .dcf-icon-large{transform:translateY(5px)}ion-item-sliding{box-sizing:border-box}@media (prefers-color-scheme: light){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),.25)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-7)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-primary)!important}}@media (prefers-color-scheme: dark){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),1)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-2)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-gray-2)!important}}ion-item-sliding[class*=active-slide]{border-color:var(--dcf-color-gray-3)}ion-item-sliding ion-item-option{color:var(--dcf-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--dcf-color-dark-rgb),.15)!important;background:var(--dcf-color-gray-3)}\n"] }]
|
|
377
|
+
], template: "\n@if(title || description) {\n <ion-item-sliding #component>\n <ion-item\n [id]=\"uid\"\n [lines]=\"lines\"\n [button]=\"button\"\n [class]=\"className\"\n (click)=\"operations?.includes('read') ? handleAction('read', $event, component) : ''\n \">\n @if(icon && lines !== 'inset') {\n <div class=\"dcf-icon\" [slot]=\"iconSlot\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand\">\n <div class=\"dcf-flex dcf-flex-middle dcf-grid-collapse\" dcf-grid>\n @if(icon && lines === 'inset') {\n <div class=\"dcf-icon dcf-grid-icon\">\n <ion-avatar>\n <ion-icon aria-hidden=\"true\" name=\"reader-outline\" size=\"default\"></ion-icon>\n </ion-avatar>\n </div>\n }\n <div class=\"dcf-width-expand@s dcf-width-1-1 dcf-label\">\n <ion-label class=\"dcf-item-title\" [innerHTML]=\"uid + ' - ' + title\" ></ion-label>\n @if(description) {\n <div class=\"dcf-description\" [innerHTML]=\"description\"></div>\n }\n </div>\n @if(info || subinfo) {\n <div class=\"dcf-width-auto@s dcf-width-expand dcf-info dcf-flex dcf-flex-right@s\">\n <div>\n @if(info) {\n <span [innerHTML]=\"info\"></span>\n }\n @if(subinfo) {\n <div class=\"dcf-subinfo dcf-text-truncate\" [innerHTML]=\"subinfo\" ></div>\n }\n </div>\n </div>\n }\n\n <div class=\"dcf-width-auto dcf-flex dcf-flex-middle dcf-flex-right\">\n @if((operations.includes('delete') || operations.includes('update')) && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n <ion-button class=\"dcf-hidden@m\" shape=\"round\" fill=\"clear\" color=\"primary\" (click)=\"presentActionsMenu($event)\">\n <ion-icon slot=\"icon-only\" aria-hidden=\"true\" name=\"ellipsis-vertical-outline\"></ion-icon>\n </ion-button>\n <ion-popover\n #actionMenuComponent\n side=\"bottom\"\n alignment=\"left\"\n\n [isOpen]=\"actionMenuOpen\"\n (didDismiss)=\"actionMenuOpen = false\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <ion-list-header>\n <h4 class=\"dcf-text-capitalize\" [innerHTML]=\"'actions' | translate\"></h4>\n </ion-list-header>\n @for (operation of ['update', 'delete']; track operation) {\n @if(operations.includes(operation)) {\n <ion-item [button]=\"true\" (click)=\"handleAction(operation, $event, component)\">\n <ion-avatar class=\"dcf-flex dcf-flex-middle\" aria-hidden=\"true\" slot=\"start\">\n @if(operation === 'update') {\n <ion-icon color=\"primary\" aria-hidden=\"true\" name=\"create-outline\"></ion-icon>\n } @else {\n <ion-icon color=\"danger\" aria-hidden=\"true\" name=\"trash\"></ion-icon>\n }\n </ion-avatar>\n <ion-label class=\"dcf-text-capitalize\">{{ operation | translate }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </div>\n }\n <!-- @if(operations?.length && uid) {\n <div class=\"dcf-visible@m\" id=\"dcf-actions\">\n @if(operations?.includes('update')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"primary\" (click)=\"handleAction('update', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-button>\n }\n @if(operations?.includes('delete')) {\n <ion-button fill=\"clear\" size=\"small\" color=\"danger\" (click)=\"handleAction('delete', component)\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-button>\n }\n </div>\n } -->\n @if(windowWidth > 639) {\n <div id=\"end\">\n <ng-content select=\"[slot='end']\"></ng-content>\n </div>\n }\n </div>\n </div>\n </div>\n </ion-item>\n @if(showSlideItems && uid) {\n <ion-item-options side=\"end\" (ionSwipe)=\"operations.length === 1 ? handleAction(operations[0], $event, component) : ''\">\n @if(operations?.includes('update')) {\n <ion-item-option class=\"dcf-update\" (click)=\"handleAction('update', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"create-outline\"></ion-icon>\n </ion-item-option>\n }\n @if(operations?.includes('delete')) {\n <ion-item-option class=\"dcf- delete\" (click)=\"handleAction('delete', $event, component)\" [expandable]=\"operations.length === 1\">\n <ion-icon aria-hidden=\"true\" slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n }\n </ion-item-options>\n }\n </ion-item-sliding>\n}\n", styles: ["ion-item{--min-height: 50px;--padding-top: .25rem;--padding-bottom: .25rem;--padding-start: .75rem;--padding-end: .75rem;--inner-padding-start: 0px !important;--inner-padding-end: 0px !important;--background-hover: var(--dcf-color-gray-8);--background-focused: var(--dcf-color-gray-8)}@media (prefers-color-scheme: dark){ion-item{--background-hover-opacity: .25;--background-focused-opacity: .25}}@media (prefers-color-scheme: light){ion-item{--background-hover-opacity: .1;--background-focused-opacity: .1}}ion-item.item-lines-full{--padding-top: .5rem;--padding-bottom: .5rem;--padding-start: .25rem;-padding-end:.25rem;padding:0 .65rem}ion-item.item-lines-inset{--padding-top: 0rem !important;--padding-bottom: 0rem !important;--inner-padding-top: .5rem !important;--inner-padding-bottom: .65rem !important}@media (prefers-color-scheme: light){ion-item{--border-color: var(--dcf-color-gray-2)}ion-item .dcf-info{color:var(--dcf-color-gray-6)}ion-item .dcf-item-title{color:var(--dcf-color-gray-8)}ion-item .dcf-description{color:var(--dcf-color-gray-6)}}@media (prefers-color-scheme: dark){ion-item{--border-color: var(--dcf-color-gray-6)}ion-item .dcf-description{color:var(--dcf-color-gray-4)}}ion-item .dcf-info{min-width:10vw;background:transparent!important}ion-item .dcf-grid{padding:0!important;margin:0!important;min-width:100%!important}ion-item .dcf-item-title{font-style:normal;font-weight:700}ion-item .dcf-description{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:400;font-size:.925rem}ion-item::part(native){min-width:100%}ion-item [slot=start]{margin-right:.5rem!important}ion-item [slot=end]{margin-left:.5rem!important}ion-item .dcf-info{font-size:.9rem}ion-item .dcf-info .dcf-subinfo.dcf-line{margin-left:.5rem}@media (min-width: var(--dcf-width-sm)){ion-item .dcf-info .dcf-subinfo.dcf-line{display:block;margin-left:0}}ion-item #dcf-actions{padding:5px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-actions{display:none;pointer-events:none!important;cursor:text!important}ion-item #dcf-actions *{display:none;pointer-events:none!important;cursor:text!important}}ion-item #dcf-actions ion-button{--padding-start: 1rem;--padding-end: .75rem;--padding-top: .85rem !important;--padding-bottom: .85rem !important;color:#ccc;margin-right:.5rem!important;--background: var(--dcf-color-gray-2) !important}ion-item #dcf-actions ion-button ion-icon{position:relative;left:-1px}@media (max-width: var(--dcf-width-m)){ion-item #dcf-end,ion-item [slot=end]{display:none!important}}ion-item #dcf-end{padding-top:5px;display:flex;align-items:flex-end}ion-item .dcf-icon{display:flex;justify-content:center;align-items:center;text-align:center;margin-right:.5rem!important}ion-item .dcf-icon.dcf-grid-icon{min-width:50px;text-align:left;display:flex;justify-content:flex-start}@media (max-width: var(--dcf-width-s)){ion-item .dcf-icon{align-items:flex-start!important}}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-7);--background: var(--dcf-color-gray-1) !important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-button{color:var(--dcf-color-gray-1)!important;--background: var(--dcf-color-gray-7) !important}}ion-item .dcf-icon ion-button ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar{width:48px;height:48px;display:flex;justify-content:center;align-items:center;text-align:center}@media (prefers-color-scheme: light){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-7);background:var(--dcf-color-gray-1)!important}}@media (prefers-color-scheme: dark){ion-item .dcf-icon ion-avatar{color:var(--dcf-color-gray-1)!important;background:var(--dcf-background-color)!important}}ion-item .dcf-icon ion-avatar ion-icon{font-size:20px}ion-item .dcf-icon ion-avatar .dcf-icon-large{transform:translateY(5px)}ion-item-sliding{box-sizing:border-box}@media (prefers-color-scheme: light){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),.25)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-7)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-primary)!important}}@media (prefers-color-scheme: dark){ion-item-sliding ion-item-option:not(.dcf-delete),ion-item-sliding ion-item-option:not(.dcf-update){background:rgba(var(--dcf-color-dark-rgb),1)!important}ion-item-sliding ion-item-option:not(.dcf-delete) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-delete) ion-icon,ion-item-sliding ion-item-option:not(.dcf-update) .dcf-ti,ion-item-sliding ion-item-option:not(.dcf-update) ion-icon{color:var(--dcf-color-gray-2)!important}ion-item-sliding ion-item-option.dcf-delete{background:rgba(var(--dcf-color-danger-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-delete .dcf-ti,ion-item-sliding ion-item-option.dcf-delete *,ion-item-sliding ion-item-option.dcf-delete ion-icon{color:var(--dcf-color-danger)!important}ion-item-sliding ion-item-option.dcf-update{background:rgba(var(--dcf-color-primary-rgb),.05)!important}ion-item-sliding ion-item-option.dcf-update .dcf-ti,ion-item-sliding ion-item-option.dcf-update ion-icon{color:var(--dcf-color-gray-2)!important}}ion-item-sliding[class*=active-slide]{border-color:var(--dcf-color-gray-3)}ion-item-sliding ion-item-option{color:var(--dcf-color-gray-5);box-shadow:inset 0 0 5px rgba(var(--dcf-color-dark-rgb),.15)!important;background:var(--dcf-color-gray-3)}\n"] }]
|
|
381
378
|
}], ctorParameters: () => [], propDecorators: { actionMenuComponent: [{
|
|
382
379
|
type: ViewChild,
|
|
383
380
|
args: ['actionMenuComponent']
|
|
@@ -405,4 +402,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
405
402
|
type: HostListener,
|
|
406
403
|
args: ['window:resize', ['$event']]
|
|
407
404
|
}] } });
|
|
408
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBa0IsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFVBQVUsRUFDVixPQUFPLEVBQ1AsYUFBYSxFQUNiLFVBQVUsRUFDVixjQUFjLEVBQ2QsY0FBYyxFQUNkLGFBQWEsRUFDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sS0FBSyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7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QUFpQjttR0FBakIsaUJBQWlCLDZmQ3RGOUIsc3ZMQXFIQSxxa01EOUNJLGdCQUFnQixxbkJBQ2hCLE9BQU8seUZBQ1AsYUFBYSxnR0FDYixPQUFPLDBOQUNQLGNBQWMsbUZBQ2QsY0FBYywrRUFDZCxhQUFhLDhKQUNiLE9BQU8sMkpBQ1AsUUFBUSw2RkFHUixVQUFVOztBQUlELGlCQUFpQjtJQXRCN0IsT0FBTyxFQUFFOztHQXNCRyxpQkFBaUIsQ0FpYTdCOzs0RkFqYVksaUJBQWlCO2tCQXJCN0IsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLE9BQU87d0JBQ1AsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3FCQUNYO3dEQWVELG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBY2hDLEtBQUs7c0JBREosS0FBSztnQkFhRyxJQUFJO3NCQURaLEtBQUs7Z0JBYU4sSUFBSTtzQkFESCxLQUFLO2dCQWNOLFFBQVE7c0JBRFAsS0FBSztnQkFjTixNQUFNO3NCQURMLEtBQUs7Z0JBYU4sS0FBSztzQkFESixLQUFLO2dCQWFOLFdBQVc7c0JBRFYsS0FBSztnQkFhTixJQUFJO3NCQURILEtBQUs7Z0JBYU4sT0FBTztzQkFETixLQUFLO2dCQWFOLFVBQVU7c0JBRFQsTUFBTTtnQkFtTFAsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENydWRPcGVyYXRpb25zLCBPcGVyYXRpb25LZXlzIH0gZnJvbSAnQGRlY2FmLXRzL2RiLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgU3RyaW5nT3JCb29sZWFuIH0gZnJvbSAnLi4vLi4vZW5naW5lL3R5cGVzJztcbmltcG9ydCB7IE5neEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lbmdpbmUvTmd4QmFzZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JBbmd1bGFyTW9kdWxlIH0gZnJvbSAnLi4vLi4vZm9yLWFuZ3VsYXIubW9kdWxlJztcbmltcG9ydCB7IHJlbW92ZUZvY3VzVHJhcCwgc3RyaW5nVG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vaGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBnZXRXaW5kb3dXaWR0aCwgd2luZG93RXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBEeW5hbWljLCBFdmVudENvbnN0YW50cywgTGlzdEl0ZW1DdXN0b21FdmVudCB9IGZyb20gJy4uLy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25JdGVtLFxuICBJb25MYWJlbCxcbiAgSW9uTGlzdCxcbiAgSW9uQ29udGVudCxcbiAgSW9uSWNvbixcbiAgSW9uTGlzdEhlYWRlcixcbiAgSW9uUG9wb3ZlcixcbiAgSW9uSXRlbVNsaWRpbmcsXG4gIElvbkl0ZW1PcHRpb25zLFxuICBJb25JdGVtT3B0aW9uXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0ICogYXMgQWxsSWNvbnMgZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYSBsaXN0IGl0ZW0gd2l0aCB2YXJpb3VzIGN1c3RvbWl6YXRpb24gb3B0aW9ucy5cbiAqIEBzdW1tYXJ5IFRoZSBMaXN0SXRlbUNvbXBvbmVudCBpcyBhbiBBbmd1bGFyIGNvbXBvbmVudCB0aGF0IGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudC4gSXQgcHJvdmlkZXMgYSBmbGV4aWJsZSBhbmQgY3VzdG9taXphYmxlIGxpc3QgaXRlbSBpbnRlcmZhY2Ugd2l0aCBzdXBwb3J0IGZvciBpY29ucywgYnV0dG9ucywgYW5kIHZhcmlvdXMgdGV4dCBlbGVtZW50cy4gVGhlIGNvbXBvbmVudCBhbHNvIGhhbmRsZXMgYWN0aW9ucyBhbmQgbmF2aWdhdGlvbiBiYXNlZCBvbiB1c2VyIGludGVyYWN0aW9ucy5cbiAqXG4gKiBAY2xhc3NcbiAqIEBleHRlbmRzIE5neEJhc2VDb21wb25lbnRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW2xpbmVzPSdub25lJ10gLSBEZXRlcm1pbmVzIHRoZSBsaW5lIHN0eWxlIG9mIHRoZSBpdGVtLiBDYW4gYmUgJ2luc2V0JywgJ2luc2VldCcsIG9yICdub25lJy5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gaXRlbSAtIFRoZSBkYXRhIGl0ZW0gdG8gYmUgZGlzcGxheWVkIGluIHRoZSBsaXN0IGl0ZW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gaWNvbiAtIFRoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGJlIGRpc3BsYXllZC5cbiAqIEBwYXJhbSB7J3N0YXJ0JyB8ICdlbmQnfSBbaWNvblNsb3Q9J3N0YXJ0J10gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGljb24gd2l0aGluIHRoZSBpdGVtLlxuICogQHBhcmFtIHtTdHJpbmdPckJvb2xlYW59IFtidXR0b249dHJ1ZV0gLSBEZXRlcm1pbmVzIGlmIHRoZSBpdGVtIHNob3VsZCBiZWhhdmUgYXMgYSBidXR0b24uXG4gKiBAcGFyYW0ge3N0cmluZ30gW3RpdGxlXSAtIFRoZSBtYWluIHRpdGxlIG9mIHRoZSBsaXN0IGl0ZW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gW2Rlc2NyaXB0aW9uXSAtIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBsaXN0IGl0ZW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gW2luZm9dIC0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgdGhlIGxpc3QgaXRlbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3ViaW5mb10gLSBTdWItaW5mb3JtYXRpb24gZm9yIHRoZSBsaXN0IGl0ZW0uXG4gKlxuICogQGV4YW1wbGVcbiAqIDxuZ3gtZGVjYWYtbGlzdC1pdGVtXG4gKiAgIFtpdGVtXT1cImRhdGFJdGVtXCJcbiAqICAgaWNvbj1cInN0YXJcIlxuICogICB0aXRsZT1cIkl0ZW0gVGl0bGVcIlxuICogICBkZXNjcmlwdGlvbj1cIkl0ZW0gRGVzY3JpcHRpb25cIlxuICogICAoY2xpY2tFdmVudCk9XCJoYW5kbGVJdGVtQ2xpY2soJGV2ZW50KVwiPlxuICogPC9uZ3gtZGVjYWYtbGlzdC1pdGVtPlxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQyBhcyBDb21wb25lbnRcbiAqICAgcGFydGljaXBhbnQgViBhcyBWaWV3XG4gKiAgIHBhcnRpY2lwYW50IFUgYXMgVXNlclxuICogICBDLT4+VjogSW5pdGlhbGl6ZSBjb21wb25lbnRcbiAqICAgVi0+PlU6IERpc3BsYXkgbGlzdCBpdGVtXG4gKiAgIFUtPj5WOiBDbGljayBvbiBpdGVtIG9yIGFjdGlvblxuICogICBWLT4+QzogVHJpZ2dlciBoYW5kbGVBY3Rpb24oKVxuICogICBDLT4+QzogUHJvY2VzcyBhY3Rpb25cbiAqICAgQy0+PlY6IFVwZGF0ZSB2aWV3IG9yIG5hdmlnYXRlXG4gKi9cbkBEeW5hbWljKClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kZWNhZi1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3JBbmd1bGFyTW9kdWxlLFxuICAgIElvbkxpc3QsXG4gICAgSW9uTGlzdEhlYWRlcixcbiAgICBJb25JdGVtLFxuICAgIElvbkl0ZW1TbGlkaW5nLFxuICAgIElvbkl0ZW1PcHRpb25zLFxuICAgIElvbkl0ZW1PcHRpb24sXG4gICAgSW9uSWNvbixcbiAgICBJb25MYWJlbCxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25Qb3BvdmVyXG4gIF1cblxufSlcbmV4cG9ydCBjbGFzcyBMaXN0SXRlbUNvbXBvbmVudCBleHRlbmRzIE5neEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNlIHRvIHRoZSBhY3Rpb24gbWVudSBwb3BvdmVyIGNvbXBvbmVudC5cbiAgICogQHN1bW1hcnkgVmlld0NoaWxkIHJlZmVyZW5jZSB0aGF0IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgSFRNTElvblBvcG92ZXJFbGVtZW50XG4gICAqIHVzZWQgZm9yIGRpc3BsYXlpbmcgYWN0aW9uIG1lbnVzLiBUaGlzIHJlZmVyZW5jZSBpcyB1c2VkIHRvIHByb2dyYW1tYXRpY2FsbHlcbiAgICogY29udHJvbCB0aGUgcG9wb3Zlciwgc3VjaCBhcyBkaXNtaXNzaW5nIGl0IHdoZW4gbmVjZXNzYXJ5LlxuICAgKlxuICAgKiBAdHlwZSB7SFRNTElvblBvcG92ZXJFbGVtZW50fVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2FjdGlvbk1lbnVDb21wb25lbnQnKVxuICBhY3Rpb25NZW51Q29tcG9uZW50ITogSFRNTElvblBvcG92ZXJFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgdGhlIGRpc3BsYXkgb2YgbGluZXMgYXJvdW5kIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IERldGVybWluZXMgaG93IGxpbmVzIGFyZSBkaXNwbGF5ZWQgYXJvdW5kIHRoZSBsaXN0IGl0ZW0gYm9yZGVycy5cbiAgICogJ2luc2V0JyBzaG93cyBsaW5lcyB3aXRoIHBhZGRpbmcsICdmdWxsJyBzaG93cyBmdWxsLXdpZHRoIGxpbmVzLCBhbmQgJ25vbmUnXG4gICAqIHJlbW92ZXMgYWxsIGxpbmVzLiBUaGlzIGFmZmVjdHMgdGhlIHZpc3VhbCBzZXBhcmF0aW9uIGJldHdlZW4gbGlzdCBpdGVtcy5cbiAgICpcbiAgICogQHR5cGUgeydpbnNldCcgfCAnZnVsbCcgfCAnbm9uZSd9XG4gICAqIEBkZWZhdWx0ICdpbnNldCdcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBsaW5lczogJ2luc2V0JyB8ICdmdWxsJyB8ICdub25lJyA9ICdmdWxsJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBkYXRhIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IENvbnRhaW5zIHRoZSByYXcgZGF0YSB0aGF0IHRoaXMgbGlzdCBpdGVtIHJlcHJlc2VudHMuIFRoaXMgb2JqZWN0XG4gICAqIGlzIHVzZWQgdG8gZXh0cmFjdCBkaXNwbGF5IGluZm9ybWF0aW9uIGFuZCBmb3IgcGFzc2luZyB0byBldmVudCBoYW5kbGVyc1xuICAgKiB3aGVuIHRoZSBpdGVtIGlzIGludGVyYWN0ZWQgd2l0aC4gSXQgb3ZlcnJpZGVzIHRoZSBiYXNlIGl0ZW0gcHJvcGVydHkuXG4gICAqXG4gICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn1cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBvdmVycmlkZSBpdGVtITogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgaWNvbiB0byBkaXNwbGF5IGluIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB3aGljaCBpY29uIHRvIGRpc3BsYXkgdXNpbmcgSW9uaWMncyBpY29uIHN5c3RlbS5cbiAgICogVGhlIGljb24gbmFtZSBzaG91bGQgY29ycmVzcG9uZCB0byBhbiBhdmFpbGFibGUgSW9uaWMgaWNvbiBvciBhIGN1c3RvbVxuICAgKiBpY29uIHRoYXQgaGFzIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBpY29uIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGljb24hOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQb3NpdGlvbiBvZiB0aGUgaWNvbiB3aXRoaW4gdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpY29uIGFwcGVhcnMgYXQgdGhlIHN0YXJ0IChsZWZ0IGluIExUUiBsYW5ndWFnZXMpXG4gICAqIG9yIGVuZCAocmlnaHQgaW4gTFRSIGxhbmd1YWdlcykgb2YgdGhlIGxpc3QgaXRlbS4gVGhpcyBhZmZlY3RzIHRoZSBvdmVyYWxsXG4gICAqIGxheW91dCBhbmQgdmlzdWFsIGhpZXJhcmNoeSBvZiB0aGUgaXRlbSBjb250ZW50LlxuICAgKlxuICAgKiBAdHlwZSB7J3N0YXJ0JyB8ICdlbmQnfVxuICAgKiBAZGVmYXVsdCAnc3RhcnQnXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgaWNvblNsb3Q6ICdzdGFydCcgfCAnZW5kJyA9J3N0YXJ0JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoZXRoZXIgdGhlIGxpc3QgaXRlbSBiZWhhdmVzIGFzIGEgY2xpY2thYmxlIGJ1dHRvbi5cbiAgICogQHN1bW1hcnkgV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIGxpc3QgaXRlbSB3aWxsIGhhdmUgYnV0dG9uLWxpa2UgYmVoYXZpb3IgaW5jbHVkaW5nXG4gICAqIGhvdmVyIGVmZmVjdHMsIGNsaWNrIGhhbmRsaW5nLCBhbmQgYXBwcm9wcmlhdGUgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzLlxuICAgKiBXaGVuIGZhbHNlLCB0aGUgaXRlbSBpcyBkaXNwbGF5ZWQgYXMgc3RhdGljIGNvbnRlbnQgd2l0aG91dCBpbnRlcmFjdGl2ZSBiZWhhdmlvci5cbiAgICpcbiAgICogQHR5cGUge1N0cmluZ09yQm9vbGVhbn1cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGJ1dHRvbjogU3RyaW5nT3JCb29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBtYWluIHRpdGxlIHRleHQgZGlzcGxheWVkIGluIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IFNldHMgdGhlIHByaW1hcnkgdGV4dCBjb250ZW50IHRoYXQgYXBwZWFycyBwcm9taW5lbnRseSBpbiB0aGUgbGlzdCBpdGVtLlxuICAgKiBUaGlzIGlzIHR5cGljYWxseSB0aGUgbW9zdCBpbXBvcnRhbnQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0gYW5kIGlzIGRpc3BsYXllZFxuICAgKiB3aXRoIGVtcGhhc2lzIGluIHRoZSBjb21wb25lbnQncyB2aXN1YWwgaGllcmFyY2h5LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2Vjb25kYXJ5IGRlc2NyaXB0aXZlIHRleHQgZm9yIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIGFkZGl0aW9uYWwgY29udGV4dCBvciBkZXRhaWxzIGFib3V0IHRoZSBpdGVtLiBUaGlzIHRleHRcbiAgICogaXMgdHlwaWNhbGx5IGRpc3BsYXllZCBiZWxvdyB0aGUgdGl0bGUgd2l0aCBsZXNzIHZpc3VhbCBlbXBoYXNpcy5cbiAgICogVXNlZnVsIGZvciBwcm92aWRpbmcgY29udGV4dCB3aXRob3V0IGNsdXR0ZXJpbmcgdGhlIG1haW4gdGl0bGUuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRleHQgZm9yIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IERpc3BsYXlzIHN1cHBsZW1lbnRhcnkgaW5mb3JtYXRpb24gdGhhdCBwcm92aWRlcyBleHRyYSBjb250ZXh0XG4gICAqIGFib3V0IHRoZSBpdGVtLiBUaGlzIGNvdWxkIGluY2x1ZGUgbWV0YWRhdGEsIHN0YXR1cyBpbmZvcm1hdGlvbiwgb3JcbiAgICogb3RoZXIgcmVsZXZhbnQgZGV0YWlscyB0aGF0IGRvbid0IGZpdCBpbiB0aGUgdGl0bGUgb3IgZGVzY3JpcHRpb24uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgaW5mbz86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN1Yi1pbmZvcm1hdGlvbiB0ZXh0IGRpc3BsYXllZCBpbiB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBQcm92aWRlcyB0ZXJ0aWFyeSBsZXZlbCBpbmZvcm1hdGlvbiB0aGF0IGNvbXBsZW1lbnRzIHRoZSBpbmZvIGZpZWxkLlxuICAgKiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBhZGRpdGlvbmFsIG1ldGFkYXRhIG9yIGNvbnRleHR1YWwgZGV0YWlsc1xuICAgKiB0aGF0IGFyZSB1c2VmdWwgYnV0IG5vdCBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgaXRlbS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBzdWJpbmZvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXZlbnQgZW1pdHRlciBmb3IgbGlzdCBpdGVtIGNsaWNrIGludGVyYWN0aW9ucy5cbiAgICogQHN1bW1hcnkgRW1pdHMgY3VzdG9tIGV2ZW50cyB3aGVuIHRoZSBsaXN0IGl0ZW0gaXMgY2xpY2tlZCBvciB3aGVuIGFjdGlvbnNcbiAgICogYXJlIHBlcmZvcm1lZCBvbiBpdC4gVGhlIGVtaXR0ZWQgZXZlbnQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFjdGlvbixcbiAgICogdGhlIGl0ZW0gZGF0YSwgYW5kIG90aGVyIHJlbGV2YW50IGNvbnRleHQgZm9yIHBhcmVudCBjb21wb25lbnRzIHRvIGhhbmRsZS5cbiAgICpcbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxMaXN0SXRlbUN1c3RvbUV2ZW50Pn1cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgY2xpY2tFdmVudDogIEV2ZW50RW1pdHRlcjxMaXN0SXRlbUN1c3RvbUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEl0ZW1DdXN0b21FdmVudD4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHNsaWRlIGl0ZW1zIGFyZSBjdXJyZW50bHkgZW5hYmxlZC5cbiAgICogQHN1bW1hcnkgQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2Ygc2xpZGUgYWN0aW9ucyBiYXNlZCBvbiBzY3JlZW4gc2l6ZSBhbmRcbiAgICogYXZhaWxhYmxlIG9wZXJhdGlvbnMuIFdoZW4gdHJ1ZSwgdXNlcnMgY2FuIHN3aXBlIG9uIHRoZSBpdGVtIHRvIHJldmVhbFxuICAgKiBhY3Rpb24gYnV0dG9ucyBmb3Igb3BlcmF0aW9ucyBsaWtlIGVkaXQgYW5kIGRlbGV0ZS5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgc2hvd1NsaWRlSXRlbXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1cnJlbnQgd2luZG93IHdpZHRoIGluIHBpeGVscy5cbiAgICogQHN1bW1hcnkgU3RvcmVzIHRoZSBjdXJyZW50IGJyb3dzZXIgd2luZG93IHdpZHRoIHdoaWNoIGlzIHVzZWQgdG8gZGV0ZXJtaW5lXG4gICAqIHJlc3BvbnNpdmUgYmVoYXZpb3IsIHN1Y2ggYXMgd2hlbiB0byBzaG93IG9yIGhpZGUgc2xpZGUgaXRlbXMgYmFzZWQgb25cbiAgICogc2NyZWVuIHNpemUuIFVwZGF0ZWQgYXV0b21hdGljYWxseSBvbiB3aW5kb3cgcmVzaXplIGV2ZW50cy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICB3aW5kb3dXaWR0aCE6IG51bWJlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBhY3Rpb24gbWVudSBwb3BvdmVyIGlzIGN1cnJlbnRseSBvcGVuLlxuICAgKiBAc3VtbWFyeSBUcmFja3MgdGhlIHN0YXRlIG9mIHRoZSBhY3Rpb24gbWVudSB0byBwcmV2ZW50IG11bHRpcGxlIGluc3RhbmNlc1xuICAgKiBmcm9tIGJlaW5nIG9wZW5lZCBzaW11bHRhbmVvdXNseSBhbmQgdG8gZW5zdXJlIHByb3BlciBjbGVhbnVwIHdoZW4gYWN0aW9uc1xuICAgKiBhcmUgcGVyZm9ybWVkLiBVc2VkIGZvciBtYW5hZ2luZyB0aGUgcG9wb3ZlciBsaWZlY3ljbGUuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIGFjdGlvbk1lbnVPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBbmd1bGFyIE5hdkNvbnRyb2xsZXIgc2VydmljZSBmb3IgaGFuZGxpbmcgbmF2aWdhdGlvbi5cbiAgICogQHN1bW1hcnkgSW5qZWN0ZWQgc2VydmljZSB0aGF0IHByb3ZpZGVzIG1ldGhvZHMgZm9yIHByb2dyYW1tYXRpYyBuYXZpZ2F0aW9uXG4gICAqIHdpdGhpbiB0aGUgSW9uaWMgYXBwbGljYXRpb24uIFVzZWQgZm9yIG5hdmlnYXRpbmcgdG8gZGlmZmVyZW50IHJvdXRlcyB3aGVuXG4gICAqIGxpc3QgaXRlbSBhY3Rpb25zIGFyZSBwZXJmb3JtZWQgb3Igd2hlbiB0aGUgaXRlbSBpdHNlbGYgaXMgY2xpY2tlZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge05hdkNvbnRyb2xsZXJ9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyID0gaW5qZWN0KE5hdkNvbnRyb2xsZXIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMaXN0SXRlbUNvbXBvbmVudC5cbiAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBuZXcgTGlzdEl0ZW1Db21wb25lbnQgYnkgY2FsbGluZyB0aGUgcGFyZW50IGNsYXNzIGNvbnN0cnVjdG9yXG4gICAqIHdpdGggdGhlIGNvbXBvbmVudCBuYW1lIGZvciBsb2dnaW5nIGFuZCBpZGVudGlmaWNhdGlvbiBwdXJwb3Nlcy4gQWxzbyByZWdpc3RlcnNcbiAgICogYWxsIGF2YWlsYWJsZSBJb25pYyBpY29ucyB0byBlbnN1cmUgdGhleSBjYW4gYmUgZGlzcGxheWVkIGluIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJMaXN0SXRlbUNvbXBvbmVudFwiKTtcbiAgICBhZGRJY29ucyhBbGxJY29ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudCBhZnRlciBBbmd1bGFyIGZpcnN0IGRpc3BsYXlzIHRoZSBkYXRhLWJvdW5kIHByb3BlcnRpZXMuXG4gICAqIEBzdW1tYXJ5IFNldHMgdXAgdGhlIGNvbXBvbmVudCBieSBkZXRlcm1pbmluZyBzbGlkZSBpdGVtIHZpc2liaWxpdHksIHByb2Nlc3NpbmcgYm9vbGVhbiBpbnB1dHMsXG4gICAqIGJ1aWxkaW5nIENTUyBjbGFzcyBuYW1lcyBiYXNlZCBvbiBwcm9wZXJ0aWVzLCBhbmQgY2FwdHVyaW5nIHRoZSBjdXJyZW50IHdpbmRvdyB3aWR0aC5cbiAgICogVGhpcyBtZXRob2QgcHJlcGFyZXMgdGhlIGNvbXBvbmVudCBmb3IgdXNlciBpbnRlcmFjdGlvbiBieSBlbnN1cmluZyBhbGwgcHJvcGVydGllcyBhcmVcbiAgICogcHJvcGVybHkgaW5pdGlhbGl6ZWQgYW5kIHJlc3BvbnNpdmUgYmVoYXZpb3IgaXMgY29uZmlndXJlZC5cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBBbmd1bGFyIExpZmVjeWNsZVxuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTGlzdEl0ZW1Db21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBXIGFzIFdpbmRvd1xuICAgKlxuICAgKiAgIEEtPj5MOiBuZ09uSW5pdCgpXG4gICAqICAgTC0+Pkw6IGVuYWJsZVNsaWRlSXRlbXMoKVxuICAgKiAgIEwtPj5MOiBQcm9jZXNzIGJ1dHRvbiBib29sZWFuXG4gICAqICAgTC0+Pkw6IEJ1aWxkIGNsYXNzTmFtZSB3aXRoIGZsZXggY2xhc3Nlc1xuICAgKiAgIGFsdCBvcGVyYXRpb25zIGV4aXN0XG4gICAqICAgICBMLT4+TDogQWRkICdhY3Rpb24nIGNsYXNzXG4gICAqICAgZW5kXG4gICAqICAgTC0+Plc6IGdldFdpbmRvd1dpZHRoKClcbiAgICogICBXLS0+Pkw6IFJldHVybiBjdXJyZW50IHdpZHRoXG4gICAqICAgTC0+Pkw6IFN0b3JlIHdpbmRvd1dpZHRoXG4gICAqXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zaG93U2xpZGVJdGVtcyA9IHRoaXMuZW5hYmxlU2xpZGVJdGVtcygpO1xuICAgIHRoaXMuYnV0dG9uID0gc3RyaW5nVG9Cb29sZWFuKHRoaXMuYnV0dG9uKTtcblxuICAgIHRoaXMuY2xhc3NOYW1lID0gYCR7dGhpcy5jbGFzc05hbWV9ICBkY2YtZmxleCBkY2YtZmxleC1taWRkbGUgZ3JpZC1pdGVtYDtcbiAgICBpZih0aGlzLm9wZXJhdGlvbnM/Lmxlbmd0aClcbiAgICAgIHRoaXMuY2xhc3NOYW1lICs9IGAgYWN0aW9uYDtcbiAgICB0aGlzLndpbmRvd1dpZHRoID0gZ2V0V2luZG93V2lkdGgoKSBhcyBudW1iZXI7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXMgdXNlciBpbnRlcmFjdGlvbnMgYW5kIGFjdGlvbnMgcGVyZm9ybWVkIG9uIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGlzIHRoZSBjZW50cmFsIGFjdGlvbiBoYW5kbGVyIGZvciBsaXN0IGl0ZW0gaW50ZXJhY3Rpb25zLiBJdCBtYW5hZ2VzXG4gICAqIGV2ZW50IHByb3BhZ2F0aW9uLCBkaXNtaXNzZXMgb3BlbiBhY3Rpb24gbWVudXMsIHJlbW92ZXMgZm9jdXMgdHJhcHMsIGFuZCBlaXRoZXIgZW1pdHNcbiAgICogZXZlbnRzIGZvciBwYXJlbnQgY29tcG9uZW50cyB0byBoYW5kbGUgb3IgcGVyZm9ybXMgbmF2aWdhdGlvbiBiYXNlZCBvbiB0aGUgY29tcG9uZW50J3NcbiAgICogcm91dGUgY29uZmlndXJhdGlvbi4gVGhpcyBtZXRob2Qgc3VwcG9ydHMgYm90aCBldmVudC1kcml2ZW4gYW5kIG5hdmlnYXRpb24tZHJpdmVuIGFyY2hpdGVjdHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7Q3J1ZE9wZXJhdGlvbnN9IGFjdGlvbiAtIFRoZSB0eXBlIG9mIENSVUQgb3BlcmF0aW9uIGJlaW5nIHBlcmZvcm1lZFxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIFRoZSBicm93c2VyIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gW3RhcmdldF0gLSBPcHRpb25hbCB0YXJnZXQgZWxlbWVudCBmb3IgdGhlIGV2ZW50XG4gICAqIEByZXR1cm4ge1Byb21pc2U8Ym9vbGVhbnx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gbmF2aWdhdGlvbiBzdWNjZXNzIG9yIHZvaWQgZm9yIGV2ZW50c1xuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAgICogICBwYXJ0aWNpcGFudCBMIGFzIExpc3RJdGVtQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgUCBhcyBQYXJlbnQgQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgTiBhcyBOYXZDb250cm9sbGVyXG4gICAqICAgcGFydGljaXBhbnQgRSBhcyBFdmVudCBTeXN0ZW1cbiAgICpcbiAgICogICBVLT4+TDogUGVyZm9ybSBhY3Rpb24gKGNsaWNrL3N3aXBlKVxuICAgKiAgIEwtPj5MOiBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgKiAgIGFsdCBhY3Rpb25NZW51T3BlblxuICAgKiAgICAgTC0+Pkw6IERpc21pc3MgYWN0aW9uIG1lbnVcbiAgICogICBlbmRcbiAgICogICBMLT4+TDogcmVtb3ZlRm9jdXNUcmFwKClcbiAgICogICBhbHQgTm8gcm91dGUgY29uZmlndXJlZFxuICAgKiAgICAgTC0+PkU6IHdpbmRvd0V2ZW50RW1pdHRlcigpXG4gICAqICAgICBMLT4+UDogY2xpY2tFdmVudC5lbWl0KClcbiAgICogICBlbHNlIFJvdXRlIGNvbmZpZ3VyZWRcbiAgICogICAgIEwtPj5OOiByZWRpcmVjdChhY3Rpb24sIHVpZClcbiAgICogICAgIE4tLT4+TDogUmV0dXJuIG5hdmlnYXRpb24gcmVzdWx0XG4gICAqICAgZW5kXG4gICAqXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgYXN5bmMgaGFuZGxlQWN0aW9uKGFjdGlvbjogQ3J1ZE9wZXJhdGlvbnMsIGV2ZW50OiBFdmVudCwgdGFyZ2V0PzogSFRNTEVsZW1lbnQpOiBQcm9taXNlPGJvb2xlYW58dm9pZD4ge1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIGlmKHRoaXMuYWN0aW9uTWVudU9wZW4pXG4gICAgICBhd2FpdCB0aGlzLmFjdGlvbk1lbnVDb21wb25lbnQuZGlzbWlzcygpO1xuICAgIC8vIGZvcmNpbmcgdHJhcCBmb2N1c1xuICAgIHJlbW92ZUZvY3VzVHJhcCgpO1xuICAgIGlmKCF0aGlzLnJvdXRlKSB7XG4gICAgICBjb25zdCBldmVudCA9IHt0YXJnZXQ6IHRhcmdldCwgYWN0aW9uLCBwazogdGhpcy5waywgZGF0YTogdGhpcy51aWQsIG5hbWU6IEV2ZW50Q29uc3RhbnRzLkNMSUNLLCBjb21wb25lbnQ6IHRoaXMuY29tcG9uZW50TmFtZSB9IGFzIExpc3RJdGVtQ3VzdG9tRXZlbnQ7XG4gICAgICB3aW5kb3dFdmVudEVtaXR0ZXIoYExpc3RJdGVtJHtFdmVudENvbnN0YW50cy5DTElDS31gLCBldmVudCk7XG4gICAgICByZXR1cm4gdGhpcy5jbGlja0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWRpcmVjdChhY3Rpb24sICh0eXBlb2YgdGhpcy51aWQgPT09ICdudW1iZXInID8gYCR7dGhpcy51aWR9YDogdGhpcy51aWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2l2ZSBoYW5kbGVyIHRoYXQgZW5hYmxlcyBvciBkaXNhYmxlcyBzbGlkZSBpdGVtcyBiYXNlZCBvbiBzY3JlZW4gc2l6ZSBhbmQgb3BlcmF0aW9ucy5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgaXMgYXV0b21hdGljYWxseSBjYWxsZWQgd2hlbiB0aGUgd2luZG93IGlzIHJlc2l6ZWQgYW5kIGFsc28gZHVyaW5nIGNvbXBvbmVudFxuICAgKiBpbml0aWFsaXphdGlvbi4gSXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHNsaWRlIGFjdGlvbnMgc2hvdWxkIGJlIGF2YWlsYWJsZSBiYXNlZCBvbiB0aGUgY3VycmVudFxuICAgKiB3aW5kb3cgd2lkdGggYW5kIHRoZSBwcmVzZW5jZSBvZiBVUERBVEUgb3IgREVMRVRFIG9wZXJhdGlvbnMuIFNsaWRlIGl0ZW1zIGFyZSB0eXBpY2FsbHkgaGlkZGVuXG4gICAqIG9uIGxhcmdlciBzY3JlZW5zIHdoZXJlIHRoZXJlJ3Mgc3BhY2UgZm9yIGRlZGljYXRlZCBhY3Rpb24gYnV0dG9ucy5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBzbGlkZSBpdGVtcyBzaG91bGQgYmUgc2hvd24sIGZhbHNlIG90aGVyd2lzZVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBXIGFzIFdpbmRvd1xuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTGlzdEl0ZW1Db21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIFVJXG4gICAqXG4gICAqICAgVy0+Pkw6IHJlc2l6ZSBldmVudFxuICAgKiAgIEwtPj5XOiBnZXRXaW5kb3dXaWR0aCgpXG4gICAqICAgVy0tPj5MOiBSZXR1cm4gY3VycmVudCB3aWR0aFxuICAgKiAgIEwtPj5MOiBTdG9yZSB3aW5kb3dXaWR0aFxuICAgKiAgIGFsdCBObyBvcGVyYXRpb25zIE9SIHdpZHRoID4gNzY4cHhcbiAgICogICAgIEwtPj5VOiBzaG93U2xpZGVJdGVtcyA9IGZhbHNlXG4gICAqICAgZWxzZSBPcGVyYXRpb25zIGluY2x1ZGUgVVBEQVRFL0RFTEVURVxuICAgKiAgICAgTC0+PlU6IHNob3dTbGlkZUl0ZW1zID0gdHJ1ZVxuICAgKiAgIGVuZFxuICAgKiAgIEwtLT4+VTogUmV0dXJuIHNob3dTbGlkZUl0ZW1zIHZhbHVlXG4gICAqXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIGVuYWJsZVNsaWRlSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgdGhpcy53aW5kb3dXaWR0aCA9IGdldFdpbmRvd1dpZHRoKCkgYXMgbnVtYmVyO1xuICAgIGlmKCF0aGlzLm9wZXJhdGlvbnM/Lmxlbmd0aCB8fCB0aGlzLndpbmRvd1dpZHRoID4gNzY4KVxuICAgICAgcmV0dXJuIHRoaXMuc2hvd1NsaWRlSXRlbXMgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dTbGlkZUl0ZW1zID0gdGhpcy5vcGVyYXRpb25zLmluY2x1ZGVzKE9wZXJhdGlvbktleXMuVVBEQVRFKSB8fCB0aGlzLm9wZXJhdGlvbnMuaW5jbHVkZXMoT3BlcmF0aW9uS2V5cy5ERUxFVEUpO1xuICAgIHJldHVybiB0aGlzLnNob3dTbGlkZUl0ZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBbmltYXRlcyBhbmQgcmVtb3ZlcyBhbiBlbGVtZW50IGZyb20gdGhlIERPTS5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgYXBwbGllcyBDU1MgYW5pbWF0aW9uIGNsYXNzZXMgdG8gY3JlYXRlIGEgc21vb3RoIGZhZGUtb3V0IGVmZmVjdFxuICAgKiBiZWZvcmUgcmVtb3ZpbmcgdGhlIGVsZW1lbnQgZnJvbSB0aGUgRE9NLiBUaGUgYW5pbWF0aW9uIGVuaGFuY2VzIHVzZXIgZXhwZXJpZW5jZSBieVxuICAgKiBwcm92aWRpbmcgdmlzdWFsIGZlZWRiYWNrIHdoZW4gaXRlbXMgYXJlIGRlbGV0ZWQgb3IgcmVtb3ZlZCBmcm9tIGxpc3RzLiBUaGUgdGltaW5nXG4gICAqIGlzIGNvb3JkaW5hdGVkIHdpdGggdGhlIENTUyBhbmltYXRpb24gZHVyYXRpb24gdG8gZW5zdXJlIHRoZSBlbGVtZW50IGlzIHJlbW92ZWRcbiAgICogYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBUaGUgRE9NIGVsZW1lbnQgdG8gYW5pbWF0ZSBhbmQgcmVtb3ZlXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTGlzdEl0ZW1Db21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBFIGFzIEhUTUxFbGVtZW50XG4gICAqICAgcGFydGljaXBhbnQgRCBhcyBET01cbiAgICpcbiAgICogICBMLT4+RTogQWRkIGFuaW1hdGlvbiBjbGFzc2VzXG4gICAqICAgTm90ZSBvdmVyIEU6IHVrLWFuaW1hdGlvbi1mYWRlLCB1ay1hbmltYXRpb24tbWVkaXVtLCB1ay1hbmltYXRpb24tcmV2ZXJzZVxuICAgKiAgIEUtPj5FOiBTdGFydCBmYWRlIGFuaW1hdGlvblxuICAgKiAgIEwtPj5MOiBzZXRUaW1lb3V0KDYwMG1zKVxuICAgKiAgIE5vdGUgb3ZlciBMOiBXYWl0IGZvciBhbmltYXRpb24gdG8gY29tcGxldGVcbiAgICogICBMLT4+RDogZWxlbWVudC5yZW1vdmUoKVxuICAgKiAgIEQtPj5EOiBSZW1vdmUgZWxlbWVudCBmcm9tIERPTVxuICAgKlxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIHJlbW92ZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3VrLWFuaW1hdGlvbi1mYWRlJywgJ3VrLWFuaW1hdGlvbi1tZWRpdW0nLCAndWstYW5pbWF0aW9uLXJldmVyc2UnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtlbGVtZW50LnJlbW92ZSgpfSwgNjAwKVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBOYXZpZ2F0ZXMgdG8gYSBuZXcgcm91dGUgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBhY3Rpb24gYW5kIGl0ZW0gSUQuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGNvbnN0cnVjdHMgYSBuYXZpZ2F0aW9uIFVSTCB1c2luZyB0aGUgY29tcG9uZW50J3Mgcm91dGUgY29uZmlndXJhdGlvbixcbiAgICogdGhlIHNwZWNpZmllZCBhY3Rpb24sIGFuZCBhbiBpdGVtIGlkZW50aWZpZXIuIEl0IHVzZXMgSW9uaWMncyBOYXZDb250cm9sbGVyIHRvIHBlcmZvcm1cbiAgICogZm9yd2FyZCBuYXZpZ2F0aW9uIHdpdGggYXBwcm9wcmlhdGUgYW5pbWF0aW9ucy4gVGhpcyBtZXRob2QgaXMgdHlwaWNhbGx5IHVzZWQgZm9yXG4gICAqIENSVUQgb3BlcmF0aW9ucyB3aGVyZSBlYWNoIGFjdGlvbiAoY3JlYXRlLCByZWFkLCB1cGRhdGUsIGRlbGV0ZSkgaGFzIGl0cyBvd24gcm91dGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb24gLSBUaGUgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZCAoZS5nLiwgJ2VkaXQnLCAndmlldycsICdkZWxldGUnKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2lkXSAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB0byBiZSBhY3RlZCB1cG9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Ym9vbGVhbj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRydWUgaWYgbmF2aWdhdGlvbiB3YXMgc3VjY2Vzc2Z1bFxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBMIGFzIExpc3RJdGVtQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgTiBhcyBOYXZDb250cm9sbGVyXG4gICAqICAgcGFydGljaXBhbnQgUiBhcyBSb3V0ZXJcbiAgICpcbiAgICogICBMLT4+TDogcmVkaXJlY3QoYWN0aW9uLCBpZClcbiAgICogICBMLT4+TDogQ29uc3RydWN0IFVSTDogL3tyb3V0ZX0ve2FjdGlvbn0ve2lkfVxuICAgKiAgIEwtPj5OOiBuYXZpZ2F0ZUZvcndhcmQodXJsKVxuICAgKiAgIE4tPj5SOiBOYXZpZ2F0ZSB0byBjb25zdHJ1Y3RlZCBVUkxcbiAgICogICBSLS0+Pk46IFJldHVybiBuYXZpZ2F0aW9uIHJlc3VsdFxuICAgKiAgIE4tLT4+TDogUmV0dXJuIGJvb2xlYW4gc3VjY2Vzc1xuICAgKlxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIGFzeW5jIHJlZGlyZWN0KGFjdGlvbjogc3RyaW5nLCBpZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVGb3J3YXJkKGAvJHt0aGlzLnJvdXRlfS8ke2FjdGlvbn0vJHtpZCB8fCB0aGlzLnVpZH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUHJlc2VudHMgdGhlIGFjdGlvbnMgbWVudSBwb3BvdmVyIGZvciB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBoYW5kbGVzIHRoZSBkaXNwbGF5IG9mIGEgY29udGV4dHVhbCBhY3Rpb24gbWVudSB3aGVuIHRyaWdnZXJlZCBieSB1c2VyXG4gICAqIGludGVyYWN0aW9uICh0eXBpY2FsbHkgYSBsb25nIHByZXNzIG9yIHJpZ2h0LWNsaWNrKS4gSXQgc3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gdG8gcHJldmVudFxuICAgKiB1bndhbnRlZCBzaWRlIGVmZmVjdHMsIHJlbW92ZXMgYW55IGV4aXN0aW5nIGZvY3VzIHRyYXBzIGZvciBhY2Nlc3NpYmlsaXR5LCBjb25maWd1cmVzIHRoZVxuICAgKiBwb3BvdmVyIHdpdGggdGhlIHRyaWdnZXJpbmcgZXZlbnQsIGFuZCBvcGVucyB0aGUgYWN0aW9uIG1lbnUuIFRoZSBtZW51IHR5cGljYWxseSBjb250YWluc1xuICAgKiBhdmFpbGFibGUgQ1JVRCBvcGVyYXRpb25zIGZvciB0aGUgaXRlbS5cbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBUaGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGFjdGlvbiBtZW51IHJlcXVlc3RcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMaXN0SXRlbUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IFAgYXMgUG9wb3ZlclxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgQWNjZXNzaWJpbGl0eVxuICAgKlxuICAgKiAgIFUtPj5MOiBUcmlnZ2VyIGFjdGlvbiBtZW51IChsb25nIHByZXNzL3JpZ2h0LWNsaWNrKVxuICAgKiAgIEwtPj5MOiBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgKiAgIEwtPj5BOiByZW1vdmVGb2N1c1RyYXAoKVxuICAgKiAgIEwtPj5QOiBTZXQgZXZlbnQgcmVmZXJlbmNlXG4gICAqICAgTC0+Pkw6IGFjdGlvbk1lbnVPcGVuID0gdHJ1ZVxuICAgKiAgIEwtPj5QOiBEaXNwbGF5IHBvcG92ZXIgd2l0aCBhY3Rpb25zXG4gICAqXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgcHJlc2VudEFjdGlvbnNNZW51KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIC8vIGZvcmNpbmcgdHJhcCBmb2N1c1xuICAgIHJlbW92ZUZvY3VzVHJhcCgpO1xuICAgIHRoaXMuYWN0aW9uTWVudUNvbXBvbmVudC5ldmVudCA9IGV2ZW50O1xuICAgIHRoaXMuYWN0aW9uTWVudU9wZW4gPSB0cnVlO1xuICB9XG59XG4iLCJcbkBpZih0aXRsZSB8fCBkZXNjcmlwdGlvbikge1xuICA8aW9uLWl0ZW0tc2xpZGluZyAjY29tcG9uZW50PlxuICAgIDxpb24taXRlbVxuICAgICAgW2lkXT1cInVpZFwiXG4gICAgICBbbGluZXNdPVwibGluZXNcIlxuICAgICAgW2J1dHRvbl09XCJidXR0b25cIlxuICAgICAgW2NsYXNzXT1cImNsYXNzTmFtZVwiXG4gICAgICAoY2xpY2spPVwib3BlcmF0aW9ucz8uaW5jbHVkZXMoJ3JlYWQnKSA/IGhhbmRsZUFjdGlvbigncmVhZCcsICRldmVudCwgY29tcG9uZW50KSA6ICcnXG4gICAgXCI+XG4gICAgICBAaWYoaWNvbiAmJiBsaW5lcyAhPT0gJ2luc2V0Jykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLWljb25cIiBbc2xvdF09XCJpY29uU2xvdFwiPlxuICAgICAgICAgIDxpb24tYXZhdGFyPlxuICAgICAgICAgICAgPGlvbi1pY29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIG5hbWU9XCJyZWFkZXItb3V0bGluZVwiIHNpemU9XCJkZWZhdWx0XCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPGRpdiBjbGFzcz1cImRjZi13aWR0aC1leHBhbmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRjZi1mbGV4IGRjZi1mbGV4LW1pZGRsZSBkY2YtZ3JpZC1jb2xsYXBzZVwiIGRjZi1ncmlkPlxuICAgICAgICAgIEBpZihpY29uICYmIGxpbmVzID09PSAnaW5zZXQnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLWljb24gZGNmLWdyaWQtaWNvblwiPlxuICAgICAgICAgICAgICA8aW9uLWF2YXRhcj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cInJlYWRlci1vdXRsaW5lXCIgIHNpemU9XCJkZWZhdWx0XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkY2Ytd2lkdGgtZXhwYW5kQHMgZGNmLXdpZHRoLTEtMSBkY2YtbGFiZWxcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJkY2YtaXRlbS10aXRsZVwiIFtpbm5lckhUTUxdPVwidWlkICsgJyAtICcgKyB0aXRsZVwiID48L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgKm5nSWYgPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cImRjZi1kZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYoaW5mbyB8fCBzdWJpbmZvKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLXdpZHRoLWF1dG9AcyBkY2Ytd2lkdGgtZXhwYW5kIGRjZi1pbmZvIGRjZi1mbGV4IGRjZi1mbGV4LXJpZ2h0QHNcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5mb1wiIFtpbm5lckhUTUxdPVwiaW5mb1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJpbmZvXCIgY2xhc3M9XCJkY2Ytc3ViaW5mbyBkY2YtdGV4dC10cnVuY2F0ZVwiIFtpbm5lckhUTUxdPVwic3ViaW5mb1wiID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLXdpZHRoLWF1dG8gZGNmLWZsZXggZGNmLWZsZXgtbWlkZGxlIGRjZi1mbGV4LXJpZ2h0XCI+XG4gICAgICAgICAgICBAaWYoKG9wZXJhdGlvbnMuaW5jbHVkZXMoJ2RlbGV0ZScpIHx8IG9wZXJhdGlvbnMuaW5jbHVkZXMoJ3VwZGF0ZScpKSAmJiB1aWQpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi12aXNpYmxlQG1cIiBpZD1cImRjZi1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gY2xhc3M9XCJkY2YtaGlkZGVuQG1cIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInByZXNlbnRBY3Rpb25zTWVudSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIG5hbWU9XCJlbGxpcHNpcy12ZXJ0aWNhbC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgPGlvbi1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICAjYWN0aW9uTWVudUNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgc2lkZT1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ9XCJsZWZ0XCJcblxuICAgICAgICAgICAgICAgICAgW2lzT3Blbl09XCJhY3Rpb25NZW51T3BlblwiXG4gICAgICAgICAgICAgICAgICAoZGlkRGlzbWlzcyk9XCJhY3Rpb25NZW51T3BlbiA9IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1saXN0IGxpbmVzPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZGNmLXRleHQtY2FwaXRhbGl6ZVwiIFtpbm5lckhUTUxdPVwiJ2FjdGlvbnMnIHwgdHJhbnNsYXRlXCI+PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3BlcmF0aW9uIG9mIFsndXBkYXRlJywgJ2RlbGV0ZSddOyB0cmFjayBvcGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbnMuaW5jbHVkZXMob3BlcmF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gW2J1dHRvbl09XCJ0cnVlXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvbihvcGVyYXRpb24sICRldmVudCwgY29tcG9uZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1hdmF0YXIgY2xhc3M9XCJkY2YtZmxleCBkY2YtZmxleC1taWRkbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gY29sb3I9XCJwcmltYXJ5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGNvbG9yPVwiZGFuZ2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cInRyYXNoXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImRjZi10ZXh0LWNhcGl0YWxpemVcIj57eyBvcGVyYXRpb24gfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9pb24tcG9wb3Zlcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tIEBpZihvcGVyYXRpb25zPy5sZW5ndGggJiYgdWlkKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtdmlzaWJsZUBtXCIgaWQ9XCJkY2YtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZihvcGVyYXRpb25zPy5pbmNsdWRlcygndXBkYXRlJykpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJoYW5kbGVBY3Rpb24oJ3VwZGF0ZScsICBjb21wb25lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbnM/LmluY2x1ZGVzKCdkZWxldGUnKSkge1xuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgc2l6ZT1cInNtYWxsXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKCdkZWxldGUnLCAgY29tcG9uZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJ0cmFzaFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gLS0+XG4gICAgICAgICAgICBAaWYod2luZG93V2lkdGggPiA3NjgpIHtcbiAgICAgICAgICAgICAgPGRpdiBpZD1cImVuZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PSdlbmQnXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24taXRlbT5cbiAgICBAaWYoc2hvd1NsaWRlSXRlbXMgJiYgdWlkKSB7XG4gICAgICA8aW9uLWl0ZW0tb3B0aW9ucyBzaWRlPVwiZW5kXCIgKGlvblN3aXBlKT1cIm9wZXJhdGlvbnMubGVuZ3RoID09PSAxID8gaGFuZGxlQWN0aW9uKG9wZXJhdGlvbnNbMF0sICAkZXZlbnQsIGNvbXBvbmVudCkgOiAnJ1wiPlxuICAgICAgICBAaWYob3BlcmF0aW9ucz8uaW5jbHVkZXMoJ3VwZGF0ZScpKSB7XG4gICAgICAgICAgPGlvbi1pdGVtLW9wdGlvbiBjbGFzcz1cImRjZi11cGRhdGVcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKCd1cGRhdGUnLCAkZXZlbnQsIGNvbXBvbmVudClcIiBbZXhwYW5kYWJsZV09XCJvcGVyYXRpb25zLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY3JlYXRlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWl0ZW0tb3B0aW9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZihvcGVyYXRpb25zPy5pbmNsdWRlcygnZGVsZXRlJykpIHtcbiAgICAgICAgPGlvbi1pdGVtLW9wdGlvbiBjbGFzcz1cImRjZi0gICAgICAgICAgZGVsZXRlXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvbignZGVsZXRlJywgICRldmVudCwgY29tcG9uZW50KVwiIFtleHBhbmRhYmxlXT1cIm9wZXJhdGlvbnMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJ0cmFzaFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24taXRlbS1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgIDwvaW9uLWl0ZW0tb3B0aW9ucz5cbiAgICB9XG4gIDwvaW9uLWl0ZW0tc2xpZGluZz5cbn1cbiJdfQ==
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBa0IsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFVBQVUsRUFDVixPQUFPLEVBQ1AsYUFBYSxFQUNiLFVBQVUsRUFDVixjQUFjLEVBQ2QsY0FBYyxFQUNkLGFBQWEsRUFDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sS0FBSyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3BE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bUdBQWpCLGlCQUFpQiw2ZkN0RjlCLGkxTEEySEEsaWtNRHBESSxhQUFhLGtEQUNiLE9BQU8seUZBQ1AsYUFBYSxnR0FDYixPQUFPLDBOQUNQLGNBQWMsbUZBQ2QsY0FBYywrRUFDZCxhQUFhLDhKQUNiLE9BQU8sMkpBQ1AsUUFBUSw2RkFDUixTQUFTLG9QQUNULFVBQVUsd0tBQ1YsVUFBVTs7QUFJRCxpQkFBaUI7SUF0QjdCLE9BQU8sRUFBRTs7R0FzQkcsaUJBQWlCLENBaWE3Qjs7NEZBamFZLGlCQUFpQjtrQkFyQjdCLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsVUFBVTtxQkFDWDt3REFlRCxtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMscUJBQXFCO2dCQWNoQyxLQUFLO3NCQURKLEtBQUs7Z0JBYUcsSUFBSTtzQkFEWixLQUFLO2dCQWFOLElBQUk7c0JBREgsS0FBSztnQkFjTixRQUFRO3NCQURQLEtBQUs7Z0JBY04sTUFBTTtzQkFETCxLQUFLO2dCQWFOLEtBQUs7c0JBREosS0FBSztnQkFhTixXQUFXO3NCQURWLEtBQUs7Z0JBYU4sSUFBSTtzQkFESCxLQUFLO2dCQWFOLE9BQU87c0JBRE4sS0FBSztnQkFhTixVQUFVO3NCQURULE1BQU07Z0JBbUxQLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDcnVkT3BlcmF0aW9ucywgT3BlcmF0aW9uS2V5cyB9IGZyb20gJ0BkZWNhZi10cy9kYi1kZWNvcmF0b3JzJztcbmltcG9ydCB7IFN0cmluZ09yQm9vbGVhbiB9IGZyb20gJy4uLy4uL2VuZ2luZS90eXBlcyc7XG5pbXBvcnQgeyBOZ3hCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lL05neEJhc2VDb21wb25lbnQnO1xuaW1wb3J0IHsgcmVtb3ZlRm9jdXNUcmFwLCBzdHJpbmdUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi9oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IGdldFdpbmRvd1dpZHRoLCB3aW5kb3dFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IER5bmFtaWMsIEV2ZW50Q29uc3RhbnRzLCBMaXN0SXRlbUN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkl0ZW0sXG4gIElvbkxhYmVsLFxuICBJb25MaXN0LFxuICBJb25Db250ZW50LFxuICBJb25JY29uLFxuICBJb25MaXN0SGVhZGVyLFxuICBJb25Qb3BvdmVyLFxuICBJb25JdGVtU2xpZGluZyxcbiAgSW9uSXRlbU9wdGlvbnMsXG4gIElvbkl0ZW1PcHRpb25cbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgKiBhcyBBbGxJY29ucyBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhIGxpc3QgaXRlbSB3aXRoIHZhcmlvdXMgY3VzdG9taXphdGlvbiBvcHRpb25zLlxuICogQHN1bW1hcnkgVGhlIExpc3RJdGVtQ29tcG9uZW50IGlzIGFuIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgZXh0ZW5kcyBOZ3hCYXNlQ29tcG9uZW50LiBJdCBwcm92aWRlcyBhIGZsZXhpYmxlIGFuZCBjdXN0b21pemFibGUgbGlzdCBpdGVtIGludGVyZmFjZSB3aXRoIHN1cHBvcnQgZm9yIGljb25zLCBidXR0b25zLCBhbmQgdmFyaW91cyB0ZXh0IGVsZW1lbnRzLiBUaGUgY29tcG9uZW50IGFsc28gaGFuZGxlcyBhY3Rpb25zIGFuZCBuYXZpZ2F0aW9uIGJhc2VkIG9uIHVzZXIgaW50ZXJhY3Rpb25zLlxuICpcbiAqIEBjbGFzc1xuICogQGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbGluZXM9J25vbmUnXSAtIERldGVybWluZXMgdGhlIGxpbmUgc3R5bGUgb2YgdGhlIGl0ZW0uIENhbiBiZSAnaW5zZXQnLCAnaW5zZWV0Jywgb3IgJ25vbmUnLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBpdGVtIC0gVGhlIGRhdGEgaXRlbSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgaXRlbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpY29uIC0gVGhlIG5hbWUgb2YgdGhlIGljb24gdG8gYmUgZGlzcGxheWVkLlxuICogQHBhcmFtIHsnc3RhcnQnIHwgJ2VuZCd9IFtpY29uU2xvdD0nc3RhcnQnXSAtIFRoZSBwb3NpdGlvbiBvZiB0aGUgaWNvbiB3aXRoaW4gdGhlIGl0ZW0uXG4gKiBAcGFyYW0ge1N0cmluZ09yQm9vbGVhbn0gW2J1dHRvbj10cnVlXSAtIERldGVybWluZXMgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlaGF2ZSBhcyBhIGJ1dHRvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbdGl0bGVdIC0gVGhlIG1haW4gdGl0bGUgb2YgdGhlIGxpc3QgaXRlbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZGVzY3JpcHRpb25dIC0gQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGxpc3QgaXRlbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5mb10gLSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgbGlzdCBpdGVtLlxuICogQHBhcmFtIHtzdHJpbmd9IFtzdWJpbmZvXSAtIFN1Yi1pbmZvcm1hdGlvbiBmb3IgdGhlIGxpc3QgaXRlbS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPG5neC1kZWNhZi1saXN0LWl0ZW1cbiAqICAgW2l0ZW1dPVwiZGF0YUl0ZW1cIlxuICogICBpY29uPVwic3RhclwiXG4gKiAgIHRpdGxlPVwiSXRlbSBUaXRsZVwiXG4gKiAgIGRlc2NyaXB0aW9uPVwiSXRlbSBEZXNjcmlwdGlvblwiXG4gKiAgIChjbGlja0V2ZW50KT1cImhhbmRsZUl0ZW1DbGljaygkZXZlbnQpXCI+XG4gKiA8L25neC1kZWNhZi1saXN0LWl0ZW0+XG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENvbXBvbmVudFxuICogICBwYXJ0aWNpcGFudCBWIGFzIFZpZXdcbiAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyXG4gKiAgIEMtPj5WOiBJbml0aWFsaXplIGNvbXBvbmVudFxuICogICBWLT4+VTogRGlzcGxheSBsaXN0IGl0ZW1cbiAqICAgVS0+PlY6IENsaWNrIG9uIGl0ZW0gb3IgYWN0aW9uXG4gKiAgIFYtPj5DOiBUcmlnZ2VyIGhhbmRsZUFjdGlvbigpXG4gKiAgIEMtPj5DOiBQcm9jZXNzIGFjdGlvblxuICogICBDLT4+VjogVXBkYXRlIHZpZXcgb3IgbmF2aWdhdGVcbiAqL1xuQER5bmFtaWMoKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWRlY2FmLWxpc3QtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgSW9uTGlzdCxcbiAgICBJb25MaXN0SGVhZGVyLFxuICAgIElvbkl0ZW0sXG4gICAgSW9uSXRlbVNsaWRpbmcsXG4gICAgSW9uSXRlbU9wdGlvbnMsXG4gICAgSW9uSXRlbU9wdGlvbixcbiAgICBJb25JY29uLFxuICAgIElvbkxhYmVsLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Db250ZW50LFxuICAgIElvblBvcG92ZXJcbiAgXVxuXG59KVxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgTmd4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2UgdG8gdGhlIGFjdGlvbiBtZW51IHBvcG92ZXIgY29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBWaWV3Q2hpbGQgcmVmZXJlbmNlIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBIVE1MSW9uUG9wb3ZlckVsZW1lbnRcbiAgICogdXNlZCBmb3IgZGlzcGxheWluZyBhY3Rpb24gbWVudXMuIFRoaXMgcmVmZXJlbmNlIGlzIHVzZWQgdG8gcHJvZ3JhbW1hdGljYWxseVxuICAgKiBjb250cm9sIHRoZSBwb3BvdmVyLCBzdWNoIGFzIGRpc21pc3NpbmcgaXQgd2hlbiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIEB0eXBlIHtIVE1MSW9uUG9wb3ZlckVsZW1lbnR9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQFZpZXdDaGlsZCgnYWN0aW9uTWVudUNvbXBvbmVudCcpXG4gIGFjdGlvbk1lbnVDb21wb25lbnQhOiBIVE1MSW9uUG9wb3ZlckVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB0aGUgZGlzcGxheSBvZiBsaW5lcyBhcm91bmQgdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyBob3cgbGluZXMgYXJlIGRpc3BsYXllZCBhcm91bmQgdGhlIGxpc3QgaXRlbSBib3JkZXJzLlxuICAgKiAnaW5zZXQnIHNob3dzIGxpbmVzIHdpdGggcGFkZGluZywgJ2Z1bGwnIHNob3dzIGZ1bGwtd2lkdGggbGluZXMsIGFuZCAnbm9uZSdcbiAgICogcmVtb3ZlcyBhbGwgbGluZXMuIFRoaXMgYWZmZWN0cyB0aGUgdmlzdWFsIHNlcGFyYXRpb24gYmV0d2VlbiBsaXN0IGl0ZW1zLlxuICAgKlxuICAgKiBAdHlwZSB7J2luc2V0JyB8ICdmdWxsJyB8ICdub25lJ31cbiAgICogQGRlZmF1bHQgJ2luc2V0J1xuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxpbmVzOiAnaW5zZXQnIHwgJ2Z1bGwnIHwgJ25vbmUnID0gJ2Z1bGwnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGRhdGEgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgQ29udGFpbnMgdGhlIHJhdyBkYXRhIHRoYXQgdGhpcyBsaXN0IGl0ZW0gcmVwcmVzZW50cy4gVGhpcyBvYmplY3RcbiAgICogaXMgdXNlZCB0byBleHRyYWN0IGRpc3BsYXkgaW5mb3JtYXRpb24gYW5kIGZvciBwYXNzaW5nIHRvIGV2ZW50IGhhbmRsZXJzXG4gICAqIHdoZW4gdGhlIGl0ZW0gaXMgaW50ZXJhY3RlZCB3aXRoLiBJdCBvdmVycmlkZXMgdGhlIGJhc2UgaXRlbSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIGl0ZW0hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGRpc3BsYXkgaW4gdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgU3BlY2lmaWVzIHdoaWNoIGljb24gdG8gZGlzcGxheSB1c2luZyBJb25pYydzIGljb24gc3lzdGVtLlxuICAgKiBUaGUgaWNvbiBuYW1lIHNob3VsZCBjb3JyZXNwb25kIHRvIGFuIGF2YWlsYWJsZSBJb25pYyBpY29uIG9yIGEgY3VzdG9tXG4gICAqIGljb24gdGhhdCBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGljb24gcmVnaXN0cnkuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgaWNvbiE6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBvc2l0aW9uIG9mIHRoZSBpY29uIHdpdGhpbiB0aGUgbGlzdCBpdGVtLlxuICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGljb24gYXBwZWFycyBhdCB0aGUgc3RhcnQgKGxlZnQgaW4gTFRSIGxhbmd1YWdlcylcbiAgICogb3IgZW5kIChyaWdodCBpbiBMVFIgbGFuZ3VhZ2VzKSBvZiB0aGUgbGlzdCBpdGVtLiBUaGlzIGFmZmVjdHMgdGhlIG92ZXJhbGxcbiAgICogbGF5b3V0IGFuZCB2aXN1YWwgaGllcmFyY2h5IG9mIHRoZSBpdGVtIGNvbnRlbnQuXG4gICAqXG4gICAqIEB0eXBlIHsnc3RhcnQnIHwgJ2VuZCd9XG4gICAqIEBkZWZhdWx0ICdzdGFydCdcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBpY29uU2xvdDogJ3N0YXJ0JyB8ICdlbmQnID0nc3RhcnQnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgd2hldGhlciB0aGUgbGlzdCBpdGVtIGJlaGF2ZXMgYXMgYSBjbGlja2FibGUgYnV0dG9uLlxuICAgKiBAc3VtbWFyeSBXaGVuIHNldCB0byB0cnVlLCB0aGUgbGlzdCBpdGVtIHdpbGwgaGF2ZSBidXR0b24tbGlrZSBiZWhhdmlvciBpbmNsdWRpbmdcbiAgICogaG92ZXIgZWZmZWN0cywgY2xpY2sgaGFuZGxpbmcsIGFuZCBhcHByb3ByaWF0ZSBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZXMuXG4gICAqIFdoZW4gZmFsc2UsIHRoZSBpdGVtIGlzIGRpc3BsYXllZCBhcyBzdGF0aWMgY29udGVudCB3aXRob3V0IGludGVyYWN0aXZlIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAdHlwZSB7U3RyaW5nT3JCb29sZWFufVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgYnV0dG9uOiBTdHJpbmdPckJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIG1haW4gdGl0bGUgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgU2V0cyB0aGUgcHJpbWFyeSB0ZXh0IGNvbnRlbnQgdGhhdCBhcHBlYXJzIHByb21pbmVudGx5IGluIHRoZSBsaXN0IGl0ZW0uXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBtb3N0IGltcG9ydGFudCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSBhbmQgaXMgZGlzcGxheWVkXG4gICAqIHdpdGggZW1waGFzaXMgaW4gdGhlIGNvbXBvbmVudCdzIHZpc3VhbCBoaWVyYXJjaHkuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTZWNvbmRhcnkgZGVzY3JpcHRpdmUgdGV4dCBmb3IgdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgYWRkaXRpb25hbCBjb250ZXh0IG9yIGRldGFpbHMgYWJvdXQgdGhlIGl0ZW0uIFRoaXMgdGV4dFxuICAgKiBpcyB0eXBpY2FsbHkgZGlzcGxheWVkIGJlbG93IHRoZSB0aXRsZSB3aXRoIGxlc3MgdmlzdWFsIGVtcGhhc2lzLlxuICAgKiBVc2VmdWwgZm9yIHByb3ZpZGluZyBjb250ZXh0IHdpdGhvdXQgY2x1dHRlcmluZyB0aGUgbWFpbiB0aXRsZS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGV4dCBmb3IgdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgRGlzcGxheXMgc3VwcGxlbWVudGFyeSBpbmZvcm1hdGlvbiB0aGF0IHByb3ZpZGVzIGV4dHJhIGNvbnRleHRcbiAgICogYWJvdXQgdGhlIGl0ZW0uIFRoaXMgY291bGQgaW5jbHVkZSBtZXRhZGF0YSwgc3RhdHVzIGluZm9ybWF0aW9uLCBvclxuICAgKiBvdGhlciByZWxldmFudCBkZXRhaWxzIHRoYXQgZG9uJ3QgZml0IGluIHRoZSB0aXRsZSBvciBkZXNjcmlwdGlvbi5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBpbmZvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3ViLWluZm9ybWF0aW9uIHRleHQgZGlzcGxheWVkIGluIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIHRlcnRpYXJ5IGxldmVsIGluZm9ybWF0aW9uIHRoYXQgY29tcGxlbWVudHMgdGhlIGluZm8gZmllbGQuXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGFkZGl0aW9uYWwgbWV0YWRhdGEgb3IgY29udGV4dHVhbCBkZXRhaWxzXG4gICAqIHRoYXQgYXJlIHVzZWZ1bCBidXQgbm90IGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpdGVtLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHN1YmluZm8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudCBlbWl0dGVyIGZvciBsaXN0IGl0ZW0gY2xpY2sgaW50ZXJhY3Rpb25zLlxuICAgKiBAc3VtbWFyeSBFbWl0cyBjdXN0b20gZXZlbnRzIHdoZW4gdGhlIGxpc3QgaXRlbSBpcyBjbGlja2VkIG9yIHdoZW4gYWN0aW9uc1xuICAgKiBhcmUgcGVyZm9ybWVkIG9uIGl0LiBUaGUgZW1pdHRlZCBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWN0aW9uLFxuICAgKiB0aGUgaXRlbSBkYXRhLCBhbmQgb3RoZXIgcmVsZXZhbnQgY29udGV4dCBmb3IgcGFyZW50IGNvbXBvbmVudHMgdG8gaGFuZGxlLlxuICAgKlxuICAgKiBAdHlwZSB7RXZlbnRFbWl0dGVyPExpc3RJdGVtQ3VzdG9tRXZlbnQ+fVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBjbGlja0V2ZW50OiAgRXZlbnRFbWl0dGVyPExpc3RJdGVtQ3VzdG9tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0SXRlbUN1c3RvbUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgc2xpZGUgaXRlbXMgYXJlIGN1cnJlbnRseSBlbmFibGVkLlxuICAgKiBAc3VtbWFyeSBDb250cm9scyB0aGUgdmlzaWJpbGl0eSBvZiBzbGlkZSBhY3Rpb25zIGJhc2VkIG9uIHNjcmVlbiBzaXplIGFuZFxuICAgKiBhdmFpbGFibGUgb3BlcmF0aW9ucy4gV2hlbiB0cnVlLCB1c2VycyBjYW4gc3dpcGUgb24gdGhlIGl0ZW0gdG8gcmV2ZWFsXG4gICAqIGFjdGlvbiBidXR0b25zIGZvciBvcGVyYXRpb25zIGxpa2UgZWRpdCBhbmQgZGVsZXRlLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBzaG93U2xpZGVJdGVtczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCB3aW5kb3cgd2lkdGggaW4gcGl4ZWxzLlxuICAgKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgYnJvd3NlciB3aW5kb3cgd2lkdGggd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmVcbiAgICogcmVzcG9uc2l2ZSBiZWhhdmlvciwgc3VjaCBhcyB3aGVuIHRvIHNob3cgb3IgaGlkZSBzbGlkZSBpdGVtcyBiYXNlZCBvblxuICAgKiBzY3JlZW4gc2l6ZS4gVXBkYXRlZCBhdXRvbWF0aWNhbGx5IG9uIHdpbmRvdyByZXNpemUgZXZlbnRzLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyT2YgTGlzdEl0ZW1Db21wb25lbnRcbiAgICovXG4gIHdpbmRvd1dpZHRoITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGFjdGlvbiBtZW51IHBvcG92ZXIgaXMgY3VycmVudGx5IG9wZW4uXG4gICAqIEBzdW1tYXJ5IFRyYWNrcyB0aGUgc3RhdGUgb2YgdGhlIGFjdGlvbiBtZW51IHRvIHByZXZlbnQgbXVsdGlwbGUgaW5zdGFuY2VzXG4gICAqIGZyb20gYmVpbmcgb3BlbmVkIHNpbXVsdGFuZW91c2x5IGFuZCB0byBlbnN1cmUgcHJvcGVyIGNsZWFudXAgd2hlbiBhY3Rpb25zXG4gICAqIGFyZSBwZXJmb3JtZWQuIFVzZWQgZm9yIG1hbmFnaW5nIHRoZSBwb3BvdmVyIGxpZmVjeWNsZS5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgYWN0aW9uTWVudU9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFuZ3VsYXIgTmF2Q29udHJvbGxlciBzZXJ2aWNlIGZvciBoYW5kbGluZyBuYXZpZ2F0aW9uLlxuICAgKiBAc3VtbWFyeSBJbmplY3RlZCBzZXJ2aWNlIHRoYXQgcHJvdmlkZXMgbWV0aG9kcyBmb3IgcHJvZ3JhbW1hdGljIG5hdmlnYXRpb25cbiAgICogd2l0aGluIHRoZSBJb25pYyBhcHBsaWNhdGlvbi4gVXNlZCBmb3IgbmF2aWdhdGluZyB0byBkaWZmZXJlbnQgcm91dGVzIHdoZW5cbiAgICogbGlzdCBpdGVtIGFjdGlvbnMgYXJlIHBlcmZvcm1lZCBvciB3aGVuIHRoZSBpdGVtIGl0c2VsZiBpcyBjbGlja2VkLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7TmF2Q29udHJvbGxlcn1cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBwcml2YXRlIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIgPSBpbmplY3QoTmF2Q29udHJvbGxlcik7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIExpc3RJdGVtQ29tcG9uZW50LlxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIG5ldyBMaXN0SXRlbUNvbXBvbmVudCBieSBjYWxsaW5nIHRoZSBwYXJlbnQgY2xhc3MgY29uc3RydWN0b3JcbiAgICogd2l0aCB0aGUgY29tcG9uZW50IG5hbWUgZm9yIGxvZ2dpbmcgYW5kIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzLiBBbHNvIHJlZ2lzdGVyc1xuICAgKiBhbGwgYXZhaWxhYmxlIElvbmljIGljb25zIHRvIGVuc3VyZSB0aGV5IGNhbiBiZSBkaXNwbGF5ZWQgaW4gdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIkxpc3RJdGVtQ29tcG9uZW50XCIpO1xuICAgIGFkZEljb25zKEFsbEljb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50IGFmdGVyIEFuZ3VsYXIgZmlyc3QgZGlzcGxheXMgdGhlIGRhdGEtYm91bmQgcHJvcGVydGllcy5cbiAgICogQHN1bW1hcnkgU2V0cyB1cCB0aGUgY29tcG9uZW50IGJ5IGRldGVybWluaW5nIHNsaWRlIGl0ZW0gdmlzaWJpbGl0eSwgcHJvY2Vzc2luZyBib29sZWFuIGlucHV0cyxcbiAgICogYnVpbGRpbmcgQ1NTIGNsYXNzIG5hbWVzIGJhc2VkIG9uIHByb3BlcnRpZXMsIGFuZCBjYXB0dXJpbmcgdGhlIGN1cnJlbnQgd2luZG93IHdpZHRoLlxuICAgKiBUaGlzIG1ldGhvZCBwcmVwYXJlcyB0aGUgY29tcG9uZW50IGZvciB1c2VyIGludGVyYWN0aW9uIGJ5IGVuc3VyaW5nIGFsbCBwcm9wZXJ0aWVzIGFyZVxuICAgKiBwcm9wZXJseSBpbml0aWFsaXplZCBhbmQgcmVzcG9uc2l2ZSBiZWhhdmlvciBpcyBjb25maWd1cmVkLlxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIEFuZ3VsYXIgTGlmZWN5Y2xlXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMaXN0SXRlbUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IFcgYXMgV2luZG93XG4gICAqXG4gICAqICAgQS0+Pkw6IG5nT25Jbml0KClcbiAgICogICBMLT4+TDogZW5hYmxlU2xpZGVJdGVtcygpXG4gICAqICAgTC0+Pkw6IFByb2Nlc3MgYnV0dG9uIGJvb2xlYW5cbiAgICogICBMLT4+TDogQnVpbGQgY2xhc3NOYW1lIHdpdGggZmxleCBjbGFzc2VzXG4gICAqICAgYWx0IG9wZXJhdGlvbnMgZXhpc3RcbiAgICogICAgIEwtPj5MOiBBZGQgJ2FjdGlvbicgY2xhc3NcbiAgICogICBlbmRcbiAgICogICBMLT4+VzogZ2V0V2luZG93V2lkdGgoKVxuICAgKiAgIFctLT4+TDogUmV0dXJuIGN1cnJlbnQgd2lkdGhcbiAgICogICBMLT4+TDogU3RvcmUgd2luZG93V2lkdGhcbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNob3dTbGlkZUl0ZW1zID0gdGhpcy5lbmFibGVTbGlkZUl0ZW1zKCk7XG4gICAgdGhpcy5idXR0b24gPSBzdHJpbmdUb0Jvb2xlYW4odGhpcy5idXR0b24pO1xuXG4gICAgdGhpcy5jbGFzc05hbWUgPSBgJHt0aGlzLmNsYXNzTmFtZX0gIGRjZi1mbGV4IGRjZi1mbGV4LW1pZGRsZSBncmlkLWl0ZW1gO1xuICAgIGlmKHRoaXMub3BlcmF0aW9ucz8ubGVuZ3RoKVxuICAgICAgdGhpcy5jbGFzc05hbWUgKz0gYCBhY3Rpb25gO1xuICAgIHRoaXMud2luZG93V2lkdGggPSBnZXRXaW5kb3dXaWR0aCgpIGFzIG51bWJlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlcyB1c2VyIGludGVyYWN0aW9ucyBhbmQgYWN0aW9ucyBwZXJmb3JtZWQgb24gdGhlIGxpc3QgaXRlbS5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgaXMgdGhlIGNlbnRyYWwgYWN0aW9uIGhhbmRsZXIgZm9yIGxpc3QgaXRlbSBpbnRlcmFjdGlvbnMuIEl0IG1hbmFnZXNcbiAgICogZXZlbnQgcHJvcGFnYXRpb24sIGRpc21pc3NlcyBvcGVuIGFjdGlvbiBtZW51cywgcmVtb3ZlcyBmb2N1cyB0cmFwcywgYW5kIGVpdGhlciBlbWl0c1xuICAgKiBldmVudHMgZm9yIHBhcmVudCBjb21wb25lbnRzIHRvIGhhbmRsZSBvciBwZXJmb3JtcyBuYXZpZ2F0aW9uIGJhc2VkIG9uIHRoZSBjb21wb25lbnQnc1xuICAgKiByb3V0ZSBjb25maWd1cmF0aW9uLiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBib3RoIGV2ZW50LWRyaXZlbiBhbmQgbmF2aWdhdGlvbi1kcml2ZW4gYXJjaGl0ZWN0dXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHtDcnVkT3BlcmF0aW9uc30gYWN0aW9uIC0gVGhlIHR5cGUgb2YgQ1JVRCBvcGVyYXRpb24gYmVpbmcgcGVyZm9ybWVkXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gVGhlIGJyb3dzZXIgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGFjdGlvblxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBbdGFyZ2V0XSAtIE9wdGlvbmFsIHRhcmdldCBlbGVtZW50IGZvciB0aGUgZXZlbnRcbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFufHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBuYXZpZ2F0aW9uIHN1Y2Nlc3Mgb3Igdm9pZCBmb3IgZXZlbnRzXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgVXNlclxuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTGlzdEl0ZW1Db21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBQIGFzIFBhcmVudCBDb21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBOIGFzIE5hdkNvbnRyb2xsZXJcbiAgICogICBwYXJ0aWNpcGFudCBFIGFzIEV2ZW50IFN5c3RlbVxuICAgKlxuICAgKiAgIFUtPj5MOiBQZXJmb3JtIGFjdGlvbiAoY2xpY2svc3dpcGUpXG4gICAqICAgTC0+Pkw6IHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAqICAgYWx0IGFjdGlvbk1lbnVPcGVuXG4gICAqICAgICBMLT4+TDogRGlzbWlzcyBhY3Rpb24gbWVudVxuICAgKiAgIGVuZFxuICAgKiAgIEwtPj5MOiByZW1vdmVGb2N1c1RyYXAoKVxuICAgKiAgIGFsdCBObyByb3V0ZSBjb25maWd1cmVkXG4gICAqICAgICBMLT4+RTogd2luZG93RXZlbnRFbWl0dGVyKClcbiAgICogICAgIEwtPj5QOiBjbGlja0V2ZW50LmVtaXQoKVxuICAgKiAgIGVsc2UgUm91dGUgY29uZmlndXJlZFxuICAgKiAgICAgTC0+Pk46IHJlZGlyZWN0KGFjdGlvbiwgdWlkKVxuICAgKiAgICAgTi0tPj5MOiBSZXR1cm4gbmF2aWdhdGlvbiByZXN1bHRcbiAgICogICBlbmRcbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBhc3luYyBoYW5kbGVBY3Rpb24oYWN0aW9uOiBDcnVkT3BlcmF0aW9ucywgZXZlbnQ6IEV2ZW50LCB0YXJnZXQ/OiBIVE1MRWxlbWVudCk6IFByb21pc2U8Ym9vbGVhbnx2b2lkPiB7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgaWYodGhpcy5hY3Rpb25NZW51T3BlbilcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9uTWVudUNvbXBvbmVudC5kaXNtaXNzKCk7XG4gICAgLy8gZm9yY2luZyB0cmFwIGZvY3VzXG4gICAgcmVtb3ZlRm9jdXNUcmFwKCk7XG4gICAgaWYoIXRoaXMucm91dGUpIHtcbiAgICAgIGNvbnN0IGV2ZW50ID0ge3RhcmdldDogdGFyZ2V0LCBhY3Rpb24sIHBrOiB0aGlzLnBrLCBkYXRhOiB0aGlzLnVpZCwgbmFtZTogRXZlbnRDb25zdGFudHMuQ0xJQ0ssIGNvbXBvbmVudDogdGhpcy5jb21wb25lbnROYW1lIH0gYXMgTGlzdEl0ZW1DdXN0b21FdmVudDtcbiAgICAgIHdpbmRvd0V2ZW50RW1pdHRlcihgTGlzdEl0ZW0ke0V2ZW50Q29uc3RhbnRzLkNMSUNLfWAsIGV2ZW50KTtcbiAgICAgIHJldHVybiB0aGlzLmNsaWNrRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnJlZGlyZWN0KGFjdGlvbiwgKHR5cGVvZiB0aGlzLnVpZCA9PT0gJ251bWJlcicgPyBgJHt0aGlzLnVpZH1gOiB0aGlzLnVpZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zaXZlIGhhbmRsZXIgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIHNsaWRlIGl0ZW1zIGJhc2VkIG9uIHNjcmVlbiBzaXplIGFuZCBvcGVyYXRpb25zLlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCB3aGVuIHRoZSB3aW5kb3cgaXMgcmVzaXplZCBhbmQgYWxzbyBkdXJpbmcgY29tcG9uZW50XG4gICAqIGluaXRpYWxpemF0aW9uLiBJdCBkZXRlcm1pbmVzIHdoZXRoZXIgc2xpZGUgYWN0aW9ucyBzaG91bGQgYmUgYXZhaWxhYmxlIGJhc2VkIG9uIHRoZSBjdXJyZW50XG4gICAqIHdpbmRvdyB3aWR0aCBhbmQgdGhlIHByZXNlbmNlIG9mIFVQREFURSBvciBERUxFVEUgb3BlcmF0aW9ucy4gU2xpZGUgaXRlbXMgYXJlIHR5cGljYWxseSBoaWRkZW5cbiAgICogb24gbGFyZ2VyIHNjcmVlbnMgd2hlcmUgdGhlcmUncyBzcGFjZSBmb3IgZGVkaWNhdGVkIGFjdGlvbiBidXR0b25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHNsaWRlIGl0ZW1zIHNob3VsZCBiZSBzaG93biwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFcgYXMgV2luZG93XG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMaXN0SXRlbUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgVUlcbiAgICpcbiAgICogICBXLT4+TDogcmVzaXplIGV2ZW50XG4gICAqICAgTC0+Plc6IGdldFdpbmRvd1dpZHRoKClcbiAgICogICBXLS0+Pkw6IFJldHVybiBjdXJyZW50IHdpZHRoXG4gICAqICAgTC0+Pkw6IFN0b3JlIHdpbmRvd1dpZHRoXG4gICAqICAgYWx0IE5vIG9wZXJhdGlvbnMgT1Igd2lkdGggPiA2MzlweFxuICAgKiAgICAgTC0+PlU6IHNob3dTbGlkZUl0ZW1zID0gZmFsc2VcbiAgICogICBlbHNlIE9wZXJhdGlvbnMgaW5jbHVkZSBVUERBVEUvREVMRVRFXG4gICAqICAgICBMLT4+VTogc2hvd1NsaWRlSXRlbXMgPSB0cnVlXG4gICAqICAgZW5kXG4gICAqICAgTC0tPj5VOiBSZXR1cm4gc2hvd1NsaWRlSXRlbXMgdmFsdWVcbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgZW5hYmxlU2xpZGVJdGVtcygpOiBib29sZWFuIHtcbiAgICB0aGlzLndpbmRvd1dpZHRoID0gZ2V0V2luZG93V2lkdGgoKSBhcyBudW1iZXI7XG4gICAgaWYoIXRoaXMub3BlcmF0aW9ucz8ubGVuZ3RoIHx8IHRoaXMud2luZG93V2lkdGggPiA2MzkpXG4gICAgICByZXR1cm4gdGhpcy5zaG93U2xpZGVJdGVtcyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NsaWRlSXRlbXMgPSB0aGlzLm9wZXJhdGlvbnMuaW5jbHVkZXMoT3BlcmF0aW9uS2V5cy5VUERBVEUpIHx8IHRoaXMub3BlcmF0aW9ucy5pbmNsdWRlcyhPcGVyYXRpb25LZXlzLkRFTEVURSk7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1NsaWRlSXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFuaW1hdGVzIGFuZCByZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSB0aGUgRE9NLlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBhcHBsaWVzIENTUyBhbmltYXRpb24gY2xhc3NlcyB0byBjcmVhdGUgYSBzbW9vdGggZmFkZS1vdXQgZWZmZWN0XG4gICAqIGJlZm9yZSByZW1vdmluZyB0aGUgZWxlbWVudCBmcm9tIHRoZSBET00uIFRoZSBhbmltYXRpb24gZW5oYW5jZXMgdXNlciBleHBlcmllbmNlIGJ5XG4gICAqIHByb3ZpZGluZyB2aXN1YWwgZmVlZGJhY2sgd2hlbiBpdGVtcyBhcmUgZGVsZXRlZCBvciByZW1vdmVkIGZyb20gbGlzdHMuIFRoZSB0aW1pbmdcbiAgICogaXMgY29vcmRpbmF0ZWQgd2l0aCB0aGUgQ1NTIGFuaW1hdGlvbiBkdXJhdGlvbiB0byBlbnN1cmUgdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZFxuICAgKiBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudCAtIFRoZSBET00gZWxlbWVudCB0byBhbmltYXRlIGFuZCByZW1vdmVcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBMaXN0SXRlbUNvbXBvbmVudFxuICAgKiAgIHBhcnRpY2lwYW50IEUgYXMgSFRNTEVsZW1lbnRcbiAgICogICBwYXJ0aWNpcGFudCBEIGFzIERPTVxuICAgKlxuICAgKiAgIEwtPj5FOiBBZGQgYW5pbWF0aW9uIGNsYXNzZXNcbiAgICogICBOb3RlIG92ZXIgRTogdWstYW5pbWF0aW9uLWZhZGUsIHVrLWFuaW1hdGlvbi1tZWRpdW0sIHVrLWFuaW1hdGlvbi1yZXZlcnNlXG4gICAqICAgRS0+PkU6IFN0YXJ0IGZhZGUgYW5pbWF0aW9uXG4gICAqICAgTC0+Pkw6IHNldFRpbWVvdXQoNjAwbXMpXG4gICAqICAgTm90ZSBvdmVyIEw6IFdhaXQgZm9yIGFuaW1hdGlvbiB0byBjb21wbGV0ZVxuICAgKiAgIEwtPj5EOiBlbGVtZW50LnJlbW92ZSgpXG4gICAqICAgRC0+PkQ6IFJlbW92ZSBlbGVtZW50IGZyb20gRE9NXG4gICAqXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgcmVtb3ZlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndWstYW5pbWF0aW9uLWZhZGUnLCAndWstYW5pbWF0aW9uLW1lZGl1bScsICd1ay1hbmltYXRpb24tcmV2ZXJzZScpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge2VsZW1lbnQucmVtb3ZlKCl9LCA2MDApXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5hdmlnYXRlcyB0byBhIG5ldyByb3V0ZSBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIGFjdGlvbiBhbmQgaXRlbSBJRC5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgY29uc3RydWN0cyBhIG5hdmlnYXRpb24gVVJMIHVzaW5nIHRoZSBjb21wb25lbnQncyByb3V0ZSBjb25maWd1cmF0aW9uLFxuICAgKiB0aGUgc3BlY2lmaWVkIGFjdGlvbiwgYW5kIGFuIGl0ZW0gaWRlbnRpZmllci4gSXQgdXNlcyBJb25pYydzIE5hdkNvbnRyb2xsZXIgdG8gcGVyZm9ybVxuICAgKiBmb3J3YXJkIG5hdmlnYXRpb24gd2l0aCBhcHByb3ByaWF0ZSBhbmltYXRpb25zLiBUaGlzIG1ldGhvZCBpcyB0eXBpY2FsbHkgdXNlZCBmb3JcbiAgICogQ1JVRCBvcGVyYXRpb25zIHdoZXJlIGVhY2ggYWN0aW9uIChjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgZGVsZXRlKSBoYXMgaXRzIG93biByb3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbiAtIFRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkIChlLmcuLCAnZWRpdCcsICd2aWV3JywgJ2RlbGV0ZScpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbaWRdIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHRvIGJlIGFjdGVkIHVwb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiBuYXZpZ2F0aW9uIHdhcyBzdWNjZXNzZnVsXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTGlzdEl0ZW1Db21wb25lbnRcbiAgICogICBwYXJ0aWNpcGFudCBOIGFzIE5hdkNvbnRyb2xsZXJcbiAgICogICBwYXJ0aWNpcGFudCBSIGFzIFJvdXRlclxuICAgKlxuICAgKiAgIEwtPj5MOiByZWRpcmVjdChhY3Rpb24sIGlkKVxuICAgKiAgIEwtPj5MOiBDb25zdHJ1Y3QgVVJMOiAve3JvdXRlfS97YWN0aW9ufS97aWR9XG4gICAqICAgTC0+Pk46IG5hdmlnYXRlRm9yd2FyZCh1cmwpXG4gICAqICAgTi0+PlI6IE5hdmlnYXRlIHRvIGNvbnN0cnVjdGVkIFVSTFxuICAgKiAgIFItLT4+TjogUmV0dXJuIG5hdmlnYXRpb24gcmVzdWx0XG4gICAqICAgTi0tPj5MOiBSZXR1cm4gYm9vbGVhbiBzdWNjZXNzXG4gICAqXG4gICAqIEBtZW1iZXJPZiBMaXN0SXRlbUNvbXBvbmVudFxuICAgKi9cbiAgYXN5bmMgcmVkaXJlY3QoYWN0aW9uOiBzdHJpbmcsIGlkPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUZvcndhcmQoYC8ke3RoaXMucm91dGV9LyR7YWN0aW9ufS8ke2lkIHx8IHRoaXMudWlkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcmVzZW50cyB0aGUgYWN0aW9ucyBtZW51IHBvcG92ZXIgZm9yIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGhhbmRsZXMgdGhlIGRpc3BsYXkgb2YgYSBjb250ZXh0dWFsIGFjdGlvbiBtZW51IHdoZW4gdHJpZ2dlcmVkIGJ5IHVzZXJcbiAgICogaW50ZXJhY3Rpb24gKHR5cGljYWxseSBhIGxvbmcgcHJlc3Mgb3IgcmlnaHQtY2xpY2spLiBJdCBzdG9wcyBldmVudCBwcm9wYWdhdGlvbiB0byBwcmV2ZW50XG4gICAqIHVud2FudGVkIHNpZGUgZWZmZWN0cywgcmVtb3ZlcyBhbnkgZXhpc3RpbmcgZm9jdXMgdHJhcHMgZm9yIGFjY2Vzc2liaWxpdHksIGNvbmZpZ3VyZXMgdGhlXG4gICAqIHBvcG92ZXIgd2l0aCB0aGUgdHJpZ2dlcmluZyBldmVudCwgYW5kIG9wZW5zIHRoZSBhY3Rpb24gbWVudS4gVGhlIG1lbnUgdHlwaWNhbGx5IGNvbnRhaW5zXG4gICAqIGF2YWlsYWJsZSBDUlVEIG9wZXJhdGlvbnMgZm9yIHRoZSBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIFRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgYWN0aW9uIG1lbnUgcmVxdWVzdFxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAgICogICBwYXJ0aWNpcGFudCBMIGFzIExpc3RJdGVtQ29tcG9uZW50XG4gICAqICAgcGFydGljaXBhbnQgUCBhcyBQb3BvdmVyXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBBY2Nlc3NpYmlsaXR5XG4gICAqXG4gICAqICAgVS0+Pkw6IFRyaWdnZXIgYWN0aW9uIG1lbnUgKGxvbmcgcHJlc3MvcmlnaHQtY2xpY2spXG4gICAqICAgTC0+Pkw6IHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAqICAgTC0+PkE6IHJlbW92ZUZvY3VzVHJhcCgpXG4gICAqICAgTC0+PlA6IFNldCBldmVudCByZWZlcmVuY2VcbiAgICogICBMLT4+TDogYWN0aW9uTWVudU9wZW4gPSB0cnVlXG4gICAqICAgTC0+PlA6IERpc3BsYXkgcG9wb3ZlciB3aXRoIGFjdGlvbnNcbiAgICpcbiAgICogQG1lbWJlck9mIExpc3RJdGVtQ29tcG9uZW50XG4gICAqL1xuICBwcmVzZW50QWN0aW9uc01lbnUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgLy8gZm9yY2luZyB0cmFwIGZvY3VzXG4gICAgcmVtb3ZlRm9jdXNUcmFwKCk7XG4gICAgdGhpcy5hY3Rpb25NZW51Q29tcG9uZW50LmV2ZW50ID0gZXZlbnQ7XG4gICAgdGhpcy5hY3Rpb25NZW51T3BlbiA9IHRydWU7XG4gIH1cbn1cbiIsIlxuQGlmKHRpdGxlIHx8IGRlc2NyaXB0aW9uKSB7XG4gIDxpb24taXRlbS1zbGlkaW5nICNjb21wb25lbnQ+XG4gICAgPGlvbi1pdGVtXG4gICAgICBbaWRdPVwidWlkXCJcbiAgICAgIFtsaW5lc109XCJsaW5lc1wiXG4gICAgICBbYnV0dG9uXT1cImJ1dHRvblwiXG4gICAgICBbY2xhc3NdPVwiY2xhc3NOYW1lXCJcbiAgICAgIChjbGljayk9XCJvcGVyYXRpb25zPy5pbmNsdWRlcygncmVhZCcpID8gaGFuZGxlQWN0aW9uKCdyZWFkJywgJGV2ZW50LCBjb21wb25lbnQpIDogJydcbiAgICBcIj5cbiAgICAgIEBpZihpY29uICYmIGxpbmVzICE9PSAnaW5zZXQnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtaWNvblwiIFtzbG90XT1cImljb25TbG90XCI+XG4gICAgICAgICAgPGlvbi1hdmF0YXI+XG4gICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cInJlYWRlci1vdXRsaW5lXCIgc2l6ZT1cImRlZmF1bHRcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWF2YXRhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8ZGl2IGNsYXNzPVwiZGNmLXdpZHRoLWV4cGFuZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLWZsZXggZGNmLWZsZXgtbWlkZGxlIGRjZi1ncmlkLWNvbGxhcHNlXCIgZGNmLWdyaWQ+XG4gICAgICAgICAgQGlmKGljb24gJiYgbGluZXMgPT09ICdpbnNldCcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtaWNvbiBkY2YtZ3JpZC1pY29uXCI+XG4gICAgICAgICAgICAgIDxpb24tYXZhdGFyPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBuYW1lPVwicmVhZGVyLW91dGxpbmVcIiAgc2l6ZT1cImRlZmF1bHRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi13aWR0aC1leHBhbmRAcyBkY2Ytd2lkdGgtMS0xIGRjZi1sYWJlbFwiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImRjZi1pdGVtLXRpdGxlXCIgW2lubmVySFRNTF09XCJ1aWQgKyAnIC0gJyArIHRpdGxlXCIgPjwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgQGlmKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtZGVzY3JpcHRpb25cIiBbaW5uZXJIVE1MXT1cImRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmKGluZm8gfHwgc3ViaW5mbykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi13aWR0aC1hdXRvQHMgZGNmLXdpZHRoLWV4cGFuZCBkY2YtaW5mbyBkY2YtZmxleCBkY2YtZmxleC1yaWdodEBzXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgQGlmKGluZm8pIHtcbiAgICAgICAgICAgICAgICA8c3BhbiAgW2lubmVySFRNTF09XCJpbmZvXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYoc3ViaW5mbykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi1zdWJpbmZvIGRjZi10ZXh0LXRydW5jYXRlXCIgW2lubmVySFRNTF09XCJzdWJpbmZvXCIgPjwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGNmLXdpZHRoLWF1dG8gZGNmLWZsZXggZGNmLWZsZXgtbWlkZGxlIGRjZi1mbGV4LXJpZ2h0XCI+XG4gICAgICAgICAgICBAaWYoKG9wZXJhdGlvbnMuaW5jbHVkZXMoJ2RlbGV0ZScpIHx8IG9wZXJhdGlvbnMuaW5jbHVkZXMoJ3VwZGF0ZScpKSAmJiB1aWQpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRjZi12aXNpYmxlQG1cIiBpZD1cImRjZi1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gY2xhc3M9XCJkY2YtaGlkZGVuQG1cIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInByZXNlbnRBY3Rpb25zTWVudSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIG5hbWU9XCJlbGxpcHNpcy12ZXJ0aWNhbC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgPGlvbi1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICAjYWN0aW9uTWVudUNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgc2lkZT1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ9XCJsZWZ0XCJcblxuICAgICAgICAgICAgICAgICAgW2lzT3Blbl09XCJhY3Rpb25NZW51T3BlblwiXG4gICAgICAgICAgICAgICAgICAoZGlkRGlzbWlzcyk9XCJhY3Rpb25NZW51T3BlbiA9IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1saXN0IGxpbmVzPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZGNmLXRleHQtY2FwaXRhbGl6ZVwiIFtpbm5lckhUTUxdPVwiJ2FjdGlvbnMnIHwgdHJhbnNsYXRlXCI+PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3BlcmF0aW9uIG9mIFsndXBkYXRlJywgJ2RlbGV0ZSddOyB0cmFjayBvcGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbnMuaW5jbHVkZXMob3BlcmF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gW2J1dHRvbl09XCJ0cnVlXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvbihvcGVyYXRpb24sICRldmVudCwgY29tcG9uZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1hdmF0YXIgY2xhc3M9XCJkY2YtZmxleCBkY2YtZmxleC1taWRkbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gY29sb3I9XCJwcmltYXJ5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGNvbG9yPVwiZGFuZ2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgbmFtZT1cInRyYXNoXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImRjZi10ZXh0LWNhcGl0YWxpemVcIj57eyBvcGVyYXRpb24gfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9pb24tcG9wb3Zlcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tIEBpZihvcGVyYXRpb25zPy5sZW5ndGggJiYgdWlkKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkY2YtdmlzaWJsZUBtXCIgaWQ9XCJkY2YtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZihvcGVyYXRpb25zPy5pbmNsdWRlcygndXBkYXRlJykpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJoYW5kbGVBY3Rpb24oJ3VwZGF0ZScsICBjb21wb25lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmKG9wZXJhdGlvbnM/LmluY2x1ZGVzKCdkZWxldGUnKSkge1xuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgc2l6ZT1cInNtYWxsXCIgY29sb3I9XCJkYW5nZXJcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKCdkZWxldGUnLCAgY29tcG9uZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJ0cmFzaFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gLS0+XG4gICAgICAgICAgICBAaWYod2luZG93V2lkdGggPiA2MzkpIHtcbiAgICAgICAgICAgICAgPGRpdiBpZD1cImVuZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PSdlbmQnXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24taXRlbT5cbiAgICBAaWYoc2hvd1NsaWRlSXRlbXMgJiYgdWlkKSB7XG4gICAgICA8aW9uLWl0ZW0tb3B0aW9ucyBzaWRlPVwiZW5kXCIgKGlvblN3aXBlKT1cIm9wZXJhdGlvbnMubGVuZ3RoID09PSAxID8gaGFuZGxlQWN0aW9uKG9wZXJhdGlvbnNbMF0sICAkZXZlbnQsIGNvbXBvbmVudCkgOiAnJ1wiPlxuICAgICAgICBAaWYob3BlcmF0aW9ucz8uaW5jbHVkZXMoJ3VwZGF0ZScpKSB7XG4gICAgICAgICAgPGlvbi1pdGVtLW9wdGlvbiBjbGFzcz1cImRjZi11cGRhdGVcIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uKCd1cGRhdGUnLCAkZXZlbnQsIGNvbXBvbmVudClcIiBbZXhwYW5kYWJsZV09XCJvcGVyYXRpb25zLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY3JlYXRlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWl0ZW0tb3B0aW9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZihvcGVyYXRpb25zPy5pbmNsdWRlcygnZGVsZXRlJykpIHtcbiAgICAgICAgPGlvbi1pdGVtLW9wdGlvbiBjbGFzcz1cImRjZi0gICAgICAgICAgZGVsZXRlXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvbignZGVsZXRlJywgICRldmVudCwgY29tcG9uZW50KVwiIFtleHBhbmRhYmxlXT1cIm9wZXJhdGlvbnMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJ0cmFzaFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24taXRlbS1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgIDwvaW9uLWl0ZW0tb3B0aW9ucz5cbiAgICB9XG4gIDwvaW9uLWl0ZW0tc2xpZGluZz5cbn1cbiJdfQ==
|
|
@@ -2,10 +2,8 @@ import { Component, EventEmitter, inject, Injector, Input, Output, TemplateRef,
|
|
|
2
2
|
import { Model, sf } from '@decaf-ts/decorator-validation';
|
|
3
3
|
import { NgComponentOutlet } from '@angular/common';
|
|
4
4
|
import { AngularEngineKeys, BaseComponentProps, NgxRenderingEngine, } from '../../engine';
|
|
5
|
-
import { ForAngularModule } from '../../for-angular.module';
|
|
6
5
|
import { ComponentRendererComponent } from '../component-renderer/component-renderer.component';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common";
|
|
9
7
|
/**
|
|
10
8
|
* @description Component for rendering dynamic models
|
|
11
9
|
* @summary This component is responsible for dynamically rendering models,
|
|
@@ -114,12 +112,12 @@ export class ModelRendererComponent {
|
|
|
114
112
|
}
|
|
115
113
|
}
|
|
116
114
|
}
|
|
117
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
115
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModelRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
116
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ModelRendererComponent, isStandalone: true, selector: "ngx-decaf-model-renderer", inputs: { model: "model", globals: "globals", rendererId: "rendererId" }, outputs: { listenEvent: "listenEvent" }, host: { properties: { "attr.id": "rendererId" } }, viewQueries: [{ propertyName: "inner", first: true, predicate: ["inner"], descendants: true, read: TemplateRef, static: true }, { propertyName: "vcr", first: true, predicate: ["componentOuter"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: " <!-- Keep to avoid id conflicts -->\n <div [id]=\"rendererId\"></div>\n\n <ng-template #componentOuter></ng-template>\n <ng-template #inner>\n <div [id]=\"rendererId || null\">\n @for (child of output?.children; track child) {\n @if(child?.children?.length) {\n <ngx-decaf-component-renderer [parent]=\"child\" />\n } @else {\n <ng-container\n #childComponents\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n }\n }\n </div>\n </ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: ComponentRendererComponent, selector: "ngx-decaf-component-renderer", inputs: ["tag", "globals", "model", "parent"], outputs: ["listenEvent"] }] }); }
|
|
119
117
|
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModelRendererComponent, decorators: [{
|
|
121
119
|
type: Component,
|
|
122
|
-
args: [{ standalone: true, imports: [
|
|
120
|
+
args: [{ standalone: true, imports: [NgComponentOutlet, ComponentRendererComponent], selector: 'ngx-decaf-model-renderer', host: { '[attr.id]': 'rendererId' }, template: " <!-- Keep to avoid id conflicts -->\n <div [id]=\"rendererId\"></div>\n\n <ng-template #componentOuter></ng-template>\n <ng-template #inner>\n <div [id]=\"rendererId || null\">\n @for (child of output?.children; track child) {\n @if(child?.children?.length) {\n <ngx-decaf-component-renderer [parent]=\"child\" />\n } @else {\n <ng-container\n #childComponents\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n }\n }\n </div>\n </ng-template>\n" }]
|
|
123
121
|
}], propDecorators: { model: [{
|
|
124
122
|
type: Input,
|
|
125
123
|
args: [{ required: true }]
|
|
@@ -136,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
136
134
|
}], listenEvent: [{
|
|
137
135
|
type: Output
|
|
138
136
|
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vZGVsLXJlbmRlcmVyL21vZGVsLXJlbmRlcmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2RlbC1yZW5kZXJlci9tb2RlbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUVsQixrQkFBa0IsR0FFbkIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7OztBQUVoRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBU0gsTUFBTSxPQUFPLHNCQUFzQjtJQVJuQztRQWtCRTs7V0FFRztRQUVILFlBQU8sR0FBNEIsRUFBRSxDQUFDO1FBeUJ0Qzs7V0FFRztRQUVILGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFPOUMsYUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQW1GM0IsU0FBSSxHQUFHLElBQUksQ0FBQztLQUNoQztJQWxGQyxtQkFBbUI7SUFFbkI7OztPQUdHO0lB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O1lBQ3JDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0FuSVUsc0JBQXNCO21HQUF0QixzQkFBc0IscVVBbUJMLFdBQVcsOEdBaUJZLGdCQUFnQixnRUNyR3JFLDRxQkF1QkEseUREb0NZLGdCQUFnQix1U0FBcUIsMEJBQTBCOzs0RkFNOUQsc0JBQXNCO2tCQVJsQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixDQUFDLFlBQ2hFLDBCQUEwQixRQUc5QixFQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUM7OEJBVWpDLEtBQUs7c0JBREosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT3pCLE9BQU87c0JBRE4sS0FBSztnQkFPTixLQUFLO3NCQURKLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVl2RCxVQUFVO3NCQURULEtBQUs7Z0JBT04sR0FBRztzQkFERixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3JFLFdBQVc7c0JBRFYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbCwgc2YgfSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgTmdDb21wb25lbnRPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQW5ndWxhckR5bmFtaWNPdXRwdXQsXG4gIEFuZ3VsYXJFbmdpbmVLZXlzLFxuICBCYXNlQ29tcG9uZW50UHJvcHMsXG4gIEJhc2VDdXN0b21FdmVudCxcbiAgTmd4UmVuZGVyaW5nRW5naW5lLFxuICBSZW5kZXJlZE1vZGVsLFxufSBmcm9tICcuLi8uLi9lbmdpbmUnO1xuaW1wb3J0IHsgS2V5VmFsdWUsIFJlbmRlcmVyQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi8uLi9lbmdpbmUvdHlwZXMnO1xuaW1wb3J0IHsgRm9yQW5ndWxhck1vZHVsZSB9IGZyb20gJy4uLy4uL2Zvci1hbmd1bGFyLm1vZHVsZSc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQtcmVuZGVyZXIvY29tcG9uZW50LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGR5bmFtaWMgbW9kZWxzXG4gKiBAc3VtbWFyeSBUaGlzIGNvbXBvbmVudCBpcyByZXNwb25zaWJsZSBmb3IgZHluYW1pY2FsbHkgcmVuZGVyaW5nIG1vZGVscyxcbiAqIGhhbmRsaW5nIG1vZGVsIGNoYW5nZXMsIGFuZCBtYW5hZ2luZyBldmVudCBzdWJzY3JpcHRpb25zIGZvciB0aGUgcmVuZGVyZWQgY29tcG9uZW50cy5cbiAqIEl0IHVzZXMgdGhlIE5neFJlbmRlcmluZ0VuZ2luZSB0byByZW5kZXIgdGhlIG1vZGVscyBhbmQgc3VwcG9ydHMgYm90aCBzdHJpbmcgYW5kIE1vZGVsIGlucHV0cy5cbiAqIEBjbGFzc1xuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHBhcmFtIHtJbmplY3Rvcn0gaW5qZWN0b3IgLSBBbmd1bGFyIEluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICogQGV4YW1wbGVcbiAqIDxuZ3gtZGVjYWYtbW9kZWwtcmVuZGVyZXJcbiAqICAgW21vZGVsXT1cIm15TW9kZWxcIlxuICogICBbZ2xvYmFsc109XCJnbG9iYWxWYXJpYWJsZXNcIlxuICogICAobGlzdGVuRXZlbnQpPVwiaGFuZGxlRXZlbnQoJGV2ZW50KVwiPlxuICogPC9uZ3gtZGVjYWYtbW9kZWwtcmVuZGVyZXI+XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEFwcFxuICogICBwYXJ0aWNpcGFudCBNb2RlbFJlbmRlcmVyXG4gKiAgIHBhcnRpY2lwYW50IFJlbmRlcmluZ0VuZ2luZVxuICogICBwYXJ0aWNpcGFudCBNb2RlbFxuICogICBBcHAtPj5Nb2RlbFJlbmRlcmVyOiBJbnB1dCBtb2RlbFxuICogICBNb2RlbFJlbmRlcmVyLT4+TW9kZWw6IFBhcnNlIGlmIHN0cmluZ1xuICogICBNb2RlbC0tPj5Nb2RlbFJlbmRlcmVyOiBQYXJzZWQgbW9kZWxcbiAqICAgTW9kZWxSZW5kZXJlci0+PlJlbmRlcmluZ0VuZ2luZTogUmVuZGVyIG1vZGVsXG4gKiAgIFJlbmRlcmluZ0VuZ2luZS0tPj5Nb2RlbFJlbmRlcmVyOiBSZW5kZXJlZCBvdXRwdXRcbiAqICAgTW9kZWxSZW5kZXJlci0+Pk1vZGVsUmVuZGVyZXI6IFN1YnNjcmliZSB0byBldmVudHNcbiAqICAgTW9kZWxSZW5kZXJlci0tPj5BcHA6IEVtaXQgZXZlbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9yQW5ndWxhck1vZHVsZSwgTmdDb21wb25lbnRPdXRsZXQsIENvbXBvbmVudFJlbmRlcmVyQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICduZ3gtZGVjYWYtbW9kZWwtcmVuZGVyZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbW9kZWwtcmVuZGVyZXIuY29tcG9uZW50LnNjc3MnLFxuICBob3N0OiB7J1thdHRyLmlkXSc6ICdyZW5kZXJlcklkJ30sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsUmVuZGVyZXJDb21wb25lbnQ8TSBleHRlbmRzIE1vZGVsPlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBSZW5kZXJlZE1vZGVsIHtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIElucHV0IG1vZGVsIHRvIGJlIHJlbmRlcmVkXG4gICAqIEBzdW1tYXJ5IENhbiBiZSBhIE1vZGVsIGluc3RhbmNlIG9yIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtb2RlbFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgbW9kZWwhOiBNIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2xvYmFsIHZhcmlhYmxlcyB0byBiZSBwYXNzZWQgdG8gdGhlIHJlbmRlcmVkIGNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgZ2xvYmFsczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRlbXBsYXRlIHJlZmVyZW5jZSBmb3IgaW5uZXIgY29udGVudFxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaW5uZXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgaW5uZXI/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE91dHB1dCBvZiB0aGUgcmVuZGVyZWQgbW9kZWxcbiAgICovXG4gIG91dHB1dD86IEFuZ3VsYXJEeW5hbWljT3V0cHV0O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZW5kZXJlclxuICAgKi9cbiAgQElucHV0KClcbiAgcmVuZGVyZXJJZD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFZpZXcgY29udGFpbmVyIHJlZmVyZW5jZSBmb3IgZHluYW1pYyBjb21wb25lbnQgcmVuZGVyaW5nXG4gICAqL1xuICBAVmlld0NoaWxkKCdjb21wb25lbnRPdXRlcicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gIHZjciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudCBlbWl0dGVyIGZvciBjdXN0b20gZXZlbnRzIGZyb20gdGhlIHJlbmRlcmVkIGNvbXBvbmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGxpc3RlbkV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxSZW5kZXJlckN1c3RvbUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5zdGFuY2Ugb2YgdGhlIHJlbmRlcmVkIGNvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBpbnN0YW5jZSE6IEtleVZhbHVlIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAvLyBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZyZXNoZXMgdGhlIHJlbmRlcmVkIG1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgTX0gbW9kZWwgLSBUaGUgbW9kZWwgdG8gYmUgcmVuZGVyZWRcbiAgICovXG4gIHByaXZhdGUgcmVmcmVzaChtb2RlbDogc3RyaW5nIHwgTSkge1xuICAgIG1vZGVsID1cbiAgICAgIHR5cGVvZiBtb2RlbCA9PT0gJ3N0cmluZydcbiAgICAgICAgPyAoTW9kZWwuYnVpbGQoe30sIG1vZGVsKSBhcyBNKVxuICAgICAgICA6IG1vZGVsO1xuICAgIHRoaXMub3V0cHV0ID0gKG1vZGVsIGFzIHVua25vd24gYXMgUmVuZGVyYWJsZSkucmVuZGVyPEFuZ3VsYXJEeW5hbWljT3V0cHV0PihcbiAgICAgIHRoaXMuZ2xvYmFscyB8fCB7fSxcbiAgICAgIHRoaXMudmNyLFxuICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgIHRoaXMuaW5uZXIsXG4gICAgKTtcbiAgICBpZiAodGhpcy5vdXRwdXQ/LmlucHV0cylcbiAgICAgIHRoaXMucmVuZGVyZXJJZCA9IHNmKFxuICAgICAgICBBbmd1bGFyRW5naW5lS2V5cy5SRU5ERVJFRF9JRCxcbiAgICAgICAgKHRoaXMub3V0cHV0LmlucHV0cyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbJ3JlbmRlcmVySWQnXSBhcyBzdHJpbmcsXG4gICAgICApO1xuICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLm91dHB1dD8uaW5zdGFuY2U7XG4gICAgdGhpcy5zdWJzY3JpYmVFdmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgd2hlbiBkYXRhLWJvdW5kIHByb3BlcnRpZXMgb2YgYSBkaXJlY3RpdmUgY2hhbmdlXG4gICAqIEBwYXJhbSB7U2ltcGxlQ2hhbmdlc30gY2hhbmdlcyAtIE9iamVjdCBjb250YWluaW5nIGNoYW5nZXNcbiAgICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tCYXNlQ29tcG9uZW50UHJvcHMuTU9ERUxdKSB7XG4gICAgICBjb25zdCB7IGN1cnJlbnRWYWx1ZSB9ID0gY2hhbmdlc1tCYXNlQ29tcG9uZW50UHJvcHMuTU9ERUxdO1xuICAgICAgdGhpcy5yZWZyZXNoKGN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgZGlyZWN0aXZlLCBwaXBlLCBvciBzZXJ2aWNlIGlzIGRlc3Ryb3llZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgbmdPbkRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVFdmVudHMoKTtcbiAgICAgIGF3YWl0IE5neFJlbmRlcmluZ0VuZ2luZS5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMub3V0cHV0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcz8ub3V0cHV0Py5jb21wb25lbnQ7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UgJiYgY29tcG9uZW50KSB7XG4gICAgICBjb25zdCBjb21wb25lbnRLZXlzID0gT2JqZWN0LmtleXModGhpcy5pbnN0YW5jZSk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBjb21wb25lbnRLZXlzKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnN0YW5jZVtrZXldO1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpXG4gICAgICAgICAgKHRoaXMuaW5zdGFuY2UgYXMgS2V5VmFsdWUpW2tleV0uc3Vic2NyaWJlKChldmVudDogUGFydGlhbDxCYXNlQ3VzdG9tRXZlbnQ+KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbkV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICBjb21wb25lbnQ6IGNvbXBvbmVudC5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICBuYW1lOiBrZXksXG4gICAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgfSBhcyBSZW5kZXJlckN1c3RvbUV2ZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVuc3Vic2NyaWJlcyBmcm9tIGV2ZW50cyBlbWl0dGVkIGJ5IHRoZSByZW5kZXJlZCBjb21wb25lbnRcbiAgICovXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmluc3RhbmNlKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGNvbXBvbmVudEtleXMpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmluc3RhbmNlW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEV2ZW50RW1pdHRlcilcbiAgICAgICAgICB0aGlzLmluc3RhbmNlW2tleV0udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgSlNPTiA9IEpTT047XG59XG4iLCIgIDwhLS0gS2VlcCB0byBhdm9pZCBpZCBjb25mbGljdHMgLS0+XG4gIDxkaXYgW2lkXT1cInJlbmRlcmVySWRcIj48L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI2NvbXBvbmVudE91dGVyPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjaW5uZXI+XG4gICAgPGRpdiAgW2lkXT1cInJlbmRlcmVySWQgfHwgbnVsbFwiPlxuICAgICAgQGZvciAoY2hpbGQgb2Ygb3V0cHV0Py5jaGlsZHJlbjsgdHJhY2sgY2hpbGQpIHtcbiAgICAgICAgQGlmKGNoaWxkPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgPG5neC1kZWNhZi1jb21wb25lbnQtcmVuZGVyZXIgW3BhcmVudF09XCJjaGlsZFwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICNjaGlsZENvbXBvbmVudHNcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxuICAgICAgICAgICAgICBjaGlsZC5jb21wb25lbnQ7XG4gICAgICAgICAgICAgIGluamVjdG9yOiBjaGlsZC5pbmplY3RvcjtcbiAgICAgICAgICAgICAgaW5wdXRzOiBjaGlsZC5pbnB1dHM7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6Y2hpbGQuY29udGVudDtcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuIl19
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vZGVsLXJlbmRlcmVyL21vZGVsLXJlbmRlcmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2RlbC1yZW5kZXJlci9tb2RlbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUVsQixrQkFBa0IsR0FFbkIsTUFBTSxjQUFjLENBQUM7QUFHdEIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBRWhHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFTSCxNQUFNLE9BQU8sc0JBQXNCO0lBUm5DO1FBa0JFOztXQUVHO1FBRUgsWUFBTyxHQUE0QixFQUFFLENBQUM7UUF5QnRDOztXQUVHO1FBRUgsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQU85QyxhQUFRLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBbUYzQixTQUFJLEdBQUcsSUFBSSxDQUFDO0tBQ2hDO0lBbEZDLG1CQUFtQjtJQUVuQjs7O09BR0c7SUFDSyxPQUFPLENBQUMsS0FBaUI7UUFDL0IsS0FBSztZQUNILE9BQU8sS0FBSyxL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bUdBQXRCLHNCQUFzQixxVUFtQkwsV0FBVyw4R0FpQlksZ0JBQWdCLGdFQ3BHckUsNHFCQXVCQSwwRERtQ2EsaUJBQWlCLG9QQUFFLDBCQUEwQjs7NEZBTTdDLHNCQUFzQjtrQkFSbEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBRSxpQkFBaUIsRUFBRSwwQkFBMEIsQ0FBQyxZQUMvQywwQkFBMEIsUUFHOUIsRUFBQyxXQUFXLEVBQUUsWUFBWSxFQUFDOzhCQVVqQyxLQUFLO3NCQURKLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU96QixPQUFPO3NCQUROLEtBQUs7Z0JBT04sS0FBSztzQkFESixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFZdkQsVUFBVTtzQkFEVCxLQUFLO2dCQU9OLEdBQUc7c0JBREYsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQU9yRSxXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kZWwsIHNmIH0gZnJvbSAnQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uJztcbmltcG9ydCB7IE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFuZ3VsYXJEeW5hbWljT3V0cHV0LFxuICBBbmd1bGFyRW5naW5lS2V5cyxcbiAgQmFzZUNvbXBvbmVudFByb3BzLFxuICBCYXNlQ3VzdG9tRXZlbnQsXG4gIE5neFJlbmRlcmluZ0VuZ2luZSxcbiAgUmVuZGVyZWRNb2RlbCxcbn0gZnJvbSAnLi4vLi4vZW5naW5lJztcbmltcG9ydCB7IEtleVZhbHVlLCBSZW5kZXJlckN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lL3R5cGVzJztcbmltcG9ydCB7IFJlbmRlcmFibGUgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudC1yZW5kZXJlci9jb21wb25lbnQtcmVuZGVyZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGZvciByZW5kZXJpbmcgZHluYW1pYyBtb2RlbHNcbiAqIEBzdW1tYXJ5IFRoaXMgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIGZvciBkeW5hbWljYWxseSByZW5kZXJpbmcgbW9kZWxzLFxuICogaGFuZGxpbmcgbW9kZWwgY2hhbmdlcywgYW5kIG1hbmFnaW5nIGV2ZW50IHN1YnNjcmlwdGlvbnMgZm9yIHRoZSByZW5kZXJlZCBjb21wb25lbnRzLlxuICogSXQgdXNlcyB0aGUgTmd4UmVuZGVyaW5nRW5naW5lIHRvIHJlbmRlciB0aGUgbW9kZWxzIGFuZCBzdXBwb3J0cyBib3RoIHN0cmluZyBhbmQgTW9kZWwgaW5wdXRzLlxuICogQGNsYXNzXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gKiBAcGFyYW0ge0luamVjdG9yfSBpbmplY3RvciAtIEFuZ3VsYXIgSW5qZWN0b3IgZm9yIGRlcGVuZGVuY3kgaW5qZWN0aW9uXG4gKiBAZXhhbXBsZVxuICogPG5neC1kZWNhZi1tb2RlbC1yZW5kZXJlclxuICogICBbbW9kZWxdPVwibXlNb2RlbFwiXG4gKiAgIFtnbG9iYWxzXT1cImdsb2JhbFZhcmlhYmxlc1wiXG4gKiAgIChsaXN0ZW5FdmVudCk9XCJoYW5kbGVFdmVudCgkZXZlbnQpXCI+XG4gKiA8L25neC1kZWNhZi1tb2RlbC1yZW5kZXJlcj5cbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQXBwXG4gKiAgIHBhcnRpY2lwYW50IE1vZGVsUmVuZGVyZXJcbiAqICAgcGFydGljaXBhbnQgUmVuZGVyaW5nRW5naW5lXG4gKiAgIHBhcnRpY2lwYW50IE1vZGVsXG4gKiAgIEFwcC0+Pk1vZGVsUmVuZGVyZXI6IElucHV0IG1vZGVsXG4gKiAgIE1vZGVsUmVuZGVyZXItPj5Nb2RlbDogUGFyc2UgaWYgc3RyaW5nXG4gKiAgIE1vZGVsLS0+Pk1vZGVsUmVuZGVyZXI6IFBhcnNlZCBtb2RlbFxuICogICBNb2RlbFJlbmRlcmVyLT4+UmVuZGVyaW5nRW5naW5lOiBSZW5kZXIgbW9kZWxcbiAqICAgUmVuZGVyaW5nRW5naW5lLS0+Pk1vZGVsUmVuZGVyZXI6IFJlbmRlcmVkIG91dHB1dFxuICogICBNb2RlbFJlbmRlcmVyLT4+TW9kZWxSZW5kZXJlcjogU3Vic2NyaWJlIHRvIGV2ZW50c1xuICogICBNb2RlbFJlbmRlcmVyLS0+PkFwcDogRW1pdCBldmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFsgTmdDb21wb25lbnRPdXRsZXQsIENvbXBvbmVudFJlbmRlcmVyQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICduZ3gtZGVjYWYtbW9kZWwtcmVuZGVyZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbW9kZWwtcmVuZGVyZXIuY29tcG9uZW50LnNjc3MnLFxuICBob3N0OiB7J1thdHRyLmlkXSc6ICdyZW5kZXJlcklkJ30sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsUmVuZGVyZXJDb21wb25lbnQ8TSBleHRlbmRzIE1vZGVsPlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBSZW5kZXJlZE1vZGVsIHtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIElucHV0IG1vZGVsIHRvIGJlIHJlbmRlcmVkXG4gICAqIEBzdW1tYXJ5IENhbiBiZSBhIE1vZGVsIGluc3RhbmNlIG9yIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtb2RlbFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgbW9kZWwhOiBNIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2xvYmFsIHZhcmlhYmxlcyB0byBiZSBwYXNzZWQgdG8gdGhlIHJlbmRlcmVkIGNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgZ2xvYmFsczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRlbXBsYXRlIHJlZmVyZW5jZSBmb3IgaW5uZXIgY29udGVudFxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaW5uZXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgaW5uZXI/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE91dHB1dCBvZiB0aGUgcmVuZGVyZWQgbW9kZWxcbiAgICovXG4gIG91dHB1dD86IEFuZ3VsYXJEeW5hbWljT3V0cHV0O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZW5kZXJlclxuICAgKi9cbiAgQElucHV0KClcbiAgcmVuZGVyZXJJZD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFZpZXcgY29udGFpbmVyIHJlZmVyZW5jZSBmb3IgZHluYW1pYyBjb21wb25lbnQgcmVuZGVyaW5nXG4gICAqL1xuICBAVmlld0NoaWxkKCdjb21wb25lbnRPdXRlcicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gIHZjciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFdmVudCBlbWl0dGVyIGZvciBjdXN0b20gZXZlbnRzIGZyb20gdGhlIHJlbmRlcmVkIGNvbXBvbmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGxpc3RlbkV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxSZW5kZXJlckN1c3RvbUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5zdGFuY2Ugb2YgdGhlIHJlbmRlcmVkIGNvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBpbnN0YW5jZSE6IEtleVZhbHVlIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAvLyBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZyZXNoZXMgdGhlIHJlbmRlcmVkIG1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgTX0gbW9kZWwgLSBUaGUgbW9kZWwgdG8gYmUgcmVuZGVyZWRcbiAgICovXG4gIHByaXZhdGUgcmVmcmVzaChtb2RlbDogc3RyaW5nIHwgTSkge1xuICAgIG1vZGVsID1cbiAgICAgIHR5cGVvZiBtb2RlbCA9PT0gJ3N0cmluZydcbiAgICAgICAgPyAoTW9kZWwuYnVpbGQoe30sIG1vZGVsKSBhcyBNKVxuICAgICAgICA6IG1vZGVsO1xuICAgIHRoaXMub3V0cHV0ID0gKG1vZGVsIGFzIHVua25vd24gYXMgUmVuZGVyYWJsZSkucmVuZGVyPEFuZ3VsYXJEeW5hbWljT3V0cHV0PihcbiAgICAgIHRoaXMuZ2xvYmFscyB8fCB7fSxcbiAgICAgIHRoaXMudmNyLFxuICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgIHRoaXMuaW5uZXIsXG4gICAgKTtcbiAgICBpZiAodGhpcy5vdXRwdXQ/LmlucHV0cylcbiAgICAgIHRoaXMucmVuZGVyZXJJZCA9IHNmKFxuICAgICAgICBBbmd1bGFyRW5naW5lS2V5cy5SRU5ERVJFRF9JRCxcbiAgICAgICAgKHRoaXMub3V0cHV0LmlucHV0cyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbJ3JlbmRlcmVySWQnXSBhcyBzdHJpbmcsXG4gICAgICApO1xuICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLm91dHB1dD8uaW5zdGFuY2U7XG4gICAgdGhpcy5zdWJzY3JpYmVFdmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgd2hlbiBkYXRhLWJvdW5kIHByb3BlcnRpZXMgb2YgYSBkaXJlY3RpdmUgY2hhbmdlXG4gICAqIEBwYXJhbSB7U2ltcGxlQ2hhbmdlc30gY2hhbmdlcyAtIE9iamVjdCBjb250YWluaW5nIGNoYW5nZXNcbiAgICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tCYXNlQ29tcG9uZW50UHJvcHMuTU9ERUxdKSB7XG4gICAgICBjb25zdCB7IGN1cnJlbnRWYWx1ZSB9ID0gY2hhbmdlc1tCYXNlQ29tcG9uZW50UHJvcHMuTU9ERUxdO1xuICAgICAgdGhpcy5yZWZyZXNoKGN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgZGlyZWN0aXZlLCBwaXBlLCBvciBzZXJ2aWNlIGlzIGRlc3Ryb3llZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgbmdPbkRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVFdmVudHMoKTtcbiAgICAgIGF3YWl0IE5neFJlbmRlcmluZ0VuZ2luZS5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMub3V0cHV0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcz8ub3V0cHV0Py5jb21wb25lbnQ7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UgJiYgY29tcG9uZW50KSB7XG4gICAgICBjb25zdCBjb21wb25lbnRLZXlzID0gT2JqZWN0LmtleXModGhpcy5pbnN0YW5jZSk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBjb21wb25lbnRLZXlzKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnN0YW5jZVtrZXldO1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpXG4gICAgICAgICAgKHRoaXMuaW5zdGFuY2UgYXMgS2V5VmFsdWUpW2tleV0uc3Vic2NyaWJlKChldmVudDogUGFydGlhbDxCYXNlQ3VzdG9tRXZlbnQ+KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbkV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICBjb21wb25lbnQ6IGNvbXBvbmVudC5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICBuYW1lOiBrZXksXG4gICAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgfSBhcyBSZW5kZXJlckN1c3RvbUV2ZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVuc3Vic2NyaWJlcyBmcm9tIGV2ZW50cyBlbWl0dGVkIGJ5IHRoZSByZW5kZXJlZCBjb21wb25lbnRcbiAgICovXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmluc3RhbmNlKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGNvbXBvbmVudEtleXMpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmluc3RhbmNlW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEV2ZW50RW1pdHRlcilcbiAgICAgICAgICB0aGlzLmluc3RhbmNlW2tleV0udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgSlNPTiA9IEpTT047XG59XG4iLCIgIDwhLS0gS2VlcCB0byBhdm9pZCBpZCBjb25mbGljdHMgLS0+XG4gIDxkaXYgW2lkXT1cInJlbmRlcmVySWRcIj48L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI2NvbXBvbmVudE91dGVyPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjaW5uZXI+XG4gICAgPGRpdiAgW2lkXT1cInJlbmRlcmVySWQgfHwgbnVsbFwiPlxuICAgICAgQGZvciAoY2hpbGQgb2Ygb3V0cHV0Py5jaGlsZHJlbjsgdHJhY2sgY2hpbGQpIHtcbiAgICAgICAgQGlmKGNoaWxkPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgPG5neC1kZWNhZi1jb21wb25lbnQtcmVuZGVyZXIgW3BhcmVudF09XCJjaGlsZFwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICNjaGlsZENvbXBvbmVudHNcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxuICAgICAgICAgICAgICBjaGlsZC5jb21wb25lbnQ7XG4gICAgICAgICAgICAgIGluamVjdG9yOiBjaGlsZC5pbmplY3RvcjtcbiAgICAgICAgICAgICAgaW5wdXRzOiBjaGlsZC5pbnB1dHM7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6Y2hpbGQuY29udGVudDtcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuIl19
|