kwikid-forms 0.3.21 → 0.4.1
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/bundles/kwikid-forms.umd.js +8985 -7727
- package/bundles/kwikid-forms.umd.js.map +1 -1
- package/esm2015/lib/builder/builder.component.js +2 -2
- package/esm2015/lib/builder/builder.module.js +8 -11
- package/esm2015/lib/builder/element-config-editor/editors/basic/radio-config.editor.component.js +10 -10
- package/esm2015/lib/builder/element-config-editor/editors/basic/select-config.editor.component.js +302 -0
- package/esm2015/lib/builder/element-config-editor/editors/basic/text-config.editor.component.js +6 -6
- package/esm2015/lib/builder/element-config-editor/editors/basic-element-config.editor.component.js +25 -25
- package/esm2015/lib/builder/element-config-editor/editors/document/pan-number-config.editor.component.js +6 -6
- package/esm2015/lib/builder/element-config-editor/editors/document-element-config.editor.component.js +18 -18
- package/esm2015/lib/builder/shared/elements.js +12 -3
- package/esm2015/lib/builder2/builder-form-editor/builder-form-editor.component.js +268 -0
- package/esm2015/lib/builder2/builder-form-editor/builder-form-editor.module.js +38 -0
- package/esm2015/lib/builder2/builder-form-editor/builder-form-editor.pipe.js +19 -0
- package/esm2015/lib/builder2/builder-form-editor/builder.form-editor.constants.js +178 -0
- package/esm2015/lib/builder2/builder-form-list/builder-forms-list.component.js +85 -0
- package/esm2015/lib/builder2/builder-form-list/builder-forms-list.module.js +37 -0
- package/esm2015/lib/builder2/builder2.component.js +169 -0
- package/esm2015/lib/builder2/builder2.module.js +46 -0
- package/esm2015/lib/kwikid-forms.module.js +16 -4
- package/esm2015/lib/renderer/config-converter.helper.js +86 -9
- package/esm2015/lib/renderer/form-view/definitions/form-view.fields.definition.js +4 -1
- package/esm2015/lib/renderer/form-view/form-view.component.js +196 -29
- package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +17 -2
- package/esm2015/lib/renderer/forms-list/forms-list.component.js +6 -4
- package/esm2015/lib/renderer/renderer.component.js +73 -25
- package/esm2015/lib/renderer/renderer.definitions.js +6 -0
- package/esm2015/public_api.js +3 -1
- package/fesm2015/kwikid-forms.js +1300 -179
- package/fesm2015/kwikid-forms.js.map +1 -1
- package/lib/builder/builder.module.d.ts +2 -2
- package/lib/builder/element-config-editor/editors/basic/{dropdown-with-search-config.editor.component.d.ts → select-config.editor.component.d.ts} +5 -5
- package/lib/builder2/builder-form-editor/builder-form-editor.component.d.ts +48 -0
- package/lib/builder2/builder-form-editor/builder-form-editor.module.d.ts +12 -0
- package/lib/builder2/builder-form-editor/builder-form-editor.pipe.d.ts +7 -0
- package/lib/builder2/builder-form-editor/builder.form-editor.constants.d.ts +620 -0
- package/lib/builder2/builder-form-list/builder-forms-list.component.d.ts +19 -0
- package/lib/builder2/builder-form-list/builder-forms-list.module.d.ts +11 -0
- package/lib/builder2/builder2.component.d.ts +37 -0
- package/lib/builder2/builder2.module.d.ts +13 -0
- package/lib/kwikid-forms.module.d.ts +3 -2
- package/lib/renderer/form-view/definitions/form-view.fields.definition.d.ts +10 -7
- package/lib/renderer/form-view/form-view.component.d.ts +20 -3
- package/lib/renderer/form-view/helpers/form-view.fields.helper.d.ts +1 -0
- package/lib/renderer/renderer.definitions.d.ts +5 -0
- package/package.json +3 -16
- package/public_api.d.ts +2 -0
- package/esm2015/lib/builder/element-config-editor/editors/basic/dropdown-with-search-config.editor.component.js +0 -302
|
@@ -262,7 +262,7 @@ export class KwikIDFormsBuilderComponent {
|
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
264
|
/** @nocollapse */ KwikIDFormsBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormsBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
265
|
-
/** @nocollapse */ KwikIDFormsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsBuilderComponent, selector: "kwikid-forms-builder", ngImport: i0, template: "<div class=\"container\">\n <div class=\"wrapper\">\n <div class=\"builder-header\">\n <div class=\"builder-title\">KwikID Form Builder</div>\n <form\n [formGroup]=\"builderFormGroup\"\n class=\"builder-form\"\n >\n <kwikui-input\n [label]=\"'Form Key'\"\n [id]=\"'form_key'\"\n [type]=\"'text'\"\n [formControlName]=\"'formKey'\"\n [formControl]=\"builderFormGroup.controls['formKey']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Key'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'upper'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-input\n [label]=\"'Form Title'\"\n [id]=\"'form_title'\"\n [type]=\"'text'\"\n [formControlName]=\"'formTitle'\"\n [formControl]=\"builderFormGroup.controls['formTitle']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Title'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'default'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-button\n [disabled]=\"!builderFormGroup.valid\"\n id=\"save_form_btn\"\n label=\"Save Form\"\n [showLoader]=\"false\"\n styles=\"\"\n class=\"\"\n type=\"button\"\n appearance=\"primary\"\n icon=\"\"\n iconRight=\"\"\n size=\"m\"\n (onClick)=\"handleOnClickSaveForms($event)\"\n ></kwikui-button>\n </form>\n </div>\n <div class=\"builder-body\">\n <div class=\"form-elements-drag-wrapper\">\n <div\n class=\"form-elements-drag\"\n cdkDropList\n [cdkDropListData]=\"formElementsDragList\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[formElementsList]\"\n (cdkDropListExited)=\"exit($event, 'other')\"\n (cdkDropListEntered)=\"enter($event, 'other')\"\n >\n <ng-container\n *ngFor=\"let formElementDragItem of formElementsDragList\"\n >\n <ng-container *ngIf=\"formElementDragItem.isElement\">\n <div\n class=\"form-element-drag\"\n cdkDrag\n [cdkDragData]=\"formElementDragItem\"\n >\n ⋮⋮ {{ formElementDragItem.elementTitle }}\n <!-- <ng-container *ngComponentOutlet=\"formElementDragItem.component\"></ng-container> -->\n </div>\n <div\n class=\"form-element-drag\"\n *cdkDragPlaceholder\n >\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"!formElementDragItem.isElement\">\n <div class=\"form-element-category\">\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div\n class=\"form-elements-drop-wrapper\"\n cdkDropList\n #formElementsList=\"cdkDropList\"\n [cdkDropListData]=\"formElementsDropList\"\n (cdkDropListDropped)=\"drop($event, '')\"\n [cdkDropListEnterPredicate]=\"isElementPredicate\"\n >\n <ng-container\n *ngFor=\"\n let formElementDropItem of formElementsDropList;\n let idx = index\n \"\n >\n <div\n class=\"form-drop-element\"\n cdkDrag\n >\n <div class=\"form-drop-element-grab-symbol\">⋮⋮</div>\n <div class=\"form-drop-element-main\">\n <div class=\"form-drop-element-header\">\n <div class=\"form-drop-element-title\">\n {{ formElementDropItem.elementTitle }}\n </div>\n <div class=\"form-drop-element-actions\">\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'edit-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'secondary'\"\n [icon]=\"'tuiIconEdit'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"editElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'remove-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'accent'\"\n [icon]=\"'tuiIconCloseLarge'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"removeElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <!-- <button\n (click)=\"editElement(idx, formElementDropItem)\"\n title=\"edit element properties\"\n >\n ✎\n </button>\n <button\n (click)=\"removeElement(idx, formElementDropItem)\"\n title=\"delete element\"\n >\n ✖\n </button> -->\n </div>\n </div>\n <div class=\"form-drop-element-body\"> </div>\n <div class=\"form-drop-element-footer\">\n <div class=\"form-drop-element-id\">\n {{ formElementDropItem.elementId }}\n </div>\n <div class=\"form-drop-element-category\">\n {{ formElementDropItem.elementCategory }}\n </div>\n <div class=\"form-drop-element-type\">\n {{ formElementDropItem.elementType }}\n </div>\n </div>\n <div\n class=\"example-custom-placeholder\"\n *cdkDragPlaceholder\n ></div>\n <!-- <ng-container *ngComponentOutlet=\"formElementDropItem.component\"> </ng-container> -->\n <!-- <ng-container *ngTemplateOutlet=\"formModal; context: formElementDropItem\"></ng-container> -->\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"element-property-editor-wrapper\">\n <element-config-editor\n [elementConfig]=\"elementEditorElementConfig\"\n (updateElement)=\"handleOnSaveUpdateElement($event)\"\n ></element-config-editor>\n </div>\n </div>\n <div class=\"builder-footer\"> © Baiju Dodhia, KwikID </div>\n </div>\n <div\n class=\"modal\"\n *ngIf=\"finalJSONConfig\"\n >\n <div class=\"modal-box\">\n <div class=\"modal-content\">\n <div class=\"modal-heading\">\n <div class=\"modal-title\">{{ formTitle }}</div>\n <div class=\"modal-actions\">\n <div\n class=\"modal-code-download\"\n (click)=\"downloadJSON()\"\n >Download JSON</div\n >\n <div\n class=\"modal-code-copy\"\n (click)=\"copyToClipboard()\"\n >Copy to Clipboard</div\n >\n <div\n class=\"modal-close\"\n (click)=\"closeJSONPopup()\"\n >\n Close\n </div>\n </div>\n </div>\n <pre>\n <code>{{JSON.stringify(finalJSONConfig, undefined, 2)}}</code>\n </pre>\n </div>\n </div>\n </div>\n</div>\n", styles: ["kwikid-forms-builder fieldset{display:flex;flex-direction:column;justify-content:center;align-items:stretch;align-content:center;grid-gap:.5rem;gap:.5rem;padding:.5rem 1rem 1rem;box-shadow:0 0 10px -6px #000;border:0px solid gray;border-radius:1rem}kwikid-forms-builder table,kwikid-forms-builder tr,kwikid-forms-builder td{border:1px solid black;padding:.5rem 1rem}kwikui-table table{width:100%;box-shadow:0 0 10px -6px #000;border:0px solid gray;padding:0}\n", ":host{all:unset;position:relative;width:100%;height:100%}.container{width:100%;height:100%;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.container .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.container .wrapper .builder-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:max-content;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-header .builder-title{font-weight:bold;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;font-size:1rem}.container .wrapper .builder-header .builder-form{display:flex;align-content:center;justify-content:flex-end;flex:1;flex-direction:row;align-items:center;grid-gap:1rem;gap:1rem;width:100%}.container .wrapper .builder-header .builder-form kwikui-input{width:16rem}.container .wrapper .builder-body{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:stretch;grid-gap:1rem;gap:1rem;flex:1;padding:1rem;overflow:auto}.container .wrapper .builder-body>*{width:100%;border:1px solid lightgray;overflow:auto;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-body .form-elements-drag-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;padding:1rem;min-width:16rem;max-width:16rem}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;border-bottom:none}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-drag{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-radius:.5rem;padding:1rem;cursor:grab;box-shadow:0 2px 10px -6px #000;text-transform:capitalize}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-category{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-left:.25rem solid var(--tui-primary);padding:1rem;background:var(--tui-secondary)}.container .wrapper .builder-body .form-elements-drop-wrapper{padding:1rem;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;min-width:20rem;max-width:28rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder{display:flex;justify-content:flex-start;justify-items:start;align-items:center;padding:1rem;border-radius:1rem;box-shadow:0 2px 10px -6px #000;cursor:grab;flex-direction:row;position:relative;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main{flex:1;display:flex;justify-content:space-between;justify-items:start;align-items:stretch;flex-direction:column;width:100%;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button{width:1.6rem;height:1.6rem;transform:rotate(90deg)!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child{background-color:#dc143c!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child{background-color:gray!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-body,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-body{border-top:1px dashed lightgray;border-bottom:1px dashed lightgray}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-id,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-id{background:var(--tui-secondary);padding:0 .3rem;border-radius:1rem;color:var(--tui-primary)}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-category,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-category{background:var(--tui-primary);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-type,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-type{background:var(--tui-positive);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .element-property-editor-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;padding:1rem;min-width:20rem;grid-gap:1rem;gap:1rem}.container .wrapper .builder-footer{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:30px;border:1px solid lightgray;box-shadow:0 -2px 10px -6px #000;font-weight:bold}.cdk-drag-preview{width:-moz-fit-content;width:fit-content;height:auto;box-sizing:border-box;background-color:transparent;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;cursor:grabbing}.cdk-drag-placeholder{opacity:1}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.modal{position:absolute;background-color:#0000004d;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal-box{width:75%;height:75%;margin:auto;background-color:#fff;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-content{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;width:100%;height:100%}.modal-heading{padding:1rem;width:100%;display:flex;flex-direction:row;justify-content:space-between;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-title{font-weight:bold;font-size:1rem}.modal-actions{display:flex;flex-direction:row;grid-gap:1rem;gap:1rem;cursor:pointer}pre{float:left;justify-content:center;width:100%;height:100%;box-sizing:border-box;overflow:auto}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "size", "icon", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }, { type: i1.KwikUIButtonIconComponent, selector: "kwikui-button-icon", inputs: ["disabled", "id", "showLoader", "styles", "class", "type", "appearance", "icon", "shape", "size"], outputs: ["onClick"] }, { type: i2.ElementConfigEditor, selector: "element-config-editor", inputs: ["formKey", "elementConfig"], outputs: ["updateElement"] }], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i4.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }] });
|
|
265
|
+
/** @nocollapse */ KwikIDFormsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsBuilderComponent, selector: "kwikid-forms-builder", ngImport: i0, template: "<div class=\"container\">\n <div class=\"wrapper\">\n <div class=\"builder-header\">\n <div class=\"builder-title\">KwikID Form Builder</div>\n <form\n [formGroup]=\"builderFormGroup\"\n class=\"builder-form\"\n >\n <kwikui-input\n [label]=\"'Form Key'\"\n [id]=\"'form_key'\"\n [type]=\"'text'\"\n [formControlName]=\"'formKey'\"\n [formControl]=\"builderFormGroup.controls['formKey']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Key'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'upper'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-input\n [label]=\"'Form Title'\"\n [id]=\"'form_title'\"\n [type]=\"'text'\"\n [formControlName]=\"'formTitle'\"\n [formControl]=\"builderFormGroup.controls['formTitle']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Title'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'default'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-button\n [disabled]=\"!builderFormGroup.valid\"\n id=\"save_form_btn\"\n label=\"Save Form\"\n [showLoader]=\"false\"\n styles=\"\"\n class=\"\"\n type=\"button\"\n appearance=\"primary\"\n icon=\"\"\n iconRight=\"\"\n size=\"m\"\n (onClick)=\"handleOnClickSaveForms($event)\"\n ></kwikui-button>\n </form>\n </div>\n <div class=\"builder-body\">\n <div class=\"form-elements-drag-wrapper\">\n <div\n class=\"form-elements-drag\"\n cdkDropList\n [cdkDropListData]=\"formElementsDragList\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[formElementsList]\"\n (cdkDropListExited)=\"exit($event, 'other')\"\n (cdkDropListEntered)=\"enter($event, 'other')\"\n >\n <ng-container\n *ngFor=\"let formElementDragItem of formElementsDragList\"\n >\n <ng-container *ngIf=\"formElementDragItem.isElement\">\n <div\n class=\"form-element-drag\"\n cdkDrag\n [cdkDragData]=\"formElementDragItem\"\n >\n ⋮⋮ {{ formElementDragItem.elementTitle }}\n <!-- <ng-container *ngComponentOutlet=\"formElementDragItem.component\"></ng-container> -->\n </div>\n <div\n class=\"form-element-drag\"\n *cdkDragPlaceholder\n >\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"!formElementDragItem.isElement\">\n <div class=\"form-element-category\">\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div\n class=\"form-elements-drop-wrapper\"\n cdkDropList\n #formElementsList=\"cdkDropList\"\n [cdkDropListData]=\"formElementsDropList\"\n (cdkDropListDropped)=\"drop($event, '')\"\n [cdkDropListEnterPredicate]=\"isElementPredicate\"\n >\n <ng-container\n *ngFor=\"\n let formElementDropItem of formElementsDropList;\n let idx = index\n \"\n >\n <div\n class=\"form-drop-element\"\n cdkDrag\n >\n <div class=\"form-drop-element-grab-symbol\">⋮⋮</div>\n <div class=\"form-drop-element-main\">\n <div class=\"form-drop-element-header\">\n <div class=\"form-drop-element-title\">\n {{ formElementDropItem.elementTitle }}\n </div>\n <div class=\"form-drop-element-actions\">\n <kwikui-button\n [disabled]=\"false\"\n [id]=\"'edit-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'secondary'\"\n [icon]=\"'tuiIconEdit'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"editElement(idx, formElementDropItem)\"\n ></kwikui-button>\n <kwikui-button\n [disabled]=\"false\"\n [id]=\"'remove-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'accent'\"\n [icon]=\"'tuiIconCloseLarge'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"removeElement(idx, formElementDropItem)\"\n ></kwikui-button>\n <!-- <button\n (click)=\"editElement(idx, formElementDropItem)\"\n title=\"edit element properties\"\n >\n ✎\n </button>\n <button\n (click)=\"removeElement(idx, formElementDropItem)\"\n title=\"delete element\"\n >\n ✖\n </button> -->\n </div>\n </div>\n <div class=\"form-drop-element-body\"> </div>\n <div class=\"form-drop-element-footer\">\n <div class=\"form-drop-element-id\">\n {{ formElementDropItem.elementId }}\n </div>\n <div class=\"form-drop-element-category\">\n {{ formElementDropItem.elementCategory }}\n </div>\n <div class=\"form-drop-element-type\">\n {{ formElementDropItem.elementType }}\n </div>\n </div>\n <div\n class=\"example-custom-placeholder\"\n *cdkDragPlaceholder\n ></div>\n <!-- <ng-container *ngComponentOutlet=\"formElementDropItem.component\"> </ng-container> -->\n <!-- <ng-container *ngTemplateOutlet=\"formModal; context: formElementDropItem\"></ng-container> -->\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"element-property-editor-wrapper\">\n <element-config-editor\n [elementConfig]=\"elementEditorElementConfig\"\n (updateElement)=\"handleOnSaveUpdateElement($event)\"\n ></element-config-editor>\n </div>\n </div>\n <div class=\"builder-footer\"> © Baiju Dodhia, KwikID </div>\n </div>\n <div\n class=\"modal\"\n *ngIf=\"finalJSONConfig\"\n >\n <div class=\"modal-box\">\n <div class=\"modal-content\">\n <div class=\"modal-heading\">\n <div class=\"modal-title\">{{ formTitle }}</div>\n <div class=\"modal-actions\">\n <div\n class=\"modal-code-download\"\n (click)=\"downloadJSON()\"\n >Download JSON</div\n >\n <div\n class=\"modal-code-copy\"\n (click)=\"copyToClipboard()\"\n >Copy to Clipboard</div\n >\n <div\n class=\"modal-close\"\n (click)=\"closeJSONPopup()\"\n >\n Close\n </div>\n </div>\n </div>\n <pre>\n <code>{{JSON.stringify(finalJSONConfig, undefined, 2)}}</code>\n </pre>\n </div>\n </div>\n </div>\n</div>\n", styles: ["kwikid-forms-builder fieldset{display:flex;flex-direction:column;justify-content:center;align-items:stretch;align-content:center;grid-gap:.5rem;gap:.5rem;padding:.5rem 1rem 1rem;box-shadow:0 0 10px -6px #000;border:0px solid gray;border-radius:1rem}kwikid-forms-builder table,kwikid-forms-builder tr,kwikid-forms-builder td{border:1px solid black;padding:.5rem 1rem}kwikui-table table{width:100%;box-shadow:0 0 10px -6px #000;border:0px solid gray;padding:0}\n", ":host{all:unset;position:relative;width:100%;height:100%}.container{width:100%;height:100%;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.container .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.container .wrapper .builder-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:max-content;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-header .builder-title{font-weight:bold;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;font-size:1rem}.container .wrapper .builder-header .builder-form{display:flex;align-content:center;justify-content:flex-end;flex:1;flex-direction:row;align-items:center;grid-gap:1rem;gap:1rem;width:100%}.container .wrapper .builder-header .builder-form kwikui-input{width:16rem}.container .wrapper .builder-body{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:stretch;grid-gap:1rem;gap:1rem;flex:1;padding:1rem;overflow:auto}.container .wrapper .builder-body>*{width:100%;border:1px solid lightgray;overflow:auto;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-body .form-elements-drag-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;padding:1rem;min-width:16rem;max-width:16rem}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;border-bottom:none}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-drag{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-radius:.5rem;padding:1rem;cursor:grab;box-shadow:0 2px 10px -6px #000;text-transform:capitalize}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-category{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-left:.25rem solid var(--tui-primary);padding:1rem;background:var(--tui-secondary)}.container .wrapper .builder-body .form-elements-drop-wrapper{padding:1rem;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;min-width:20rem;max-width:28rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder{display:flex;justify-content:flex-start;justify-items:start;align-items:center;padding:1rem;border-radius:1rem;box-shadow:0 2px 10px -6px #000;cursor:grab;flex-direction:row;position:relative;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main{flex:1;display:flex;justify-content:space-between;justify-items:start;align-items:stretch;flex-direction:column;width:100%;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button{width:1.6rem;height:1.6rem;transform:rotate(90deg)!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child{background-color:#dc143c!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child{background-color:gray!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-body,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-body{border-top:1px dashed lightgray;border-bottom:1px dashed lightgray}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-id,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-id{background:var(--tui-secondary);padding:0 .3rem;border-radius:1rem;color:var(--tui-primary)}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-category,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-category{background:var(--tui-primary);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-type,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-type{background:var(--tui-positive);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .element-property-editor-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;padding:1rem;min-width:20rem;grid-gap:1rem;gap:1rem}.container .wrapper .builder-footer{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:30px;border:1px solid lightgray;box-shadow:0 -2px 10px -6px #000;font-weight:bold}.cdk-drag-preview{width:-moz-fit-content;width:fit-content;height:auto;box-sizing:border-box;background-color:transparent;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;cursor:grabbing}.cdk-drag-placeholder{opacity:1}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.modal{position:absolute;background-color:#0000004d;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal-box{width:75%;height:75%;margin:auto;background-color:#fff;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-content{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;width:100%;height:100%}.modal-heading{padding:1rem;width:100%;display:flex;flex-direction:row;justify-content:space-between;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-title{font-weight:bold;font-size:1rem}.modal-actions{display:flex;flex-direction:row;grid-gap:1rem;gap:1rem;cursor:pointer}pre{float:left;justify-content:center;width:100%;height:100%;box-sizing:border-box;overflow:auto}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "size", "icon", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }, { type: i2.ElementConfigEditor, selector: "element-config-editor", inputs: ["formKey", "elementConfig"], outputs: ["updateElement"] }], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i4.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }] });
|
|
266
266
|
__decorate([
|
|
267
267
|
logMethod
|
|
268
268
|
], KwikIDFormsBuilderComponent.prototype, "handleGetKeyValue", null);
|
|
@@ -292,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
292
292
|
styleUrls: ["shared/shared.scss", "./builder.component.scss"]
|
|
293
293
|
}]
|
|
294
294
|
}], ctorParameters: function () { return []; }, propDecorators: { handleGetKeyValue: [], drop: [], exit: [], enter: [], removeElement: [], editElement: [], handleOnSaveUpdateElement: [] } });
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULGtCQUFrQixFQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFPakQsTUFBTSxPQUFPLDJCQUEyQjtJQW9CdEM7UUFuQkEsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFjLFNBQVMsQ0FBQztRQUV4QyxrQkFBYSxHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2pELHFCQUFnQixHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hELGtCQUFhLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDbEQscUJBQWdCLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7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QUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDOzs0SUFsVVUsMkJBQTJCO2dJQUEzQiwyQkFBMkIsNERDdkJ4QywyNVBBNE5BO0FEM0dFO0lBREMsU0FBUztvRUFRVDtBQUdEO0lBREMsU0FBUzt1REFtQ1Q7QUFHRDtJQURDLFNBQVM7dURBQ2tDO0FBRzVDO0lBREMsU0FBUzt3REFDbUM7QUFRN0M7SUFEQyxTQUFTO2dFQUlUO0FBR0Q7SUFEQyxTQUFTOzhEQUdUO0FBR0Q7SUFEQyxTQUFTOzRFQUM4Qjs0RkEvSjdCLDJCQUEyQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSwwQkFBMEIsQ0FBQztpQkFDOUQ7MEVBMkZDLGlCQUFpQixNQVVqQixJQUFJLE1BcUNKLElBQUksTUFHSixLQUFLLE1BUUwsYUFBYSxNQU1iLFdBQVcsTUFLWCx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDZGtEcmFnLFxuICBjb3B5QXJyYXlJdGVtLFxuICBtb3ZlSXRlbUluQXJyYXlcbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBnZXRPYmplY3RGcm9tTG9jYWxTdG9yYWdlLFxuICBpc0VtcHR5VmFsdWUsXG4gIGlzTm90RW1wdHlWYWx1ZSxcbiAgbG9nTWV0aG9kLFxuICBzZXRNaXNzaW5nS2V5VmFsdWVcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBFbGVtZW50cyB9IGZyb20gXCIuL3NoYXJlZC9lbGVtZW50c1wiO1xuaW1wb3J0IHsgcmV2aXNlZFJhbmRJZCB9IGZyb20gXCIuL3NoYXJlZC9oZWxwZXJzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtZm9ybXMtYnVpbGRlclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2J1aWxkZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCJzaGFyZWQvc2hhcmVkLnNjc3NcIiwgXCIuL2J1aWxkZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZm9ybUtleTogc3RyaW5nID0gXCJcIjtcbiAgZm9ybVRpdGxlOiBzdHJpbmcgPSBcIlwiO1xuICBidWlsZGVyRm9ybUdyb3VwOiBGb3JtR3JvdXAgPSB1bmRlZmluZWQ7XG5cbiAgYmFzaWNFbGVtZW50czogQXJyYXk8YW55PiA9IG5ldyBFbGVtZW50cygpLmJhc2ljO1xuICBkb2N1bWVudEVsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkuZG9jdW1lbnRzO1xuICBvdGhlckVsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkub3RoZXJzO1xuICB0ZW1wbGF0ZUVsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkudGVtcGxhdGVzO1xuXG4gIGVsZW1lbnRzTWFwcGluZzogYW55ID0gbmV3IEVsZW1lbnRzKCkuZWxlbWVudE1hcHBpbmc7XG5cbiAgZm9ybUVsZW1lbnRzRHJhZ0xpc3Q6IEFycmF5PGFueT4gPSBbXTtcbiAgZm9ybUVsZW1lbnRzRHJvcExpc3Q6IEFycmF5PGFueT4gPSBbXTtcblxuICBlbGVtZW50RWRpdG9yRWxlbWVudENvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuXG4gIGZpbmFsSlNPTkNvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuICBKU09OID0gSlNPTjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGZvcm1LZXk6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZm9ybVRpdGxlOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybURyb3BDb25maWcgPSBnZXRPYmplY3RGcm9tTG9jYWxTdG9yYWdlKFwiYnVpbGRlckZvcm1Db25maWdcIik7XG5cbiAgICBpZiAoaXNOb3RFbXB0eVZhbHVlKGZvcm1Ecm9wQ29uZmlnKSkge1xuICAgICAgdGhpcy5mb3JtS2V5ID0gZm9ybURyb3BDb25maWcua2V5O1xuICAgICAgdGhpcy5mb3JtVGl0bGUgPSBmb3JtRHJvcENvbmZpZy50aXRsZTtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSBmb3JtRHJvcENvbmZpZy5maWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgICAgICBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9IHRoaXMuZWxlbWVudHNNYXBwaW5nLmJhc2ljLmluY2x1ZGVzKGl0ZW0uZWxlbWVudFR5cGUpXG4gICAgICAgICAgPyBcImJhc2ljXCJcbiAgICAgICAgICA6IHRoaXMuZWxlbWVudHNNYXBwaW5nLmRvY3VtZW50cy5pbmNsdWRlcyhpdGVtLmVsZW1lbnRUeXBlKVxuICAgICAgICAgID8gXCJkb2N1bWVudFwiXG4gICAgICAgICAgOiBcIm90aGVyc1wiO1xuICAgICAgICBpdGVtLmlzRWxlbWVudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRGaWx0ZXJlZCA9XG4gICAgICAgICAgaXRlbS5lbGVtZW50Q2F0ZWdvcnkgPT09IFwiYmFzaWNcIlxuICAgICAgICAgICAgPyB0aGlzLmJhc2ljRWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gaXRlbS5lbGVtZW50VHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGl0ZW0uZWxlbWVudENhdGVnb3J5ID09PSBcImRvY3VtZW50XCJcbiAgICAgICAgICAgID8gdGhpcy5kb2N1bWVudEVsZW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQuZWxlbWVudFR5cGUgPT09IGl0ZW0uZWxlbWVudFR5cGVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9PT0gXCJvdGhlcnNcIlxuICAgICAgICAgICAgPyB0aGlzLm90aGVyRWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gaXRlbS5lbGVtZW50VHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgaXRlbS5lbGVtZW50VGl0bGUgPSBpc0VtcHR5VmFsdWUoZWxlbWVudEZpbHRlcmVkKVxuICAgICAgICAgID8gaXRlbS5lbGVtZW50Q2F0ZWdvcnkgKyBcIjo6XCIgKyBpdGVtLmVsZW1lbnRUeXBlXG4gICAgICAgICAgOiBlbGVtZW50RmlsdGVyZWQuZWxlbWVudFRpdGxlO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QgPSBmb3JtRmllbGRzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QgPSBbXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJCYXNpYyBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLmJhc2ljRWxlbWVudHMsXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJEb2N1bWVudCBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLmRvY3VtZW50RWxlbWVudHMsXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJPdGhlciBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLm90aGVyRWxlbWVudHNcbiAgICBdO1xuXG4gICAgZm9yIChsZXQgZm9ybUVsZW1lbnRzRHJhZ0l0ZW0gb2YgdGhpcy5mb3JtRWxlbWVudHNEcmFnTGlzdCkge1xuICAgICAgZm9ybUVsZW1lbnRzRHJhZ0l0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9uQ2hhbmdlKFxuICAgIGV2ZW50OiB7IHRhcmdldDogeyB2YWx1ZTogYW55IH0gfSxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGtleTogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGlkeDogYW55XG4gICkge1xuICAgIGNvbnN0IF92YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIC8vIERPTSBFdmVudCBIYW5kbGVyc1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZUdldEtleVZhbHVlKGU6IGFueSkge1xuICAgIHRoaXMuYnVpbGRlckZvcm1Hcm91cC5wYXRjaFZhbHVlKFxuICAgICAge1xuICAgICAgICBbZS5rZXldOiBlLnZhbHVlXG4gICAgICB9LFxuICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICApO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBkcm9wKGV2ZW50OiBhbnksIGVsZW1lbnRDYXRlZ29yeTogc3RyaW5nKSB7XG4gICAgLy8gbGV0IGl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyICE9PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiY29weWluZ1wiKTtcbiAgICAgIGlmIChldmVudC5pdGVtLmRhdGEuaXNFbGVtZW50KSB7XG4gICAgICAgIC8vIENsb25lIHRoZSBpdGVtIHRoYXQgd2FzIGRyb3BwZWQuXG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtSW5kZXggPSB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0LmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBpdGVtLmVsZW1lbnRJZCA9PT0gZXZlbnQuaXRlbS5kYXRhLmVsZW1lbnRJZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29weUFycmF5SXRlbShcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0LFxuICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QsXG4gICAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleCxcbiAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIm1vdmluZ1wiKTtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGV4aXQoZXZlbnQ6IGFueSwgZWxlbWVudENhdGVnb3J5OiBzdHJpbmcpIHt9XG5cbiAgQGxvZ01ldGhvZFxuICBlbnRlcihldmVudDogYW55LCBlbGVtZW50Q2F0ZWdvcnk6IHN0cmluZykge31cblxuICAvKiogUHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgb25seSBhbGxvd3MgaXNFbGVtZW50OiB0cnVlIGl0ZW1zIHRvIGJlIGRyb3BwZWQgaW50byBhIGxpc3QuICovXG4gIGlzRWxlbWVudFByZWRpY2F0ZShpdGVtOiBDZGtEcmFnPGFueT4pIHtcbiAgICByZXR1cm4gaXRlbS5kYXRhLmlzRWxlbWVudDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcmVtb3ZlRWxlbWVudChpZHg6IG51bWJlciwgaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3Quc3BsaWNlKGlkeCwgMSk7XG4gICAgdGhpcy5lbGVtZW50RWRpdG9yRWxlbWVudENvbmZpZyA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZWRpdEVsZW1lbnQoaWR4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHRoaXMuZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWcgPSBpdGVtO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPblNhdmVVcGRhdGVFbGVtZW50KGV2ZW50OiBhbnkpIHt9XG5cbiAgaGFuZGxlT25DbGlja1NhdmVGb3JtcyhldmVudDogYW55KSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybUtleS52YWx1ZSkpIHtcbiAgICAgIHdpbmRvdy5hbGVydChcIlBsZWFzZSBwcm92aWRlIEZvcm0gS2V5XCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1LZXkgPSB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybUtleS52YWx1ZTtcbiAgICAgIHRoaXMuZm9ybUtleSA9IHRoaXMuZm9ybUtleS5yZXBsYWNlKC9cXHMvZywgXCJfXCIpLnRvTG9jYWxlVXBwZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybVRpdGxlLnZhbHVlKSkge1xuICAgICAgd2luZG93LmFsZXJ0KFwiUGxlYXNlIHByb3ZpZGUgRm9ybSBUaXRsZVwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtVGl0bGUgPSB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybVRpdGxlLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBmaW5hbEZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHNEcm9wTGlzdCkpO1xuICAgIGZpbmFsRmllbGRzID0gZmluYWxGaWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICBpdGVtID0gc2V0TWlzc2luZ0tleVZhbHVlKGl0ZW0sIFwidHlwZVwiLCBpdGVtLmVsZW1lbnRUeXBlKTtcblxuICAgICAgaWYgKGl0ZW0uZWxlbWVudFR5cGUuc3RhcnRzV2l0aChcIk5BPD5cIiwgMCkpIHtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudElkO1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50VHlwZTtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFRpdGxlO1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50Q2F0ZWdvcnk7XG4gICAgICAgIGRlbGV0ZSBpdGVtLmlzRWxlbWVudDtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRJZDtcbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRUeXBlO1xuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFRpdGxlO1xuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudENhdGVnb3J5O1xuICAgICAgZGVsZXRlIGl0ZW0uaXNFbGVtZW50O1xuXG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoaXRlbSwgXCJkZWZhdWx0XCIpKSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhpdGVtLmRlZmF1bHQsIFwidmFsdWVcIikpIHtcbiAgICAgICAgICBpZiAoaXRlbS5kZWZhdWx0LnZhbHVlKSB7XG4gICAgICAgICAgICBpdGVtLmRlZmF1bHQgPSB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIk9CSkVDVFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIkFMTF9GT1JNU19EQVRBXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBTdHJpbmcoYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgaXNfdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbXCJPTl9JTklUXCJdLFxuICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlZBTFVFX0NIRUNLXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiT0JKRUNUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiQUxMX0ZPUk1TX0RBVEFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogeyBrZXk6IFwiSVNfTk9UX0VNUFRZXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRLZXk6IFN0cmluZyhgJHtpdGVtLmtleX1gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJBTExfRk9STVNfREFUQVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJC4ke3RoaXMuZm9ybUtleX0uJHtpdGVtLmtleX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLmRlZmF1bHQgPSB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmFsRm9ybUNvbmZpZyA9IHtcbiAgICAgIGtleTogdGhpcy5mb3JtS2V5LFxuICAgICAgdGl0bGU6IHRoaXMuZm9ybVRpdGxlLFxuICAgICAgZmllbGRzOiBmaW5hbEZpZWxkc1xuICAgIH07XG5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInJlbmRlcmVyRm9ybUNvbmZpZ1wiLCBKU09OLnN0cmluZ2lmeShmaW5hbEZvcm1Db25maWcpKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgIFwiYnVpbGRlckZvcm1Db25maWdcIixcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAga2V5OiB0aGlzLmZvcm1LZXksXG4gICAgICAgIHRpdGxlOiB0aGlzLmZvcm1UaXRsZSxcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm1FbGVtZW50c0Ryb3BMaXN0XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZpbmFsSlNPTkNvbmZpZyA9IGZpbmFsRm9ybUNvbmZpZztcbiAgICBjb25zb2xlLmxvZyhmaW5hbEZvcm1Db25maWcpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QpO1xuICB9XG5cbiAgY29weVRvQ2xpcGJvYXJkKCkge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KEpTT04uc3RyaW5naWZ5KHRoaXMuZmluYWxKU09OQ29uZmlnKSk7XG4gICAgYWxlcnQoXCJKU09OIENvbmZpZyBpcyBjb3BpZWRcIik7XG4gIH1cblxuICBkb3dubG9hZEpTT04oKSB7XG4gICAgY29uc3QgREFUQSA9IHRoaXMuZmluYWxKU09OQ29uZmlnO1xuICAgIGxldCB0eXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgY29uc3QgRklMRV9OQU1FID0gYCR7dGhpcy5mb3JtS2V5fS5qc29uYDtcblxuICAgIGxldCBibG9iID0gbmV3IEJsb2IoW0RBVEFdLCB7dHlwZX0pO1xuICAgIGxldCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgIGxpbmsuZG93bmxvYWQgPSBGSUxFX05BTUU7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG5cbiAgY2xvc2VKU09OUG9wdXAoKSB7XG4gICAgdGhpcy5maW5hbEpTT05Db25maWcgPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidWlsZGVyLXRpdGxlXCI+S3dpa0lEIEZvcm0gQnVpbGRlcjwvZGl2PlxuICAgICAgPGZvcm1cbiAgICAgICAgW2Zvcm1Hcm91cF09XCJidWlsZGVyRm9ybUdyb3VwXCJcbiAgICAgICAgY2xhc3M9XCJidWlsZGVyLWZvcm1cIlxuICAgICAgPlxuICAgICAgICA8a3dpa3VpLWlucHV0XG4gICAgICAgICAgW2xhYmVsXT1cIidGb3JtIEtleSdcIlxuICAgICAgICAgIFtpZF09XCInZm9ybV9rZXknXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Zvcm1LZXknXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiYnVpbGRlckZvcm1Hcm91cC5jb250cm9sc1snZm9ybUtleSddXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIGVudGVyIGEgRm9ybSBLZXknXCJcbiAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FzZV09XCIndXBwZXInXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgKGdldEtleVZhbHVlKT1cImhhbmRsZUdldEtleVZhbHVlKCRldmVudClcIlxuICAgICAgICA+PC9rd2lrdWktaW5wdXQ+XG4gICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICBbbGFiZWxdPVwiJ0Zvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbaWRdPVwiJ2Zvcm1fdGl0bGUnXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Zvcm1UaXRsZSdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJidWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzWydmb3JtVGl0bGUnXVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciBhIEZvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FzZV09XCInZGVmYXVsdCdcIlxuICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAoZ2V0S2V5VmFsdWUpPVwiaGFuZGxlR2V0S2V5VmFsdWUoJGV2ZW50KVwiXG4gICAgICAgID48L2t3aWt1aS1pbnB1dD5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWJ1aWxkZXJGb3JtR3JvdXAudmFsaWRcIlxuICAgICAgICAgIGlkPVwic2F2ZV9mb3JtX2J0blwiXG4gICAgICAgICAgbGFiZWw9XCJTYXZlIEZvcm1cIlxuICAgICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgIGNsYXNzPVwiXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgICAgaWNvblJpZ2h0PVwiXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja1NhdmVGb3JtcygkZXZlbnQpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcmFnLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcmFnXCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZm9ybUVsZW1lbnRzRHJhZ0xpc3RcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2Zvcm1FbGVtZW50c0xpc3RdXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiZXhpdCgkZXZlbnQsICdvdGhlcicpXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cImVudGVyKCRldmVudCwgJ290aGVyJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZvcm1FbGVtZW50RHJhZ0l0ZW0gb2YgZm9ybUVsZW1lbnRzRHJhZ0xpc3RcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtRWxlbWVudERyYWdJdGVtLmlzRWxlbWVudFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnQtZHJhZ1wiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJmb3JtRWxlbWVudERyYWdJdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICYjODk0MjsmIzg5NDI7Jm5ic3A7Jm5ic3A7e3sgZm9ybUVsZW1lbnREcmFnSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZm9ybUVsZW1lbnREcmFnSXRlbS5jb21wb25lbnRcIj48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnQtZHJhZ1wiXG4gICAgICAgICAgICAgICAgKmNka0RyYWdQbGFjZWhvbGRlclxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcmFnSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9ybUVsZW1lbnREcmFnSXRlbS5pc0VsZW1lbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZWxlbWVudC1jYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJhZ0l0ZW0uZWxlbWVudFRpdGxlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcm9wLXdyYXBwZXJcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAjZm9ybUVsZW1lbnRzTGlzdD1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJmb3JtRWxlbWVudHNEcm9wTGlzdFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQsICcnKVwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImlzRWxlbWVudFByZWRpY2F0ZVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBmb3JtRWxlbWVudERyb3BJdGVtIG9mIGZvcm1FbGVtZW50c0Ryb3BMaXN0O1xuICAgICAgICAgICAgbGV0IGlkeCA9IGluZGV4XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnRcIlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1ncmFiLXN5bWJvbFwiPiYjODk0MjsmIzg5NDI7PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtbWFpblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyb3BJdGVtLmVsZW1lbnRUaXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInZWRpdC1lbGVtZW50J1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlc109XCJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIid0dWlJY29uRWRpdCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3MnXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZWRpdEVsZW1lbnQoaWR4LCBmb3JtRWxlbWVudERyb3BJdGVtKVwiXG4gICAgICAgICAgICAgICAgICA+PC9rd2lrdWktYnV0dG9uLWljb24+XG4gICAgICAgICAgICAgICAgICA8a3dpa3VpLWJ1dHRvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCIncmVtb3ZlLWVsZW1lbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVzXT1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidhY2NlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25DbG9zZUxhcmdlJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaGFwZV09XCIncm91bmRlZCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIncydcIlxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJyZW1vdmVFbGVtZW50KGlkeCwgZm9ybUVsZW1lbnREcm9wSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0RWxlbWVudChpZHgsIGZvcm1FbGVtZW50RHJvcEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJlZGl0IGVsZW1lbnQgcHJvcGVydGllc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICYjOTk5ODtcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRWxlbWVudChpZHgsIGZvcm1FbGVtZW50RHJvcEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJkZWxldGUgZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICYjMTAwMDY7XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtYm9keVwiPiA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1pZFwiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcm9wSXRlbS5lbGVtZW50SWQgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJvcEl0ZW0uZWxlbWVudENhdGVnb3J5IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LXR5cGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJvcEl0ZW0uZWxlbWVudFR5cGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV4YW1wbGUtY3VzdG9tLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAqY2RrRHJhZ1BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImZvcm1FbGVtZW50RHJvcEl0ZW0uY29tcG9uZW50XCI+IDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybU1vZGFsOyBjb250ZXh0OiBmb3JtRWxlbWVudERyb3BJdGVtXCI+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZWxlbWVudC1wcm9wZXJ0eS1lZGl0b3Itd3JhcHBlclwiPlxuICAgICAgICA8ZWxlbWVudC1jb25maWctZWRpdG9yXG4gICAgICAgICAgW2VsZW1lbnRDb25maWddPVwiZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWdcIlxuICAgICAgICAgICh1cGRhdGVFbGVtZW50KT1cImhhbmRsZU9uU2F2ZVVwZGF0ZUVsZW1lbnQoJGV2ZW50KVwiXG4gICAgICAgID48L2VsZW1lbnQtY29uZmlnLWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJidWlsZGVyLWZvb3RlclwiPiAmY29weTsgQmFpanUgRG9kaGlhLCBLd2lrSUQgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtb2RhbFwiXG4gICAgKm5nSWY9XCJmaW5hbEpTT05Db25maWdcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJveFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57eyBmb3JtVGl0bGUgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsLWNvZGUtZG93bmxvYWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRKU09OKClcIlxuICAgICAgICAgICAgICA+RG93bmxvYWQgSlNPTjwvZGl2XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibW9kYWwtY29kZS1jb3B5XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZCgpXCJcbiAgICAgICAgICAgICAgPkNvcHkgdG8gQ2xpcGJvYXJkPC9kaXZcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbC1jbG9zZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZUpTT05Qb3B1cCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQ2xvc2VcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHByZT5cbiAgICAgICAgICAgIDxjb2RlPnt7SlNPTi5zdHJpbmdpZnkoZmluYWxKU09OQ29uZmlnLCB1bmRlZmluZWQsIDIpfX08L2NvZGU+XG4gICAgICAgIDwvcHJlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULGtCQUFrQixFQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFPakQsTUFBTSxPQUFPLDJCQUEyQjtJQW9CdEM7UUFuQkEsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFjLFNBQVMsQ0FBQztRQUV4QyxrQkFBYSxHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2pELHFCQUFnQixHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hELGtCQUFhLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDbEQscUJBQWdCLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7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QUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDOzs0SUFsVVUsMkJBQTJCO2dJQUEzQiwyQkFBMkIsNERDdkJ4Qyx1NFBBNE5BO0FEM0dFO0lBREMsU0FBUztvRUFRVDtBQUdEO0lBREMsU0FBUzt1REFtQ1Q7QUFHRDtJQURDLFNBQVM7dURBQ2tDO0FBRzVDO0lBREMsU0FBUzt3REFDbUM7QUFRN0M7SUFEQyxTQUFTO2dFQUlUO0FBR0Q7SUFEQyxTQUFTOzhEQUdUO0FBR0Q7SUFEQyxTQUFTOzRFQUM4Qjs0RkEvSjdCLDJCQUEyQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSwwQkFBMEIsQ0FBQztpQkFDOUQ7MEVBMkZDLGlCQUFpQixNQVVqQixJQUFJLE1BcUNKLElBQUksTUFHSixLQUFLLE1BUUwsYUFBYSxNQU1iLFdBQVcsTUFLWCx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDZGtEcmFnLFxuICBjb3B5QXJyYXlJdGVtLFxuICBtb3ZlSXRlbUluQXJyYXlcbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBnZXRPYmplY3RGcm9tTG9jYWxTdG9yYWdlLFxuICBpc0VtcHR5VmFsdWUsXG4gIGlzTm90RW1wdHlWYWx1ZSxcbiAgbG9nTWV0aG9kLFxuICBzZXRNaXNzaW5nS2V5VmFsdWVcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBFbGVtZW50cyB9IGZyb20gXCIuL3NoYXJlZC9lbGVtZW50c1wiO1xuaW1wb3J0IHsgcmV2aXNlZFJhbmRJZCB9IGZyb20gXCIuL3NoYXJlZC9oZWxwZXJzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtZm9ybXMtYnVpbGRlclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2J1aWxkZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCJzaGFyZWQvc2hhcmVkLnNjc3NcIiwgXCIuL2J1aWxkZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZm9ybUtleTogc3RyaW5nID0gXCJcIjtcbiAgZm9ybVRpdGxlOiBzdHJpbmcgPSBcIlwiO1xuICBidWlsZGVyRm9ybUdyb3VwOiBGb3JtR3JvdXAgPSB1bmRlZmluZWQ7XG5cbiAgYmFzaWNFbGVtZW50czogQXJyYXk8YW55PiA9IG5ldyBFbGVtZW50cygpLmJhc2ljO1xuICBkb2N1bWVudEVsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkuZG9jdW1lbnRzO1xuICBvdGhlckVsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkub3RoZXJzO1xuICB0ZW1wbGF0ZUVsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkudGVtcGxhdGVzO1xuXG4gIGVsZW1lbnRzTWFwcGluZzogYW55ID0gbmV3IEVsZW1lbnRzKCkuZWxlbWVudE1hcHBpbmc7XG5cbiAgZm9ybUVsZW1lbnRzRHJhZ0xpc3Q6IEFycmF5PGFueT4gPSBbXTtcbiAgZm9ybUVsZW1lbnRzRHJvcExpc3Q6IEFycmF5PGFueT4gPSBbXTtcblxuICBlbGVtZW50RWRpdG9yRWxlbWVudENvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuXG4gIGZpbmFsSlNPTkNvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuICBKU09OID0gSlNPTjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGZvcm1LZXk6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZm9ybVRpdGxlOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybURyb3BDb25maWcgPSBnZXRPYmplY3RGcm9tTG9jYWxTdG9yYWdlKFwiYnVpbGRlckZvcm1Db25maWdcIik7XG5cbiAgICBpZiAoaXNOb3RFbXB0eVZhbHVlKGZvcm1Ecm9wQ29uZmlnKSkge1xuICAgICAgdGhpcy5mb3JtS2V5ID0gZm9ybURyb3BDb25maWcua2V5O1xuICAgICAgdGhpcy5mb3JtVGl0bGUgPSBmb3JtRHJvcENvbmZpZy50aXRsZTtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSBmb3JtRHJvcENvbmZpZy5maWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgICAgICBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9IHRoaXMuZWxlbWVudHNNYXBwaW5nLmJhc2ljLmluY2x1ZGVzKGl0ZW0uZWxlbWVudFR5cGUpXG4gICAgICAgICAgPyBcImJhc2ljXCJcbiAgICAgICAgICA6IHRoaXMuZWxlbWVudHNNYXBwaW5nLmRvY3VtZW50cy5pbmNsdWRlcyhpdGVtLmVsZW1lbnRUeXBlKVxuICAgICAgICAgID8gXCJkb2N1bWVudFwiXG4gICAgICAgICAgOiBcIm90aGVyc1wiO1xuICAgICAgICBpdGVtLmlzRWxlbWVudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRGaWx0ZXJlZCA9XG4gICAgICAgICAgaXRlbS5lbGVtZW50Q2F0ZWdvcnkgPT09IFwiYmFzaWNcIlxuICAgICAgICAgICAgPyB0aGlzLmJhc2ljRWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gaXRlbS5lbGVtZW50VHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGl0ZW0uZWxlbWVudENhdGVnb3J5ID09PSBcImRvY3VtZW50XCJcbiAgICAgICAgICAgID8gdGhpcy5kb2N1bWVudEVsZW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQuZWxlbWVudFR5cGUgPT09IGl0ZW0uZWxlbWVudFR5cGVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9PT0gXCJvdGhlcnNcIlxuICAgICAgICAgICAgPyB0aGlzLm90aGVyRWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gaXRlbS5lbGVtZW50VHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgaXRlbS5lbGVtZW50VGl0bGUgPSBpc0VtcHR5VmFsdWUoZWxlbWVudEZpbHRlcmVkKVxuICAgICAgICAgID8gaXRlbS5lbGVtZW50Q2F0ZWdvcnkgKyBcIjo6XCIgKyBpdGVtLmVsZW1lbnRUeXBlXG4gICAgICAgICAgOiBlbGVtZW50RmlsdGVyZWQuZWxlbWVudFRpdGxlO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QgPSBmb3JtRmllbGRzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QgPSBbXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJCYXNpYyBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLmJhc2ljRWxlbWVudHMsXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJEb2N1bWVudCBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLmRvY3VtZW50RWxlbWVudHMsXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJPdGhlciBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLm90aGVyRWxlbWVudHNcbiAgICBdO1xuXG4gICAgZm9yIChsZXQgZm9ybUVsZW1lbnRzRHJhZ0l0ZW0gb2YgdGhpcy5mb3JtRWxlbWVudHNEcmFnTGlzdCkge1xuICAgICAgZm9ybUVsZW1lbnRzRHJhZ0l0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9uQ2hhbmdlKFxuICAgIGV2ZW50OiB7IHRhcmdldDogeyB2YWx1ZTogYW55IH0gfSxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGtleTogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGlkeDogYW55XG4gICkge1xuICAgIGNvbnN0IF92YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIC8vIERPTSBFdmVudCBIYW5kbGVyc1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZUdldEtleVZhbHVlKGU6IGFueSkge1xuICAgIHRoaXMuYnVpbGRlckZvcm1Hcm91cC5wYXRjaFZhbHVlKFxuICAgICAge1xuICAgICAgICBbZS5rZXldOiBlLnZhbHVlXG4gICAgICB9LFxuICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICApO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBkcm9wKGV2ZW50OiBhbnksIGVsZW1lbnRDYXRlZ29yeTogc3RyaW5nKSB7XG4gICAgLy8gbGV0IGl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyICE9PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiY29weWluZ1wiKTtcbiAgICAgIGlmIChldmVudC5pdGVtLmRhdGEuaXNFbGVtZW50KSB7XG4gICAgICAgIC8vIENsb25lIHRoZSBpdGVtIHRoYXQgd2FzIGRyb3BwZWQuXG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtSW5kZXggPSB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0LmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBpdGVtLmVsZW1lbnRJZCA9PT0gZXZlbnQuaXRlbS5kYXRhLmVsZW1lbnRJZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29weUFycmF5SXRlbShcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0LFxuICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QsXG4gICAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleCxcbiAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIm1vdmluZ1wiKTtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGV4aXQoZXZlbnQ6IGFueSwgZWxlbWVudENhdGVnb3J5OiBzdHJpbmcpIHt9XG5cbiAgQGxvZ01ldGhvZFxuICBlbnRlcihldmVudDogYW55LCBlbGVtZW50Q2F0ZWdvcnk6IHN0cmluZykge31cblxuICAvKiogUHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgb25seSBhbGxvd3MgaXNFbGVtZW50OiB0cnVlIGl0ZW1zIHRvIGJlIGRyb3BwZWQgaW50byBhIGxpc3QuICovXG4gIGlzRWxlbWVudFByZWRpY2F0ZShpdGVtOiBDZGtEcmFnPGFueT4pIHtcbiAgICByZXR1cm4gaXRlbS5kYXRhLmlzRWxlbWVudDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcmVtb3ZlRWxlbWVudChpZHg6IG51bWJlciwgaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3Quc3BsaWNlKGlkeCwgMSk7XG4gICAgdGhpcy5lbGVtZW50RWRpdG9yRWxlbWVudENvbmZpZyA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZWRpdEVsZW1lbnQoaWR4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHRoaXMuZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWcgPSBpdGVtO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPblNhdmVVcGRhdGVFbGVtZW50KGV2ZW50OiBhbnkpIHt9XG5cbiAgaGFuZGxlT25DbGlja1NhdmVGb3JtcyhldmVudDogYW55KSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybUtleS52YWx1ZSkpIHtcbiAgICAgIHdpbmRvdy5hbGVydChcIlBsZWFzZSBwcm92aWRlIEZvcm0gS2V5XCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1LZXkgPSB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybUtleS52YWx1ZTtcbiAgICAgIHRoaXMuZm9ybUtleSA9IHRoaXMuZm9ybUtleS5yZXBsYWNlKC9cXHMvZywgXCJfXCIpLnRvTG9jYWxlVXBwZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybVRpdGxlLnZhbHVlKSkge1xuICAgICAgd2luZG93LmFsZXJ0KFwiUGxlYXNlIHByb3ZpZGUgRm9ybSBUaXRsZVwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtVGl0bGUgPSB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybVRpdGxlLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBmaW5hbEZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHNEcm9wTGlzdCkpO1xuICAgIGZpbmFsRmllbGRzID0gZmluYWxGaWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICBpdGVtID0gc2V0TWlzc2luZ0tleVZhbHVlKGl0ZW0sIFwidHlwZVwiLCBpdGVtLmVsZW1lbnRUeXBlKTtcblxuICAgICAgaWYgKGl0ZW0uZWxlbWVudFR5cGUuc3RhcnRzV2l0aChcIk5BPD5cIiwgMCkpIHtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudElkO1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50VHlwZTtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFRpdGxlO1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50Q2F0ZWdvcnk7XG4gICAgICAgIGRlbGV0ZSBpdGVtLmlzRWxlbWVudDtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRJZDtcbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRUeXBlO1xuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFRpdGxlO1xuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudENhdGVnb3J5O1xuICAgICAgZGVsZXRlIGl0ZW0uaXNFbGVtZW50O1xuXG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoaXRlbSwgXCJkZWZhdWx0XCIpKSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhpdGVtLmRlZmF1bHQsIFwidmFsdWVcIikpIHtcbiAgICAgICAgICBpZiAoaXRlbS5kZWZhdWx0LnZhbHVlKSB7XG4gICAgICAgICAgICBpdGVtLmRlZmF1bHQgPSB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIk9CSkVDVFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIkFMTF9GT1JNU19EQVRBXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBTdHJpbmcoYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgaXNfdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbXCJPTl9JTklUXCJdLFxuICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlZBTFVFX0NIRUNLXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiT0JKRUNUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiQUxMX0ZPUk1TX0RBVEFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogeyBrZXk6IFwiSVNfTk9UX0VNUFRZXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRLZXk6IFN0cmluZyhgJHtpdGVtLmtleX1gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJBTExfRk9STVNfREFUQVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJC4ke3RoaXMuZm9ybUtleX0uJHtpdGVtLmtleX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLmRlZmF1bHQgPSB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmFsRm9ybUNvbmZpZyA9IHtcbiAgICAgIGtleTogdGhpcy5mb3JtS2V5LFxuICAgICAgdGl0bGU6IHRoaXMuZm9ybVRpdGxlLFxuICAgICAgZmllbGRzOiBmaW5hbEZpZWxkc1xuICAgIH07XG5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInJlbmRlcmVyRm9ybUNvbmZpZ1wiLCBKU09OLnN0cmluZ2lmeShmaW5hbEZvcm1Db25maWcpKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgIFwiYnVpbGRlckZvcm1Db25maWdcIixcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAga2V5OiB0aGlzLmZvcm1LZXksXG4gICAgICAgIHRpdGxlOiB0aGlzLmZvcm1UaXRsZSxcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm1FbGVtZW50c0Ryb3BMaXN0XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZpbmFsSlNPTkNvbmZpZyA9IGZpbmFsRm9ybUNvbmZpZztcbiAgICBjb25zb2xlLmxvZyhmaW5hbEZvcm1Db25maWcpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QpO1xuICB9XG5cbiAgY29weVRvQ2xpcGJvYXJkKCkge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KEpTT04uc3RyaW5naWZ5KHRoaXMuZmluYWxKU09OQ29uZmlnKSk7XG4gICAgYWxlcnQoXCJKU09OIENvbmZpZyBpcyBjb3BpZWRcIik7XG4gIH1cblxuICBkb3dubG9hZEpTT04oKSB7XG4gICAgY29uc3QgREFUQSA9IHRoaXMuZmluYWxKU09OQ29uZmlnO1xuICAgIGxldCB0eXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgY29uc3QgRklMRV9OQU1FID0gYCR7dGhpcy5mb3JtS2V5fS5qc29uYDtcblxuICAgIGxldCBibG9iID0gbmV3IEJsb2IoW0RBVEFdLCB7dHlwZX0pO1xuICAgIGxldCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgIGxpbmsuZG93bmxvYWQgPSBGSUxFX05BTUU7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG5cbiAgY2xvc2VKU09OUG9wdXAoKSB7XG4gICAgdGhpcy5maW5hbEpTT05Db25maWcgPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidWlsZGVyLXRpdGxlXCI+S3dpa0lEIEZvcm0gQnVpbGRlcjwvZGl2PlxuICAgICAgPGZvcm1cbiAgICAgICAgW2Zvcm1Hcm91cF09XCJidWlsZGVyRm9ybUdyb3VwXCJcbiAgICAgICAgY2xhc3M9XCJidWlsZGVyLWZvcm1cIlxuICAgICAgPlxuICAgICAgICA8a3dpa3VpLWlucHV0XG4gICAgICAgICAgW2xhYmVsXT1cIidGb3JtIEtleSdcIlxuICAgICAgICAgIFtpZF09XCInZm9ybV9rZXknXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Zvcm1LZXknXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiYnVpbGRlckZvcm1Hcm91cC5jb250cm9sc1snZm9ybUtleSddXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIGVudGVyIGEgRm9ybSBLZXknXCJcbiAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FzZV09XCIndXBwZXInXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgKGdldEtleVZhbHVlKT1cImhhbmRsZUdldEtleVZhbHVlKCRldmVudClcIlxuICAgICAgICA+PC9rd2lrdWktaW5wdXQ+XG4gICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICBbbGFiZWxdPVwiJ0Zvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbaWRdPVwiJ2Zvcm1fdGl0bGUnXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Zvcm1UaXRsZSdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJidWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzWydmb3JtVGl0bGUnXVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciBhIEZvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FzZV09XCInZGVmYXVsdCdcIlxuICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAoZ2V0S2V5VmFsdWUpPVwiaGFuZGxlR2V0S2V5VmFsdWUoJGV2ZW50KVwiXG4gICAgICAgID48L2t3aWt1aS1pbnB1dD5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWJ1aWxkZXJGb3JtR3JvdXAudmFsaWRcIlxuICAgICAgICAgIGlkPVwic2F2ZV9mb3JtX2J0blwiXG4gICAgICAgICAgbGFiZWw9XCJTYXZlIEZvcm1cIlxuICAgICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgIGNsYXNzPVwiXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgICAgaWNvblJpZ2h0PVwiXCJcbiAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja1NhdmVGb3JtcygkZXZlbnQpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcmFnLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcmFnXCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZm9ybUVsZW1lbnRzRHJhZ0xpc3RcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2Zvcm1FbGVtZW50c0xpc3RdXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiZXhpdCgkZXZlbnQsICdvdGhlcicpXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cImVudGVyKCRldmVudCwgJ290aGVyJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZvcm1FbGVtZW50RHJhZ0l0ZW0gb2YgZm9ybUVsZW1lbnRzRHJhZ0xpc3RcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtRWxlbWVudERyYWdJdGVtLmlzRWxlbWVudFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnQtZHJhZ1wiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJmb3JtRWxlbWVudERyYWdJdGVtXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICYjODk0MjsmIzg5NDI7Jm5ic3A7Jm5ic3A7e3sgZm9ybUVsZW1lbnREcmFnSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZm9ybUVsZW1lbnREcmFnSXRlbS5jb21wb25lbnRcIj48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnQtZHJhZ1wiXG4gICAgICAgICAgICAgICAgKmNka0RyYWdQbGFjZWhvbGRlclxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcmFnSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9ybUVsZW1lbnREcmFnSXRlbS5pc0VsZW1lbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZWxlbWVudC1jYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJhZ0l0ZW0uZWxlbWVudFRpdGxlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50cy1kcm9wLXdyYXBwZXJcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAjZm9ybUVsZW1lbnRzTGlzdD1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJmb3JtRWxlbWVudHNEcm9wTGlzdFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQsICcnKVwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImlzRWxlbWVudFByZWRpY2F0ZVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBmb3JtRWxlbWVudERyb3BJdGVtIG9mIGZvcm1FbGVtZW50c0Ryb3BMaXN0O1xuICAgICAgICAgICAgbGV0IGlkeCA9IGluZGV4XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnRcIlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1ncmFiLXN5bWJvbFwiPiYjODk0MjsmIzg5NDI7PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtbWFpblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyb3BJdGVtLmVsZW1lbnRUaXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2VkaXQtZWxlbWVudCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZXNdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIididXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCIndHVpSWNvbkVkaXQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzJ1wiXG4gICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImVkaXRFbGVtZW50KGlkeCwgZm9ybUVsZW1lbnREcm9wSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCIncmVtb3ZlLWVsZW1lbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVzXT1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidhY2NlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25DbG9zZUxhcmdlJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaGFwZV09XCIncm91bmRlZCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIncydcIlxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJyZW1vdmVFbGVtZW50KGlkeCwgZm9ybUVsZW1lbnREcm9wSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEVsZW1lbnQoaWR4LCBmb3JtRWxlbWVudERyb3BJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiZWRpdCBlbGVtZW50IHByb3BlcnRpZXNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAmIzk5OTg7XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUVsZW1lbnQoaWR4LCBmb3JtRWxlbWVudERyb3BJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiZGVsZXRlIGVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAmIzEwMDA2O1xuICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWJvZHlcIj4gPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtaWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJvcEl0ZW0uZWxlbWVudElkIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWNhdGVnb3J5XCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyb3BJdGVtLmVsZW1lbnRDYXRlZ29yeSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC10eXBlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyb3BJdGVtLmVsZW1lbnRUeXBlIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJleGFtcGxlLWN1c3RvbS1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgKmNka0RyYWdQbGFjZWhvbGRlclxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJmb3JtRWxlbWVudERyb3BJdGVtLmNvbXBvbmVudFwiPiA8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1Nb2RhbDsgY29udGV4dDogZm9ybUVsZW1lbnREcm9wSXRlbVwiPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImVsZW1lbnQtcHJvcGVydHktZWRpdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgPGVsZW1lbnQtY29uZmlnLWVkaXRvclxuICAgICAgICAgIFtlbGVtZW50Q29uZmlnXT1cImVsZW1lbnRFZGl0b3JFbGVtZW50Q29uZmlnXCJcbiAgICAgICAgICAodXBkYXRlRWxlbWVudCk9XCJoYW5kbGVPblNhdmVVcGRhdGVFbGVtZW50KCRldmVudClcIlxuICAgICAgICA+PC9lbGVtZW50LWNvbmZpZy1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1mb290ZXJcIj4gJmNvcHk7IEJhaWp1IERvZGhpYSwgS3dpa0lEIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibW9kYWxcIlxuICAgICpuZ0lmPVwiZmluYWxKU09OQ29uZmlnXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib3hcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkaW5nXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3sgZm9ybVRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbC1jb2RlLWRvd25sb2FkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkSlNPTigpXCJcbiAgICAgICAgICAgICAgPkRvd25sb2FkIEpTT048L2RpdlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsLWNvZGUtY29weVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoKVwiXG4gICAgICAgICAgICAgID5Db3B5IHRvIENsaXBib2FyZDwvZGl2XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibW9kYWwtY2xvc2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VKU09OUG9wdXAoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwcmU+XG4gICAgICAgICAgICA8Y29kZT57e0pTT04uc3RyaW5naWZ5KGZpbmFsSlNPTkNvbmZpZywgdW5kZWZpbmVkLCAyKX19PC9jb2RlPlxuICAgICAgICA8L3ByZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -2,7 +2,7 @@ import { DragDropModule } from "@angular/cdk/drag-drop";
|
|
|
2
2
|
import { CommonModule } from "@angular/common";
|
|
3
3
|
import { NgModule } from "@angular/core";
|
|
4
4
|
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
5
|
-
import {
|
|
5
|
+
import { KwikUIButtonModule, KwikUIInputModule, KwikUIInputNumberModule, KwikUIInputSelectModule, KwikUITableModule, KwikUITextareaModule } from "kwikui";
|
|
6
6
|
import { KwikIDFormsBuilderComponent } from "./builder.component";
|
|
7
7
|
import { BasicElementConfigEditor } from "./element-config-editor/editors/basic-element-config.editor.component";
|
|
8
8
|
import { BasicCheckboxConfigEditor } from "./element-config-editor/editors/basic/checkbox-config.editor.component";
|
|
@@ -11,6 +11,7 @@ import { BasicNumberConfigEditor } from "./element-config-editor/editors/basic/n
|
|
|
11
11
|
import { BasicOtpConfigEditor } from "./element-config-editor/editors/basic/otp-config.editor.component";
|
|
12
12
|
import { BasicPhoneConfigEditor } from "./element-config-editor/editors/basic/phone-config.editor.component";
|
|
13
13
|
import { BasicRadioConfigEditor } from "./element-config-editor/editors/basic/radio-config.editor.component";
|
|
14
|
+
import { BasicSelectConfigEditor } from "./element-config-editor/editors/basic/select-config.editor.component";
|
|
14
15
|
import { BasicTextConfigEditor } from "./element-config-editor/editors/basic/text-config.editor.component";
|
|
15
16
|
import { DocumentElementConfigEditor } from "./element-config-editor/editors/document-element-config.editor.component";
|
|
16
17
|
import { DocumentAadhaarNumberConfigEditor } from "./element-config-editor/editors/document/aadhaar-number-config.editor.component";
|
|
@@ -19,7 +20,6 @@ import { OtherElementConfigEditor } from "./element-config-editor/editors/other-
|
|
|
19
20
|
import { OtherHTMLConfigEditor } from "./element-config-editor/editors/other/html-config.editor.component";
|
|
20
21
|
import { OtherTitleConfigEditor } from "./element-config-editor/editors/other/title-config.editor.component";
|
|
21
22
|
import { ElementConfigEditor } from "./element-config-editor/element-config-editor.component";
|
|
22
|
-
import { BasicDropdownWithSearchConfigEditor } from "./element-config-editor/editors/basic/dropdown-with-search-config.editor.component";
|
|
23
23
|
import * as i0 from "@angular/core";
|
|
24
24
|
export class KwikIDFormBuilderModule {
|
|
25
25
|
}
|
|
@@ -29,7 +29,7 @@ export class KwikIDFormBuilderModule {
|
|
|
29
29
|
BasicElementConfigEditor,
|
|
30
30
|
BasicTextConfigEditor,
|
|
31
31
|
BasicRadioConfigEditor,
|
|
32
|
-
|
|
32
|
+
BasicSelectConfigEditor,
|
|
33
33
|
BasicNumberConfigEditor,
|
|
34
34
|
BasicCheckboxConfigEditor,
|
|
35
35
|
BasicDateConfigEditor,
|
|
@@ -44,11 +44,10 @@ export class KwikIDFormBuilderModule {
|
|
|
44
44
|
FormsModule,
|
|
45
45
|
ReactiveFormsModule,
|
|
46
46
|
DragDropModule,
|
|
47
|
-
KwikUIButtonIconModule,
|
|
48
47
|
KwikUIButtonModule,
|
|
49
48
|
KwikUIInputModule,
|
|
50
49
|
KwikUIInputNumberModule,
|
|
51
|
-
|
|
50
|
+
KwikUIInputSelectModule,
|
|
52
51
|
KwikUITableModule,
|
|
53
52
|
KwikUITextareaModule], exports: [KwikIDFormsBuilderComponent] });
|
|
54
53
|
/** @nocollapse */ KwikIDFormBuilderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormBuilderModule, providers: [], imports: [[
|
|
@@ -56,11 +55,10 @@ export class KwikIDFormBuilderModule {
|
|
|
56
55
|
FormsModule,
|
|
57
56
|
ReactiveFormsModule,
|
|
58
57
|
DragDropModule,
|
|
59
|
-
KwikUIButtonIconModule,
|
|
60
58
|
KwikUIButtonModule,
|
|
61
59
|
KwikUIInputModule,
|
|
62
60
|
KwikUIInputNumberModule,
|
|
63
|
-
|
|
61
|
+
KwikUIInputSelectModule,
|
|
64
62
|
KwikUITableModule,
|
|
65
63
|
KwikUITextareaModule
|
|
66
64
|
]] });
|
|
@@ -73,7 +71,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
73
71
|
BasicElementConfigEditor,
|
|
74
72
|
BasicTextConfigEditor,
|
|
75
73
|
BasicRadioConfigEditor,
|
|
76
|
-
|
|
74
|
+
BasicSelectConfigEditor,
|
|
77
75
|
BasicNumberConfigEditor,
|
|
78
76
|
BasicCheckboxConfigEditor,
|
|
79
77
|
BasicDateConfigEditor,
|
|
@@ -91,11 +89,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
91
89
|
FormsModule,
|
|
92
90
|
ReactiveFormsModule,
|
|
93
91
|
DragDropModule,
|
|
94
|
-
KwikUIButtonIconModule,
|
|
95
92
|
KwikUIButtonModule,
|
|
96
93
|
KwikUIInputModule,
|
|
97
94
|
KwikUIInputNumberModule,
|
|
98
|
-
|
|
95
|
+
KwikUIInputSelectModule,
|
|
99
96
|
KwikUITableModule,
|
|
100
97
|
KwikUITextareaModule
|
|
101
98
|
],
|
|
@@ -103,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
103
100
|
exports: [KwikIDFormsBuilderComponent]
|
|
104
101
|
}]
|
|
105
102
|
}] });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3JCLE1BQU0sUUFBUSxDQUFDO0FBQ2hCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ2pILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGlGQUFpRixDQUFDO0FBQ3BJLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDZFQUE2RSxDQUFDO0FBQzVILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOztBQXFDOUYsTUFBTSxPQUFPLHVCQUF1Qjs7d0lBQXZCLHVCQUF1Qjt5SUFBdkIsdUJBQXVCLGlCQWpDaEMsMkJBQTJCO1FBQzNCLG1CQUFtQjtRQUNuQix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLHNCQUFzQjtRQUN0Qix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHNCQUFzQjtRQUN0QiwyQkFBMkI7UUFDM0IsaUNBQWlDO1FBQ2pDLDZCQUE2QjtRQUM3Qix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLHNCQUFzQixhQUd0QixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLGlCQUFpQjtRQUNqQixvQkFBb0IsYUFHWiwyQkFBMkI7eUlBRTFCLHVCQUF1QixhQUh2QixFQUFFLFlBWko7WUFDUCxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGlCQUFpQjtZQUNqQix1QkFBdUI7WUFDdkIsdUJBQXVCO1lBQ3ZCLGlCQUFpQjtZQUNqQixvQkFBb0I7U0FDckI7NEZBSVUsdUJBQXVCO2tCQW5DbkMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLDJCQUEyQjt3QkFDM0IsaUNBQWlDO3dCQUNqQyw2QkFBNkI7d0JBQzdCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsaUJBQWlCO3dCQUNqQixvQkFBb0I7cUJBQ3JCO29CQUNELFNBQVMsRUFBRSxFQUFFO29CQUNiLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICBLd2lrVUlCdXR0b25Nb2R1bGUsXG4gIEt3aWtVSUlucHV0TW9kdWxlLFxuICBLd2lrVUlJbnB1dE51bWJlck1vZHVsZSxcbiAgS3dpa1VJSW5wdXRTZWxlY3RNb2R1bGUsXG4gIEt3aWtVSVRhYmxlTW9kdWxlLFxuICBLd2lrVUlUZXh0YXJlYU1vZHVsZVxufSBmcm9tIFwia3dpa3VpXCI7XG5pbXBvcnQgeyBLd2lrSURGb3Jtc0J1aWxkZXJDb21wb25lbnQgfSBmcm9tIFwiLi9idWlsZGVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQmFzaWNFbGVtZW50Q29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMtZWxlbWVudC1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQmFzaWNDaGVja2JveENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL2NoZWNrYm94LWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY0RhdGVDb25maWdFZGl0b3IgfSBmcm9tIFwiLi9lbGVtZW50LWNvbmZpZy1lZGl0b3IvZWRpdG9ycy9iYXNpYy9kYXRlLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY051bWJlckNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL251bWJlci1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQmFzaWNPdHBDb25maWdFZGl0b3IgfSBmcm9tIFwiLi9lbGVtZW50LWNvbmZpZy1lZGl0b3IvZWRpdG9ycy9iYXNpYy9vdHAtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljUGhvbmVDb25maWdFZGl0b3IgfSBmcm9tIFwiLi9lbGVtZW50LWNvbmZpZy1lZGl0b3IvZWRpdG9ycy9iYXNpYy9waG9uZS1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQmFzaWNSYWRpb0NvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3JhZGlvLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY1NlbGVjdENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3NlbGVjdC1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQmFzaWNUZXh0Q29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvdGV4dC1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRG9jdW1lbnRFbGVtZW50Q29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvZG9jdW1lbnQtZWxlbWVudC1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRG9jdW1lbnRBYWRoYWFyTnVtYmVyQ29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvZG9jdW1lbnQvYWFkaGFhci1udW1iZXItY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IERvY3VtZW50UGFuTnVtYmVyQ29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvZG9jdW1lbnQvcGFuLW51bWJlci1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgT3RoZXJFbGVtZW50Q29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvb3RoZXItZWxlbWVudC1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgT3RoZXJIVE1MQ29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvb3RoZXIvaHRtbC1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgT3RoZXJUaXRsZUNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL290aGVyL3RpdGxlLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBFbGVtZW50Q29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VsZW1lbnQtY29uZmlnLWVkaXRvci5jb21wb25lbnRcIjtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgS3dpa0lERm9ybXNCdWlsZGVyQ29tcG9uZW50LFxuICAgIEVsZW1lbnRDb25maWdFZGl0b3IsXG4gICAgQmFzaWNFbGVtZW50Q29uZmlnRWRpdG9yLFxuICAgIEJhc2ljVGV4dENvbmZpZ0VkaXRvcixcbiAgICBCYXNpY1JhZGlvQ29uZmlnRWRpdG9yLFxuICAgIEJhc2ljU2VsZWN0Q29uZmlnRWRpdG9yLFxuICAgIEJhc2ljTnVtYmVyQ29uZmlnRWRpdG9yLFxuICAgIEJhc2ljQ2hlY2tib3hDb25maWdFZGl0b3IsXG4gICAgQmFzaWNEYXRlQ29uZmlnRWRpdG9yLFxuICAgIEJhc2ljT3RwQ29uZmlnRWRpdG9yLFxuICAgIEJhc2ljUGhvbmVDb25maWdFZGl0b3IsXG4gICAgRG9jdW1lbnRFbGVtZW50Q29uZmlnRWRpdG9yLFxuICAgIERvY3VtZW50QWFkaGFhck51bWJlckNvbmZpZ0VkaXRvcixcbiAgICBEb2N1bWVudFBhbk51bWJlckNvbmZpZ0VkaXRvcixcbiAgICBPdGhlckVsZW1lbnRDb25maWdFZGl0b3IsXG4gICAgT3RoZXJIVE1MQ29uZmlnRWRpdG9yLFxuICAgIE90aGVyVGl0bGVDb25maWdFZGl0b3JcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIEt3aWtVSUJ1dHRvbk1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dE1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dE51bWJlck1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dFNlbGVjdE1vZHVsZSxcbiAgICBLd2lrVUlUYWJsZU1vZHVsZSxcbiAgICBLd2lrVUlUZXh0YXJlYU1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtdLFxuICBleHBvcnRzOiBbS3dpa0lERm9ybXNCdWlsZGVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURGb3JtQnVpbGRlck1vZHVsZSB7fVxuIl19
|
package/esm2015/lib/builder/element-config-editor/editors/basic/radio-config.editor.component.js
CHANGED
|
@@ -129,7 +129,7 @@ export class BasicRadioConfigEditor {
|
|
|
129
129
|
></kwikui-input>
|
|
130
130
|
</div>
|
|
131
131
|
<div class="form-group">
|
|
132
|
-
<kwikui-select
|
|
132
|
+
<kwikui-input-select
|
|
133
133
|
[options]="[true, false]"
|
|
134
134
|
[label]="'disabled'"
|
|
135
135
|
[id]="'basic-radio-config-disabled'"
|
|
@@ -144,7 +144,7 @@ export class BasicRadioConfigEditor {
|
|
|
144
144
|
[disabled]="false"
|
|
145
145
|
[invalid]="false"
|
|
146
146
|
[placeholder]="'Please select either true or false'"
|
|
147
|
-
></kwikui-select
|
|
147
|
+
></kwikui-input-select>
|
|
148
148
|
</div>
|
|
149
149
|
<div class="form-group">
|
|
150
150
|
<kwikui-input
|
|
@@ -204,7 +204,7 @@ export class BasicRadioConfigEditor {
|
|
|
204
204
|
<fieldset>
|
|
205
205
|
<legend class="form-group-title">Miscellaneous</legend>
|
|
206
206
|
<div class="form-group">
|
|
207
|
-
<kwikui-select
|
|
207
|
+
<kwikui-input-select
|
|
208
208
|
[options]="['horizontal', 'vertical']"
|
|
209
209
|
[label]="'Orientation'"
|
|
210
210
|
[id]="'basic-radio-config-orientation'"
|
|
@@ -218,12 +218,12 @@ export class BasicRadioConfigEditor {
|
|
|
218
218
|
[disabled]="false"
|
|
219
219
|
[invalid]="false"
|
|
220
220
|
[placeholder]="'Please select orientation'"
|
|
221
|
-
></kwikui-select
|
|
221
|
+
></kwikui-input-select>
|
|
222
222
|
</div>
|
|
223
223
|
</fieldset>
|
|
224
224
|
</div>
|
|
225
225
|
</form>
|
|
226
|
-
`, isInline: true, styles: ["\n .form-array-actions {\n display: flex;\n flex-direction: row;\n align-content: center;\n justify-content: center;\n align-items: center;\n gap: 1rem;\n }\n "], components: [{ type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "size", "icon", "properties"], outputs: ["getKeyValue"] }, { type: i1.
|
|
226
|
+
`, isInline: true, styles: ["\n .form-array-actions {\n display: flex;\n flex-direction: row;\n align-content: center;\n justify-content: center;\n align-items: center;\n gap: 1rem;\n }\n "], components: [{ type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "size", "icon", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIInputSelectComponent, selector: "kwikui-input-select", inputs: ["label", "id", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "options", "size", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
227
227
|
__decorate([
|
|
228
228
|
logMethod
|
|
229
229
|
], BasicRadioConfigEditor.prototype, "ngOnInit", null);
|
|
@@ -278,7 +278,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
278
278
|
></kwikui-input>
|
|
279
279
|
</div>
|
|
280
280
|
<div class="form-group">
|
|
281
|
-
<kwikui-select
|
|
281
|
+
<kwikui-input-select
|
|
282
282
|
[options]="[true, false]"
|
|
283
283
|
[label]="'disabled'"
|
|
284
284
|
[id]="'basic-radio-config-disabled'"
|
|
@@ -293,7 +293,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
293
293
|
[disabled]="false"
|
|
294
294
|
[invalid]="false"
|
|
295
295
|
[placeholder]="'Please select either true or false'"
|
|
296
|
-
></kwikui-select
|
|
296
|
+
></kwikui-input-select>
|
|
297
297
|
</div>
|
|
298
298
|
<div class="form-group">
|
|
299
299
|
<kwikui-input
|
|
@@ -353,7 +353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
353
353
|
<fieldset>
|
|
354
354
|
<legend class="form-group-title">Miscellaneous</legend>
|
|
355
355
|
<div class="form-group">
|
|
356
|
-
<kwikui-select
|
|
356
|
+
<kwikui-input-select
|
|
357
357
|
[options]="['horizontal', 'vertical']"
|
|
358
358
|
[label]="'Orientation'"
|
|
359
359
|
[id]="'basic-radio-config-orientation'"
|
|
@@ -367,7 +367,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
367
367
|
[disabled]="false"
|
|
368
368
|
[invalid]="false"
|
|
369
369
|
[placeholder]="'Please select orientation'"
|
|
370
|
-
></kwikui-select
|
|
370
|
+
></kwikui-input-select>
|
|
371
371
|
</div>
|
|
372
372
|
</fieldset>
|
|
373
373
|
</div>
|
|
@@ -393,4 +393,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
393
393
|
}], updateElement: [{
|
|
394
394
|
type: Output
|
|
395
395
|
}], ngOnInit: [], ngOnChanges: [], createBasicRadioFormGroup: [], handleOnSave: [], createOptionConfigFormGroup: [], addOption: [], removeOption: [] } });
|
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tY29uZmlnLmVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3JhZGlvLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUE2SS9ELE1BQU0sT0FBTyxzQkFBc0I7SUF1QmpDO1FBdEJTLGVBQVUsR0FBRztZQUNwQixLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBRSxLQUFLO1lBQ2YsV0FBVyxFQUFFLEVBQUU7U0FDaEIsQ0FBQztRQUdGLDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUdsQyxrQkFBYSxHQUFRO1lBQ25CLFVBQVUsRUFBRTtnQkFDVixXQUFXLEVBQUUsWUFBWTthQUMxQjtZQUNELE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUdGLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV4Qyx3QkFBbUIsR0FBYyxTQUFTLENBQUM7SUFFNUIsQ0FBQztJQUdoQixRQUFRO1FBQ04sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUdELFdBQVcsQ0FBQyxPQUFzQjs7UUFDaEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFD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eUJBQXlCLE1BMEJ6QixZQUFZLE1BYVosMkJBQTJCLE1BZ0IzQixTQUFTLE1BTVQsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgbG9nTWV0aG9kLCBzZXRNaXNzaW5nS2V5VmFsdWUgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImJhc2ljLXJhZGlvLWNvbmZpZy1lZGl0b3JcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImJhc2ljUmFkaW9Gb3JtR3JvdXBcIj5cbiAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImZvcm0tZ3JvdXAtdGl0bGVcIj5PcHRpb25zPC9sZWdlbmQ+XG4gICAgICAgIDxkaXYgZm9ybUFycmF5TmFtZT1cIm9wdGlvbnNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNBcnJheS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGt3aWt1aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidMYWJlbCdcIlxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidiYXNpYy1yYWRpby1jb25maWctcGxhY2Vob2xkZXInXCJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIidsYWJlbCdcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIlxuICAgICAgICAgICAgICAgICAgICBiYXNpY1JhZGlvRm9ybUdyb3VwWydjb250cm9scyddLm9wdGlvbnNbJ2NvbnRyb2xzJ11baV1bXG4gICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyb2xzJ1xuICAgICAgICAgICAgICAgICAgICBdLmxhYmVsXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIGVudGVyIHlvdXIgbGFiZWwnXCJcbiAgICAgICAgICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbaW52YWxpZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbY2FzZV09XCInZGVmYXVsdCdcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgID48L2t3aWt1aS1pbnB1dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGt3aWt1aS1zZWxlY3QtY29tYm9ib3hcbiAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlt0cnVlLCBmYWxzZV1cIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidkaXNhYmxlZCdcIlxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidiYXNpYy1yYWRpby1jb25maWctZGlzYWJsZWQnXCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiXG4gICAgICAgICAgICAgICAgICAgIGJhc2ljUmFkaW9Gb3JtR3JvdXBbJ2NvbnRyb2xzJ10ub3B0aW9uc1snY29udHJvbHMnXVtpXVtcbiAgICAgICAgICAgICAgICAgICAgICAnY29udHJvbHMnXG4gICAgICAgICAgICAgICAgICAgIF0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIHNlbGVjdCBlaXRoZXIgdHJ1ZSBvciBmYWxzZSdcIlxuICAgICAgICAgICAgICAgID48L2t3aWt1aS1zZWxlY3QtY29tYm9ib3g+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInRGVzY3JpcHRpb24nXCJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCInYmFzaWMtcmFkaW8tY29uZmlnLWRlc2NyaXB0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInZGVzY3JpcHRpb24nXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJcbiAgICAgICAgICAgICAgICAgICAgYmFzaWNSYWRpb0Zvcm1Hcm91cFsnY29udHJvbHMnXS5vcHRpb25zWydjb250cm9scyddW2ldW1xuICAgICAgICAgICAgICAgICAgICAgICdjb250cm9scydcbiAgICAgICAgICAgICAgICAgICAgXS5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciB5b3VyIGRlc2NyaXB0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2ludmFsaWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2Nhc2VdPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICA+PC9rd2lrdWktaW5wdXQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1hcnJheS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBsYWJlbD1cIlJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgICAgICAgICAgICBpY29uUmlnaHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJyZW1vdmVPcHRpb24oaSlcIlxuICAgICAgICAgICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgICAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBsYWJlbD1cIkFkZFwiXG4gICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgICAgICAgICAgICBpY29uUmlnaHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJhZGRPcHRpb24oKVwiXG4gICAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJwcm9wZXJ0aWVzXCI+XG4gICAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZm9ybS1ncm91cC10aXRsZVwiPk1pc2NlbGxhbmVvdXM8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGt3aWt1aS1zZWxlY3QtY29tYm9ib3hcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwiWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJ11cIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09yaWVudGF0aW9uJ1wiXG4gICAgICAgICAgICAgIFtpZF09XCInYmFzaWMtcmFkaW8tY29uZmlnLW9yaWVudGF0aW9uJ1wiXG4gICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInb3JpZW50YXRpb24nXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIlxuICAgICAgICAgICAgICAgIGJhc2ljUmFkaW9Gb3JtR3JvdXBbJ2NvbnRyb2xzJ10ucHJvcGVydGllc1snY29udHJvbHMnXVxuICAgICAgICAgICAgICAgICAgLm9yaWVudGF0aW9uXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQbGVhc2Ugc2VsZWN0IG9yaWVudGF0aW9uJ1wiXG4gICAgICAgICAgICA+PC9rd2lrdWktc2VsZWN0LWNvbWJvYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuZm9ybS1hcnJheS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCYXNpY1JhZGlvQ29uZmlnRWRpdG9yIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcmVhZG9ubHkgb3B0aW9uVHlwZSA9IHtcbiAgICBsYWJlbDogXCJcIixcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiXCJcbiAgfTtcblxuICBASW5wdXQoKVxuICBzYXZlQmFzaWNDbGlja0NvdW50ZXI6IG51bWJlciA9IDA7XG5cbiAgQElucHV0KClcbiAgZWxlbWVudENvbmZpZzogYW55ID0ge1xuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIG9yaWVudGF0aW9uOiBcImhvcml6b250YWxcIlxuICAgIH0sXG4gICAgb3B0aW9uczogW11cbiAgfTtcblxuICBAT3V0cHV0KClcbiAgdXBkYXRlRWxlbWVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGJhc2ljUmFkaW9Gb3JtR3JvdXA6IEZvcm1Hcm91cCA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgQGxvZ01ldGhvZFxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNyZWF0ZUJhc2ljUmFkaW9Gb3JtR3JvdXAoKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlO1xuICAgIH07XG5cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiZWxlbWVudENvbmZpZ1wiKSkge1xuICAgICAgdGhpcy5lbGVtZW50Q29uZmlnID0gY2hhbmdlcy5lbGVtZW50Q29uZmlnLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuYmFzaWNSYWRpb0Zvcm1Hcm91cD8ucmVzZXQodGhpcy5lbGVtZW50Q29uZmlnKTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInNhdmVCYXNpY0NsaWNrQ291bnRlclwiKSkge1xuICAgICAgaWYgKFxuICAgICAgICBjaGFuZ2VzLnNhdmVCYXNpY0NsaWNrQ291bnRlci5wcmV2aW91c1ZhbHVlICE9PVxuICAgICAgICBjaGFuZ2VzLnNhdmVCYXNpY0NsaWNrQ291bnRlci5jdXJyZW50VmFsdWVcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNhdmVCYXNpY0NsaWNrQ291bnRlciA9IGNoYW5nZXMuc2F2ZUJhc2ljQ2xpY2tDb3VudGVyLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgICB0aGlzLmhhbmRsZU9uU2F2ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY3JlYXRlQmFzaWNSYWRpb0Zvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICBsZXQgb3B0aW9uc0Zvcm1BcnJheSA9IFtdO1xuXG4gICAgdGhpcy5lbGVtZW50Q29uZmlnID0gc2V0TWlzc2luZ0tleVZhbHVlKHRoaXMuZWxlbWVudENvbmZpZywgXCJvcHRpb25zXCIsIFtcbiAgICAgIHRoaXMub3B0aW9uVHlwZVxuICAgIF0pO1xuXG4gICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMuZWxlbWVudENvbmZpZy5vcHRpb25zKSB7XG4gICAgICBvcHRpb25zRm9ybUFycmF5LnB1c2godGhpcy5jcmVhdGVPcHRpb25Db25maWdGb3JtR3JvdXAob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5iYXNpY1JhZGlvRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBwcm9wZXJ0aWVzOiBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgb3JpZW50YXRpb246IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgICB0aGlzLmVsZW1lbnRDb25maWcucHJvcGVydGllcy5vcmllbnRhdGlvbixcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1cGRhdGVPbjogXCJjaGFuZ2VcIlxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBvcHRpb25zOiBuZXcgRm9ybUFycmF5KG9wdGlvbnNGb3JtQXJyYXkpXG4gICAgfSk7XG4gICAgdGhpcy5iYXNpY1JhZGlvRm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25TYXZlKCkge1xuICAgIGxldCBiYXNpY0VsZW1lbnRDb25maWcgPSB0aGlzLmJhc2ljUmFkaW9Gb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcblxuICAgIHRoaXMudXBkYXRlRWxlbWVudC5lbWl0KHtcbiAgICAgIGJhc2ljRWxlbWVudENvbmZpZzogYmFzaWNFbGVtZW50Q29uZmlnXG4gICAgfSk7XG4gIH1cblxuICBnZXQgb3B0aW9uc0FycmF5KCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuYmFzaWNSYWRpb0Zvcm1Hcm91cC5nZXQoXCJvcHRpb25zXCIpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY3JlYXRlT3B0aW9uQ29uZmlnRm9ybUdyb3VwKG9wdGlvbkNvbmZpZzogYW55KTogRm9ybUdyb3VwIHtcbiAgICBjb25zdCBvcHRpb25Gb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGxhYmVsOiBuZXcgRm9ybUNvbnRyb2wob3B0aW9uQ29uZmlnLmxhYmVsLCB7XG4gICAgICAgIHVwZGF0ZU9uOiBcImNoYW5nZVwiXG4gICAgICB9KSxcbiAgICAgIGRpc2FibGVkOiBuZXcgRm9ybUNvbnRyb2wob3B0aW9uQ29uZmlnLmRpc2FibGVkLCB7XG4gICAgICAgIHVwZGF0ZU9uOiBcImNoYW5nZVwiXG4gICAgICB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wob3B0aW9uQ29uZmlnLmRlc2NyaXB0aW9uLCB7XG4gICAgICAgIHVwZGF0ZU9uOiBcImNoYW5nZVwiXG4gICAgICB9KVxuICAgIH0pO1xuICAgIHJldHVybiBvcHRpb25Gb3JtR3JvdXA7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFkZE9wdGlvbigpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5iYXNpY1JhZGlvRm9ybUdyb3VwLmdldChcIm9wdGlvbnNcIikgYXMgRm9ybUFycmF5O1xuICAgIG9wdGlvbnMucHVzaCh0aGlzLmNyZWF0ZU9wdGlvbkNvbmZpZ0Zvcm1Hcm91cCh0aGlzLm9wdGlvblR5cGUpKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcmVtb3ZlT3B0aW9uKG9wdGlvbkluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5iYXNpY1JhZGlvRm9ybUdyb3VwLmdldChcIm9wdGlvbnNcIikgYXMgRm9ybUFycmF5O1xuICAgIGlmIChvcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIG9wdGlvbnMucmVtb3ZlQXQob3B0aW9uSW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZE9wdGlvbigpO1xuICAgICAgLy8gb3B0aW9ucy5yZXNldCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
396
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tY29uZmlnLmVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3JhZGlvLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUE2SS9ELE1BQU0sT0FBTyxzQkFBc0I7SUF1QmpDO1FBdEJTLGVBQVUsR0FBRztZQUNwQixLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBRSxLQUFLO1lBQ2YsV0FBVyxFQUFFLEVBQUU7U0FDaEIsQ0FBQztRQUdGLDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUdsQyxrQkFBYSxHQUFRO1lBQ25CLFVBQVUsRUFBRTtnQkFDVixXQUFXLEVBQUUsWUFBWTthQUMxQjtZQUNELE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUdGLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV4Qyx3QkFBbUIsR0FBYyxTQUFTLENBQUM7SUFFNUIsQ0FBQztJQUdoQixRQUFRO1FBQ04sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUdELFdBQVcsQ0FBQyxPQUFzQjs7UUFDaEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFD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eUJBQXlCLE1BMEJ6QixZQUFZLE1BYVosMkJBQTJCLE1BZ0IzQixTQUFTLE1BTVQsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgbG9nTWV0aG9kLCBzZXRNaXNzaW5nS2V5VmFsdWUgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImJhc2ljLXJhZGlvLWNvbmZpZy1lZGl0b3JcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImJhc2ljUmFkaW9Gb3JtR3JvdXBcIj5cbiAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImZvcm0tZ3JvdXAtdGl0bGVcIj5PcHRpb25zPC9sZWdlbmQ+XG4gICAgICAgIDxkaXYgZm9ybUFycmF5TmFtZT1cIm9wdGlvbnNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNBcnJheS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGt3aWt1aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidMYWJlbCdcIlxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidiYXNpYy1yYWRpby1jb25maWctcGxhY2Vob2xkZXInXCJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIidsYWJlbCdcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIlxuICAgICAgICAgICAgICAgICAgICBiYXNpY1JhZGlvRm9ybUdyb3VwWydjb250cm9scyddLm9wdGlvbnNbJ2NvbnRyb2xzJ11baV1bXG4gICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyb2xzJ1xuICAgICAgICAgICAgICAgICAgICBdLmxhYmVsXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIGVudGVyIHlvdXIgbGFiZWwnXCJcbiAgICAgICAgICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbaW52YWxpZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbY2FzZV09XCInZGVmYXVsdCdcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgID48L2t3aWt1aS1pbnB1dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGt3aWt1aS1pbnB1dC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlt0cnVlLCBmYWxzZV1cIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidkaXNhYmxlZCdcIlxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidiYXNpYy1yYWRpby1jb25maWctZGlzYWJsZWQnXCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiXG4gICAgICAgICAgICAgICAgICAgIGJhc2ljUmFkaW9Gb3JtR3JvdXBbJ2NvbnRyb2xzJ10ub3B0aW9uc1snY29udHJvbHMnXVtpXVtcbiAgICAgICAgICAgICAgICAgICAgICAnY29udHJvbHMnXG4gICAgICAgICAgICAgICAgICAgIF0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIHNlbGVjdCBlaXRoZXIgdHJ1ZSBvciBmYWxzZSdcIlxuICAgICAgICAgICAgICAgID48L2t3aWt1aS1pbnB1dC1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInRGVzY3JpcHRpb24nXCJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCInYmFzaWMtcmFkaW8tY29uZmlnLWRlc2NyaXB0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInZGVzY3JpcHRpb24nXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJcbiAgICAgICAgICAgICAgICAgICAgYmFzaWNSYWRpb0Zvcm1Hcm91cFsnY29udHJvbHMnXS5vcHRpb25zWydjb250cm9scyddW2ldW1xuICAgICAgICAgICAgICAgICAgICAgICdjb250cm9scydcbiAgICAgICAgICAgICAgICAgICAgXS5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciB5b3VyIGRlc2NyaXB0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2ludmFsaWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2Nhc2VdPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICA+PC9rd2lrdWktaW5wdXQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1hcnJheS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBsYWJlbD1cIlJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgICAgICAgICAgICBpY29uUmlnaHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJyZW1vdmVPcHRpb24oaSlcIlxuICAgICAgICAgICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgICAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBsYWJlbD1cIkFkZFwiXG4gICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBzdHlsZXM9XCJcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cIlwiXG4gICAgICAgICAgICAgICAgICBpY29uUmlnaHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJhZGRPcHRpb24oKVwiXG4gICAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJwcm9wZXJ0aWVzXCI+XG4gICAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZm9ybS1ncm91cC10aXRsZVwiPk1pc2NlbGxhbmVvdXM8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGt3aWt1aS1pbnB1dC1zZWxlY3RcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwiWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJ11cIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09yaWVudGF0aW9uJ1wiXG4gICAgICAgICAgICAgIFtpZF09XCInYmFzaWMtcmFkaW8tY29uZmlnLW9yaWVudGF0aW9uJ1wiXG4gICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInb3JpZW50YXRpb24nXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIlxuICAgICAgICAgICAgICAgIGJhc2ljUmFkaW9Gb3JtR3JvdXBbJ2NvbnRyb2xzJ10ucHJvcGVydGllc1snY29udHJvbHMnXVxuICAgICAgICAgICAgICAgICAgLm9yaWVudGF0aW9uXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQbGVhc2Ugc2VsZWN0IG9yaWVudGF0aW9uJ1wiXG4gICAgICAgICAgICA+PC9rd2lrdWktaW5wdXQtc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuZm9ybS1hcnJheS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCYXNpY1JhZGlvQ29uZmlnRWRpdG9yIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcmVhZG9ubHkgb3B0aW9uVHlwZSA9IHtcbiAgICBsYWJlbDogXCJcIixcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiXCJcbiAgfTtcblxuICBASW5wdXQoKVxuICBzYXZlQmFzaWNDbGlja0NvdW50ZXI6IG51bWJlciA9IDA7XG5cbiAgQElucHV0KClcbiAgZWxlbWVudENvbmZpZzogYW55ID0ge1xuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIG9yaWVudGF0aW9uOiBcImhvcml6b250YWxcIlxuICAgIH0sXG4gICAgb3B0aW9uczogW11cbiAgfTtcblxuICBAT3V0cHV0KClcbiAgdXBkYXRlRWxlbWVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGJhc2ljUmFkaW9Gb3JtR3JvdXA6IEZvcm1Hcm91cCA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgQGxvZ01ldGhvZFxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNyZWF0ZUJhc2ljUmFkaW9Gb3JtR3JvdXAoKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlO1xuICAgIH07XG5cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiZWxlbWVudENvbmZpZ1wiKSkge1xuICAgICAgdGhpcy5lbGVtZW50Q29uZmlnID0gY2hhbmdlcy5lbGVtZW50Q29uZmlnLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuYmFzaWNSYWRpb0Zvcm1Hcm91cD8ucmVzZXQodGhpcy5lbGVtZW50Q29uZmlnKTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInNhdmVCYXNpY0NsaWNrQ291bnRlclwiKSkge1xuICAgICAgaWYgKFxuICAgICAgICBjaGFuZ2VzLnNhdmVCYXNpY0NsaWNrQ291bnRlci5wcmV2aW91c1ZhbHVlICE9PVxuICAgICAgICBjaGFuZ2VzLnNhdmVCYXNpY0NsaWNrQ291bnRlci5jdXJyZW50VmFsdWVcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNhdmVCYXNpY0NsaWNrQ291bnRlciA9IGNoYW5nZXMuc2F2ZUJhc2ljQ2xpY2tDb3VudGVyLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgICB0aGlzLmhhbmRsZU9uU2F2ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY3JlYXRlQmFzaWNSYWRpb0Zvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICBsZXQgb3B0aW9uc0Zvcm1BcnJheSA9IFtdO1xuXG4gICAgdGhpcy5lbGVtZW50Q29uZmlnID0gc2V0TWlzc2luZ0tleVZhbHVlKHRoaXMuZWxlbWVudENvbmZpZywgXCJvcHRpb25zXCIsIFtcbiAgICAgIHRoaXMub3B0aW9uVHlwZVxuICAgIF0pO1xuXG4gICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMuZWxlbWVudENvbmZpZy5vcHRpb25zKSB7XG4gICAgICBvcHRpb25zRm9ybUFycmF5LnB1c2godGhpcy5jcmVhdGVPcHRpb25Db25maWdGb3JtR3JvdXAob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5iYXNpY1JhZGlvRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBwcm9wZXJ0aWVzOiBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgb3JpZW50YXRpb246IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgICB0aGlzLmVsZW1lbnRDb25maWcucHJvcGVydGllcy5vcmllbnRhdGlvbixcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1cGRhdGVPbjogXCJjaGFuZ2VcIlxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBvcHRpb25zOiBuZXcgRm9ybUFycmF5KG9wdGlvbnNGb3JtQXJyYXkpXG4gICAgfSk7XG4gICAgdGhpcy5iYXNpY1JhZGlvRm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25TYXZlKCkge1xuICAgIGxldCBiYXNpY0VsZW1lbnRDb25maWcgPSB0aGlzLmJhc2ljUmFkaW9Gb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcblxuICAgIHRoaXMudXBkYXRlRWxlbWVudC5lbWl0KHtcbiAgICAgIGJhc2ljRWxlbWVudENvbmZpZzogYmFzaWNFbGVtZW50Q29uZmlnXG4gICAgfSk7XG4gIH1cblxuICBnZXQgb3B0aW9uc0FycmF5KCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuYmFzaWNSYWRpb0Zvcm1Hcm91cC5nZXQoXCJvcHRpb25zXCIpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY3JlYXRlT3B0aW9uQ29uZmlnRm9ybUdyb3VwKG9wdGlvbkNvbmZpZzogYW55KTogRm9ybUdyb3VwIHtcbiAgICBjb25zdCBvcHRpb25Gb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGxhYmVsOiBuZXcgRm9ybUNvbnRyb2wob3B0aW9uQ29uZmlnLmxhYmVsLCB7XG4gICAgICAgIHVwZGF0ZU9uOiBcImNoYW5nZVwiXG4gICAgICB9KSxcbiAgICAgIGRpc2FibGVkOiBuZXcgRm9ybUNvbnRyb2wob3B0aW9uQ29uZmlnLmRpc2FibGVkLCB7XG4gICAgICAgIHVwZGF0ZU9uOiBcImNoYW5nZVwiXG4gICAgICB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wob3B0aW9uQ29uZmlnLmRlc2NyaXB0aW9uLCB7XG4gICAgICAgIHVwZGF0ZU9uOiBcImNoYW5nZVwiXG4gICAgICB9KVxuICAgIH0pO1xuICAgIHJldHVybiBvcHRpb25Gb3JtR3JvdXA7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFkZE9wdGlvbigpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5iYXNpY1JhZGlvRm9ybUdyb3VwLmdldChcIm9wdGlvbnNcIikgYXMgRm9ybUFycmF5O1xuICAgIG9wdGlvbnMucHVzaCh0aGlzLmNyZWF0ZU9wdGlvbkNvbmZpZ0Zvcm1Hcm91cCh0aGlzLm9wdGlvblR5cGUpKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcmVtb3ZlT3B0aW9uKG9wdGlvbkluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5iYXNpY1JhZGlvRm9ybUdyb3VwLmdldChcIm9wdGlvbnNcIikgYXMgRm9ybUFycmF5O1xuICAgIGlmIChvcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIG9wdGlvbnMucmVtb3ZlQXQob3B0aW9uSW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZE9wdGlvbigpO1xuICAgICAgLy8gb3B0aW9ucy5yZXNldCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|