@energycap/components 0.39.16-ECAP-23124-menu-item-divider-improvements.20240516-1629 → 0.39.16-ECAP-23124-menu-item-divider-improvements.20240523-1101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +5 -4
- package/esm2020/lib/controls/combobox/combobox.component.mjs +35 -42
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +3 -3
- package/esm2020/lib/controls/form-control-base.mjs +10 -2
- package/esm2020/lib/controls/form-group/form-group.component.mjs +12 -3
- package/esm2020/lib/controls/menu/menu.component.mjs +67 -39
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +5 -4
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +5 -4
- package/esm2020/lib/controls/select/select.component.mjs +5 -4
- package/esm2020/lib/controls/textbox/textbox.component.mjs +4 -3
- package/fesm2015/energycap-components.mjs +1184 -1148
- package/fesm2015/energycap-components.mjs.map +1 -1
- package/fesm2020/energycap-components.mjs +1549 -1514
- package/fesm2020/energycap-components.mjs.map +1 -1
- package/lib/controls/combobox/combobox.component.d.ts +5 -0
- package/lib/controls/form-control-base.d.ts +10 -1
- package/lib/controls/form-group/form-group.component.d.ts +10 -1
- package/lib/controls/menu/menu.component.d.ts +25 -11
- package/package.json +1 -1
@@ -7,7 +7,8 @@ import * as i1 from "../../core/validation-message.service";
|
|
7
7
|
import * as i2 from "../../shared/form-group.helper";
|
8
8
|
import * as i3 from "@angular/common";
|
9
9
|
import * as i4 from "@angular/forms";
|
10
|
-
import * as i5 from "
|
10
|
+
import * as i5 from "../help-popover/help-popover.component";
|
11
|
+
import * as i6 from "@ngx-translate/core";
|
11
12
|
export class CheckboxComponent extends FormControlBase {
|
12
13
|
constructor(validationMessageService, formGroupHelper) {
|
13
14
|
super(validationMessageService, formGroupHelper);
|
@@ -122,10 +123,10 @@ export class CheckboxComponent extends FormControlBase {
|
|
122
123
|
}
|
123
124
|
}
|
124
125
|
CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CheckboxComponent, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }], target: i0.ɵɵFactoryTarget.Component });
|
125
|
-
CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CheckboxComponent, selector: "ec-checkbox", inputs: { name: "name", dependentCheckboxesGroup: "dependentCheckboxesGroup", ignoreDisabledDependents: "ignoreDisabledDependents" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["checkboxInput"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"control\">\r\n
|
126
|
+
CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CheckboxComponent, selector: "ec-checkbox", inputs: { name: "name", dependentCheckboxesGroup: "dependentCheckboxesGroup", ignoreDisabledDependents: "ignoreDisabledDependents" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["checkboxInput"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"control\">\r\n <label class=\"checkbox\"\r\n [ngClass]=\"{'is-disabled': formModel.disabled, 'no-label': !label, 'is-readonly': readonly}\">\r\n <input id=\"{{id}}_input\"\r\n #checkboxInput\r\n class='input'\r\n [class.indeterminate]=\"indeterminate\"\r\n [attr.id]=\"inputId\"\r\n [attr.name]=\"name\"\r\n type=\"checkbox\"\r\n tabindex=\"{{tabindex}}\"\r\n [formControl]=\"formModel\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n <i class=\"ec-icon icon-check\"></i>\r\n\r\n <span id=\"{{id}}_label\"\r\n *ngIf=\"label\"\r\n class=\"label\">\r\n <span [innerHtml]=\"label | translate\"></span>\r\n <ec-help-popover id=\"{{id}}_helpPopover\"\r\n *ngIf=\"helpPopover\"\r\n class=\"d-inline-block my-n2 mx-n1\"\r\n text=\"{{helpPopover | translate}}\"\r\n contentPosition=\"{{helpPopoverPosition}}\">\r\n </ec-help-popover>\r\n </span>\r\n </label>\r\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host(.w-auto){width:auto}.checkbox{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.checkbox.is-disabled{cursor:default}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.ec-icon{color:var(--ec-form-control-border-color)}.input:not(:checked)+.ec-icon:before{display:none}.input.indeterminate+.ec-icon,.input:indeterminate+.ec-icon{color:var(--ec-color-interactive)}.input.indeterminate+.ec-icon:before,.input:indeterminate+.ec-icon:before{content:\"\";background-color:currentColor;display:block;width:10px;height:3px}.input:focus+.ec-icon{color:var(--ec-color-interactive);box-shadow:var(--ec-form-control-box-shadow-focus);border-color:var(--ec-form-control-border-color-focus)}.input:disabled+.ec-icon{color:var(--ec-form-control-color-disabled);background-color:var(--ec-form-control-background-color-disabled);border-color:var(--ec-form-control-border-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:disabled~.label{color:var(--ec-form-control-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.ec-icon{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid currentColor;color:var(--ec-color-interactive);margin-top:.5rem;flex:none;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;height:1em;width:1em;border-radius:.125rem}.ec-icon:before{font-size:.6875em}.label{line-height:1.25rem;padding:.375rem 0;margin-left:.5rem;min-height:2rem;height:auto}.checkbox.is-readonly{pointer-events:none}.checkbox.is-readonly .input{opacity:0}.checkbox.is-readonly .ec-icon{background-color:var(--ec-form-control-background-color-readonly);border-color:var(--ec-form-control-border-color-readonly)}.checkbox.is-readonly .label,.checkbox.is-readonly .ec-icon{opacity:1;color:var(--ec-form-control-color)}.no-label .input,.no-label .icon-check{margin-top:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.HelpPopoverComponent, selector: "ec-help-popover", inputs: ["id", "text", "contentPosition", "maxWidth"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
|
126
127
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CheckboxComponent, decorators: [{
|
127
128
|
type: Component,
|
128
|
-
args: [{ selector: 'ec-checkbox', template: "<div class=\"control\">\r\n
|
129
|
+
args: [{ selector: 'ec-checkbox', template: "<div class=\"control\">\r\n <label class=\"checkbox\"\r\n [ngClass]=\"{'is-disabled': formModel.disabled, 'no-label': !label, 'is-readonly': readonly}\">\r\n <input id=\"{{id}}_input\"\r\n #checkboxInput\r\n class='input'\r\n [class.indeterminate]=\"indeterminate\"\r\n [attr.id]=\"inputId\"\r\n [attr.name]=\"name\"\r\n type=\"checkbox\"\r\n tabindex=\"{{tabindex}}\"\r\n [formControl]=\"formModel\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n <i class=\"ec-icon icon-check\"></i>\r\n\r\n <span id=\"{{id}}_label\"\r\n *ngIf=\"label\"\r\n class=\"label\">\r\n <span [innerHtml]=\"label | translate\"></span>\r\n <ec-help-popover id=\"{{id}}_helpPopover\"\r\n *ngIf=\"helpPopover\"\r\n class=\"d-inline-block my-n2 mx-n1\"\r\n text=\"{{helpPopover | translate}}\"\r\n contentPosition=\"{{helpPopoverPosition}}\">\r\n </ec-help-popover>\r\n </span>\r\n </label>\r\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host(.w-auto){width:auto}.checkbox{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.checkbox.is-disabled{cursor:default}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.ec-icon{color:var(--ec-form-control-border-color)}.input:not(:checked)+.ec-icon:before{display:none}.input.indeterminate+.ec-icon,.input:indeterminate+.ec-icon{color:var(--ec-color-interactive)}.input.indeterminate+.ec-icon:before,.input:indeterminate+.ec-icon:before{content:\"\";background-color:currentColor;display:block;width:10px;height:3px}.input:focus+.ec-icon{color:var(--ec-color-interactive);box-shadow:var(--ec-form-control-box-shadow-focus);border-color:var(--ec-form-control-border-color-focus)}.input:disabled+.ec-icon{color:var(--ec-form-control-color-disabled);background-color:var(--ec-form-control-background-color-disabled);border-color:var(--ec-form-control-border-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:disabled~.label{color:var(--ec-form-control-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.ec-icon{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid currentColor;color:var(--ec-color-interactive);margin-top:.5rem;flex:none;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;height:1em;width:1em;border-radius:.125rem}.ec-icon:before{font-size:.6875em}.label{line-height:1.25rem;padding:.375rem 0;margin-left:.5rem;min-height:2rem;height:auto}.checkbox.is-readonly{pointer-events:none}.checkbox.is-readonly .input{opacity:0}.checkbox.is-readonly .ec-icon{background-color:var(--ec-form-control-background-color-readonly);border-color:var(--ec-form-control-border-color-readonly)}.checkbox.is-readonly .label,.checkbox.is-readonly .ec-icon{opacity:1;color:var(--ec-form-control-color)}.no-label .input,.no-label .icon-check{margin-top:0}\n"] }]
|
129
130
|
}], ctorParameters: function () { return [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }]; }, propDecorators: { name: [{
|
130
131
|
type: Input
|
131
132
|
}], dependentCheckboxesGroup: [{
|
@@ -136,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
136
137
|
type: ViewChild,
|
137
138
|
args: ['checkboxInput', { static: true }]
|
138
139
|
}] } });
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUd6SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBVXRDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBd0NwRCxZQUNZLHdCQUFrRCxFQUNsRCxlQUFnQztRQUUxQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFIdkMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUF4QzVDOztXQUVHO1FBQ2EsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQWFsQzs7V0FFRztRQUNhLDZCQUF3QixHQUFZLElBQUksQ0FBQztRQU96RDs7O1dBR0c7UUFDSSxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUV0QyxtR0FBbUc7UUFDM0YsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVwQyxnSEFBZ0g7UUFDeEcsZ0NBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQU9wRCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxD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QW5FLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cEhlbHBlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtLWdyb3VwLmhlbHBlcic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sQmFzZSB9IGZyb20gXCIuLi9mb3JtLWNvbnRyb2wtYmFzZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ2xpY2thYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9kaXJlY3RpdmVzL2NsaWNrLWFyZWEtZm9yL2NsaWNrLWFyZWEtZm9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgdHlwZSBDaGVja2JveFN0YXRlID0gJ3VuY2hlY2tlZCcgfCAnaW5kZXRlcm1pbmF0ZScgfCAnY2hlY2tlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWNoZWNrYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEZvcm1Db250cm9sQmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENsaWNrYWJsZUVsZW1lbnQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjaGVja2JveCBpbnB1dCBlbGVtZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBvYmplY3Qgd2l0aCBhIGNvbGxlY3Rpb24gb2YgRm9ybUNvbnRyb2xzIHdobyBjYW4gb25seSBoYXZlIGEgdmFsdWUgb2YgdHJ1ZSBvciBmYWxzZS5cclxuICAgKiBBIEZvcm1Hcm91cCBvciBGb3JtQXJyYXkgd29yayBmaW5lLCBvciBhIGN1c3RvbSBvYmplY3QgcmVmZXJlbmNlIGlzIHBvc3NpYmxlIHRvb1xyXG4gICAqIFRoZSBtYXN0ZXIgY2hlY2tib3ggd2lsbCByZWF0dGFjaCB0byBkZXBlbmRlbnQgY29udHJvbHMgYW55IHRpbWUgdGhpcyByZWZlcmVuY2UgY2hhbmdlc1xyXG4gICAqIFRoZSBjb250cm9scyBzaG91bGQgYmUgZmxhdCAoaS5lLiBpZiB1c2luZyBhIEZvcm1Hcm91cCB0aGVuIGl0IGNhbm5vdCBoYXZlIG5lc3RlZCBGb3JtR3JvdXBzIHdpdGhpbiBpdCkuXHJcbiAgICogXHJcbiAgICogRm9yIGV4YW1wbGU6IFxyXG4gICAqIGRlcGVuZGVudENoZWNrYm94ZXNHcm91cCA9IG5ldyBGb3JtR3JvdXAoe2NoaWxkMTogbmV3IEZvcm1Db250cm9sKGZhbHNlKSwgY2hpbGQyOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLCBjaGlsZDM6IG5ldyBGb3JtQ29udHJvbChmYWxzZSl9KVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXA/OiB7Y29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdIHwge1trZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH19O1xyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gaWdub3JlIG9yIGluY2x1ZGUgZGlzYWJsZWQgZGVwZW5kZW50IGNoZWNrYm94ZXMgaW4gdGhlIGNoZWNrIHRvIGRldGVybWluZSB0aGUgY2hlY2tib3ggc3RhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGlnbm9yZURpc2FibGVkRGVwZW5kZW50czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgY2hlY2tib3ggaW5wdXQgY29udHJvbFxyXG4gICovXHJcbiAgQFZpZXdDaGlsZCgnY2hlY2tib3hJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHByb3RlY3RlZCBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgY2hlY2tib3ggaXMgYSBtYXN0ZXIgY2hlY2tib3ggKGkuZS4gaXQgaGFzIGEgZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwKSxcclxuICAgKiBpbmRldGVybWluYXRlIGlzIHRydWUgaWYgdGhlcmUgYXJlIHNvbWUgY2hlY2tlZCBkZXBlbmRlbnRzIGFuZCBzb21lIHVuY2hlY2tlZCBkZXBlbmRlbnRzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vVXNlZCB0byBwcmV2ZW50IHZhbHVlQ2hhbmdlcyBsb29wcyBpbiB0aGUgbWFzdGVyIGNoZWNrYm94IGFuZCBkZXBlbmRlbnQgY2hlY2tib3hlcyB2YWx1ZSBjaGFuZ2VzLlxyXG4gIHByaXZhdGUgaWdub3JlQ2FsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogRmlyZWQgd2hlbmV2ZXIgdGhlIGRlcGVuZGVudCBjaGVja2JveGVzIGFyZSBjaGFuZ2VkIHRvIGNsZWFyIG91dCBzdWJzY3JpcHRpb25zIHRvIHRoZSBwcmV2aW91cyBkZXBlbmRlbnRzICovXHJcbiAgcHJpdmF0ZSByZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlclxyXG4gICkge1xyXG4gICAgc3VwZXIodmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLCBmb3JtR3JvdXBIZWxwZXIpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLmRlcGVuZGVudENoZWNrYm94ZXNHcm91cCkge1xyXG4gICAgICB0aGlzLnNldHVwRGVwZW5kZW50cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRpc3BhdGNoRXZlbnQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiAhdGhpcy5mb3JtTW9kZWwuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5mb3JtTW9kZWwucGF0Y2hWYWx1ZSghdGhpcy5mb3JtTW9kZWwudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHdhdGNoZXJzIHRoYXQgYWxsb3cgdGhlIG1hc3RlciBhbmQgZGVwZW5kZW50IGNoZWNrYm94IHN0YXRlcyB0byBzdGF5IGluIHN5bmMgYXMgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlbS4gXHJcbiAgICogRGVwZW5kZW50cyBjYW4gdXBkYXRlIHRoZSBtYXN0ZXIgd2hlbiB0aGVpciB2YWx1ZXMgY2hhbmdlIGFuZCB0aGUgbWFzdGVyIHVwZGF0ZXMgZGVwZW5kZW50cyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLiBcclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwRGVwZW5kZW50cygpIHtcclxuICAgICAgaWYoIXRoaXMuZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwKSB7cmV0dXJufVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGFueSBzdWJzY3JpcHRpb25zIHRvIHByZXZpb3VzIGRlcGVuZGVudHNcclxuICAgICAgdGhpcy5yZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMubmV4dCgpO1xyXG5cclxuICAgICAgLy9FeHRyYWN0IHRoZSB2YWx1ZXMgKGkuZS4gdGhlIGNoZWNrYm94ZXMpIGZyb20gdGhlIEZvcm1Hcm91cCBjb250cm9scyBrZXktdmFsdWUgbWFwIGFuZCByZXR1cm4gdGhlbS4gXHJcbiAgICAgIGxldCBkZXBlbmRlbnRDaGVja2JveGVzOiBBYnN0cmFjdENvbnRyb2xbXSA9IE9iamVjdC52YWx1ZXModGhpcy5kZXBlbmRlbnRDaGVja2JveGVzR3JvdXAuY29udHJvbHMpO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVNYXN0ZXJTdGF0ZShkZXBlbmRlbnRDaGVja2JveGVzKTtcclxuXHJcbiAgICAgIC8vV2hlbiB0aGUgbWFzdGVyIHZhbHVlIGNoYW5nZXMsIHdlIHNldCBhbGwgaXRzIGRlcGVuZGVudHMgdG8gdGhhdCB2YWx1ZS5cclxuICAgICAgLy9XZSBhbHNvIHNldCBpbmRldGVybWluYXRlIHRvIGZhbHNlIHNpbmNlIHdlIGtub3cgdGhhdCBhbGwgZGVwZW5kZW50cyB3aWxsIGVpdGhlciBiZSBjaGVja2VkIG9yIHVuY2hlY2tlZC5cclxuICAgICAgdGhpcy5mb3JtTW9kZWwudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICB0YWtlVW50aWwobWVyZ2UodGhpcy5jb21wb25lbnREZXN0cm95ZWQsIHRoaXMucmVzZXREZXBlbmRlbnRTdWJzY3JpcHRpb25zKSlcclxuICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYoIXRoaXMuaWdub3JlQ2FsbCkge1xyXG4gICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gdHJ1ZTsgLy9JZ25vcmUgYW55IHZhbHVlIGNoYW5nZXMgY2FsbHMgb24gdGhlIGRlcGVuZGVudHMgdG8gcHJldmVudCBhIGxvb3AuXHJcbiAgICAgICAgICBkZXBlbmRlbnRDaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNoZWNrYm94LmRpc2FibGVkIHx8ICF0aGlzLmlnbm9yZURpc2FibGVkRGVwZW5kZW50cykge1xyXG4gICAgICAgICAgICAgIGNoZWNrYm94LnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgLy9XaGVuIGEgZGVwZW5kZW50IHZhbHVlIGNoYW5nZXMsIHdlIG5lZWQgdG8gcmVldmFsdWF0ZSB0aGUgbWFzdGVyIHN0YXRlLlxyXG4gICAgICAvL1dlIGFyZSBzdWJzY3JpYmluZyB0byB0aGUgZm9ybSBtb2RlbHMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGdyb3VwIGJlY2F1c2Ugd2UgZm91bmQgdGhhdCBhZGRpbmcgY2hlY2tib3hlcyB0byBcclxuICAgICAgLy8gIG1vcmUgdGhhbiBvbmUgZm9ybSBncm91cCBjYXVzZXMgb25seSB0aGUgbGFzdCBncm91cCB0byBlbWl0IHZhbHVlQ2hhbmdlcyBldmVudHMuIFxyXG4gICAgICAvL1RoYXQgcHJldmVudGVkIGNvbWJpbmVkIHJvdy1tYXN0ZXIgYW5kIHRhYmxlLW1hc3RlciBzZXR1cHMgZnJvbSB3b3JraW5nIHByb3Blcmx5LlxyXG4gICAgICBkZXBlbmRlbnRDaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xyXG4gICAgICAgICAgY2hlY2tib3gudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZSh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCwgdGhpcy5yZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMpKVxyXG4gICAgICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHZhbHVlICE9PSB0cnVlICYmIHZhbHVlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIHZhbHVlICR7dmFsdWV9IGlzIG5vdCB0cnVlIG9yIGZhbHNlLCB3aGljaCBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlcyBmb3IgRm9ybUNvbnRyb2xzIGluIHRoZSBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXBgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZighdGhpcy5pZ25vcmVDYWxsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gdHJ1ZTsgLy9JZ25vcmUgYW55IHZhbHVlIGNoYW5nZXMgY2FsbHMgb24gdGhlIG1hc3RlciB0byBwcmV2ZW50IGEgbG9vcC5cclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1hc3RlclN0YXRlKGRlcGVuZGVudENoZWNrYm94ZXMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIElmIGFsbCBkZXBlbmRlbnRzIGFyZSB0cnVlLCB0aGUgbWFzdGVyIHNob3VsZCBiZSB0cnVlIGFuZCBkZXRlcm1pbmF0ZS5cclxuICAgKiBJZiBhbGwgZGVwZW5kZW50cyBhcmUgZmFsc2UsIHRoZSBtYXN0ZXIgc2hvdWxkIGJlIGZhbHNlIGFuZCBkZXRlcm1pbmF0ZS5cclxuICAgKiBJZiBzb21lIGRlcGVuZGVudHMgYXJlIHRydWUgYW5kIHNvbWUgZGVwZW5kZW50cyBhcmUgZmFsc2UsIHRoZSBtYXN0ZXIgc2hvdWxkIGJlIGZhbHNlIGFuZCBpbmRldGVybWluYXRlLlxyXG4gICAqIFxyXG4gICAqIElmIGlnbm9yZURpc2FibGVkRGVwZW5kZW50cyBpcyB0cnVlLCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkaXNhYmxlZCBkZXBlbmRlbnRzIHdoZW4gY2hlY2tpbmcgdmFsdWVzXHJcbiAgKi9cclxuICBwcml2YXRlIHVwZGF0ZU1hc3RlclN0YXRlKGRlcGVuZGVudENoZWNrYm94ZXM6IEFic3RyYWN0Q29udHJvbFtdKSB7XHJcbiAgICBsZXQgZGVwZW5kZW50c1RvQ2hlY2sgPSBbXTtcclxuICAgIGlmICh0aGlzLmlnbm9yZURpc2FibGVkRGVwZW5kZW50cykge1xyXG4gICAgICBkZXBlbmRlbnRzVG9DaGVjayA9IGRlcGVuZGVudENoZWNrYm94ZXMuZmlsdGVyKGNoZWNrYm94ID0+IGNoZWNrYm94LmVuYWJsZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVwZW5kZW50c1RvQ2hlY2sgPSBkZXBlbmRlbnRDaGVja2JveGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1RydWUgPSAoY2hlY2tib3g6IEFic3RyYWN0Q29udHJvbCkgPT4ge3JldHVybiBjaGVja2JveC52YWx1ZSA9PT0gdHJ1ZX07XHJcbiAgICBpZihkZXBlbmRlbnRzVG9DaGVjay5ldmVyeShpc1RydWUpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYoZGVwZW5kZW50c1RvQ2hlY2suc29tZShpc1RydWUpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cclxuICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveFwiXHJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtZGlzYWJsZWQnOiBmb3JtTW9kZWwuZGlzYWJsZWQsICduby1sYWJlbCc6ICFsYWJlbCwgJ2lzLXJlYWRvbmx5JzogcmVhZG9ubHl9XCI+XHJcbiAgICA8aW5wdXQgaWQ9XCJ7e2lkfX1faW5wdXRcIlxyXG4gICAgICAgICAgICNjaGVja2JveElucHV0XHJcbiAgICAgICAgICAgY2xhc3M9J2lucHV0J1xyXG4gICAgICAgICAgIFtjbGFzcy5pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxyXG4gICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICB0YWJpbmRleD1cInt7dGFiaW5kZXh9fVwiXHJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Nb2RlbFwiXHJcbiAgICAgICAgICAgW2F0dHIuY2RrRm9jdXNJbml0aWFsXT1cImF1dG9mb2N1cyB8fCBudWxsXCI+XHJcbiAgICA8aSBjbGFzcz1cImVjLWljb24gaWNvbi1jaGVja1wiPjwvaT5cclxuICAgIDxzcGFuIGlkPVwie3tpZH19X2xhYmVsXCJcclxuICAgICAgICAgICpuZ0lmPVwibGFiZWxcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXHJcbiAgICAgICAgICBbaW5uZXJIdG1sXT1cImxhYmVsIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG48L2Rpdj5cclxuIl19
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUd6SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQVV0QyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQXdDcEQsWUFDWSx3QkFBa0QsRUFDbEQsZUFBZ0M7UUFFMUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSHZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeEM1Qzs7V0FFRztRQUNhLFNBQUksR0FBVyxFQUFFLENBQUM7UUFhbEM7O1dBRUc7UUFDYSw2QkFBd0IsR0FBWSxJQUFJLENBQUM7UUFPekQ7OztXQUdHO1FBQ0ksa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEMsbUdBQW1HO1FBQzNGLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFcEMsZ0hBQWdIO1FBQ3hHLGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFPcEQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUks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QUFuRSxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBIZWxwZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybS1ncm91cC5oZWxwZXInO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbEJhc2UgfSBmcm9tIFwiLi4vZm9ybS1jb250cm9sLWJhc2VcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaWNrYWJsZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlyZWN0aXZlcy9jbGljay1hcmVhLWZvci9jbGljay1hcmVhLWZvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IHR5cGUgQ2hlY2tib3hTdGF0ZSA9ICd1bmNoZWNrZWQnIHwgJ2luZGV0ZXJtaW5hdGUnIHwgJ2NoZWNrZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1jaGVja2JveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2UgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDbGlja2FibGVFbGVtZW50LCBPbkNoYW5nZXMge1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2hlY2tib3ggaW5wdXQgZWxlbWVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gb2JqZWN0IHdpdGggYSBjb2xsZWN0aW9uIG9mIEZvcm1Db250cm9scyB3aG8gY2FuIG9ubHkgaGF2ZSBhIHZhbHVlIG9mIHRydWUgb3IgZmFsc2UuXHJcbiAgICogQSBGb3JtR3JvdXAgb3IgRm9ybUFycmF5IHdvcmsgZmluZSwgb3IgYSBjdXN0b20gb2JqZWN0IHJlZmVyZW5jZSBpcyBwb3NzaWJsZSB0b29cclxuICAgKiBUaGUgbWFzdGVyIGNoZWNrYm94IHdpbGwgcmVhdHRhY2ggdG8gZGVwZW5kZW50IGNvbnRyb2xzIGFueSB0aW1lIHRoaXMgcmVmZXJlbmNlIGNoYW5nZXNcclxuICAgKiBUaGUgY29udHJvbHMgc2hvdWxkIGJlIGZsYXQgKGkuZS4gaWYgdXNpbmcgYSBGb3JtR3JvdXAgdGhlbiBpdCBjYW5ub3QgaGF2ZSBuZXN0ZWQgRm9ybUdyb3VwcyB3aXRoaW4gaXQpLlxyXG4gICAqIFxyXG4gICAqIEZvciBleGFtcGxlOiBcclxuICAgKiBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtjaGlsZDE6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksIGNoaWxkMjogbmV3IEZvcm1Db250cm9sKGZhbHNlKSwgY2hpbGQzOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpfSlcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwPzoge2NvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSB8IHtba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9fTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGlnbm9yZSBvciBpbmNsdWRlIGRpc2FibGVkIGRlcGVuZGVudCBjaGVja2JveGVzIGluIHRoZSBjaGVjayB0byBkZXRlcm1pbmUgdGhlIGNoZWNrYm94IHN0YXRlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZ25vcmVEaXNhYmxlZERlcGVuZGVudHM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGNoZWNrYm94IGlucHV0IGNvbnRyb2xcclxuICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2NoZWNrYm94SW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcm90ZWN0ZWQgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGNoZWNrYm94IGlzIGEgbWFzdGVyIGNoZWNrYm94IChpLmUuIGl0IGhhcyBhIGRlcGVuZGVudENoZWNrYm94ZXNHcm91cCksXHJcbiAgICogaW5kZXRlcm1pbmF0ZSBpcyB0cnVlIGlmIHRoZXJlIGFyZSBzb21lIGNoZWNrZWQgZGVwZW5kZW50cyBhbmQgc29tZSB1bmNoZWNrZWQgZGVwZW5kZW50cy5cclxuICAgKi9cclxuICBwdWJsaWMgaW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL1VzZWQgdG8gcHJldmVudCB2YWx1ZUNoYW5nZXMgbG9vcHMgaW4gdGhlIG1hc3RlciBjaGVja2JveCBhbmQgZGVwZW5kZW50IGNoZWNrYm94ZXMgdmFsdWUgY2hhbmdlcy5cclxuICBwcml2YXRlIGlnbm9yZUNhbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIEZpcmVkIHdoZW5ldmVyIHRoZSBkZXBlbmRlbnQgY2hlY2tib3hlcyBhcmUgY2hhbmdlZCB0byBjbGVhciBvdXQgc3Vic2NyaXB0aW9ucyB0byB0aGUgcHJldmlvdXMgZGVwZW5kZW50cyAqL1xyXG4gIHByaXZhdGUgcmVzZXREZXBlbmRlbnRTdWJzY3JpcHRpb25zID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlOiBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgZm9ybUdyb3VwSGVscGVyOiBGb3JtR3JvdXBIZWxwZXJcclxuICApIHtcclxuICAgIHN1cGVyKHZhbGlkYXRpb25NZXNzYWdlU2VydmljZSwgZm9ybUdyb3VwSGVscGVyKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmF1dG9mb2N1cykge1xyXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5kZXBlbmRlbnRDaGVja2JveGVzR3JvdXApIHtcclxuICAgICAgdGhpcy5zZXR1cERlcGVuZGVudHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkaXNwYXRjaEV2ZW50KGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjbGljaycgJiYgIXRoaXMuZm9ybU1vZGVsLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZm9ybU1vZGVsLnBhdGNoVmFsdWUoIXRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSB3YXRjaGVycyB0aGF0IGFsbG93IHRoZSBtYXN0ZXIgYW5kIGRlcGVuZGVudCBjaGVja2JveCBzdGF0ZXMgdG8gc3RheSBpbiBzeW5jIGFzIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIHRoZW0uIFxyXG4gICAqIERlcGVuZGVudHMgY2FuIHVwZGF0ZSB0aGUgbWFzdGVyIHdoZW4gdGhlaXIgdmFsdWVzIGNoYW5nZSBhbmQgdGhlIG1hc3RlciB1cGRhdGVzIGRlcGVuZGVudHMgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy4gXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cERlcGVuZGVudHMoKSB7XHJcbiAgICAgIGlmKCF0aGlzLmRlcGVuZGVudENoZWNrYm94ZXNHcm91cCkge3JldHVybn1cclxuXHJcbiAgICAgIC8vIFJlbW92ZSBhbnkgc3Vic2NyaXB0aW9ucyB0byBwcmV2aW91cyBkZXBlbmRlbnRzXHJcbiAgICAgIHRoaXMucmVzZXREZXBlbmRlbnRTdWJzY3JpcHRpb25zLm5leHQoKTtcclxuXHJcbiAgICAgIC8vRXh0cmFjdCB0aGUgdmFsdWVzIChpLmUuIHRoZSBjaGVja2JveGVzKSBmcm9tIHRoZSBGb3JtR3JvdXAgY29udHJvbHMga2V5LXZhbHVlIG1hcCBhbmQgcmV0dXJuIHRoZW0uIFxyXG4gICAgICBsZXQgZGVwZW5kZW50Q2hlY2tib3hlczogQWJzdHJhY3RDb250cm9sW10gPSBPYmplY3QudmFsdWVzKHRoaXMuZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwLmNvbnRyb2xzKTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlTWFzdGVyU3RhdGUoZGVwZW5kZW50Q2hlY2tib3hlcyk7XHJcblxyXG4gICAgICAvL1doZW4gdGhlIG1hc3RlciB2YWx1ZSBjaGFuZ2VzLCB3ZSBzZXQgYWxsIGl0cyBkZXBlbmRlbnRzIHRvIHRoYXQgdmFsdWUuXHJcbiAgICAgIC8vV2UgYWxzbyBzZXQgaW5kZXRlcm1pbmF0ZSB0byBmYWxzZSBzaW5jZSB3ZSBrbm93IHRoYXQgYWxsIGRlcGVuZGVudHMgd2lsbCBlaXRoZXIgYmUgY2hlY2tlZCBvciB1bmNoZWNrZWQuXHJcbiAgICAgIHRoaXMuZm9ybU1vZGVsLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgdGFrZVVudGlsKG1lcmdlKHRoaXMuY29tcG9uZW50RGVzdHJveWVkLCB0aGlzLnJlc2V0RGVwZW5kZW50U3Vic2NyaXB0aW9ucykpXHJcbiAgICAgICkuc3Vic2NyaWJlKCh2YWx1ZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmKCF0aGlzLmlnbm9yZUNhbGwpIHtcclxuICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IHRydWU7IC8vSWdub3JlIGFueSB2YWx1ZSBjaGFuZ2VzIGNhbGxzIG9uIHRoZSBkZXBlbmRlbnRzIHRvIHByZXZlbnQgYSBsb29wLlxyXG4gICAgICAgICAgZGVwZW5kZW50Q2hlY2tib3hlcy5mb3JFYWNoKGNoZWNrYm94ID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjaGVja2JveC5kaXNhYmxlZCB8fCAhdGhpcy5pZ25vcmVEaXNhYmxlZERlcGVuZGVudHMpIHtcclxuICAgICAgICAgICAgICBjaGVja2JveC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIC8vV2hlbiBhIGRlcGVuZGVudCB2YWx1ZSBjaGFuZ2VzLCB3ZSBuZWVkIHRvIHJlZXZhbHVhdGUgdGhlIG1hc3RlciBzdGF0ZS5cclxuICAgICAgLy9XZSBhcmUgc3Vic2NyaWJpbmcgdG8gdGhlIGZvcm0gbW9kZWxzIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhlIGVudGlyZSBncm91cCBiZWNhdXNlIHdlIGZvdW5kIHRoYXQgYWRkaW5nIGNoZWNrYm94ZXMgdG8gXHJcbiAgICAgIC8vICBtb3JlIHRoYW4gb25lIGZvcm0gZ3JvdXAgY2F1c2VzIG9ubHkgdGhlIGxhc3QgZ3JvdXAgdG8gZW1pdCB2YWx1ZUNoYW5nZXMgZXZlbnRzLiBcclxuICAgICAgLy9UaGF0IHByZXZlbnRlZCBjb21iaW5lZCByb3ctbWFzdGVyIGFuZCB0YWJsZS1tYXN0ZXIgc2V0dXBzIGZyb20gd29ya2luZyBwcm9wZXJseS5cclxuICAgICAgZGVwZW5kZW50Q2hlY2tib3hlcy5mb3JFYWNoKGNoZWNrYm94ID0+IHtcclxuICAgICAgICAgIGNoZWNrYm94LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UodGhpcy5jb21wb25lbnREZXN0cm95ZWQsIHRoaXMucmVzZXREZXBlbmRlbnRTdWJzY3JpcHRpb25zKSlcclxuICAgICAgICAgICkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZih2YWx1ZSAhPT0gdHJ1ZSAmJiB2YWx1ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSB2YWx1ZSAke3ZhbHVlfSBpcyBub3QgdHJ1ZSBvciBmYWxzZSwgd2hpY2ggYXJlIHRoZSBvbmx5IHN1cHBvcnRlZCB2YWx1ZXMgZm9yIEZvcm1Db250cm9scyBpbiB0aGUgZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoIXRoaXMuaWdub3JlQ2FsbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IHRydWU7IC8vSWdub3JlIGFueSB2YWx1ZSBjaGFuZ2VzIGNhbGxzIG9uIHRoZSBtYXN0ZXIgdG8gcHJldmVudCBhIGxvb3AuXHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVNYXN0ZXJTdGF0ZShkZXBlbmRlbnRDaGVja2JveGVzKTtcclxuICAgICAgICAgICAgICB0aGlzLmlnbm9yZUNhbGwgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIC8qKiBcclxuICAgKiBJZiBhbGwgZGVwZW5kZW50cyBhcmUgdHJ1ZSwgdGhlIG1hc3RlciBzaG91bGQgYmUgdHJ1ZSBhbmQgZGV0ZXJtaW5hdGUuXHJcbiAgICogSWYgYWxsIGRlcGVuZGVudHMgYXJlIGZhbHNlLCB0aGUgbWFzdGVyIHNob3VsZCBiZSBmYWxzZSBhbmQgZGV0ZXJtaW5hdGUuXHJcbiAgICogSWYgc29tZSBkZXBlbmRlbnRzIGFyZSB0cnVlIGFuZCBzb21lIGRlcGVuZGVudHMgYXJlIGZhbHNlLCB0aGUgbWFzdGVyIHNob3VsZCBiZSBmYWxzZSBhbmQgaW5kZXRlcm1pbmF0ZS5cclxuICAgKiBcclxuICAgKiBJZiBpZ25vcmVEaXNhYmxlZERlcGVuZGVudHMgaXMgdHJ1ZSwgZG9lcyBub3QgaW5jbHVkZSB0aGUgZGlzYWJsZWQgZGVwZW5kZW50cyB3aGVuIGNoZWNraW5nIHZhbHVlc1xyXG4gICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVNYXN0ZXJTdGF0ZShkZXBlbmRlbnRDaGVja2JveGVzOiBBYnN0cmFjdENvbnRyb2xbXSkge1xyXG4gICAgbGV0IGRlcGVuZGVudHNUb0NoZWNrID0gW107XHJcbiAgICBpZiAodGhpcy5pZ25vcmVEaXNhYmxlZERlcGVuZGVudHMpIHtcclxuICAgICAgZGVwZW5kZW50c1RvQ2hlY2sgPSBkZXBlbmRlbnRDaGVja2JveGVzLmZpbHRlcihjaGVja2JveCA9PiBjaGVja2JveC5lbmFibGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlcGVuZGVudHNUb0NoZWNrID0gZGVwZW5kZW50Q2hlY2tib3hlcztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaXNUcnVlID0gKGNoZWNrYm94OiBBYnN0cmFjdENvbnRyb2wpID0+IHtyZXR1cm4gY2hlY2tib3gudmFsdWUgPT09IHRydWV9O1xyXG4gICAgaWYoZGVwZW5kZW50c1RvQ2hlY2suZXZlcnkoaXNUcnVlKSkge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldFZhbHVlKHRydWUpO1xyXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmKGRlcGVuZGVudHNUb0NoZWNrLnNvbWUoaXNUcnVlKSkge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufSIsIjxkaXYgY2xhc3M9XCJjb250cm9sXCI+XHJcbiAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydpcy1kaXNhYmxlZCc6IGZvcm1Nb2RlbC5kaXNhYmxlZCwgJ25vLWxhYmVsJzogIWxhYmVsLCAnaXMtcmVhZG9ubHknOiByZWFkb25seX1cIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ7e2lkfX1faW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAjY2hlY2tib3hJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz0naW5wdXQnXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCJ7e3RhYmluZGV4fX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybU1vZGVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY2RrRm9jdXNJbml0aWFsXT1cImF1dG9mb2N1cyB8fCBudWxsXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJlYy1pY29uIGljb24tY2hlY2tcIj48L2k+XHJcblxyXG4gICAgICAgICAgICAgIDxzcGFuIGlkPVwie3tpZH19X2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwibGFiZWwgfCB0cmFuc2xhdGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxlYy1oZWxwLXBvcG92ZXIgaWQ9XCJ7e2lkfX1faGVscFBvcG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGVscFBvcG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbXktbjIgbXgtbjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7e2hlbHBQb3BvdmVyIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRQb3NpdGlvbj1cInt7aGVscFBvcG92ZXJQb3NpdGlvbn19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvZWMtaGVscC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgIDwvbGFiZWw+XHJcbjwvZGl2PiJdfQ==
|