@skyux/colorpicker 9.3.1 → 9.4.0

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.
@@ -452,11 +452,11 @@ export class SkyColorpickerComponent {
452
452
  return undefined;
453
453
  }
454
454
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyColorpickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2.SkyColorpickerService }, { token: i3.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
455
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: SkyColorpickerComponent, selector: "sky-colorpicker", inputs: { pickerButtonIcon: "pickerButtonIcon", pickerButtonIconType: "pickerButtonIconType", label: "label", labelledBy: "labelledBy", messageStream: "messageStream", showResetButton: "showResetButton" }, outputs: { selectedColorChanged: "selectedColorChanged", selectedColorApplied: "selectedColorApplied" }, providers: [SkyColorpickerService], viewQueries: [{ propertyName: "colorpickerTemplateRef", first: true, predicate: ["colorpickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "colorpickerRef", first: true, predicate: ["colorpickerRef"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sky-input-group\"\n [ngClass]=\"{\n 'sky-colorpicker-hidden': !isVisible,\n 'sky-colorpicker-disabled': disabled\n }\"\n>\n <div [hidden]=\"true\">\n <ng-content></ng-content>\n </div>\n\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-colorpicker-button\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? colorpickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"\n label ||\n (labelledBy\n ? null\n : ('skyux_colorpicker_dropdown_button' | skyLibResources))\n \"\n [attr.aria-labelledby]=\"labelledBy\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"\n label ||\n (labelledBy\n ? null\n : ('skyux_colorpicker_dropdown_button' | skyLibResources))\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-colorpicker-button-disabled': disabled\n }\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n [style.background-color]=\"backgroundColorForDisplay\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon\n *ngIf=\"pickerButtonIcon\"\n class=\"sky-colorpicker-button-icon\"\n [icon]=\"pickerButtonIcon\"\n [iconType]=\"pickerButtonIconType\"\n [size]=\"'1x'\"\n [style.color]=\"iconColor\"\n >\n </sky-icon>\n <ng-container *skyThemeIf=\"'modern'\">\n <sky-icon\n class=\"sky-colorpicker-button-modern-chevron\"\n icon=\"chevron-down\"\n size=\"xs\"\n [ngClass]=\"{\n 'sky-colorpicker-button-modern-chevron-disabled': disabled\n }\"\n >\n </sky-icon>\n </ng-container>\n </button>\n\n <ng-template #colorpickerTemplateRef>\n <div\n class=\"sky-colorpicker-container\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"colorpickerId\"\n [hidden]=\"!isPickerVisible\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n #colorpickerRef\n >\n <div class=\"sky-colorpicker\">\n <div\n class=\"saturation-lightness\"\n [color]=\"slider.saturation - slider.value + ''\"\n [skyColorpickerSlider]\n [style.background-color]=\"hueSliderColor\"\n [xAxis]=\"1\"\n [yAxis]=\"1\"\n (newColorContrast)=\"saturationAndLightness = $event\"\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.saturation\"\n [style.top.px]=\"slider.value\"\n ></div>\n </div>\n\n <div class=\"box\">\n <div class=\"left\">\n <div class=\"selected-color-background sky-rounded-circle\"></div>\n <div\n class=\"selected-color sky-rounded-circle\"\n [style.background-color]=\"selectedColor?.rgbaText\"\n ></div>\n </div>\n <div class=\"right\">\n <div\n class=\"hue\"\n [skyColorpickerSlider]\n [xAxis]=\"1\"\n (newColorContrast)=\"hue = $event\"\n #hueSlider\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.hue\"\n ></div>\n </div>\n <div\n *ngIf=\"this.allowTransparency\"\n class=\"alpha\"\n [skyColorpickerSlider]\n [style.background-color]=\"alphaSliderColor\"\n [xAxis]=\"1\"\n (newColorContrast)=\"alphaAxis = $event\"\n #alphaSlider\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.alpha\"\n ></div>\n </div>\n </div>\n </div>\n\n <div class=\"rgba-text\">\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"'skyux_colorpicker_aria_hex' | skyLibResources\"\n [attr.for]=\"skyColorpickerHexId\"\n >\n {{ 'skyux_colorpicker_hex' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n pattern=\"^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$\"\n [attr.id]=\"skyColorpickerHexId\"\n [skyColorpickerText]\n [value]=\"hexText\"\n (newColorContrast)=\"hex = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"'skyux_colorpicker_aria_red' | skyLibResources\"\n [attr.for]=\"skyColorpickerRedId\"\n >\n {{ 'skyux_colorpicker_red' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerRedId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.red\"\n (newColorContrast)=\"red = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_green' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerGreenId\"\n >\n {{ 'skyux_colorpicker_green' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerGreenId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.green\"\n (newColorContrast)=\"green = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_blue' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerBlueId\"\n >\n {{ 'skyux_colorpicker_blue' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerBlueId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.blue\"\n (newColorContrast)=\"blue = $event\"\n />\n </sky-input-box>\n <sky-input-box *ngIf=\"this.allowTransparency\">\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_alpha' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerAlphaId\"\n >\n {{ 'skyux_colorpicker_alpha' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"1\"\n min=\"0\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n step=\"0.1\"\n type=\"number\"\n [attr.id]=\"skyColorpickerAlphaId\"\n [maxRange]=\"1\"\n [skyColorpickerText]\n [value]=\"rgbaText?.alpha\"\n (newColorContrast)=\"alphaColor = $event\"\n />\n </sky-input-box>\n </div>\n <div\n *ngIf=\"presetColors && presetColors.length\"\n class=\"sky-colorpicker-preset-color-area\"\n >\n <button\n *ngFor=\"let color of presetColors | slice : 0 : 12; let i = index\"\n type=\"button\"\n [attr.aria-label]=\"\n ('skyux_colorpicker_preset_color' | skyLibResources) + ' ' + color\n \"\n [skyThemeClass]=\"{\n 'sky-preset-color': 'default',\n 'sky-btn sky-btn-link': 'modern'\n }\"\n [style.backgroundColor]=\"color\"\n (click)=\"onPresetClick(color)\"\n ></button>\n </div>\n </div>\n\n <div\n class=\"sky-colorpicker-footer\"\n [skyThemeClass]=\"{\n 'sky-padding-even-large': 'default'\n }\"\n >\n <section class=\"sky-colorpicker-column\">\n <button\n class=\"sky-btn sky-btn-primary sky-btn-colorpicker-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_apply' | skyLibResources\"\n [skyThemeClass]=\"{ 'sky-margin-inline-sm': 'modern' }\"\n (click)=\"onApplyColorClick()\"\n >\n {{ 'skyux_colorpicker_apply' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-btn-colorpicker-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_close' | skyLibResources\"\n (click)=\"onCancelClick()\"\n >\n {{ 'skyux_colorpicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n </ng-template>\n <span\n *ngIf=\"allowTransparency\"\n aria-hidden=\"true\"\n class=\"sky-colorpicker-checkered-background\"\n >\n </span>\n\n <button\n *ngIf=\"showResetButton\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_reset' | skyLibResources\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-colorpicker-reset-button-disabled': disabled\n }\"\n [skyThemeClass]=\"{\n 'sky-colorpicker-reset-button': 'default',\n 'sky-btn sky-btn-icon-borderless sky-colorpicker-reset-button-modern':\n 'modern'\n }\"\n (click)=\"onResetClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"times\" size=\"sm\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"trash\" size=\"lg\"> </sky-icon>\n </button>\n</div>\n", styles: [".sky-colorpicker-container{position:fixed}.sky-colorpicker-button{width:30px;height:30px;border:0;cursor:pointer}.sky-colorpicker-button.sky-colorpicker-button-disabled{cursor:default}.sky-colorpicker-button .sky-colorpicker-button-icon{position:relative;bottom:2px;font-size:12px}.sky-colorpicker-disabled{opacity:.65;cursor:default}.sky-colorpicker-button,.sky-colorpicker-button:active{background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%3E%3Cpath%20id%3D%22a%22%20d%3D%22M0%200h30v30H0V0zm14.5%204H4v22h14v-8h8V4H14.5z%22%2F%3E%3C%2Fdefs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cuse%20fill%3D%22%23FFF%22%20xlink%3Ahref%3D%22%23a%22%2F%3E%3Cpath%20stroke%3D%22%23CCC%22%20d%3D%22M.5.5v29h29V.5H.5zm18%2018v8h-15v-23h23v15h-8z%22%2F%3E%3Cpath%20fill%3D%22%23292A2B%22%20d%3D%22M23.5%2025L21%2022h5%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)}.sky-colorpicker-hidden{width:0px;height:0px;overflow:hidden}.sky-colorpicker-reset-button{background-color:#fff;margin-left:5px;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #cdcfd2;width:30px;height:30px;cursor:pointer;color:#686c73}.sky-colorpicker-reset-button:hover{color:#383a3d}.sky-colorpicker-reset-button.sky-colorpicker-reset-button-disabled{color:#686c73;cursor:default}.sky-colorpicker-footer{background-color:#fff;border-top:1px solid #e2e3e4}.sky-colorpicker *{box-sizing:border-box;margin:0}.sky-colorpicker{cursor:default;width:270px;height:auto;background-color:#fff;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.sky-colorpicker i{cursor:default;position:relative}.sky-colorpicker input{text-align:center;font-size:14px;height:26px;color:#212327}.sky-colorpicker input:invalid{box-shadow:none}.sky-colorpicker input:-moz-submit-invalid{box-shadow:none}.sky-colorpicker input:-moz-ui-invalid{box-shadow:none}.sky-colorpicker input::-webkit-inner-spin-button,.sky-colorpicker input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.sky-colorpicker input[type=number].sky-form-control{-moz-appearance:textfield!important}.sky-colorpicker .button-area{padding:0 15px 15px;text-align:right}.sky-colorpicker .sky-colorpicker-preset-color-area{padding-left:9px;padding-right:9px;padding-bottom:15px;display:flex;flex-direction:row;flex-wrap:wrap}.sky-colorpicker .sky-colorpicker-preset-color-area .sky-preset-color{cursor:pointer;width:32px;height:32px;margin:5px;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4}.sky-colorpicker .sky-colorpicker-preset-color-area .sky-preset-color:hover{cursor:pointer;border:#ffffff solid 2px;margin:4px;width:34px;height:34px;box-shadow:0 0 0 1px #cdcfd2,0 0 0 2px #e2e3e4}.sky-colorpicker .arrow{height:0;width:0;border-style:solid;position:absolute;z-index:999999}.sky-colorpicker div.cursor-sv{cursor:default;position:relative;width:14px;height:14px;border-top:1px solid #cdcfd2;border-right:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2}.sky-colorpicker div.cursor{cursor:default;position:relative;width:17px;height:17px;border:#686c73 solid 2px}.sky-colorpicker .saturation-lightness{cursor:pointer;width:100%;height:170px;border:none;background-size:100% 100%;background-image:url(https://sky.blackbaudcdn.net/static/skyux-public-assets/1.0.0-beta.3/assets/images/colorpicker/saturation-lightness.webp)}.sky-colorpicker .box{display:flex;padding:4px 8px}.sky-colorpicker .box .left{position:relative;padding:16px 8px}.sky-colorpicker .box .right{flex:1 1 auto;padding:12px 8px;display:flex;flex-direction:column;justify-content:center}.sky-colorpicker .hue{cursor:pointer;width:100%;height:16px;border:none;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC)}.sky-colorpicker .alpha{cursor:pointer;width:100%;height:16px;border:none;margin-top:16px;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg==)}.sky-colorpicker .selected-color{width:40px;height:40px;top:16px;left:8px;position:absolute}.sky-colorpicker .selected-color-background{width:40px;height:40px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC)}.sky-colorpicker .rgba-text{width:100%;font-size:18px;padding:7px 15px 15px;display:flex}.sky-colorpicker .rgba-text input{min-width:0;padding:1px}.sky-colorpicker .rgba-text label{margin:0 0 8px}.sky-colorpicker .rgba-text sky-input-box{flex:1;margin:0 8px 0 0}.sky-colorpicker .rgba-text sky-input-box:first-child{flex:2}.sky-colorpicker .rgba-text sky-input-box:last-child{margin:0}.sky-colorpicker .hex-text{width:100%;font-size:14px;padding:4px 8px}.sky-colorpicker .hex-text .box{padding:0 24px 8px 8px}.sky-colorpicker .hex-text .box input{flex:1 1 auto;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;padding:1px}.sky-colorpicker .hex-text .box div{flex:1 1 auto;text-align:center;color:#686c73;float:left;clear:left}.sky-colorpicker-checkered-background{position:absolute;top:0;left:0;z-index:-1;height:30px;width:30px;background:linear-gradient(45deg,rgba(0,0,0,.0980392) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.0980392) 75%,rgba(0,0,0,.0980392) 0),linear-gradient(45deg,rgba(0,0,0,.0980392) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.0980392) 75%,rgba(0,0,0,.0980392) 0),white;background-repeat:repeat,repeat;background-position:0px 0,5px 5px;transform-origin:0 0 0;background-origin:padding-box,padding-box;-webkit-background-clip:border-box,border-box;background-clip:border-box,border-box;background-size:10px 10px,10px 10px;box-shadow:none;text-shadow:none;transition:none;transform:scaleX(1) scaleY(1) scaleZ(1)}.sky-theme-modern .sky-colorpicker-disabled{opacity:1}.sky-theme-modern .sky-colorpicker-button{width:40px;height:40px;border:1px solid #d2d2d2;border-radius:6px;position:relative}.sky-theme-modern .sky-colorpicker-button.sky-colorpicker-button-disabled{background-color:#ededee!important;border:1px solid #d2d2d2;cursor:default}.sky-theme-modern .sky-colorpicker-button .sky-colorpicker-button-icon{bottom:1px;font-size:16px}.sky-theme-modern .sky-colorpicker-button,.sky-theme-modern .sky-colorpicker-button:active{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Y29sb3JwaWNrZXIgU1ZHIGxpZ2h0PC90aXRsZT4KICAgIDxnIGlkPSJjb2xvcnBpY2tlci1TVkctbGlnaHQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIGQ9Ik0zMywwIEMzNS43NjE0MjM3LC01LjA3MjY1MzEzZS0xNiAzOCwyLjIzODU3NjI1IDM4LDUgTDM4LDMzIEMzOCwzNS43NjE0MjM3IDM1Ljc2MTQyMzcsMzggMzMsMzggTDUsMzggQzIuMjM4NTc2MjUsMzggLTUuNTAwMDE1NDRlLTE2LDM1Ljc2MTQyMzcgMCwzMyBMMCw1IEMtMy4zODE3Njg3NmUtMTYsMi4yMzg1NzYyNSAyLjIzODU3NjI1LC0zLjgwOTEzMTA2ZS0xNiA1LDAgTDMzLDAgWiBNMzMsMiBMNSwyIEMzLjM0MzE0NTc1LDIgMiwzLjM0MzE0NTc1IDIsNSBMMiw1IEwyLDMzIEMyLDM0LjY1Njg1NDIgMy4zNDMxNDU3NSwzNiA1LDM2IEw1LDM2IEwyNCwzNiBDMjUuMTA0NTY5NSwzNiAyNiwzNS4xMDQ1Njk1IDI2LDM0IEwyNiwzNCBMMjYsMjggQzI2LDI2Ljg5NTQzMDUgMjYuODk1NDMwNSwyNiAyOCwyNiBMMjgsMjYgTDM0LDI2IEMzNS4xMDQ1Njk1LDI2IDM2LDI1LjEwNDU2OTUgMzYsMjQgTDM2LDI0IEwzNiw1IEMzNiwzLjM0MzE0NTc1IDM0LjY1Njg1NDIsMiAzMywyIEwzMywyIFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgIDxwYXRoIGQ9Ik0zMywyLjUgQzMzLjY5MDM1NTksMi41IDM0LjMxNTM1NTksMi43Nzk4MjIwMyAzNC43Njc3NjcsMy4yMzIyMzMwNSBDMzUuMjIwMTc4LDMuNjg0NjQ0MDYgMzUuNSw0LjMwOTY0NDA2IDM1LjUsNSBMMzUuNSw1IEwzNS41LDI0IEMzNS41LDI0LjQxNDIxMzYgMzUuMzMyMTA2OCwyNC43ODkyMTM2IDM1LjA2MDY2MDIsMjUuMDYwNjYwMiBDMzQuNzg5MjEzNiwyNS4zMzIxMDY4IDM0LjQxNDIxMzYsMjUuNSAzNCwyNS41IEwzNCwyNS41IEwyOCwyNS41IEMyNy4zMDk2NDQxLDI1LjUgMjYuNjg0NjQ0MSwyNS43Nzk4MjIgMjYuMjMyMjMzLDI2LjIzMjIzMyBDMjUuNzc5ODIyLDI2LjY4NDY0NDEgMjUuNSwyNy4zMDk2NDQxIDI1LjUsMjggTDI1LjUsMjggTDI1LjUsMzQgQzI1LjUsMzQuNDE0MjEzNiAyNS4zMzIxMDY4LDM0Ljc4OTIxMzYgMjUuMDYwNjYwMiwzNS4wNjA2NjAyIEMyNC43ODkyMTM2LDM1LjMzMjEwNjggMjQuNDE0MjEzNiwzNS41IDI0LDM1LjUgTDI0LDM1LjUgTDUsMzUuNSBDNC4zMDk2NDQwNiwzNS41IDMuNjg0NjQ0MDYsMzUuMjIwMTc4IDMuMjMyMjMzMDUsMzQuNzY3NzY3IEMyLjc3OTgyMjAzLDM0LjMxNTM1NTkgMi41LDMzLjY5MDM1NTkgMi41LDMzIEwyLjUsMzMgTDIuNSw1IEMyLjUsNC4zMDk2NDQwNiAyLjc3OTgyMjAzLDMuNjg0NjQ0MDYgMy4yMzIyMzMwNSwzLjIzMjIzMzA1IEMzLjY4NDY0NDA2LDIuNzc5ODIyMDMgNC4zMDk2NDQwNiwyLjUgNSwyLjUgTDUsMi41IFoiIGlkPSJQYXRoLUNvcHktNSIgc3Ryb2tlPSIjRDJEMkQyIiBmaWxsLW9wYWNpdHk9IjAiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+)}.sky-theme-modern .sky-colorpicker-button.sky-colorpicker-button-disabled,.sky-theme-modern .sky-colorpicker-button:active.sky-colorpicker-button-disabled{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Y29sb3JwaWNrZXIgU1ZHIGxpZ2h0PC90aXRsZT4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJjb2xvcnBpY2tlci1TVkctbGlnaHQiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywwIEMzNS43NjE0MjM3LDAgMzgsMi4yMzg1NzYyNSAzOCw1IEwzOCwzMyBDMzgsMzUuNzYxNDIzNyAzNS43NjE0MjM3LDM4IDMzLDM4IEw1LDM4IEMyLjIzODU3NjI1LDM4IDAsMzUuNzYxNDIzNyAwLDMzIEwwLDUgQzAsMi4yMzg1NzYyNSAyLjIzODU3NjI1LDAgNSwwIEwzMywwIFogTTMzLDIgTDUsMiBDMy4zNDMxNDU3NSwyIDIsMy4zNDMxNDU3NSAyLDUgTDIsNSBMMiwzMyBDMiwzNC42NTY4NTQyIDMuMzQzMTQ1NzUsMzYgNSwzNiBMNSwzNiBMMjQsMzYgQzI1LjEwNDU2OTUsMzYgMjYsMzUuMTA0NTY5NSAyNiwzNCBMMjYsMzQgTDI2LDI4IEMyNiwyNi44OTU0MzA1IDI2Ljg5NTQzMDUsMjYgMjgsMjYgTDI4LDI2IEwzNCwyNiBDMzUuMTA0NTY5NSwyNiAzNiwyNS4xMDQ1Njk1IDM2LDI0IEwzNiwyNCBMMzYsNSBDMzYsMy4zNDMxNDU3NSAzNC42NTY4NTQyLDIgMzMsMiBMMzMsMiBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIGZpbGw9IiNFREVERUUiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTMzLDIuNSBDMzMuNjkwMzU1OSwyLjUgMzQuMzE1MzU1OSwyLjc3OTgyMjAzIDM0Ljc2Nzc2NywzLjIzMjIzMzA1IEMzNS4yMjAxNzgsMy42ODQ2NDQwNiAzNS41LDQuMzA5NjQ0MDYgMzUuNSw1IEwzNS41LDUgTDM1LjUsMjQgQzM1LjUsMjQuNDE0MjEzNiAzNS4zMzIxMDY4LDI0Ljc4OTIxMzYgMzUuMDYwNjYwMiwyNS4wNjA2NjAyIEMzNC43ODkyMTM2LDI1LjMzMjEwNjggMzQuNDE0MjEzNiwyNS41IDM0LDI1LjUgTDM0LDI1LjUgTDI4LDI1LjUgQzI3LjMwOTY0NDEsMjUuNSAyNi42ODQ2NDQxLDI1Ljc3OTgyMiAyNi4yMzIyMzMsMjYuMjMyMjMzIEMyNS43Nzk4MjIsMjYuNjg0NjQ0MSAyNS41LDI3LjMwOTY0NDEgMjUuNSwyOCBMMjUuNSwyOCBMMjUuNSwzNCBDMjUuNSwzNC40MTQyMTM2IDI1LjMzMjEwNjgsMzQuNzg5MjEzNiAyNS4wNjA2NjAyLDM1LjA2MDY2MDIgQzI0Ljc4OTIxMzYsMzUuMzMyMTA2OCAyNC40MTQyMTM2LDM1LjUgMjQsMzUuNSBMMjQsMzUuNSBMNSwzNS41IEM0LjMwOTY0NDA2LDM1LjUgMy42ODQ2NDQwNiwzNS4yMjAxNzggMy4yMzIyMzMwNSwzNC43Njc3NjcgQzIuNzc5ODIyMDMsMzQuMzE1MzU1OSAyLjUsMzMuNjkwMzU1OSAyLjUsMzMgTDIuNSwzMyBMMi41LDUgQzIuNSw0LjMwOTY0NDA2IDIuNzc5ODIyMDMsMy42ODQ2NDQwNiAzLjIzMjIzMzA1LDMuMjMyMjMzMDUgQzMuNjg0NjQ0MDYsMi43Nzk4MjIwMyA0LjMwOTY0NDA2LDIuNSA1LDIuNSBMNSwyLjUgTDMzLDIuNSBaIiBpZD0iUGF0aC1Db3B5LTUiIHN0cm9rZT0iI0QyRDJEMiIgZmlsbC1vcGFjaXR5PSIwIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=)}.sky-theme-modern .sky-colorpicker-button:focus{box-shadow:inset 0 0 0 2px #1870b8,0 1px 8px #0000004d;outline:none;text-decoration:none}.sky-theme-modern .sky-colorpicker-button:hover{box-shadow:inset 0 0 0 1px #1870b8;outline:none;text-decoration:none}.sky-theme-modern .sky-colorpicker-button:hover.sky-colorpicker-button-disabled{box-shadow:none}.sky-theme-modern .sky-colorpicker-checkered-background{border-radius:6px;width:40px;height:40px}.sky-theme-modern .sky-colorpicker-button-modern-chevron{position:absolute;bottom:0;right:2px;font-size:10px}.sky-theme-modern .sky-colorpicker-button-modern-chevron.sky-colorpicker-button-modern-chevron-disabled{color:#686c73}.sky-theme-modern .sky-colorpicker-reset-button-modern{width:40px;height:40px}.sky-theme-modern .sky-colorpicker-reset-button-modern.sky-colorpicker-reset-button-disabled{background-color:#ededee;border:0px solid #d2d2d2;color:#686c73}.sky-theme-modern .sky-colorpicker{background-color:transparent;width:310px}.sky-theme-modern .sky-colorpicker .saturation-lightness{height:170px}.sky-theme-modern .sky-colorpicker-container{background-color:#fff;border-radius:0 0 6px 6px}.sky-theme-modern .sky-colorpicker-footer{background:none;border:none;border-radius:0 0 6px 6px;padding:10px 10px 15px}.sky-theme-modern .selected-color{height:46px;width:46px;top:0;left:0}.sky-theme-modern .selected-color-background{height:46px;width:46px}.sky-theme-modern input{text-align:left}.sky-theme-modern .box{padding:15px 30px}.sky-theme-modern .box .left{padding:0 30px 0 0}.sky-theme-modern .box .right{padding:0}.sky-theme-modern .alpha{margin-top:10px}.sky-theme-modern .rgba-text{padding:0 10px;display:flex;justify-content:space-between;flex-wrap:wrap}.sky-theme-modern .rgba-text sky-input-box:first-child{width:100%;flex:0 1 auto;margin:0 0 10px}.sky-theme-modern .rgba-text sky-input-box:not(:first-child){flex:1;margin:0 10px 10px 0}.sky-theme-modern .rgba-text sky-input-box:last-child{margin:0 0 10px}.sky-theme-modern .sky-colorpicker-preset-color-area{padding:10px 10px 15px}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn{height:46px;width:46px;border-radius:4px;margin:0 15px 15px 0}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:active),.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:hover),.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:focus){border:1px solid #d2d2d2}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:nth-child(5n){margin:0 0 15px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i6.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent"] }, { kind: "directive", type: i3.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "directive", type: i3.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "directive", type: i7.SkyColorpickerTextDirective, selector: "[skyColorpickerText]", inputs: ["skyColorpickerText", "color", "maxRange"], outputs: ["newColorContrast"] }, { kind: "directive", type: i8.SkyColorpickerSliderDirective, selector: "[skyColorpickerSlider]", inputs: ["skyColorpickerSlider", "color", "xAxis", "yAxis"], outputs: ["newColorContrast"] }, { kind: "pipe", type: i4.SlicePipe, name: "slice" }, { kind: "pipe", type: i9.SkyLibResourcesPipe, name: "skyLibResources" }], encapsulation: i0.ViewEncapsulation.None }); }
455
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: SkyColorpickerComponent, selector: "sky-colorpicker", inputs: { pickerButtonIcon: "pickerButtonIcon", pickerButtonIconType: "pickerButtonIconType", label: "label", labelledBy: "labelledBy", messageStream: "messageStream", showResetButton: "showResetButton" }, outputs: { selectedColorChanged: "selectedColorChanged", selectedColorApplied: "selectedColorApplied" }, providers: [SkyColorpickerService], viewQueries: [{ propertyName: "colorpickerTemplateRef", first: true, predicate: ["colorpickerTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "triggerButtonRef", first: true, predicate: ["triggerButtonRef"], descendants: true, read: ElementRef }, { propertyName: "colorpickerRef", first: true, predicate: ["colorpickerRef"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sky-input-group\"\n [ngClass]=\"{\n 'sky-colorpicker-hidden': !isVisible,\n 'sky-colorpicker-disabled': disabled\n }\"\n>\n <div [hidden]=\"true\">\n <ng-content />\n </div>\n\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-colorpicker-button\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? colorpickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"\n label ||\n (labelledBy\n ? null\n : ('skyux_colorpicker_dropdown_button' | skyLibResources))\n \"\n [attr.aria-labelledby]=\"labelledBy\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"\n label ||\n (labelledBy\n ? null\n : ('skyux_colorpicker_dropdown_button' | skyLibResources))\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-colorpicker-button-disabled': disabled\n }\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n [style.background-color]=\"backgroundColorForDisplay\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon\n *ngIf=\"pickerButtonIcon\"\n class=\"sky-colorpicker-button-icon\"\n [icon]=\"pickerButtonIcon\"\n [iconType]=\"pickerButtonIconType\"\n [size]=\"'1x'\"\n [style.color]=\"iconColor\"\n />\n <ng-container *skyThemeIf=\"'modern'\">\n <sky-icon\n class=\"sky-colorpicker-button-modern-chevron\"\n icon=\"chevron-down\"\n size=\"xs\"\n [ngClass]=\"{\n 'sky-colorpicker-button-modern-chevron-disabled': disabled\n }\"\n />\n </ng-container>\n </button>\n\n <ng-template #colorpickerTemplateRef>\n <div\n class=\"sky-colorpicker-container\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"colorpickerId\"\n [hidden]=\"!isPickerVisible\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n #colorpickerRef\n >\n <div class=\"sky-colorpicker\">\n <div\n class=\"saturation-lightness\"\n [color]=\"slider.saturation - slider.value + ''\"\n [skyColorpickerSlider]\n [style.background-color]=\"hueSliderColor\"\n [xAxis]=\"1\"\n [yAxis]=\"1\"\n (newColorContrast)=\"saturationAndLightness = $event\"\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.saturation\"\n [style.top.px]=\"slider.value\"\n ></div>\n </div>\n\n <div class=\"box\">\n <div class=\"left\">\n <div class=\"selected-color-background sky-rounded-circle\"></div>\n <div\n class=\"selected-color sky-rounded-circle\"\n [style.background-color]=\"selectedColor?.rgbaText\"\n ></div>\n </div>\n <div class=\"right\">\n <div\n class=\"hue\"\n [skyColorpickerSlider]\n [xAxis]=\"1\"\n (newColorContrast)=\"hue = $event\"\n #hueSlider\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.hue\"\n ></div>\n </div>\n <div\n *ngIf=\"this.allowTransparency\"\n class=\"alpha\"\n [skyColorpickerSlider]\n [style.background-color]=\"alphaSliderColor\"\n [xAxis]=\"1\"\n (newColorContrast)=\"alphaAxis = $event\"\n #alphaSlider\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.alpha\"\n ></div>\n </div>\n </div>\n </div>\n\n <div class=\"rgba-text\">\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"'skyux_colorpicker_aria_hex' | skyLibResources\"\n [attr.for]=\"skyColorpickerHexId\"\n >\n {{ 'skyux_colorpicker_hex' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n pattern=\"^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$\"\n [attr.id]=\"skyColorpickerHexId\"\n [skyColorpickerText]\n [value]=\"hexText\"\n (newColorContrast)=\"hex = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"'skyux_colorpicker_aria_red' | skyLibResources\"\n [attr.for]=\"skyColorpickerRedId\"\n >\n {{ 'skyux_colorpicker_red' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerRedId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.red\"\n (newColorContrast)=\"red = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_green' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerGreenId\"\n >\n {{ 'skyux_colorpicker_green' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerGreenId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.green\"\n (newColorContrast)=\"green = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_blue' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerBlueId\"\n >\n {{ 'skyux_colorpicker_blue' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerBlueId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.blue\"\n (newColorContrast)=\"blue = $event\"\n />\n </sky-input-box>\n <sky-input-box *ngIf=\"this.allowTransparency\">\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_alpha' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerAlphaId\"\n >\n {{ 'skyux_colorpicker_alpha' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"1\"\n min=\"0\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n step=\"0.1\"\n type=\"number\"\n [attr.id]=\"skyColorpickerAlphaId\"\n [maxRange]=\"1\"\n [skyColorpickerText]\n [value]=\"rgbaText?.alpha\"\n (newColorContrast)=\"alphaColor = $event\"\n />\n </sky-input-box>\n </div>\n <div\n *ngIf=\"presetColors && presetColors.length\"\n class=\"sky-colorpicker-preset-color-area\"\n >\n <button\n *ngFor=\"let color of presetColors | slice : 0 : 12; let i = index\"\n type=\"button\"\n [attr.aria-label]=\"\n ('skyux_colorpicker_preset_color' | skyLibResources) + ' ' + color\n \"\n [skyThemeClass]=\"{\n 'sky-preset-color': 'default',\n 'sky-btn sky-btn-link': 'modern'\n }\"\n [style.backgroundColor]=\"color\"\n (click)=\"onPresetClick(color)\"\n ></button>\n </div>\n </div>\n\n <div\n class=\"sky-colorpicker-footer\"\n [skyThemeClass]=\"{\n 'sky-padding-even-large': 'default'\n }\"\n >\n <section class=\"sky-colorpicker-column\">\n <button\n class=\"sky-btn sky-btn-primary sky-btn-colorpicker-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_apply' | skyLibResources\"\n [skyThemeClass]=\"{ 'sky-margin-inline-sm': 'modern' }\"\n (click)=\"onApplyColorClick()\"\n >\n {{ 'skyux_colorpicker_apply' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-btn-colorpicker-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_close' | skyLibResources\"\n (click)=\"onCancelClick()\"\n >\n {{ 'skyux_colorpicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n </ng-template>\n <span\n *ngIf=\"allowTransparency\"\n aria-hidden=\"true\"\n class=\"sky-colorpicker-checkered-background\"\n >\n </span>\n\n <button\n *ngIf=\"showResetButton\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_reset' | skyLibResources\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-colorpicker-reset-button-disabled': disabled\n }\"\n [skyThemeClass]=\"{\n 'sky-colorpicker-reset-button': 'default',\n 'sky-btn sky-btn-icon-borderless sky-colorpicker-reset-button-modern':\n 'modern'\n }\"\n (click)=\"onResetClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"times\" size=\"sm\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"trash\" size=\"lg\" />\n </button>\n</div>\n", styles: [".sky-colorpicker-container{position:fixed}.sky-colorpicker-button{width:30px;height:30px;border:0;cursor:pointer}.sky-colorpicker-button.sky-colorpicker-button-disabled{cursor:default}.sky-colorpicker-button .sky-colorpicker-button-icon{position:relative;bottom:2px;font-size:12px}.sky-colorpicker-disabled{opacity:.65;cursor:default}.sky-colorpicker-button,.sky-colorpicker-button:active{background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%3E%3Cpath%20id%3D%22a%22%20d%3D%22M0%200h30v30H0V0zm14.5%204H4v22h14v-8h8V4H14.5z%22%2F%3E%3C%2Fdefs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cuse%20fill%3D%22%23FFF%22%20xlink%3Ahref%3D%22%23a%22%2F%3E%3Cpath%20stroke%3D%22%23CCC%22%20d%3D%22M.5.5v29h29V.5H.5zm18%2018v8h-15v-23h23v15h-8z%22%2F%3E%3Cpath%20fill%3D%22%23292A2B%22%20d%3D%22M23.5%2025L21%2022h5%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)}.sky-colorpicker-hidden{width:0px;height:0px;overflow:hidden}.sky-colorpicker-reset-button{background-color:#fff;margin-left:5px;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #cdcfd2;width:30px;height:30px;cursor:pointer;color:#686c73}.sky-colorpicker-reset-button:hover{color:#383a3d}.sky-colorpicker-reset-button.sky-colorpicker-reset-button-disabled{color:#686c73;cursor:default}.sky-colorpicker-footer{background-color:#fff;border-top:1px solid #e2e3e4}.sky-colorpicker *{box-sizing:border-box;margin:0}.sky-colorpicker{cursor:default;width:270px;height:auto;background-color:#fff;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.sky-colorpicker i{cursor:default;position:relative}.sky-colorpicker input{text-align:center;font-size:14px;height:26px;color:#212327}.sky-colorpicker input:invalid{box-shadow:none}.sky-colorpicker input:-moz-submit-invalid{box-shadow:none}.sky-colorpicker input:-moz-ui-invalid{box-shadow:none}.sky-colorpicker input::-webkit-inner-spin-button,.sky-colorpicker input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.sky-colorpicker input[type=number].sky-form-control{-moz-appearance:textfield!important}.sky-colorpicker .button-area{padding:0 15px 15px;text-align:right}.sky-colorpicker .sky-colorpicker-preset-color-area{padding-left:9px;padding-right:9px;padding-bottom:15px;display:flex;flex-direction:row;flex-wrap:wrap}.sky-colorpicker .sky-colorpicker-preset-color-area .sky-preset-color{cursor:pointer;width:32px;height:32px;margin:5px;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4}.sky-colorpicker .sky-colorpicker-preset-color-area .sky-preset-color:hover{cursor:pointer;border:#ffffff solid 2px;margin:4px;width:34px;height:34px;box-shadow:0 0 0 1px #cdcfd2,0 0 0 2px #e2e3e4}.sky-colorpicker .arrow{height:0;width:0;border-style:solid;position:absolute;z-index:999999}.sky-colorpicker div.cursor-sv{cursor:default;position:relative;width:14px;height:14px;border-top:1px solid #cdcfd2;border-right:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2}.sky-colorpicker div.cursor{cursor:default;position:relative;width:17px;height:17px;border:#686c73 solid 2px}.sky-colorpicker .saturation-lightness{cursor:pointer;width:100%;height:170px;border:none;background-size:100% 100%;background-image:url(https://sky.blackbaudcdn.net/static/skyux-public-assets/1.0.0-beta.3/assets/images/colorpicker/saturation-lightness.webp)}.sky-colorpicker .box{display:flex;padding:4px 8px}.sky-colorpicker .box .left{position:relative;padding:16px 8px}.sky-colorpicker .box .right{flex:1 1 auto;padding:12px 8px;display:flex;flex-direction:column;justify-content:center}.sky-colorpicker .hue{cursor:pointer;width:100%;height:16px;border:none;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC)}.sky-colorpicker .alpha{cursor:pointer;width:100%;height:16px;border:none;margin-top:16px;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg==)}.sky-colorpicker .selected-color{width:40px;height:40px;top:16px;left:8px;position:absolute}.sky-colorpicker .selected-color-background{width:40px;height:40px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC)}.sky-colorpicker .rgba-text{width:100%;font-size:18px;padding:7px 15px 15px;display:flex}.sky-colorpicker .rgba-text input{min-width:0;padding:1px}.sky-colorpicker .rgba-text label{margin:0 0 8px}.sky-colorpicker .rgba-text sky-input-box{flex:1;margin:0 8px 0 0}.sky-colorpicker .rgba-text sky-input-box:first-child{flex:2}.sky-colorpicker .rgba-text sky-input-box:last-child{margin:0}.sky-colorpicker .hex-text{width:100%;font-size:14px;padding:4px 8px}.sky-colorpicker .hex-text .box{padding:0 24px 8px 8px}.sky-colorpicker .hex-text .box input{flex:1 1 auto;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;padding:1px}.sky-colorpicker .hex-text .box div{flex:1 1 auto;text-align:center;color:#686c73;float:left;clear:left}.sky-colorpicker-checkered-background{position:absolute;top:0;left:0;z-index:-1;height:30px;width:30px;background:linear-gradient(45deg,rgba(0,0,0,.0980392) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.0980392) 75%,rgba(0,0,0,.0980392) 0),linear-gradient(45deg,rgba(0,0,0,.0980392) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.0980392) 75%,rgba(0,0,0,.0980392) 0),white;background-repeat:repeat,repeat;background-position:0px 0,5px 5px;transform-origin:0 0 0;background-origin:padding-box,padding-box;-webkit-background-clip:border-box,border-box;background-clip:border-box,border-box;background-size:10px 10px,10px 10px;box-shadow:none;text-shadow:none;transition:none;transform:scaleX(1) scaleY(1) scaleZ(1)}.sky-theme-modern .sky-colorpicker-disabled{opacity:1}.sky-theme-modern .sky-colorpicker-button{width:40px;height:40px;border:1px solid #d2d2d2;border-radius:6px;position:relative}.sky-theme-modern .sky-colorpicker-button.sky-colorpicker-button-disabled{background-color:#ededee!important;border:1px solid #d2d2d2;cursor:default}.sky-theme-modern .sky-colorpicker-button .sky-colorpicker-button-icon{bottom:1px;font-size:16px}.sky-theme-modern .sky-colorpicker-button,.sky-theme-modern .sky-colorpicker-button:active{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Y29sb3JwaWNrZXIgU1ZHIGxpZ2h0PC90aXRsZT4KICAgIDxnIGlkPSJjb2xvcnBpY2tlci1TVkctbGlnaHQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIGQ9Ik0zMywwIEMzNS43NjE0MjM3LC01LjA3MjY1MzEzZS0xNiAzOCwyLjIzODU3NjI1IDM4LDUgTDM4LDMzIEMzOCwzNS43NjE0MjM3IDM1Ljc2MTQyMzcsMzggMzMsMzggTDUsMzggQzIuMjM4NTc2MjUsMzggLTUuNTAwMDE1NDRlLTE2LDM1Ljc2MTQyMzcgMCwzMyBMMCw1IEMtMy4zODE3Njg3NmUtMTYsMi4yMzg1NzYyNSAyLjIzODU3NjI1LC0zLjgwOTEzMTA2ZS0xNiA1LDAgTDMzLDAgWiBNMzMsMiBMNSwyIEMzLjM0MzE0NTc1LDIgMiwzLjM0MzE0NTc1IDIsNSBMMiw1IEwyLDMzIEMyLDM0LjY1Njg1NDIgMy4zNDMxNDU3NSwzNiA1LDM2IEw1LDM2IEwyNCwzNiBDMjUuMTA0NTY5NSwzNiAyNiwzNS4xMDQ1Njk1IDI2LDM0IEwyNiwzNCBMMjYsMjggQzI2LDI2Ljg5NTQzMDUgMjYuODk1NDMwNSwyNiAyOCwyNiBMMjgsMjYgTDM0LDI2IEMzNS4xMDQ1Njk1LDI2IDM2LDI1LjEwNDU2OTUgMzYsMjQgTDM2LDI0IEwzNiw1IEMzNiwzLjM0MzE0NTc1IDM0LjY1Njg1NDIsMiAzMywyIEwzMywyIFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgIDxwYXRoIGQ9Ik0zMywyLjUgQzMzLjY5MDM1NTksMi41IDM0LjMxNTM1NTksMi43Nzk4MjIwMyAzNC43Njc3NjcsMy4yMzIyMzMwNSBDMzUuMjIwMTc4LDMuNjg0NjQ0MDYgMzUuNSw0LjMwOTY0NDA2IDM1LjUsNSBMMzUuNSw1IEwzNS41LDI0IEMzNS41LDI0LjQxNDIxMzYgMzUuMzMyMTA2OCwyNC43ODkyMTM2IDM1LjA2MDY2MDIsMjUuMDYwNjYwMiBDMzQuNzg5MjEzNiwyNS4zMzIxMDY4IDM0LjQxNDIxMzYsMjUuNSAzNCwyNS41IEwzNCwyNS41IEwyOCwyNS41IEMyNy4zMDk2NDQxLDI1LjUgMjYuNjg0NjQ0MSwyNS43Nzk4MjIgMjYuMjMyMjMzLDI2LjIzMjIzMyBDMjUuNzc5ODIyLDI2LjY4NDY0NDEgMjUuNSwyNy4zMDk2NDQxIDI1LjUsMjggTDI1LjUsMjggTDI1LjUsMzQgQzI1LjUsMzQuNDE0MjEzNiAyNS4zMzIxMDY4LDM0Ljc4OTIxMzYgMjUuMDYwNjYwMiwzNS4wNjA2NjAyIEMyNC43ODkyMTM2LDM1LjMzMjEwNjggMjQuNDE0MjEzNiwzNS41IDI0LDM1LjUgTDI0LDM1LjUgTDUsMzUuNSBDNC4zMDk2NDQwNiwzNS41IDMuNjg0NjQ0MDYsMzUuMjIwMTc4IDMuMjMyMjMzMDUsMzQuNzY3NzY3IEMyLjc3OTgyMjAzLDM0LjMxNTM1NTkgMi41LDMzLjY5MDM1NTkgMi41LDMzIEwyLjUsMzMgTDIuNSw1IEMyLjUsNC4zMDk2NDQwNiAyLjc3OTgyMjAzLDMuNjg0NjQ0MDYgMy4yMzIyMzMwNSwzLjIzMjIzMzA1IEMzLjY4NDY0NDA2LDIuNzc5ODIyMDMgNC4zMDk2NDQwNiwyLjUgNSwyLjUgTDUsMi41IFoiIGlkPSJQYXRoLUNvcHktNSIgc3Ryb2tlPSIjRDJEMkQyIiBmaWxsLW9wYWNpdHk9IjAiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+)}.sky-theme-modern .sky-colorpicker-button.sky-colorpicker-button-disabled,.sky-theme-modern .sky-colorpicker-button:active.sky-colorpicker-button-disabled{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Y29sb3JwaWNrZXIgU1ZHIGxpZ2h0PC90aXRsZT4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJjb2xvcnBpY2tlci1TVkctbGlnaHQiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywwIEMzNS43NjE0MjM3LDAgMzgsMi4yMzg1NzYyNSAzOCw1IEwzOCwzMyBDMzgsMzUuNzYxNDIzNyAzNS43NjE0MjM3LDM4IDMzLDM4IEw1LDM4IEMyLjIzODU3NjI1LDM4IDAsMzUuNzYxNDIzNyAwLDMzIEwwLDUgQzAsMi4yMzg1NzYyNSAyLjIzODU3NjI1LDAgNSwwIEwzMywwIFogTTMzLDIgTDUsMiBDMy4zNDMxNDU3NSwyIDIsMy4zNDMxNDU3NSAyLDUgTDIsNSBMMiwzMyBDMiwzNC42NTY4NTQyIDMuMzQzMTQ1NzUsMzYgNSwzNiBMNSwzNiBMMjQsMzYgQzI1LjEwNDU2OTUsMzYgMjYsMzUuMTA0NTY5NSAyNiwzNCBMMjYsMzQgTDI2LDI4IEMyNiwyNi44OTU0MzA1IDI2Ljg5NTQzMDUsMjYgMjgsMjYgTDI4LDI2IEwzNCwyNiBDMzUuMTA0NTY5NSwyNiAzNiwyNS4xMDQ1Njk1IDM2LDI0IEwzNiwyNCBMMzYsNSBDMzYsMy4zNDMxNDU3NSAzNC42NTY4NTQyLDIgMzMsMiBMMzMsMiBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIGZpbGw9IiNFREVERUUiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTMzLDIuNSBDMzMuNjkwMzU1OSwyLjUgMzQuMzE1MzU1OSwyLjc3OTgyMjAzIDM0Ljc2Nzc2NywzLjIzMjIzMzA1IEMzNS4yMjAxNzgsMy42ODQ2NDQwNiAzNS41LDQuMzA5NjQ0MDYgMzUuNSw1IEwzNS41LDUgTDM1LjUsMjQgQzM1LjUsMjQuNDE0MjEzNiAzNS4zMzIxMDY4LDI0Ljc4OTIxMzYgMzUuMDYwNjYwMiwyNS4wNjA2NjAyIEMzNC43ODkyMTM2LDI1LjMzMjEwNjggMzQuNDE0MjEzNiwyNS41IDM0LDI1LjUgTDM0LDI1LjUgTDI4LDI1LjUgQzI3LjMwOTY0NDEsMjUuNSAyNi42ODQ2NDQxLDI1Ljc3OTgyMiAyNi4yMzIyMzMsMjYuMjMyMjMzIEMyNS43Nzk4MjIsMjYuNjg0NjQ0MSAyNS41LDI3LjMwOTY0NDEgMjUuNSwyOCBMMjUuNSwyOCBMMjUuNSwzNCBDMjUuNSwzNC40MTQyMTM2IDI1LjMzMjEwNjgsMzQuNzg5MjEzNiAyNS4wNjA2NjAyLDM1LjA2MDY2MDIgQzI0Ljc4OTIxMzYsMzUuMzMyMTA2OCAyNC40MTQyMTM2LDM1LjUgMjQsMzUuNSBMMjQsMzUuNSBMNSwzNS41IEM0LjMwOTY0NDA2LDM1LjUgMy42ODQ2NDQwNiwzNS4yMjAxNzggMy4yMzIyMzMwNSwzNC43Njc3NjcgQzIuNzc5ODIyMDMsMzQuMzE1MzU1OSAyLjUsMzMuNjkwMzU1OSAyLjUsMzMgTDIuNSwzMyBMMi41LDUgQzIuNSw0LjMwOTY0NDA2IDIuNzc5ODIyMDMsMy42ODQ2NDQwNiAzLjIzMjIzMzA1LDMuMjMyMjMzMDUgQzMuNjg0NjQ0MDYsMi43Nzk4MjIwMyA0LjMwOTY0NDA2LDIuNSA1LDIuNSBMNSwyLjUgTDMzLDIuNSBaIiBpZD0iUGF0aC1Db3B5LTUiIHN0cm9rZT0iI0QyRDJEMiIgZmlsbC1vcGFjaXR5PSIwIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=)}.sky-theme-modern .sky-colorpicker-button:focus{box-shadow:inset 0 0 0 2px #1870b8,0 1px 8px #0000004d;outline:none;text-decoration:none}.sky-theme-modern .sky-colorpicker-button:hover{box-shadow:inset 0 0 0 1px #1870b8;outline:none;text-decoration:none}.sky-theme-modern .sky-colorpicker-button:hover.sky-colorpicker-button-disabled{box-shadow:none}.sky-theme-modern .sky-colorpicker-checkered-background{border-radius:6px;width:40px;height:40px}.sky-theme-modern .sky-colorpicker-button-modern-chevron{position:absolute;bottom:0;right:2px;font-size:10px}.sky-theme-modern .sky-colorpicker-button-modern-chevron.sky-colorpicker-button-modern-chevron-disabled{color:#686c73}.sky-theme-modern .sky-colorpicker-reset-button-modern{width:40px;height:40px}.sky-theme-modern .sky-colorpicker-reset-button-modern.sky-colorpicker-reset-button-disabled{background-color:#ededee;border:0px solid #d2d2d2;color:#686c73}.sky-theme-modern .sky-colorpicker{background-color:transparent;width:310px}.sky-theme-modern .sky-colorpicker .saturation-lightness{height:170px}.sky-theme-modern .sky-colorpicker-container{background-color:#fff;border-radius:0 0 6px 6px}.sky-theme-modern .sky-colorpicker-footer{background:none;border:none;border-radius:0 0 6px 6px;padding:10px 10px 15px}.sky-theme-modern .selected-color{height:46px;width:46px;top:0;left:0}.sky-theme-modern .selected-color-background{height:46px;width:46px}.sky-theme-modern input{text-align:left}.sky-theme-modern .box{padding:15px 30px}.sky-theme-modern .box .left{padding:0 30px 0 0}.sky-theme-modern .box .right{padding:0}.sky-theme-modern .alpha{margin-top:10px}.sky-theme-modern .rgba-text{padding:0 10px;display:flex;justify-content:space-between;flex-wrap:wrap}.sky-theme-modern .rgba-text sky-input-box:first-child{width:100%;flex:0 1 auto;margin:0 0 10px}.sky-theme-modern .rgba-text sky-input-box:not(:first-child){flex:1;margin:0 10px 10px 0}.sky-theme-modern .rgba-text sky-input-box:last-child{margin:0 0 10px}.sky-theme-modern .sky-colorpicker-preset-color-area{padding:10px 10px 15px}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn{height:46px;width:46px;border-radius:4px;margin:0 15px 15px 0}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:active),.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:hover),.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:focus){border:1px solid #d2d2d2}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:nth-child(5n){margin:0 0 15px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i6.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent"] }, { kind: "directive", type: i3.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "directive", type: i3.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "directive", type: i7.SkyColorpickerTextDirective, selector: "[skyColorpickerText]", inputs: ["skyColorpickerText", "color", "maxRange"], outputs: ["newColorContrast"] }, { kind: "directive", type: i8.SkyColorpickerSliderDirective, selector: "[skyColorpickerSlider]", inputs: ["skyColorpickerSlider", "color", "xAxis", "yAxis"], outputs: ["newColorContrast"] }, { kind: "pipe", type: i4.SlicePipe, name: "slice" }, { kind: "pipe", type: i9.SkyLibResourcesPipe, name: "skyLibResources" }], encapsulation: i0.ViewEncapsulation.None }); }
456
456
  }
457
457
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyColorpickerComponent, decorators: [{
458
458
  type: Component,
459
- args: [{ selector: 'sky-colorpicker', providers: [SkyColorpickerService], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-input-group\"\n [ngClass]=\"{\n 'sky-colorpicker-hidden': !isVisible,\n 'sky-colorpicker-disabled': disabled\n }\"\n>\n <div [hidden]=\"true\">\n <ng-content></ng-content>\n </div>\n\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-colorpicker-button\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? colorpickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"\n label ||\n (labelledBy\n ? null\n : ('skyux_colorpicker_dropdown_button' | skyLibResources))\n \"\n [attr.aria-labelledby]=\"labelledBy\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"\n label ||\n (labelledBy\n ? null\n : ('skyux_colorpicker_dropdown_button' | skyLibResources))\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-colorpicker-button-disabled': disabled\n }\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n [style.background-color]=\"backgroundColorForDisplay\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon\n *ngIf=\"pickerButtonIcon\"\n class=\"sky-colorpicker-button-icon\"\n [icon]=\"pickerButtonIcon\"\n [iconType]=\"pickerButtonIconType\"\n [size]=\"'1x'\"\n [style.color]=\"iconColor\"\n >\n </sky-icon>\n <ng-container *skyThemeIf=\"'modern'\">\n <sky-icon\n class=\"sky-colorpicker-button-modern-chevron\"\n icon=\"chevron-down\"\n size=\"xs\"\n [ngClass]=\"{\n 'sky-colorpicker-button-modern-chevron-disabled': disabled\n }\"\n >\n </sky-icon>\n </ng-container>\n </button>\n\n <ng-template #colorpickerTemplateRef>\n <div\n class=\"sky-colorpicker-container\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"colorpickerId\"\n [hidden]=\"!isPickerVisible\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n #colorpickerRef\n >\n <div class=\"sky-colorpicker\">\n <div\n class=\"saturation-lightness\"\n [color]=\"slider.saturation - slider.value + ''\"\n [skyColorpickerSlider]\n [style.background-color]=\"hueSliderColor\"\n [xAxis]=\"1\"\n [yAxis]=\"1\"\n (newColorContrast)=\"saturationAndLightness = $event\"\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.saturation\"\n [style.top.px]=\"slider.value\"\n ></div>\n </div>\n\n <div class=\"box\">\n <div class=\"left\">\n <div class=\"selected-color-background sky-rounded-circle\"></div>\n <div\n class=\"selected-color sky-rounded-circle\"\n [style.background-color]=\"selectedColor?.rgbaText\"\n ></div>\n </div>\n <div class=\"right\">\n <div\n class=\"hue\"\n [skyColorpickerSlider]\n [xAxis]=\"1\"\n (newColorContrast)=\"hue = $event\"\n #hueSlider\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.hue\"\n ></div>\n </div>\n <div\n *ngIf=\"this.allowTransparency\"\n class=\"alpha\"\n [skyColorpickerSlider]\n [style.background-color]=\"alphaSliderColor\"\n [xAxis]=\"1\"\n (newColorContrast)=\"alphaAxis = $event\"\n #alphaSlider\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.alpha\"\n ></div>\n </div>\n </div>\n </div>\n\n <div class=\"rgba-text\">\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"'skyux_colorpicker_aria_hex' | skyLibResources\"\n [attr.for]=\"skyColorpickerHexId\"\n >\n {{ 'skyux_colorpicker_hex' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n pattern=\"^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$\"\n [attr.id]=\"skyColorpickerHexId\"\n [skyColorpickerText]\n [value]=\"hexText\"\n (newColorContrast)=\"hex = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"'skyux_colorpicker_aria_red' | skyLibResources\"\n [attr.for]=\"skyColorpickerRedId\"\n >\n {{ 'skyux_colorpicker_red' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerRedId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.red\"\n (newColorContrast)=\"red = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_green' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerGreenId\"\n >\n {{ 'skyux_colorpicker_green' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerGreenId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.green\"\n (newColorContrast)=\"green = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_blue' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerBlueId\"\n >\n {{ 'skyux_colorpicker_blue' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerBlueId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.blue\"\n (newColorContrast)=\"blue = $event\"\n />\n </sky-input-box>\n <sky-input-box *ngIf=\"this.allowTransparency\">\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_alpha' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerAlphaId\"\n >\n {{ 'skyux_colorpicker_alpha' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"1\"\n min=\"0\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n step=\"0.1\"\n type=\"number\"\n [attr.id]=\"skyColorpickerAlphaId\"\n [maxRange]=\"1\"\n [skyColorpickerText]\n [value]=\"rgbaText?.alpha\"\n (newColorContrast)=\"alphaColor = $event\"\n />\n </sky-input-box>\n </div>\n <div\n *ngIf=\"presetColors && presetColors.length\"\n class=\"sky-colorpicker-preset-color-area\"\n >\n <button\n *ngFor=\"let color of presetColors | slice : 0 : 12; let i = index\"\n type=\"button\"\n [attr.aria-label]=\"\n ('skyux_colorpicker_preset_color' | skyLibResources) + ' ' + color\n \"\n [skyThemeClass]=\"{\n 'sky-preset-color': 'default',\n 'sky-btn sky-btn-link': 'modern'\n }\"\n [style.backgroundColor]=\"color\"\n (click)=\"onPresetClick(color)\"\n ></button>\n </div>\n </div>\n\n <div\n class=\"sky-colorpicker-footer\"\n [skyThemeClass]=\"{\n 'sky-padding-even-large': 'default'\n }\"\n >\n <section class=\"sky-colorpicker-column\">\n <button\n class=\"sky-btn sky-btn-primary sky-btn-colorpicker-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_apply' | skyLibResources\"\n [skyThemeClass]=\"{ 'sky-margin-inline-sm': 'modern' }\"\n (click)=\"onApplyColorClick()\"\n >\n {{ 'skyux_colorpicker_apply' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-btn-colorpicker-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_close' | skyLibResources\"\n (click)=\"onCancelClick()\"\n >\n {{ 'skyux_colorpicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n </ng-template>\n <span\n *ngIf=\"allowTransparency\"\n aria-hidden=\"true\"\n class=\"sky-colorpicker-checkered-background\"\n >\n </span>\n\n <button\n *ngIf=\"showResetButton\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_reset' | skyLibResources\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-colorpicker-reset-button-disabled': disabled\n }\"\n [skyThemeClass]=\"{\n 'sky-colorpicker-reset-button': 'default',\n 'sky-btn sky-btn-icon-borderless sky-colorpicker-reset-button-modern':\n 'modern'\n }\"\n (click)=\"onResetClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"times\" size=\"sm\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"trash\" size=\"lg\"> </sky-icon>\n </button>\n</div>\n", styles: [".sky-colorpicker-container{position:fixed}.sky-colorpicker-button{width:30px;height:30px;border:0;cursor:pointer}.sky-colorpicker-button.sky-colorpicker-button-disabled{cursor:default}.sky-colorpicker-button .sky-colorpicker-button-icon{position:relative;bottom:2px;font-size:12px}.sky-colorpicker-disabled{opacity:.65;cursor:default}.sky-colorpicker-button,.sky-colorpicker-button:active{background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%3E%3Cpath%20id%3D%22a%22%20d%3D%22M0%200h30v30H0V0zm14.5%204H4v22h14v-8h8V4H14.5z%22%2F%3E%3C%2Fdefs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cuse%20fill%3D%22%23FFF%22%20xlink%3Ahref%3D%22%23a%22%2F%3E%3Cpath%20stroke%3D%22%23CCC%22%20d%3D%22M.5.5v29h29V.5H.5zm18%2018v8h-15v-23h23v15h-8z%22%2F%3E%3Cpath%20fill%3D%22%23292A2B%22%20d%3D%22M23.5%2025L21%2022h5%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)}.sky-colorpicker-hidden{width:0px;height:0px;overflow:hidden}.sky-colorpicker-reset-button{background-color:#fff;margin-left:5px;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #cdcfd2;width:30px;height:30px;cursor:pointer;color:#686c73}.sky-colorpicker-reset-button:hover{color:#383a3d}.sky-colorpicker-reset-button.sky-colorpicker-reset-button-disabled{color:#686c73;cursor:default}.sky-colorpicker-footer{background-color:#fff;border-top:1px solid #e2e3e4}.sky-colorpicker *{box-sizing:border-box;margin:0}.sky-colorpicker{cursor:default;width:270px;height:auto;background-color:#fff;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.sky-colorpicker i{cursor:default;position:relative}.sky-colorpicker input{text-align:center;font-size:14px;height:26px;color:#212327}.sky-colorpicker input:invalid{box-shadow:none}.sky-colorpicker input:-moz-submit-invalid{box-shadow:none}.sky-colorpicker input:-moz-ui-invalid{box-shadow:none}.sky-colorpicker input::-webkit-inner-spin-button,.sky-colorpicker input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.sky-colorpicker input[type=number].sky-form-control{-moz-appearance:textfield!important}.sky-colorpicker .button-area{padding:0 15px 15px;text-align:right}.sky-colorpicker .sky-colorpicker-preset-color-area{padding-left:9px;padding-right:9px;padding-bottom:15px;display:flex;flex-direction:row;flex-wrap:wrap}.sky-colorpicker .sky-colorpicker-preset-color-area .sky-preset-color{cursor:pointer;width:32px;height:32px;margin:5px;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4}.sky-colorpicker .sky-colorpicker-preset-color-area .sky-preset-color:hover{cursor:pointer;border:#ffffff solid 2px;margin:4px;width:34px;height:34px;box-shadow:0 0 0 1px #cdcfd2,0 0 0 2px #e2e3e4}.sky-colorpicker .arrow{height:0;width:0;border-style:solid;position:absolute;z-index:999999}.sky-colorpicker div.cursor-sv{cursor:default;position:relative;width:14px;height:14px;border-top:1px solid #cdcfd2;border-right:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2}.sky-colorpicker div.cursor{cursor:default;position:relative;width:17px;height:17px;border:#686c73 solid 2px}.sky-colorpicker .saturation-lightness{cursor:pointer;width:100%;height:170px;border:none;background-size:100% 100%;background-image:url(https://sky.blackbaudcdn.net/static/skyux-public-assets/1.0.0-beta.3/assets/images/colorpicker/saturation-lightness.webp)}.sky-colorpicker .box{display:flex;padding:4px 8px}.sky-colorpicker .box .left{position:relative;padding:16px 8px}.sky-colorpicker .box .right{flex:1 1 auto;padding:12px 8px;display:flex;flex-direction:column;justify-content:center}.sky-colorpicker .hue{cursor:pointer;width:100%;height:16px;border:none;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC)}.sky-colorpicker .alpha{cursor:pointer;width:100%;height:16px;border:none;margin-top:16px;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg==)}.sky-colorpicker .selected-color{width:40px;height:40px;top:16px;left:8px;position:absolute}.sky-colorpicker .selected-color-background{width:40px;height:40px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC)}.sky-colorpicker .rgba-text{width:100%;font-size:18px;padding:7px 15px 15px;display:flex}.sky-colorpicker .rgba-text input{min-width:0;padding:1px}.sky-colorpicker .rgba-text label{margin:0 0 8px}.sky-colorpicker .rgba-text sky-input-box{flex:1;margin:0 8px 0 0}.sky-colorpicker .rgba-text sky-input-box:first-child{flex:2}.sky-colorpicker .rgba-text sky-input-box:last-child{margin:0}.sky-colorpicker .hex-text{width:100%;font-size:14px;padding:4px 8px}.sky-colorpicker .hex-text .box{padding:0 24px 8px 8px}.sky-colorpicker .hex-text .box input{flex:1 1 auto;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;padding:1px}.sky-colorpicker .hex-text .box div{flex:1 1 auto;text-align:center;color:#686c73;float:left;clear:left}.sky-colorpicker-checkered-background{position:absolute;top:0;left:0;z-index:-1;height:30px;width:30px;background:linear-gradient(45deg,rgba(0,0,0,.0980392) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.0980392) 75%,rgba(0,0,0,.0980392) 0),linear-gradient(45deg,rgba(0,0,0,.0980392) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.0980392) 75%,rgba(0,0,0,.0980392) 0),white;background-repeat:repeat,repeat;background-position:0px 0,5px 5px;transform-origin:0 0 0;background-origin:padding-box,padding-box;-webkit-background-clip:border-box,border-box;background-clip:border-box,border-box;background-size:10px 10px,10px 10px;box-shadow:none;text-shadow:none;transition:none;transform:scaleX(1) scaleY(1) scaleZ(1)}.sky-theme-modern .sky-colorpicker-disabled{opacity:1}.sky-theme-modern .sky-colorpicker-button{width:40px;height:40px;border:1px solid #d2d2d2;border-radius:6px;position:relative}.sky-theme-modern .sky-colorpicker-button.sky-colorpicker-button-disabled{background-color:#ededee!important;border:1px solid #d2d2d2;cursor:default}.sky-theme-modern .sky-colorpicker-button .sky-colorpicker-button-icon{bottom:1px;font-size:16px}.sky-theme-modern .sky-colorpicker-button,.sky-theme-modern .sky-colorpicker-button:active{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Y29sb3JwaWNrZXIgU1ZHIGxpZ2h0PC90aXRsZT4KICAgIDxnIGlkPSJjb2xvcnBpY2tlci1TVkctbGlnaHQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIGQ9Ik0zMywwIEMzNS43NjE0MjM3LC01LjA3MjY1MzEzZS0xNiAzOCwyLjIzODU3NjI1IDM4LDUgTDM4LDMzIEMzOCwzNS43NjE0MjM3IDM1Ljc2MTQyMzcsMzggMzMsMzggTDUsMzggQzIuMjM4NTc2MjUsMzggLTUuNTAwMDE1NDRlLTE2LDM1Ljc2MTQyMzcgMCwzMyBMMCw1IEMtMy4zODE3Njg3NmUtMTYsMi4yMzg1NzYyNSAyLjIzODU3NjI1LC0zLjgwOTEzMTA2ZS0xNiA1LDAgTDMzLDAgWiBNMzMsMiBMNSwyIEMzLjM0MzE0NTc1LDIgMiwzLjM0MzE0NTc1IDIsNSBMMiw1IEwyLDMzIEMyLDM0LjY1Njg1NDIgMy4zNDMxNDU3NSwzNiA1LDM2IEw1LDM2IEwyNCwzNiBDMjUuMTA0NTY5NSwzNiAyNiwzNS4xMDQ1Njk1IDI2LDM0IEwyNiwzNCBMMjYsMjggQzI2LDI2Ljg5NTQzMDUgMjYuODk1NDMwNSwyNiAyOCwyNiBMMjgsMjYgTDM0LDI2IEMzNS4xMDQ1Njk1LDI2IDM2LDI1LjEwNDU2OTUgMzYsMjQgTDM2LDI0IEwzNiw1IEMzNiwzLjM0MzE0NTc1IDM0LjY1Njg1NDIsMiAzMywyIEwzMywyIFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgIDxwYXRoIGQ9Ik0zMywyLjUgQzMzLjY5MDM1NTksMi41IDM0LjMxNTM1NTksMi43Nzk4MjIwMyAzNC43Njc3NjcsMy4yMzIyMzMwNSBDMzUuMjIwMTc4LDMuNjg0NjQ0MDYgMzUuNSw0LjMwOTY0NDA2IDM1LjUsNSBMMzUuNSw1IEwzNS41LDI0IEMzNS41LDI0LjQxNDIxMzYgMzUuMzMyMTA2OCwyNC43ODkyMTM2IDM1LjA2MDY2MDIsMjUuMDYwNjYwMiBDMzQuNzg5MjEzNiwyNS4zMzIxMDY4IDM0LjQxNDIxMzYsMjUuNSAzNCwyNS41IEwzNCwyNS41IEwyOCwyNS41IEMyNy4zMDk2NDQxLDI1LjUgMjYuNjg0NjQ0MSwyNS43Nzk4MjIgMjYuMjMyMjMzLDI2LjIzMjIzMyBDMjUuNzc5ODIyLDI2LjY4NDY0NDEgMjUuNSwyNy4zMDk2NDQxIDI1LjUsMjggTDI1LjUsMjggTDI1LjUsMzQgQzI1LjUsMzQuNDE0MjEzNiAyNS4zMzIxMDY4LDM0Ljc4OTIxMzYgMjUuMDYwNjYwMiwzNS4wNjA2NjAyIEMyNC43ODkyMTM2LDM1LjMzMjEwNjggMjQuNDE0MjEzNiwzNS41IDI0LDM1LjUgTDI0LDM1LjUgTDUsMzUuNSBDNC4zMDk2NDQwNiwzNS41IDMuNjg0NjQ0MDYsMzUuMjIwMTc4IDMuMjMyMjMzMDUsMzQuNzY3NzY3IEMyLjc3OTgyMjAzLDM0LjMxNTM1NTkgMi41LDMzLjY5MDM1NTkgMi41LDMzIEwyLjUsMzMgTDIuNSw1IEMyLjUsNC4zMDk2NDQwNiAyLjc3OTgyMjAzLDMuNjg0NjQ0MDYgMy4yMzIyMzMwNSwzLjIzMjIzMzA1IEMzLjY4NDY0NDA2LDIuNzc5ODIyMDMgNC4zMDk2NDQwNiwyLjUgNSwyLjUgTDUsMi41IFoiIGlkPSJQYXRoLUNvcHktNSIgc3Ryb2tlPSIjRDJEMkQyIiBmaWxsLW9wYWNpdHk9IjAiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+)}.sky-theme-modern .sky-colorpicker-button.sky-colorpicker-button-disabled,.sky-theme-modern .sky-colorpicker-button:active.sky-colorpicker-button-disabled{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Y29sb3JwaWNrZXIgU1ZHIGxpZ2h0PC90aXRsZT4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJjb2xvcnBpY2tlci1TVkctbGlnaHQiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywwIEMzNS43NjE0MjM3LDAgMzgsMi4yMzg1NzYyNSAzOCw1IEwzOCwzMyBDMzgsMzUuNzYxNDIzNyAzNS43NjE0MjM3LDM4IDMzLDM4IEw1LDM4IEMyLjIzODU3NjI1LDM4IDAsMzUuNzYxNDIzNyAwLDMzIEwwLDUgQzAsMi4yMzg1NzYyNSAyLjIzODU3NjI1LDAgNSwwIEwzMywwIFogTTMzLDIgTDUsMiBDMy4zNDMxNDU3NSwyIDIsMy4zNDMxNDU3NSAyLDUgTDIsNSBMMiwzMyBDMiwzNC42NTY4NTQyIDMuMzQzMTQ1NzUsMzYgNSwzNiBMNSwzNiBMMjQsMzYgQzI1LjEwNDU2OTUsMzYgMjYsMzUuMTA0NTY5NSAyNiwzNCBMMjYsMzQgTDI2LDI4IEMyNiwyNi44OTU0MzA1IDI2Ljg5NTQzMDUsMjYgMjgsMjYgTDI4LDI2IEwzNCwyNiBDMzUuMTA0NTY5NSwyNiAzNiwyNS4xMDQ1Njk1IDM2LDI0IEwzNiwyNCBMMzYsNSBDMzYsMy4zNDMxNDU3NSAzNC42NTY4NTQyLDIgMzMsMiBMMzMsMiBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIGZpbGw9IiNFREVERUUiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTMzLDIuNSBDMzMuNjkwMzU1OSwyLjUgMzQuMzE1MzU1OSwyLjc3OTgyMjAzIDM0Ljc2Nzc2NywzLjIzMjIzMzA1IEMzNS4yMjAxNzgsMy42ODQ2NDQwNiAzNS41LDQuMzA5NjQ0MDYgMzUuNSw1IEwzNS41LDUgTDM1LjUsMjQgQzM1LjUsMjQuNDE0MjEzNiAzNS4zMzIxMDY4LDI0Ljc4OTIxMzYgMzUuMDYwNjYwMiwyNS4wNjA2NjAyIEMzNC43ODkyMTM2LDI1LjMzMjEwNjggMzQuNDE0MjEzNiwyNS41IDM0LDI1LjUgTDM0LDI1LjUgTDI4LDI1LjUgQzI3LjMwOTY0NDEsMjUuNSAyNi42ODQ2NDQxLDI1Ljc3OTgyMiAyNi4yMzIyMzMsMjYuMjMyMjMzIEMyNS43Nzk4MjIsMjYuNjg0NjQ0MSAyNS41LDI3LjMwOTY0NDEgMjUuNSwyOCBMMjUuNSwyOCBMMjUuNSwzNCBDMjUuNSwzNC40MTQyMTM2IDI1LjMzMjEwNjgsMzQuNzg5MjEzNiAyNS4wNjA2NjAyLDM1LjA2MDY2MDIgQzI0Ljc4OTIxMzYsMzUuMzMyMTA2OCAyNC40MTQyMTM2LDM1LjUgMjQsMzUuNSBMMjQsMzUuNSBMNSwzNS41IEM0LjMwOTY0NDA2LDM1LjUgMy42ODQ2NDQwNiwzNS4yMjAxNzggMy4yMzIyMzMwNSwzNC43Njc3NjcgQzIuNzc5ODIyMDMsMzQuMzE1MzU1OSAyLjUsMzMuNjkwMzU1OSAyLjUsMzMgTDIuNSwzMyBMMi41LDUgQzIuNSw0LjMwOTY0NDA2IDIuNzc5ODIyMDMsMy42ODQ2NDQwNiAzLjIzMjIzMzA1LDMuMjMyMjMzMDUgQzMuNjg0NjQ0MDYsMi43Nzk4MjIwMyA0LjMwOTY0NDA2LDIuNSA1LDIuNSBMNSwyLjUgTDMzLDIuNSBaIiBpZD0iUGF0aC1Db3B5LTUiIHN0cm9rZT0iI0QyRDJEMiIgZmlsbC1vcGFjaXR5PSIwIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=)}.sky-theme-modern .sky-colorpicker-button:focus{box-shadow:inset 0 0 0 2px #1870b8,0 1px 8px #0000004d;outline:none;text-decoration:none}.sky-theme-modern .sky-colorpicker-button:hover{box-shadow:inset 0 0 0 1px #1870b8;outline:none;text-decoration:none}.sky-theme-modern .sky-colorpicker-button:hover.sky-colorpicker-button-disabled{box-shadow:none}.sky-theme-modern .sky-colorpicker-checkered-background{border-radius:6px;width:40px;height:40px}.sky-theme-modern .sky-colorpicker-button-modern-chevron{position:absolute;bottom:0;right:2px;font-size:10px}.sky-theme-modern .sky-colorpicker-button-modern-chevron.sky-colorpicker-button-modern-chevron-disabled{color:#686c73}.sky-theme-modern .sky-colorpicker-reset-button-modern{width:40px;height:40px}.sky-theme-modern .sky-colorpicker-reset-button-modern.sky-colorpicker-reset-button-disabled{background-color:#ededee;border:0px solid #d2d2d2;color:#686c73}.sky-theme-modern .sky-colorpicker{background-color:transparent;width:310px}.sky-theme-modern .sky-colorpicker .saturation-lightness{height:170px}.sky-theme-modern .sky-colorpicker-container{background-color:#fff;border-radius:0 0 6px 6px}.sky-theme-modern .sky-colorpicker-footer{background:none;border:none;border-radius:0 0 6px 6px;padding:10px 10px 15px}.sky-theme-modern .selected-color{height:46px;width:46px;top:0;left:0}.sky-theme-modern .selected-color-background{height:46px;width:46px}.sky-theme-modern input{text-align:left}.sky-theme-modern .box{padding:15px 30px}.sky-theme-modern .box .left{padding:0 30px 0 0}.sky-theme-modern .box .right{padding:0}.sky-theme-modern .alpha{margin-top:10px}.sky-theme-modern .rgba-text{padding:0 10px;display:flex;justify-content:space-between;flex-wrap:wrap}.sky-theme-modern .rgba-text sky-input-box:first-child{width:100%;flex:0 1 auto;margin:0 0 10px}.sky-theme-modern .rgba-text sky-input-box:not(:first-child){flex:1;margin:0 10px 10px 0}.sky-theme-modern .rgba-text sky-input-box:last-child{margin:0 0 10px}.sky-theme-modern .sky-colorpicker-preset-color-area{padding:10px 10px 15px}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn{height:46px;width:46px;border-radius:4px;margin:0 15px 15px 0}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:active),.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:hover),.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:focus){border:1px solid #d2d2d2}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:nth-child(5n){margin:0 0 15px}\n"] }]
459
+ args: [{ selector: 'sky-colorpicker', providers: [SkyColorpickerService], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-input-group\"\n [ngClass]=\"{\n 'sky-colorpicker-hidden': !isVisible,\n 'sky-colorpicker-disabled': disabled\n }\"\n>\n <div [hidden]=\"true\">\n <ng-content />\n </div>\n\n <button\n aria-haspopup=\"dialog\"\n class=\"sky-colorpicker-button\"\n type=\"button\"\n [attr.aria-controls]=\"isOpen ? colorpickerId : null\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"\n label ||\n (labelledBy\n ? null\n : ('skyux_colorpicker_dropdown_button' | skyLibResources))\n \"\n [attr.aria-labelledby]=\"labelledBy\"\n [attr.id]=\"triggerButtonId\"\n [attr.title]=\"\n label ||\n (labelledBy\n ? null\n : ('skyux_colorpicker_dropdown_button' | skyLibResources))\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-colorpicker-button-disabled': disabled\n }\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n [style.background-color]=\"backgroundColorForDisplay\"\n (click)=\"onTriggerButtonClick()\"\n #triggerButtonRef\n >\n <sky-icon\n *ngIf=\"pickerButtonIcon\"\n class=\"sky-colorpicker-button-icon\"\n [icon]=\"pickerButtonIcon\"\n [iconType]=\"pickerButtonIconType\"\n [size]=\"'1x'\"\n [style.color]=\"iconColor\"\n />\n <ng-container *skyThemeIf=\"'modern'\">\n <sky-icon\n class=\"sky-colorpicker-button-modern-chevron\"\n icon=\"chevron-down\"\n size=\"xs\"\n [ngClass]=\"{\n 'sky-colorpicker-button-modern-chevron-disabled': disabled\n }\"\n />\n </ng-container>\n </button>\n\n <ng-template #colorpickerTemplateRef>\n <div\n class=\"sky-colorpicker-container\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n [attr.id]=\"colorpickerId\"\n [hidden]=\"!isPickerVisible\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n #colorpickerRef\n >\n <div class=\"sky-colorpicker\">\n <div\n class=\"saturation-lightness\"\n [color]=\"slider.saturation - slider.value + ''\"\n [skyColorpickerSlider]\n [style.background-color]=\"hueSliderColor\"\n [xAxis]=\"1\"\n [yAxis]=\"1\"\n (newColorContrast)=\"saturationAndLightness = $event\"\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.saturation\"\n [style.top.px]=\"slider.value\"\n ></div>\n </div>\n\n <div class=\"box\">\n <div class=\"left\">\n <div class=\"selected-color-background sky-rounded-circle\"></div>\n <div\n class=\"selected-color sky-rounded-circle\"\n [style.background-color]=\"selectedColor?.rgbaText\"\n ></div>\n </div>\n <div class=\"right\">\n <div\n class=\"hue\"\n [skyColorpickerSlider]\n [xAxis]=\"1\"\n (newColorContrast)=\"hue = $event\"\n #hueSlider\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.hue\"\n ></div>\n </div>\n <div\n *ngIf=\"this.allowTransparency\"\n class=\"alpha\"\n [skyColorpickerSlider]\n [style.background-color]=\"alphaSliderColor\"\n [xAxis]=\"1\"\n (newColorContrast)=\"alphaAxis = $event\"\n #alphaSlider\n >\n <div\n class=\"cursor sky-rounded-circle\"\n [style.left.px]=\"slider.alpha\"\n ></div>\n </div>\n </div>\n </div>\n\n <div class=\"rgba-text\">\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"'skyux_colorpicker_aria_hex' | skyLibResources\"\n [attr.for]=\"skyColorpickerHexId\"\n >\n {{ 'skyux_colorpicker_hex' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n pattern=\"^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$\"\n [attr.id]=\"skyColorpickerHexId\"\n [skyColorpickerText]\n [value]=\"hexText\"\n (newColorContrast)=\"hex = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"'skyux_colorpicker_aria_red' | skyLibResources\"\n [attr.for]=\"skyColorpickerRedId\"\n >\n {{ 'skyux_colorpicker_red' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerRedId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.red\"\n (newColorContrast)=\"red = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_green' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerGreenId\"\n >\n {{ 'skyux_colorpicker_green' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerGreenId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.green\"\n (newColorContrast)=\"green = $event\"\n />\n </sky-input-box>\n <sky-input-box>\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_blue' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerBlueId\"\n >\n {{ 'skyux_colorpicker_blue' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"255\"\n min=\"0\"\n pattern=\"[0-9]*\"\n type=\"number\"\n [attr.id]=\"skyColorpickerBlueId\"\n [maxRange]=\"255\"\n [skyColorpickerText]\n [value]=\"rgbaText?.blue\"\n (newColorContrast)=\"blue = $event\"\n />\n </sky-input-box>\n <sky-input-box *ngIf=\"this.allowTransparency\">\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n 'skyux_colorpicker_aria_alpha' | skyLibResources\n \"\n [attr.for]=\"skyColorpickerAlphaId\"\n >\n {{ 'skyux_colorpicker_alpha' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n max=\"1\"\n min=\"0\"\n pattern=\"[0-9]+([\\.,][0-9]{1,2})?\"\n step=\"0.1\"\n type=\"number\"\n [attr.id]=\"skyColorpickerAlphaId\"\n [maxRange]=\"1\"\n [skyColorpickerText]\n [value]=\"rgbaText?.alpha\"\n (newColorContrast)=\"alphaColor = $event\"\n />\n </sky-input-box>\n </div>\n <div\n *ngIf=\"presetColors && presetColors.length\"\n class=\"sky-colorpicker-preset-color-area\"\n >\n <button\n *ngFor=\"let color of presetColors | slice : 0 : 12; let i = index\"\n type=\"button\"\n [attr.aria-label]=\"\n ('skyux_colorpicker_preset_color' | skyLibResources) + ' ' + color\n \"\n [skyThemeClass]=\"{\n 'sky-preset-color': 'default',\n 'sky-btn sky-btn-link': 'modern'\n }\"\n [style.backgroundColor]=\"color\"\n (click)=\"onPresetClick(color)\"\n ></button>\n </div>\n </div>\n\n <div\n class=\"sky-colorpicker-footer\"\n [skyThemeClass]=\"{\n 'sky-padding-even-large': 'default'\n }\"\n >\n <section class=\"sky-colorpicker-column\">\n <button\n class=\"sky-btn sky-btn-primary sky-btn-colorpicker-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_apply' | skyLibResources\"\n [skyThemeClass]=\"{ 'sky-margin-inline-sm': 'modern' }\"\n (click)=\"onApplyColorClick()\"\n >\n {{ 'skyux_colorpicker_apply' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-btn-colorpicker-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_close' | skyLibResources\"\n (click)=\"onCancelClick()\"\n >\n {{ 'skyux_colorpicker_close' | skyLibResources }}\n </button>\n </section>\n </div>\n </div>\n </ng-template>\n <span\n *ngIf=\"allowTransparency\"\n aria-hidden=\"true\"\n class=\"sky-colorpicker-checkered-background\"\n >\n </span>\n\n <button\n *ngIf=\"showResetButton\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_colorpicker_reset' | skyLibResources\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-colorpicker-reset-button-disabled': disabled\n }\"\n [skyThemeClass]=\"{\n 'sky-colorpicker-reset-button': 'default',\n 'sky-btn sky-btn-icon-borderless sky-colorpicker-reset-button-modern':\n 'modern'\n }\"\n (click)=\"onResetClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"times\" size=\"sm\" />\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"trash\" size=\"lg\" />\n </button>\n</div>\n", styles: [".sky-colorpicker-container{position:fixed}.sky-colorpicker-button{width:30px;height:30px;border:0;cursor:pointer}.sky-colorpicker-button.sky-colorpicker-button-disabled{cursor:default}.sky-colorpicker-button .sky-colorpicker-button-icon{position:relative;bottom:2px;font-size:12px}.sky-colorpicker-disabled{opacity:.65;cursor:default}.sky-colorpicker-button,.sky-colorpicker-button:active{background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%3E%3Cpath%20id%3D%22a%22%20d%3D%22M0%200h30v30H0V0zm14.5%204H4v22h14v-8h8V4H14.5z%22%2F%3E%3C%2Fdefs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cuse%20fill%3D%22%23FFF%22%20xlink%3Ahref%3D%22%23a%22%2F%3E%3Cpath%20stroke%3D%22%23CCC%22%20d%3D%22M.5.5v29h29V.5H.5zm18%2018v8h-15v-23h23v15h-8z%22%2F%3E%3Cpath%20fill%3D%22%23292A2B%22%20d%3D%22M23.5%2025L21%2022h5%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)}.sky-colorpicker-hidden{width:0px;height:0px;overflow:hidden}.sky-colorpicker-reset-button{background-color:#fff;margin-left:5px;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #cdcfd2;width:30px;height:30px;cursor:pointer;color:#686c73}.sky-colorpicker-reset-button:hover{color:#383a3d}.sky-colorpicker-reset-button.sky-colorpicker-reset-button-disabled{color:#686c73;cursor:default}.sky-colorpicker-footer{background-color:#fff;border-top:1px solid #e2e3e4}.sky-colorpicker *{box-sizing:border-box;margin:0}.sky-colorpicker{cursor:default;width:270px;height:auto;background-color:#fff;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.sky-colorpicker i{cursor:default;position:relative}.sky-colorpicker input{text-align:center;font-size:14px;height:26px;color:#212327}.sky-colorpicker input:invalid{box-shadow:none}.sky-colorpicker input:-moz-submit-invalid{box-shadow:none}.sky-colorpicker input:-moz-ui-invalid{box-shadow:none}.sky-colorpicker input::-webkit-inner-spin-button,.sky-colorpicker input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.sky-colorpicker input[type=number].sky-form-control{-moz-appearance:textfield!important}.sky-colorpicker .button-area{padding:0 15px 15px;text-align:right}.sky-colorpicker .sky-colorpicker-preset-color-area{padding-left:9px;padding-right:9px;padding-bottom:15px;display:flex;flex-direction:row;flex-wrap:wrap}.sky-colorpicker .sky-colorpicker-preset-color-area .sky-preset-color{cursor:pointer;width:32px;height:32px;margin:5px;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4}.sky-colorpicker .sky-colorpicker-preset-color-area .sky-preset-color:hover{cursor:pointer;border:#ffffff solid 2px;margin:4px;width:34px;height:34px;box-shadow:0 0 0 1px #cdcfd2,0 0 0 2px #e2e3e4}.sky-colorpicker .arrow{height:0;width:0;border-style:solid;position:absolute;z-index:999999}.sky-colorpicker div.cursor-sv{cursor:default;position:relative;width:14px;height:14px;border-top:1px solid #cdcfd2;border-right:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2}.sky-colorpicker div.cursor{cursor:default;position:relative;width:17px;height:17px;border:#686c73 solid 2px}.sky-colorpicker .saturation-lightness{cursor:pointer;width:100%;height:170px;border:none;background-size:100% 100%;background-image:url(https://sky.blackbaudcdn.net/static/skyux-public-assets/1.0.0-beta.3/assets/images/colorpicker/saturation-lightness.webp)}.sky-colorpicker .box{display:flex;padding:4px 8px}.sky-colorpicker .box .left{position:relative;padding:16px 8px}.sky-colorpicker .box .right{flex:1 1 auto;padding:12px 8px;display:flex;flex-direction:column;justify-content:center}.sky-colorpicker .hue{cursor:pointer;width:100%;height:16px;border:none;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC)}.sky-colorpicker .alpha{cursor:pointer;width:100%;height:16px;border:none;margin-top:16px;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg==)}.sky-colorpicker .selected-color{width:40px;height:40px;top:16px;left:8px;position:absolute}.sky-colorpicker .selected-color-background{width:40px;height:40px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC)}.sky-colorpicker .rgba-text{width:100%;font-size:18px;padding:7px 15px 15px;display:flex}.sky-colorpicker .rgba-text input{min-width:0;padding:1px}.sky-colorpicker .rgba-text label{margin:0 0 8px}.sky-colorpicker .rgba-text sky-input-box{flex:1;margin:0 8px 0 0}.sky-colorpicker .rgba-text sky-input-box:first-child{flex:2}.sky-colorpicker .rgba-text sky-input-box:last-child{margin:0}.sky-colorpicker .hex-text{width:100%;font-size:14px;padding:4px 8px}.sky-colorpicker .hex-text .box{padding:0 24px 8px 8px}.sky-colorpicker .hex-text .box input{flex:1 1 auto;border-top:1px solid #e2e3e4;border-right:1px solid #e2e3e4;border-bottom:1px solid #e2e3e4;border-left:1px solid #e2e3e4;padding:1px}.sky-colorpicker .hex-text .box div{flex:1 1 auto;text-align:center;color:#686c73;float:left;clear:left}.sky-colorpicker-checkered-background{position:absolute;top:0;left:0;z-index:-1;height:30px;width:30px;background:linear-gradient(45deg,rgba(0,0,0,.0980392) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.0980392) 75%,rgba(0,0,0,.0980392) 0),linear-gradient(45deg,rgba(0,0,0,.0980392) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.0980392) 75%,rgba(0,0,0,.0980392) 0),white;background-repeat:repeat,repeat;background-position:0px 0,5px 5px;transform-origin:0 0 0;background-origin:padding-box,padding-box;-webkit-background-clip:border-box,border-box;background-clip:border-box,border-box;background-size:10px 10px,10px 10px;box-shadow:none;text-shadow:none;transition:none;transform:scaleX(1) scaleY(1) scaleZ(1)}.sky-theme-modern .sky-colorpicker-disabled{opacity:1}.sky-theme-modern .sky-colorpicker-button{width:40px;height:40px;border:1px solid #d2d2d2;border-radius:6px;position:relative}.sky-theme-modern .sky-colorpicker-button.sky-colorpicker-button-disabled{background-color:#ededee!important;border:1px solid #d2d2d2;cursor:default}.sky-theme-modern .sky-colorpicker-button .sky-colorpicker-button-icon{bottom:1px;font-size:16px}.sky-theme-modern .sky-colorpicker-button,.sky-theme-modern .sky-colorpicker-button:active{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Y29sb3JwaWNrZXIgU1ZHIGxpZ2h0PC90aXRsZT4KICAgIDxnIGlkPSJjb2xvcnBpY2tlci1TVkctbGlnaHQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIGQ9Ik0zMywwIEMzNS43NjE0MjM3LC01LjA3MjY1MzEzZS0xNiAzOCwyLjIzODU3NjI1IDM4LDUgTDM4LDMzIEMzOCwzNS43NjE0MjM3IDM1Ljc2MTQyMzcsMzggMzMsMzggTDUsMzggQzIuMjM4NTc2MjUsMzggLTUuNTAwMDE1NDRlLTE2LDM1Ljc2MTQyMzcgMCwzMyBMMCw1IEMtMy4zODE3Njg3NmUtMTYsMi4yMzg1NzYyNSAyLjIzODU3NjI1LC0zLjgwOTEzMTA2ZS0xNiA1LDAgTDMzLDAgWiBNMzMsMiBMNSwyIEMzLjM0MzE0NTc1LDIgMiwzLjM0MzE0NTc1IDIsNSBMMiw1IEwyLDMzIEMyLDM0LjY1Njg1NDIgMy4zNDMxNDU3NSwzNiA1LDM2IEw1LDM2IEwyNCwzNiBDMjUuMTA0NTY5NSwzNiAyNiwzNS4xMDQ1Njk1IDI2LDM0IEwyNiwzNCBMMjYsMjggQzI2LDI2Ljg5NTQzMDUgMjYuODk1NDMwNSwyNiAyOCwyNiBMMjgsMjYgTDM0LDI2IEMzNS4xMDQ1Njk1LDI2IDM2LDI1LjEwNDU2OTUgMzYsMjQgTDM2LDI0IEwzNiw1IEMzNiwzLjM0MzE0NTc1IDM0LjY1Njg1NDIsMiAzMywyIEwzMywyIFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgICAgIDxwYXRoIGQ9Ik0zMywyLjUgQzMzLjY5MDM1NTksMi41IDM0LjMxNTM1NTksMi43Nzk4MjIwMyAzNC43Njc3NjcsMy4yMzIyMzMwNSBDMzUuMjIwMTc4LDMuNjg0NjQ0MDYgMzUuNSw0LjMwOTY0NDA2IDM1LjUsNSBMMzUuNSw1IEwzNS41LDI0IEMzNS41LDI0LjQxNDIxMzYgMzUuMzMyMTA2OCwyNC43ODkyMTM2IDM1LjA2MDY2MDIsMjUuMDYwNjYwMiBDMzQuNzg5MjEzNiwyNS4zMzIxMDY4IDM0LjQxNDIxMzYsMjUuNSAzNCwyNS41IEwzNCwyNS41IEwyOCwyNS41IEMyNy4zMDk2NDQxLDI1LjUgMjYuNjg0NjQ0MSwyNS43Nzk4MjIgMjYuMjMyMjMzLDI2LjIzMjIzMyBDMjUuNzc5ODIyLDI2LjY4NDY0NDEgMjUuNSwyNy4zMDk2NDQxIDI1LjUsMjggTDI1LjUsMjggTDI1LjUsMzQgQzI1LjUsMzQuNDE0MjEzNiAyNS4zMzIxMDY4LDM0Ljc4OTIxMzYgMjUuMDYwNjYwMiwzNS4wNjA2NjAyIEMyNC43ODkyMTM2LDM1LjMzMjEwNjggMjQuNDE0MjEzNiwzNS41IDI0LDM1LjUgTDI0LDM1LjUgTDUsMzUuNSBDNC4zMDk2NDQwNiwzNS41IDMuNjg0NjQ0MDYsMzUuMjIwMTc4IDMuMjMyMjMzMDUsMzQuNzY3NzY3IEMyLjc3OTgyMjAzLDM0LjMxNTM1NTkgMi41LDMzLjY5MDM1NTkgMi41LDMzIEwyLjUsMzMgTDIuNSw1IEMyLjUsNC4zMDk2NDQwNiAyLjc3OTgyMjAzLDMuNjg0NjQ0MDYgMy4yMzIyMzMwNSwzLjIzMjIzMzA1IEMzLjY4NDY0NDA2LDIuNzc5ODIyMDMgNC4zMDk2NDQwNiwyLjUgNSwyLjUgTDUsMi41IFoiIGlkPSJQYXRoLUNvcHktNSIgc3Ryb2tlPSIjRDJEMkQyIiBmaWxsLW9wYWNpdHk9IjAiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+)}.sky-theme-modern .sky-colorpicker-button.sky-colorpicker-button-disabled,.sky-theme-modern .sky-colorpicker-button:active.sky-colorpicker-button-disabled{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+Y29sb3JwaWNrZXIgU1ZHIGxpZ2h0PC90aXRsZT4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJjb2xvcnBpY2tlci1TVkctbGlnaHQiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMywwIEMzNS43NjE0MjM3LDAgMzgsMi4yMzg1NzYyNSAzOCw1IEwzOCwzMyBDMzgsMzUuNzYxNDIzNyAzNS43NjE0MjM3LDM4IDMzLDM4IEw1LDM4IEMyLjIzODU3NjI1LDM4IDAsMzUuNzYxNDIzNyAwLDMzIEwwLDUgQzAsMi4yMzg1NzYyNSAyLjIzODU3NjI1LDAgNSwwIEwzMywwIFogTTMzLDIgTDUsMiBDMy4zNDMxNDU3NSwyIDIsMy4zNDMxNDU3NSAyLDUgTDIsNSBMMiwzMyBDMiwzNC42NTY4NTQyIDMuMzQzMTQ1NzUsMzYgNSwzNiBMNSwzNiBMMjQsMzYgQzI1LjEwNDU2OTUsMzYgMjYsMzUuMTA0NTY5NSAyNiwzNCBMMjYsMzQgTDI2LDI4IEMyNiwyNi44OTU0MzA1IDI2Ljg5NTQzMDUsMjYgMjgsMjYgTDI4LDI2IEwzNCwyNiBDMzUuMTA0NTY5NSwyNiAzNiwyNS4xMDQ1Njk1IDM2LDI0IEwzNiwyNCBMMzYsNSBDMzYsMy4zNDMxNDU3NSAzNC42NTY4NTQyLDIgMzMsMiBMMzMsMiBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIGZpbGw9IiNFREVERUUiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTMzLDIuNSBDMzMuNjkwMzU1OSwyLjUgMzQuMzE1MzU1OSwyLjc3OTgyMjAzIDM0Ljc2Nzc2NywzLjIzMjIzMzA1IEMzNS4yMjAxNzgsMy42ODQ2NDQwNiAzNS41LDQuMzA5NjQ0MDYgMzUuNSw1IEwzNS41LDUgTDM1LjUsMjQgQzM1LjUsMjQuNDE0MjEzNiAzNS4zMzIxMDY4LDI0Ljc4OTIxMzYgMzUuMDYwNjYwMiwyNS4wNjA2NjAyIEMzNC43ODkyMTM2LDI1LjMzMjEwNjggMzQuNDE0MjEzNiwyNS41IDM0LDI1LjUgTDM0LDI1LjUgTDI4LDI1LjUgQzI3LjMwOTY0NDEsMjUuNSAyNi42ODQ2NDQxLDI1Ljc3OTgyMiAyNi4yMzIyMzMsMjYuMjMyMjMzIEMyNS43Nzk4MjIsMjYuNjg0NjQ0MSAyNS41LDI3LjMwOTY0NDEgMjUuNSwyOCBMMjUuNSwyOCBMMjUuNSwzNCBDMjUuNSwzNC40MTQyMTM2IDI1LjMzMjEwNjgsMzQuNzg5MjEzNiAyNS4wNjA2NjAyLDM1LjA2MDY2MDIgQzI0Ljc4OTIxMzYsMzUuMzMyMTA2OCAyNC40MTQyMTM2LDM1LjUgMjQsMzUuNSBMMjQsMzUuNSBMNSwzNS41IEM0LjMwOTY0NDA2LDM1LjUgMy42ODQ2NDQwNiwzNS4yMjAxNzggMy4yMzIyMzMwNSwzNC43Njc3NjcgQzIuNzc5ODIyMDMsMzQuMzE1MzU1OSAyLjUsMzMuNjkwMzU1OSAyLjUsMzMgTDIuNSwzMyBMMi41LDUgQzIuNSw0LjMwOTY0NDA2IDIuNzc5ODIyMDMsMy42ODQ2NDQwNiAzLjIzMjIzMzA1LDMuMjMyMjMzMDUgQzMuNjg0NjQ0MDYsMi43Nzk4MjIwMyA0LjMwOTY0NDA2LDIuNSA1LDIuNSBMNSwyLjUgTDMzLDIuNSBaIiBpZD0iUGF0aC1Db3B5LTUiIHN0cm9rZT0iI0QyRDJEMiIgZmlsbC1vcGFjaXR5PSIwIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=)}.sky-theme-modern .sky-colorpicker-button:focus{box-shadow:inset 0 0 0 2px #1870b8,0 1px 8px #0000004d;outline:none;text-decoration:none}.sky-theme-modern .sky-colorpicker-button:hover{box-shadow:inset 0 0 0 1px #1870b8;outline:none;text-decoration:none}.sky-theme-modern .sky-colorpicker-button:hover.sky-colorpicker-button-disabled{box-shadow:none}.sky-theme-modern .sky-colorpicker-checkered-background{border-radius:6px;width:40px;height:40px}.sky-theme-modern .sky-colorpicker-button-modern-chevron{position:absolute;bottom:0;right:2px;font-size:10px}.sky-theme-modern .sky-colorpicker-button-modern-chevron.sky-colorpicker-button-modern-chevron-disabled{color:#686c73}.sky-theme-modern .sky-colorpicker-reset-button-modern{width:40px;height:40px}.sky-theme-modern .sky-colorpicker-reset-button-modern.sky-colorpicker-reset-button-disabled{background-color:#ededee;border:0px solid #d2d2d2;color:#686c73}.sky-theme-modern .sky-colorpicker{background-color:transparent;width:310px}.sky-theme-modern .sky-colorpicker .saturation-lightness{height:170px}.sky-theme-modern .sky-colorpicker-container{background-color:#fff;border-radius:0 0 6px 6px}.sky-theme-modern .sky-colorpicker-footer{background:none;border:none;border-radius:0 0 6px 6px;padding:10px 10px 15px}.sky-theme-modern .selected-color{height:46px;width:46px;top:0;left:0}.sky-theme-modern .selected-color-background{height:46px;width:46px}.sky-theme-modern input{text-align:left}.sky-theme-modern .box{padding:15px 30px}.sky-theme-modern .box .left{padding:0 30px 0 0}.sky-theme-modern .box .right{padding:0}.sky-theme-modern .alpha{margin-top:10px}.sky-theme-modern .rgba-text{padding:0 10px;display:flex;justify-content:space-between;flex-wrap:wrap}.sky-theme-modern .rgba-text sky-input-box:first-child{width:100%;flex:0 1 auto;margin:0 0 10px}.sky-theme-modern .rgba-text sky-input-box:not(:first-child){flex:1;margin:0 10px 10px 0}.sky-theme-modern .rgba-text sky-input-box:last-child{margin:0 0 10px}.sky-theme-modern .sky-colorpicker-preset-color-area{padding:10px 10px 15px}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn{height:46px;width:46px;border-radius:4px;margin:0 15px 15px 0}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:active),.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:hover),.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:not(:focus){border:1px solid #d2d2d2}.sky-theme-modern .sky-colorpicker-preset-color-area .sky-btn:nth-child(5n){margin:0 0 15px}\n"] }]
460
460
  }], ctorParameters: function () { return [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2.SkyColorpickerService }, { type: i3.SkyThemeService, decorators: [{
461
461
  type: Optional
462
462
  }] }]; }, propDecorators: { pickerButtonIcon: [{
@@ -491,4 +491,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
491
491
  read: ElementRef,
492
492
  }]
493
493
  }] } });
494
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbG9ycGlja2VyL3NyYy9saWIvbW9kdWxlcy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29sb3JwaWNrZXIvc3JjL2xpYi9tb2R1bGVzL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsR0FNdkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7O0FBSzdFLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBRXpCOzs7O0dBSUc7QUFRSCxNQUFNLE9BQU8sdUJBQXVCO0lBMkRsQyxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxl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TUFBTTtnQkFRQSxhQUFhO3NCQURuQixLQUFLO2dCQU9DLGVBQWU7c0JBRHJCLEtBQUs7Z0JBc0hJLHNCQUFzQjtzQkFIL0IsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRTt3QkFDbkMsSUFBSSxFQUFFLFdBQVc7cUJBQ2xCO2dCQU1TLGdCQUFnQjtzQkFIekIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQU1hLGNBQWM7c0JBSDNCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUU7d0JBQzNCLElBQUksRUFBRSxVQUFVO3FCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5QWZmaXhlcixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJY29uVHlwZSB9IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTbGlkZXJEaW1lbnNpb24sIFNsaWRlclBvc2l0aW9uIH0gZnJvbSAnLi9jb2xvcnBpY2tlci1jbGFzc2VzJztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyU2VydmljZSB9IGZyb20gJy4vY29sb3JwaWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMgfSBmcm9tICcuL3R5cGVzL2NvbG9ycGlja2VyLWF4aXMnO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJDaGFuZ2VDb2xvciB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItY29sb3InO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJIc3ZhIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1oc3ZhJztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1tZXNzYWdlLXR5cGUnO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJPdXRwdXQgfSBmcm9tICcuL3R5cGVzL2NvbG9ycGlja2VyLW91dHB1dCc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlclJlc3VsdCB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItcmVzdWx0JztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyUmdiYSB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItcmdiYSc7XG5cbmxldCBjb21wb25lbnRJZEluZGV4ID0gMDtcblxuLyoqXG4gKiBUaGUgU0tZIFVYLXRoZW1lZCByZXBsYWNlbWVudCBmb3IgdGhlIEhUTUwgYGlucHV0YCBlbGVtZW50IHdpdGggYHR5cGU9XCJjb2xvclwiYC5cbiAqIFRoZSB2YWx1ZSB0aGF0IHVzZXJzIHNlbGVjdCBpcyBkcml2ZW4gdGhyb3VnaCB0aGUgYG5nTW9kZWxgIGF0dHJpYnV0ZSBzcGVjaWZpZWQgb25cbiAqIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1jb2xvcnBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvcnBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbG9ycGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreUNvbG9ycGlja2VyU2VydmljZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvbG9ycGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIFtGb250IEF3ZXNvbWUgNC43XShodHRwczovL2ZvbnRhd2Vzb21lLmNvbS92NC43L2ljb25zLykgaWNvbiB0byBvdmVybGF5IG9uIHRvcCBvZiB0aGUgcGlja2VyLiBEbyBub3Qgc3BlY2lmeSB0aGUgYGZhIGZhLWAgY2xhc3Nlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGlja2VyQnV0dG9uSWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBpY29uIHRvIGRpc3BsYXkuIFNwZWNpZnlpbmcgYGZhYCB3aWxsIGRpc3BsYXkgYSBGb250IEF3ZXNvbWUgaWNvbiwgd2hpbGUgc3BlY2lmeWluZyBgc2t5dXhgIHdpbGwgZGlzcGxheSBhbiBpY29uIGZyb20gdGhlIGN1c3RvbSBTS1kgVVggaWNvbiBmb250LiBOb3RlIHRoYXQgdGhlIGN1c3RvbSBTS1kgVVggaWNvbiBmb250IGlzIGN1cnJlbnRseSBpbiBiZXRhLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwaWNrZXJCdXR0b25JY29uVHlwZTogU2t5SWNvblR5cGUgPSAnZmEnO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIGNvbG9ycGlja2VyLiBUaGlzIHNldHMgdGhlIGNvbG9ycGlja2VyJ3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvY2hlY2tib3gjYWNjZXNzaWJpbGl0eSlcbiAgICogd2hlbiB0aGUgY29sb3JwaWNrZXIgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwuIElmIHRoZSBjb2xvcnBpY2tlciBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgbGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgXCJTZWxlY3QgY29sb3IgdmFsdWVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHMgdGhlXG4gICAqIGNvbG9ycGlja2VyLiBUaGlzIHNldHMgdGhlIGNvbG9ycGlja2VyJ3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9jaGVja2JveCNhY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGNvbG9ycGlja2VyIGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGxhYmVsYCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgYSBjb2xvciBpbiB0aGUgY29sb3JwaWNrZXIuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ29sb3JDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lDb2xvcnBpY2tlck91dHB1dD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgKipBcHBseSoqIGluIHRoZSBjb2xvcnBpY2tlciB0byBhcHBseSBhIGNvbG9yLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZENvbG9yQXBwbGllZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5Q29sb3JwaWNrZXJSZXN1bHQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBvYnNlcnZhYmxlIHRvIHNlbmQgY29tbWFuZHMgdG8gdGhlIGNvbG9ycGlja2VyLiBUaGUgY29tbWFuZHMgc2hvdWxkXG4gICAqIHJlc3BlY3QgdGhlIGBTa3lDb2xvclBpY2tlck1lc3NhZ2VgIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWVzc2FnZVN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreUNvbG9ycGlja2VyTWVzc2FnZT4oKTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IGEgcmVzZXQgYnV0dG9uIHRvIGxldCB1c2VycyByZXR1cm4gdG8gdGhlIGRlZmF1bHQgY29sb3IuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1Jlc2V0QnV0dG9uID0gdHJ1ZTtcblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGJhY2tncm91bmRDb2xvckZvckRpc3BsYXkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19iYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMucGlja2VyQnV0dG9uSWNvbikge1xuICAgICAgdGhpcy5pY29uQ29sb3IgPSB0aGlzLiNnZXRBY2Nlc3NpYmxlSWNvbkNvbG9yKHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBiYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5KCk6IHN0cmluZyB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy4jX2JhY2tncm91bmRDb2xvckZvckRpc3BsYXkgfHwgJyNmZmYnO1xuICB9XG5cbiAgcHVibGljIHNldCBodWUoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLiNoc3ZhICYmXG4gICAgICBjaGFuZ2UueENvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2hhbmdlLm1heFJhbmdlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRoaXMuI2hzdmEuaHVlID0gY2hhbmdlLnhDb29yZGluYXRlIC8gY2hhbmdlLm1heFJhbmdlO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCByZWQoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yKSB7XG4gICAgaWYgKHRoaXMuI2hzdmEpIHtcbiAgICAgIGNvbnN0IHJnYmEgPSB0aGlzLiNzdmMuaHN2YVRvUmdiYSh0aGlzLiNoc3ZhKTtcblxuICAgICAgLy8gVE9ETzogVGhpcyBjb2RlIGFzc3VtZWQgbm9uLW51bGwgcHJlLXN0cmljdCBtb2RlLiBSZWV2YWx1YXRlIGluIHRoZSBmdXR1cmU/XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgcmdiYS5yZWQgPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jaHN2YSA9IHRoaXMuI3N2Yy5yZ2JhVG9Ic3ZhKHJnYmEpO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBncmVlbihjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQ29sb3IpIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgY29uc3QgcmdiYSA9IHRoaXMuI3N2Yy5oc3ZhVG9SZ2JhKHRoaXMuI2hzdmEpO1xuXG4gICAgICAvLyBUT0RPOiBUaGlzIGNvZGUgYXNzdW1lZCBub24tbnVsbCBwcmUtc3RyaWN0IG1vZGUuIFJlZXZhbHVhdGUgaW4gdGhlIGZ1dHVyZT9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICByZ2JhLmdyZWVuID0gY2hhbmdlLmNvbG9yVmFsdWUhIC8gY2hhbmdlLm1heFJhbmdlITtcbiAgICAgIHRoaXMuI2hzdmEgPSB0aGlzLiNzdmMucmdiYVRvSHN2YShyZ2JhKTtcbiAgICAgIHRoaXMuI3VwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgYmx1ZShjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQ29sb3IpIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgY29uc3QgcmdiYSA9IHRoaXMuI3N2Yy5oc3ZhVG9SZ2JhKHRoaXMuI2hzdmEpO1xuXG4gICAgICAvLyBUT0RPOiBUaGlzIGNvZGUgYXNzdW1lZCBub24tbnVsbCBwcmUtc3RyaWN0IG1vZGUuIFJlZXZhbHVhdGUgaW4gdGhlIGZ1dHVyZT9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICByZ2JhLmJsdWUgPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jaHN2YSA9IHRoaXMuI3N2Yy5yZ2JhVG9Ic3ZhKHJnYmEpO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBhbHBoYUF4aXMoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLiNoc3ZhICYmXG4gICAgICBjaGFuZ2UueENvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2hhbmdlLm1heFJhbmdlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRoaXMuI2hzdmEuYWxwaGEgPSBjaGFuZ2UueENvb3JkaW5hdGUgLyBjaGFuZ2UubWF4UmFuZ2U7XG4gICAgICB0aGlzLiN1cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IGFscGhhQ29sb3IoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yKSB7XG4gICAgaWYgKHRoaXMuI2hzdmEpIHtcbiAgICAgIC8vIFRPRE86IFRoaXMgY29kZSBhc3N1bWVkIG5vbi1udWxsIHByZS1zdHJpY3QgbW9kZS4gUmVldmFsdWF0ZSBpbiB0aGUgZnV0dXJlP1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIHRoaXMuI2hzdmEuYWxwaGEgPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBoZXgoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yKSB7XG4gICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXMoY2hhbmdlLmNvbG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2F0dXJhdGlvbkFuZExpZ2h0bmVzcyh2YWx1ZTogU2t5Q29sb3JwaWNrZXJDaGFuZ2VBeGlzKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy4jaHN2YSAmJlxuICAgICAgdmFsdWUueENvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUueEF4aXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUueUNvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUueUF4aXMgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy4jaHN2YS5zYXR1cmF0aW9uID0gdmFsdWUueENvb3JkaW5hdGUgLyB2YWx1ZS54QXhpcztcbiAgICAgIHRoaXMuI2hzdmEudmFsdWUgPSB2YWx1ZS55Q29vcmRpbmF0ZSAvIHZhbHVlLnlBeGlzO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNreUNvbG9ycGlja2VyQWxwaGFJZDogc3RyaW5nO1xuICBwdWJsaWMgcmV0dXJuRm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBpbml0aWFsQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGxhc3RBcHBsaWVkQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGlzVmlzaWJsZSA9IHRydWU7XG5cbiAgQFZpZXdDaGlsZCgnY29sb3JwaWNrZXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcHJvdGVjdGVkIGNvbG9ycGlja2VyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25SZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHJvdGVjdGVkIHRyaWdnZXJCdXR0b25SZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnY29sb3JwaWNrZXJSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHJvdGVjdGVkIHNldCBjb2xvcnBpY2tlclJlZih2YWx1ZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX2NvbG9ycGlja2VyUmVmID0gdmFsdWU7XG4gICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuXG4gICAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgICAvLyBFbnN1cmUgdGhlIGNvbG9ycGlja2VyIGhhcyBmdWxseSByZW5kZXJlZCBiZWZvcmUgYWRkaW5nIHRoZSBhZmZpeGVyLiBBZGRlZCB0byBhZGRyZXNzIGFcbiAgICAgIC8vIHJhY2UgY29uZGl0aW9uIHdoZW4gcnVubmluZyB1bmRlciBwcm9kdWN0aW9uIGNvbmRpdGlvbnMuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy4jY3JlYXRlQWZmaXhlcigpO1xuICAgICAgICB0aGlzLmlzUGlja2VyVmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy4jY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICcuc2t5LWNvbG9ycGlja2VyJyxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgY29sb3JwaWNrZXJSZWYoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19jb2xvcnBpY2tlclJlZjtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb2xvcnBpY2tlcklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBpc09wZW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2t5Q29sb3JwaWNrZXJIZXhJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2t5Q29sb3JwaWNrZXJSZWRJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2t5Q29sb3JwaWNrZXJHcmVlbklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBza3lDb2xvcnBpY2tlckJsdWVJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2xpZGVyOiBTbGlkZXJQb3NpdGlvbjtcbiAgcHJvdGVjdGVkIGFsbG93VHJhbnNwYXJlbmN5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgYWxwaGFTbGlkZXJDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgaGV4VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgaHVlU2xpZGVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHByZXNldENvbG9yczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCByZ2JhVGV4dDogU2t5Q29sb3JwaWNrZXJSZ2JhIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDb2xvcjogU2t5Q29sb3JwaWNrZXJPdXRwdXQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBpY29uQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGlzUGlja2VyVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAjaWRJbmRleDogbnVtYmVyO1xuICAjYWxwaGFDaGFubmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNmb3JtYXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI291dHB1dEZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjaHN2YTogU2t5Q29sb3JwaWNrZXJIc3ZhIHwgdW5kZWZpbmVkO1xuICAjc2xpZGVyRGltTWF4OiBTbGlkZXJEaW1lbnNpb247XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI2FmZml4ZXI6IFNreUFmZml4ZXIgfCB1bmRlZmluZWQ7XG4gICNvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UgfCB1bmRlZmluZWQ7XG4gICNwaWNrZXJVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiB8IHVuZGVmaW5lZDtcblxuICAjYWZmaXhTdmM6IFNreUFmZml4U2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2NvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gIHJlYWRvbmx5ICNlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAjb3ZlcmxheVN2YzogU2t5T3ZlcmxheVNlcnZpY2U7XG4gICNzdmM6IFNreUNvbG9ycGlja2VyU2VydmljZTtcbiAgI3RoZW1lU3ZjOiBTa3lUaGVtZVNlcnZpY2UgfCB1bmRlZmluZWQ7XG5cbiAgI19iYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfY29sb3JwaWNrZXJSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZmZpeFN2YzogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIG92ZXJsYXlTdmM6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIHN2YzogU2t5Q29sb3JwaWNrZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2FmZml4U3ZjID0gYWZmaXhTdmM7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNjb3JlQWRhcHRlciA9IGNvcmVBZGFwdGVyO1xuICAgIHRoaXMuI292ZXJsYXlTdmMgPSBvdmVybGF5U3ZjO1xuICAgIHRoaXMuI3N2YyA9IHN2YztcbiAgICB0aGlzLiN0aGVtZVN2YyA9IHRoZW1lU3ZjO1xuXG4gICAgY29tcG9uZW50SWRJbmRleCsrO1xuXG4gICAgdGhpcy4jaWRJbmRleCA9IGNvbXBvbmVudElkSW5kZXg7XG4gICAgdGhpcy5za3lDb2xvcnBpY2tlclJlZElkID0gYHNreS1jb2xvcnBpY2tlci1yZWQtJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy5za3lDb2xvcnBpY2tlckhleElkID0gYHNreS1jb2xvcnBpY2tlci1oZXgtLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMuc2t5Q29sb3JwaWNrZXJSZWRJZCA9IGBza3ktY29sb3JwaWNrZXItcmVkLS0ke3RoaXMuI2lkSW5kZXh9YDtcbiAgICB0aGlzLnNreUNvbG9ycGlja2VyR3JlZW5JZCA9IGBza3ktY29sb3JwaWNrZXItZ3JlZW4tLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMuc2t5Q29sb3JwaWNrZXJCbHVlSWQgPSBgc2t5LWNvbG9ycGlja2VyLWJsdWUtLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMuc2t5Q29sb3JwaWNrZXJBbHBoYUlkID0gYHNreS1jb2xvcnBpY2tlci1hbHBoYS0tJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy5jb2xvcnBpY2tlcklkID0gYHNreS1jb2xvcnBpY2tlci0tJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBgc2t5LWNvbG9ycGlja2VyLWJ1dHRvbi0tJHt0aGlzLiNpZEluZGV4fWA7XG5cbiAgICB0aGlzLiNzbGlkZXJEaW1NYXggPSBuZXcgU2xpZGVyRGltZW5zaW9uKDE4MiwgMjcwLCAxNzAsIDE4Mik7XG4gICAgdGhpcy5zbGlkZXIgPSBuZXcgU2xpZGVyUG9zaXRpb24oMCwgMCwgMCwgMCk7XG4gIH1cblxuICBwdWJsaWMgc2V0RGlhbG9nKFxuICAgIGNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgb3V0cHV0Rm9ybWF0OiBzdHJpbmcsXG4gICAgcHJlc2V0Q29sb3JzOiBBcnJheTxzdHJpbmc+LFxuICAgIGFscGhhQ2hhbm5lbDogc3RyaW5nLFxuICAgIGFsbG93VHJhbnNwYXJlbmN5OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbENvbG9yID0gY29sb3I7XG4gICAgdGhpcy4jb3V0cHV0Rm9ybWF0ID0gb3V0cHV0Rm9ybWF0O1xuICAgIHRoaXMucHJlc2V0Q29sb3JzID0gcHJlc2V0Q29sb3JzO1xuICAgIHRoaXMuI2FscGhhQ2hhbm5lbCA9IGFscGhhQ2hhbm5lbDtcbiAgICB0aGlzLmFsbG93VHJhbnNwYXJlbmN5ID0gYWxsb3dUcmFuc3BhcmVuY3k7XG5cbiAgICBpZiAodGhpcy4jb3V0cHV0Rm9ybWF0ID09PSAncmdiYScpIHtcbiAgICAgIHRoaXMuI2Zvcm1hdCA9IDE7XG4gICAgfSBlbHNlIGlmICh0aGlzLiNvdXRwdXRGb3JtYXQgPT09ICdoc2xhJykge1xuICAgICAgdGhpcy4jZm9ybWF0ID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jZm9ybWF0ID0gMDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBTa3lDb2xvcnBpY2tlck1lc3NhZ2UpID0+IHtcbiAgICAgICAgdGhpcy4jaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jYWRkVHJpZ2dlckJ1dHRvbkV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiN0aGVtZVN2Yykge1xuICAgICAgdGhpcy4jdGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh0aGVtZVNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICBjb25zdCB0aGVtZU5hbWUgPSB0aGVtZVNldHRpbmdzLmN1cnJlbnRTZXR0aW5ncz8udGhlbWU/Lm5hbWU7XG5cbiAgICAgICAgICAvLyBIdWUvYWxwaGEgc2xpZGVyIGJhcnMgaGF2ZSBkaWZmZXJlbnQgd2lkdGhzIGluIE1vZGVybiB0aGVtZS5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAodGhlbWVOYW1lID09PSAnbW9kZXJuJykge1xuICAgICAgICAgICAgdGhpcy4jc2xpZGVyRGltTWF4ID0gbmV3IFNsaWRlckRpbWVuc2lvbigxNzQsIDI3MCwgMTcwLCAxNzQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNzbGlkZXJEaW1NYXggPSBuZXcgU2xpZGVyRGltZW5zaW9uKDE4MiwgMjcwLCAxNzAsIDE4Mik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuI3VwZGF0ZVNsaWRlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI3NlbmRNZXNzYWdlKFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuT3Blbik7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VQaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFwcGx5Q29sb3JDbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbG9yKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29sb3JDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZENvbG9yKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvckFwcGxpZWQuZW1pdCh7IGNvbG9yOiB0aGlzLnNlbGVjdGVkQ29sb3IgfSk7XG4gICAgICB0aGlzLmxhc3RBcHBsaWVkQ29sb3IgPSB0aGlzLnNlbGVjdGVkQ29sb3IucmdiYVRleHQ7XG4gICAgICB0aGlzLnVwZGF0ZVBpY2tlclZhbHVlcyh0aGlzLmxhc3RBcHBsaWVkQ29sb3IpO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5ID0gdGhpcy5zZWxlY3RlZENvbG9yLnJnYmFUZXh0O1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhbmNlbENsaWNrKCk6IHZvaWQge1xuICAgIC8vIFJldmVydCBwaWNrZXIgdmFsdWVzIGJhY2sgdG8gcHJldmlvdXMgY29sb3IuXG4gICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXModGhpcy5iYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5KTtcbiAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gIH1cblxuICBwdWJsaWMgb25QcmVzZXRDbGljayh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXModmFsdWUpO1xuICB9XG5cbiAgcHVibGljIG9uUmVzZXRDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLiNzZW5kTWVzc2FnZShTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlLlJlc2V0KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVQaWNrZXJWYWx1ZXModmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGhzdmEgPSB0aGlzLiNnZXRIc3ZhVmFsdWUodmFsdWUpO1xuICAgIGlmIChoc3ZhKSB7XG4gICAgICB0aGlzLiNoc3ZhID0gaHN2YTtcbiAgICAgIHRoaXMuI3VwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2hzdmEpIHtcbiAgICAgIGNvbnN0IHJnYmE6IFNreUNvbG9ycGlja2VyUmdiYSA9IHRoaXMuI3N2Yy5oc3ZhVG9SZ2JhKHRoaXMuI2hzdmEpO1xuICAgICAgY29uc3QgZFJnYmE6IFNreUNvbG9ycGlja2VyUmdiYSA9IHRoaXMuI3N2Yy5kZW5vcm1hbGl6ZVJHQkEocmdiYSk7XG5cbiAgICAgIGNvbnN0IGhzdmE6IFNreUNvbG9ycGlja2VySHN2YSA9IHtcbiAgICAgICAgaHVlOiB0aGlzLiNoc3ZhLmh1ZSxcbiAgICAgICAgc2F0dXJhdGlvbjogMSxcbiAgICAgICAgdmFsdWU6IDEsXG4gICAgICAgIGFscGhhOiAxLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaHVlUmdiYSA9IHRoaXMuI3N2Yy5kZW5vcm1hbGl6ZVJHQkEodGhpcy4jc3ZjLmhzdmFUb1JnYmEoaHN2YSkpO1xuXG4gICAgICB0aGlzLnJnYmFUZXh0ID0gZFJnYmE7XG4gICAgICB0aGlzLmhleFRleHQgPSB0aGlzLiNzdmMuaGV4VGV4dChkUmdiYSwgdGhpcy4jYWxwaGFDaGFubmVsID09PSAnaGV4OCcpO1xuXG4gICAgICB0aGlzLmFscGhhU2xpZGVyQ29sb3IgPSBgcmdiYSgke2RSZ2JhLnJlZH0sJHtkUmdiYS5ncmVlbn0sJHtkUmdiYS5ibHVlfSwke2RSZ2JhLmFscGhhfSlgO1xuICAgICAgdGhpcy5odWVTbGlkZXJDb2xvciA9IGByZ2JhKCR7aHVlUmdiYS5yZWR9LCR7aHVlUmdiYS5ncmVlbn0sJHtodWVSZ2JhLmJsdWV9LCR7cmdiYS5hbHBoYX0pYDtcblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLiNmb3JtYXQgPT09IDAgJiZcbiAgICAgICAgdGhpcy4jaHN2YS5hbHBoYSA8IDEgJiZcbiAgICAgICAgdGhpcy4jYWxwaGFDaGFubmVsID09PSAnaGV4NidcbiAgICAgICkge1xuICAgICAgICB0aGlzLiNmb3JtYXQrKztcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gdGhpcy4jc3ZjLnNreUNvbG9ycGlja2VyT3V0KHRoaXMuI2hzdmEpO1xuXG4gICAgICB0aGlzLiN1cGRhdGVTbGlkZXIoKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlU2xpZGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNoc3ZhICYmIHRoaXMuI3NsaWRlckRpbU1heCkge1xuICAgICAgdGhpcy5zbGlkZXIgPSBuZXcgU2xpZGVyUG9zaXRpb24oXG4gICAgICAgIHRoaXMuI2hzdmEuaHVlICogdGhpcy4jc2xpZGVyRGltTWF4Lmh1ZSAtIDgsXG4gICAgICAgIHRoaXMuI2hzdmEuc2F0dXJhdGlvbiAqIHRoaXMuI3NsaWRlckRpbU1heC5zYXR1cmF0aW9uIC0gOCxcbiAgICAgICAgKDEgLSB0aGlzLiNoc3ZhLnZhbHVlKSAqIHRoaXMuI3NsaWRlckRpbU1heC52YWx1ZSAtIDgsXG4gICAgICAgIHRoaXMuI2hzdmEuYWxwaGEgKiB0aGlzLiNzbGlkZXJEaW1NYXguYWxwaGEgLSA4XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICNvcGVuUGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNQaWNrZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMuI2NyZWF0ZU92ZXJsYXkoKTtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gIH1cblxuICAjc2VuZE1lc3NhZ2UodHlwZTogU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZSkge1xuICAgIHRoaXMubWVzc2FnZVN0cmVhbS5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gICNoYW5kbGVJbmNvbWluZ01lc3NhZ2VzKG1lc3NhZ2U6IFNreUNvbG9ycGlja2VyTWVzc2FnZSkge1xuICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICBjYXNlIFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuT3BlbjpcbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlLkNsb3NlOlxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5SZXNldDpcbiAgICAgICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXModGhpcy5pbml0aWFsQ29sb3IpO1xuICAgICAgICB0aGlzLmJhY2tncm91bmRDb2xvckZvckRpc3BsYXkgPSB0aGlzLmluaXRpYWxDb2xvcjtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgICAgIC8vIFRPRE86IFRoaXMgY29kZSBhc3N1bWVkIG5vbi1udWxsIHByZS1zdHJpY3QgbW9kZS4gUmVldmFsdWF0ZSBpbiB0aGUgZnV0dXJlP1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3JBcHBsaWVkLmVtaXQoeyBjb2xvcjogdGhpcy5zZWxlY3RlZENvbG9yISB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5Ub2dnbGVSZXNldEJ1dHRvbjpcbiAgICAgICAgdGhpcy5zaG93UmVzZXRCdXR0b24gPSAhdGhpcy5zaG93UmVzZXRCdXR0b247XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVBZmZpeGVyKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29sb3JwaWNrZXJSZWYgJiZcbiAgICAgIHRoaXMudHJpZ2dlckJ1dHRvblJlZiAmJlxuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmVcbiAgICApIHtcbiAgICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLiNhZmZpeFN2Yy5jcmVhdGVBZmZpeGVyKHRoaXMuY29sb3JwaWNrZXJSZWYpO1xuXG4gICAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jcGlja2VyVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmlzUGlja2VyVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICAgIHBsYWNlbWVudDogJ2JlbG93JyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLiNhZmZpeGVyID0gYWZmaXhlcjtcbiAgICB9XG4gIH1cblxuICAjZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI2FmZml4ZXIpIHtcbiAgICAgIHRoaXMuI2FmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy4jYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAjY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb2xvcnBpY2tlclRlbXBsYXRlUmVmKSB7XG4gICAgICBjb25zdCBvdmVybGF5ID0gdGhpcy4jb3ZlcmxheVN2Yy5jcmVhdGUoe1xuICAgICAgICBlbmFibGVDbG9zZTogZmFsc2UsXG4gICAgICAgIGVuYWJsZVBvaW50ZXJFdmVudHM6IGZhbHNlLFxuICAgICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuI2Vudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICB9KTtcblxuICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLmNvbG9ycGlja2VyVGVtcGxhdGVSZWYpO1xuXG4gICAgICB0aGlzLiNvdmVybGF5ID0gb3ZlcmxheTtcbiAgICB9XG4gIH1cblxuICAjZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI292ZXJsYXkpIHtcbiAgICAgIHRoaXMuI292ZXJsYXlTdmMuY2xvc2UodGhpcy4jb3ZlcmxheSk7XG4gICAgICB0aGlzLiNvdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNhZGRUcmlnZ2VyQnV0dG9uRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KHdpbmRvdy5kb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5Ym9hcmRFdmVudCA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleWJvYXJkRXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoa2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgICAgIHRoaXMuI3NlbmRNZXNzYWdlKFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gICNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNwaWNrZXJVbnN1YnNjcmliZSkge1xuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICAgIHRoaXMuI3BpY2tlclVuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNnZXRIc3ZhVmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFNreUNvbG9ycGlja2VySHN2YSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGhzdmE6IFNreUNvbG9ycGlja2VySHN2YSB8IHVuZGVmaW5lZDtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuI2FscGhhQ2hhbm5lbCA9PT0gJ2hleDgnKSB7XG4gICAgICAgIGhzdmEgPSB0aGlzLiNzdmMuc3RyaW5nVG9Ic3ZhKHZhbHVlLCB0cnVlKTtcbiAgICAgICAgaWYgKCFoc3ZhICYmICF0aGlzLiNoc3ZhKSB7XG4gICAgICAgICAgaHN2YSA9IHRoaXMuI3N2Yy5zdHJpbmdUb0hzdmEodmFsdWUsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaHN2YSA9IHRoaXMuI3N2Yy5zdHJpbmdUb0hzdmEodmFsdWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHN2YTtcbiAgfVxuXG4gICNnZXRBY2Nlc3NpYmxlSWNvbkNvbG9yKFxuICAgIGJhY2tncm91bmRDb2xvcjogU2t5Q29sb3JwaWNrZXJPdXRwdXQgfCB1bmRlZmluZWRcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAvLyBodHRwczovL3d3dy53My5vcmcvV0FJL0dML3dpa2kvUmVsYXRpdmVfbHVtaW5hbmNlXG4gICAgICBjb25zdCBSc1JHQiA9IGJhY2tncm91bmRDb2xvci5yZ2JhLnJlZCAvIDI1NTtcbiAgICAgIGNvbnN0IEdzUkdCID0gYmFja2dyb3VuZENvbG9yLnJnYmEuZ3JlZW4gLyAyNTU7XG4gICAgICBjb25zdCBCc1JHQiA9IGJhY2tncm91bmRDb2xvci5yZ2JhLmJsdWUgLyAyNTU7XG5cbiAgICAgIGNvbnN0IFIgPVxuICAgICAgICBSc1JHQiA8PSAwLjAzOTI4XG4gICAgICAgICAgPyBSc1JHQiAvIDEyLjkyXG4gICAgICAgICAgOiBNYXRoLnBvdygoUnNSR0IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgICAgIGNvbnN0IEcgPVxuICAgICAgICBHc1JHQiA8PSAwLjAzOTI4XG4gICAgICAgICAgPyBHc1JHQiAvIDEyLjkyXG4gICAgICAgICAgOiBNYXRoLnBvdygoR3NSR0IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgICAgIGNvbnN0IEIgPVxuICAgICAgICBCc1JHQiA8PSAwLjAzOTI4XG4gICAgICAgICAgPyBCc1JHQiAvIDEyLjkyXG4gICAgICAgICAgOiBNYXRoLnBvdygoQnNSR0IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcblxuICAgICAgY29uc3QgcmVsYXRpdmVMdW1pbmFuY2UgPVxuICAgICAgICAoMC4yMTI2ICogUiArIDAuNzE1MiAqIEcgKyAwLjA3MjIgKiBCKSAqXG4gICAgICAgICgxIC8gYmFja2dyb3VuZENvbG9yLnJnYmEuYWxwaGEpO1xuXG4gICAgICAvLyBodHRwczovL3d3dy53My5vcmcvV0FJL0dML3dpa2kvQ29udHJhc3RfcmF0aW9cbiAgICAgIHJldHVybiAxLjA1IC8gKHJlbGF0aXZlTHVtaW5hbmNlICsgMC4wNSkgPiAzXG4gICAgICAgID8gJ3JnYigyNTUsIDI1NSwgMjU1KSdcbiAgICAgICAgOiAncmdiKDAsIDAsIDApJztcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LWlucHV0LWdyb3VwXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktY29sb3JwaWNrZXItaGlkZGVuJzogIWlzVmlzaWJsZSxcbiAgICAnc2t5LWNvbG9ycGlja2VyLWRpc2FibGVkJzogZGlzYWJsZWRcbiAgfVwiXG4+XG4gIDxkaXYgW2hpZGRlbl09XCJ0cnVlXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICA8YnV0dG9uXG4gICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgY2xhc3M9XCJza3ktY29sb3JwaWNrZXItYnV0dG9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlzT3BlbiA/IGNvbG9ycGlja2VySWQgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgIGxhYmVsIHx8XG4gICAgICAobGFiZWxsZWRCeVxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiAoJ3NreXV4X2NvbG9ycGlja2VyX2Ryb3Bkb3duX2J1dHRvbicgfCBza3lMaWJSZXNvdXJjZXMpKVxuICAgIFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsbGVkQnlcIlxuICAgIFthdHRyLmlkXT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgW2F0dHIudGl0bGVdPVwiXG4gICAgICBsYWJlbCB8fFxuICAgICAgKGxhYmVsbGVkQnlcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogKCdza3l1eF9jb2xvcnBpY2tlcl9kcm9wZG93bl9idXR0b24nIHwgc2t5TGliUmVzb3VyY2VzKSlcbiAgICBcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1jb2xvcnBpY2tlci1idXR0b24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICdza3ktbWFyZ2luLWlubGluZS1zbSc6ICdtb2Rlcm4nXG4gICAgfVwiXG4gICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmFja2dyb3VuZENvbG9yRm9yRGlzcGxheVwiXG4gICAgKGNsaWNrKT1cIm9uVHJpZ2dlckJ1dHRvbkNsaWNrKClcIlxuICAgICN0cmlnZ2VyQnV0dG9uUmVmXG4gID5cbiAgICA8c2t5LWljb25cbiAgICAgICpuZ0lmPVwicGlja2VyQnV0dG9uSWNvblwiXG4gICAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1idXR0b24taWNvblwiXG4gICAgICBbaWNvbl09XCJwaWNrZXJCdXR0b25JY29uXCJcbiAgICAgIFtpY29uVHlwZV09XCJwaWNrZXJCdXR0b25JY29uVHlwZVwiXG4gICAgICBbc2l6ZV09XCInMXgnXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJpY29uQ29sb3JcIlxuICAgID5cbiAgICA8L3NreS1pY29uPlxuICAgIDxuZy1jb250YWluZXIgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiPlxuICAgICAgPHNreS1pY29uXG4gICAgICAgIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWJ1dHRvbi1tb2Rlcm4tY2hldnJvblwiXG4gICAgICAgIGljb249XCJjaGV2cm9uLWRvd25cIlxuICAgICAgICBzaXplPVwieHNcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1jb2xvcnBpY2tlci1idXR0b24tbW9kZXJuLWNoZXZyb24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvc2t5LWljb24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuXG4gIDxuZy10ZW1wbGF0ZSAjY29sb3JwaWNrZXJUZW1wbGF0ZVJlZj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1jb250YWluZXJcIlxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICAgIFthdHRyLmlkXT1cImNvbG9ycGlja2VySWRcIlxuICAgICAgW2hpZGRlbl09XCIhaXNQaWNrZXJWaXNpYmxlXCJcbiAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgJ3NreS1zaGFkb3cnOiAnZGVmYXVsdCcsXG4gICAgICAgICdza3ktZWxldmF0aW9uLTQnOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgICAjY29sb3JwaWNrZXJSZWZcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWNvbG9ycGlja2VyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNhdHVyYXRpb24tbGlnaHRuZXNzXCJcbiAgICAgICAgICBbY29sb3JdPVwic2xpZGVyLnNhdHVyYXRpb24gLSBzbGlkZXIudmFsdWUgKyAnJ1wiXG4gICAgICAgICAgW3NreUNvbG9ycGlja2VyU2xpZGVyXVxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImh1ZVNsaWRlckNvbG9yXCJcbiAgICAgICAgICBbeEF4aXNdPVwiMVwiXG4gICAgICAgICAgW3lBeGlzXT1cIjFcIlxuICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cInNhdHVyYXRpb25BbmRMaWdodG5lc3MgPSAkZXZlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3Igc2t5LXJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5zYXR1cmF0aW9uXCJcbiAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwic2xpZGVyLnZhbHVlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQgc2t5LXJvdW5kZWQtY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQtY29sb3Igc2t5LXJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRDb2xvcj8ucmdiYVRleHRcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImh1ZVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclNsaWRlcl1cbiAgICAgICAgICAgICAgW3hBeGlzXT1cIjFcIlxuICAgICAgICAgICAgICAobmV3Q29sb3JDb250cmFzdCk9XCJodWUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAjaHVlU2xpZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvciBza3ktcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5odWVcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmFsbG93VHJhbnNwYXJlbmN5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhbHBoYVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclNsaWRlcl1cbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYWxwaGFTbGlkZXJDb2xvclwiXG4gICAgICAgICAgICAgIFt4QXhpc109XCIxXCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiYWxwaGFBeGlzID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgI2FscGhhU2xpZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvciBza3ktcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5hbHBoYVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicmdiYS10ZXh0XCI+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfaGV4JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckhleElkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2hleCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgcGF0dGVybj1cIl4jPyhbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkkXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwic2t5Q29sb3JwaWNrZXJIZXhJZFwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclRleHRdXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJoZXhUZXh0XCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiaGV4ID0gJGV2ZW50XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9za3ktaW5wdXQtYm94PlxuICAgICAgICAgIDxza3ktaW5wdXQtYm94PlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9hcmlhX3JlZCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwic2t5Q29sb3JwaWNrZXJSZWRJZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdza3l1eF9jb2xvcnBpY2tlcl9yZWQnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyUmVkSWRcIlxuICAgICAgICAgICAgICBbbWF4UmFuZ2VdPVwiMjU1XCJcbiAgICAgICAgICAgICAgW3NreUNvbG9ycGlja2VyVGV4dF1cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJnYmFUZXh0Py5yZWRcIlxuICAgICAgICAgICAgICAobmV3Q29sb3JDb250cmFzdCk9XCJyZWQgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfZ3JlZW4nIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckdyZWVuSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfY29sb3JwaWNrZXJfZ3JlZW4nIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyR3JlZW5JZFwiXG4gICAgICAgICAgICAgIFttYXhSYW5nZV09XCIyNTVcIlxuICAgICAgICAgICAgICBbc2t5Q29sb3JwaWNrZXJUZXh0XVxuICAgICAgICAgICAgICBbdmFsdWVdPVwicmdiYVRleHQ/LmdyZWVuXCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiZ3JlZW4gPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfYmx1ZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cInNreUNvbG9ycGlja2VyQmx1ZUlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2JsdWUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyQmx1ZUlkXCJcbiAgICAgICAgICAgICAgW21heFJhbmdlXT1cIjI1NVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclRleHRdXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJyZ2JhVGV4dD8uYmx1ZVwiXG4gICAgICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cImJsdWUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3ggKm5nSWY9XCJ0aGlzLmFsbG93VHJhbnNwYXJlbmN5XCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfYWxwaGEnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckFscGhhSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfY29sb3JwaWNrZXJfYWxwaGEnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjFcIlxuICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgcGF0dGVybj1cIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT9cIlxuICAgICAgICAgICAgICBzdGVwPVwiMC4xXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyQWxwaGFJZFwiXG4gICAgICAgICAgICAgIFttYXhSYW5nZV09XCIxXCJcbiAgICAgICAgICAgICAgW3NreUNvbG9ycGlja2VyVGV4dF1cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJnYmFUZXh0Py5hbHBoYVwiXG4gICAgICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cImFscGhhQ29sb3IgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJwcmVzZXRDb2xvcnMgJiYgcHJlc2V0Q29sb3JzLmxlbmd0aFwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktY29sb3JwaWNrZXItcHJlc2V0LWNvbG9yLWFyZWFcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbG9yIG9mIHByZXNldENvbG9ycyB8IHNsaWNlIDogMCA6IDEyOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgKCdza3l1eF9jb2xvcnBpY2tlcl9wcmVzZXRfY29sb3InIHwgc2t5TGliUmVzb3VyY2VzKSArICcgJyArIGNvbG9yXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2t5LXByZXNldC1jb2xvcic6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgJ3NreS1idG4gc2t5LWJ0bi1saW5rJzogJ21vZGVybidcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmVzZXRDbGljayhjb2xvcilcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1mb290ZXJcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1wYWRkaW5nLWV2ZW4tbGFyZ2UnOiAnZGVmYXVsdCdcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWNvbHVtblwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnkgc2t5LWJ0bi1jb2xvcnBpY2tlci1hcHBseVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X2NvbG9ycGlja2VyX2FwcGx5JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7ICdza3ktbWFyZ2luLWlubGluZS1zbSc6ICdtb2Rlcm4nIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlDb2xvckNsaWNrKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdza3l1eF9jb2xvcnBpY2tlcl9hcHBseScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1idG4tY29sb3JwaWNrZXItY2xvc2VcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsQ2xpY2soKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2Nsb3NlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPHNwYW5cbiAgICAqbmdJZj1cImFsbG93VHJhbnNwYXJlbmN5XCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWNoZWNrZXJlZC1iYWNrZ3JvdW5kXCJcbiAgPlxuICA8L3NwYW4+XG5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwic2hvd1Jlc2V0QnV0dG9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9yZXNldCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1jb2xvcnBpY2tlci1yZXNldC1idXR0b24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICdza3ktY29sb3JwaWNrZXItcmVzZXQtYnV0dG9uJzogJ2RlZmF1bHQnLFxuICAgICAgJ3NreS1idG4gc2t5LWJ0bi1pY29uLWJvcmRlcmxlc3Mgc2t5LWNvbG9ycGlja2VyLXJlc2V0LWJ1dHRvbi1tb2Rlcm4nOlxuICAgICAgICAnbW9kZXJuJ1xuICAgIH1cIlxuICAgIChjbGljayk9XCJvblJlc2V0Q2xpY2soKVwiXG4gID5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwidGltZXNcIiBzaXplPVwic21cIj4gPC9za3ktaWNvbj5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJ0cmFzaFwiIHNpemU9XCJsZ1wiPiA8L3NreS1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
494
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbG9ycGlja2VyL3NyYy9saWIvbW9kdWxlcy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29sb3JwaWNrZXIvc3JjL2xpYi9tb2R1bGVzL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsR0FNdkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7O0FBSzdFLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBRXpCOzs7O0dBSUc7QUFRSCxNQUFNLE9BQU8sdUJBQXVCO0lBMkRsQyxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxl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TUFBTTtnQkFRQSxhQUFhO3NCQURuQixLQUFLO2dCQU9DLGVBQWU7c0JBRHJCLEtBQUs7Z0JBc0hJLHNCQUFzQjtzQkFIL0IsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRTt3QkFDbkMsSUFBSSxFQUFFLFdBQVc7cUJBQ2xCO2dCQU1TLGdCQUFnQjtzQkFIekIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQU1hLGNBQWM7c0JBSDNCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUU7d0JBQzNCLElBQUksRUFBRSxVQUFVO3FCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5QWZmaXhlcixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJY29uVHlwZSB9IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTbGlkZXJEaW1lbnNpb24sIFNsaWRlclBvc2l0aW9uIH0gZnJvbSAnLi9jb2xvcnBpY2tlci1jbGFzc2VzJztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyU2VydmljZSB9IGZyb20gJy4vY29sb3JwaWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMgfSBmcm9tICcuL3R5cGVzL2NvbG9ycGlja2VyLWF4aXMnO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJDaGFuZ2VDb2xvciB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItY29sb3InO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJIc3ZhIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1oc3ZhJztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1tZXNzYWdlLXR5cGUnO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJPdXRwdXQgfSBmcm9tICcuL3R5cGVzL2NvbG9ycGlja2VyLW91dHB1dCc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlclJlc3VsdCB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItcmVzdWx0JztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyUmdiYSB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItcmdiYSc7XG5cbmxldCBjb21wb25lbnRJZEluZGV4ID0gMDtcblxuLyoqXG4gKiBUaGUgU0tZIFVYLXRoZW1lZCByZXBsYWNlbWVudCBmb3IgdGhlIEhUTUwgYGlucHV0YCBlbGVtZW50IHdpdGggYHR5cGU9XCJjb2xvclwiYC5cbiAqIFRoZSB2YWx1ZSB0aGF0IHVzZXJzIHNlbGVjdCBpcyBkcml2ZW4gdGhyb3VnaCB0aGUgYG5nTW9kZWxgIGF0dHJpYnV0ZSBzcGVjaWZpZWQgb25cbiAqIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1jb2xvcnBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvcnBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbG9ycGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreUNvbG9ycGlja2VyU2VydmljZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvbG9ycGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIFtGb250IEF3ZXNvbWUgNC43XShodHRwczovL2ZvbnRhd2Vzb21lLmNvbS92NC43L2ljb25zLykgaWNvbiB0byBvdmVybGF5IG9uIHRvcCBvZiB0aGUgcGlja2VyLiBEbyBub3Qgc3BlY2lmeSB0aGUgYGZhIGZhLWAgY2xhc3Nlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGlja2VyQnV0dG9uSWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBpY29uIHRvIGRpc3BsYXkuIFNwZWNpZnlpbmcgYGZhYCB3aWxsIGRpc3BsYXkgYSBGb250IEF3ZXNvbWUgaWNvbiwgd2hpbGUgc3BlY2lmeWluZyBgc2t5dXhgIHdpbGwgZGlzcGxheSBhbiBpY29uIGZyb20gdGhlIGN1c3RvbSBTS1kgVVggaWNvbiBmb250LiBOb3RlIHRoYXQgdGhlIGN1c3RvbSBTS1kgVVggaWNvbiBmb250IGlzIGN1cnJlbnRseSBpbiBiZXRhLlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwaWNrZXJCdXR0b25JY29uVHlwZTogU2t5SWNvblR5cGUgPSAnZmEnO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIGNvbG9ycGlja2VyLiBUaGlzIHNldHMgdGhlIGNvbG9ycGlja2VyJ3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvY2hlY2tib3gjYWNjZXNzaWJpbGl0eSlcbiAgICogd2hlbiB0aGUgY29sb3JwaWNrZXIgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwuIElmIHRoZSBjb2xvcnBpY2tlciBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgbGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgXCJTZWxlY3QgY29sb3IgdmFsdWVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHMgdGhlXG4gICAqIGNvbG9ycGlja2VyLiBUaGlzIHNldHMgdGhlIGNvbG9ycGlja2VyJ3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9jaGVja2JveCNhY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGNvbG9ycGlja2VyIGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGxhYmVsYCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgYSBjb2xvciBpbiB0aGUgY29sb3JwaWNrZXIuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ29sb3JDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lDb2xvcnBpY2tlck91dHB1dD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgKipBcHBseSoqIGluIHRoZSBjb2xvcnBpY2tlciB0byBhcHBseSBhIGNvbG9yLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZENvbG9yQXBwbGllZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5Q29sb3JwaWNrZXJSZXN1bHQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBvYnNlcnZhYmxlIHRvIHNlbmQgY29tbWFuZHMgdG8gdGhlIGNvbG9ycGlja2VyLiBUaGUgY29tbWFuZHMgc2hvdWxkXG4gICAqIHJlc3BlY3QgdGhlIGBTa3lDb2xvclBpY2tlck1lc3NhZ2VgIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWVzc2FnZVN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreUNvbG9ycGlja2VyTWVzc2FnZT4oKTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IGEgcmVzZXQgYnV0dG9uIHRvIGxldCB1c2VycyByZXR1cm4gdG8gdGhlIGRlZmF1bHQgY29sb3IuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1Jlc2V0QnV0dG9uID0gdHJ1ZTtcblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGJhY2tncm91bmRDb2xvckZvckRpc3BsYXkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19iYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMucGlja2VyQnV0dG9uSWNvbikge1xuICAgICAgdGhpcy5pY29uQ29sb3IgPSB0aGlzLiNnZXRBY2Nlc3NpYmxlSWNvbkNvbG9yKHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBiYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5KCk6IHN0cmluZyB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy4jX2JhY2tncm91bmRDb2xvckZvckRpc3BsYXkgfHwgJyNmZmYnO1xuICB9XG5cbiAgcHVibGljIHNldCBodWUoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLiNoc3ZhICYmXG4gICAgICBjaGFuZ2UueENvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2hhbmdlLm1heFJhbmdlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRoaXMuI2hzdmEuaHVlID0gY2hhbmdlLnhDb29yZGluYXRlIC8gY2hhbmdlLm1heFJhbmdlO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCByZWQoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yKSB7XG4gICAgaWYgKHRoaXMuI2hzdmEpIHtcbiAgICAgIGNvbnN0IHJnYmEgPSB0aGlzLiNzdmMuaHN2YVRvUmdiYSh0aGlzLiNoc3ZhKTtcblxuICAgICAgLy8gVE9ETzogVGhpcyBjb2RlIGFzc3VtZWQgbm9uLW51bGwgcHJlLXN0cmljdCBtb2RlLiBSZWV2YWx1YXRlIGluIHRoZSBmdXR1cmU/XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgcmdiYS5yZWQgPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jaHN2YSA9IHRoaXMuI3N2Yy5yZ2JhVG9Ic3ZhKHJnYmEpO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBncmVlbihjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQ29sb3IpIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgY29uc3QgcmdiYSA9IHRoaXMuI3N2Yy5oc3ZhVG9SZ2JhKHRoaXMuI2hzdmEpO1xuXG4gICAgICAvLyBUT0RPOiBUaGlzIGNvZGUgYXNzdW1lZCBub24tbnVsbCBwcmUtc3RyaWN0IG1vZGUuIFJlZXZhbHVhdGUgaW4gdGhlIGZ1dHVyZT9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICByZ2JhLmdyZWVuID0gY2hhbmdlLmNvbG9yVmFsdWUhIC8gY2hhbmdlLm1heFJhbmdlITtcbiAgICAgIHRoaXMuI2hzdmEgPSB0aGlzLiNzdmMucmdiYVRvSHN2YShyZ2JhKTtcbiAgICAgIHRoaXMuI3VwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgYmx1ZShjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQ29sb3IpIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgY29uc3QgcmdiYSA9IHRoaXMuI3N2Yy5oc3ZhVG9SZ2JhKHRoaXMuI2hzdmEpO1xuXG4gICAgICAvLyBUT0RPOiBUaGlzIGNvZGUgYXNzdW1lZCBub24tbnVsbCBwcmUtc3RyaWN0IG1vZGUuIFJlZXZhbHVhdGUgaW4gdGhlIGZ1dHVyZT9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICByZ2JhLmJsdWUgPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jaHN2YSA9IHRoaXMuI3N2Yy5yZ2JhVG9Ic3ZhKHJnYmEpO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBhbHBoYUF4aXMoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLiNoc3ZhICYmXG4gICAgICBjaGFuZ2UueENvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2hhbmdlLm1heFJhbmdlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRoaXMuI2hzdmEuYWxwaGEgPSBjaGFuZ2UueENvb3JkaW5hdGUgLyBjaGFuZ2UubWF4UmFuZ2U7XG4gICAgICB0aGlzLiN1cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IGFscGhhQ29sb3IoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yKSB7XG4gICAgaWYgKHRoaXMuI2hzdmEpIHtcbiAgICAgIC8vIFRPRE86IFRoaXMgY29kZSBhc3N1bWVkIG5vbi1udWxsIHByZS1zdHJpY3QgbW9kZS4gUmVldmFsdWF0ZSBpbiB0aGUgZnV0dXJlP1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIHRoaXMuI2hzdmEuYWxwaGEgPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBoZXgoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yKSB7XG4gICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXMoY2hhbmdlLmNvbG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2F0dXJhdGlvbkFuZExpZ2h0bmVzcyh2YWx1ZTogU2t5Q29sb3JwaWNrZXJDaGFuZ2VBeGlzKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy4jaHN2YSAmJlxuICAgICAgdmFsdWUueENvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUueEF4aXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUueUNvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUueUF4aXMgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy4jaHN2YS5zYXR1cmF0aW9uID0gdmFsdWUueENvb3JkaW5hdGUgLyB2YWx1ZS54QXhpcztcbiAgICAgIHRoaXMuI2hzdmEudmFsdWUgPSB2YWx1ZS55Q29vcmRpbmF0ZSAvIHZhbHVlLnlBeGlzO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNreUNvbG9ycGlja2VyQWxwaGFJZDogc3RyaW5nO1xuICBwdWJsaWMgcmV0dXJuRm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBpbml0aWFsQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGxhc3RBcHBsaWVkQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGlzVmlzaWJsZSA9IHRydWU7XG5cbiAgQFZpZXdDaGlsZCgnY29sb3JwaWNrZXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcHJvdGVjdGVkIGNvbG9ycGlja2VyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25SZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHJvdGVjdGVkIHRyaWdnZXJCdXR0b25SZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnY29sb3JwaWNrZXJSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHJvdGVjdGVkIHNldCBjb2xvcnBpY2tlclJlZih2YWx1ZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX2NvbG9ycGlja2VyUmVmID0gdmFsdWU7XG4gICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuXG4gICAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgICAvLyBFbnN1cmUgdGhlIGNvbG9ycGlja2VyIGhhcyBmdWxseSByZW5kZXJlZCBiZWZvcmUgYWRkaW5nIHRoZSBhZmZpeGVyLiBBZGRlZCB0byBhZGRyZXNzIGFcbiAgICAgIC8vIHJhY2UgY29uZGl0aW9uIHdoZW4gcnVubmluZyB1bmRlciBwcm9kdWN0aW9uIGNvbmRpdGlvbnMuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy4jY3JlYXRlQWZmaXhlcigpO1xuICAgICAgICB0aGlzLmlzUGlja2VyVmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy4jY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICcuc2t5LWNvbG9ycGlja2VyJyxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgY29sb3JwaWNrZXJSZWYoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19jb2xvcnBpY2tlclJlZjtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb2xvcnBpY2tlcklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBpc09wZW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2t5Q29sb3JwaWNrZXJIZXhJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2t5Q29sb3JwaWNrZXJSZWRJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2t5Q29sb3JwaWNrZXJHcmVlbklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBza3lDb2xvcnBpY2tlckJsdWVJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2xpZGVyOiBTbGlkZXJQb3NpdGlvbjtcbiAgcHJvdGVjdGVkIGFsbG93VHJhbnNwYXJlbmN5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgYWxwaGFTbGlkZXJDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgaGV4VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgaHVlU2xpZGVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHByZXNldENvbG9yczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCByZ2JhVGV4dDogU2t5Q29sb3JwaWNrZXJSZ2JhIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDb2xvcjogU2t5Q29sb3JwaWNrZXJPdXRwdXQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBpY29uQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGlzUGlja2VyVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAjaWRJbmRleDogbnVtYmVyO1xuICAjYWxwaGFDaGFubmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNmb3JtYXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI291dHB1dEZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjaHN2YTogU2t5Q29sb3JwaWNrZXJIc3ZhIHwgdW5kZWZpbmVkO1xuICAjc2xpZGVyRGltTWF4OiBTbGlkZXJEaW1lbnNpb247XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI2FmZml4ZXI6IFNreUFmZml4ZXIgfCB1bmRlZmluZWQ7XG4gICNvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UgfCB1bmRlZmluZWQ7XG4gICNwaWNrZXJVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiB8IHVuZGVmaW5lZDtcblxuICAjYWZmaXhTdmM6IFNreUFmZml4U2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2NvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gIHJlYWRvbmx5ICNlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAjb3ZlcmxheVN2YzogU2t5T3ZlcmxheVNlcnZpY2U7XG4gICNzdmM6IFNreUNvbG9ycGlja2VyU2VydmljZTtcbiAgI3RoZW1lU3ZjOiBTa3lUaGVtZVNlcnZpY2UgfCB1bmRlZmluZWQ7XG5cbiAgI19iYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfY29sb3JwaWNrZXJSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZmZpeFN2YzogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIG92ZXJsYXlTdmM6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIHN2YzogU2t5Q29sb3JwaWNrZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2FmZml4U3ZjID0gYWZmaXhTdmM7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNjb3JlQWRhcHRlciA9IGNvcmVBZGFwdGVyO1xuICAgIHRoaXMuI292ZXJsYXlTdmMgPSBvdmVybGF5U3ZjO1xuICAgIHRoaXMuI3N2YyA9IHN2YztcbiAgICB0aGlzLiN0aGVtZVN2YyA9IHRoZW1lU3ZjO1xuXG4gICAgY29tcG9uZW50SWRJbmRleCsrO1xuXG4gICAgdGhpcy4jaWRJbmRleCA9IGNvbXBvbmVudElkSW5kZXg7XG4gICAgdGhpcy5za3lDb2xvcnBpY2tlclJlZElkID0gYHNreS1jb2xvcnBpY2tlci1yZWQtJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy5za3lDb2xvcnBpY2tlckhleElkID0gYHNreS1jb2xvcnBpY2tlci1oZXgtLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMuc2t5Q29sb3JwaWNrZXJSZWRJZCA9IGBza3ktY29sb3JwaWNrZXItcmVkLS0ke3RoaXMuI2lkSW5kZXh9YDtcbiAgICB0aGlzLnNreUNvbG9ycGlja2VyR3JlZW5JZCA9IGBza3ktY29sb3JwaWNrZXItZ3JlZW4tLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMuc2t5Q29sb3JwaWNrZXJCbHVlSWQgPSBgc2t5LWNvbG9ycGlja2VyLWJsdWUtLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMuc2t5Q29sb3JwaWNrZXJBbHBoYUlkID0gYHNreS1jb2xvcnBpY2tlci1hbHBoYS0tJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy5jb2xvcnBpY2tlcklkID0gYHNreS1jb2xvcnBpY2tlci0tJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBgc2t5LWNvbG9ycGlja2VyLWJ1dHRvbi0tJHt0aGlzLiNpZEluZGV4fWA7XG5cbiAgICB0aGlzLiNzbGlkZXJEaW1NYXggPSBuZXcgU2xpZGVyRGltZW5zaW9uKDE4MiwgMjcwLCAxNzAsIDE4Mik7XG4gICAgdGhpcy5zbGlkZXIgPSBuZXcgU2xpZGVyUG9zaXRpb24oMCwgMCwgMCwgMCk7XG4gIH1cblxuICBwdWJsaWMgc2V0RGlhbG9nKFxuICAgIGNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgb3V0cHV0Rm9ybWF0OiBzdHJpbmcsXG4gICAgcHJlc2V0Q29sb3JzOiBBcnJheTxzdHJpbmc+LFxuICAgIGFscGhhQ2hhbm5lbDogc3RyaW5nLFxuICAgIGFsbG93VHJhbnNwYXJlbmN5OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbENvbG9yID0gY29sb3I7XG4gICAgdGhpcy4jb3V0cHV0Rm9ybWF0ID0gb3V0cHV0Rm9ybWF0O1xuICAgIHRoaXMucHJlc2V0Q29sb3JzID0gcHJlc2V0Q29sb3JzO1xuICAgIHRoaXMuI2FscGhhQ2hhbm5lbCA9IGFscGhhQ2hhbm5lbDtcbiAgICB0aGlzLmFsbG93VHJhbnNwYXJlbmN5ID0gYWxsb3dUcmFuc3BhcmVuY3k7XG5cbiAgICBpZiAodGhpcy4jb3V0cHV0Rm9ybWF0ID09PSAncmdiYScpIHtcbiAgICAgIHRoaXMuI2Zvcm1hdCA9IDE7XG4gICAgfSBlbHNlIGlmICh0aGlzLiNvdXRwdXRGb3JtYXQgPT09ICdoc2xhJykge1xuICAgICAgdGhpcy4jZm9ybWF0ID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jZm9ybWF0ID0gMDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBTa3lDb2xvcnBpY2tlck1lc3NhZ2UpID0+IHtcbiAgICAgICAgdGhpcy4jaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jYWRkVHJpZ2dlckJ1dHRvbkV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiN0aGVtZVN2Yykge1xuICAgICAgdGhpcy4jdGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh0aGVtZVNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICBjb25zdCB0aGVtZU5hbWUgPSB0aGVtZVNldHRpbmdzLmN1cnJlbnRTZXR0aW5ncz8udGhlbWU/Lm5hbWU7XG5cbiAgICAgICAgICAvLyBIdWUvYWxwaGEgc2xpZGVyIGJhcnMgaGF2ZSBkaWZmZXJlbnQgd2lkdGhzIGluIE1vZGVybiB0aGVtZS5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAodGhlbWVOYW1lID09PSAnbW9kZXJuJykge1xuICAgICAgICAgICAgdGhpcy4jc2xpZGVyRGltTWF4ID0gbmV3IFNsaWRlckRpbWVuc2lvbigxNzQsIDI3MCwgMTcwLCAxNzQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNzbGlkZXJEaW1NYXggPSBuZXcgU2xpZGVyRGltZW5zaW9uKDE4MiwgMjcwLCAxNzAsIDE4Mik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuI3VwZGF0ZVNsaWRlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI3NlbmRNZXNzYWdlKFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuT3Blbik7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VQaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFwcGx5Q29sb3JDbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbG9yKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29sb3JDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZENvbG9yKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvckFwcGxpZWQuZW1pdCh7IGNvbG9yOiB0aGlzLnNlbGVjdGVkQ29sb3IgfSk7XG4gICAgICB0aGlzLmxhc3RBcHBsaWVkQ29sb3IgPSB0aGlzLnNlbGVjdGVkQ29sb3IucmdiYVRleHQ7XG4gICAgICB0aGlzLnVwZGF0ZVBpY2tlclZhbHVlcyh0aGlzLmxhc3RBcHBsaWVkQ29sb3IpO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5ID0gdGhpcy5zZWxlY3RlZENvbG9yLnJnYmFUZXh0O1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhbmNlbENsaWNrKCk6IHZvaWQge1xuICAgIC8vIFJldmVydCBwaWNrZXIgdmFsdWVzIGJhY2sgdG8gcHJldmlvdXMgY29sb3IuXG4gICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXModGhpcy5iYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5KTtcbiAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gIH1cblxuICBwdWJsaWMgb25QcmVzZXRDbGljayh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXModmFsdWUpO1xuICB9XG5cbiAgcHVibGljIG9uUmVzZXRDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLiNzZW5kTWVzc2FnZShTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlLlJlc2V0KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVQaWNrZXJWYWx1ZXModmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGhzdmEgPSB0aGlzLiNnZXRIc3ZhVmFsdWUodmFsdWUpO1xuICAgIGlmIChoc3ZhKSB7XG4gICAgICB0aGlzLiNoc3ZhID0gaHN2YTtcbiAgICAgIHRoaXMuI3VwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2hzdmEpIHtcbiAgICAgIGNvbnN0IHJnYmE6IFNreUNvbG9ycGlja2VyUmdiYSA9IHRoaXMuI3N2Yy5oc3ZhVG9SZ2JhKHRoaXMuI2hzdmEpO1xuICAgICAgY29uc3QgZFJnYmE6IFNreUNvbG9ycGlja2VyUmdiYSA9IHRoaXMuI3N2Yy5kZW5vcm1hbGl6ZVJHQkEocmdiYSk7XG5cbiAgICAgIGNvbnN0IGhzdmE6IFNreUNvbG9ycGlja2VySHN2YSA9IHtcbiAgICAgICAgaHVlOiB0aGlzLiNoc3ZhLmh1ZSxcbiAgICAgICAgc2F0dXJhdGlvbjogMSxcbiAgICAgICAgdmFsdWU6IDEsXG4gICAgICAgIGFscGhhOiAxLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaHVlUmdiYSA9IHRoaXMuI3N2Yy5kZW5vcm1hbGl6ZVJHQkEodGhpcy4jc3ZjLmhzdmFUb1JnYmEoaHN2YSkpO1xuXG4gICAgICB0aGlzLnJnYmFUZXh0ID0gZFJnYmE7XG4gICAgICB0aGlzLmhleFRleHQgPSB0aGlzLiNzdmMuaGV4VGV4dChkUmdiYSwgdGhpcy4jYWxwaGFDaGFubmVsID09PSAnaGV4OCcpO1xuXG4gICAgICB0aGlzLmFscGhhU2xpZGVyQ29sb3IgPSBgcmdiYSgke2RSZ2JhLnJlZH0sJHtkUmdiYS5ncmVlbn0sJHtkUmdiYS5ibHVlfSwke2RSZ2JhLmFscGhhfSlgO1xuICAgICAgdGhpcy5odWVTbGlkZXJDb2xvciA9IGByZ2JhKCR7aHVlUmdiYS5yZWR9LCR7aHVlUmdiYS5ncmVlbn0sJHtodWVSZ2JhLmJsdWV9LCR7cmdiYS5hbHBoYX0pYDtcblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLiNmb3JtYXQgPT09IDAgJiZcbiAgICAgICAgdGhpcy4jaHN2YS5hbHBoYSA8IDEgJiZcbiAgICAgICAgdGhpcy4jYWxwaGFDaGFubmVsID09PSAnaGV4NidcbiAgICAgICkge1xuICAgICAgICB0aGlzLiNmb3JtYXQrKztcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gdGhpcy4jc3ZjLnNreUNvbG9ycGlja2VyT3V0KHRoaXMuI2hzdmEpO1xuXG4gICAgICB0aGlzLiN1cGRhdGVTbGlkZXIoKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlU2xpZGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNoc3ZhICYmIHRoaXMuI3NsaWRlckRpbU1heCkge1xuICAgICAgdGhpcy5zbGlkZXIgPSBuZXcgU2xpZGVyUG9zaXRpb24oXG4gICAgICAgIHRoaXMuI2hzdmEuaHVlICogdGhpcy4jc2xpZGVyRGltTWF4Lmh1ZSAtIDgsXG4gICAgICAgIHRoaXMuI2hzdmEuc2F0dXJhdGlvbiAqIHRoaXMuI3NsaWRlckRpbU1heC5zYXR1cmF0aW9uIC0gOCxcbiAgICAgICAgKDEgLSB0aGlzLiNoc3ZhLnZhbHVlKSAqIHRoaXMuI3NsaWRlckRpbU1heC52YWx1ZSAtIDgsXG4gICAgICAgIHRoaXMuI2hzdmEuYWxwaGEgKiB0aGlzLiNzbGlkZXJEaW1NYXguYWxwaGEgLSA4XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICNvcGVuUGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNQaWNrZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMuI2NyZWF0ZU92ZXJsYXkoKTtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gIH1cblxuICAjc2VuZE1lc3NhZ2UodHlwZTogU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZSkge1xuICAgIHRoaXMubWVzc2FnZVN0cmVhbS5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gICNoYW5kbGVJbmNvbWluZ01lc3NhZ2VzKG1lc3NhZ2U6IFNreUNvbG9ycGlja2VyTWVzc2FnZSkge1xuICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICBjYXNlIFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuT3BlbjpcbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlLkNsb3NlOlxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5SZXNldDpcbiAgICAgICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXModGhpcy5pbml0aWFsQ29sb3IpO1xuICAgICAgICB0aGlzLmJhY2tncm91bmRDb2xvckZvckRpc3BsYXkgPSB0aGlzLmluaXRpYWxDb2xvcjtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgICAgIC8vIFRPRE86IFRoaXMgY29kZSBhc3N1bWVkIG5vbi1udWxsIHByZS1zdHJpY3QgbW9kZS4gUmVldmFsdWF0ZSBpbiB0aGUgZnV0dXJlP1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3JBcHBsaWVkLmVtaXQoeyBjb2xvcjogdGhpcy5zZWxlY3RlZENvbG9yISB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5Ub2dnbGVSZXNldEJ1dHRvbjpcbiAgICAgICAgdGhpcy5zaG93UmVzZXRCdXR0b24gPSAhdGhpcy5zaG93UmVzZXRCdXR0b247XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVBZmZpeGVyKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29sb3JwaWNrZXJSZWYgJiZcbiAgICAgIHRoaXMudHJpZ2dlckJ1dHRvblJlZiAmJlxuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmVcbiAgICApIHtcbiAgICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLiNhZmZpeFN2Yy5jcmVhdGVBZmZpeGVyKHRoaXMuY29sb3JwaWNrZXJSZWYpO1xuXG4gICAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jcGlja2VyVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmlzUGlja2VyVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICAgIHBsYWNlbWVudDogJ2JlbG93JyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLiNhZmZpeGVyID0gYWZmaXhlcjtcbiAgICB9XG4gIH1cblxuICAjZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI2FmZml4ZXIpIHtcbiAgICAgIHRoaXMuI2FmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy4jYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAjY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb2xvcnBpY2tlclRlbXBsYXRlUmVmKSB7XG4gICAgICBjb25zdCBvdmVybGF5ID0gdGhpcy4jb3ZlcmxheVN2Yy5jcmVhdGUoe1xuICAgICAgICBlbmFibGVDbG9zZTogZmFsc2UsXG4gICAgICAgIGVuYWJsZVBvaW50ZXJFdmVudHM6IGZhbHNlLFxuICAgICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuI2Vudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICB9KTtcblxuICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLmNvbG9ycGlja2VyVGVtcGxhdGVSZWYpO1xuXG4gICAgICB0aGlzLiNvdmVybGF5ID0gb3ZlcmxheTtcbiAgICB9XG4gIH1cblxuICAjZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI292ZXJsYXkpIHtcbiAgICAgIHRoaXMuI292ZXJsYXlTdmMuY2xvc2UodGhpcy4jb3ZlcmxheSk7XG4gICAgICB0aGlzLiNvdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNhZGRUcmlnZ2VyQnV0dG9uRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KHdpbmRvdy5kb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5Ym9hcmRFdmVudCA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleWJvYXJkRXZlbnQua2V5Py50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoa2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgICAgIHRoaXMuI3NlbmRNZXNzYWdlKFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gICNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNwaWNrZXJVbnN1YnNjcmliZSkge1xuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICAgIHRoaXMuI3BpY2tlclVuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNnZXRIc3ZhVmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFNreUNvbG9ycGlja2VySHN2YSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGhzdmE6IFNreUNvbG9ycGlja2VySHN2YSB8IHVuZGVmaW5lZDtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuI2FscGhhQ2hhbm5lbCA9PT0gJ2hleDgnKSB7XG4gICAgICAgIGhzdmEgPSB0aGlzLiNzdmMuc3RyaW5nVG9Ic3ZhKHZhbHVlLCB0cnVlKTtcbiAgICAgICAgaWYgKCFoc3ZhICYmICF0aGlzLiNoc3ZhKSB7XG4gICAgICAgICAgaHN2YSA9IHRoaXMuI3N2Yy5zdHJpbmdUb0hzdmEodmFsdWUsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaHN2YSA9IHRoaXMuI3N2Yy5zdHJpbmdUb0hzdmEodmFsdWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHN2YTtcbiAgfVxuXG4gICNnZXRBY2Nlc3NpYmxlSWNvbkNvbG9yKFxuICAgIGJhY2tncm91bmRDb2xvcjogU2t5Q29sb3JwaWNrZXJPdXRwdXQgfCB1bmRlZmluZWRcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAvLyBodHRwczovL3d3dy53My5vcmcvV0FJL0dML3dpa2kvUmVsYXRpdmVfbHVtaW5hbmNlXG4gICAgICBjb25zdCBSc1JHQiA9IGJhY2tncm91bmRDb2xvci5yZ2JhLnJlZCAvIDI1NTtcbiAgICAgIGNvbnN0IEdzUkdCID0gYmFja2dyb3VuZENvbG9yLnJnYmEuZ3JlZW4gLyAyNTU7XG4gICAgICBjb25zdCBCc1JHQiA9IGJhY2tncm91bmRDb2xvci5yZ2JhLmJsdWUgLyAyNTU7XG5cbiAgICAgIGNvbnN0IFIgPVxuICAgICAgICBSc1JHQiA8PSAwLjAzOTI4XG4gICAgICAgICAgPyBSc1JHQiAvIDEyLjkyXG4gICAgICAgICAgOiBNYXRoLnBvdygoUnNSR0IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgICAgIGNvbnN0IEcgPVxuICAgICAgICBHc1JHQiA8PSAwLjAzOTI4XG4gICAgICAgICAgPyBHc1JHQiAvIDEyLjkyXG4gICAgICAgICAgOiBNYXRoLnBvdygoR3NSR0IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgICAgIGNvbnN0IEIgPVxuICAgICAgICBCc1JHQiA8PSAwLjAzOTI4XG4gICAgICAgICAgPyBCc1JHQiAvIDEyLjkyXG4gICAgICAgICAgOiBNYXRoLnBvdygoQnNSR0IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcblxuICAgICAgY29uc3QgcmVsYXRpdmVMdW1pbmFuY2UgPVxuICAgICAgICAoMC4yMTI2ICogUiArIDAuNzE1MiAqIEcgKyAwLjA3MjIgKiBCKSAqXG4gICAgICAgICgxIC8gYmFja2dyb3VuZENvbG9yLnJnYmEuYWxwaGEpO1xuXG4gICAgICAvLyBodHRwczovL3d3dy53My5vcmcvV0FJL0dML3dpa2kvQ29udHJhc3RfcmF0aW9cbiAgICAgIHJldHVybiAxLjA1IC8gKHJlbGF0aXZlTHVtaW5hbmNlICsgMC4wNSkgPiAzXG4gICAgICAgID8gJ3JnYigyNTUsIDI1NSwgMjU1KSdcbiAgICAgICAgOiAncmdiKDAsIDAsIDApJztcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LWlucHV0LWdyb3VwXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktY29sb3JwaWNrZXItaGlkZGVuJzogIWlzVmlzaWJsZSxcbiAgICAnc2t5LWNvbG9ycGlja2VyLWRpc2FibGVkJzogZGlzYWJsZWRcbiAgfVwiXG4+XG4gIDxkaXYgW2hpZGRlbl09XCJ0cnVlXCI+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9kaXY+XG5cbiAgPGJ1dHRvblxuICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWJ1dHRvblwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpc09wZW4gPyBjb2xvcnBpY2tlcklkIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICBsYWJlbCB8fFxuICAgICAgKGxhYmVsbGVkQnlcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogKCdza3l1eF9jb2xvcnBpY2tlcl9kcm9wZG93bl9idXR0b24nIHwgc2t5TGliUmVzb3VyY2VzKSlcbiAgICBcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJsYWJlbGxlZEJ5XCJcbiAgICBbYXR0ci5pZF09XCJ0cmlnZ2VyQnV0dG9uSWRcIlxuICAgIFthdHRyLnRpdGxlXT1cIlxuICAgICAgbGFiZWwgfHxcbiAgICAgIChsYWJlbGxlZEJ5XG4gICAgICAgID8gbnVsbFxuICAgICAgICA6ICgnc2t5dXhfY29sb3JwaWNrZXJfZHJvcGRvd25fYnV0dG9uJyB8IHNreUxpYlJlc291cmNlcykpXG4gICAgXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktY29sb3JwaWNrZXItYnV0dG9uLWRpc2FibGVkJzogZGlzYWJsZWRcbiAgICB9XCJcbiAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAnc2t5LW1hcmdpbi1pbmxpbmUtc20nOiAnbW9kZXJuJ1xuICAgIH1cIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhY2tncm91bmRDb2xvckZvckRpc3BsYXlcIlxuICAgIChjbGljayk9XCJvblRyaWdnZXJCdXR0b25DbGljaygpXCJcbiAgICAjdHJpZ2dlckJ1dHRvblJlZlxuICA+XG4gICAgPHNreS1pY29uXG4gICAgICAqbmdJZj1cInBpY2tlckJ1dHRvbkljb25cIlxuICAgICAgY2xhc3M9XCJza3ktY29sb3JwaWNrZXItYnV0dG9uLWljb25cIlxuICAgICAgW2ljb25dPVwicGlja2VyQnV0dG9uSWNvblwiXG4gICAgICBbaWNvblR5cGVdPVwicGlja2VyQnV0dG9uSWNvblR5cGVcIlxuICAgICAgW3NpemVdPVwiJzF4J1wiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiaWNvbkNvbG9yXCJcbiAgICAvPlxuICAgIDxuZy1jb250YWluZXIgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiPlxuICAgICAgPHNreS1pY29uXG4gICAgICAgIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWJ1dHRvbi1tb2Rlcm4tY2hldnJvblwiXG4gICAgICAgIGljb249XCJjaGV2cm9uLWRvd25cIlxuICAgICAgICBzaXplPVwieHNcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1jb2xvcnBpY2tlci1idXR0b24tbW9kZXJuLWNoZXZyb24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgICAgICB9XCJcbiAgICAgIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuXG4gIDxuZy10ZW1wbGF0ZSAjY29sb3JwaWNrZXJUZW1wbGF0ZVJlZj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1jb250YWluZXJcIlxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICAgIFthdHRyLmlkXT1cImNvbG9ycGlja2VySWRcIlxuICAgICAgW2hpZGRlbl09XCIhaXNQaWNrZXJWaXNpYmxlXCJcbiAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgJ3NreS1zaGFkb3cnOiAnZGVmYXVsdCcsXG4gICAgICAgICdza3ktZWxldmF0aW9uLTQnOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgICAjY29sb3JwaWNrZXJSZWZcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWNvbG9ycGlja2VyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNhdHVyYXRpb24tbGlnaHRuZXNzXCJcbiAgICAgICAgICBbY29sb3JdPVwic2xpZGVyLnNhdHVyYXRpb24gLSBzbGlkZXIudmFsdWUgKyAnJ1wiXG4gICAgICAgICAgW3NreUNvbG9ycGlja2VyU2xpZGVyXVxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImh1ZVNsaWRlckNvbG9yXCJcbiAgICAgICAgICBbeEF4aXNdPVwiMVwiXG4gICAgICAgICAgW3lBeGlzXT1cIjFcIlxuICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cInNhdHVyYXRpb25BbmRMaWdodG5lc3MgPSAkZXZlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3Igc2t5LXJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5zYXR1cmF0aW9uXCJcbiAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwic2xpZGVyLnZhbHVlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQgc2t5LXJvdW5kZWQtY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQtY29sb3Igc2t5LXJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRDb2xvcj8ucmdiYVRleHRcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImh1ZVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclNsaWRlcl1cbiAgICAgICAgICAgICAgW3hBeGlzXT1cIjFcIlxuICAgICAgICAgICAgICAobmV3Q29sb3JDb250cmFzdCk9XCJodWUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAjaHVlU2xpZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvciBza3ktcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5odWVcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmFsbG93VHJhbnNwYXJlbmN5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhbHBoYVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclNsaWRlcl1cbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYWxwaGFTbGlkZXJDb2xvclwiXG4gICAgICAgICAgICAgIFt4QXhpc109XCIxXCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiYWxwaGFBeGlzID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgI2FscGhhU2xpZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvciBza3ktcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5hbHBoYVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicmdiYS10ZXh0XCI+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfaGV4JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckhleElkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2hleCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgcGF0dGVybj1cIl4jPyhbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkkXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwic2t5Q29sb3JwaWNrZXJIZXhJZFwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclRleHRdXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJoZXhUZXh0XCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiaGV4ID0gJGV2ZW50XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9za3ktaW5wdXQtYm94PlxuICAgICAgICAgIDxza3ktaW5wdXQtYm94PlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9hcmlhX3JlZCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwic2t5Q29sb3JwaWNrZXJSZWRJZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdza3l1eF9jb2xvcnBpY2tlcl9yZWQnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyUmVkSWRcIlxuICAgICAgICAgICAgICBbbWF4UmFuZ2VdPVwiMjU1XCJcbiAgICAgICAgICAgICAgW3NreUNvbG9ycGlja2VyVGV4dF1cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJnYmFUZXh0Py5yZWRcIlxuICAgICAgICAgICAgICAobmV3Q29sb3JDb250cmFzdCk9XCJyZWQgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfZ3JlZW4nIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckdyZWVuSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfY29sb3JwaWNrZXJfZ3JlZW4nIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyR3JlZW5JZFwiXG4gICAgICAgICAgICAgIFttYXhSYW5nZV09XCIyNTVcIlxuICAgICAgICAgICAgICBbc2t5Q29sb3JwaWNrZXJUZXh0XVxuICAgICAgICAgICAgICBbdmFsdWVdPVwicmdiYVRleHQ/LmdyZWVuXCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiZ3JlZW4gPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfYmx1ZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cInNreUNvbG9ycGlja2VyQmx1ZUlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2JsdWUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyQmx1ZUlkXCJcbiAgICAgICAgICAgICAgW21heFJhbmdlXT1cIjI1NVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclRleHRdXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJyZ2JhVGV4dD8uYmx1ZVwiXG4gICAgICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cImJsdWUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3ggKm5nSWY9XCJ0aGlzLmFsbG93VHJhbnNwYXJlbmN5XCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfYWxwaGEnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckFscGhhSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfY29sb3JwaWNrZXJfYWxwaGEnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjFcIlxuICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgcGF0dGVybj1cIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT9cIlxuICAgICAgICAgICAgICBzdGVwPVwiMC4xXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyQWxwaGFJZFwiXG4gICAgICAgICAgICAgIFttYXhSYW5nZV09XCIxXCJcbiAgICAgICAgICAgICAgW3NreUNvbG9ycGlja2VyVGV4dF1cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJnYmFUZXh0Py5hbHBoYVwiXG4gICAgICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cImFscGhhQ29sb3IgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJwcmVzZXRDb2xvcnMgJiYgcHJlc2V0Q29sb3JzLmxlbmd0aFwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktY29sb3JwaWNrZXItcHJlc2V0LWNvbG9yLWFyZWFcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbG9yIG9mIHByZXNldENvbG9ycyB8IHNsaWNlIDogMCA6IDEyOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgKCdza3l1eF9jb2xvcnBpY2tlcl9wcmVzZXRfY29sb3InIHwgc2t5TGliUmVzb3VyY2VzKSArICcgJyArIGNvbG9yXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2t5LXByZXNldC1jb2xvcic6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgJ3NreS1idG4gc2t5LWJ0bi1saW5rJzogJ21vZGVybidcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmVzZXRDbGljayhjb2xvcilcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1mb290ZXJcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1wYWRkaW5nLWV2ZW4tbGFyZ2UnOiAnZGVmYXVsdCdcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWNvbHVtblwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnkgc2t5LWJ0bi1jb2xvcnBpY2tlci1hcHBseVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X2NvbG9ycGlja2VyX2FwcGx5JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7ICdza3ktbWFyZ2luLWlubGluZS1zbSc6ICdtb2Rlcm4nIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlDb2xvckNsaWNrKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdza3l1eF9jb2xvcnBpY2tlcl9hcHBseScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1idG4tY29sb3JwaWNrZXItY2xvc2VcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsQ2xpY2soKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2Nsb3NlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPHNwYW5cbiAgICAqbmdJZj1cImFsbG93VHJhbnNwYXJlbmN5XCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWNoZWNrZXJlZC1iYWNrZ3JvdW5kXCJcbiAgPlxuICA8L3NwYW4+XG5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwic2hvd1Jlc2V0QnV0dG9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9yZXNldCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1jb2xvcnBpY2tlci1yZXNldC1idXR0b24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICdza3ktY29sb3JwaWNrZXItcmVzZXQtYnV0dG9uJzogJ2RlZmF1bHQnLFxuICAgICAgJ3NreS1idG4gc2t5LWJ0bi1pY29uLWJvcmRlcmxlc3Mgc2t5LWNvbG9ycGlja2VyLXJlc2V0LWJ1dHRvbi1tb2Rlcm4nOlxuICAgICAgICAnbW9kZXJuJ1xuICAgIH1cIlxuICAgIChjbGljayk9XCJvblJlc2V0Q2xpY2soKVwiXG4gID5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwidGltZXNcIiBzaXplPVwic21cIiAvPlxuICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCIgaWNvbj1cInRyYXNoXCIgc2l6ZT1cImxnXCIgLz5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==