@grapecity/inputman.angular
Version:
このパッケージには、Angular用の[InputManJS](https://developer.mescius.jp/inputmanjs)コンポーネントが含まれます。
387 lines • 44.4 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, Input, ElementRef, Output, ContentChildren, QueryList, EventEmitter, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { GC } from '../inputman';
import { Property } from '../common';
import { provideParent, GcComponents } from './GcComponents';
import * as i0 from "@angular/core";
export class GcComboBoxColumnComponent {
}
GcComboBoxColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComboBoxColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
GcComboBoxColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcComboBoxColumnComponent, selector: "gc-combo-box-column", inputs: { name: "name", label: "label", width: "width", isValuePath: "isValuePath", visible: "visible", clickSort: "clickSort", contentAlignment: "contentAlignment", headerAlignment: "headerAlignment", showTip: "showTip" }, ngImport: i0, template: ``, isInline: true });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComboBoxColumnComponent, decorators: [{
type: Component,
args: [{
selector: 'gc-combo-box-column',
template: ``
}]
}], propDecorators: { name: [{
type: Input
}], label: [{
type: Input
}], width: [{
type: Input
}], isValuePath: [{
type: Input
}], visible: [{
type: Input
}], clickSort: [{
type: Input
}], contentAlignment: [{
type: Input
}], headerAlignment: [{
type: Input
}], showTip: [{
type: Input
}] } });
export class GcComboBoxComponent extends GcComponents {
constructor(ref) {
super(ref);
this.onChange = () => { };
this.onTouched = () => { };
this.selectedChanged = new EventEmitter();
this.checkedChanged = new EventEmitter();
this.dropDownClosed = new EventEmitter();
this.dropDownOpened = new EventEmitter();
this.textChanged = new EventEmitter();
this.spinDown = new EventEmitter();
this.spinUp = new EventEmitter();
this.itemsChanged = new EventEmitter();
this.itemsChange = new EventEmitter();
this.selectedValueChange = new EventEmitter();
this.selectedIndexChange = new EventEmitter();
this.checkedValuesChange = new EventEmitter();
this.selectedItemChange = new EventEmitter();
this.checkedItemsChange = new EventEmitter();
this.checkedIndicesChange = new EventEmitter();
}
writeValue(value) {
this.text = value;
if (this._imCtrl) {
this._imCtrl.text = this.text;
}
}
registerOnChange(onChange) {
this.onChange = onChange;
}
registerOnTouched(onTouched) {
this.onTouched = onTouched;
}
setDisabledState(isDisabled) {
this.enabled = !isDisabled;
if (this._imCtrl) {
this._imCtrl.enabled = this.enabled;
}
}
initGcComponent() {
if (this.columnComponents && this.columnComponents.length > 0) {
this.columns = [];
this.columnComponents.forEach((column) => {
this.columns.push({
name: column.name,
label: column.label,
width: column.width,
isValuePath: column.isValuePath,
visible: column.visible,
clickSort: column.clickSort,
contentAlignment: column.contentAlignment,
headerAlignment: column.headerAlignment,
showTip: column.showTip
});
});
}
var element = document.createElement('select');
this.createTemplate(element);
this._imCtrl = new GC.InputMan.GcComboBox(element, this);
}
bindEvent() {
if (!this._imCtrl) {
return;
}
this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.SelectedChanged, (eventArgs) => {
this.selectedChanged.emit(eventArgs);
this.selectedValueChange.emit(this._imCtrl.getSelectedValue());
this.selectedIndexChange.emit(this._imCtrl.getSelectedIndex());
this.selectedItemChange.emit(this._imCtrl.getSelectedItem());
});
this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.CheckedChanged, (eventArgs) => {
this.checkedChanged.emit(eventArgs);
this.checkedValuesChange.emit(this._imCtrl.getCheckedValues());
this.checkedItemsChange.emit(this._imCtrl.getCheckedItems());
this.checkedIndicesChange.emit(this._imCtrl.getCheckedIndices());
});
this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.DropDownClosed, (eventArgs) => {
this.dropDownClosed.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.DropDownOpened, (eventArgs) => {
this.dropDownOpened.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.TextChanged, (eventArgs) => {
this.textChanged.emit(eventArgs);
this.onChange(this._imCtrl.text);
this.onTouched();
});
this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.SpinDown, (eventArgs) => {
this.spinDown.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.SpinUp, (eventArgs) => {
this.spinUp.emit(eventArgs);
});
this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.ItemsChanged, (eventArgs) => {
this.itemsChanged.emit(eventArgs);
this.itemsChange.emit(this._imCtrl.getItems());
});
}
}
GcComboBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComboBoxComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
GcComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcComboBoxComponent, selector: "gc-combo-box", inputs: { items: "items", selectedValue: "selectedValue", allowDropDownResize: "allowDropDownResize", width: "width", height: "height", minWidth: "minWidth", minHeight: "minHeight", maxWidth: "maxWidth", maxHeight: "maxHeight", fontSize: "fontSize", readOnly: "readOnly", autoSelect: "autoSelect", selectedIndex: "selectedIndex", autoFilter: "autoFilter", visible: "visible", enabled: "enabled", showTip: "showTip", isEditable: "isEditable", watermarkDisplayNullText: "watermarkDisplayNullText", watermarkNullText: "watermarkNullText", highlightText: "highlightText", exitOnEnterKey: "exitOnEnterKey", useClipboard: "useClipboard", acceptsCrlf: "acceptsCrlf", acceptsTabChar: "acceptsTabChar", ellipsis: "ellipsis", ellipsisString: "ellipsisString", exitOnLeftRightKey: "exitOnLeftRightKey", tabIndex: "tabIndex", showHelpButton: "showHelpButton", autoCompleteMode: "autoCompleteMode", autoCompleteMatchMode: "autoCompleteMatchMode", showCopyButton: "showCopyButton", helpContent: "helpContent", copyMessage: "copyMessage", copiedMessage: "copiedMessage", floatingLabelText: "floatingLabelText", floatingLabelType: "floatingLabelType", floatingLabelDirection: "floatingLabelDirection", editMode: "editMode", checkedValues: "checkedValues", selectedItem: "selectedItem", checkedItems: "checkedItems", checkedIndices: "checkedIndices", showDropDownButton: "showDropDownButton", dropDownButtonPosition: "dropDownButtonPosition", showSpinButton: "showSpinButton", spinButtonPosition: "spinButtonPosition", dropDownWidth: "dropDownWidth", dropDownHeight: "dropDownHeight", minPrefixLength: "minPrefixLength", isMultiSelect: "isMultiSelect", dropDownOverflow: "dropDownOverflow", visibleItems: "visibleItems", itemHeight: "itemHeight", columns: "columns", showHeader: "showHeader", valueMemberPath: "valueMemberPath", displayMemberPath: "displayMemberPath", checkOnClick: "checkOnClick", itemTemplate: "itemTemplate", headerTemplate: "headerTemplate", footerTemplate: "footerTemplate", spinWheel: "spinWheel", emptyTemplate: "emptyTemplate", load: "load", pageSize: "pageSize", virtualMode: "virtualMode", generatingItem: "generatingItem", selectTemplate: "selectTemplate", formatItem: "formatItem", allowColumnResize: "allowColumnResize", colHeaderHeight: "colHeaderHeight", container: "container", autoDropDown: "autoDropDown", dropDownButtonVisible: "dropDownButtonVisible", showClearButton: "showClearButton", autoScale: "autoScale", minScaleFactor: "minScaleFactor", multipleItemSeparator: "multipleItemSeparator", dropDownType: "dropDownType", dropDownTreeConfig: "dropDownTreeConfig", checkBySpace: "checkBySpace" }, outputs: { selectedChanged: "selectedChanged", checkedChanged: "checkedChanged", dropDownClosed: "dropDownClosed", dropDownOpened: "dropDownOpened", textChanged: "textChanged", spinDown: "spinDown", spinUp: "spinUp", itemsChanged: "itemsChanged", itemsChange: "itemsChange", selectedValueChange: "selectedValueChange", selectedIndexChange: "selectedIndexChange", checkedValuesChange: "checkedValuesChange", selectedItemChange: "selectedItemChange", checkedItemsChange: "checkedItemsChange", checkedIndicesChange: "checkedIndicesChange" }, providers: [
provideParent(GcComboBoxComponent),
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcComboBoxComponent),
}
], queries: [{ propertyName: "columnComponents", predicate: GcComboBoxColumnComponent }], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
__decorate([
Property("", "", false, false),
__metadata("design:type", Object)
], GcComboBoxComponent.prototype, "selectedValue", void 0);
__decorate([
Property("", "", false, false),
__metadata("design:type", Number)
], GcComboBoxComponent.prototype, "selectedIndex", void 0);
__decorate([
Property("setEditable"),
__metadata("design:type", Boolean)
], GcComboBoxComponent.prototype, "isEditable", void 0);
__decorate([
Property("", "", false, false),
__metadata("design:type", Object)
], GcComboBoxComponent.prototype, "checkedValues", void 0);
__decorate([
Property("", "", false, false),
__metadata("design:type", Object)
], GcComboBoxComponent.prototype, "selectedItem", void 0);
__decorate([
Property("", "", false, false),
__metadata("design:type", Object)
], GcComboBoxComponent.prototype, "checkedItems", void 0);
__decorate([
Property("", "", false, false),
__metadata("design:type", Array)
], GcComboBoxComponent.prototype, "checkedIndices", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComboBoxComponent, decorators: [{
type: Component,
args: [{
selector: 'gc-combo-box',
template: ``,
providers: [
provideParent(GcComboBoxComponent),
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcComboBoxComponent),
}
]
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { items: [{
type: Input
}], selectedValue: [{
type: Input
}], allowDropDownResize: [{
type: Input
}], width: [{
type: Input
}], height: [{
type: Input
}], minWidth: [{
type: Input
}], minHeight: [{
type: Input
}], maxWidth: [{
type: Input
}], maxHeight: [{
type: Input
}], fontSize: [{
type: Input
}], readOnly: [{
type: Input
}], autoSelect: [{
type: Input
}], selectedIndex: [{
type: Input
}], autoFilter: [{
type: Input
}], visible: [{
type: Input
}], enabled: [{
type: Input
}], showTip: [{
type: Input
}], isEditable: [{
type: Input
}], watermarkDisplayNullText: [{
type: Input
}], watermarkNullText: [{
type: Input
}], highlightText: [{
type: Input
}], exitOnEnterKey: [{
type: Input
}], useClipboard: [{
type: Input
}], acceptsCrlf: [{
type: Input
}], acceptsTabChar: [{
type: Input
}], ellipsis: [{
type: Input
}], ellipsisString: [{
type: Input
}], exitOnLeftRightKey: [{
type: Input
}], tabIndex: [{
type: Input
}], showHelpButton: [{
type: Input
}], autoCompleteMode: [{
type: Input
}], autoCompleteMatchMode: [{
type: Input
}], showCopyButton: [{
type: Input
}], helpContent: [{
type: Input
}], copyMessage: [{
type: Input
}], copiedMessage: [{
type: Input
}], floatingLabelText: [{
type: Input
}], floatingLabelType: [{
type: Input
}], floatingLabelDirection: [{
type: Input
}], editMode: [{
type: Input
}], checkedValues: [{
type: Input
}], selectedItem: [{
type: Input
}], checkedItems: [{
type: Input
}], checkedIndices: [{
type: Input
}], showDropDownButton: [{
type: Input
}], dropDownButtonPosition: [{
type: Input
}], showSpinButton: [{
type: Input
}], spinButtonPosition: [{
type: Input
}], dropDownWidth: [{
type: Input
}], dropDownHeight: [{
type: Input
}], minPrefixLength: [{
type: Input
}], isMultiSelect: [{
type: Input
}], dropDownOverflow: [{
type: Input
}], visibleItems: [{
type: Input
}], itemHeight: [{
type: Input
}], columns: [{
type: Input
}], showHeader: [{
type: Input
}], valueMemberPath: [{
type: Input
}], displayMemberPath: [{
type: Input
}], checkOnClick: [{
type: Input
}], itemTemplate: [{
type: Input
}], headerTemplate: [{
type: Input
}], footerTemplate: [{
type: Input
}], spinWheel: [{
type: Input
}], emptyTemplate: [{
type: Input
}], load: [{
type: Input
}], pageSize: [{
type: Input
}], virtualMode: [{
type: Input
}], generatingItem: [{
type: Input
}], selectTemplate: [{
type: Input
}], formatItem: [{
type: Input
}], allowColumnResize: [{
type: Input
}], colHeaderHeight: [{
type: Input
}], container: [{
type: Input
}], autoDropDown: [{
type: Input
}], dropDownButtonVisible: [{
type: Input
}], showClearButton: [{
type: Input
}], autoScale: [{
type: Input
}], minScaleFactor: [{
type: Input
}], multipleItemSeparator: [{
type: Input
}], dropDownType: [{
type: Input
}], dropDownTreeConfig: [{
type: Input
}], checkBySpace: [{
type: Input
}], selectedChanged: [{
type: Output
}], checkedChanged: [{
type: Output
}], dropDownClosed: [{
type: Output
}], dropDownOpened: [{
type: Output
}], textChanged: [{
type: Output
}], spinDown: [{
type: Output
}], spinUp: [{
type: Output
}], itemsChanged: [{
type: Output
}], itemsChange: [{
type: Output
}], selectedValueChange: [{
type: Output
}], selectedIndexChange: [{
type: Output
}], checkedValuesChange: [{
type: Output
}], selectedItemChange: [{
type: Output
}], checkedItemsChange: [{
type: Output
}], checkedIndicesChange: [{
type: Output
}], columnComponents: [{
type: ContentChildren,
args: [GcComboBoxColumnComponent]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2NDb21ib0JveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvR2NDb21ib0JveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVU3RCxNQUFNLE9BQU8seUJBQXlCOzt1SEFBekIseUJBQXlCOzJHQUF6Qix5QkFBeUIsMlJBRnhCLEVBQUU7NEZBRUgseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzhCQUdVLElBQUk7c0JBRFYsS0FBSztnQkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MsS0FBSztzQkFEWCxLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBR0MsZUFBZTtzQkFEckIsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7O0FBZ0JWLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFvQztJQUV6RSxZQUFZLEdBQWU7UUFDdkIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR1AsYUFBUSxHQUFhLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQixjQUFTLEdB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QUdDLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxXQUFXO3NCQURqQixLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFHQyxlQUFlO3NCQURyQixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFHQyxlQUFlO3NCQURyQixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLGVBQWU7c0JBRHJCLE1BQU07Z0JBR0EsY0FBYztzQkFEcEIsTUFBTTtnQkFHQSxjQUFjO3NCQURwQixNQUFNO2dCQUdBLGNBQWM7c0JBRHBCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTTtnQkFHQSxRQUFRO3NCQURkLE1BQU07Z0JBR0EsTUFBTTtzQkFEWixNQUFNO2dCQUdBLFlBQVk7c0JBRGxCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTTtnQkFHQSxtQkFBbUI7c0JBRHpCLE1BQU07Z0JBR0EsbUJBQW1CO3NCQUR6QixNQUFNO2dCQUdBLG1CQUFtQjtzQkFEekIsTUFBTTtnQkFHQSxrQkFBa0I7c0JBRHhCLE1BQU07Z0JBR0Esa0JBQWtCO3NCQUR4QixNQUFNO2dCQUdBLG9CQUFvQjtzQkFEMUIsTUFBTTtnQkFJQSxnQkFBZ0I7c0JBRHRCLGVBQWU7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgT3V0cHV0LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHQyB9IGZyb20gJy4uL2lucHV0bWFuJztcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IHByb3ZpZGVQYXJlbnQsIEdjQ29tcG9uZW50cyB9IGZyb20gJy4vR2NDb21wb25lbnRzJztcblxudHlwZSBDb21ib0JveFZhbHVlc1R5cGUgPSBudW1iZXJbXSB8IHN0cmluZ1tdIHwgYm9vbGVhbltdIHwgb2JqZWN0W107XG50eXBlIENvbWJvQm94SXRlbVR5cGUgPSBzdHJpbmcgfCBvYmplY3Q7XG50eXBlIENvbWJvQm94SXRlbXNUeXBlID0gc3RyaW5nW10gfCBvYmplY3RbXTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYy1jb21iby1ib3gtY29sdW1uJyxcbiAgICB0ZW1wbGF0ZTogYGBcbn0pXG5leHBvcnQgY2xhc3MgR2NDb21ib0JveENvbHVtbkNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2lkdGg6IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpc1ZhbHVlUGF0aDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2aXNpYmxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNsaWNrU29ydDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb250ZW50QWxpZ25tZW50OiBHQy5JbnB1dE1hbi5BbGlnbm1lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVhZGVyQWxpZ25tZW50OiBHQy5JbnB1dE1hbi5BbGlnbm1lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd1RpcDogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYy1jb21iby1ib3gnLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZVBhcmVudChHY0NvbWJvQm94Q29tcG9uZW50KSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdjQ29tYm9Cb3hDb21wb25lbnQpLFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBHY0NvbWJvQm94Q29tcG9uZW50IGV4dGVuZHMgR2NDb21wb25lbnRzPEdDLklucHV0TWFuLkdjQ29tYm9Cb3g+IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgY29uc3RydWN0b3IocmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKHJlZik7XG4gICAgfVxuICAgIHByaXZhdGUgdGV4dDogc3RyaW5nO1xuICAgIHByaXZhdGUgb25DaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuICAgIHByaXZhdGUgb25Ub3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRleHQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2ltQ3RybCkge1xuICAgICAgICAgICAgdGhpcy5faW1DdHJsLnRleHQgPSB0aGlzLnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgICB9XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICAgfVxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmVuYWJsZWQgPSAhaXNEaXNhYmxlZDtcbiAgICAgICAgaWYgKHRoaXMuX2ltQ3RybCkge1xuICAgICAgICAgICAgdGhpcy5faW1DdHJsLmVuYWJsZWQgPSB0aGlzLmVuYWJsZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpdGVtczogQ29tYm9Cb3hWYWx1ZXNUeXBlO1xuICAgIEBJbnB1dCgpXG4gICAgQFByb3BlcnR5KFwiXCIsIFwiXCIsIGZhbHNlLCBmYWxzZSlcbiAgICBwdWJsaWMgc2VsZWN0ZWRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG9iamVjdDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd0Ryb3BEb3duUmVzaXplOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVpZ2h0OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluV2lkdGg6IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW5IZWlnaHQ6IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heEhlaWdodDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvbnRTaXplOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVhZE9ubHk6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b1NlbGVjdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIEBQcm9wZXJ0eShcIlwiLCBcIlwiLCBmYWxzZSwgZmFsc2UpXG4gICAgcHVibGljIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvRmlsdGVyOiBzdHJpbmcgfCBHQy5JbnB1dE1hbi5BdXRvRmlsdGVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZpc2libGU6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93VGlwOiBib29sZWFuO1xuICAgIEBQcm9wZXJ0eShcInNldEVkaXRhYmxlXCIpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0YWJsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3YXRlcm1hcmtEaXNwbGF5TnVsbFRleHQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3YXRlcm1hcmtOdWxsVGV4dDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZ2hsaWdodFRleHQ6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXhpdE9uRW50ZXJLZXk6IHN0cmluZyB8IEdDLklucHV0TWFuLkV4aXRLZXk7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdXNlQ2xpcGJvYXJkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjY2VwdHNDcmxmOiBzdHJpbmcgfCBHQy5JbnB1dE1hbi5DckxmTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhY2NlcHRzVGFiQ2hhcjogR0MuSW5wdXRNYW4uVGFiQ2hhck1vZGU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZWxsaXBzaXM6IHN0cmluZyB8IEdDLklucHV0TWFuLkVsbGlwc2lzTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbGxpcHNpc1N0cmluZzogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4aXRPbkxlZnRSaWdodEtleTogc3RyaW5nIHwgR0MuSW5wdXRNYW4uRXhpdE9uTGVmdFJpZ2h0S2V5O1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRhYkluZGV4OiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0hlbHBCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b0NvbXBsZXRlTW9kZTogR0MuSW5wdXRNYW4uQXV0b0NvbXBsZXRlTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvQ29tcGxldGVNYXRjaE1vZGU6IEdDLklucHV0TWFuLkF1dG9Db21wbGV0ZU1hdGNoTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q29weUJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoZWxwQ29udGVudDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvcHlNZXNzYWdlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29waWVkTWVzc2FnZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZsb2F0aW5nTGFiZWxUZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmxvYXRpbmdMYWJlbFR5cGU6IEdDLklucHV0TWFuLkZsb2F0aW5nTGFiZWxUeXBlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZsb2F0aW5nTGFiZWxEaXJlY3Rpb246IEdDLklucHV0TWFuLkZsb2F0aW5nTGFiZWxEaXJlY3Rpb247XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlZGl0TW9kZTogc3RyaW5nIHwgR0MuSW5wdXRNYW4uRWRpdE1vZGU7XG4gICAgQElucHV0KClcbiAgICBAUHJvcGVydHkoXCJcIiwgXCJcIiwgZmFsc2UsIGZhbHNlKVxuICAgIHB1YmxpYyBjaGVja2VkVmFsdWVzOiBDb21ib0JveFZhbHVlc1R5cGU7XG4gICAgQElucHV0KClcbiAgICBAUHJvcGVydHkoXCJcIiwgXCJcIiwgZmFsc2UsIGZhbHNlKVxuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW06IENvbWJvQm94SXRlbVR5cGU7XG4gICAgQElucHV0KClcbiAgICBAUHJvcGVydHkoXCJcIiwgXCJcIiwgZmFsc2UsIGZhbHNlKVxuICAgIHB1YmxpYyBjaGVja2VkSXRlbXM6IENvbWJvQm94SXRlbXNUeXBlO1xuICAgIEBJbnB1dCgpXG4gICAgQFByb3BlcnR5KFwiXCIsIFwiXCIsIGZhbHNlLCBmYWxzZSlcbiAgICBwdWJsaWMgY2hlY2tlZEluZGljZXM6IG51bWJlcltdO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dEcm9wRG93bkJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkcm9wRG93bkJ1dHRvblBvc2l0aW9uOiBzdHJpbmcgfCBHQy5JbnB1dE1hbi5Ecm9wRG93bkJ1dHRvbkFsaWdubWVudDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93U3BpbkJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGluQnV0dG9uUG9zaXRpb246IHN0cmluZyB8IEdDLklucHV0TWFuLlNwaW5CdXR0b25BbGlnbm1lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZHJvcERvd25XaWR0aDogbnVtYmVyIHwgJ2F1dG8nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duSGVpZ2h0OiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluUHJlZml4TGVuZ3RoOiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkcm9wRG93bk92ZXJmbG93OiBzdHJpbmcgfCBHQy5JbnB1dE1hbi5TY3JvbGxCYXJzO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZpc2libGVJdGVtczogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1IZWlnaHQ6IG51bWJlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2x1bW5zOiBHQy5JbnB1dE1hbi5Db2x1bW5Db25maWdbXTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93SGVhZGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlTWVtYmVyUGF0aDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlNZW1iZXJQYXRoOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2hlY2tPbkNsaWNrOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1UZW1wbGF0ZTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNwaW5XaGVlbDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbXB0eVRlbXBsYXRlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9hZDogKGNvbnRleHQ6IEdDLklucHV0TWFuLklMb2FkQ29udGV4dCkgPT4gdm9pZDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZpcnR1YWxNb2RlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdlbmVyYXRpbmdJdGVtOiAoYXJnczogR0MuSW5wdXRNYW4uSUl0ZW1HZW5lcmF0aW5nQXJncykgPT4gdm9pZDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RUZW1wbGF0ZTogKGFyZ3M6IEdDLklucHV0TWFuLklUZW1wbGF0ZVNlbGVjdEFyZ3MpID0+IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtYXRJdGVtOiAoYXJnczogR0MuSW5wdXRNYW4uSUl0ZW1BcmdzKSA9PiB2b2lkO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93Q29sdW1uUmVzaXplOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbEhlYWRlckhlaWdodDogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b0Ryb3BEb3duOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duQnV0dG9uVmlzaWJsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q2xlYXJCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b1NjYWxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pblNjYWxlRmFjdG9yOiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGVJdGVtU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZHJvcERvd25UeXBlOiBHQy5JbnB1dE1hbi5Db21ib0Ryb3BEb3duVHlwZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkcm9wRG93blRyZWVDb25maWc6IEdDLklucHV0TWFuLkNvbWJvQm94RHJvcERvd25UcmVlQ29uZmlnO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNoZWNrQnlTcGFjZTogYm9vbGVhbjtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNoZWNrZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duQ2xvc2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duT3BlbmVkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRleHRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNwaW5Eb3duOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNwaW5VcDogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjQ29tYm9Cb3g+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpdGVtc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxHQy5JbnB1dE1hbi5HY0NvbWJvQm94PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDb21ib0JveFZhbHVlc1R5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RlZFZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjaGVja2VkVmFsdWVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q29tYm9Cb3hWYWx1ZXNUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8b2JqZWN0IHwgc3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2hlY2tlZEl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q29tYm9Cb3hJdGVtc1R5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjaGVja2VkSW5kaWNlc0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcltdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oR2NDb21ib0JveENvbHVtbkNvbXBvbmVudClcbiAgICBwdWJsaWMgY29sdW1uQ29tcG9uZW50czogUXVlcnlMaXN0PEdjQ29tYm9Cb3hDb2x1bW5Db21wb25lbnQ+O1xuXG4gICAgcHJvdGVjdGVkIGluaXRHY0NvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uQ29tcG9uZW50cyAmJiB0aGlzLmNvbHVtbkNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgICAgICAgICB0aGlzLmNvbHVtbkNvbXBvbmVudHMuZm9yRWFjaCgoY29sdW1uOiBHY0NvbWJvQm94Q29sdW1uQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNvbHVtbi5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaXNWYWx1ZVBhdGg6IGNvbHVtbi5pc1ZhbHVlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrU29ydDogY29sdW1uLmNsaWNrU29ydCxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudEFsaWdubWVudDogY29sdW1uLmNvbnRlbnRBbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckFsaWdubWVudDogY29sdW1uLmhlYWRlckFsaWdubWVudCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd1RpcDogY29sdW1uLnNob3dUaXBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7XG4gICAgICAgIHRoaXMuY3JlYXRlVGVtcGxhdGUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMuX2ltQ3RybCA9IG5ldyBHQy5JbnB1dE1hbi5HY0NvbWJvQm94KGVsZW1lbnQsIHRoaXMgYXMgYW55KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGJpbmRFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbUN0cmwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjQ29tYm9Cb3hFdmVudC5TZWxlY3RlZENoYW5nZWQsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2VkLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuX2ltQ3RybC5nZXRTZWxlY3RlZFZhbHVlKCkpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5faW1DdHJsLmdldFNlbGVjdGVkSW5kZXgoKSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNoYW5nZS5lbWl0KHRoaXMuX2ltQ3RybC5nZXRTZWxlY3RlZEl0ZW0oKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbUN0cmwuYWRkRXZlbnRMaXN0ZW5lcihHQy5JbnB1dE1hbi5HY0NvbWJvQm94RXZlbnQuQ2hlY2tlZENoYW5nZWQsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZENoYW5nZWQuZW1pdChldmVudEFyZ3MpO1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkVmFsdWVzQ2hhbmdlLmVtaXQodGhpcy5faW1DdHJsLmdldENoZWNrZWRWYWx1ZXMoKSk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuX2ltQ3RybC5nZXRDaGVja2VkSXRlbXMoKSk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWRJbmRpY2VzQ2hhbmdlLmVtaXQodGhpcy5faW1DdHJsLmdldENoZWNrZWRJbmRpY2VzKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLmFkZEV2ZW50TGlzdGVuZXIoR0MuSW5wdXRNYW4uR2NDb21ib0JveEV2ZW50LkRyb3BEb3duQ2xvc2VkLCAoZXZlbnRBcmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3BEb3duQ2xvc2VkLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjQ29tYm9Cb3hFdmVudC5Ecm9wRG93bk9wZW5lZCwgKGV2ZW50QXJncykgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcm9wRG93bk9wZW5lZC5lbWl0KGV2ZW50QXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbUN0cmwuYWRkRXZlbnRMaXN0ZW5lcihHQy5JbnB1dE1hbi5HY0NvbWJvQm94RXZlbnQuVGV4dENoYW5nZWQsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGV4dENoYW5nZWQuZW1pdChldmVudEFyZ3MpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9pbUN0cmwudGV4dCk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLmFkZEV2ZW50TGlzdGVuZXIoR0MuSW5wdXRNYW4uR2NDb21ib0JveEV2ZW50LlNwaW5Eb3duLCAoZXZlbnRBcmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNwaW5Eb3duLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjQ29tYm9Cb3hFdmVudC5TcGluVXAsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3BpblVwLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjQ29tYm9Cb3hFdmVudC5JdGVtc0NoYW5nZWQsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNDaGFuZ2VkLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9pbUN0cmwuZ2V0SXRlbXMoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn0iXX0=