@simpleangularcontrols/sac-bootstrap5 10.0.0-rc.2 → 10.0.0-rc.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/simpleangularcontrols-sac-bootstrap5.umd.js +362 -205
- package/bundles/simpleangularcontrols-sac-bootstrap5.umd.js.map +1 -1
- package/bundles/simpleangularcontrols-sac-bootstrap5.umd.min.js +1 -1
- package/bundles/simpleangularcontrols-sac-bootstrap5.umd.min.js.map +1 -1
- package/controls/checkbox/checkbox.module.d.ts.map +1 -1
- package/controls/checkbox/checkbox.module.ngfactory.d.ts.map +1 -1
- package/controls/checkbox/radiobutton.d.ts +6 -2
- package/controls/checkbox/radiobutton.d.ts.map +1 -1
- package/controls/contextmenu/contextmenu.d.ts.map +1 -1
- package/controls/contextmenu/contextmenuanchor.d.ts.map +1 -1
- package/controls/contextmenu/contextmenucontainer.d.ts.map +1 -1
- package/controls/contextmenu/contextmenuitembutton.d.ts +3 -4
- package/controls/contextmenu/contextmenuitembutton.d.ts.map +1 -1
- package/controls/contextmenu/contextmenuitemsplitter.d.ts.map +1 -1
- package/controls/datetime/date.d.ts +4 -3
- package/controls/datetime/date.d.ts.map +1 -1
- package/controls/datetime/datetime.d.ts +4 -3
- package/controls/datetime/datetime.d.ts.map +1 -1
- package/controls/datetime/datetime.module.d.ts.map +1 -1
- package/controls/datetime/datetime.module.ngfactory.d.ts.map +1 -1
- package/controls/datetime/time.d.ts +4 -3
- package/controls/datetime/time.d.ts.map +1 -1
- package/controls/form/inheritform.directive.d.ts +14 -37
- package/controls/form/inheritform.directive.d.ts.map +1 -1
- package/controls/grid/gridbutton.d.ts +1 -10
- package/controls/grid/gridbutton.d.ts.map +1 -1
- package/controls/input/input.module.d.ts.map +1 -1
- package/controls/input/input.module.ngfactory.d.ts.map +1 -1
- package/controls/list/dropdown.d.ts +1 -1
- package/controls/list/dropdown.d.ts.map +1 -1
- package/controls/list/dropdown.module.d.ts.map +1 -1
- package/controls/list/dropdown.module.ngfactory.d.ts.map +1 -1
- package/controls/list/list.module.d.ts.map +1 -1
- package/controls/list/list.module.ngfactory.d.ts.map +1 -1
- package/controls/list/listbox.d.ts +1 -1
- package/controls/list/listbox.d.ts.map +1 -1
- package/controls/multilanguage/multilanguage.module.d.ts.map +1 -1
- package/controls/multilanguage/multilanguage.module.ngfactory.d.ts.map +1 -1
- package/controls/multilanguage/multilanguagemenuitembutton.d.ts +3 -4
- package/controls/multilanguage/multilanguagemenuitembutton.d.ts.map +1 -1
- package/controls/static/formcontainer.d.ts +1 -1
- package/controls/static/formcontainer.d.ts.map +1 -1
- package/controls/static/staticlabel.module.d.ts.map +1 -1
- package/controls/static/staticlabel.module.ngfactory.d.ts.map +1 -1
- package/controls/tinymce/tinymce.d.ts +2 -2
- package/controls/tinymce/tinymce.d.ts.map +1 -1
- package/controls/tinymce/tinymce.module.d.ts.map +1 -1
- package/controls/tinymce/tinymce.module.ngfactory.d.ts.map +1 -1
- package/controls/tooltip/tooltip.d.ts +35 -0
- package/controls/tooltip/tooltip.d.ts.map +1 -0
- package/controls/tooltip/tooltip.module.d.ts +3 -0
- package/controls/tooltip/tooltip.module.d.ts.map +1 -0
- package/controls/tooltip/tooltip.module.ngfactory.d.ts +4 -0
- package/controls/tooltip/tooltip.module.ngfactory.d.ts.map +1 -0
- package/controls/tooltip/tooltip.ngfactory.d.ts +2 -0
- package/controls/tooltip/tooltip.ngfactory.d.ts.map +1 -0
- package/controls/treeview/treeview.d.ts +15 -0
- package/controls/treeview/treeview.d.ts.map +1 -0
- package/controls/treeview/treeview.module.d.ts +3 -0
- package/controls/treeview/treeview.module.d.ts.map +1 -0
- package/controls/treeview/treeview.module.ngfactory.d.ts +4 -0
- package/controls/treeview/treeview.module.ngfactory.d.ts.map +1 -0
- package/controls/treeview/treeview.ngfactory.d.ts +2 -0
- package/controls/treeview/treeview.ngfactory.d.ts.map +1 -0
- package/controls/upload/dropzonemultiple.d.ts +1 -1
- package/controls/upload/dropzonemultiple.d.ts.map +1 -1
- package/controls/upload/dropzonesingle.d.ts +1 -1
- package/controls/upload/dropzonesingle.d.ts.map +1 -1
- package/controls/upload/upload.module.d.ts.map +1 -1
- package/controls/upload/upload.module.ngfactory.d.ts.map +1 -1
- package/controls/upload/uploadmultiple.d.ts +1 -1
- package/controls/upload/uploadmultiple.d.ts.map +1 -1
- package/esm2015/controls/checkbox/checkbox.js +3 -3
- package/esm2015/controls/checkbox/checkbox.module.js +7 -2
- package/esm2015/controls/checkbox/checkbox.module.ngfactory.js +1 -1
- package/esm2015/controls/checkbox/radiobutton.js +13 -7
- package/esm2015/controls/checkbox/radiobuttons.js +2 -2
- package/esm2015/controls/confirm/confirm.js +2 -2
- package/esm2015/controls/confirm/confirm.module.ngfactory.js +1 -1
- package/esm2015/controls/contextmenu/contextmenu.js +3 -9
- package/esm2015/controls/contextmenu/contextmenu.module.ngfactory.js +1 -1
- package/esm2015/controls/contextmenu/contextmenuanchor.js +1 -1
- package/esm2015/controls/contextmenu/contextmenucontainer.js +1 -1
- package/esm2015/controls/contextmenu/contextmenuitembutton.js +15 -11
- package/esm2015/controls/contextmenu/contextmenuitemsplitter.js +9 -3
- package/esm2015/controls/datetime/date.js +17 -12
- package/esm2015/controls/datetime/datetime.js +9 -7
- package/esm2015/controls/datetime/datetime.module.js +8 -2
- package/esm2015/controls/datetime/datetime.module.ngfactory.js +1 -1
- package/esm2015/controls/datetime/time.js +9 -7
- package/esm2015/controls/dialog/dialog.js +2 -2
- package/esm2015/controls/dialog/dialog.module.ngfactory.js +1 -1
- package/esm2015/controls/form/inheritform.directive.js +42 -56
- package/esm2015/controls/grid/grid.js +2 -2
- package/esm2015/controls/grid/grid.module.ngfactory.js +1 -1
- package/esm2015/controls/grid/gridbutton.js +3 -11
- package/esm2015/controls/grid/gridcolumn.js +2 -2
- package/esm2015/controls/input/input.js +2 -2
- package/esm2015/controls/input/input.module.js +7 -2
- package/esm2015/controls/input/input.module.ngfactory.js +1 -1
- package/esm2015/controls/input/inputarea.js +2 -2
- package/esm2015/controls/input/inputcurrency.js +2 -2
- package/esm2015/controls/input/inputdecimal.js +2 -2
- package/esm2015/controls/input/inputemail.js +2 -2
- package/esm2015/controls/input/inputinteger.js +2 -2
- package/esm2015/controls/input/inputpassword.js +2 -2
- package/esm2015/controls/input/inputsearch.js +2 -2
- package/esm2015/controls/list/dropdown.js +5 -5
- package/esm2015/controls/list/dropdown.module.js +7 -2
- package/esm2015/controls/list/dropdown.module.ngfactory.js +1 -1
- package/esm2015/controls/list/list.module.js +7 -2
- package/esm2015/controls/list/list.module.ngfactory.js +1 -1
- package/esm2015/controls/list/listbox.js +5 -5
- package/esm2015/controls/multilanguage/multilanguage.module.js +7 -2
- package/esm2015/controls/multilanguage/multilanguage.module.ngfactory.js +1 -1
- package/esm2015/controls/multilanguage/multilanguageinput.js +2 -2
- package/esm2015/controls/multilanguage/multilanguageinputarea.js +2 -2
- package/esm2015/controls/multilanguage/multilanguagemenuitembutton.js +15 -11
- package/esm2015/controls/static/formcontainer.js +3 -3
- package/esm2015/controls/static/staticlabel.js +2 -2
- package/esm2015/controls/static/staticlabel.module.js +7 -2
- package/esm2015/controls/static/staticlabel.module.ngfactory.js +1 -1
- package/esm2015/controls/tabs/tab.js +2 -2
- package/esm2015/controls/tabs/tabs.module.ngfactory.js +1 -1
- package/esm2015/controls/tinymce/tinymce.js +5 -5
- package/esm2015/controls/tinymce/tinymce.module.js +3 -1
- package/esm2015/controls/tinymce/tinymce.module.ngfactory.js +1 -1
- package/esm2015/controls/tooltip/tooltip.js +52 -0
- package/esm2015/controls/tooltip/tooltip.module.js +13 -0
- package/esm2015/controls/tooltip/tooltip.module.ngfactory.js +7 -0
- package/esm2015/controls/tooltip/tooltip.ngfactory.js +7 -0
- package/esm2015/controls/treeview/treeview.js +41 -0
- package/esm2015/controls/treeview/treeview.module.js +16 -0
- package/esm2015/controls/treeview/treeview.module.ngfactory.js +7 -0
- package/esm2015/controls/treeview/treeview.ngfactory.js +7 -0
- package/esm2015/controls/upload/dropzonemultiple.js +4 -4
- package/esm2015/controls/upload/dropzonesingle.js +4 -4
- package/esm2015/controls/upload/upload.js +2 -2
- package/esm2015/controls/upload/upload.module.js +8 -2
- package/esm2015/controls/upload/upload.module.ngfactory.js +1 -1
- package/esm2015/controls/upload/uploadmultiple.js +4 -4
- package/esm2015/public-api.js +60 -3
- package/esm2015/simpleangularcontrols-sac-bootstrap5.js +6 -57
- package/fesm2015/simpleangularcontrols-sac-bootstrap5.js +290 -146
- package/fesm2015/simpleangularcontrols-sac-bootstrap5.js.map +1 -1
- package/package.json +3 -3
- package/public-api.d.ts +57 -2
- package/public-api.d.ts.map +1 -1
- package/simpleangularcontrols-sac-bootstrap5-10.0.0-rc.21.tgz +0 -0
- package/simpleangularcontrols-sac-bootstrap5.d.ts +5 -56
- package/simpleangularcontrols-sac-bootstrap5.d.ts.map +1 -1
- package/simpleangularcontrols-sac-bootstrap5.metadata.json +1 -1
- package/simpleangularcontrols-sac-bootstrap5-10.0.0-rc.2.tgz +0 -0
|
@@ -22,7 +22,7 @@ export class SacUploadComponent extends SacUploadSingleCommon {
|
|
|
22
22
|
SacUploadComponent.decorators = [
|
|
23
23
|
{ type: Component, args: [{
|
|
24
24
|
selector: 'sac-upload',
|
|
25
|
-
template: "<div class=\"row mb-3\"
|
|
25
|
+
template: "<div\r\n id=\"{{ name }}\"\r\n class=\"row mb-3\"\r\n [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\r\n id=\"{{ name }}_label\"\r\n for=\"{{ name }}_uploadinput\"\r\n class=\"col-12 col-form-label d-flex\"\r\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\r\n [class.required]=\"isrequired\">\r\n <div\r\n class=\"text flex-grow-0\"\r\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\r\n {{ label }}\r\n </div>\r\n <sac-tooltip\r\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\r\n [tooltiptext]=\"helptext\"\r\n [inlinemode]=\"true\">\r\n <span\r\n [ngClass]=\"HelptextTooltipIcon\"\r\n class=\"ms-1\">\r\n </span>\r\n </sac-tooltip>\r\n </label>\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\r\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\r\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\r\n <div\r\n class=\"input-group upload-component upload-single\"\r\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\r\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\r\n <!-- image-preview-input -->\r\n <div\r\n class=\"btn upload-input custom-file\"\r\n [class.disabled]=\"HasQueueItem()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <i\r\n class=\"pe-2\"\r\n [class]=\"IconBrowse\"></i>\r\n <span class=\"upload-browse\">{{ lngResourceService.GetString(validationKeyService.UploadButtonBrowse) | async }}</span>\r\n <input\r\n type=\"file\"\r\n id=\"{{ name }}_uploadinput\"\r\n class=\"custom-file-input\"\r\n #files\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n multiple\r\n [disabled]=\"HasQueueItem()\" />\r\n </div>\r\n <div\r\n class=\"form-control upload-progress\"\r\n [ngClass]=\"[componentHeight | toControlHeight]\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\">\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"Progress() === 100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"Progress()\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"Progress()\">\r\n <span class=\"progress-text text-dark\">{{ Filename() | async }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancelAll()\"\r\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\r\n class=\"btn\"\r\n (click)=\"pauseAll()\"\r\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && IsPaused()\"\r\n class=\"btn\"\r\n (click)=\"uploadAll()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"uploadAll()\"\r\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span\r\n [class]=\"IconUpload\"\r\n class=\"pe-2\"></span\r\n >{{ lngResourceService.GetString(validationKeyService.UploadButtonUpload) | async }}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\">\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n <div\r\n *ngIf=\"helptextmode === 'text' && helptext\"\r\n class=\"form-text\">\r\n {{ helptext }}\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\r\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\r\n [ngClass]=\"[componentHeight | toControlHeight]\">\r\n <sac-tooltip\r\n [tooltiptext]=\"helptext\"\r\n [inlinemode]=\"true\">\r\n <span\r\n [ngClass]=\"HelptextTooltipIcon\"\r\n class=\"ml-1\">\r\n </span>\r\n </sac-tooltip>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
26
26
|
providers: [
|
|
27
27
|
{
|
|
28
28
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -44,4 +44,4 @@ SacUploadComponent.ctorParameters = () => [
|
|
|
44
44
|
{ type: Renderer2 },
|
|
45
45
|
{ type: NgZone }
|
|
46
46
|
];
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtYm9vdHN0cmFwNS9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy91cGxvYWQvdXBsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLElBQUksRUFDSixRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhFOzs7R0FHRztBQWtCSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEscUJBQXFCO0lBQzNELHVCQUF1QjtJQUV2Qjs7Ozs7O09BTUc7SUFDSCxZQUNzQixVQUFrQyxFQUN0RCxRQUFrQixFQUNsQixRQUFtQixFQUNuQixNQUFjO1FBRWQsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7OztZQWxDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLGkrTkFBNEI7Z0JBRTVCLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixLQUFLLEVBQUUsSUFBSTt3QkFDWCxXQUFXLEVBQUUsa0JBQWtCO3FCQUNoQztvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztxQkFDbEQ7aUJBQ0Y7O2FBQ0Y7OztZQXRCUSxzQkFBc0IsdUJBa0MxQixJQUFJLFlBQUksUUFBUTtZQXpDbkIsUUFBUTtZQUdSLFNBQVM7WUFGVCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0LFxyXG4gIEluamVjdG9yLFxyXG4gIE5nWm9uZSxcclxuICBPcHRpb25hbCxcclxuICBSZW5kZXJlcjIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTYWNVcGxvYWRTaW5nbGVDb21tb24gfSBmcm9tICdAc2ltcGxlYW5ndWxhcmNvbnRyb2xzL3NhYy1jb21tb24nO1xyXG5pbXBvcnQgeyBTYWNGb3JtTGF5b3V0RGlyZWN0aXZlIH0gZnJvbSAnLi4vbGF5b3V0L2Zvcm1sYXlvdXQuZGlyZWN0aXZlJztcclxuXHJcbi8qKlxyXG4gKiBVcGxvYWQgS29tcG9udGVuXHJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2t1a2hhcmlldi9uZ3gtdXBsb2FkeC9cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2FjLXVwbG9hZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBTYWNVcGxvYWRDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2FjVXBsb2FkQ29tcG9uZW50KSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNhY1VwbG9hZENvbXBvbmVudCBleHRlbmRzIFNhY1VwbG9hZFNpbmdsZUNvbW1vbiB7XHJcbiAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gZm9ybUxheW91dCBTYWNGb3JtTGF5b3V0IHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXHJcbiAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcclxuICAgKiBAcGFyYW0gcmVuZGVyZXIgQW5ndWxhciByZW5kZXJpbmcgZW5naW5lXHJcbiAgICogQHBhcmFtIG5nWm9uZSBuZ1pvbmUgdG8gbWFuYWdlIGV4dGVybmFsIGphdmFzY3JpcHRzXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASG9zdCgpIEBPcHRpb25hbCgpIGZvcm1MYXlvdXQ6IFNhY0Zvcm1MYXlvdXREaXJlY3RpdmUsXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgbmdab25lOiBOZ1pvbmVcclxuICApIHtcclxuICAgIHN1cGVyKGZvcm1MYXlvdXQsIGluamVjdG9yLCByZW5kZXJlciwgbmdab25lKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcbn1cclxuIl19
|
|
@@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common';
|
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { SACBootstrap5LayoutModule } from '../layout/layout.module';
|
|
5
|
+
import { SACBootstrap5TooltipModule } from '../tooltip/tooltip.module';
|
|
5
6
|
import { SacDropzoneMultipleComponent } from './dropzonemultiple';
|
|
6
7
|
import { SacDropzoneSingleComponent } from './dropzonesingle';
|
|
7
8
|
import { SacUploadComponent } from './upload';
|
|
@@ -16,7 +17,12 @@ SACBootstrap5UploadModule.decorators = [
|
|
|
16
17
|
SacDropzoneSingleComponent,
|
|
17
18
|
SacDropzoneMultipleComponent,
|
|
18
19
|
],
|
|
19
|
-
imports: [
|
|
20
|
+
imports: [
|
|
21
|
+
CommonModule,
|
|
22
|
+
FormsModule,
|
|
23
|
+
SACBootstrap5LayoutModule,
|
|
24
|
+
SACBootstrap5TooltipModule,
|
|
25
|
+
],
|
|
20
26
|
exports: [
|
|
21
27
|
SacUploadComponent,
|
|
22
28
|
SacUploadMultipleComponent,
|
|
@@ -25,4 +31,4 @@ SACBootstrap5UploadModule.decorators = [
|
|
|
25
31
|
],
|
|
26
32
|
},] }
|
|
27
33
|
];
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWJvb3RzdHJhcDUvc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvdXBsb2FkL3VwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQXNCOUQsTUFBTSxPQUFPLHlCQUF5Qjs7O1lBcEJyQyxRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFO29CQUNaLGtCQUFrQjtvQkFDbEIsMEJBQTBCO29CQUMxQiwwQkFBMEI7b0JBQzFCLDRCQUE0QjtpQkFDN0I7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osV0FBVztvQkFDWCx5QkFBeUI7b0JBQ3pCLDBCQUEwQjtpQkFDM0I7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLGtCQUFrQjtvQkFDbEIsMEJBQTBCO29CQUMxQiwwQkFBMEI7b0JBQzFCLDRCQUE0QjtpQkFDN0I7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTQUNCb290c3RyYXA1TGF5b3V0TW9kdWxlIH0gZnJvbSAnLi4vbGF5b3V0L2xheW91dC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTQUNCb290c3RyYXA1VG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTYWNEcm9wem9uZU11bHRpcGxlQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wem9uZW11bHRpcGxlJztcclxuaW1wb3J0IHsgU2FjRHJvcHpvbmVTaW5nbGVDb21wb25lbnQgfSBmcm9tICcuL2Ryb3B6b25lc2luZ2xlJztcclxuaW1wb3J0IHsgU2FjVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWQnO1xyXG5pbXBvcnQgeyBTYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudCB9IGZyb20gJy4vdXBsb2FkbXVsdGlwbGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFNhY1VwbG9hZENvbXBvbmVudCxcclxuICAgIFNhY1VwbG9hZE11bHRpcGxlQ29tcG9uZW50LFxyXG4gICAgU2FjRHJvcHpvbmVTaW5nbGVDb21wb25lbnQsXHJcbiAgICBTYWNEcm9wem9uZU11bHRpcGxlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBTQUNCb290c3RyYXA1TGF5b3V0TW9kdWxlLFxyXG4gICAgU0FDQm9vdHN0cmFwNVRvb2x0aXBNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTYWNVcGxvYWRDb21wb25lbnQsXHJcbiAgICBTYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudCxcclxuICAgIFNhY0Ryb3B6b25lU2luZ2xlQ29tcG9uZW50LFxyXG4gICAgU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudCxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU0FDQm9vdHN0cmFwNVVwbG9hZE1vZHVsZSB7fVxyXG4iXX0=
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
|
|
5
5
|
* tslint:disable
|
|
6
6
|
*/
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLm1vZHVsZS5uZ2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1ib290c3RyYXA1L3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL3VwbG9hZC91cGxvYWQubW9kdWxlLm5nZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaTAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBpMSBmcm9tICcuL3VwbG9hZC5tb2R1bGUnO1xuaW1wb3J0ICogYXMgaTIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCAqIGFzIGkzIGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCAqIGFzIGk0IGZyb20gJy4uL2xheW91dC9mb3JtbGF5b3V0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgKiBhcyBpNSBmcm9tICcuL3VwbG9hZCc7XG5pbXBvcnQgKiBhcyBpNiBmcm9tICcuL3VwbG9hZG11bHRpcGxlJztcbmltcG9ydCAqIGFzIGk3IGZyb20gJy4vZHJvcHpvbmVzaW5nbGUnO1xuaW1wb3J0ICogYXMgaTggZnJvbSAnLi9kcm9wem9uZW11bHRpcGxlJztcbmltcG9ydCAqIGFzIGk5IGZyb20gJy4uL2xheW91dC90b2NvbnRyb2xoZWlnaHQucGlwZSc7XG5pbXBvcnQgKiBhcyBpMTAgZnJvbSAnLi4vbGF5b3V0L3RvY29udHJvbHdpZHRoY3NzLnBpcGUnO1xuaW1wb3J0ICogYXMgaTExIGZyb20gJy4uL2xheW91dC90b2xhYmVsaGVpZ2h0LnBpcGUnO1xuaW1wb3J0ICogYXMgaTEyIGZyb20gJy4uL2xheW91dC90b2xhYmVsd2lkdGhjc3MucGlwZSc7XG5pbXBvcnQgKiBhcyBpMTMgZnJvbSAnLi4vbGF5b3V0L2xheW91dC5tb2R1bGUnO1xuZXhwb3J0IGNvbnN0IFNBQ0Jvb3RzdHJhcDVVcGxvYWRNb2R1bGVOZ0ZhY3Rvcnk6aTAuTmdNb2R1bGVGYWN0b3J5PGkxLlNBQ0Jvb3RzdHJhcDVVcGxvYWRNb2R1bGU+ID0gKG51bGwgYXMgYW55KTtcbnZhciBfZGVjbDBfMDppMi5OZ0NsYXNzID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE6aTIuTmdDb21wb25lbnRPdXRsZXQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjppMi5OZ0Zvck9mPGFueSxhbnk+ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM6aTIuTmdJZjxhbnk+ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQ6aTIuTmdUZW1wbGF0ZU91dGxldCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF81OmkyLk5nU3R5bGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNjppMi5OZ1N3aXRjaCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF83OmkyLk5nU3dpdGNoQ2FzZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF84OmkyLk5nU3dpdGNoRGVmYXVsdCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF85OmkyLk5nUGx1cmFsID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzEwOmkyLk5nUGx1cmFsQ2FzZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xMTppMy7JtWFuZ3VsYXJfcGFja2FnZXNfZm9ybXNfZm9ybXNfeSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xMjppMy5OZ1NlbGVjdE9wdGlvbiA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xMzppMy7JtWFuZ3VsYXJfcGFja2FnZXNfZm9ybXNfZm9ybXNfeCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xNDppMy5EZWZhdWx0VmFsdWVBY2Nlc3NvciA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xNTppMy5OdW1iZXJWYWx1ZUFjY2Vzc29yID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE2OmkzLlJhbmdlVmFsdWVBY2Nlc3NvciA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xNzppMy5DaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE4OmkzLlNlbGVjdENvbnRyb2xWYWx1ZUFjY2Vzc29yID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE5OmkzLlNlbGVjdE11bHRpcGxlQ29udHJvbFZhbHVlQWNjZXNzb3IgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjA6aTMuUmFkaW9Db250cm9sVmFsdWVBY2Nlc3NvciA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yMTppMy5OZ0NvbnRyb2xTdGF0dXMgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjI6aTMuTmdDb250cm9sU3RhdHVzR3JvdXAgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjM6aTMuUmVxdWlyZWRWYWxpZGF0b3IgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjQ6aTMuTWluTGVuZ3RoVmFsaWRhdG9yID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzI1OmkzLk1heExlbmd0aFZhbGlkYXRvciA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yNjppMy5QYXR0ZXJuVmFsaWRhdG9yID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzI3OmkzLkNoZWNrYm94UmVxdWlyZWRWYWxpZGF0b3IgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjg6aTMuRW1haWxWYWxpZGF0b3IgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjk6aTMuTmdNb2RlbCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zMDppMy5OZ01vZGVsR3JvdXAgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzE6aTMuTmdGb3JtID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzMyOmk0LlNhY0Zvcm1MYXlvdXREaXJlY3RpdmUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzM6aTUuU2FjVXBsb2FkQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM0Omk2LlNhY1VwbG9hZE11bHRpcGxlQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM1Omk3LlNhY0Ryb3B6b25lU2luZ2xlQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM2Omk4LlNhY0Ryb3B6b25lTXVsdGlwbGVDb21wb25lbnQgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzc6aTIuQXN5bmNQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM4OmkyLlVwcGVyQ2FzZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzk6aTIuTG93ZXJDYXNlUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF80MDppMi5Kc29uUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF80MTppMi5TbGljZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDI6aTIuRGVjaW1hbFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDM6aTIuUGVyY2VudFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDQ6aTIuVGl0bGVDYXNlUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF80NTppMi5DdXJyZW5jeVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDY6aTIuRGF0ZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDc6aTIuSTE4blBsdXJhbFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDg6aTIuSTE4blNlbGVjdFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDk6aTIuS2V5VmFsdWVQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzUwOmk5LlNhY1RvQ29udHJvbEhlaWdodFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNTE6aTEwLlNhY1RvQ29udHJvbFdpZHRoQ3NzUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF81MjppMTEuU2FjVG9MYWJlbEhlaWdodFBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNTM6aTEyLlNhY1RvTGFiZWxXaWR0aENzc1BpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNTQ6aTIuQ29tbW9uTW9kdWxlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzU1OmkzLkZvcm1zTW9kdWxlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzU2OmkxMy5TQUNCb290c3RyYXA1TGF5b3V0TW9kdWxlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzU3OmkwLlRlbXBsYXRlUmVmPGFueT4gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNTg6aTAuRWxlbWVudFJlZjxhbnk+ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRDb21wb25lbnRfSG9zdF8xXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZENvbXBvbmVudF8xXzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzMzLmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpICYmICFfZGVjbDBfMzMuaXNBZGFwdGl2ZUxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdjb2wtMTIgY29sLWZvcm0tbGFiZWwnO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gWygoX2RlY2wwXzMzLmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfNTMudHJhbnNmb3JtKF9kZWNsMF8zMy5sYWJlbFNpemVzKTogJ3Zpc3VhbGx5LWhpZGRlbicpLFxuICAgICAgICBfZGVjbDBfNTIudHJhbnNmb3JtKF9kZWNsMF8zMy5jb21wb25lbnRIZWlnaHQpXTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzMubmFtZSwnX2xhYmVsJyk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzMzLm5hbWUsJycpO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzMzLmxhYmVsO1xuICAgIGN1cnJWYWxfNDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkQ29tcG9uZW50XzFfMigpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzMzLmF1dG91cGxvYWQgPT09IGZhbHNlKSAmJiBfZGVjbDBfMzMuZW5hYmxlcGF1c2UpIHx8ICgoX2RlY2wwXzMzLmF1dG91cGxvYWQgJiYgX2RlY2wwXzMzLmVuYWJsZXBhdXNlKSAmJiAoX2RlY2wwXzMzLklzUGF1c2VkKCkgPT09IGZhbHNlKSkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gKChfZGVjbDBfMzMuSXNVcGxvYWRpbmcoKSA9PT0gZmFsc2UpPyAnZGlzYWJsZWQnOiBudWxsKTtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9ICgoX2RlY2wwXzMzLklzVXBsb2FkaW5nKCkgPT09IGZhbHNlKT8gJ2Rpc2FibGVkJzogbnVsbCk7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAhKF9kZWNsMF8zMy5pbnZhbGlkICYmIChfZGVjbDBfMzMuZGlydHkgfHwgX2RlY2wwXzMzLnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IChfZGVjbDBfMzMuaW52YWxpZCAmJiAoX2RlY2wwXzMzLmRpcnR5IHx8IF9kZWNsMF8zMy50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMzMuSWNvblBhdXNlO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBwZF81OmFueSA9ICgoPGFueT5fZGVjbDBfMzMucGF1c2VBbGwoKSkgIT09IGZhbHNlKTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkQ29tcG9uZW50XzFfMygpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMzMuYXV0b3VwbG9hZCAmJiBfZGVjbDBfMzMuZW5hYmxlcGF1c2UpICYmIF9kZWNsMF8zMy5Jc1BhdXNlZCgpKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICEoX2RlY2wwXzMzLmludmFsaWQgJiYgKF9kZWNsMF8zMy5kaXJ0eSB8fCBfZGVjbDBfMzMudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gKF9kZWNsMF8zMy5pbnZhbGlkICYmIChfZGVjbDBfMzMuZGlydHkgfHwgX2RlY2wwXzMzLnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IF9kZWNsMF8zMy5JY29uQ29udGludWU7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IHBkXzM6YW55ID0gKCg8YW55Pl9kZWNsMF8zMy51cGxvYWRBbGwoKSkgIT09IGZhbHNlKTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkQ29tcG9uZW50XzFfNCgpOnZvaWQge1xuICBpZiAoKF9kZWNsMF8zMy5hdXRvdXBsb2FkID09PSBmYWxzZSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAoKF9kZWNsMF8zMy5Jc1N0YXRlVG9VcGxvYWQoKSA9PT0gZmFsc2UpPyAnZGlzYWJsZWQnOiBudWxsKTtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9ICgoX2RlY2wwXzMzLklzU3RhdGVUb1VwbG9hZCgpID09PSBmYWxzZSk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gIShfZGVjbDBfMzMuaW52YWxpZCAmJiAoX2RlY2wwXzMzLmRpcnR5IHx8IF9kZWNsMF8zMy50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSAoX2RlY2wwXzMzLmludmFsaWQgJiYgKF9kZWNsMF8zMy5kaXJ0eSB8fCBfZGVjbDBfMzMudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzMzLkljb25VcGxvYWQ7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMzcudHJhbnNmb3JtKF9kZWNsMF8zMy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKF9kZWNsMF8zMy52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWRCdXR0b25VcGxvYWQpKTtcbiAgICBjdXJyVmFsXzU7XG4gICAgY29uc3QgcGRfNjphbnkgPSAoKDxhbnk+X2RlY2wwXzMzLnVwbG9hZEFsbCgpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRDb21wb25lbnRfMV81KCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zMy5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMzMuaW52YWxpZCkgJiYgKF9kZWNsMF8zMy5kaXJ0eSB8fCBfZGVjbDBfMzMudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM3LnRyYW5zZm9ybShfZGVjbDBfMzMuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkQ29tcG9uZW50XzFfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzMzLmRpc2FibGVsYWJlbDtcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gKChfZGVjbDBfMzMuZGlzYWJsZWxhYmVsID09PSBmYWxzZSkgJiYgIV9kZWNsMF8zMy5pc0FkYXB0aXZlTGFiZWwpO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAnY29sLTEyJztcbiAgY3VyclZhbF8yO1xuICBjb25zdCBjdXJyVmFsXzM6YW55ID0gWygoX2RlY2wwXzMzLmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfNTEudHJhbnNmb3JtKF9kZWNsMF8zMy5sYWJlbFNpemVzKTogJycpXTtcbiAgY3VyclZhbF8zO1xuICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gKF9kZWNsMF8zMy5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zMy5Db250cm9sSGVpZ2h0LlNtYWxsKTtcbiAgY3VyclZhbF80O1xuICBjb25zdCBjdXJyVmFsXzU6YW55ID0gKF9kZWNsMF8zMy5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zMy5Db250cm9sSGVpZ2h0LkxhcmdlKTtcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gKChfZGVjbDBfMzMuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzMzLmludmFsaWQpICYmIChfZGVjbDBfMzMuZGlydHkgfHwgX2RlY2wwXzMzLnRvdWNoZWQpKTtcbiAgY3VyclZhbF82O1xuICBjb25zdCBjdXJyVmFsXzc6YW55ID0gX2RlY2wwXzMzLkhhc1F1ZXVlSXRlbSgpO1xuICBjdXJyVmFsXzc7XG4gIGNvbnN0IGN1cnJWYWxfODphbnkgPSAhKF9kZWNsMF8zMy5pbnZhbGlkICYmIChfZGVjbDBfMzMuZGlydHkgfHwgX2RlY2wwXzMzLnRvdWNoZWQpKTtcbiAgY3VyclZhbF84O1xuICBjb25zdCBjdXJyVmFsXzk6YW55ID0gKF9kZWNsMF8zMy5pbnZhbGlkICYmIChfZGVjbDBfMzMuZGlydHkgfHwgX2RlY2wwXzMzLnRvdWNoZWQpKTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9IF9kZWNsMF8zMy5JY29uQnJvd3NlO1xuICBjdXJyVmFsXzEwO1xuICBjb25zdCBjdXJyVmFsXzExOmFueSA9IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzMzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcoX2RlY2wwXzMzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZEJ1dHRvbkJyb3dzZSkpO1xuICBjdXJyVmFsXzExO1xuICBjb25zdCBjdXJyVmFsXzEyOmFueSA9IF9kZWNsMF8zMy5IYXNRdWV1ZUl0ZW0oKTtcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgY3VyclZhbF8xMzphbnkgPSAnZm9ybS1jb250cm9sIHVwbG9hZC1wcm9ncmVzcyc7XG4gIGN1cnJWYWxfMTM7XG4gIGNvbnN0IGN1cnJWYWxfMTQ6YW55ID0gW19kZWNsMF81MC50cmFuc2Zvcm0oX2RlY2wwXzMzLmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzE0O1xuICBjb25zdCBjdXJyVmFsXzE1OmFueSA9IChfZGVjbDBfMzMuaW52YWxpZCAmJiAoX2RlY2wwXzMzLmRpcnR5IHx8IF9kZWNsMF8zMy50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gKF9kZWNsMF8zMy5Qcm9ncmVzcygpID09PSAxMDApO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBjdXJyVmFsXzE3OmFueSA9IF9kZWNsMF8zMy5Qcm9ncmVzcygpO1xuICBjdXJyVmFsXzE3O1xuICBjb25zdCBjdXJyVmFsXzE4OmFueSA9IF9kZWNsMF8zMy5Qcm9ncmVzcygpO1xuICBjdXJyVmFsXzE4O1xuICBjb25zdCBjdXJyVmFsXzE5OmFueSA9IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzMzLkZpbGVuYW1lKCkpO1xuICBjdXJyVmFsXzE5O1xuICBjb25zdCBjdXJyVmFsXzIwOmFueSA9ICgoX2RlY2wwXzMzLkhhc1F1ZXVlSXRlbSgpID09PSBmYWxzZSk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9ICgoX2RlY2wwXzMzLkhhc1F1ZXVlSXRlbSgpID09PSBmYWxzZSk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICBjdXJyVmFsXzIxO1xuICBjb25zdCBjdXJyVmFsXzIyOmFueSA9ICEoX2RlY2wwXzMzLmludmFsaWQgJiYgKF9kZWNsMF8zMy5kaXJ0eSB8fCBfZGVjbDBfMzMudG91Y2hlZCkpO1xuICBjdXJyVmFsXzIyO1xuICBjb25zdCBjdXJyVmFsXzIzOmFueSA9IChfZGVjbDBfMzMuaW52YWxpZCAmJiAoX2RlY2wwXzMzLmRpcnR5IHx8IF9kZWNsMF8zMy50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjM7XG4gIGNvbnN0IGN1cnJWYWxfMjQ6YW55ID0gX2RlY2wwXzMzLkljb25EZWxldGU7XG4gIGN1cnJWYWxfMjQ7XG4gIGNvbnN0IGN1cnJWYWxfMjU6YW55ID0gKCgoX2RlY2wwXzMzLmF1dG91cGxvYWQgPT09IGZhbHNlKSAmJiBfZGVjbDBfMzMuZW5hYmxlcGF1c2UpIHx8ICgoX2RlY2wwXzMzLmF1dG91cGxvYWQgJiYgX2RlY2wwXzMzLmVuYWJsZXBhdXNlKSAmJiAoX2RlY2wwXzMzLklzUGF1c2VkKCkgPT09IGZhbHNlKSkpO1xuICBjdXJyVmFsXzI1O1xuICBjb25zdCBjdXJyVmFsXzI2OmFueSA9ICgoX2RlY2wwXzMzLmF1dG91cGxvYWQgJiYgX2RlY2wwXzMzLmVuYWJsZXBhdXNlKSAmJiBfZGVjbDBfMzMuSXNQYXVzZWQoKSk7XG4gIGN1cnJWYWxfMjY7XG4gIGNvbnN0IGN1cnJWYWxfMjc6YW55ID0gKF9kZWNsMF8zMy5hdXRvdXBsb2FkID09PSBmYWxzZSk7XG4gIGN1cnJWYWxfMjc7XG4gIGNvbnN0IGN1cnJWYWxfMjg6YW55ID0gKChfZGVjbDBfMzMuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzMzLmludmFsaWQpICYmIChfZGVjbDBfMzMuZGlydHkgfHwgX2RlY2wwXzMzLnRvdWNoZWQpKTtcbiAgY3VyclZhbF8yODtcbiAgY29uc3QgcGRfMjk6YW55ID0gKCg8YW55PihfYW55LnZhbHVlID0gJycpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8zMDphbnkgPSAoKDxhbnk+X2RlY2wwXzMzLm9uVXBsb2FkKF9hbnkpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8zMTphbnkgPSAoKDxhbnk+X2RlY2wwXzMzLmNhbmNlbEFsbCgpKSAhPT0gZmFsc2UpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnRfSG9zdF8yXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZE11bHRpcGxlQ29tcG9uZW50XzJfMSgpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMzQuZGlzYWJsZWxhYmVsID09PSBmYWxzZSkgJiYgIV9kZWNsMF8zNC5pc0FkYXB0aXZlTGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2NvbC0xMiBjb2wtZm9ybS1sYWJlbCc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbKChfZGVjbDBfMzQuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF81My50cmFuc2Zvcm0oX2RlY2wwXzM0LmxhYmVsU2l6ZXMpOiAndmlzdWFsbHktaGlkZGVuJyksXG4gICAgICAgIF9kZWNsMF81Mi50cmFuc2Zvcm0oX2RlY2wwXzM0LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8zNC5uYW1lLCdfbGFiZWwnKTtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzQubmFtZSwnJyk7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMzQubGFiZWw7XG4gICAgY3VyclZhbF80O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudF8yXzIoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8zNC5hdXRvdXBsb2FkID09PSBmYWxzZSkgJiYgX2RlY2wwXzM0LmVuYWJsZXBhdXNlKSB8fCAoKF9kZWNsMF8zNC5hdXRvdXBsb2FkICYmIF9kZWNsMF8zNC5lbmFibGVwYXVzZSkgJiYgKF9kZWNsMF8zNC5Jc1BhdXNlZCgpID09PSBmYWxzZSkpKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICgoX2RlY2wwXzM0LklzVXBsb2FkaW5nKCkgPT09IGZhbHNlKT8gJ2Rpc2FibGVkJzogbnVsbCk7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAhKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IChfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMzQuSWNvblBhdXNlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBwZF80OmFueSA9ICgoPGFueT5fZGVjbDBfMzQucGF1c2VBbGwoKSkgIT09IGZhbHNlKTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnRfMl8zKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNC5hdXRvdXBsb2FkICYmIF9kZWNsMF8zNC5lbmFibGVwYXVzZSkgJiYgKF9kZWNsMF8zNC5Jc1BhdXNlZCgpID09PSB0cnVlKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAhKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IChfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMzQuSWNvbkNvbnRpbnVlO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBwZF8zOmFueSA9ICgoPGFueT5fZGVjbDBfMzQudXBsb2FkQWxsKCkpICE9PSBmYWxzZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZE11bHRpcGxlQ29tcG9uZW50XzJfNCgpOnZvaWQge1xuICBpZiAoKF9kZWNsMF8zNC5hdXRvdXBsb2FkID09PSBmYWxzZSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAoKF9kZWNsMF8zNC5Jc1N0YXRlVG9VcGxvYWQoKSA9PT0gZmFsc2UpPyAnZGlzYWJsZWQnOiBudWxsKTtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9ICEoX2RlY2wwXzM0LmludmFsaWQgJiYgKF9kZWNsMF8zNC5kaXJ0eSB8fCBfZGVjbDBfMzQudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8zNC5JY29uVXBsb2FkO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzM3LnRyYW5zZm9ybShfZGVjbDBfMzQubG5nUmVzb3VyY2VTZXJ2aWNlLkdldFN0cmluZyhfZGVjbDBfMzQudmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkQnV0dG9uVXBsb2FkKSk7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IHBkXzU6YW55ID0gKCg8YW55Pl9kZWNsMF8zNC51cGxvYWRBbGwoKSkgIT09IGZhbHNlKTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnRfMl81KCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNC5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMzQuaW52YWxpZCkgJiYgKF9kZWNsMF8zNC5kaXJ0eSB8fCBfZGVjbDBfMzQudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM3LnRyYW5zZm9ybShfZGVjbDBfMzQuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnRfMl83KCk6dm9pZCB7XG4gIGlmICgoKChfZGVjbDBfMzQuYXV0b3VwbG9hZCA9PT0gZmFsc2UpICYmIF9kZWNsMF8zNC5lbmFibGVwYXVzZSkgfHwgKChfZGVjbDBfMzQuYXV0b3VwbG9hZCAmJiBfZGVjbDBfMzQuZW5hYmxlcGF1c2UpICYmIChfYW55LnN0YXR1cyAhPT0gJ3BhdXNlZCcpKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAoKF9hbnkuc3RhdHVzICE9PSAndXBsb2FkaW5nJyk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gIShfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAoX2RlY2wwXzM0LmludmFsaWQgJiYgKF9kZWNsMF8zNC5kaXJ0eSB8fCBfZGVjbDBfMzQudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzM0Lkljb25QYXVzZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgcGRfNDphbnkgPSAoKDxhbnk+X2RlY2wwXzM0LnBhdXNlKF9hbnkudXBsb2FkSWQpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudF8yXzgoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzM0LmF1dG91cGxvYWQgJiYgX2RlY2wwXzM0LmVuYWJsZXBhdXNlKSAmJiAoX2FueS5zdGF0dXMgPT09ICdwYXVzZWQnKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAhKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IChfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMzQuSWNvbkNvbnRpbnVlO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBwZF8zOmFueSA9ICgoPGFueT5fZGVjbDBfMzQudXBsb2FkKF9hbnkudXBsb2FkSWQpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudF8yXzkoKTp2b2lkIHtcbiAgaWYgKChfZGVjbDBfMzQuYXV0b3VwbG9hZCA9PT0gZmFsc2UpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gKCgoX2FueS5zdGF0dXMgIT09ICdhZGRlZCcpICYmIChfYW55LnN0YXR1cyAhPT0gJ3BhdXNlZCcpKT8gJ2Rpc2FibGVkJzogbnVsbCk7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAhKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IChfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMzQuSWNvblVwbG9hZDtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzM0LmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcoX2RlY2wwXzM0LnZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZEJ1dHRvblVwbG9hZCkpO1xuICAgIGN1cnJWYWxfNDtcbiAgICBjb25zdCBwZF81OmFueSA9ICgoPGFueT5fZGVjbDBfMzQudXBsb2FkKF9hbnkudXBsb2FkSWQpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudF8yXzYoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3VyclZhbF8wOmFueSA9IChfZGVjbDBfMzQuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMzQuQ29udHJvbEhlaWdodC5TbWFsbCk7XG4gIGN1cnJWYWxfMDtcbiAgY29uc3QgY3VyclZhbF8xOmFueSA9IChfZGVjbDBfMzQuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMzQuQ29udHJvbEhlaWdodC5MYXJnZSk7XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9IChfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjtcbiAgY29uc3QgY3VyclZhbF8zOmFueSA9IChfYW55LnByb2dyZXNzID09PSAxMDApO1xuICBjdXJyVmFsXzM7XG4gIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfYW55LnByb2dyZXNzO1xuICBjdXJyVmFsXzQ7XG4gIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfYW55LnByb2dyZXNzO1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSBfYW55Lm5hbWU7XG4gIGN1cnJWYWxfNjtcbiAgY29uc3QgY3VyclZhbF83OmFueSA9ICEoX2RlY2wwXzM0LmludmFsaWQgJiYgKF9kZWNsMF8zNC5kaXJ0eSB8fCBfZGVjbDBfMzQudG91Y2hlZCkpO1xuICBjdXJyVmFsXzc7XG4gIGNvbnN0IGN1cnJWYWxfODphbnkgPSAoX2RlY2wwXzM0LmludmFsaWQgJiYgKF9kZWNsMF8zNC5kaXJ0eSB8fCBfZGVjbDBfMzQudG91Y2hlZCkpO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSBfZGVjbDBfMzQuSWNvbkRlbGV0ZTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9ICgoKF9kZWNsMF8zNC5hdXRvdXBsb2FkID09PSBmYWxzZSkgJiYgX2RlY2wwXzM0LmVuYWJsZXBhdXNlKSB8fCAoKF9kZWNsMF8zNC5hdXRvdXBsb2FkICYmIF9kZWNsMF8zNC5lbmFibGVwYXVzZSkgJiYgKF9hbnkuc3RhdHVzICE9PSAncGF1c2VkJykpKTtcbiAgY3VyclZhbF8xMDtcbiAgY29uc3QgY3VyclZhbF8xMTphbnkgPSAoKF9kZWNsMF8zNC5hdXRvdXBsb2FkICYmIF9kZWNsMF8zNC5lbmFibGVwYXVzZSkgJiYgKF9hbnkuc3RhdHVzID09PSAncGF1c2VkJykpO1xuICBjdXJyVmFsXzExO1xuICBjb25zdCBjdXJyVmFsXzEyOmFueSA9IChfZGVjbDBfMzQuYXV0b3VwbG9hZCA9PT0gZmFsc2UpO1xuICBjdXJyVmFsXzEyO1xuICBjb25zdCBwZF8xMzphbnkgPSAoKDxhbnk+X2RlY2wwXzM0LmNhbmNlbChfYW55LnVwbG9hZElkKSkgIT09IGZhbHNlKTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZE11bHRpcGxlQ29tcG9uZW50XzJfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM0LmRpc2FibGVsYWJlbDtcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gKChfZGVjbDBfMzQuZGlzYWJsZWxhYmVsID09PSBmYWxzZSkgJiYgIV9kZWNsMF8zNC5pc0FkYXB0aXZlTGFiZWwpO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAnY29sLTEyJztcbiAgY3VyclZhbF8yO1xuICBjb25zdCBjdXJyVmFsXzM6YW55ID0gWygoX2RlY2wwXzM0LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfNTEudHJhbnNmb3JtKF9kZWNsMF8zNC5sYWJlbFNpemVzKTogJycpXTtcbiAgY3VyclZhbF8zO1xuICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gKF9kZWNsMF8zNC5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zNC5Db250cm9sSGVpZ2h0LlNtYWxsKTtcbiAgY3VyclZhbF80O1xuICBjb25zdCBjdXJyVmFsXzU6YW55ID0gKF9kZWNsMF8zNC5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zNC5Db250cm9sSGVpZ2h0LkxhcmdlKTtcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gKChfZGVjbDBfMzQuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzM0LmludmFsaWQpICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgY3VyclZhbF82O1xuICBjb25zdCBjdXJyVmFsXzc6YW55ID0gKChfZGVjbDBfMzQubWF4ZmlsZXMgPiAwKSAmJiAoX2RlY2wwXzM0LnVwbG9hZHMubGVuZ3RoID49IF9kZWNsMF8zNC5tYXhmaWxlcykpO1xuICBjdXJyVmFsXzc7XG4gIGNvbnN0IGN1cnJWYWxfODphbnkgPSAhKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgY3VyclZhbF84O1xuICBjb25zdCBjdXJyVmFsXzk6YW55ID0gKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9IF9kZWNsMF8zNC5JY29uQnJvd3NlO1xuICBjdXJyVmFsXzEwO1xuICBjb25zdCBjdXJyVmFsXzExOmFueSA9ICgoX2RlY2wwXzM0Lm1heGZpbGVzID4gMCkgJiYgKF9kZWNsMF8zNC51cGxvYWRzLmxlbmd0aCA+PSBfZGVjbDBfMzQubWF4ZmlsZXMpKTtcbiAgY3VyclZhbF8xMTtcbiAgY29uc3QgY3VyclZhbF8xMjphbnkgPSAoX2RlY2wwXzM0LmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzM0LkNvbnRyb2xIZWlnaHQuU21hbGwpO1xuICBjdXJyVmFsXzEyO1xuICBjb25zdCBjdXJyVmFsXzEzOmFueSA9IChfZGVjbDBfMzQuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMzQuQ29udHJvbEhlaWdodC5MYXJnZSk7XG4gIGN1cnJWYWxfMTM7XG4gIGNvbnN0IGN1cnJWYWxfMTQ6YW55ID0gKChfZGVjbDBfMzQuSGFzUXVldWVJdGVtKCkgPT09IGZhbHNlKT8gJ2Rpc2FibGVkJzogbnVsbCk7XG4gIGN1cnJWYWxfMTQ7XG4gIGNvbnN0IGN1cnJWYWxfMTU6YW55ID0gIShfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8xNjtcbiAgY29uc3QgY3VyclZhbF8xNzphbnkgPSBfZGVjbDBfMzQuSWNvbkRlbGV0ZTtcbiAgY3VyclZhbF8xNztcbiAgY29uc3QgY3VyclZhbF8xODphbnkgPSAoKChfZGVjbDBfMzQuYXV0b3VwbG9hZCA9PT0gZmFsc2UpICYmIF9kZWNsMF8zNC5lbmFibGVwYXVzZSkgfHwgKChfZGVjbDBfMzQuYXV0b3VwbG9hZCAmJiBfZGVjbDBfMzQuZW5hYmxlcGF1c2UpICYmIChfZGVjbDBfMzQuSXNQYXVzZWQoKSA9PT0gZmFsc2UpKSk7XG4gIGN1cnJWYWxfMTg7XG4gIGNvbnN0IGN1cnJWYWxfMTk6YW55ID0gKChfZGVjbDBfMzQuYXV0b3VwbG9hZCAmJiBfZGVjbDBfMzQuZW5hYmxlcGF1c2UpICYmIChfZGVjbDBfMzQuSXNQYXVzZWQoKSA9PT0gdHJ1ZSkpO1xuICBjdXJyVmFsXzE5O1xuICBjb25zdCBjdXJyVmFsXzIwOmFueSA9IChfZGVjbDBfMzQuYXV0b3VwbG9hZCA9PT0gZmFsc2UpO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9ICgoX2RlY2wwXzM0LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8zNC5pbnZhbGlkKSAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjE7XG4gIGNvbnN0IGN1cnJWYWxfMjI6YW55ID0gX2RlY2wwXzM0LnVwbG9hZHM7XG4gIGN1cnJWYWxfMjI7XG4gIGNvbnN0IHBkXzIzOmFueSA9ICgoPGFueT4oX2FueS52YWx1ZSA9ICcnKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjQ6YW55ID0gKCg8YW55Pl9kZWNsMF8zNC5vblVwbG9hZChfYW55KSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjU6YW55ID0gKCg8YW55Pl9kZWNsMF8zNC5jYW5jZWxBbGwoKSkgIT09IGZhbHNlKTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0Ryb3B6b25lU2luZ2xlQ29tcG9uZW50X0hvc3RfM18wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZVNpbmdsZUNvbXBvbmVudF8zXzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzM1LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpICYmICFfZGVjbDBfMzUuaXNBZGFwdGl2ZUxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdjb2wtMTIgY29sLWZvcm0tbGFiZWwnO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gWygoX2RlY2wwXzM1LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfNTMudHJhbnNmb3JtKF9kZWNsMF8zNS5sYWJlbFNpemVzKTogJ3Zpc3VhbGx5LWhpZGRlbicpLFxuICAgICAgICBfZGVjbDBfNTIudHJhbnNmb3JtKF9kZWNsMF8zNS5jb21wb25lbnRIZWlnaHQpXTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzUubmFtZSwnX2xhYmVsJyk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzM1Lm5hbWUsJycpO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzM1LmxhYmVsO1xuICAgIGN1cnJWYWxfNDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVTaW5nbGVDb21wb25lbnRfM18yKCk6dm9pZCB7XG4gIGlmICgoX2RlY2wwXzM1LnVwbG9hZHMubGVuZ3RoID09PSAwKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICgoX2RlY2wwXzM1LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8zNS5pbnZhbGlkKSAmJiAoX2RlY2wwXzM1LmRpcnR5IHx8IF9kZWNsMF8zNS50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZVNpbmdsZUNvbXBvbmVudF8zXzQoKTp2b2lkIHtcbiAgaWYgKChfZGVjbDBfMzUudXBsb2Fkcy5sZW5ndGggPiAwKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IChfZGVjbDBfMzUuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMzUuQ29udHJvbEhlaWdodC5TbWFsbCk7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAoX2RlY2wwXzM1LmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzM1LkNvbnRyb2xIZWlnaHQuTGFyZ2UpO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gKF9hbnkucHJvZ3Jlc3MgPT09IDEwMCk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfYW55LnByb2dyZXNzO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2FueS5wcm9ncmVzcztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9hbnkubmFtZTtcbiAgICBjdXJyVmFsXzU7XG4gICAgY29uc3QgY3VyclZhbF82OmFueSA9ICEoX2RlY2wwXzM1LmludmFsaWQgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfNjtcbiAgICBjb25zdCBjdXJyVmFsXzc6YW55ID0gKF9kZWNsMF8zNS5pbnZhbGlkICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzc7XG4gICAgY29uc3QgY3VyclZhbF84OmFueSA9IF9kZWNsMF8zNS5JY29uRGVsZXRlO1xuICAgIGN1cnJWYWxfODtcbiAgICBjb25zdCBwZF85OmFueSA9ICgoPGFueT5fZGVjbDBfMzUuY2FuY2VsKF9hbnkudXBsb2FkSWQpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZVNpbmdsZUNvbXBvbmVudF8zXzMoKTp2b2lkIHtcbiAgaWYgKChfZGVjbDBfMzUudXBsb2Fkcy5sZW5ndGggPiAwKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8zNS51cGxvYWRzO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVTaW5nbGVDb21wb25lbnRfM181KCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNS5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMzUuaW52YWxpZCkgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM3LnRyYW5zZm9ybShfZGVjbDBfMzUuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVTaW5nbGVDb21wb25lbnRfM18wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMzUuZGlzYWJsZWxhYmVsO1xuICBjdXJyVmFsXzA7XG4gIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAoKF9kZWNsMF8zNS5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKSAmJiAhX2RlY2wwXzM1LmlzQWRhcHRpdmVMYWJlbCk7XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdjb2wtMTInO1xuICBjdXJyVmFsXzI7XG4gIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBbKChfZGVjbDBfMzUuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF81MS50cmFuc2Zvcm0oX2RlY2wwXzM1LmxhYmVsU2l6ZXMpOiAnJyldO1xuICBjdXJyVmFsXzM7XG4gIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMzUudXBsb2FkaGVpZ2h0O1xuICBjdXJyVmFsXzQ7XG4gIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMzUuYWN0aXZlO1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSAoX2RlY2wwXzM1LmludmFsaWQgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpO1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAoX2RlY2wwXzM1LnVwbG9hZHMubGVuZ3RoID09PSAwKTtcbiAgY3VyclZhbF83O1xuICBjb25zdCBjdXJyVmFsXzg6YW55ID0gKF9kZWNsMF8zNS51cGxvYWRzLmxlbmd0aCA+IDApO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzM1Lm5hbWUsJ191cGxvYWRpbnB1dCcpO1xuICBjdXJyVmFsXzk7XG4gIGNvbnN0IGN1cnJWYWxfMTA6YW55ID0gX2RlY2wwXzM1Lkhhc1F1ZXVlSXRlbSgpO1xuICBjdXJyVmFsXzEwO1xuICBjb25zdCBjdXJyVmFsXzExOmFueSA9ICgoX2RlY2wwXzM1LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8zNS5pbnZhbGlkKSAmJiAoX2RlY2wwXzM1LmRpcnR5IHx8IF9kZWNsMF8zNS50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTE7XG4gIGNvbnN0IHBkXzEyOmFueSA9ICgoPGFueT5fZGVjbDBfMzUuZHJvcEhhbmRsZXIoX2FueSkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzEzOmFueSA9ICgoPGFueT5fZGVjbDBfMzUub25EcmFnT3ZlcihfYW55KSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMTQ6YW55ID0gKCg8YW55Pl9kZWNsMF8zNS5vbkRyYWdMZWF2ZShfYW55KSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMTU6YW55ID0gKCg8YW55PihfYW55LnZhbHVlID0gJycpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8xNjphbnkgPSAoKDxhbnk+X2RlY2wwXzM1Lm9uVXBsb2FkKF9hbnkpKSAhPT0gZmFsc2UpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudF9Ib3N0XzRfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudF80XzEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzM2LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpICYmICFfZGVjbDBfMzYuaXNBZGFwdGl2ZUxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdjb2wtMTIgY29sLWZvcm0tbGFiZWwnO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gWygoX2RlY2wwXzM2LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfNTMudHJhbnNmb3JtKF9kZWNsMF8zNi5sYWJlbFNpemVzKTogJ3Zpc3VhbGx5LWhpZGRlbicpLFxuICAgICAgICBfZGVjbDBfNTIudHJhbnNmb3JtKF9kZWNsMF8zNi5jb21wb25lbnRIZWlnaHQpXTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzYubmFtZSwnX2xhYmVsJyk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzM2Lm5hbWUsJycpO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzM2LmxhYmVsO1xuICAgIGN1cnJWYWxfNDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudF80XzIoKTp2b2lkIHtcbiAgaWYgKChfZGVjbDBfMzYudXBsb2Fkcy5sZW5ndGggPT09IDApKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gKChfZGVjbDBfMzYuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzM2LmludmFsaWQpICYmIChfZGVjbDBfMzYuZGlydHkgfHwgX2RlY2wwXzM2LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0Ryb3B6b25lTXVsdGlwbGVDb21wb25lbnRfNF80KCk6dm9pZCB7XG4gIGlmICgoX2RlY2wwXzM2LnVwbG9hZHMubGVuZ3RoID4gMCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAoX2FueSA+IDApO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gKF9kZWNsMF8zNi5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zNi5Db250cm9sSGVpZ2h0LlNtYWxsKTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IChfZGVjbDBfMzYuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMzYuQ29udHJvbEhlaWdodC5MYXJnZSk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSAoX2FueS5wcm9ncmVzcyA9PT0gMTAwKTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9IF9hbnkucHJvZ3Jlc3M7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfYW55LnByb2dyZXNzO1xuICAgIGN1cnJWYWxfNTtcbiAgICBjb25zdCBjdXJyVmFsXzY6YW55ID0gX2FueS5uYW1lO1xuICAgIGN1cnJWYWxfNjtcbiAgICBjb25zdCBjdXJyVmFsXzc6YW55ID0gIShfZGVjbDBfMzYuaW52YWxpZCAmJiAoX2RlY2wwXzM2LmRpcnR5IHx8IF9kZWNsMF8zNi50b3VjaGVkKSk7XG4gICAgY3VyclZhbF83O1xuICAgIGNvbnN0IGN1cnJWYWxfODphbnkgPSAoX2RlY2wwXzM2LmludmFsaWQgJiYgKF9kZWNsMF8zNi5kaXJ0eSB8fCBfZGVjbDBfMzYudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfODtcbiAgICBjb25zdCBjdXJyVmFsXzk6YW55ID0gX2RlY2wwXzM2Lkljb25EZWxldGU7XG4gICAgY3VyclZhbF85O1xuICAgIGNvbnN0IHBkXzEwOmFueSA9ICgoPGFueT5fZGVjbDBfMzYuY2FuY2VsKF9hbnkudXBsb2FkSWQpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZU11bHRpcGxlQ29tcG9uZW50XzRfMygpOnZvaWQge1xuICBpZiAoKF9kZWNsMF8zNi51cGxvYWRzLmxlbmd0aCA+IDApKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM2LnVwbG9hZHM7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZU11bHRpcGxlQ29tcG9uZW50XzRfNSgpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMzYuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzM2LmludmFsaWQpICYmIChfZGVjbDBfMzYuZGlydHkgfHwgX2RlY2wwXzM2LnRvdWNoZWQpKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8zNy50cmFuc2Zvcm0oX2RlY2wwXzM2LkdldEVycm9yTWVzc2FnZSgpKTtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0Ryb3B6b25lTXVsdGlwbGVDb21wb25lbnRfNF8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMzYuZGlzYWJsZWxhYmVsO1xuICBjdXJyVmFsXzA7XG4gIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAoKF9kZWNsMF8zNi5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKSAmJiAhX2RlY2wwXzM2LmlzQWRhcHRpdmVMYWJlbCk7XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdjb2wtMTInO1xuICBjdXJyVmFsXzI7XG4gIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBbKChfZGVjbDBfMzYuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF81MS50cmFuc2Zvcm0oX2RlY2wwXzM2LmxhYmVsU2l6ZXMpOiAnJyldO1xuICBjdXJyVmFsXzM7XG4gIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMzYuYWN0aXZlO1xuICBjdXJyVmFsXzQ7XG4gIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMzYudXBsb2FkaGVpZ2h0O1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSAoX2RlY2wwXzM2LmludmFsaWQgJiYgKF9kZWNsMF8zNi5kaXJ0eSB8fCBfZGVjbDBfMzYudG91Y2hlZCkpO1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAoX2RlY2wwXzM2LnVwbG9hZHMubGVuZ3RoID09PSAwKTtcbiAgY3VyclZhbF83O1xuICBjb25zdCBjdXJyVmFsXzg6YW55ID0gKF9kZWNsMF8zNi51cGxvYWRzLmxlbmd0aCA+IDApO1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzM2Lm5hbWUsJ191cGxvYWRpbnB1dCcpO1xuICBjdXJyVmFsXzk7XG4gIGNvbnN0IGN1cnJWYWxfMTA6YW55ID0gX2RlY2wwXzM2Lkhhc1F1ZXVlSXRlbSgpO1xuICBjdXJyVmFsXzEwO1xuICBjb25zdCBjdXJyVmFsXzExOmFueSA9ICgoX2RlY2wwXzM2LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8zNi5pbnZhbGlkKSAmJiAoX2RlY2wwXzM2LmRpcnR5IHx8IF9kZWNsMF8zNi50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTE7XG4gIGNvbnN0IHBkXzEyOmFueSA9ICgoPGFueT5fZGVjbDBfMzYuZHJvcEhhbmRsZXIoX2FueSkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzEzOmFueSA9ICgoPGFueT5fZGVjbDBfMzYub25EcmFnT3ZlcihfYW55KSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMTQ6YW55ID0gKCg8YW55Pl9kZWNsMF8zNi5vbkRyYWdMZWF2ZShfYW55KSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMTU6YW55ID0gKCg8YW55PihfYW55LnZhbHVlID0gJycpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8xNjphbnkgPSAoKDxhbnk+X2RlY2wwXzM2Lm9uVXBsb2FkKF9hbnkpKSAhPT0gZmFsc2UpO1xufVxuIl19
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLm1vZHVsZS5uZ2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1ib290c3RyYXA1L3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL3VwbG9hZC91cGxvYWQubW9kdWxlLm5nZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaTAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBpMSBmcm9tICcuL3VwbG9hZC5tb2R1bGUnO1xuaW1wb3J0ICogYXMgaTIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCAqIGFzIGkzIGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCAqIGFzIGk0IGZyb20gJy4uL2xheW91dC9mb3JtbGF5b3V0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgKiBhcyBpNSBmcm9tICcuLi90b29sdGlwL3Rvb2x0aXAnO1xuaW1wb3J0ICogYXMgaTYgZnJvbSAnLi91cGxvYWQnO1xuaW1wb3J0ICogYXMgaTcgZnJvbSAnLi91cGxvYWRtdWx0aXBsZSc7XG5pbXBvcnQgKiBhcyBpOCBmcm9tICcuL2Ryb3B6b25lc2luZ2xlJztcbmltcG9ydCAqIGFzIGk5IGZyb20gJy4vZHJvcHpvbmVtdWx0aXBsZSc7XG5pbXBvcnQgKiBhcyBpMTAgZnJvbSAnLi4vbGF5b3V0L3RvY29udHJvbGhlaWdodC5waXBlJztcbmltcG9ydCAqIGFzIGkxMSBmcm9tICcuLi9sYXlvdXQvdG9jb250cm9sd2lkdGhjc3MucGlwZSc7XG5pbXBvcnQgKiBhcyBpMTIgZnJvbSAnLi4vbGF5b3V0L3RvbGFiZWxoZWlnaHQucGlwZSc7XG5pbXBvcnQgKiBhcyBpMTMgZnJvbSAnLi4vbGF5b3V0L3RvbGFiZWx3aWR0aGNzcy5waXBlJztcbmltcG9ydCAqIGFzIGkxNCBmcm9tICcuLi9sYXlvdXQvbGF5b3V0Lm1vZHVsZSc7XG5pbXBvcnQgKiBhcyBpMTUgZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5leHBvcnQgY29uc3QgU0FDQm9vdHN0cmFwNVVwbG9hZE1vZHVsZU5nRmFjdG9yeTppMC5OZ01vZHVsZUZhY3Rvcnk8aTEuU0FDQm9vdHN0cmFwNVVwbG9hZE1vZHVsZT4gPSAobnVsbCBhcyBhbnkpO1xudmFyIF9kZWNsMF8wOmkyLk5nQ2xhc3MgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTppMi5OZ0NvbXBvbmVudE91dGxldCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yOmkyLk5nRm9yT2Y8YW55LGFueT4gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzppMi5OZ0lmPGFueT4gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDppMi5OZ1RlbXBsYXRlT3V0bGV0ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzU6aTIuTmdTdHlsZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF82OmkyLk5nU3dpdGNoID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzc6aTIuTmdTd2l0Y2hDYXNlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzg6aTIuTmdTd2l0Y2hEZWZhdWx0ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzk6aTIuTmdQbHVyYWwgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTA6aTIuTmdQbHVyYWxDYXNlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzExOmkzLsm1YW5ndWxhcl9wYWNrYWdlc19mb3Jtc19mb3Jtc195ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzEyOmkzLk5nU2VsZWN0T3B0aW9uID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzEzOmkzLsm1YW5ndWxhcl9wYWNrYWdlc19mb3Jtc19mb3Jtc194ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE0OmkzLkRlZmF1bHRWYWx1ZUFjY2Vzc29yID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE1OmkzLk51bWJlclZhbHVlQWNjZXNzb3IgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTY6aTMuUmFuZ2VWYWx1ZUFjY2Vzc29yID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE3OmkzLkNoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3IgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTg6aTMuU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3IgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTk6aTMuU2VsZWN0TXVsdGlwbGVDb250cm9sVmFsdWVBY2Nlc3NvciA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yMDppMy5SYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzIxOmkzLk5nQ29udHJvbFN0YXR1cyA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yMjppMy5OZ0NvbnRyb2xTdGF0dXNHcm91cCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yMzppMy5SZXF1aXJlZFZhbGlkYXRvciA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yNDppMy5NaW5MZW5ndGhWYWxpZGF0b3IgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjU6aTMuTWF4TGVuZ3RoVmFsaWRhdG9yID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzI2OmkzLlBhdHRlcm5WYWxpZGF0b3IgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjc6aTMuQ2hlY2tib3hSZXF1aXJlZFZhbGlkYXRvciA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yODppMy5FbWFpbFZhbGlkYXRvciA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yOTppMy5OZ01vZGVsID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzMwOmkzLk5nTW9kZWxHcm91cCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zMTppMy5OZ0Zvcm0gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzI6aTQuU2FjRm9ybUxheW91dERpcmVjdGl2ZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zMzppNS5TYWNUb29sdGlwQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM0Omk2LlNhY1VwbG9hZENvbXBvbmVudCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zNTppNy5TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zNjppOC5TYWNEcm9wem9uZVNpbmdsZUNvbXBvbmVudCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zNzppOS5TYWNEcm9wem9uZU11bHRpcGxlQ29tcG9uZW50ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzM4OmkyLkFzeW5jUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8zOTppMi5VcHBlckNhc2VQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQwOmkyLkxvd2VyQ2FzZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDE6aTIuSnNvblBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDI6aTIuU2xpY2VQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQzOmkyLkRlY2ltYWxQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQ0OmkyLlBlcmNlbnRQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQ1OmkyLlRpdGxlQ2FzZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDY6aTIuQ3VycmVuY3lQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQ3OmkyLkRhdGVQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQ4OmkyLkkxOG5QbHVyYWxQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzQ5OmkyLkkxOG5TZWxlY3RQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzUwOmkyLktleVZhbHVlUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF81MTppMTAuU2FjVG9Db250cm9sSGVpZ2h0UGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF81MjppMTEuU2FjVG9Db250cm9sV2lkdGhDc3NQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzUzOmkxMi5TYWNUb0xhYmVsSGVpZ2h0UGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF81NDppMTMuU2FjVG9MYWJlbFdpZHRoQ3NzUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF81NTppMi5Db21tb25Nb2R1bGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNTY6aTMuRm9ybXNNb2R1bGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNTc6aTE0LlNBQ0Jvb3RzdHJhcDVMYXlvdXRNb2R1bGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNTg6aTE1LlNBQ0Jvb3RzdHJhcDVUb29sdGlwTW9kdWxlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzU5OmkwLlRlbXBsYXRlUmVmPGFueT4gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNjA6aTAuRWxlbWVudFJlZjxhbnk+ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRDb21wb25lbnRfSG9zdF8xXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZENvbXBvbmVudF8xXzIoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8zNC5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKSAmJiAhX2RlY2wwXzM0LmlzQWRhcHRpdmVMYWJlbCkgJiYgKChfZGVjbDBfMzQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8zNC5oZWxwdGV4dCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM0LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtcy0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8zNC5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkQ29tcG9uZW50XzFfMSgpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMzQuZGlzYWJsZWxhYmVsID09PSBmYWxzZSkgJiYgIV9kZWNsMF8zNC5pc0FkYXB0aXZlTGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2NvbC0xMiBjb2wtZm9ybS1sYWJlbCBkLWZsZXgnO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gWygoX2RlY2wwXzM0LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfNTQudHJhbnNmb3JtKF9kZWNsMF8zNC5sYWJlbFNpemVzKTogJ3Zpc3VhbGx5LWhpZGRlbicpLFxuICAgICAgICBfZGVjbDBfNTMudHJhbnNmb3JtKF9kZWNsMF8zNC5jb21wb25lbnRIZWlnaHQpXTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzQubmFtZSwnX2xhYmVsJyk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzM0Lm5hbWUsJ191cGxvYWRpbnB1dCcpO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzM0LmlzcmVxdWlyZWQ7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMzQuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfNTtcbiAgICBjb25zdCBjdXJyVmFsXzY6YW55ID0gX2RlY2wwXzM0LmxhYmVsO1xuICAgIGN1cnJWYWxfNjtcbiAgICBjb25zdCBjdXJyVmFsXzc6YW55ID0gKChfZGVjbDBfMzQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8zNC5oZWxwdGV4dCk7XG4gICAgY3VyclZhbF83O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRDb21wb25lbnRfMV8zKCk6dm9pZCB7XG4gIGlmICgoKChfZGVjbDBfMzQuYXV0b3VwbG9hZCA9PT0gZmFsc2UpICYmIF9kZWNsMF8zNC5lbmFibGVwYXVzZSkgfHwgKChfZGVjbDBfMzQuYXV0b3VwbG9hZCAmJiBfZGVjbDBfMzQuZW5hYmxlcGF1c2UpICYmIChfZGVjbDBfMzQuSXNQYXVzZWQoKSA9PT0gZmFsc2UpKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAoKF9kZWNsMF8zNC5Jc1VwbG9hZGluZygpID09PSBmYWxzZSk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gKChfZGVjbDBfMzQuSXNVcGxvYWRpbmcoKSA9PT0gZmFsc2UpPyAnZGlzYWJsZWQnOiBudWxsKTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICEoX2RlY2wwXzM0LmludmFsaWQgJiYgKF9kZWNsMF8zNC5kaXJ0eSB8fCBfZGVjbDBfMzQudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9IF9kZWNsMF8zNC5JY29uUGF1c2U7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IHBkXzU6YW55ID0gKCg8YW55Pl9kZWNsMF8zNC5wYXVzZUFsbCgpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRDb21wb25lbnRfMV80KCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNC5hdXRvdXBsb2FkICYmIF9kZWNsMF8zNC5lbmFibGVwYXVzZSkgJiYgX2RlY2wwXzM0LklzUGF1c2VkKCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gIShfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAoX2RlY2wwXzM0LmludmFsaWQgJiYgKF9kZWNsMF8zNC5kaXJ0eSB8fCBfZGVjbDBfMzQudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzM0Lkljb25Db250aW51ZTtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgcGRfMzphbnkgPSAoKDxhbnk+X2RlY2wwXzM0LnVwbG9hZEFsbCgpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRDb21wb25lbnRfMV81KCk6dm9pZCB7XG4gIGlmICgoX2RlY2wwXzM0LmF1dG91cGxvYWQgPT09IGZhbHNlKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICgoX2RlY2wwXzM0LklzU3RhdGVUb1VwbG9hZCgpID09PSBmYWxzZSk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gKChfZGVjbDBfMzQuSXNTdGF0ZVRvVXBsb2FkKCkgPT09IGZhbHNlKT8gJ2Rpc2FibGVkJzogbnVsbCk7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAhKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IChfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMzQuSWNvblVwbG9hZDtcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8zOC50cmFuc2Zvcm0oX2RlY2wwXzM0LmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcoX2RlY2wwXzM0LnZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZEJ1dHRvblVwbG9hZCkpO1xuICAgIGN1cnJWYWxfNTtcbiAgICBjb25zdCBwZF82OmFueSA9ICgoPGFueT5fZGVjbDBfMzQudXBsb2FkQWxsKCkpICE9PSBmYWxzZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZENvbXBvbmVudF8xXzYoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzM0LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8zNC5pbnZhbGlkKSAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMzgudHJhbnNmb3JtKF9kZWNsMF8zNC5HZXRFcnJvck1lc3NhZ2UoKSk7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRDb21wb25lbnRfMV83KCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNC5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzM0LmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8zNC5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZENvbXBvbmVudF8xXzgoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8zNC5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM0LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMzQuZGlzYWJsZWxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0IGFsaWduLXNlbGYtdG9wIG1zLTIgbWUtMSB3LWF1dG8nO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gW19kZWNsMF81MS50cmFuc2Zvcm0oX2RlY2wwXzM0LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzM0LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8zNC5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfNTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkQ29tcG9uZW50XzFfMCgpOnZvaWQge1xuICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdXJyVmFsXzA6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8zNC5uYW1lLCcnKTtcbiAgY3VyclZhbF8wO1xuICBjb25zdCBjdXJyVmFsXzE6YW55ID0gX2RlY2wwXzM0LmRpc2FibGVsYWJlbDtcbiAgY3VyclZhbF8xO1xuICBjb25zdCBjdXJyVmFsXzI6YW55ID0gKChfZGVjbDBfMzQuZGlzYWJsZWxhYmVsID09PSBmYWxzZSkgJiYgIV9kZWNsMF8zNC5pc0FkYXB0aXZlTGFiZWwpO1xuICBjdXJyVmFsXzI7XG4gIGNvbnN0IGN1cnJWYWxfMzphbnkgPSAnY29sLTEyJztcbiAgY3VyclZhbF8zO1xuICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gWygoX2RlY2wwXzM0LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfNTIudHJhbnNmb3JtKF9kZWNsMF8zNC5sYWJlbFNpemVzKTogJycpXTtcbiAgY3VyclZhbF80O1xuICBjb25zdCBjdXJyVmFsXzU6YW55ID0gKCgoX2RlY2wwXzM0LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMzQuaGVscHRleHQpICYmIF9kZWNsMF8zNC5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzU7XG4gIGNvbnN0IGN1cnJWYWxfNjphbnkgPSAoKChfZGVjbDBfMzQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8zNC5oZWxwdGV4dCkgJiYgX2RlY2wwXzM0LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfNjtcbiAgY29uc3QgY3VyclZhbF83OmFueSA9IChfZGVjbDBfMzQuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMzQuQ29udHJvbEhlaWdodC5TbWFsbCk7XG4gIGN1cnJWYWxfNztcbiAgY29uc3QgY3VyclZhbF84OmFueSA9IChfZGVjbDBfMzQuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMzQuQ29udHJvbEhlaWdodC5MYXJnZSk7XG4gIGN1cnJWYWxfODtcbiAgY29uc3QgY3VyclZhbF85OmFueSA9ICgoX2RlY2wwXzM0LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8zNC5pbnZhbGlkKSAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfOTtcbiAgY29uc3QgY3VyclZhbF8xMDphbnkgPSBfZGVjbDBfMzQuSGFzUXVldWVJdGVtKCk7XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gIShfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTE7XG4gIGNvbnN0IGN1cnJWYWxfMTI6YW55ID0gKF9kZWNsMF8zNC5pbnZhbGlkICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgY3VyclZhbF8xMzphbnkgPSBfZGVjbDBfMzQuSWNvbkJyb3dzZTtcbiAgY3VyclZhbF8xMztcbiAgY29uc3QgY3VyclZhbF8xNDphbnkgPSBfZGVjbDBfMzgudHJhbnNmb3JtKF9kZWNsMF8zNC5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKF9kZWNsMF8zNC52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWRCdXR0b25Ccm93c2UpKTtcbiAgY3VyclZhbF8xNDtcbiAgY29uc3QgY3VyclZhbF8xNTphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzM0Lm5hbWUsJ191cGxvYWRpbnB1dCcpO1xuICBjdXJyVmFsXzE1O1xuICBjb25zdCBjdXJyVmFsXzE2OmFueSA9IF9kZWNsMF8zNC5IYXNRdWV1ZUl0ZW0oKTtcbiAgY3VyclZhbF8xNjtcbiAgY29uc3QgY3VyclZhbF8xNzphbnkgPSAnZm9ybS1jb250cm9sIHVwbG9hZC1wcm9ncmVzcyc7XG4gIGN1cnJWYWxfMTc7XG4gIGNvbnN0IGN1cnJWYWxfMTg6YW55ID0gW19kZWNsMF81MS50cmFuc2Zvcm0oX2RlY2wwXzM0LmNvbXBvbmVudEhlaWdodCldO1xuICBjdXJyVmFsXzE4O1xuICBjb25zdCBjdXJyVmFsXzE5OmFueSA9IChfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTk7XG4gIGNvbnN0IGN1cnJWYWxfMjA6YW55ID0gKF9kZWNsMF8zNC5Qcm9ncmVzcygpID09PSAxMDApO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9IF9kZWNsMF8zNC5Qcm9ncmVzcygpO1xuICBjdXJyVmFsXzIxO1xuICBjb25zdCBjdXJyVmFsXzIyOmFueSA9IF9kZWNsMF8zNC5Qcm9ncmVzcygpO1xuICBjdXJyVmFsXzIyO1xuICBjb25zdCBjdXJyVmFsXzIzOmFueSA9IF9kZWNsMF8zOC50cmFuc2Zvcm0oX2RlY2wwXzM0LkZpbGVuYW1lKCkpO1xuICBjdXJyVmFsXzIzO1xuICBjb25zdCBjdXJyVmFsXzI0OmFueSA9ICgoX2RlY2wwXzM0Lkhhc1F1ZXVlSXRlbSgpID09PSBmYWxzZSk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICBjdXJyVmFsXzI0O1xuICBjb25zdCBjdXJyVmFsXzI1OmFueSA9ICgoX2RlY2wwXzM0Lkhhc1F1ZXVlSXRlbSgpID09PSBmYWxzZSk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICBjdXJyVmFsXzI1O1xuICBjb25zdCBjdXJyVmFsXzI2OmFueSA9ICEoX2RlY2wwXzM0LmludmFsaWQgJiYgKF9kZWNsMF8zNC5kaXJ0eSB8fCBfZGVjbDBfMzQudG91Y2hlZCkpO1xuICBjdXJyVmFsXzI2O1xuICBjb25zdCBjdXJyVmFsXzI3OmFueSA9IChfZGVjbDBfMzQuaW52YWxpZCAmJiAoX2RlY2wwXzM0LmRpcnR5IHx8IF9kZWNsMF8zNC50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjc7XG4gIGNvbnN0IGN1cnJWYWxfMjg6YW55ID0gX2RlY2wwXzM0Lkljb25EZWxldGU7XG4gIGN1cnJWYWxfMjg7XG4gIGNvbnN0IGN1cnJWYWxfMjk6YW55ID0gKCgoX2RlY2wwXzM0LmF1dG91cGxvYWQgPT09IGZhbHNlKSAmJiBfZGVjbDBfMzQuZW5hYmxlcGF1c2UpIHx8ICgoX2RlY2wwXzM0LmF1dG91cGxvYWQgJiYgX2RlY2wwXzM0LmVuYWJsZXBhdXNlKSAmJiAoX2RlY2wwXzM0LklzUGF1c2VkKCkgPT09IGZhbHNlKSkpO1xuICBjdXJyVmFsXzI5O1xuICBjb25zdCBjdXJyVmFsXzMwOmFueSA9ICgoX2RlY2wwXzM0LmF1dG91cGxvYWQgJiYgX2RlY2wwXzM0LmVuYWJsZXBhdXNlKSAmJiBfZGVjbDBfMzQuSXNQYXVzZWQoKSk7XG4gIGN1cnJWYWxfMzA7XG4gIGNvbnN0IGN1cnJWYWxfMzE6YW55ID0gKF9kZWNsMF8zNC5hdXRvdXBsb2FkID09PSBmYWxzZSk7XG4gIGN1cnJWYWxfMzE7XG4gIGNvbnN0IGN1cnJWYWxfMzI6YW55ID0gKChfZGVjbDBfMzQuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzM0LmludmFsaWQpICYmIChfZGVjbDBfMzQuZGlydHkgfHwgX2RlY2wwXzM0LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8zMjtcbiAgY29uc3QgY3VyclZhbF8zMzphbnkgPSAoKF9kZWNsMF8zNC5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzM0LmhlbHB0ZXh0KTtcbiAgY3VyclZhbF8zMztcbiAgY29uc3QgY3VyclZhbF8zNDphbnkgPSAoKChfZGVjbDBfMzQuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8zNC5oZWxwdGV4dCkgJiYgX2RlY2wwXzM0LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfMzQ7XG4gIGNvbnN0IHBkXzM1OmFueSA9ICgoPGFueT4oX2FueS52YWx1ZSA9ICcnKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMzY6YW55ID0gKCg8YW55Pl9kZWNsMF8zNC5vblVwbG9hZChfYW55KSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMzc6YW55ID0gKCg8YW55Pl9kZWNsMF8zNC5jYW5jZWxBbGwoKSkgIT09IGZhbHNlKTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZE11bHRpcGxlQ29tcG9uZW50X0hvc3RfMl8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudF8yXzIoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8zNS5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKSAmJiAhX2RlY2wwXzM1LmlzQWRhcHRpdmVMYWJlbCkgJiYgKChfZGVjbDBfMzUuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8zNS5oZWxwdGV4dCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM1LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtcy0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8zNS5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnRfMl8xKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNS5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKSAmJiAhX2RlY2wwXzM1LmlzQWRhcHRpdmVMYWJlbCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAnY29sLTEyIGNvbC1mb3JtLWxhYmVsIGQtZmxleCc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbKChfZGVjbDBfMzUuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF81NC50cmFuc2Zvcm0oX2RlY2wwXzM1LmxhYmVsU2l6ZXMpOiAndmlzdWFsbHktaGlkZGVuJyksXG4gICAgICAgIF9kZWNsMF81My50cmFuc2Zvcm0oX2RlY2wwXzM1LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8zNS5uYW1lLCdfbGFiZWwnKTtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzUubmFtZSwnX3VwbG9hZGlucHV0Jyk7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMzUuaXNyZXF1aXJlZDtcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8zNS5zcGxpdGxhYmVsYW5kaGVscHRleHQ7XG4gICAgY3VyclZhbF81O1xuICAgIGNvbnN0IGN1cnJWYWxfNjphbnkgPSBfZGVjbDBfMzUubGFiZWw7XG4gICAgY3VyclZhbF82O1xuICAgIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAoKF9kZWNsMF8zNS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM1LmhlbHB0ZXh0KTtcbiAgICBjdXJyVmFsXzc7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZE11bHRpcGxlQ29tcG9uZW50XzJfMygpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzM1LmF1dG91cGxvYWQgPT09IGZhbHNlKSAmJiBfZGVjbDBfMzUuZW5hYmxlcGF1c2UpIHx8ICgoX2RlY2wwXzM1LmF1dG91cGxvYWQgJiYgX2RlY2wwXzM1LmVuYWJsZXBhdXNlKSAmJiAoX2RlY2wwXzM1LklzUGF1c2VkKCkgPT09IGZhbHNlKSkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gKChfZGVjbDBfMzUuSXNVcGxvYWRpbmcoKSA9PT0gZmFsc2UpPyAnZGlzYWJsZWQnOiBudWxsKTtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9ICEoX2RlY2wwXzM1LmludmFsaWQgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gKF9kZWNsMF8zNS5pbnZhbGlkICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8zNS5JY29uUGF1c2U7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IHBkXzQ6YW55ID0gKCg8YW55Pl9kZWNsMF8zNS5wYXVzZUFsbCgpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudF8yXzQoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzM1LmF1dG91cGxvYWQgJiYgX2RlY2wwXzM1LmVuYWJsZXBhdXNlKSAmJiAoX2RlY2wwXzM1LklzUGF1c2VkKCkgPT09IHRydWUpKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICEoX2RlY2wwXzM1LmludmFsaWQgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gKF9kZWNsMF8zNS5pbnZhbGlkICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IF9kZWNsMF8zNS5JY29uQ29udGludWU7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IHBkXzM6YW55ID0gKCg8YW55Pl9kZWNsMF8zNS51cGxvYWRBbGwoKSkgIT09IGZhbHNlKTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnRfMl81KCk6dm9pZCB7XG4gIGlmICgoX2RlY2wwXzM1LmF1dG91cGxvYWQgPT09IGZhbHNlKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICgoX2RlY2wwXzM1LklzU3RhdGVUb1VwbG9hZCgpID09PSBmYWxzZSk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gIShfZGVjbDBfMzUuaW52YWxpZCAmJiAoX2RlY2wwXzM1LmRpcnR5IHx8IF9kZWNsMF8zNS50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAoX2RlY2wwXzM1LmludmFsaWQgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzM1Lkljb25VcGxvYWQ7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMzgudHJhbnNmb3JtKF9kZWNsMF8zNS5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKF9kZWNsMF8zNS52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWRCdXR0b25VcGxvYWQpKTtcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgcGRfNTphbnkgPSAoKDxhbnk+X2RlY2wwXzM1LnVwbG9hZEFsbCgpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudF8yXzYoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8zNS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM1LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMzUuZGlzYWJsZWxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0IGFsaWduLXNlbGYtdG9wIG1zLTIgbWUtMSB3LWF1dG8nO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gW19kZWNsMF81MS50cmFuc2Zvcm0oX2RlY2wwXzM1LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzM1LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8zNS5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfNTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnRfMl83KCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNS5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMzUuaW52YWxpZCkgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM4LnRyYW5zZm9ybShfZGVjbDBfMzUuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnRfMl84KCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNS5oZWxwdGV4dG1vZGUgPT09ICd0ZXh0JykgJiYgX2RlY2wwXzM1LmhlbHB0ZXh0KSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8zNS5oZWxwdGV4dDtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZE11bHRpcGxlQ29tcG9uZW50XzJfMTAoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8zNS5hdXRvdXBsb2FkID09PSBmYWxzZSkgJiYgX2RlY2wwXzM1LmVuYWJsZXBhdXNlKSB8fCAoKF9kZWNsMF8zNS5hdXRvdXBsb2FkICYmIF9kZWNsMF8zNS5lbmFibGVwYXVzZSkgJiYgKF9hbnkuc3RhdHVzICE9PSAncGF1c2VkJykpKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICgoX2FueS5zdGF0dXMgIT09ICd1cGxvYWRpbmcnKT8gJ2Rpc2FibGVkJzogbnVsbCk7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAhKF9kZWNsMF8zNS5pbnZhbGlkICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IChfZGVjbDBfMzUuaW52YWxpZCAmJiAoX2RlY2wwXzM1LmRpcnR5IHx8IF9kZWNsMF8zNS50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBfZGVjbDBfMzUuSWNvblBhdXNlO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBwZF80OmFueSA9ICgoPGFueT5fZGVjbDBfMzUucGF1c2UoX2FueS51cGxvYWRJZCkpICE9PSBmYWxzZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY1VwbG9hZE11bHRpcGxlQ29tcG9uZW50XzJfMTEoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzM1LmF1dG91cGxvYWQgJiYgX2RlY2wwXzM1LmVuYWJsZXBhdXNlKSAmJiAoX2FueS5zdGF0dXMgPT09ICdwYXVzZWQnKSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAhKF9kZWNsMF8zNS5pbnZhbGlkICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzA7XG4gICAgY29uc3QgY3VyclZhbF8xOmFueSA9IChfZGVjbDBfMzUuaW52YWxpZCAmJiAoX2RlY2wwXzM1LmRpcnR5IHx8IF9kZWNsMF8zNS50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSBfZGVjbDBfMzUuSWNvbkNvbnRpbnVlO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBwZF8zOmFueSA9ICgoPGFueT5fZGVjbDBfMzUudXBsb2FkKF9hbnkudXBsb2FkSWQpKSAhPT0gZmFsc2UpO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudF8yXzEyKCk6dm9pZCB7XG4gIGlmICgoX2RlY2wwXzM1LmF1dG91cGxvYWQgPT09IGZhbHNlKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICgoKF9hbnkuc3RhdHVzICE9PSAnYWRkZWQnKSAmJiAoX2FueS5zdGF0dXMgIT09ICdwYXVzZWQnKSk/ICdkaXNhYmxlZCc6IG51bGwpO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gIShfZGVjbDBfMzUuaW52YWxpZCAmJiAoX2RlY2wwXzM1LmRpcnR5IHx8IF9kZWNsMF8zNS50b3VjaGVkKSk7XG4gICAgY3VyclZhbF8xO1xuICAgIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAoX2RlY2wwXzM1LmludmFsaWQgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzM1Lkljb25VcGxvYWQ7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMzgudHJhbnNmb3JtKF9kZWNsMF8zNS5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKF9kZWNsMF8zNS52YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWRCdXR0b25VcGxvYWQpKTtcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgcGRfNTphbnkgPSAoKDxhbnk+X2RlY2wwXzM1LnVwbG9hZChfYW55LnVwbG9hZElkKSkgIT09IGZhbHNlKTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnRfMl85KCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAoX2RlY2wwXzM1LmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzM1LkNvbnRyb2xIZWlnaHQuU21hbGwpO1xuICBjdXJyVmFsXzA7XG4gIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAoX2RlY2wwXzM1LmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzM1LkNvbnRyb2xIZWlnaHQuTGFyZ2UpO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAoX2RlY2wwXzM1LmludmFsaWQgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpO1xuICBjdXJyVmFsXzI7XG4gIGNvbnN0IGN1cnJWYWxfMzphbnkgPSAoX2FueS5wcm9ncmVzcyA9PT0gMTAwKTtcbiAgY3VyclZhbF8zO1xuICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2FueS5wcm9ncmVzcztcbiAgY3VyclZhbF80O1xuICBjb25zdCBjdXJyVmFsXzU6YW55ID0gX2FueS5wcm9ncmVzcztcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gX2FueS5uYW1lO1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAhKF9kZWNsMF8zNS5pbnZhbGlkICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgY3VyclZhbF83O1xuICBjb25zdCBjdXJyVmFsXzg6YW55ID0gKF9kZWNsMF8zNS5pbnZhbGlkICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgY3VyclZhbF84O1xuICBjb25zdCBjdXJyVmFsXzk6YW55ID0gX2RlY2wwXzM1Lkljb25EZWxldGU7XG4gIGN1cnJWYWxfOTtcbiAgY29uc3QgY3VyclZhbF8xMDphbnkgPSAoKChfZGVjbDBfMzUuYXV0b3VwbG9hZCA9PT0gZmFsc2UpICYmIF9kZWNsMF8zNS5lbmFibGVwYXVzZSkgfHwgKChfZGVjbDBfMzUuYXV0b3VwbG9hZCAmJiBfZGVjbDBfMzUuZW5hYmxlcGF1c2UpICYmIChfYW55LnN0YXR1cyAhPT0gJ3BhdXNlZCcpKSk7XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gKChfZGVjbDBfMzUuYXV0b3VwbG9hZCAmJiBfZGVjbDBfMzUuZW5hYmxlcGF1c2UpICYmIChfYW55LnN0YXR1cyA9PT0gJ3BhdXNlZCcpKTtcbiAgY3VyclZhbF8xMTtcbiAgY29uc3QgY3VyclZhbF8xMjphbnkgPSAoX2RlY2wwXzM1LmF1dG91cGxvYWQgPT09IGZhbHNlKTtcbiAgY3VyclZhbF8xMjtcbiAgY29uc3QgcGRfMTM6YW55ID0gKCg8YW55Pl9kZWNsMF8zNS5jYW5jZWwoX2FueS51cGxvYWRJZCkpICE9PSBmYWxzZSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudF8yXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3VyclZhbF8wOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzUubmFtZSwnJyk7XG4gIGN1cnJWYWxfMDtcbiAgY29uc3QgY3VyclZhbF8xOmFueSA9IF9kZWNsMF8zNS5kaXNhYmxlbGFiZWw7XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9ICgoX2RlY2wwXzM1LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpICYmICFfZGVjbDBfMzUuaXNBZGFwdGl2ZUxhYmVsKTtcbiAgY3VyclZhbF8yO1xuICBjb25zdCBjdXJyVmFsXzM6YW55ID0gJ2NvbC0xMic7XG4gIGN1cnJWYWxfMztcbiAgY29uc3QgY3VyclZhbF80OmFueSA9IFsoKF9kZWNsMF8zNS5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzUyLnRyYW5zZm9ybShfZGVjbDBfMzUubGFiZWxTaXplcyk6ICcnKV07XG4gIGN1cnJWYWxfNDtcbiAgY29uc3QgY3VyclZhbF81OmFueSA9ICgoKF9kZWNsMF8zNS5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM1LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMzUuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gKChfZGVjbDBfMzUuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzM1LmludmFsaWQpICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgY3VyclZhbF82O1xuICBjb25zdCBjdXJyVmFsXzc6YW55ID0gKF9kZWNsMF8zNS5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zNS5Db250cm9sSGVpZ2h0LlNtYWxsKTtcbiAgY3VyclZhbF83O1xuICBjb25zdCBjdXJyVmFsXzg6YW55ID0gKF9kZWNsMF8zNS5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zNS5Db250cm9sSGVpZ2h0LkxhcmdlKTtcbiAgY3VyclZhbF84O1xuICBjb25zdCBjdXJyVmFsXzk6YW55ID0gKChfZGVjbDBfMzUuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzM1LmludmFsaWQpICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9ICgoX2RlY2wwXzM1Lm1heGZpbGVzID4gMCkgJiYgKF9kZWNsMF8zNS51cGxvYWRzLmxlbmd0aCA+PSBfZGVjbDBfMzUubWF4ZmlsZXMpKTtcbiAgY3VyclZhbF8xMDtcbiAgY29uc3QgY3VyclZhbF8xMTphbnkgPSAhKF9kZWNsMF8zNS5pbnZhbGlkICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8xMTtcbiAgY29uc3QgY3VyclZhbF8xMjphbnkgPSAoX2RlY2wwXzM1LmludmFsaWQgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpO1xuICBjdXJyVmFsXzEyO1xuICBjb25zdCBjdXJyVmFsXzEzOmFueSA9IF9kZWNsMF8zNS5JY29uQnJvd3NlO1xuICBjdXJyVmFsXzEzO1xuICBjb25zdCBjdXJyVmFsXzE0OmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzUubmFtZSwnX3VwbG9hZGlucHV0Jyk7XG4gIGN1cnJWYWxfMTQ7XG4gIGNvbnN0IGN1cnJWYWxfMTU6YW55ID0gKChfZGVjbDBfMzUubWF4ZmlsZXMgPiAwKSAmJiAoX2RlY2wwXzM1LnVwbG9hZHMubGVuZ3RoID49IF9kZWNsMF8zNS5tYXhmaWxlcykpO1xuICBjdXJyVmFsXzE1O1xuICBjb25zdCBjdXJyVmFsXzE2OmFueSA9IChfZGVjbDBfMzUuY29tcG9uZW50SGVpZ2h0ID09PSBfZGVjbDBfMzUuQ29udHJvbEhlaWdodC5TbWFsbCk7XG4gIGN1cnJWYWxfMTY7XG4gIGNvbnN0IGN1cnJWYWxfMTc6YW55ID0gKF9kZWNsMF8zNS5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zNS5Db250cm9sSGVpZ2h0LkxhcmdlKTtcbiAgY3VyclZhbF8xNztcbiAgY29uc3QgY3VyclZhbF8xODphbnkgPSAoKF9kZWNsMF8zNS5IYXNRdWV1ZUl0ZW0oKSA9PT0gZmFsc2UpPyAnZGlzYWJsZWQnOiBudWxsKTtcbiAgY3VyclZhbF8xODtcbiAgY29uc3QgY3VyclZhbF8xOTphbnkgPSAhKF9kZWNsMF8zNS5pbnZhbGlkICYmIChfZGVjbDBfMzUuZGlydHkgfHwgX2RlY2wwXzM1LnRvdWNoZWQpKTtcbiAgY3VyclZhbF8xOTtcbiAgY29uc3QgY3VyclZhbF8yMDphbnkgPSAoX2RlY2wwXzM1LmludmFsaWQgJiYgKF9kZWNsMF8zNS5kaXJ0eSB8fCBfZGVjbDBfMzUudG91Y2hlZCkpO1xuICBjdXJyVmFsXzIwO1xuICBjb25zdCBjdXJyVmFsXzIxOmFueSA9IF9kZWNsMF8zNS5JY29uRGVsZXRlO1xuICBjdXJyVmFsXzIxO1xuICBjb25zdCBjdXJyVmFsXzIyOmFueSA9ICgoKF9kZWNsMF8zNS5hdXRvdXBsb2FkID09PSBmYWxzZSkgJiYgX2RlY2wwXzM1LmVuYWJsZXBhdXNlKSB8fCAoKF9kZWNsMF8zNS5hdXRvdXBsb2FkICYmIF9kZWNsMF8zNS5lbmFibGVwYXVzZSkgJiYgKF9kZWNsMF8zNS5Jc1BhdXNlZCgpID09PSBmYWxzZSkpKTtcbiAgY3VyclZhbF8yMjtcbiAgY29uc3QgY3VyclZhbF8yMzphbnkgPSAoKF9kZWNsMF8zNS5hdXRvdXBsb2FkICYmIF9kZWNsMF8zNS5lbmFibGVwYXVzZSkgJiYgKF9kZWNsMF8zNS5Jc1BhdXNlZCgpID09PSB0cnVlKSk7XG4gIGN1cnJWYWxfMjM7XG4gIGNvbnN0IGN1cnJWYWxfMjQ6YW55ID0gKF9kZWNsMF8zNS5hdXRvdXBsb2FkID09PSBmYWxzZSk7XG4gIGN1cnJWYWxfMjQ7XG4gIGNvbnN0IGN1cnJWYWxfMjU6YW55ID0gKCgoX2RlY2wwXzM1LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMzUuaGVscHRleHQpICYmIF9kZWNsMF8zNS5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzI1O1xuICBjb25zdCBjdXJyVmFsXzI2OmFueSA9ICgoX2RlY2wwXzM1LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8zNS5pbnZhbGlkKSAmJiAoX2RlY2wwXzM1LmRpcnR5IHx8IF9kZWNsMF8zNS50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMjY7XG4gIGNvbnN0IGN1cnJWYWxfMjc6YW55ID0gKChfZGVjbDBfMzUuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8zNS5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfMjc7XG4gIGNvbnN0IGN1cnJWYWxfMjg6YW55ID0gX2RlY2wwXzM1LnVwbG9hZHM7XG4gIGN1cnJWYWxfMjg7XG4gIGNvbnN0IHBkXzI5OmFueSA9ICgoPGFueT4oX2FueS52YWx1ZSA9ICcnKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMzA6YW55ID0gKCg8YW55Pl9kZWNsMF8zNS5vblVwbG9hZChfYW55KSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMzE6YW55ID0gKCg8YW55Pl9kZWNsMF8zNS5jYW5jZWxBbGwoKSkgIT09IGZhbHNlKTtcbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0Ryb3B6b25lU2luZ2xlQ29tcG9uZW50X0hvc3RfM18wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZVNpbmdsZUNvbXBvbmVudF8zXzIoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8zNi5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKSAmJiAhX2RlY2wwXzM2LmlzQWRhcHRpdmVMYWJlbCkgJiYgKChfZGVjbDBfMzYuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8zNi5oZWxwdGV4dCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM2LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9ICdtcy0xJztcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IF9kZWNsMF8zNi5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfMztcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVTaW5nbGVDb21wb25lbnRfM18xKCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNi5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKSAmJiAhX2RlY2wwXzM2LmlzQWRhcHRpdmVMYWJlbCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAnY29sLTEyIGNvbC1mb3JtLWxhYmVsIGQtZmxleCc7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBbKChfZGVjbDBfMzYuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF81NC50cmFuc2Zvcm0oX2RlY2wwXzM2LmxhYmVsU2l6ZXMpOiAndmlzdWFsbHktaGlkZGVuJyksXG4gICAgICAgIF9kZWNsMF81My50cmFuc2Zvcm0oX2RlY2wwXzM2LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gaTAuybVpbmxpbmVJbnRlcnBvbGF0ZSgxLCcnLF9kZWNsMF8zNi5uYW1lLCdfbGFiZWwnKTtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzYubmFtZSwnX3VwbG9hZGlucHV0Jyk7XG4gICAgY3VyclZhbF8zO1xuICAgIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBfZGVjbDBfMzYuaXNyZXF1aXJlZDtcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8zNi5zcGxpdGxhYmVsYW5kaGVscHRleHQ7XG4gICAgY3VyclZhbF81O1xuICAgIGNvbnN0IGN1cnJWYWxfNjphbnkgPSBfZGVjbDBfMzYubGFiZWw7XG4gICAgY3VyclZhbF82O1xuICAgIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAoKF9kZWNsMF8zNi5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM2LmhlbHB0ZXh0KTtcbiAgICBjdXJyVmFsXzc7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0Ryb3B6b25lU2luZ2xlQ29tcG9uZW50XzNfMygpOnZvaWQge1xuICBpZiAoKF9kZWNsMF8zNi51cGxvYWRzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAoKF9kZWNsMF8zNi5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMzYuaW52YWxpZCkgJiYgKF9kZWNsMF8zNi5kaXJ0eSB8fCBfZGVjbDBfMzYudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVTaW5nbGVDb21wb25lbnRfM181KCk6dm9pZCB7XG4gIGlmICgoX2RlY2wwXzM2LnVwbG9hZHMubGVuZ3RoID4gMCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAoX2RlY2wwXzM2LmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzM2LkNvbnRyb2xIZWlnaHQuU21hbGwpO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gKF9kZWNsMF8zNi5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zNi5Db250cm9sSGVpZ2h0LkxhcmdlKTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IChfYW55LnByb2dyZXNzID09PSAxMDApO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2FueS5wcm9ncmVzcztcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9IF9hbnkucHJvZ3Jlc3M7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfYW55Lm5hbWU7XG4gICAgY3VyclZhbF81O1xuICAgIGNvbnN0IGN1cnJWYWxfNjphbnkgPSAhKF9kZWNsMF8zNi5pbnZhbGlkICYmIChfZGVjbDBfMzYuZGlydHkgfHwgX2RlY2wwXzM2LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzY7XG4gICAgY29uc3QgY3VyclZhbF83OmFueSA9IChfZGVjbDBfMzYuaW52YWxpZCAmJiAoX2RlY2wwXzM2LmRpcnR5IHx8IF9kZWNsMF8zNi50b3VjaGVkKSk7XG4gICAgY3VyclZhbF83O1xuICAgIGNvbnN0IGN1cnJWYWxfODphbnkgPSBfZGVjbDBfMzYuSWNvbkRlbGV0ZTtcbiAgICBjdXJyVmFsXzg7XG4gICAgY29uc3QgcGRfOTphbnkgPSAoKDxhbnk+X2RlY2wwXzM2LmNhbmNlbChfYW55LnVwbG9hZElkKSkgIT09IGZhbHNlKTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVTaW5nbGVDb21wb25lbnRfM180KCk6dm9pZCB7XG4gIGlmICgoX2RlY2wwXzM2LnVwbG9hZHMubGVuZ3RoID4gMCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMzYudXBsb2FkcztcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0Ryb3B6b25lU2luZ2xlQ29tcG9uZW50XzNfNigpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMzYuaXNpbmxpbmVlcnJvcmVuYWJsZWQgJiYgX2RlY2wwXzM2LmludmFsaWQpICYmIChfZGVjbDBfMzYuZGlydHkgfHwgX2RlY2wwXzM2LnRvdWNoZWQpKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IF9kZWNsMF8zOC50cmFuc2Zvcm0oX2RlY2wwXzM2LkdldEVycm9yTWVzc2FnZSgpKTtcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0Ryb3B6b25lU2luZ2xlQ29tcG9uZW50XzNfNygpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMzYuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8zNi5oZWxwdGV4dCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMzYuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZVNpbmdsZUNvbXBvbmVudF8zXzgoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8zNi5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM2LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMzYuZGlzYWJsZWxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0IGFsaWduLXNlbGYtdG9wIG1zLTIgbWUtMSB3LWF1dG8nO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gW19kZWNsMF81MS50cmFuc2Zvcm0oX2RlY2wwXzM2LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzM2LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8zNi5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfNTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVTaW5nbGVDb21wb25lbnRfM18wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzM2Lm5hbWUsJycpO1xuICBjdXJyVmFsXzA7XG4gIGNvbnN0IGN1cnJWYWxfMTphbnkgPSBfZGVjbDBfMzYuZGlzYWJsZWxhYmVsO1xuICBjdXJyVmFsXzE7XG4gIGNvbnN0IGN1cnJWYWxfMjphbnkgPSAoKF9kZWNsMF8zNi5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKSAmJiAhX2RlY2wwXzM2LmlzQWRhcHRpdmVMYWJlbCk7XG4gIGN1cnJWYWxfMjtcbiAgY29uc3QgY3VyclZhbF8zOmFueSA9ICdjb2wtMTInO1xuICBjdXJyVmFsXzM7XG4gIGNvbnN0IGN1cnJWYWxfNDphbnkgPSBbKChfZGVjbDBfMzYuZGlzYWJsZWxhYmVsID09PSBmYWxzZSk/IF9kZWNsMF81Mi50cmFuc2Zvcm0oX2RlY2wwXzM2LmxhYmVsU2l6ZXMpOiAnJyldO1xuICBjdXJyVmFsXzQ7XG4gIGNvbnN0IGN1cnJWYWxfNTphbnkgPSAoKChfZGVjbDBfMzYuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8zNi5oZWxwdGV4dCkgJiYgX2RlY2wwXzM2LmRpc2FibGVsYWJlbCk7XG4gIGN1cnJWYWxfNTtcbiAgY29uc3QgY3VyclZhbF82OmFueSA9ICgoKF9kZWNsMF8zNi5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM2LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMzYuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF82O1xuICBjb25zdCBjdXJyVmFsXzc6YW55ID0gX2RlY2wwXzM2LnVwbG9hZGhlaWdodDtcbiAgY3VyclZhbF83O1xuICBjb25zdCBjdXJyVmFsXzg6YW55ID0gX2RlY2wwXzM2LmFjdGl2ZTtcbiAgY3VyclZhbF84O1xuICBjb25zdCBjdXJyVmFsXzk6YW55ID0gKF9kZWNsMF8zNi5pbnZhbGlkICYmIChfZGVjbDBfMzYuZGlydHkgfHwgX2RlY2wwXzM2LnRvdWNoZWQpKTtcbiAgY3VyclZhbF85O1xuICBjb25zdCBjdXJyVmFsXzEwOmFueSA9IChfZGVjbDBfMzYudXBsb2Fkcy5sZW5ndGggPT09IDApO1xuICBjdXJyVmFsXzEwO1xuICBjb25zdCBjdXJyVmFsXzExOmFueSA9IChfZGVjbDBfMzYudXBsb2Fkcy5sZW5ndGggPiAwKTtcbiAgY3VyclZhbF8xMTtcbiAgY29uc3QgY3VyclZhbF8xMjphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzM2Lm5hbWUsJ191cGxvYWRpbnB1dCcpO1xuICBjdXJyVmFsXzEyO1xuICBjb25zdCBjdXJyVmFsXzEzOmFueSA9IF9kZWNsMF8zNi5IYXNRdWV1ZUl0ZW0oKTtcbiAgY3VyclZhbF8xMztcbiAgY29uc3QgY3VyclZhbF8xNDphbnkgPSAoKF9kZWNsMF8zNi5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMzYuaW52YWxpZCkgJiYgKF9kZWNsMF8zNi5kaXJ0eSB8fCBfZGVjbDBfMzYudG91Y2hlZCkpO1xuICBjdXJyVmFsXzE0O1xuICBjb25zdCBjdXJyVmFsXzE1OmFueSA9ICgoX2RlY2wwXzM2LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMzYuaGVscHRleHQpO1xuICBjdXJyVmFsXzE1O1xuICBjb25zdCBjdXJyVmFsXzE2OmFueSA9ICgoKF9kZWNsMF8zNi5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM2LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMzYuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF8xNjtcbiAgY29uc3QgcGRfMTc6YW55ID0gKCg8YW55Pl9kZWNsMF8zNi5kcm9wSGFuZGxlcihfYW55KSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMTg6YW55ID0gKCg8YW55Pl9kZWNsMF8zNi5vbkRyYWdPdmVyKF9hbnkpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8xOTphbnkgPSAoKDxhbnk+X2RlY2wwXzM2Lm9uRHJhZ0xlYXZlKF9hbnkpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8yMDphbnkgPSAoKDxhbnk+KF9hbnkudmFsdWUgPSAnJykpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzIxOmFueSA9ICgoPGFueT5fZGVjbDBfMzYub25VcGxvYWQoX2FueSkpICE9PSBmYWxzZSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZU11bHRpcGxlQ29tcG9uZW50X0hvc3RfNF8wKCk6dm9pZCB7XG4gIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZU11bHRpcGxlQ29tcG9uZW50XzRfMigpOnZvaWQge1xuICBpZiAoKCgoX2RlY2wwXzM3LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpICYmICFfZGVjbDBfMzcuaXNBZGFwdGl2ZUxhYmVsKSAmJiAoKF9kZWNsMF8zNy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM3LmhlbHB0ZXh0KSkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMzcuaGVscHRleHQ7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSB0cnVlO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gJ21zLTEnO1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gX2RlY2wwXzM3LkhlbHB0ZXh0VG9vbHRpcEljb247XG4gICAgY3VyclZhbF8zO1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZU11bHRpcGxlQ29tcG9uZW50XzRfMSgpOnZvaWQge1xuICBpZiAoKChfZGVjbDBfMzcuZGlzYWJsZWxhYmVsID09PSBmYWxzZSkgJiYgIV9kZWNsMF8zNy5pc0FkYXB0aXZlTGFiZWwpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gJ2NvbC0xMiBjb2wtZm9ybS1sYWJlbCBkLWZsZXgnO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gWygoX2RlY2wwXzM3LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpPyBfZGVjbDBfNTQudHJhbnNmb3JtKF9kZWNsMF8zNy5sYWJlbFNpemVzKTogJ3Zpc3VhbGx5LWhpZGRlbicpLFxuICAgICAgICBfZGVjbDBfNTMudHJhbnNmb3JtKF9kZWNsMF8zNy5jb21wb25lbnRIZWlnaHQpXTtcbiAgICBjdXJyVmFsXzE7XG4gICAgY29uc3QgY3VyclZhbF8yOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzcubmFtZSwnX2xhYmVsJyk7XG4gICAgY3VyclZhbF8yO1xuICAgIGNvbnN0IGN1cnJWYWxfMzphbnkgPSBpMC7JtWlubGluZUludGVycG9sYXRlKDEsJycsX2RlY2wwXzM3Lm5hbWUsJ191cGxvYWRpbnB1dCcpO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2RlY2wwXzM3LmlzcmVxdWlyZWQ7XG4gICAgY3VyclZhbF80O1xuICAgIGNvbnN0IGN1cnJWYWxfNTphbnkgPSBfZGVjbDBfMzcuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfNTtcbiAgICBjb25zdCBjdXJyVmFsXzY6YW55ID0gX2RlY2wwXzM3LmxhYmVsO1xuICAgIGN1cnJWYWxfNjtcbiAgICBjb25zdCBjdXJyVmFsXzc6YW55ID0gKChfZGVjbDBfMzcuaGVscHRleHRtb2RlID09PSAndG9vbHRpcCcpICYmIF9kZWNsMF8zNy5oZWxwdGV4dCk7XG4gICAgY3VyclZhbF83O1xuICB9XG59XG5mdW5jdGlvbiBfVmlld19TYWNEcm9wem9uZU11bHRpcGxlQ29tcG9uZW50XzRfMygpOnZvaWQge1xuICBpZiAoKF9kZWNsMF8zNy51cGxvYWRzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSAoKF9kZWNsMF8zNy5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMzcuaW52YWxpZCkgJiYgKF9kZWNsMF8zNy5kaXJ0eSB8fCBfZGVjbDBfMzcudG91Y2hlZCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudF80XzUoKTp2b2lkIHtcbiAgaWYgKChfZGVjbDBfMzcudXBsb2Fkcy5sZW5ndGggPiAwKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9IChfYW55ID4gMCk7XG4gICAgY3VyclZhbF8wO1xuICAgIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAoX2RlY2wwXzM3LmNvbXBvbmVudEhlaWdodCA9PT0gX2RlY2wwXzM3LkNvbnRyb2xIZWlnaHQuU21hbGwpO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gKF9kZWNsMF8zNy5jb21wb25lbnRIZWlnaHQgPT09IF9kZWNsMF8zNy5Db250cm9sSGVpZ2h0LkxhcmdlKTtcbiAgICBjdXJyVmFsXzI7XG4gICAgY29uc3QgY3VyclZhbF8zOmFueSA9IChfYW55LnByb2dyZXNzID09PSAxMDApO1xuICAgIGN1cnJWYWxfMztcbiAgICBjb25zdCBjdXJyVmFsXzQ6YW55ID0gX2FueS5wcm9ncmVzcztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9hbnkucHJvZ3Jlc3M7XG4gICAgY3VyclZhbF81O1xuICAgIGNvbnN0IGN1cnJWYWxfNjphbnkgPSBfYW55Lm5hbWU7XG4gICAgY3VyclZhbF82O1xuICAgIGNvbnN0IGN1cnJWYWxfNzphbnkgPSAhKF9kZWNsMF8zNy5pbnZhbGlkICYmIChfZGVjbDBfMzcuZGlydHkgfHwgX2RlY2wwXzM3LnRvdWNoZWQpKTtcbiAgICBjdXJyVmFsXzc7XG4gICAgY29uc3QgY3VyclZhbF84OmFueSA9IChfZGVjbDBfMzcuaW52YWxpZCAmJiAoX2RlY2wwXzM3LmRpcnR5IHx8IF9kZWNsMF8zNy50b3VjaGVkKSk7XG4gICAgY3VyclZhbF84O1xuICAgIGNvbnN0IGN1cnJWYWxfOTphbnkgPSBfZGVjbDBfMzcuSWNvbkRlbGV0ZTtcbiAgICBjdXJyVmFsXzk7XG4gICAgY29uc3QgcGRfMTA6YW55ID0gKCg8YW55Pl9kZWNsMF8zNy5jYW5jZWwoX2FueS51cGxvYWRJZCkpICE9PSBmYWxzZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0Ryb3B6b25lTXVsdGlwbGVDb21wb25lbnRfNF80KCk6dm9pZCB7XG4gIGlmICgoX2RlY2wwXzM3LnVwbG9hZHMubGVuZ3RoID4gMCkpIHtcbiAgICB2YXIgX2FueTphbnkgPSAobnVsbCBhcyBhbnkpO1xuICAgIGNvbnN0IGN1cnJWYWxfMDphbnkgPSBfZGVjbDBfMzcudXBsb2FkcztcbiAgICBjdXJyVmFsXzA7XG4gIH1cbn1cbmZ1bmN0aW9uIF9WaWV3X1NhY0Ryb3B6b25lTXVsdGlwbGVDb21wb25lbnRfNF82KCk6dm9pZCB7XG4gIGlmICgoKF9kZWNsMF8zNy5pc2lubGluZWVycm9yZW5hYmxlZCAmJiBfZGVjbDBfMzcuaW52YWxpZCkgJiYgKF9kZWNsMF8zNy5kaXJ0eSB8fCBfZGVjbDBfMzcudG91Y2hlZCkpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM4LnRyYW5zZm9ybShfZGVjbDBfMzcuR2V0RXJyb3JNZXNzYWdlKCkpO1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudF80XzcoKTp2b2lkIHtcbiAgaWYgKCgoX2RlY2wwXzM3LmhlbHB0ZXh0bW9kZSA9PT0gJ3RleHQnKSAmJiBfZGVjbDBfMzcuaGVscHRleHQpKSB7XG4gICAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgICBjb25zdCBjdXJyVmFsXzA6YW55ID0gX2RlY2wwXzM3LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMDtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudF80XzgoKTp2b2lkIHtcbiAgaWYgKCgoKF9kZWNsMF8zNy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM3LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMzcuZGlzYWJsZWxhYmVsKSkge1xuICAgIHZhciBfYW55OmFueSA9IChudWxsIGFzIGFueSk7XG4gICAgY29uc3QgY3VyclZhbF8wOmFueSA9ICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0IGFsaWduLXNlbGYtdG9wIG1zLTIgbWUtMSB3LWF1dG8nO1xuICAgIGN1cnJWYWxfMDtcbiAgICBjb25zdCBjdXJyVmFsXzE6YW55ID0gW19kZWNsMF81MS50cmFuc2Zvcm0oX2RlY2wwXzM3LmNvbXBvbmVudEhlaWdodCldO1xuICAgIGN1cnJWYWxfMTtcbiAgICBjb25zdCBjdXJyVmFsXzI6YW55ID0gX2RlY2wwXzM3LmhlbHB0ZXh0O1xuICAgIGN1cnJWYWxfMjtcbiAgICBjb25zdCBjdXJyVmFsXzM6YW55ID0gdHJ1ZTtcbiAgICBjdXJyVmFsXzM7XG4gICAgY29uc3QgY3VyclZhbF80OmFueSA9ICdtbC0xJztcbiAgICBjdXJyVmFsXzQ7XG4gICAgY29uc3QgY3VyclZhbF81OmFueSA9IF9kZWNsMF8zNy5IZWxwdGV4dFRvb2x0aXBJY29uO1xuICAgIGN1cnJWYWxfNTtcbiAgfVxufVxuZnVuY3Rpb24gX1ZpZXdfU2FjRHJvcHpvbmVNdWx0aXBsZUNvbXBvbmVudF80XzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3VyclZhbF8wOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzcubmFtZSwnJyk7XG4gIGN1cnJWYWxfMDtcbiAgY29uc3QgY3VyclZhbF8xOmFueSA9IF9kZWNsMF8zNy5kaXNhYmxlbGFiZWw7XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9ICgoX2RlY2wwXzM3LmRpc2FibGVsYWJlbCA9PT0gZmFsc2UpICYmICFfZGVjbDBfMzcuaXNBZGFwdGl2ZUxhYmVsKTtcbiAgY3VyclZhbF8yO1xuICBjb25zdCBjdXJyVmFsXzM6YW55ID0gJ2NvbC0xMic7XG4gIGN1cnJWYWxfMztcbiAgY29uc3QgY3VyclZhbF80OmFueSA9IFsoKF9kZWNsMF8zNy5kaXNhYmxlbGFiZWwgPT09IGZhbHNlKT8gX2RlY2wwXzUyLnRyYW5zZm9ybShfZGVjbDBfMzcubGFiZWxTaXplcyk6ICcnKV07XG4gIGN1cnJWYWxfNDtcbiAgY29uc3QgY3VyclZhbF81OmFueSA9ICgoKF9kZWNsMF8zNy5oZWxwdGV4dG1vZGUgPT09ICd0b29sdGlwJykgJiYgX2RlY2wwXzM3LmhlbHB0ZXh0KSAmJiBfZGVjbDBfMzcuZGlzYWJsZWxhYmVsKTtcbiAgY3VyclZhbF81O1xuICBjb25zdCBjdXJyVmFsXzY6YW55ID0gKCgoX2RlY2wwXzM3LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMzcuaGVscHRleHQpICYmIF9kZWNsMF8zNy5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzY7XG4gIGNvbnN0IGN1cnJWYWxfNzphbnkgPSBfZGVjbDBfMzcuYWN0aXZlO1xuICBjdXJyVmFsXzc7XG4gIGNvbnN0IGN1cnJWYWxfODphbnkgPSBfZGVjbDBfMzcudXBsb2FkaGVpZ2h0O1xuICBjdXJyVmFsXzg7XG4gIGNvbnN0IGN1cnJWYWxfOTphbnkgPSAoX2RlY2wwXzM3LmludmFsaWQgJiYgKF9kZWNsMF8zNy5kaXJ0eSB8fCBfZGVjbDBfMzcudG91Y2hlZCkpO1xuICBjdXJyVmFsXzk7XG4gIGNvbnN0IGN1cnJWYWxfMTA6YW55ID0gKF9kZWNsMF8zNy51cGxvYWRzLmxlbmd0aCA9PT0gMCk7XG4gIGN1cnJWYWxfMTA7XG4gIGNvbnN0IGN1cnJWYWxfMTE6YW55ID0gKF9kZWNsMF8zNy51cGxvYWRzLmxlbmd0aCA+IDApO1xuICBjdXJyVmFsXzExO1xuICBjb25zdCBjdXJyVmFsXzEyOmFueSA9IGkwLsm1aW5saW5lSW50ZXJwb2xhdGUoMSwnJyxfZGVjbDBfMzcubmFtZSwnX3VwbG9hZGlucHV0Jyk7XG4gIGN1cnJWYWxfMTI7XG4gIGNvbnN0IGN1cnJWYWxfMTM6YW55ID0gX2RlY2wwXzM3Lkhhc1F1ZXVlSXRlbSgpO1xuICBjdXJyVmFsXzEzO1xuICBjb25zdCBjdXJyVmFsXzE0OmFueSA9ICgoX2RlY2wwXzM3LmlzaW5saW5lZXJyb3JlbmFibGVkICYmIF9kZWNsMF8zNy5pbnZhbGlkKSAmJiAoX2RlY2wwXzM3LmRpcnR5IHx8IF9kZWNsMF8zNy50b3VjaGVkKSk7XG4gIGN1cnJWYWxfMTQ7XG4gIGNvbnN0IGN1cnJWYWxfMTU6YW55ID0gKChfZGVjbDBfMzcuaGVscHRleHRtb2RlID09PSAndGV4dCcpICYmIF9kZWNsMF8zNy5oZWxwdGV4dCk7XG4gIGN1cnJWYWxfMTU7XG4gIGNvbnN0IGN1cnJWYWxfMTY6YW55ID0gKCgoX2RlY2wwXzM3LmhlbHB0ZXh0bW9kZSA9PT0gJ3Rvb2x0aXAnKSAmJiBfZGVjbDBfMzcuaGVscHRleHQpICYmIF9kZWNsMF8zNy5kaXNhYmxlbGFiZWwpO1xuICBjdXJyVmFsXzE2O1xuICBjb25zdCBwZF8xNzphbnkgPSAoKDxhbnk+X2RlY2wwXzM3LmRyb3BIYW5kbGVyKF9hbnkpKSAhPT0gZmFsc2UpO1xuICBjb25zdCBwZF8xODphbnkgPSAoKDxhbnk+X2RlY2wwXzM3Lm9uRHJhZ092ZXIoX2FueSkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzE5OmFueSA9ICgoPGFueT5fZGVjbDBfMzcub25EcmFnTGVhdmUoX2FueSkpICE9PSBmYWxzZSk7XG4gIGNvbnN0IHBkXzIwOmFueSA9ICgoPGFueT4oX2FueS52YWx1ZSA9ICcnKSkgIT09IGZhbHNlKTtcbiAgY29uc3QgcGRfMjE6YW55ID0gKCg8YW55Pl9kZWNsMF8zNy5vblVwbG9hZChfYW55KSkgIT09IGZhbHNlKTtcbn1cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SacFormLayoutDirective } from '../layout/formlayout.directive';
|
|
2
|
+
import { Component, Host, Injector, NgZone, Optional, Renderer2, forwardRef } from '@angular/core';
|
|
2
3
|
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
4
|
import { SacUploadMultipleCommon } from '@simpleangularcontrols/sac-common';
|
|
4
|
-
import { SacFormLayoutDirective } from '../layout/formlayout.directive';
|
|
5
5
|
/**
|
|
6
6
|
* Upload Komponente für den Upload mehrer Files
|
|
7
7
|
* @see https://github.com/kukhariev/ngx-uploadx/
|
|
@@ -22,7 +22,7 @@ export class SacUploadMultipleComponent extends SacUploadMultipleCommon {
|
|
|
22
22
|
SacUploadMultipleComponent.decorators = [
|
|
23
23
|
{ type: Component, args: [{
|
|
24
24
|
selector: 'sac-uploadmultiple',
|
|
25
|
-
template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label\"\r\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\r\n >\r\n <div class=\"upload-component\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div\r\n class=\"btn-group\"\r\n [class.btn-group-sm]=\"componentHeight === ControlHeight.Small\"\r\n [class.btn-group-lg]=\"componentHeight === ControlHeight.Large\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <div\r\n class=\"btn upload-input custom-file\"\r\n [class.disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <i [class]=\"IconBrowse\" class=\"pe-2\"></i>\r\n <span class=\"upload-browse\">Browse</span>\r\n <input\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n #files\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n multiple\r\n [disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\"\r\n />\r\n </div>\r\n\r\n <div\r\n class=\"btn-group\"\r\n [class.btn-group-sm]=\"componentHeight === ControlHeight.Small\"\r\n [class.btn-group-lg]=\"componentHeight === ControlHeight.Large\"\r\n >\r\n <!-- image-preview-clear button -->\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancelAll()\"\r\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\r\n class=\"btn\"\r\n (click)=\"pauseAll()\"\r\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && IsPaused() === true\"\r\n class=\"btn\"\r\n (click)=\"uploadAll()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"uploadAll()\"\r\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconUpload\" class=\"pe-2\"></span> {{\r\n lngResourceService.GetString(validationKeyService.UploadButtonUpload)\r\n | async }}\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let file of uploads\" style=\"margin-top: 5px\">\r\n <div\r\n class=\"input-group upload-component upload-multiple\"\r\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\r\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\r\n >\r\n <div\r\n class=\"form-control upload-progress\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n >\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"file.progress===100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"file.progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"file.progress\"\r\n >\r\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancel(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && file.status !== 'paused')\"\r\n class=\"btn\"\r\n (click)=\"pause(file.uploadId)\"\r\n [attr.disabled]=\"file.status !== 'uploading' ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && file.status === 'paused'\"\r\n class=\"btn\"\r\n (click)=\"upload(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"upload(file.uploadId)\"\r\n [attr.disabled]=\"file.status !== 'added' && file.status !== 'paused' ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconUpload\" class=\"pe-2\"></span>{{\r\n lngResourceService.GetString(validationKeyService.UploadButtonUpload)\r\n | async }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
25
|
+
template: "<div\r\n id=\"{{ name }}\"\r\n class=\"row mb-3\"\r\n [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\r\n id=\"{{ name }}_label\"\r\n for=\"{{ name }}_uploadinput\"\r\n class=\"col-12 col-form-label d-flex\"\r\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\r\n [class.required]=\"isrequired\">\r\n <div\r\n class=\"text flex-grow-0\"\r\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\r\n {{ label }}\r\n </div>\r\n <sac-tooltip\r\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\r\n [tooltiptext]=\"helptext\"\r\n [inlinemode]=\"true\">\r\n <span\r\n [ngClass]=\"HelptextTooltipIcon\"\r\n class=\"ms-1\">\r\n </span>\r\n </sac-tooltip>\r\n </label>\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\">\r\n <div class=\"upload-component\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div\r\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\r\n <div\r\n class=\"btn-group\"\r\n [class.btn-group-sm]=\"componentHeight === ControlHeight.Small\"\r\n [class.btn-group-lg]=\"componentHeight === ControlHeight.Large\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\r\n <div\r\n class=\"btn upload-input custom-file\"\r\n [class.disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <i\r\n [class]=\"IconBrowse\"\r\n class=\"pe-2\"></i>\r\n <span class=\"upload-browse\">Browse</span>\r\n <input\r\n id=\"{{ name }}_uploadinput\"\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n #files\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n multiple\r\n [disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\" />\r\n </div>\r\n\r\n <div\r\n class=\"btn-group\"\r\n [class.btn-group-sm]=\"componentHeight === ControlHeight.Small\"\r\n [class.btn-group-lg]=\"componentHeight === ControlHeight.Large\">\r\n <!-- image-preview-clear button -->\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancelAll()\"\r\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\r\n class=\"btn\"\r\n (click)=\"pauseAll()\"\r\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && IsPaused() === true\"\r\n class=\"btn\"\r\n (click)=\"uploadAll()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"uploadAll()\"\r\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span\r\n [class]=\"IconUpload\"\r\n class=\"pe-2\"></span>\r\n {{ lngResourceService.GetString(validationKeyService.UploadButtonUpload) | async }}\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\r\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\r\n [ngClass]=\"[componentHeight | toControlHeight]\">\r\n <sac-tooltip\r\n [tooltiptext]=\"helptext\"\r\n [inlinemode]=\"true\">\r\n <span\r\n [ngClass]=\"HelptextTooltipIcon\"\r\n class=\"ml-1\">\r\n </span>\r\n </sac-tooltip>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\">\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n <div\r\n *ngIf=\"helptextmode === 'text' && helptext\"\r\n class=\"form-text\">\r\n {{ helptext }}\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngFor=\"let file of uploads\"\r\n style=\"margin-top: 5px\">\r\n <div\r\n class=\"input-group upload-component upload-multiple\"\r\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\r\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\">\r\n <div\r\n class=\"form-control upload-progress\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\">\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"file.progress === 100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"file.progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"file.progress\">\r\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancel(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && file.status !== 'paused')\"\r\n class=\"btn\"\r\n (click)=\"pause(file.uploadId)\"\r\n [attr.disabled]=\"file.status !== 'uploading' ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && file.status === 'paused'\"\r\n class=\"btn\"\r\n (click)=\"upload(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"upload(file.uploadId)\"\r\n [attr.disabled]=\"file.status !== 'added' && file.status !== 'paused' ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\">\r\n <span\r\n [class]=\"IconUpload\"\r\n class=\"pe-2\"></span\r\n >{{ lngResourceService.GetString(validationKeyService.UploadButtonUpload) | async }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
26
26
|
providers: [
|
|
27
27
|
{
|
|
28
28
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -44,4 +44,4 @@ SacUploadMultipleComponent.ctorParameters = () => [
|
|
|
44
44
|
{ type: Renderer2 },
|
|
45
45
|
{ type: NgZone }
|
|
46
46
|
];
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkbXVsdGlwbGUuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1ib290c3RyYXA1L3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL3VwbG9hZC91cGxvYWRtdWx0aXBsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU1RTs7O0dBR0c7QUFrQkgsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHVCQUF1QjtJQUNuRSx1QkFBdUI7SUFFdkI7Ozs7OztPQU1HO0lBQ0gsWUFDd0IsVUFBa0MsRUFDdEQsUUFBa0IsRUFDbEIsUUFBbUIsRUFDbkIsTUFBYztRQUVkLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDOzs7WUFsQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLHV6V0FBb0M7Z0JBRXBDLFNBQVMsRUFBRTtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixLQUFLLEVBQUUsSUFBSTt3QkFDWCxXQUFXLEVBQUUsMEJBQTBCO3FCQUMxQztvQkFDRDt3QkFDSSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztxQkFDNUQ7aUJBQ0o7O2FBQ0o7OztZQXpCUSxzQkFBc0IsdUJBcUN0QixJQUFJLFlBQUksUUFBUTtZQXBDQyxRQUFRO1lBQW9CLFNBQVM7WUFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuLi9sYXlvdXQvZm9ybWxheW91dC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3QsIEluamVjdG9yLCBOZ1pvbmUsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNhY1VwbG9hZE11bHRpcGxlQ29tbW9uIH0gZnJvbSAnQHNpbXBsZWFuZ3VsYXJjb250cm9scy9zYWMtY29tbW9uJztcclxuXHJcbi8qKlxyXG4gKiBVcGxvYWQgS29tcG9uZW50ZSBmw7xyIGRlbiBVcGxvYWQgbWVocmVyIEZpbGVzXHJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2t1a2hhcmlldi9uZ3gtdXBsb2FkeC9cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzYWMtdXBsb2FkbXVsdGlwbGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZG11bHRpcGxlLmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogU2FjVXBsb2FkTXVsdGlwbGVDb21wb25lbnQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudCksXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYWNVcGxvYWRNdWx0aXBsZUNvbXBvbmVudCBleHRlbmRzIFNhY1VwbG9hZE11bHRpcGxlQ29tbW9uIHtcclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGZvcm1MYXlvdXQgU2FjRm9ybUxheW91dCB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xyXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcclxuICAgICAqIEBwYXJhbSByZW5kZXJlciBBbmd1bGFyIHJlbmRlcmluZyBlbmdpbmVcclxuICAgICAqIEBwYXJhbSBuZ1pvbmUgbmdab25lIHRvIG1hbmFnZSBleHRlcm5hbCBqYXZhc2NyaXB0c1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASG9zdCgpIEBPcHRpb25hbCgpIGZvcm1MYXlvdXQ6IFNhY0Zvcm1MYXlvdXREaXJlY3RpdmUsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgbmdab25lOiBOZ1pvbmVcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGZvcm1MYXlvdXQsIGluamVjdG9yLCByZW5kZXJlciwgbmdab25lKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG59XHJcbiJdfQ==
|
package/esm2015/public-api.js
CHANGED
|
@@ -4,11 +4,10 @@
|
|
|
4
4
|
export * from './components/browser/browser.module';
|
|
5
5
|
export * from './controls/buttons/button.module';
|
|
6
6
|
export * from './controls/checkbox/checkbox.module';
|
|
7
|
-
export { SACBootstrap5ConfirmModule, ServiceConfirm
|
|
7
|
+
export { SACBootstrap5ConfirmModule, ServiceConfirm } from './controls/confirm/confirm.module';
|
|
8
8
|
export * from './controls/contextmenu/contextmenu.module';
|
|
9
9
|
export * from './controls/datetime/datetime.module';
|
|
10
10
|
export * from './controls/dialog/dialog.module';
|
|
11
|
-
export * from './controls/form/form';
|
|
12
11
|
export * from './controls/form/form.module';
|
|
13
12
|
export * from './controls/grid/grid.module';
|
|
14
13
|
export * from './controls/input/input.module';
|
|
@@ -19,7 +18,65 @@ export * from './controls/multilanguage/multilanguage.module';
|
|
|
19
18
|
export * from './controls/static/staticlabel.module';
|
|
20
19
|
export * from './controls/tabs/tabs.module';
|
|
21
20
|
export * from './controls/tinymce/tinymce.module';
|
|
21
|
+
export * from './controls/tooltip/tooltip.module';
|
|
22
22
|
export * from './controls/upload/upload.module';
|
|
23
|
+
export * from './controls/treeview/treeview.module';
|
|
23
24
|
export * from './controls/validation/validationsummary.module';
|
|
24
25
|
export * from './controls/wizard/wizard.module';
|
|
25
|
-
|
|
26
|
+
// Export Controls
|
|
27
|
+
export * from './controls/buttons/button';
|
|
28
|
+
export * from './controls/checkbox/checkbox';
|
|
29
|
+
export * from './controls/checkbox/radiobutton';
|
|
30
|
+
export * from './controls/checkbox/radiobuttons';
|
|
31
|
+
export * from './controls/confirm/confirm';
|
|
32
|
+
export * from './controls/contextmenu/contextmenu';
|
|
33
|
+
export * from './controls/contextmenu/contextmenuanchor';
|
|
34
|
+
export * from './controls/contextmenu/contextmenuitembutton';
|
|
35
|
+
export * from './controls/contextmenu/contextmenuitemsplitter';
|
|
36
|
+
export * from './controls/datetime/date';
|
|
37
|
+
export * from './controls/datetime/dateselector';
|
|
38
|
+
export * from './controls/datetime/datetime';
|
|
39
|
+
export * from './controls/datetime/time';
|
|
40
|
+
export * from './controls/dialog/dialog';
|
|
41
|
+
export * from './controls/form/form';
|
|
42
|
+
export * from './controls/form/inheritform.directive';
|
|
43
|
+
export * from './controls/grid/grid';
|
|
44
|
+
export * from './controls/grid/gridbutton';
|
|
45
|
+
export * from './controls/grid/gridcolumn';
|
|
46
|
+
export * from './controls/grid/gridcolumnaction';
|
|
47
|
+
export * from './controls/grid/gridimage';
|
|
48
|
+
export * from './controls/grid/paging';
|
|
49
|
+
export * from './controls/input/input';
|
|
50
|
+
export * from './controls/input/inputarea';
|
|
51
|
+
export * from './controls/input/inputcurrency';
|
|
52
|
+
export * from './controls/input/inputdecimal';
|
|
53
|
+
export * from './controls/input/inputemail';
|
|
54
|
+
export * from './controls/input/inputinteger';
|
|
55
|
+
export * from './controls/input/inputpassword';
|
|
56
|
+
export * from './controls/input/inputsearch';
|
|
57
|
+
export * from './controls/layout/formlayout.directive';
|
|
58
|
+
export * from './controls/layout/tocontrolheight.pipe';
|
|
59
|
+
export * from './controls/layout/tocontrolwidthcss.pipe';
|
|
60
|
+
export * from './controls/layout/tolabelheight.pipe';
|
|
61
|
+
export * from './controls/layout/tolabelwidthcss.pipe';
|
|
62
|
+
export * from './controls/list/dropdown';
|
|
63
|
+
export * from './controls/list/listbox';
|
|
64
|
+
export * from './controls/multilanguage/multilanguageinput';
|
|
65
|
+
export * from './controls/multilanguage/multilanguageinputarea';
|
|
66
|
+
export * from './controls/static/formcontainer';
|
|
67
|
+
export * from './controls/static/staticlabel';
|
|
68
|
+
export * from './controls/tabs/tab';
|
|
69
|
+
export * from './controls/tabs/tabitem';
|
|
70
|
+
export * from './controls/tinymce/tinymce';
|
|
71
|
+
export * from './controls/tooltip/tooltip';
|
|
72
|
+
export * from './controls/treeview/treeview';
|
|
73
|
+
export * from './controls/upload/dropzonemultiple';
|
|
74
|
+
export * from './controls/upload/dropzonesingle';
|
|
75
|
+
export * from './controls/upload/upload';
|
|
76
|
+
export * from './controls/upload/uploadmultiple';
|
|
77
|
+
export * from './controls/validation/validationsummary';
|
|
78
|
+
export * from './controls/wizard/wizard';
|
|
79
|
+
export * from './controls/wizard/wizarditem';
|
|
80
|
+
// Export Components
|
|
81
|
+
export * from './components/browser/browser';
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWJvb3RzdHJhcDUvc3JjLyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMscUNBQXFDLENBQUM7QUFFcEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxjQUFjLHFDQUFxQyxDQUFDO0FBRXBELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUvRixjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMscUNBQXFDLENBQUM7QUFFcEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGNBQWMsNkJBQTZCLENBQUM7QUFFNUMsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLCtDQUErQyxDQUFDO0FBRTlELGNBQWMsc0NBQXNDLENBQUM7QUFFckQsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxjQUFjLHFDQUFxQyxDQUFDO0FBRXBELGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxrQkFBa0I7QUFDbEIsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLGNBQWMsaUNBQWlDLENBQUM7QUFFaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCxjQUFjLDhDQUE4QyxDQUFDO0FBRTdELGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGNBQWMsOEJBQThCLENBQUM7QUFFN0MsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMsNkJBQTZCLENBQUM7QUFFNUMsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLGdDQUFnQyxDQUFDO0FBRS9DLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxjQUFjLHdDQUF3QyxDQUFDO0FBRXZELGNBQWMsMENBQTBDLENBQUM7QUFFekQsY0FBYyxzQ0FBc0MsQ0FBQztBQUVyRCxjQUFjLHdDQUF3QyxDQUFDO0FBRXZELGNBQWMsMEJBQTBCLENBQUM7QUFFekMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxjQUFjLDZDQUE2QyxDQUFDO0FBRTVELGNBQWMsaURBQWlELENBQUM7QUFFaEUsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELGNBQWMsa0NBQWtDLENBQUM7QUFFakQsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGNBQWMseUNBQXlDLENBQUM7QUFFeEQsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLG9CQUFvQjtBQUNwQixjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHNhYy1ib290c3RyYXA1XHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvYnJvd3Nlci9icm93c2VyLm1vZHVsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2J1dHRvbnMvYnV0dG9uLm1vZHVsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZSc7XHJcblxyXG5leHBvcnQgeyBTQUNCb290c3RyYXA1Q29uZmlybU1vZHVsZSwgU2VydmljZUNvbmZpcm0gfSBmcm9tICcuL2NvbnRyb2xzL2NvbmZpcm0vY29uZmlybS5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9jb250ZXh0bWVudS9jb250ZXh0bWVudS5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9kYXRldGltZS9kYXRldGltZS5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9kaWFsb2cvZGlhbG9nLm1vZHVsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2Zvcm0vZm9ybS5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9ncmlkL2dyaWQubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvaW5wdXQvaW5wdXQubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvbGF5b3V0L2xheW91dC5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9saXN0L2Ryb3Bkb3duLm1vZHVsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2xpc3QvbGlzdC5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9tdWx0aWxhbmd1YWdlL211bHRpbGFuZ3VhZ2UubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvc3RhdGljL3N0YXRpY2xhYmVsLm1vZHVsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL3RhYnMvdGFicy5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy90aW55bWNlL3RpbnltY2UubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL3VwbG9hZC91cGxvYWQubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvdHJlZXZpZXcvdHJlZXZpZXcubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvdmFsaWRhdGlvbi92YWxpZGF0aW9uc3VtbWFyeS5tb2R1bGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy93aXphcmQvd2l6YXJkLm1vZHVsZSc7XHJcblxyXG4vLyBFeHBvcnQgQ29udHJvbHNcclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9idXR0b25zL2J1dHRvbic7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvY2hlY2tib3gvcmFkaW9idXR0b24nO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9jaGVja2JveC9yYWRpb2J1dHRvbnMnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9jb25maXJtL2NvbmZpcm0nO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9jb250ZXh0bWVudS9jb250ZXh0bWVudSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2NvbnRleHRtZW51L2NvbnRleHRtZW51YW5jaG9yJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvY29udGV4dG1lbnUvY29udGV4dG1lbnVpdGVtYnV0dG9uJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvY29udGV4dG1lbnUvY29udGV4dG1lbnVpdGVtc3BsaXR0ZXInO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9kYXRldGltZS9kYXRlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvZGF0ZXRpbWUvZGF0ZXNlbGVjdG9yJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvZGF0ZXRpbWUvZGF0ZXRpbWUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9kYXRldGltZS90aW1lJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvZGlhbG9nL2RpYWxvZyc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2Zvcm0vZm9ybSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2Zvcm0vaW5oZXJpdGZvcm0uZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvZ3JpZC9ncmlkJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvZ3JpZC9ncmlkYnV0dG9uJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvZ3JpZC9ncmlkY29sdW1uJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvZ3JpZC9ncmlkY29sdW1uYWN0aW9uJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvZ3JpZC9ncmlkaW1hZ2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9ncmlkL3BhZ2luZyc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2lucHV0L2lucHV0JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvaW5wdXQvaW5wdXRhcmVhJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvaW5wdXQvaW5wdXRjdXJyZW5jeSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2lucHV0L2lucHV0ZGVjaW1hbCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2lucHV0L2lucHV0ZW1haWwnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9pbnB1dC9pbnB1dGludGVnZXInO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9pbnB1dC9pbnB1dHBhc3N3b3JkJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvaW5wdXQvaW5wdXRzZWFyY2gnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dC5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9sYXlvdXQvdG9jb250cm9saGVpZ2h0LnBpcGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9sYXlvdXQvdG9jb250cm9sd2lkdGhjc3MucGlwZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL2xheW91dC90b2xhYmVsaGVpZ2h0LnBpcGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9sYXlvdXQvdG9sYWJlbHdpZHRoY3NzLnBpcGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9saXN0L2Ryb3Bkb3duJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvbGlzdC9saXN0Ym94JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvbXVsdGlsYW5ndWFnZS9tdWx0aWxhbmd1YWdlaW5wdXQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9tdWx0aWxhbmd1YWdlL211bHRpbGFuZ3VhZ2VpbnB1dGFyZWEnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy9zdGF0aWMvZm9ybWNvbnRhaW5lcic7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL3N0YXRpYy9zdGF0aWNsYWJlbCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL3RhYnMvdGFiJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvdGFicy90YWJpdGVtJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvdGlueW1jZS90aW55bWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvdG9vbHRpcC90b29sdGlwJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvdHJlZXZpZXcvdHJlZXZpZXcnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy91cGxvYWQvZHJvcHpvbmVtdWx0aXBsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL3VwbG9hZC9kcm9wem9uZXNpbmdsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL3VwbG9hZC91cGxvYWQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy91cGxvYWQvdXBsb2FkbXVsdGlwbGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9scy92YWxpZGF0aW9uL3ZhbGlkYXRpb25zdW1tYXJ5JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbHMvd2l6YXJkL3dpemFyZCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xzL3dpemFyZC93aXphcmRpdGVtJztcclxuXHJcbi8vIEV4cG9ydCBDb21wb25lbnRzXHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9icm93c2VyL2Jyb3dzZXInO1xyXG4iXX0=
|