carbon-components-angular 5.21.1 → 5.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/docs/documentation/components/DatePicker.html +61 -75
  2. package/docs/documentation/components/SideNav.html +59 -15
  3. package/docs/documentation/components/SideNavItem.html +123 -44
  4. package/docs/documentation/components/SideNavMenu.html +67 -25
  5. package/docs/documentation/coverage.html +10 -10
  6. package/docs/documentation/js/menu-wc.js +3 -3
  7. package/docs/documentation/js/menu-wc_es5.js +1 -1
  8. package/docs/documentation/js/search/search_index.js +2 -2
  9. package/docs/documentation/modules/ComboBoxModule/dependencies.svg +4 -4
  10. package/docs/documentation/modules/ComboBoxModule.html +4 -4
  11. package/docs/documentation/modules/ContentSwitcherModule/dependencies.svg +4 -4
  12. package/docs/documentation/modules/ContentSwitcherModule.html +4 -4
  13. package/docs/documentation/modules/DatePickerInputModule/dependencies.svg +7 -7
  14. package/docs/documentation/modules/DatePickerInputModule.html +7 -7
  15. package/docs/documentation/modules/DatePickerModule/dependencies.svg +53 -57
  16. package/docs/documentation/modules/DatePickerModule.html +53 -57
  17. package/docs/documentation/modules/DialogModule/dependencies.svg +34 -34
  18. package/docs/documentation/modules/DialogModule.html +34 -34
  19. package/docs/documentation/modules/GridModule/dependencies.svg +60 -60
  20. package/docs/documentation/modules/GridModule.html +60 -60
  21. package/docs/documentation/modules/LoadingModule/dependencies.svg +4 -4
  22. package/docs/documentation/modules/LoadingModule.html +4 -4
  23. package/docs/documentation/modules/NFormsModule/dependencies.svg +4 -4
  24. package/docs/documentation/modules/NFormsModule.html +4 -4
  25. package/docs/documentation/modules/NumberModule/dependencies.svg +4 -4
  26. package/docs/documentation/modules/NumberModule.html +4 -4
  27. package/docs/documentation/modules/ProgressIndicatorModule/dependencies.svg +4 -4
  28. package/docs/documentation/modules/ProgressIndicatorModule.html +4 -4
  29. package/docs/documentation/modules/RadioModule/dependencies.svg +4 -4
  30. package/docs/documentation/modules/RadioModule.html +4 -4
  31. package/docs/documentation/modules/SearchModule/dependencies.svg +4 -4
  32. package/docs/documentation/modules/SearchModule.html +4 -4
  33. package/docs/documentation/modules/SelectModule/dependencies.svg +58 -58
  34. package/docs/documentation/modules/SelectModule.html +58 -58
  35. package/docs/documentation/modules/SideNavModule.html +2 -1
  36. package/docs/documentation/modules/SliderModule/dependencies.svg +4 -4
  37. package/docs/documentation/modules/SliderModule.html +4 -4
  38. package/docs/documentation/modules/StructuredListModule/dependencies.svg +66 -66
  39. package/docs/documentation/modules/StructuredListModule.html +66 -66
  40. package/docs/documentation/modules/TabsModule/dependencies.svg +69 -69
  41. package/docs/documentation/modules/TabsModule.html +69 -69
  42. package/docs/documentation/modules/TagModule/dependencies.svg +4 -4
  43. package/docs/documentation/modules/TagModule.html +4 -4
  44. package/docs/documentation/modules/ThemeModule/dependencies.svg +4 -4
  45. package/docs/documentation/modules/ThemeModule.html +4 -4
  46. package/docs/documentation/modules/TilesModule/dependencies.svg +83 -83
  47. package/docs/documentation/modules/TilesModule.html +83 -83
  48. package/docs/documentation/modules/TimePickerModule/dependencies.svg +17 -17
  49. package/docs/documentation/modules/TimePickerModule.html +17 -17
  50. package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +49 -45
  51. package/docs/documentation/modules/TimePickerSelectModule.html +49 -45
  52. package/docs/documentation/modules/ToggleModule/dependencies.svg +41 -45
  53. package/docs/documentation/modules/ToggleModule.html +41 -45
  54. package/docs/documentation/modules/ToggletipModule/dependencies.svg +37 -37
  55. package/docs/documentation/modules/ToggletipModule.html +37 -37
  56. package/docs/documentation/modules/TooltipModule/dependencies.svg +4 -4
  57. package/docs/documentation/modules/TooltipModule.html +4 -4
  58. package/docs/documentation/modules/TreeviewModule/dependencies.svg +4 -4
  59. package/docs/documentation/modules/TreeviewModule.html +4 -4
  60. package/docs/documentation.json +183 -90
  61. package/docs/storybook/{1325.5502bfb0.iframe.bundle.js → 1325.3c39c950.iframe.bundle.js} +1 -1
  62. package/docs/storybook/3348.4c108918.iframe.bundle.js +1 -0
  63. package/docs/storybook/{checkbox-checkbox-stories.ea872c08.iframe.bundle.js → checkbox-checkbox-stories.3aeae19d.iframe.bundle.js} +1 -1
  64. package/docs/storybook/{content-switcher-content-switcher-stories.2f8cdd41.iframe.bundle.js → content-switcher-content-switcher-stories.8f3aa078.iframe.bundle.js} +1 -1
  65. package/docs/storybook/datepicker-datepicker-stories.1d3d1000.iframe.bundle.js +1 -0
  66. package/docs/storybook/{grid-css-grid-stories.f5c396e2.iframe.bundle.js → grid-css-grid-stories.c703f9de.iframe.bundle.js} +1 -1
  67. package/docs/storybook/{grid-grid-stories.0b935617.iframe.bundle.js → grid-grid-stories.f7a88c02.iframe.bundle.js} +1 -1
  68. package/docs/storybook/iframe.html +2 -2
  69. package/docs/storybook/index.json +1 -1
  70. package/docs/storybook/{layer-layer-stories.8fdeec80.iframe.bundle.js → layer-layer-stories.9fc41371.iframe.bundle.js} +1 -1
  71. package/docs/storybook/{layout-stack-stories.e9f0fa18.iframe.bundle.js → layout-stack-stories.799a681c.iframe.bundle.js} +1 -1
  72. package/docs/storybook/{link-link-stories.23f8a587.iframe.bundle.js → link-link-stories.9e3dd976.iframe.bundle.js} +1 -1
  73. package/docs/storybook/{list-list-stories.79350958.iframe.bundle.js → list-list-stories.e906cf67.iframe.bundle.js} +1 -1
  74. package/docs/storybook/{loading-loading-stories.9594d513.iframe.bundle.js → loading-loading-stories.261bc118.iframe.bundle.js} +1 -1
  75. package/docs/storybook/main.f61a9bb7.iframe.bundle.js +1 -0
  76. package/docs/storybook/{popover-popover-stories.e8d6e7c9.iframe.bundle.js → popover-popover-stories.cc1684df.iframe.bundle.js} +1 -1
  77. package/docs/storybook/project.json +1 -1
  78. package/docs/storybook/{runtime~main.386e82b8.iframe.bundle.js → runtime~main.6a22a4e9.iframe.bundle.js} +1 -1
  79. package/docs/storybook/{skeleton-skeleton-stories.48ffb189.iframe.bundle.js → skeleton-skeleton-stories.77f9485f.iframe.bundle.js} +1 -1
  80. package/docs/storybook/{slider-slider-stories.f608c3ca.iframe.bundle.js → slider-slider-stories.0a70e102.iframe.bundle.js} +1 -1
  81. package/docs/storybook/stories.json +1 -1
  82. package/docs/storybook/tabs-tabs-stories.183f4129.iframe.bundle.js +1 -0
  83. package/docs/storybook/{theme-theme-stories.781e4fdc.iframe.bundle.js → theme-theme-stories.66e1727e.iframe.bundle.js} +1 -1
  84. package/docs/storybook/{toggle-toggle-stories.7b2e3bc9.iframe.bundle.js → toggle-toggle-stories.def6c644.iframe.bundle.js} +1 -1
  85. package/docs/storybook/toggletip-toggletip-stories.22e37008.iframe.bundle.js +1 -0
  86. package/docs/storybook/{tooltip-definition-tooptip-stories.57864d79.iframe.bundle.js → tooltip-definition-tooptip-stories.2e1a211c.iframe.bundle.js} +1 -1
  87. package/docs/storybook/{tooltip-tooltip-stories.b15c3310.iframe.bundle.js → tooltip-tooltip-stories.6a4a1383.iframe.bundle.js} +1 -1
  88. package/docs/storybook/ui-shell-ui-shell-stories.a1fb87a2.iframe.bundle.js +1 -0
  89. package/esm2020/datepicker/datepicker.component.mjs +2 -9
  90. package/esm2020/ui-shell/sidenav/sidenav-item.component.mjs +55 -19
  91. package/esm2020/ui-shell/sidenav/sidenav-menu.component.mjs +11 -3
  92. package/esm2020/ui-shell/sidenav/sidenav.component.mjs +13 -3
  93. package/esm2020/ui-shell/sidenav/sidenav.module.mjs +5 -4
  94. package/fesm2015/carbon-components-angular-datepicker.mjs +1 -8
  95. package/fesm2015/carbon-components-angular-datepicker.mjs.map +1 -1
  96. package/fesm2015/carbon-components-angular-ui-shell.mjs +79 -25
  97. package/fesm2015/carbon-components-angular-ui-shell.mjs.map +1 -1
  98. package/fesm2020/carbon-components-angular-datepicker.mjs +1 -8
  99. package/fesm2020/carbon-components-angular-datepicker.mjs.map +1 -1
  100. package/fesm2020/carbon-components-angular-ui-shell.mjs +79 -25
  101. package/fesm2020/carbon-components-angular-ui-shell.mjs.map +1 -1
  102. package/package.json +1 -1
  103. package/ui-shell/sidenav/sidenav-item.component.d.ts +8 -4
  104. package/ui-shell/sidenav/sidenav-menu.component.d.ts +6 -2
  105. package/ui-shell/sidenav/sidenav.component.d.ts +5 -1
  106. package/ui-shell/sidenav/sidenav.module.d.ts +2 -1
  107. package/docs/storybook/3348.35ca85d6.iframe.bundle.js +0 -1
  108. package/docs/storybook/datepicker-datepicker-stories.96effc6c.iframe.bundle.js +0 -1
  109. package/docs/storybook/main.503cfdea.iframe.bundle.js +0 -1
  110. package/docs/storybook/tabs-tabs-stories.db9e209e.iframe.bundle.js +0 -1
  111. package/docs/storybook/toggletip-toggletip-stories.1da8eaf1.iframe.bundle.js +0 -1
  112. package/docs/storybook/ui-shell-ui-shell-stories.70551d65.iframe.bundle.js +0 -1
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[]).push([[4253],{"./src/popover/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{OI:()=>PopoverContainer,yk:()=>PopoverContent,UU:()=>PopoverModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs");let PopoverContainer=class PopoverContainer{constructor(changeDetectorRef){this.changeDetectorRef=changeDetectorRef,this.onClose=new core.EventEmitter,this.onOpen=new core.EventEmitter,this.isOpenChange=new core.EventEmitter,this.caret=!0,this.dropShadow=!0,this.highContrast=!1,this.isOpen=!1,this.containerClass=!0,this.align="bottom"}get alignmentTopClass(){return"top"===this.align}get alignmentTopLeftClass(){return"top-left"===this.align}get alignmentTopRightClass(){return"top-right"===this.align}get alignmentBottomClass(){return"bottom"===this.align}get alignmentBottomLeftClass(){return"bottom-left"===this.align}get alignmentBottomRightClass(){return"bottom-right"===this.align}get alignmentLeftClass(){return"left"===this.align}get alignmentLeftTopClass(){return"left-top"===this.align}get alignmentLeftBottomClass(){return"left-bottom"===this.align}get alignmentRightClass(){return"right"===this.align}get alignmentRightTopClass(){return"right-top"===this.align}get alignmentRightBottomClass(){return"right-bottom"===this.align}handleChange(open,event){this.isOpen!==open&&this.isOpenChange.emit(open),open?this.onOpen.emit(event):this.onClose.emit(event),this.isOpen=open,this.changeDetectorRef.markForCheck()}};PopoverContainer.ctorParameters=()=>[{type:core.ChangeDetectorRef}],PopoverContainer.propDecorators={alignmentTopClass:[{type:core.HostBinding,args:["class.cds--popover--top"]}],alignmentTopLeftClass:[{type:core.HostBinding,args:["class.cds--popover--top-left"]}],alignmentTopRightClass:[{type:core.HostBinding,args:["class.cds--popover--top-right"]}],alignmentBottomClass:[{type:core.HostBinding,args:["class.cds--popover--bottom"]}],alignmentBottomLeftClass:[{type:core.HostBinding,args:["class.cds--popover--bottom-left"]}],alignmentBottomRightClass:[{type:core.HostBinding,args:["class.cds--popover--bottom-right"]}],alignmentLeftClass:[{type:core.HostBinding,args:["class.cds--popover--left"]}],alignmentLeftTopClass:[{type:core.HostBinding,args:["class.cds--popover--left-top"]}],alignmentLeftBottomClass:[{type:core.HostBinding,args:["class.cds--popover--left-bottom"]}],alignmentRightClass:[{type:core.HostBinding,args:["class.cds--popover--right"]}],alignmentRightTopClass:[{type:core.HostBinding,args:["class.cds--popover--right-top"]}],alignmentRightBottomClass:[{type:core.HostBinding,args:["class.cds--popover--right-bottom"]}],onClose:[{type:core.Output}],onOpen:[{type:core.Output}],isOpenChange:[{type:core.Output}],caret:[{type:core.HostBinding,args:["class.cds--popover--caret"]},{type:core.Input}],dropShadow:[{type:core.HostBinding,args:["class.cds--popover--drop-shadow"]},{type:core.Input}],highContrast:[{type:core.HostBinding,args:["class.cds--popover--high-contrast"]},{type:core.Input}],isOpen:[{type:core.HostBinding,args:["class.cds--popover--open"]},{type:core.Input}],containerClass:[{type:core.HostBinding,args:["class.cds--popover-container"]}],align:[{type:core.Input}]},PopoverContainer=(0,tslib_es6.gn)([(0,core.Directive)({selector:"[cdsPopover], [ibmPopover]"})],PopoverContainer);let PopoverContent=class PopoverContent{constructor(){this.popoverClass=!0}};PopoverContent.propDecorators={popoverClass:[{type:core.HostBinding,args:["class.cds--popover"]}]},PopoverContent=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-popover-content, ibm-popover-content",template:'\n\t\t<span class="cds--popover-content">\n\t\t\t<ng-content></ng-content>\n\t\t</span>\n\t\t<span class="cds--popover-caret"></span>\n\t'})],PopoverContent);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let PopoverModule=class PopoverModule{};PopoverModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[PopoverContainer,PopoverContent],exports:[PopoverContainer,PopoverContent],imports:[common.CommonModule]})],PopoverModule)},"./src/tooltip/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{u:()=>Tooltip,vD:()=>TooltipDefinition,z8:()=>TooltipModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),popover=__webpack_require__("./src/popover/index.ts");let Tooltip=class Tooltip extends popover.OI{constructor(ref){super(ref),this.ref=ref,this.tooltipClass=!0,this.id="tooltip-"+Tooltip.tooltipCount++,this.enterDelayMs=100,this.leaveDelayMs=300,this.disabled=!1,this.highContrast=!0,this.dropShadow=!1}mouseenter(event){setTimeout((()=>{this.handleChange(!0,event)}),this.enterDelayMs)}mouseleave(event){setTimeout((()=>{this.handleChange(!1,event)}),this.leaveDelayMs)}hostkeys(event){open&&"Escape"===event.key&&(event.stopPropagation(),this.handleChange(!1,event))}handleFocus(event){this.handleChange(!0,event)}handleFocusOut(event){this.handleChange(!1,event)}isTemplate(value){return value instanceof core.TemplateRef}ngAfterContentChecked(){if(this.wrapper){const buttonElement=this.wrapper.nativeElement.querySelector("button");buttonElement&&!buttonElement.getAttribute("aria-labelledby")&&buttonElement.setAttribute("aria-labelledby",this.id)}}};Tooltip.tooltipCount=0,Tooltip.ctorParameters=()=>[{type:core.ChangeDetectorRef}],Tooltip.propDecorators={tooltipClass:[{type:core.HostBinding,args:["class.cds--tooltip"]}],id:[{type:core.Input}],enterDelayMs:[{type:core.Input}],leaveDelayMs:[{type:core.Input}],disabled:[{type:core.Input}],description:[{type:core.Input}],wrapper:[{type:core.ViewChild,args:["contentWrapper"]}],mouseenter:[{type:core.HostListener,args:["mouseenter",["$event"]]}],mouseleave:[{type:core.HostListener,args:["mouseleave",["$event"]]}],hostkeys:[{type:core.HostListener,args:["keyup",["$event"]]}],handleFocus:[{type:core.HostListener,args:["focusin",["$event"]]}],handleFocusOut:[{type:core.HostListener,args:["focusout",["$event"]]}]},Tooltip=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-tooltip, ibm-tooltip",changeDetection:core.ChangeDetectionStrategy.OnPush,template:'\n\t\t<span #contentWrapper>\n\t\t\t<ng-content></ng-content>\n\t\t</span>\n\t\t<span\n\t\t\t*ngIf="description"\n\t\t\tclass="cds--popover"\n\t\t\t[id]="id"\n\t\t\t[attr.aria-hidden]="!isOpen"\n\t\t\trole="tooltip">\n\t\t\t<ng-container *ngIf="!disabled">\n\t\t\t\t<span class="cds--popover-content cds--tooltip-content">\n\t\t\t\t\t<ng-container *ngIf="!isTemplate(description)">{{description}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf="isTemplate(description)" [ngTemplateOutlet]="description"></ng-template>\n\t\t\t\t</span>\n\t\t\t\t<span class="cds--popover-caret"></span>\n\t\t\t</ng-container>\n\t\t</span>\n\t'})],Tooltip);let TooltipDefinition=class TooltipDefinition extends popover.OI{constructor(ref){super(ref),this.ref=ref,this.id="tooltip-definition-"+TooltipDefinition.tooltipCount++,this.align="bottom",this.highContrast=!0,this.dropShadow=!1}onBlur(event){this.handleChange(!1,event)}onClick(event){this.handleChange(!this.isOpen,event)}hostkeys(event){this.isOpen&&"Escape"===event.key&&(event.stopPropagation(),this.handleChange(!1,event))}mouseleave(event){this.handleChange(!1,event)}isTemplate(value){return value instanceof core.TemplateRef}};TooltipDefinition.tooltipCount=0,TooltipDefinition.ctorParameters=()=>[{type:core.ChangeDetectorRef}],TooltipDefinition.propDecorators={id:[{type:core.Input}],align:[{type:core.Input}],description:[{type:core.Input}],hostkeys:[{type:core.HostListener,args:["keyup",["$event"]]}],mouseleave:[{type:core.HostListener,args:["mouseleave",["$event"]]}]},TooltipDefinition=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-tooltip-definition, ibm-tooltip-definition",changeDetection:core.ChangeDetectionStrategy.OnPush,template:'\n\t\t<button\n\t\t\tclass="cds--definition-term"\n\t\t\t[attr.aria-controls]="id"\n\t\t\t[attr.aria-expanded]="isOpen"\n\t\t\t(blur)="onBlur($event)"\n\t\t\t(click)="onClick($event)"\n\t\t\ttype="button">\n\t\t\t<ng-content></ng-content>\n\t\t</button>\n\t\t<span\n\t\t\t*ngIf="description"\n\t\t\tclass="cds--popover"\n\t\t\t[id]="id"\n\t\t\t[attr.aria-hidden]="isOpen"\n\t\t\trole="tooltip">\n\t\t\t<span class="cds--popover-content cds--definition-tooltip">\n\t\t\t\t<ng-container *ngIf="!isTemplate(description)">{{description}}</ng-container>\n\t\t\t\t<ng-template *ngIf="isTemplate(description)" [ngTemplateOutlet]="description"></ng-template>\n\t\t\t</span>\n\t\t\t<span class="cds--popover-caret"></span>\n\t\t</span>\n\t'})],TooltipDefinition);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let TooltipModule=class TooltipModule{};TooltipModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[Tooltip,TooltipDefinition],exports:[Tooltip,TooltipDefinition],imports:[common.CommonModule,popover.UU]})],TooltipModule)},"./node_modules/@storybook/angular/dist/client/argsToTemplate.js":(__unused_webpack_module,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.argsToTemplate=void 0,exports.argsToTemplate=function argsToTemplate(args,options={}){const includeSet=options.include?new Set(options.include):null,excludeSet=options.exclude?new Set(options.exclude):null;return Object.entries(args).filter((([key])=>void 0!==args[key])).filter((([key])=>includeSet?includeSet.has(key):!excludeSet||!excludeSet.has(key))).map((([key,value])=>"function"==typeof value?`(${key})="${key}($event)"`:`[${key}]="${key}"`)).join(" ")}},"./node_modules/@storybook/angular/dist/client/decorators.js":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.componentWrapperDecorator=exports.applicationConfig=exports.moduleMetadata=void 0;const ComputesTemplateFromComponent_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/angular-beta/ComputesTemplateFromComponent.js"),NgComponentAnalyzer_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/angular-beta/utils/NgComponentAnalyzer.js");exports.moduleMetadata=metadata=>storyFn=>{const story=storyFn(),storyMetadata=story.moduleMetadata||{};return metadata=metadata||{},{...story,moduleMetadata:{declarations:[...metadata.declarations||[],...storyMetadata.declarations||[]],entryComponents:[...metadata.entryComponents||[],...storyMetadata.entryComponents||[]],imports:[...metadata.imports||[],...storyMetadata.imports||[]],schemas:[...metadata.schemas||[],...storyMetadata.schemas||[]],providers:[...metadata.providers||[],...storyMetadata.providers||[]]}}},exports.applicationConfig=function applicationConfig(config){return storyFn=>{const story=storyFn(),storyConfig=story.applicationConfig;return{...story,applicationConfig:storyConfig||config?{...config,...storyConfig,providers:[...config?.providers||[],...storyConfig?.providers||[]]}:void 0}}};exports.componentWrapperDecorator=(element,props)=>(storyFn,storyContext)=>{const story=storyFn(),currentProps="function"==typeof props?props(storyContext):props,template=(0,NgComponentAnalyzer_1.isComponent)(element)?(0,ComputesTemplateFromComponent_1.computesTemplateFromComponent)(element,currentProps??{},story.template):element(story.template);return{...story,template,...currentProps||story.props?{props:{...currentProps,...story.props}}:{}}}},"./node_modules/@storybook/angular/dist/client/index.js":function(__unused_webpack_module,exports,__webpack_require__){var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);desc&&!("get"in desc?!m.__esModule:desc.writable||desc.configurable)||(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__exportStar=this&&this.__exportStar||function(m,exports){for(var p in m)"default"===p||Object.prototype.hasOwnProperty.call(exports,p)||__createBinding(exports,m,p)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.argsToTemplate=exports.applicationConfig=exports.componentWrapperDecorator=exports.moduleMetadata=void 0,__webpack_require__("./node_modules/@storybook/angular/dist/client/globals.js"),__exportStar(__webpack_require__("./node_modules/@storybook/angular/dist/client/public-api.js"),exports),__exportStar(__webpack_require__("./node_modules/@storybook/angular/dist/client/public-types.js"),exports);var decorators_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/decorators.js");Object.defineProperty(exports,"moduleMetadata",{enumerable:!0,get:function(){return decorators_1.moduleMetadata}}),Object.defineProperty(exports,"componentWrapperDecorator",{enumerable:!0,get:function(){return decorators_1.componentWrapperDecorator}}),Object.defineProperty(exports,"applicationConfig",{enumerable:!0,get:function(){return decorators_1.applicationConfig}});var argsToTemplate_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/argsToTemplate.js");Object.defineProperty(exports,"argsToTemplate",{enumerable:!0,get:function(){return argsToTemplate_1.argsToTemplate}})},"./node_modules/@storybook/angular/dist/client/public-api.js":function(__unused_webpack_module,exports,__webpack_require__){var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);desc&&!("get"in desc?!m.__esModule:desc.writable||desc.configurable)||(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__exportStar=this&&this.__exportStar||function(m,exports){for(var p in m)"default"===p||Object.prototype.hasOwnProperty.call(exports,p)||__createBinding(exports,m,p)},__importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.raw=exports.forceReRender=exports.configure=exports.storiesOf=void 0;const preview_api_1=__webpack_require__("@storybook/preview-api"),render_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/render.js"),decorateStory_1=__importDefault(__webpack_require__("./node_modules/@storybook/angular/dist/client/decorateStory.js"));__exportStar(__webpack_require__("./node_modules/@storybook/angular/dist/client/public-types.js"),exports);const api=(0,preview_api_1.start)(render_1.renderToCanvas,{decorateStory:decorateStory_1.default,render:render_1.render});exports.storiesOf=(kind,m)=>api.clientApi.storiesOf(kind,m).addParameters({renderer:"angular"});exports.configure=(...args)=>api.configure("angular",...args),exports.forceReRender=api.forceReRender,exports.raw=api.clientApi.raw},"./node_modules/@storybook/angular/dist/client/public-types.js":(__unused_webpack_module,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0})},"./node_modules/@storybook/angular/dist/index.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{var _client_index__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@storybook/angular/dist/client/index.js");__webpack_require__.o(_client_index__WEBPACK_IMPORTED_MODULE_0__,"componentWrapperDecorator")&&__webpack_require__.d(__webpack_exports__,{componentWrapperDecorator:function(){return _client_index__WEBPACK_IMPORTED_MODULE_0__.componentWrapperDecorator}}),__webpack_require__.o(_client_index__WEBPACK_IMPORTED_MODULE_0__,"moduleMetadata")&&__webpack_require__.d(__webpack_exports__,{moduleMetadata:function(){return _client_index__WEBPACK_IMPORTED_MODULE_0__.moduleMetadata}})},"./src/tooltip/tooltip.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Basic:()=>Basic,Ellipses:()=>Ellipses,__namedExportsOrder:()=>__namedExportsOrder,default:()=>__WEBPACK_DEFAULT_EXPORT__});var _storybook_angular__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),___WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./src/tooltip/index.ts");const __WEBPACK_DEFAULT_EXPORT__={title:"Components/Tooltip",decorators:[(0,_storybook_angular__WEBPACK_IMPORTED_MODULE_0__.moduleMetadata)({imports:[___WEBPACK_IMPORTED_MODULE_1__.z8]})],args:{isOpen:!0,caret:!0,description:"Occassionally, services are updated in a specified time window to ensure no down time for customers.",align:"bottom"},argTypes:{onOpen:{control:"Opened!"},onClose:{control:"Closed!"},isOpenChange:{control:"Is Open Change!"},align:{options:["top","top-left","top-right","bottom","bottom-left","bottom-right","left","left-bottom","left-top","right","right-bottom","right-top"],control:"select"}},parameters:{docs:{story:{inline:!1,iframeHeight:"18rem"}},layout:"centered"},component:___WEBPACK_IMPORTED_MODULE_1__.u},Basic=(args=>({props:args,template:'\n <cds-tooltip\n [isOpen]="isOpen"\n [caret]="caret"\n [align]="align"\n (onOpen)="onOpen($event)"\n (onClose)="onClose($event)"\n (isOpenChange)="isOpenChange($event)"\n [description]="description">\n <button type="button" class="tooltip-trigger">\n <svg preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 32 32">\n <path d="M26,4H6A2,2,0,0,0,4,6V26a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2V6A2,2,0,0,0,26,4ZM6,26V6H26V26Z"></path>\n </svg>\n </button>\n </cds-tooltip>\n ',styles:["\n .tooltip-trigger {\n box-sizing: border-box;\n margin: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n background: white;\n border: 1px solid var(--cds-border-subtle);\n cursor: pointer;\n }\n svg { fill: var(--cds-background-inverse); }\n "]})).bind({}),Ellipses=(args=>({props:args,template:'\n <cds-tooltip\n [isOpen]="isOpen"\n [caret]="caret"\n [align]="align"\n description="Tooltip for ellipsis because I can and I am really really long">\n <span class="overflowText">\n Tooltip for ellipsis because I can and I am really really long\n </span>\n </cds-tooltip>\n ',styles:["\n .overflowText {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100px;\n display: inline-block;\n }\n "]})).bind({});Ellipses.argTypes={description:{control:!1}},Basic.parameters={...Basic.parameters,docs:{...Basic.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <cds-tooltip\n [isOpen]="isOpen"\n [caret]="caret"\n [align]="align"\n (onOpen)="onOpen($event)"\n (onClose)="onClose($event)"\n (isOpenChange)="isOpenChange($event)"\n [description]="description">\n <button type="button" class="tooltip-trigger">\n <svg preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 32 32">\n <path d="M26,4H6A2,2,0,0,0,4,6V26a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2V6A2,2,0,0,0,26,4ZM6,26V6H26V26Z"></path>\n </svg>\n </button>\n </cds-tooltip>\n `,\n styles: [`\n .tooltip-trigger {\n box-sizing: border-box;\n margin: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n background: white;\n border: 1px solid var(--cds-border-subtle);\n cursor: pointer;\n }\n svg { fill: var(--cds-background-inverse); }\n `]\n})',...Basic.parameters?.docs?.source}}},Ellipses.parameters={...Ellipses.parameters,docs:{...Ellipses.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <cds-tooltip\n [isOpen]="isOpen"\n [caret]="caret"\n [align]="align"\n description="Tooltip for ellipsis because I can and I am really really long">\n <span class="overflowText">\n Tooltip for ellipsis because I can and I am really really long\n </span>\n </cds-tooltip>\n `,\n styles: [`\n .overflowText {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100px;\n display: inline-block;\n }\n `]\n})',...Ellipses.parameters?.docs?.source}}};const __namedExportsOrder=["Basic","Ellipses"]}}]);
1
+ "use strict";(self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[]).push([[4253],{"./src/popover/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{OI:()=>PopoverContainer,yk:()=>PopoverContent,UU:()=>PopoverModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs");let PopoverContainer=class PopoverContainer{constructor(changeDetectorRef){this.changeDetectorRef=changeDetectorRef,this.onClose=new core.EventEmitter,this.onOpen=new core.EventEmitter,this.isOpenChange=new core.EventEmitter,this.caret=!0,this.dropShadow=!0,this.highContrast=!1,this.isOpen=!1,this.containerClass=!0,this.align="bottom"}get alignmentTopClass(){return"top"===this.align}get alignmentTopLeftClass(){return"top-left"===this.align}get alignmentTopRightClass(){return"top-right"===this.align}get alignmentBottomClass(){return"bottom"===this.align}get alignmentBottomLeftClass(){return"bottom-left"===this.align}get alignmentBottomRightClass(){return"bottom-right"===this.align}get alignmentLeftClass(){return"left"===this.align}get alignmentLeftTopClass(){return"left-top"===this.align}get alignmentLeftBottomClass(){return"left-bottom"===this.align}get alignmentRightClass(){return"right"===this.align}get alignmentRightTopClass(){return"right-top"===this.align}get alignmentRightBottomClass(){return"right-bottom"===this.align}handleChange(open,event){this.isOpen!==open&&this.isOpenChange.emit(open),open?this.onOpen.emit(event):this.onClose.emit(event),this.isOpen=open,this.changeDetectorRef.markForCheck()}};PopoverContainer.ctorParameters=()=>[{type:core.ChangeDetectorRef}],PopoverContainer.propDecorators={alignmentTopClass:[{type:core.HostBinding,args:["class.cds--popover--top"]}],alignmentTopLeftClass:[{type:core.HostBinding,args:["class.cds--popover--top-left"]}],alignmentTopRightClass:[{type:core.HostBinding,args:["class.cds--popover--top-right"]}],alignmentBottomClass:[{type:core.HostBinding,args:["class.cds--popover--bottom"]}],alignmentBottomLeftClass:[{type:core.HostBinding,args:["class.cds--popover--bottom-left"]}],alignmentBottomRightClass:[{type:core.HostBinding,args:["class.cds--popover--bottom-right"]}],alignmentLeftClass:[{type:core.HostBinding,args:["class.cds--popover--left"]}],alignmentLeftTopClass:[{type:core.HostBinding,args:["class.cds--popover--left-top"]}],alignmentLeftBottomClass:[{type:core.HostBinding,args:["class.cds--popover--left-bottom"]}],alignmentRightClass:[{type:core.HostBinding,args:["class.cds--popover--right"]}],alignmentRightTopClass:[{type:core.HostBinding,args:["class.cds--popover--right-top"]}],alignmentRightBottomClass:[{type:core.HostBinding,args:["class.cds--popover--right-bottom"]}],onClose:[{type:core.Output}],onOpen:[{type:core.Output}],isOpenChange:[{type:core.Output}],caret:[{type:core.HostBinding,args:["class.cds--popover--caret"]},{type:core.Input}],dropShadow:[{type:core.HostBinding,args:["class.cds--popover--drop-shadow"]},{type:core.Input}],highContrast:[{type:core.HostBinding,args:["class.cds--popover--high-contrast"]},{type:core.Input}],isOpen:[{type:core.HostBinding,args:["class.cds--popover--open"]},{type:core.Input}],containerClass:[{type:core.HostBinding,args:["class.cds--popover-container"]}],align:[{type:core.Input}]},PopoverContainer=(0,tslib_es6.gn)([(0,core.Directive)({selector:"[cdsPopover], [ibmPopover]"})],PopoverContainer);let PopoverContent=class PopoverContent{constructor(){this.popoverClass=!0}};PopoverContent.propDecorators={popoverClass:[{type:core.HostBinding,args:["class.cds--popover"]}]},PopoverContent=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-popover-content, ibm-popover-content",template:'\n\t\t<span class="cds--popover-content">\n\t\t\t<ng-content></ng-content>\n\t\t</span>\n\t\t<span class="cds--popover-caret"></span>\n\t'})],PopoverContent);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let PopoverModule=class PopoverModule{};PopoverModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[PopoverContainer,PopoverContent],exports:[PopoverContainer,PopoverContent],imports:[common.CommonModule]})],PopoverModule)},"./src/tooltip/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{u:()=>Tooltip,vD:()=>TooltipDefinition,z8:()=>TooltipModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),popover=__webpack_require__("./src/popover/index.ts");let Tooltip=class Tooltip extends popover.OI{constructor(ref){super(ref),this.ref=ref,this.tooltipClass=!0,this.id="tooltip-"+Tooltip.tooltipCount++,this.enterDelayMs=100,this.leaveDelayMs=300,this.disabled=!1,this.highContrast=!0,this.dropShadow=!1}mouseenter(event){setTimeout((()=>{this.handleChange(!0,event)}),this.enterDelayMs)}mouseleave(event){setTimeout((()=>{this.handleChange(!1,event)}),this.leaveDelayMs)}hostkeys(event){open&&"Escape"===event.key&&(event.stopPropagation(),this.handleChange(!1,event))}handleFocus(event){this.handleChange(!0,event)}handleFocusOut(event){this.handleChange(!1,event)}isTemplate(value){return value instanceof core.TemplateRef}ngAfterContentChecked(){if(this.wrapper){const buttonElement=this.wrapper.nativeElement.querySelector("button");buttonElement&&!buttonElement.getAttribute("aria-labelledby")&&buttonElement.setAttribute("aria-labelledby",this.id)}}};Tooltip.tooltipCount=0,Tooltip.ctorParameters=()=>[{type:core.ChangeDetectorRef}],Tooltip.propDecorators={tooltipClass:[{type:core.HostBinding,args:["class.cds--tooltip"]}],id:[{type:core.Input}],enterDelayMs:[{type:core.Input}],leaveDelayMs:[{type:core.Input}],disabled:[{type:core.Input}],description:[{type:core.Input}],wrapper:[{type:core.ViewChild,args:["contentWrapper"]}],mouseenter:[{type:core.HostListener,args:["mouseenter",["$event"]]}],mouseleave:[{type:core.HostListener,args:["mouseleave",["$event"]]}],hostkeys:[{type:core.HostListener,args:["keyup",["$event"]]}],handleFocus:[{type:core.HostListener,args:["focusin",["$event"]]}],handleFocusOut:[{type:core.HostListener,args:["focusout",["$event"]]}]},Tooltip=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-tooltip, ibm-tooltip",changeDetection:core.ChangeDetectionStrategy.OnPush,template:'\n\t\t<span #contentWrapper>\n\t\t\t<ng-content></ng-content>\n\t\t</span>\n\t\t<span\n\t\t\t*ngIf="description"\n\t\t\tclass="cds--popover"\n\t\t\t[id]="id"\n\t\t\t[attr.aria-hidden]="!isOpen"\n\t\t\trole="tooltip">\n\t\t\t<ng-container *ngIf="!disabled">\n\t\t\t\t<span class="cds--popover-content cds--tooltip-content">\n\t\t\t\t\t<ng-container *ngIf="!isTemplate(description)">{{description}}</ng-container>\n\t\t\t\t\t<ng-template *ngIf="isTemplate(description)" [ngTemplateOutlet]="description"></ng-template>\n\t\t\t\t</span>\n\t\t\t\t<span class="cds--popover-caret"></span>\n\t\t\t</ng-container>\n\t\t</span>\n\t'})],Tooltip);let TooltipDefinition=class TooltipDefinition extends popover.OI{constructor(ref){super(ref),this.ref=ref,this.id="tooltip-definition-"+TooltipDefinition.tooltipCount++,this.align="bottom",this.highContrast=!0,this.dropShadow=!1}onBlur(event){this.handleChange(!1,event)}onClick(event){this.handleChange(!this.isOpen,event)}hostkeys(event){this.isOpen&&"Escape"===event.key&&(event.stopPropagation(),this.handleChange(!1,event))}mouseleave(event){this.handleChange(!1,event)}isTemplate(value){return value instanceof core.TemplateRef}};TooltipDefinition.tooltipCount=0,TooltipDefinition.ctorParameters=()=>[{type:core.ChangeDetectorRef}],TooltipDefinition.propDecorators={id:[{type:core.Input}],align:[{type:core.Input}],description:[{type:core.Input}],hostkeys:[{type:core.HostListener,args:["keyup",["$event"]]}],mouseleave:[{type:core.HostListener,args:["mouseleave",["$event"]]}]},TooltipDefinition=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-tooltip-definition, ibm-tooltip-definition",changeDetection:core.ChangeDetectionStrategy.OnPush,template:'\n\t\t<button\n\t\t\tclass="cds--definition-term"\n\t\t\t[attr.aria-controls]="id"\n\t\t\t[attr.aria-expanded]="isOpen"\n\t\t\t(blur)="onBlur($event)"\n\t\t\t(click)="onClick($event)"\n\t\t\ttype="button">\n\t\t\t<ng-content></ng-content>\n\t\t</button>\n\t\t<span\n\t\t\t*ngIf="description"\n\t\t\tclass="cds--popover"\n\t\t\t[id]="id"\n\t\t\t[attr.aria-hidden]="isOpen"\n\t\t\trole="tooltip">\n\t\t\t<span class="cds--popover-content cds--definition-tooltip">\n\t\t\t\t<ng-container *ngIf="!isTemplate(description)">{{description}}</ng-container>\n\t\t\t\t<ng-template *ngIf="isTemplate(description)" [ngTemplateOutlet]="description"></ng-template>\n\t\t\t</span>\n\t\t\t<span class="cds--popover-caret"></span>\n\t\t</span>\n\t'})],TooltipDefinition);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let TooltipModule=class TooltipModule{};TooltipModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[Tooltip,TooltipDefinition],exports:[Tooltip,TooltipDefinition],imports:[common.CommonModule,popover.UU]})],TooltipModule)},"./node_modules/@storybook/angular/dist/client/argsToTemplate.js":(__unused_webpack_module,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.argsToTemplate=void 0,exports.argsToTemplate=function argsToTemplate(args,options={}){const includeSet=options.include?new Set(options.include):null,excludeSet=options.exclude?new Set(options.exclude):null;return Object.entries(args).filter((([key])=>void 0!==args[key])).filter((([key])=>includeSet?includeSet.has(key):!excludeSet||!excludeSet.has(key))).map((([key,value])=>"function"==typeof value?`(${key})="${key}($event)"`:`[${key}]="${key}"`)).join(" ")}},"./node_modules/@storybook/angular/dist/client/decorators.js":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.componentWrapperDecorator=exports.applicationConfig=exports.moduleMetadata=void 0;const ComputesTemplateFromComponent_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/angular-beta/ComputesTemplateFromComponent.js"),NgComponentAnalyzer_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/angular-beta/utils/NgComponentAnalyzer.js");exports.moduleMetadata=metadata=>storyFn=>{const story=storyFn(),storyMetadata=story.moduleMetadata||{};return metadata=metadata||{},{...story,moduleMetadata:{declarations:[...metadata.declarations||[],...storyMetadata.declarations||[]],entryComponents:[...metadata.entryComponents||[],...storyMetadata.entryComponents||[]],imports:[...metadata.imports||[],...storyMetadata.imports||[]],schemas:[...metadata.schemas||[],...storyMetadata.schemas||[]],providers:[...metadata.providers||[],...storyMetadata.providers||[]]}}},exports.applicationConfig=function applicationConfig(config){return storyFn=>{const story=storyFn(),storyConfig=story.applicationConfig;return{...story,applicationConfig:storyConfig||config?{...config,...storyConfig,providers:[...config?.providers||[],...storyConfig?.providers||[]]}:void 0}}};exports.componentWrapperDecorator=(element,props)=>(storyFn,storyContext)=>{const story=storyFn(),currentProps="function"==typeof props?props(storyContext):props,template=(0,NgComponentAnalyzer_1.isComponent)(element)?(0,ComputesTemplateFromComponent_1.computesTemplateFromComponent)(element,currentProps??{},story.template):element(story.template);return{...story,template,...currentProps||story.props?{props:{...currentProps,...story.props}}:{}}}},"./node_modules/@storybook/angular/dist/client/index.js":function(__unused_webpack_module,exports,__webpack_require__){var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);desc&&!("get"in desc?!m.__esModule:desc.writable||desc.configurable)||(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__exportStar=this&&this.__exportStar||function(m,exports){for(var p in m)"default"===p||Object.prototype.hasOwnProperty.call(exports,p)||__createBinding(exports,m,p)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.argsToTemplate=exports.applicationConfig=exports.componentWrapperDecorator=exports.moduleMetadata=void 0,__webpack_require__("./node_modules/@storybook/angular/dist/client/globals.js"),__exportStar(__webpack_require__("./node_modules/@storybook/angular/dist/client/public-api.js"),exports),__exportStar(__webpack_require__("./node_modules/@storybook/angular/dist/client/public-types.js"),exports);var decorators_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/decorators.js");Object.defineProperty(exports,"moduleMetadata",{enumerable:!0,get:function(){return decorators_1.moduleMetadata}}),Object.defineProperty(exports,"componentWrapperDecorator",{enumerable:!0,get:function(){return decorators_1.componentWrapperDecorator}}),Object.defineProperty(exports,"applicationConfig",{enumerable:!0,get:function(){return decorators_1.applicationConfig}});var argsToTemplate_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/argsToTemplate.js");Object.defineProperty(exports,"argsToTemplate",{enumerable:!0,get:function(){return argsToTemplate_1.argsToTemplate}})},"./node_modules/@storybook/angular/dist/client/public-api.js":function(__unused_webpack_module,exports,__webpack_require__){var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);desc&&!("get"in desc?!m.__esModule:desc.writable||desc.configurable)||(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__exportStar=this&&this.__exportStar||function(m,exports){for(var p in m)"default"===p||Object.prototype.hasOwnProperty.call(exports,p)||__createBinding(exports,m,p)},__importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.raw=exports.forceReRender=exports.configure=exports.storiesOf=void 0;const preview_api_1=__webpack_require__("@storybook/preview-api"),render_1=__webpack_require__("./node_modules/@storybook/angular/dist/client/render.js"),decorateStory_1=__importDefault(__webpack_require__("./node_modules/@storybook/angular/dist/client/decorateStory.js"));__exportStar(__webpack_require__("./node_modules/@storybook/angular/dist/client/public-types.js"),exports);const api=(0,preview_api_1.start)(render_1.renderToCanvas,{decorateStory:decorateStory_1.default,render:render_1.render});exports.storiesOf=(kind,m)=>api.clientApi.storiesOf(kind,m).addParameters({renderer:"angular"});exports.configure=(...args)=>api.configure("angular",...args),exports.forceReRender=api.forceReRender,exports.raw=api.clientApi.raw},"./node_modules/@storybook/angular/dist/client/public-types.js":(__unused_webpack_module,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0})},"./node_modules/@storybook/angular/dist/index.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{var _client_index__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@storybook/angular/dist/client/index.js");__webpack_require__.o(_client_index__WEBPACK_IMPORTED_MODULE_0__,"applicationConfig")&&__webpack_require__.d(__webpack_exports__,{applicationConfig:function(){return _client_index__WEBPACK_IMPORTED_MODULE_0__.applicationConfig}}),__webpack_require__.o(_client_index__WEBPACK_IMPORTED_MODULE_0__,"componentWrapperDecorator")&&__webpack_require__.d(__webpack_exports__,{componentWrapperDecorator:function(){return _client_index__WEBPACK_IMPORTED_MODULE_0__.componentWrapperDecorator}}),__webpack_require__.o(_client_index__WEBPACK_IMPORTED_MODULE_0__,"moduleMetadata")&&__webpack_require__.d(__webpack_exports__,{moduleMetadata:function(){return _client_index__WEBPACK_IMPORTED_MODULE_0__.moduleMetadata}})},"./src/tooltip/tooltip.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Basic:()=>Basic,Ellipses:()=>Ellipses,__namedExportsOrder:()=>__namedExportsOrder,default:()=>__WEBPACK_DEFAULT_EXPORT__});var _storybook_angular__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),___WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./src/tooltip/index.ts");const __WEBPACK_DEFAULT_EXPORT__={title:"Components/Tooltip",decorators:[(0,_storybook_angular__WEBPACK_IMPORTED_MODULE_0__.moduleMetadata)({imports:[___WEBPACK_IMPORTED_MODULE_1__.z8]})],args:{isOpen:!0,caret:!0,description:"Occassionally, services are updated in a specified time window to ensure no down time for customers.",align:"bottom"},argTypes:{onOpen:{control:"Opened!"},onClose:{control:"Closed!"},isOpenChange:{control:"Is Open Change!"},align:{options:["top","top-left","top-right","bottom","bottom-left","bottom-right","left","left-bottom","left-top","right","right-bottom","right-top"],control:"select"}},parameters:{docs:{story:{inline:!1,iframeHeight:"18rem"}},layout:"centered"},component:___WEBPACK_IMPORTED_MODULE_1__.u},Basic=(args=>({props:args,template:'\n <cds-tooltip\n [isOpen]="isOpen"\n [caret]="caret"\n [align]="align"\n (onOpen)="onOpen($event)"\n (onClose)="onClose($event)"\n (isOpenChange)="isOpenChange($event)"\n [description]="description">\n <button type="button" class="tooltip-trigger">\n <svg preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 32 32">\n <path d="M26,4H6A2,2,0,0,0,4,6V26a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2V6A2,2,0,0,0,26,4ZM6,26V6H26V26Z"></path>\n </svg>\n </button>\n </cds-tooltip>\n ',styles:["\n .tooltip-trigger {\n box-sizing: border-box;\n margin: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n background: white;\n border: 1px solid var(--cds-border-subtle);\n cursor: pointer;\n }\n svg { fill: var(--cds-background-inverse); }\n "]})).bind({}),Ellipses=(args=>({props:args,template:'\n <cds-tooltip\n [isOpen]="isOpen"\n [caret]="caret"\n [align]="align"\n description="Tooltip for ellipsis because I can and I am really really long">\n <span class="overflowText">\n Tooltip for ellipsis because I can and I am really really long\n </span>\n </cds-tooltip>\n ',styles:["\n .overflowText {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100px;\n display: inline-block;\n }\n "]})).bind({});Ellipses.argTypes={description:{control:!1}},Basic.parameters={...Basic.parameters,docs:{...Basic.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <cds-tooltip\n [isOpen]="isOpen"\n [caret]="caret"\n [align]="align"\n (onOpen)="onOpen($event)"\n (onClose)="onClose($event)"\n (isOpenChange)="isOpenChange($event)"\n [description]="description">\n <button type="button" class="tooltip-trigger">\n <svg preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 32 32">\n <path d="M26,4H6A2,2,0,0,0,4,6V26a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2V6A2,2,0,0,0,26,4ZM6,26V6H26V26Z"></path>\n </svg>\n </button>\n </cds-tooltip>\n `,\n styles: [`\n .tooltip-trigger {\n box-sizing: border-box;\n margin: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n background: white;\n border: 1px solid var(--cds-border-subtle);\n cursor: pointer;\n }\n svg { fill: var(--cds-background-inverse); }\n `]\n})',...Basic.parameters?.docs?.source}}},Ellipses.parameters={...Ellipses.parameters,docs:{...Ellipses.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <cds-tooltip\n [isOpen]="isOpen"\n [caret]="caret"\n [align]="align"\n description="Tooltip for ellipsis because I can and I am really really long">\n <span class="overflowText">\n Tooltip for ellipsis because I can and I am really really long\n </span>\n </cds-tooltip>\n `,\n styles: [`\n .overflowText {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100px;\n display: inline-block;\n }\n `]\n})',...Ellipses.parameters?.docs?.source}}};const __namedExportsOrder=["Basic","Ellipses"]}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[]).push([[9660],{"./src/icon/icon.directive.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{a:()=>IconDirective});var tslib__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_icon_service__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./src/icon/icon.service.ts"),_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@carbon/icon-helpers/es/index.js");let IconDirective=class IconDirective{constructor(elementRef,iconService){this.elementRef=elementRef,this.iconService=iconService,this.cdsIcon="",this.size="16",this.title="",this.ariaLabel="",this.ariaLabelledBy="",this.ariaHidden="",this.isFocusable=!1}set ibmIcon(iconName){this.cdsIcon=iconName}renderIcon(iconName){const root=this.elementRef.nativeElement;let icon;try{icon=this.iconService.get(iconName,this.size.toString())}catch(error){return void console.warn(error)}const domParser=new DOMParser,rawSVG=icon.svg,svgElement=domParser.parseFromString(rawSVG,"image/svg+xml").documentElement;let node="SVG"!==root.tagName.toUpperCase()?svgElement:svgElement.firstChild;for(root.innerHTML="";node;)root.appendChild(root.ownerDocument.importNode(node,!0)),node=node.nextSibling;const svg="SVG"!==root.tagName.toUpperCase()?svgElement:root;svg.setAttribute("xmlns","http://www.w3.org/2000/svg");const attributes=(0,_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_1__.u9)({width:icon.attrs.width,height:icon.attrs.height,viewBox:icon.attrs.viewBox,title:this.title,"aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledBy,"aria-hidden":this.ariaHidden,focusable:this.isFocusable.toString()}),attrKeys=Object.keys(attributes);for(let i=0;i<attrKeys.length;i++){const key=attrKeys[i],value=attributes[key];"title"!==key&&(value&&svg.setAttribute(key,value))}if(attributes.title){const title=document.createElement("title");title.textContent=attributes.title,IconDirective.titleIdCounter++,title.setAttribute("id",`${icon.name}-title-${IconDirective.titleIdCounter}`),svg.insertBefore(title,svg.firstElementChild),svg.setAttribute("aria-labelledby",`${icon.name}-title-${IconDirective.titleIdCounter}`)}}ngAfterViewInit(){this.renderIcon(this.cdsIcon)}ngOnChanges({cdsIcon}){cdsIcon&&!cdsIcon.isFirstChange()&&this.renderIcon(this.cdsIcon)}};IconDirective.titleIdCounter=0,IconDirective.ctorParameters=()=>[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.ElementRef},{type:_icon_service__WEBPACK_IMPORTED_MODULE_0__.C6}],IconDirective.propDecorators={ibmIcon:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],cdsIcon:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],size:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],title:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],ariaLabel:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],ariaLabelledBy:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],ariaHidden:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}],isFocusable:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_2__.Input}]},IconDirective=(0,tslib__WEBPACK_IMPORTED_MODULE_3__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Directive)({selector:"[cdsIcon], [ibmIcon]"})],IconDirective)},"./src/icon/icon.module.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{QX:()=>IconModule});var tslib__WEBPACK_IMPORTED_MODULE_54__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_53__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_angular_common__WEBPACK_IMPORTED_MODULE_55__=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),_icon_directive__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./src/icon/icon.directive.ts"),_icon_service__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./src/icon/icon.service.ts"),_carbon_icons_es_add_16__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@carbon/icons/es/add/16.js"),_carbon_icons_es_add_20__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@carbon/icons/es/add/20.js"),_carbon_icons_es_bee_16__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@carbon/icons/es/bee/16.js"),_carbon_icons_es_bee_20__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@carbon/icons/es/bee/20.js"),_carbon_icons_es_calendar_16__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/@carbon/icons/es/calendar/16.js"),_carbon_icons_es_carbon_16__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/@carbon/icons/es/carbon/16.js"),_carbon_icons_es_carbon_20__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./node_modules/@carbon/icons/es/carbon/20.js"),_carbon_icons_es_caret_down_16__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/@carbon/icons/es/caret--down/16.js"),_carbon_icons_es_caret_left_16__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__("./node_modules/@carbon/icons/es/caret--left/16.js"),_carbon_icons_es_caret_right_16__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__("./node_modules/@carbon/icons/es/caret--right/16.js"),_carbon_icons_es_caret_up_16__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__("./node_modules/@carbon/icons/es/caret--up/16.js"),_carbon_icons_es_checkmark_16__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark/16.js"),_carbon_icons_es_checkmark_filled_16__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark--filled/16.js"),_carbon_icons_es_checkmark_filled_20__WEBPACK_IMPORTED_MODULE_15__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark--filled/20.js"),_carbon_icons_es_checkmark_outline_16__WEBPACK_IMPORTED_MODULE_16__=__webpack_require__("./node_modules/@carbon/icons/es/checkmark--outline/16.js"),_carbon_icons_es_chevron_down_16__WEBPACK_IMPORTED_MODULE_17__=__webpack_require__("./node_modules/@carbon/icons/es/chevron--down/16.js"),_carbon_icons_es_chevron_right_16__WEBPACK_IMPORTED_MODULE_18__=__webpack_require__("./node_modules/@carbon/icons/es/chevron--right/16.js"),_carbon_icons_es_circle_dash_16__WEBPACK_IMPORTED_MODULE_19__=__webpack_require__("./node_modules/@carbon/icons/es/circle-dash/16.js"),_carbon_icons_es_close_16__WEBPACK_IMPORTED_MODULE_20__=__webpack_require__("./node_modules/@carbon/icons/es/close/16.js"),_carbon_icons_es_close_20__WEBPACK_IMPORTED_MODULE_21__=__webpack_require__("./node_modules/@carbon/icons/es/close/20.js"),_carbon_icons_es_copy_16__WEBPACK_IMPORTED_MODULE_22__=__webpack_require__("./node_modules/@carbon/icons/es/copy/16.js"),_carbon_icons_es_copy_20__WEBPACK_IMPORTED_MODULE_23__=__webpack_require__("./node_modules/@carbon/icons/es/copy/20.js"),_carbon_icons_es_data_2_16__WEBPACK_IMPORTED_MODULE_24__=__webpack_require__("./node_modules/@carbon/icons/es/data--2/16.js"),_carbon_icons_es_data_2_20__WEBPACK_IMPORTED_MODULE_25__=__webpack_require__("./node_modules/@carbon/icons/es/data--2/20.js"),_carbon_icons_es_document_16__WEBPACK_IMPORTED_MODULE_26__=__webpack_require__("./node_modules/@carbon/icons/es/document/16.js"),_carbon_icons_es_document_20__WEBPACK_IMPORTED_MODULE_27__=__webpack_require__("./node_modules/@carbon/icons/es/document/20.js"),_carbon_icons_es_download_16__WEBPACK_IMPORTED_MODULE_28__=__webpack_require__("./node_modules/@carbon/icons/es/download/16.js"),_carbon_icons_es_error_filled_16__WEBPACK_IMPORTED_MODULE_29__=__webpack_require__("./node_modules/@carbon/icons/es/error--filled/16.js"),_carbon_icons_es_error_filled_20__WEBPACK_IMPORTED_MODULE_30__=__webpack_require__("./node_modules/@carbon/icons/es/error--filled/20.js"),_carbon_icons_es_fade_16__WEBPACK_IMPORTED_MODULE_31__=__webpack_require__("./node_modules/@carbon/icons/es/fade/16.js"),_carbon_icons_es_fade_20__WEBPACK_IMPORTED_MODULE_32__=__webpack_require__("./node_modules/@carbon/icons/es/fade/20.js"),_carbon_icons_es_folder_16__WEBPACK_IMPORTED_MODULE_33__=__webpack_require__("./node_modules/@carbon/icons/es/folder/16.js"),_carbon_icons_es_incomplete_16__WEBPACK_IMPORTED_MODULE_34__=__webpack_require__("./node_modules/@carbon/icons/es/incomplete/16.js"),_carbon_icons_es_information_filled_16__WEBPACK_IMPORTED_MODULE_35__=__webpack_require__("./node_modules/@carbon/icons/es/information--filled/16.js"),_carbon_icons_es_information_filled_20__WEBPACK_IMPORTED_MODULE_36__=__webpack_require__("./node_modules/@carbon/icons/es/information--filled/20.js"),_carbon_icons_es_information_square_filled_20__WEBPACK_IMPORTED_MODULE_37__=__webpack_require__("./node_modules/@carbon/icons/es/information--square--filled/20.js"),_carbon_icons_es_menu_16__WEBPACK_IMPORTED_MODULE_38__=__webpack_require__("./node_modules/@carbon/icons/es/menu/16.js"),_carbon_icons_es_menu_20__WEBPACK_IMPORTED_MODULE_39__=__webpack_require__("./node_modules/@carbon/icons/es/menu/20.js"),_carbon_icons_es_overflow_menu_vertical_16__WEBPACK_IMPORTED_MODULE_40__=__webpack_require__("./node_modules/@carbon/icons/es/overflow-menu--vertical/16.js"),_carbon_icons_es_overflow_menu_horizontal_16__WEBPACK_IMPORTED_MODULE_41__=__webpack_require__("./node_modules/@carbon/icons/es/overflow-menu--horizontal/16.js"),_carbon_icons_es_save_16__WEBPACK_IMPORTED_MODULE_42__=__webpack_require__("./node_modules/@carbon/icons/es/save/16.js"),_carbon_icons_es_search_16__WEBPACK_IMPORTED_MODULE_43__=__webpack_require__("./node_modules/@carbon/icons/es/search/16.js"),_carbon_icons_es_settings_16__WEBPACK_IMPORTED_MODULE_44__=__webpack_require__("./node_modules/@carbon/icons/es/settings/16.js"),_carbon_icons_es_settings_adjust_16__WEBPACK_IMPORTED_MODULE_45__=__webpack_require__("./node_modules/@carbon/icons/es/settings--adjust/16.js"),_carbon_icons_es_subtract_16__WEBPACK_IMPORTED_MODULE_46__=__webpack_require__("./node_modules/@carbon/icons/es/subtract/16.js"),_carbon_icons_es_trash_can_16__WEBPACK_IMPORTED_MODULE_47__=__webpack_require__("./node_modules/@carbon/icons/es/trash-can/16.js"),_carbon_icons_es_warning_16__WEBPACK_IMPORTED_MODULE_48__=__webpack_require__("./node_modules/@carbon/icons/es/warning/16.js"),_carbon_icons_es_warning_filled_16__WEBPACK_IMPORTED_MODULE_49__=__webpack_require__("./node_modules/@carbon/icons/es/warning--filled/16.js"),_carbon_icons_es_warning_filled_20__WEBPACK_IMPORTED_MODULE_50__=__webpack_require__("./node_modules/@carbon/icons/es/warning--filled/20.js"),_carbon_icons_es_warning_alt_filled_16__WEBPACK_IMPORTED_MODULE_51__=__webpack_require__("./node_modules/@carbon/icons/es/warning--alt--filled/16.js"),_carbon_icons_es_warning_alt_filled_20__WEBPACK_IMPORTED_MODULE_52__=__webpack_require__("./node_modules/@carbon/icons/es/warning--alt--filled/20.js");const ICON_SERVICE_PROVIDER={provide:_icon_service__WEBPACK_IMPORTED_MODULE_1__.C6,deps:[[new _angular_core__WEBPACK_IMPORTED_MODULE_53__.Optional,new _angular_core__WEBPACK_IMPORTED_MODULE_53__.SkipSelf,_icon_service__WEBPACK_IMPORTED_MODULE_1__.C6]],useFactory:function ICON_SERVICE_PROVIDER_FACTORY(parentService){return parentService||new _icon_service__WEBPACK_IMPORTED_MODULE_1__.C6}};let IconModule=class IconModule{constructor(iconService){this.iconService=iconService,iconService.registerAll([_carbon_icons_es_add_16__WEBPACK_IMPORTED_MODULE_2__.Z,_carbon_icons_es_add_20__WEBPACK_IMPORTED_MODULE_3__.Z,_carbon_icons_es_bee_16__WEBPACK_IMPORTED_MODULE_4__.Z,_carbon_icons_es_bee_20__WEBPACK_IMPORTED_MODULE_5__.Z,_carbon_icons_es_calendar_16__WEBPACK_IMPORTED_MODULE_6__.Z,_carbon_icons_es_carbon_16__WEBPACK_IMPORTED_MODULE_7__.Z,_carbon_icons_es_carbon_20__WEBPACK_IMPORTED_MODULE_8__.Z,_carbon_icons_es_caret_down_16__WEBPACK_IMPORTED_MODULE_9__.Z,_carbon_icons_es_caret_left_16__WEBPACK_IMPORTED_MODULE_10__.Z,_carbon_icons_es_caret_right_16__WEBPACK_IMPORTED_MODULE_11__.Z,_carbon_icons_es_caret_up_16__WEBPACK_IMPORTED_MODULE_12__.Z,_carbon_icons_es_checkmark_16__WEBPACK_IMPORTED_MODULE_13__.Z,_carbon_icons_es_checkmark_filled_16__WEBPACK_IMPORTED_MODULE_14__.Z,_carbon_icons_es_checkmark_filled_20__WEBPACK_IMPORTED_MODULE_15__.Z,_carbon_icons_es_checkmark_outline_16__WEBPACK_IMPORTED_MODULE_16__.Z,_carbon_icons_es_chevron_down_16__WEBPACK_IMPORTED_MODULE_17__.Z,_carbon_icons_es_chevron_right_16__WEBPACK_IMPORTED_MODULE_18__.Z,_carbon_icons_es_circle_dash_16__WEBPACK_IMPORTED_MODULE_19__.Z,_carbon_icons_es_close_16__WEBPACK_IMPORTED_MODULE_20__.Z,_carbon_icons_es_close_20__WEBPACK_IMPORTED_MODULE_21__.Z,_carbon_icons_es_copy_16__WEBPACK_IMPORTED_MODULE_22__.Z,_carbon_icons_es_copy_20__WEBPACK_IMPORTED_MODULE_23__.Z,_carbon_icons_es_data_2_16__WEBPACK_IMPORTED_MODULE_24__.Z,_carbon_icons_es_data_2_20__WEBPACK_IMPORTED_MODULE_25__.Z,_carbon_icons_es_document_16__WEBPACK_IMPORTED_MODULE_26__.Z,_carbon_icons_es_document_20__WEBPACK_IMPORTED_MODULE_27__.Z,_carbon_icons_es_download_16__WEBPACK_IMPORTED_MODULE_28__.Z,_carbon_icons_es_error_filled_16__WEBPACK_IMPORTED_MODULE_29__.Z,_carbon_icons_es_error_filled_20__WEBPACK_IMPORTED_MODULE_30__.Z,_carbon_icons_es_fade_16__WEBPACK_IMPORTED_MODULE_31__.Z,_carbon_icons_es_fade_20__WEBPACK_IMPORTED_MODULE_32__.Z,_carbon_icons_es_folder_16__WEBPACK_IMPORTED_MODULE_33__.Z,_carbon_icons_es_incomplete_16__WEBPACK_IMPORTED_MODULE_34__.Z,_carbon_icons_es_information_filled_16__WEBPACK_IMPORTED_MODULE_35__.Z,_carbon_icons_es_information_filled_20__WEBPACK_IMPORTED_MODULE_36__.Z,_carbon_icons_es_information_square_filled_20__WEBPACK_IMPORTED_MODULE_37__.Z,_carbon_icons_es_menu_16__WEBPACK_IMPORTED_MODULE_38__.Z,_carbon_icons_es_menu_20__WEBPACK_IMPORTED_MODULE_39__.Z,_carbon_icons_es_overflow_menu_vertical_16__WEBPACK_IMPORTED_MODULE_40__.Z,_carbon_icons_es_overflow_menu_horizontal_16__WEBPACK_IMPORTED_MODULE_41__.Z,_carbon_icons_es_save_16__WEBPACK_IMPORTED_MODULE_42__.Z,_carbon_icons_es_search_16__WEBPACK_IMPORTED_MODULE_43__.Z,_carbon_icons_es_settings_16__WEBPACK_IMPORTED_MODULE_44__.Z,_carbon_icons_es_settings_adjust_16__WEBPACK_IMPORTED_MODULE_45__.Z,_carbon_icons_es_subtract_16__WEBPACK_IMPORTED_MODULE_46__.Z,_carbon_icons_es_trash_can_16__WEBPACK_IMPORTED_MODULE_47__.Z,_carbon_icons_es_warning_16__WEBPACK_IMPORTED_MODULE_48__.Z,_carbon_icons_es_warning_filled_16__WEBPACK_IMPORTED_MODULE_49__.Z,_carbon_icons_es_warning_filled_20__WEBPACK_IMPORTED_MODULE_50__.Z,_carbon_icons_es_warning_alt_filled_16__WEBPACK_IMPORTED_MODULE_51__.Z,_carbon_icons_es_warning_alt_filled_20__WEBPACK_IMPORTED_MODULE_52__.Z])}};IconModule.ctorParameters=()=>[{type:_icon_service__WEBPACK_IMPORTED_MODULE_1__.C6}],IconModule=(0,tslib__WEBPACK_IMPORTED_MODULE_54__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_53__.NgModule)({declarations:[_icon_directive__WEBPACK_IMPORTED_MODULE_0__.a],exports:[_icon_directive__WEBPACK_IMPORTED_MODULE_0__.a],imports:[_angular_common__WEBPACK_IMPORTED_MODULE_55__.CommonModule],providers:[ICON_SERVICE_PROVIDER]})],IconModule)},"./src/icon/icon.service.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{C6:()=>IconService});var tslib__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@carbon/icon-helpers/es/index.js");class IconNameNotFoundError extends Error{constructor(name){super(`Icon ${name} not found`)}}class IconSizeNotFoundError extends Error{constructor(size,name){super("Size ${size} for ${name} not found")}}class IconMemoryCache extends class IconCache{}{constructor(){super(...arguments),this.iconMap=new Map}get(name,size){if(!this.iconMap.has(name))throw new IconNameNotFoundError(name);const sizeMap=this.iconMap.get(name);if(!sizeMap.has(size))throw new IconSizeNotFoundError(size,name);return sizeMap.get(size)}set(name,size,descriptor){this.iconMap.has(name)||this.iconMap.set(name,new Map);this.iconMap.get(name).set(size,descriptor)}}let IconService=class IconService{constructor(){this.iconCache=new IconMemoryCache}registerAll(descriptors){descriptors.forEach((icon=>this.register(icon)))}register(descriptor){const{name}=descriptor;this.registerAs(name,descriptor)}registerAs(name,descriptor){const{size}=descriptor;this.iconCache.set(name,size.toString(),descriptor)}get(name,size){try{const icon=this.iconCache.get(name,size.toString());return icon.svg||(icon.svg=(0,_carbon_icon_helpers__WEBPACK_IMPORTED_MODULE_0__.BB)(icon)),icon}catch(e){throw e}}configure(options){this.iconCache=options.cache}};IconService=(0,tslib__WEBPACK_IMPORTED_MODULE_1__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)()],IconService)},"./src/icon/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{ar:()=>icon_directive.a,QX:()=>icon_module.QX,C6:()=>icon_service.C6});var icon_directive=__webpack_require__("./src/icon/icon.directive.ts"),icon_module=__webpack_require__("./src/icon/icon.module.ts"),icon_service=__webpack_require__("./src/icon/icon.service.ts")},"./src/layer/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{A:()=>LayerDirective,D:()=>LayerModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs");let LayerDirective=class LayerDirective{set ibmLayer(level){this.cdsLayer=level}set cdsLayer(level){"number"==typeof level&&(this._passedLevel=level,this.layer=level)}get cdsLayer(){return this._passedLevel}set layer(level){"number"==typeof level&&(this._level=Math.max(0,Math.min(level,2)),this.layerChildren&&this.layerChildren.forEach((layer=>{layer!==this&&(layer.layer="number"==typeof layer._passedLevel?layer._passedLevel:this.layer+1)})))}get layer(){return this._level}get layerOneClass(){return 0===this.layer}get layerTwoClass(){return 1===this.layer}get layerThreeClass(){return 2===this.layer}ngAfterContentInit(){"number"!=typeof this.cdsLayer&&(this.layer=1)}};LayerDirective.propDecorators={ibmLayer:[{type:core.Input}],cdsLayer:[{type:core.Input}],layerOneClass:[{type:core.HostBinding,args:["class.cds--layer-one"]}],layerTwoClass:[{type:core.HostBinding,args:["class.cds--layer-two"]}],layerThreeClass:[{type:core.HostBinding,args:["class.cds--layer-three"]}],layerChildren:[{type:core.ContentChildren,args:[LayerDirective,{descendants:!1}]}]},LayerDirective=(0,tslib_es6.gn)([(0,core.Directive)({selector:"[cdsLayer], [ibmLayer]",exportAs:"layer"})],LayerDirective);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let LayerModule=class LayerModule{};LayerModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[LayerDirective],exports:[LayerDirective],imports:[common.CommonModule]})],LayerModule)},"./src/search/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{o:()=>Search,t:()=>SearchModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),search_componentngResource=__webpack_require__("./src/search/search.component.html?ngResource"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),fesm2020_forms=__webpack_require__("./node_modules/@angular/forms/fesm2020/forms.mjs"),i18n=__webpack_require__("./src/i18n/index.ts");let Search=class Search{constructor(elementRef,i18n){this.elementRef=elementRef,this.i18n=i18n,this.theme="dark",this.size="md",this.disabled=!1,this.toolbar=!1,this.expandable=!1,this.skeleton=!1,this.active=!1,this.tableSearch=!1,this.id=`search-${Search.searchCount}`,this.value="",this.autocomplete="on",this.label=this.i18n.get().SEARCH.LABEL,this.placeholder=this.i18n.get().SEARCH.PLACEHOLDER,this.clearButtonTitle=this.i18n.get().SEARCH.CLEAR_BUTTON,this.searchTitle="",this.valueChange=new core.EventEmitter,this.open=new core.EventEmitter,this.clear=new core.EventEmitter,this.search=new core.EventEmitter,this.isComposing=!1,this.onTouched=()=>{},this.propagateChange=_=>{},Search.searchCount++}get containerClass(){return!(this.toolbar||this.expandable)}writeValue(value){this.value=value}registerOnChange(fn){this.propagateChange=fn}registerOnTouched(fn){this.onTouched=fn}onSearch(search){this.isComposing||(this.value=search,this.doValueChange())}onEnter(){this.search.emit(this.value)}clearSearch(){this.value="",this.clear.emit(),this.propagateChange(this.value)}doValueChange(){this.valueChange.emit(this.value),this.propagateChange(this.value)}openSearch(){this.active=!0,this.open.emit(this.active),setTimeout((()=>this.inputRef.nativeElement.focus()))}keyDown(event){(this.toolbar||this.expandable)&&("Escape"===event.key?""===this.value&&(this.active=!1,this.open.emit(this.active)):"Enter"===event.key&&this.openSearch()),"Escape"===event.key&&""!==this.value&&this.clearSearch()}focusOut(event){this.onTouched(),(this.expandable||this.toolbar)&&this.inputRef&&""===this.inputRef.nativeElement.value&&!this.elementRef.nativeElement.contains(event.relatedTarget)&&(this.active=!1,this.open.emit(this.active))}focusIn(event){this.onTouched(),!this.expandable&&!this.toolbar||!this.inputRef||event.relatedTarget||this.elementRef.nativeElement.contains(event.relatedTarget)||this.openSearch()}compositionStart(event){this.isComposing=!0}compositionEnd(event){this.isComposing=!1,this.onSearch(this.value+event.data)}};Search.searchCount=0,Search.ctorParameters=()=>[{type:core.ElementRef},{type:i18n.oc}],Search.propDecorators={containerClass:[{type:core.HostBinding,args:["class.cds--form-item"]}],theme:[{type:core.Input}],size:[{type:core.Input}],disabled:[{type:core.Input}],toolbar:[{type:core.Input}],expandable:[{type:core.Input}],skeleton:[{type:core.Input}],active:[{type:core.Input}],tableSearch:[{type:core.Input}],name:[{type:core.Input}],id:[{type:core.Input}],required:[{type:core.Input}],value:[{type:core.Input}],autocomplete:[{type:core.Input}],label:[{type:core.Input}],placeholder:[{type:core.Input}],clearButtonTitle:[{type:core.Input}],searchTitle:[{type:core.Input}],ariaLabel:[{type:core.Input}],valueChange:[{type:core.Output}],open:[{type:core.Output}],clear:[{type:core.Output}],search:[{type:core.Output}],inputRef:[{type:core.ViewChild,args:["input"]}],keyDown:[{type:core.HostListener,args:["keydown",["$event"]]}],focusOut:[{type:core.HostListener,args:["focusout",["$event"]]}],focusIn:[{type:core.HostListener,args:["focusin",["$event"]]}],compositionStart:[{type:core.HostListener,args:["compositionstart",["$event"]]}],compositionEnd:[{type:core.HostListener,args:["compositionend",["$event"]]}]},Search=(0,tslib_es6.gn)([(0,core.Component)({selector:"cds-search, ibm-search",template:search_componentngResource,providers:[{provide:fesm2020_forms.JU,useExisting:Search,multi:!0}]})],Search);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),icon=__webpack_require__("./src/icon/index.ts");let SearchModule=class SearchModule{};SearchModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[Search],exports:[Search],imports:[fesm2020_forms.u5,common.CommonModule,i18n.LU,icon.QX]})],SearchModule)},"./src/theme/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{E:()=>ThemeDirective,O:()=>ThemeModule});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),src_layer=__webpack_require__("./src/layer/index.ts");let ThemeDirective=class ThemeDirective{constructor(){this.cdsTheme="white",this.layerClass=!0}set ibmTheme(type){this.cdsTheme=type}get whiteThemeClass(){return"white"===this.cdsTheme||!this.cdsTheme}get g10ThemeClass(){return"g10"===this.cdsTheme}get g90ThemeClass(){return"g90"===this.cdsTheme}get g100ThemeClass(){return"g100"===this.cdsTheme}ngAfterContentChecked(){this.layerChildren.toArray().forEach((layer=>{"number"!=typeof layer.cdsLayer&&(layer.cdsLayer=1)}))}};ThemeDirective.propDecorators={ibmTheme:[{type:core.Input}],cdsTheme:[{type:core.Input}],layerChildren:[{type:core.ContentChildren,args:[src_layer.A,{descendants:!1}]}],whiteThemeClass:[{type:core.HostBinding,args:["class.cds--white"]}],g10ThemeClass:[{type:core.HostBinding,args:["class.cds--g10"]}],g90ThemeClass:[{type:core.HostBinding,args:["class.cds--g90"]}],g100ThemeClass:[{type:core.HostBinding,args:["class.cds--g100"]}],layerClass:[{type:core.HostBinding,args:["class.cds--layer-one"]}]},ThemeDirective=(0,tslib_es6.gn)([(0,core.Directive)({selector:"[cdsTheme], [ibmTheme]",exportAs:"theme"})],ThemeDirective);var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let ThemeModule=class ThemeModule{};ThemeModule=(0,tslib_es6.gn)([(0,core.NgModule)({declarations:[ThemeDirective],exports:[ThemeDirective],imports:[common.CommonModule,src_layer.D]})],ThemeModule)},"./src/ui-shell/ui-shell.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AngularRouting:()=>AngularRouting,Header:()=>Header,HeaderFluid:()=>HeaderFluid,HeaderWithRouter:()=>HeaderWithRouter,HeaderWithTemp:()=>HeaderWithTemp,SideNavigation:()=>SideNavigation,SideNavigationRail:()=>SideNavigationRail,SideNavigationRouter:()=>SideNavigationRouter,SideNavigationUseRouter:()=>SideNavigationUseRouter,SidePanel:()=>SidePanel,Together:()=>Together,WithModel:()=>WithModel,__namedExportsOrder:()=>__namedExportsOrder,default:()=>ui_shell_stories});var core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),router=__webpack_require__("./node_modules/@angular/router/fesm2020/router.mjs"),dist=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),search=__webpack_require__("./src/search/index.ts"),icon=__webpack_require__("./src/icon/index.ts"),theme=__webpack_require__("./src/theme/index.ts"),ui_shell=__webpack_require__("./src/ui-shell/index.ts"),tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");let BarComponent=class BarComponent{};BarComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"app-bar",template:"<h1>bar</h1>"})],BarComponent);let FooComponent=class FooComponent{};FooComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"app-foo",template:"<h1>foo</h1>"})],FooComponent);let HeaderFluidComponent=class HeaderFluidComponent{constructor(){this.hasHamburger=!1}};HeaderFluidComponent.propDecorators={headerItems:[{type:core.Input}]},HeaderFluidComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"app-header-fluid",template:'\n\t\t<cds-header name="[Platform]">\n\t\t\t<cds-hamburger\n\t\t\t\t(selected)="hasHamburger = !hasHamburger"\n\t\t\t\tclass="cds--header__menu-toggle__hidden"></cds-hamburger>\n\t\t\t<cds-header-navigation [navigationItems]="headerItems"></cds-header-navigation>\n\t\t\t<cds-sidenav\n\t\t\t\t*ngIf="hasHamburger"\n\t\t\t\t[navigationItems]="headerItems"\n\t\t\t\tclass="cds--header__menu-toggle__hidden"></cds-sidenav>\n\t\t</cds-header>\n\t'})],HeaderFluidComponent);const ui_shell_stories={title:"Components/UI Shell",decorators:[(0,dist.applicationConfig)({providers:[(0,core.importProvidersFrom)(router.Bz.forRoot([{path:"bar",component:BarComponent},{path:"foo",component:FooComponent}]))]}),(0,dist.moduleMetadata)({declarations:[BarComponent,FooComponent,HeaderFluidComponent],imports:[theme.O,ui_shell.p5,icon.QX,search.t,router.Bz]})],args:{theme:"white"},argTypes:{theme:{options:["white","g10","g90","g100"],control:"radio"}},parameters:{docs:{story:{height:"30rem"}}}},Header=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-header name="[Platform]">\n <cds-hamburger *ngIf="hasHamburger" (click)="expanded($event)"></cds-hamburger>\n <cds-header-navigation>\n <cds-header-item>Catalog</cds-header-item>\n <cds-header-item isCurrentPage="true">Docs</cds-header-item>\n <cds-header-item>Support</cds-header-item>\n <cds-header-menu title="Manage">\n <cds-header-item>Link 1</cds-header-item>\n <cds-header-item>Link 2</cds-header-item>\n <cds-header-item>Link 3</cds-header-item>\n </cds-header-menu>\n </cds-header-navigation>\n <cds-header-global>\n <cds-header-action description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n <cds-header-action description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n </cds-header-global>\n </cds-header>\n </div>\n '})).bind({});Header.args={hasHamburger:!0},Header.argTypes={expanded:{action:"Menu clicked!"}};const HeaderFluid=(args=>({props:args,template:'\n \x3c!--\n app-* components are for demo purposes only.\n You can create your own implementation by using the component source found at:\n https://github.com/IBM/carbon-components-angular/tree/master/src/ui-shell/stories/header-fluid.component.ts\n --\x3e\n <app-header-fluid [headerItems]="headerItems"></app-header-fluid>\n '})).bind({});HeaderFluid.storyName="Header fluid items to side navigation",HeaderFluid.args={headerItems:[{type:"item",content:"Catalog",title:"Catalog"},{type:"item",content:"Docs",isCurrentPage:!0},{type:"item",content:"Support"},{type:"menu",title:"Manage",menuItems:[{type:"item",content:"Link 1"},{type:"item",content:"Link 2"},{type:"item",content:"Link 3"}]}]},HeaderFluid.argTypes={headerItems:{control:!1},theme:{control:!1}};const HeaderWithTemp=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-header name="[Platform]" [brand]="brandTemplate">\n <cds-hamburger *ngIf="hasHamburger" (click)="expanded($event)"></cds-hamburger>\n <cds-header-navigation>\n <cds-header-item>Catalog</cds-header-item>\n <cds-header-item>Docs</cds-header-item>\n <cds-header-item>Support</cds-header-item>\n <cds-header-menu title="Manage">\n <cds-header-item>Link 1</cds-header-item>\n <cds-header-item>Link 2</cds-header-item>\n <cds-header-item>Link 3</cds-header-item>\n </cds-header-menu>\n </cds-header-navigation>\n <cds-header-global>\n <cds-header-action description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n <cds-header-action description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n </cds-header-global>\n </cds-header>\n </div>\n <ng-template #brandTemplate>\n <a class="cds--header__name">\n <svg cdsIcon="carbon" size="32" style="stroke:white;fill:white"></svg>\n <span class="cds--header__name--prefix">IBM</span>\n [Platform]\n </a>\n </ng-template>\n '})).bind({});HeaderWithTemp.storyName="Header with template",Header.args={hasHamburger:!0},Header.argTypes={expanded:{action:"Menu clicked!"}};const HeaderWithRouter=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-header name="[Platform]" [route]="[\'bar\']">\n <cds-header-navigation>\n <cds-header-item [route]="[\'foo\']">Catalog</cds-header-item>\n <cds-header-item [route]="[\'bar\']">Docs</cds-header-item>\n <cds-header-item [route]="[\'foo\']">Support</cds-header-item>\n <cds-header-menu title="Manage">\n <cds-header-item [route]="[\'foo\']">Link 1</cds-header-item>\n <cds-header-item [route]="[\'bar\']">Link 2</cds-header-item>\n <cds-header-item [route]="[\'foo\']">Link 3</cds-header-item>\n </cds-header-menu>\n </cds-header-navigation>\n </cds-header>\n </div>\n <div style="margin-top: 2rem">\n <router-outlet></router-outlet>\n </div>\n '})).bind({});Header.argTypes={expanded:{action:"Menu clicked!"}};const SideNavigation=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-sidenav>\n <cds-sidenav-item [active]="true">\n Link\n </cds-sidenav-item>\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n </div>\n '})).bind({});SideNavigation.args={options:[{content:"Option 1",value:1},{content:"Option 2",value:2},{content:"Option 3",value:3}]},SideNavigation.argTypes={options:{control:!1}};const SideNavigationRouter=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-sidenav>\n <cds-sidenav-item [route]="[\'foo\']">\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item [route]="[\'bar\']">\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item [route]="[\'foo\']">Link</cds-sidenav-item>\n <cds-sidenav-item [route]="[\'bar\']">Link</cds-sidenav-item>\n <cds-sidenav-item [route]="[\'foo\']">Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n </div>\n <div>\n <router-outlet></router-outlet>\n </div>\n '})).bind({});SideNavigationRouter.storyName="Side Navigation with router";const SideNavigationUseRouter=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-sidenav>\n <cds-sidenav-item [route]="[\'foo\']" [useRouter]="true">\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item [route]="[\'bar\']" [useRouter]="true">\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item [route]="[\'foo\']" [useRouter]="true">Link</cds-sidenav-item>\n <cds-sidenav-item [route]="[\'bar\']" [useRouter]="true">Link</cds-sidenav-item>\n <cds-sidenav-item [route]="[\'foo\']" [useRouter]="true">Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n </div>\n <div style="margin-left: 256px">\n <router-outlet></router-outlet>\n </div>\n '})).bind({});SideNavigationUseRouter.storyName="Side Navigation with useRouter";const SidePanel=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-panel expanded="true">\n <cds-switcher-list>\n <cds-switcher-list-item [route]="[\'foo\']">Switcher item one</cds-switcher-list-item>\n <cds-switcher-list-item [route]="[\'bar\']">Switcher item two</cds-switcher-list-item>\n <cds-switcher-list-item [route]="[\'foo\']">Switcher item three</cds-switcher-list-item>\n <cds-switcher-list-item [route]="[\'bar\']">Switcher item four</cds-switcher-list-item>\n </cds-switcher-list>\n </cds-panel>\n </div>\n <div>\n <router-outlet></router-outlet>\n </div>\n '})).bind({});SidePanel.storyName="Side Panel with router";const Together=(args=>({props:args,template:'\n <div>\n <cds-header name="[Platform]">\n <cds-hamburger *ngIf="hasHamburger" [active]="active" (selected)="active = !active"></cds-hamburger>\n <cds-header-navigation>\n <cds-header-item>Catalog</cds-header-item>\n <cds-header-item>Docs</cds-header-item>\n <cds-header-item>Support</cds-header-item>\n <cds-header-menu title="Manage">\n <cds-header-item>Link 1</cds-header-item>\n <cds-header-item>Link 2</cds-header-item>\n <cds-header-item>Link 3</cds-header-item>\n </cds-header-menu>\n </cds-header-navigation>\n <cds-header-global>\n <cds-header-action #firstAction description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n <cds-header-action [(active)]="secondAction" description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n </cds-header-global>\n </cds-header>\n <cds-sidenav [expanded]="active" style="margin-top: 3rem">\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" size="16"></svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item [active]="hasActiveChild">Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n <cds-panel [expanded]="firstAction.active"></cds-panel>\n <cds-panel [expanded]="secondAction">\n <cds-switcher-list>\n <cds-switcher-list-item active="true">Switcher item one</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item two</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item three</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item four</cds-switcher-list-item>\n </cds-switcher-list>\n </cds-panel>\n </div>\n '})).bind({});Together.args={hasHamburger:!0,active:!0,secondAction:!1,hasActiveChild:!0,options:[{content:"Option 1",value:1},{content:"Option 2",value:2},{content:"Option 3",value:3}]},Together.argTypes={options:{control:!1}};const SideNavigationRail=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-sidenav rail="true" [expanded]="false">\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n </div>\n '})).bind({});SideNavigationRail.args={options:[{content:"Option 1",value:1},{content:"Option 2",value:2},{content:"Option 3",value:3}]},SideNavigationRail.argTypes={options:{control:!1}};const WithModel=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-header name="[Platform]">\n <cds-hamburger *ngIf="hasHamburger" [active]="active" (selected)="active = !active"></cds-hamburger>\n <cds-header-navigation [navigationItems]="headerItems">\n </cds-header-navigation>\n <cds-header-global>\n <cds-header-action #firstAction description="action">\n <svg\n width="20"\n height="20"\n xmlns="http://www.w3.org/2000/svg"\n viewBox="0 0 32 32"\n aria-hidden="true">\n <path\n d="M8.24 25.14L7 26.67a14 14 0 0 0 4.18 2.44l.68-1.88a12\n 12 0 0 1-3.62-2.09zm-4.05-7.07l-2 .35A13.89 13.89 0 0 0 3.86\n 23l1.73-1a11.9 11.9 0 0 1-1.4-3.93zm7.63-13.31l-.68-1.88A14\n 14 0 0 0 7 5.33l1.24 1.53a12 12 0 0 1 3.58-2.1zM5.59\n 10L3.86 9a13.89 13.89 0 0 0-1.64 4.54l2 .35A11.9 11.9 0 0 1 5.59\n 10zM16 2v2a12 12 0 0 1 0 24v2a14 14 0 0 0 0-28z" />\n </svg>\n </cds-header-action>\n <cds-header-action #secondAction description="action">\n <svg\n width="20"\n height="20"\n xmlns="http://www.w3.org/2000/svg"\n viewBox="0 0 32 32"\n aria-hidden="true">\n <path\n d="M8.24 25.14L7 26.67a14 14 0 0 0 4.18 2.44l.68-1.88a12\n 12 0 0 1-3.62-2.09zm-4.05-7.07l-2 .35A13.89 13.89 0 0 0 3.86\n 23l1.73-1a11.9 11.9 0 0 1-1.4-3.93zm7.63-13.31l-.68-1.88A14\n 14 0 0 0 7 5.33l1.24 1.53a12 12 0 0 1 3.58-2.1zM5.59\n 10L3.86 9a13.89 13.89 0 0 0-1.64 4.54l2 .35A11.9 11.9 0 0 1 5.59\n 10zM16 2v2a12 12 0 0 1 0 24v2a14 14 0 0 0 0-28z" />\n </svg>\n </cds-header-action>\n </cds-header-global>\n </cds-header>\n <cds-sidenav [navigationItems]="headerItems" style="margin-top: 3rem">\n <cds-sidenav-menu title="Category title">\n <svg icon width="20" height="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" aria-hidden="true">\n <path\n d="M8.24 25.14L7 26.67a14 14 0 0 0 4.18 2.44l.68-1.88a12\n 12 0 0 1-3.62-2.09zm-4.05-7.07l-2 .35A13.89 13.89 0 0 0 3.86\n 23l1.73-1a11.9 11.9 0 0 1-1.4-3.93zm7.63-13.31l-.68-1.88A14\n 14 0 0 0 7 5.33l1.24 1.53a12 12 0 0 1 3.58-2.1zM5.59\n 10L3.86 9a13.89 13.89 0 0 0-1.64 4.54l2 .35A11.9 11.9 0 0 1 5.59\n 10zM16 2v2a12 12 0 0 1 0 24v2a14 14 0 0 0 0-28z" />\n </svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n <cds-panel [expanded]="firstAction.active"></cds-panel>\n <cds-panel [expanded]="secondAction.active">\n <cds-switcher-list>\n <cds-switcher-list-item active="true">Switcher item one</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item two</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item three</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item four</cds-switcher-list-item>\n </cds-switcher-list>\n </cds-panel>\n </div>\n <router-outlet></router-outlet>\n '})).bind({});SideNavigationRail.args={options:[{content:"Option 1",value:1},{content:"Option 2",value:2},{content:"Option 3",value:3}],headerItems:[{type:"item",route:["foo"],content:"Catalog"},{type:"item",route:["bar"],content:"Docs"},{type:"item",route:["foo"],content:"Support"},{type:"menu",title:"Manage",trigger:"click",menuItems:[{type:"item",route:["foo"],content:"Link 1"},{type:"item",route:["bar"],content:"Link 2"}]}]},SideNavigationRail.argTypes={options:{control:!1},headerItems:{control:!1}};const AngularRouting=(args=>({props:args,template:'\n <div [cdsTheme]="theme">\n <cds-sidenav rail="true" [expanded]="false">\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n <div>\n '})).bind({});AngularRouting.storyName="Use angular router attributes for routing",Header.parameters={...Header.parameters,docs:{...Header.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-header name="[Platform]">\n <cds-hamburger *ngIf="hasHamburger" (click)="expanded($event)"></cds-hamburger>\n <cds-header-navigation>\n <cds-header-item>Catalog</cds-header-item>\n <cds-header-item isCurrentPage="true">Docs</cds-header-item>\n <cds-header-item>Support</cds-header-item>\n <cds-header-menu title="Manage">\n <cds-header-item>Link 1</cds-header-item>\n <cds-header-item>Link 2</cds-header-item>\n <cds-header-item>Link 3</cds-header-item>\n </cds-header-menu>\n </cds-header-navigation>\n <cds-header-global>\n <cds-header-action description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n <cds-header-action description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n </cds-header-global>\n </cds-header>\n </div>\n `\n})',...Header.parameters?.docs?.source}}},HeaderFluid.parameters={...HeaderFluid.parameters,docs:{...HeaderFluid.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n \x3c!--\n app-* components are for demo purposes only.\n You can create your own implementation by using the component source found at:\n https://github.com/IBM/carbon-components-angular/tree/master/src/ui-shell/stories/header-fluid.component.ts\n --\x3e\n <app-header-fluid [headerItems]="headerItems"></app-header-fluid>\n `\n})',...HeaderFluid.parameters?.docs?.source}}},HeaderWithTemp.parameters={...HeaderWithTemp.parameters,docs:{...HeaderWithTemp.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-header name="[Platform]" [brand]="brandTemplate">\n <cds-hamburger *ngIf="hasHamburger" (click)="expanded($event)"></cds-hamburger>\n <cds-header-navigation>\n <cds-header-item>Catalog</cds-header-item>\n <cds-header-item>Docs</cds-header-item>\n <cds-header-item>Support</cds-header-item>\n <cds-header-menu title="Manage">\n <cds-header-item>Link 1</cds-header-item>\n <cds-header-item>Link 2</cds-header-item>\n <cds-header-item>Link 3</cds-header-item>\n </cds-header-menu>\n </cds-header-navigation>\n <cds-header-global>\n <cds-header-action description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n <cds-header-action description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n </cds-header-global>\n </cds-header>\n </div>\n <ng-template #brandTemplate>\n <a class="cds--header__name">\n <svg cdsIcon="carbon" size="32" style="stroke:white;fill:white"></svg>\n <span class="cds--header__name--prefix">IBM</span>\n [Platform]\n </a>\n </ng-template>\n `\n})',...HeaderWithTemp.parameters?.docs?.source}}},HeaderWithRouter.parameters={...HeaderWithRouter.parameters,docs:{...HeaderWithRouter.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-header name="[Platform]" [route]="[\'bar\']">\n <cds-header-navigation>\n <cds-header-item [route]="[\'foo\']">Catalog</cds-header-item>\n <cds-header-item [route]="[\'bar\']">Docs</cds-header-item>\n <cds-header-item [route]="[\'foo\']">Support</cds-header-item>\n <cds-header-menu title="Manage">\n <cds-header-item [route]="[\'foo\']">Link 1</cds-header-item>\n <cds-header-item [route]="[\'bar\']">Link 2</cds-header-item>\n <cds-header-item [route]="[\'foo\']">Link 3</cds-header-item>\n </cds-header-menu>\n </cds-header-navigation>\n </cds-header>\n </div>\n <div style="margin-top: 2rem">\n <router-outlet></router-outlet>\n </div>\n `\n})',...HeaderWithRouter.parameters?.docs?.source}}},SideNavigation.parameters={...SideNavigation.parameters,docs:{...SideNavigation.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-sidenav>\n <cds-sidenav-item [active]="true">\n Link\n </cds-sidenav-item>\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n </div>\n `\n})',...SideNavigation.parameters?.docs?.source}}},SideNavigationRouter.parameters={...SideNavigationRouter.parameters,docs:{...SideNavigationRouter.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-sidenav>\n <cds-sidenav-item [route]="[\'foo\']">\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item [route]="[\'bar\']">\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item [route]="[\'foo\']">Link</cds-sidenav-item>\n <cds-sidenav-item [route]="[\'bar\']">Link</cds-sidenav-item>\n <cds-sidenav-item [route]="[\'foo\']">Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n </div>\n <div>\n <router-outlet></router-outlet>\n </div>\n `\n})',...SideNavigationRouter.parameters?.docs?.source}}},SideNavigationUseRouter.parameters={...SideNavigationUseRouter.parameters,docs:{...SideNavigationUseRouter.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-sidenav>\n <cds-sidenav-item [route]="[\'foo\']" [useRouter]="true">\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item [route]="[\'bar\']" [useRouter]="true">\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item [route]="[\'foo\']" [useRouter]="true">Link</cds-sidenav-item>\n <cds-sidenav-item [route]="[\'bar\']" [useRouter]="true">Link</cds-sidenav-item>\n <cds-sidenav-item [route]="[\'foo\']" [useRouter]="true">Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n </div>\n <div style="margin-left: 256px">\n <router-outlet></router-outlet>\n </div>\n `\n})',...SideNavigationUseRouter.parameters?.docs?.source}}},SidePanel.parameters={...SidePanel.parameters,docs:{...SidePanel.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-panel expanded="true">\n <cds-switcher-list>\n <cds-switcher-list-item [route]="[\'foo\']">Switcher item one</cds-switcher-list-item>\n <cds-switcher-list-item [route]="[\'bar\']">Switcher item two</cds-switcher-list-item>\n <cds-switcher-list-item [route]="[\'foo\']">Switcher item three</cds-switcher-list-item>\n <cds-switcher-list-item [route]="[\'bar\']">Switcher item four</cds-switcher-list-item>\n </cds-switcher-list>\n </cds-panel>\n </div>\n <div>\n <router-outlet></router-outlet>\n </div>\n `\n})',...SidePanel.parameters?.docs?.source}}},Together.parameters={...Together.parameters,docs:{...Together.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div>\n <cds-header name="[Platform]">\n <cds-hamburger *ngIf="hasHamburger" [active]="active" (selected)="active = !active"></cds-hamburger>\n <cds-header-navigation>\n <cds-header-item>Catalog</cds-header-item>\n <cds-header-item>Docs</cds-header-item>\n <cds-header-item>Support</cds-header-item>\n <cds-header-menu title="Manage">\n <cds-header-item>Link 1</cds-header-item>\n <cds-header-item>Link 2</cds-header-item>\n <cds-header-item>Link 3</cds-header-item>\n </cds-header-menu>\n </cds-header-navigation>\n <cds-header-global>\n <cds-header-action #firstAction description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n <cds-header-action [(active)]="secondAction" description="action">\n <svg cdsIcon="fade" size="20"></svg>\n </cds-header-action>\n </cds-header-global>\n </cds-header>\n <cds-sidenav [expanded]="active" style="margin-top: 3rem">\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" size="16"></svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item [active]="hasActiveChild">Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n <cds-panel [expanded]="firstAction.active"></cds-panel>\n <cds-panel [expanded]="secondAction">\n <cds-switcher-list>\n <cds-switcher-list-item active="true">Switcher item one</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item two</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item three</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item four</cds-switcher-list-item>\n </cds-switcher-list>\n </cds-panel>\n </div>\n `\n})',...Together.parameters?.docs?.source}}},SideNavigationRail.parameters={...SideNavigationRail.parameters,docs:{...SideNavigationRail.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-sidenav rail="true" [expanded]="false">\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n </div>\n `\n})',...SideNavigationRail.parameters?.docs?.source}}},WithModel.parameters={...WithModel.parameters,docs:{...WithModel.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-header name="[Platform]">\n <cds-hamburger *ngIf="hasHamburger" [active]="active" (selected)="active = !active"></cds-hamburger>\n <cds-header-navigation [navigationItems]="headerItems">\n </cds-header-navigation>\n <cds-header-global>\n <cds-header-action #firstAction description="action">\n <svg\n width="20"\n height="20"\n xmlns="http://www.w3.org/2000/svg"\n viewBox="0 0 32 32"\n aria-hidden="true">\n <path\n d="M8.24 25.14L7 26.67a14 14 0 0 0 4.18 2.44l.68-1.88a12\n 12 0 0 1-3.62-2.09zm-4.05-7.07l-2 .35A13.89 13.89 0 0 0 3.86\n 23l1.73-1a11.9 11.9 0 0 1-1.4-3.93zm7.63-13.31l-.68-1.88A14\n 14 0 0 0 7 5.33l1.24 1.53a12 12 0 0 1 3.58-2.1zM5.59\n 10L3.86 9a13.89 13.89 0 0 0-1.64 4.54l2 .35A11.9 11.9 0 0 1 5.59\n 10zM16 2v2a12 12 0 0 1 0 24v2a14 14 0 0 0 0-28z" />\n </svg>\n </cds-header-action>\n <cds-header-action #secondAction description="action">\n <svg\n width="20"\n height="20"\n xmlns="http://www.w3.org/2000/svg"\n viewBox="0 0 32 32"\n aria-hidden="true">\n <path\n d="M8.24 25.14L7 26.67a14 14 0 0 0 4.18 2.44l.68-1.88a12\n 12 0 0 1-3.62-2.09zm-4.05-7.07l-2 .35A13.89 13.89 0 0 0 3.86\n 23l1.73-1a11.9 11.9 0 0 1-1.4-3.93zm7.63-13.31l-.68-1.88A14\n 14 0 0 0 7 5.33l1.24 1.53a12 12 0 0 1 3.58-2.1zM5.59\n 10L3.86 9a13.89 13.89 0 0 0-1.64 4.54l2 .35A11.9 11.9 0 0 1 5.59\n 10zM16 2v2a12 12 0 0 1 0 24v2a14 14 0 0 0 0-28z" />\n </svg>\n </cds-header-action>\n </cds-header-global>\n </cds-header>\n <cds-sidenav [navigationItems]="headerItems" style="margin-top: 3rem">\n <cds-sidenav-menu title="Category title">\n <svg icon width="20" height="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" aria-hidden="true">\n <path\n d="M8.24 25.14L7 26.67a14 14 0 0 0 4.18 2.44l.68-1.88a12\n 12 0 0 1-3.62-2.09zm-4.05-7.07l-2 .35A13.89 13.89 0 0 0 3.86\n 23l1.73-1a11.9 11.9 0 0 1-1.4-3.93zm7.63-13.31l-.68-1.88A14\n 14 0 0 0 7 5.33l1.24 1.53a12 12 0 0 1 3.58-2.1zM5.59\n 10L3.86 9a13.89 13.89 0 0 0-1.64 4.54l2 .35A11.9 11.9 0 0 1 5.59\n 10zM16 2v2a12 12 0 0 1 0 24v2a14 14 0 0 0 0-28z" />\n </svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n <cds-panel [expanded]="firstAction.active"></cds-panel>\n <cds-panel [expanded]="secondAction.active">\n <cds-switcher-list>\n <cds-switcher-list-item active="true">Switcher item one</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item two</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item three</cds-switcher-list-item>\n <cds-switcher-list-item>Switcher item four</cds-switcher-list-item>\n </cds-switcher-list>\n </cds-panel>\n </div>\n <router-outlet></router-outlet>\n `\n})',...WithModel.parameters?.docs?.source}}},AngularRouting.parameters={...AngularRouting.parameters,docs:{...AngularRouting.parameters?.docs,source:{originalSource:'args => ({\n props: args,\n template: `\n <div [cdsTheme]="theme">\n <cds-sidenav rail="true" [expanded]="false">\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-item>\n <svg cdsIcon="fade" size="16"></svg>\n Link\n </cds-sidenav-item>\n <cds-sidenav-menu title="Category title">\n <svg cdsIcon="fade" icon size="16"></svg>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n <cds-sidenav-item>Link</cds-sidenav-item>\n </cds-sidenav-menu>\n </cds-sidenav>\n <div>\n `\n})',...AngularRouting.parameters?.docs?.source}}};const __namedExportsOrder=["Header","HeaderFluid","HeaderWithTemp","HeaderWithRouter","SideNavigation","SideNavigationRouter","SideNavigationUseRouter","SidePanel","Together","SideNavigationRail","WithModel","AngularRouting"]},"./src/search/search.component.html?ngResource":module=>{module.exports='<div\n\tclass="cds--search"\n\t[ngClass]="{\n\t\t\'cds--search--sm\': size === \'sm\',\n\t\t\'cds--search--md\': size === \'md\',\n\t\t\'cds--search--lg\': size === \'lg\',\n\t\t\'cds--search--light\': theme === \'light\',\n\t\t\'cds--skeleton\': skeleton,\n\t\t\'cds--search--expandable\': expandable && !tableSearch,\n\t\t\'cds--search--expanded\': expandable && !tableSearch && active,\n\t\t\'cds--toolbar-search\': toolbar && !expandable,\n\t\t\'cds--toolbar-search--active\': toolbar && !expandable && active,\n\t\t\'cds--toolbar-search-container-persistent\': tableSearch && !expandable,\n\t\t\'cds--toolbar-search-container-expandable\': tableSearch && expandable,\n\t\t\'cds--toolbar-search-container-active\': tableSearch && expandable && active\n\t}"\n\trole="search"\n\t[attr.aria-label]="ariaLabel"\n\t(click)="openSearch()">\n\t<label class="cds--label" [for]="id">{{label}}</label>\n\n\t<div *ngIf="skeleton; else enableInput" class="cds--search-input"></div>\n\t<ng-template #enableInput>\n\t\t<input\n\t\t\t#input\n\t\t\tclass="cds--search-input"\n\t\t\t[type]="tableSearch || !toolbar ? \'text\' : \'search\'"\n\t\t\t[id]="id"\n\t\t\t[value]="value"\n\t\t\t[autocomplete]="autocomplete"\n\t\t\t[placeholder]="placeholder"\n\t\t\t[disabled]="disabled"\n\t\t\t[required]="required"\n\t\t\t(input)="onSearch($event.target.value)"\n\t\t\t(keyup.enter)="onEnter()"/>\n\t\t<button\n\t\t\t*ngIf="!tableSearch && toolbar"\n\t\t\tclass="cds--toolbar-search__btn"\n\t\t\t(click)="openSearch()"\n\t\t\taria-label="Open search">\n\t\t\t<svg cdsIcon="search" size="16" class="cds--search-magnifier-icon"></svg>\n\t\t</button>\n\t\t<svg\n\t\t\tcdsIcon="search"\n\t\t\t*ngIf="tableSearch || !toolbar"\n\t\t\tclass="cds--search-magnifier-icon"\n\t\t\tsize="16">\n\t\t</svg>\n\t</ng-template>\n\n\t<button\n\t\t*ngIf="tableSearch || !toolbar"\n\t\tclass="cds--search-close"\n\t\t[ngClass]="{\n\t\t\t\'cds--search-close--hidden\': !value || value.length === 0\n\t\t}"\n\t\t[title]="clearButtonTitle"\n\t\t(click)="clearSearch()">\n\t\t<span class="cds--visually-hidden">{{ clearButtonTitle }}</span>\n\t\t<svg cdsIcon="close" size="16"></svg>\n\t</button>\n</div>\n'}}]);
@@ -112,18 +112,11 @@ export class DatePicker {
112
112
  // This makes sure that the `flatpickrInstance selectedDates` are in sync with the values of
113
113
  // the inputs when the calendar closes.
114
114
  if (this.range && this.flatpickrInstance) {
115
- if (this.flatpickrInstance.selectedDates.length !== 2) {
116
- // we could `this.flatpickrInstance.clear()` but it insists on opening the second picker
117
- // in some cases, so instead we do this
118
- this.setDateValues([]);
119
- this.doSelect([]);
120
- return;
121
- }
122
115
  const inputValue = this.input.input.nativeElement.value;
123
116
  const rangeInputValue = this.rangeInput.input.nativeElement.value;
124
117
  if (inputValue || rangeInputValue) {
125
118
  const parseDate = (date) => this.flatpickrInstance.parseDate(date, this.dateFormat);
126
- this.setDateValues([parseDate(inputValue), parseDate(rangeInputValue)]);
119
+ this.setDateValues([parseDate(inputValue), parseDate(rangeInputValue || inputValue)]);
127
120
  this.doSelect(this.flatpickrInstance.selectedDates);
128
121
  }
129
122
  }
@@ -729,4 +722,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
729
722
  type: HostListener,
730
723
  args: ["focusout"]
731
724
  }] } });
732
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUdqQixZQUFZLEVBTVosU0FBUyxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sV0FBVyxNQUFNLG9DQUFvQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRixPQUFPLEtBQUssU0FBUyxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUt2RDs7Ozs7OztHQU9HO0FBQ0gsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUU7SUFDOUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQXNCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUgsSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7Q0FDSDtBQUVEOzs7Ozs7OztHQVFHO0FBb0VILE1BQU0sT0FBTyxVQUFVO0lBa0x0QixZQUNXLFVBQXNCLEVBQ3RCLElBQVU7UUFEVixlQUFVLEdBQVYs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O2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQWlCZ0MsS0FBSztzQkFBMUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNYLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFFYixXQUFXO3NCQUFwQixNQUFNO2dCQU1HLE9BQU87c0JBQWhCLE1BQU07Z0JBd0dQLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxTQUFTO2dCQWdCdkIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0Vmlld0VuY2Fwc3VsYXRpb24sXG5cdEVsZW1lbnRSZWYsXG5cdE9uRGVzdHJveSxcblx0SG9zdExpc3RlbmVyLFxuXHRUZW1wbGF0ZVJlZixcblx0T25DaGFuZ2VzLFxuXHRTaW1wbGVDaGFuZ2VzLFxuXHRBZnRlclZpZXdDaGVja2VkLFxuXHRBZnRlclZpZXdJbml0LFxuXHRWaWV3Q2hpbGQsXG5cdE9uSW5pdCxcblx0U2ltcGxlQ2hhbmdlXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgcmFuZ2VQbHVnaW4gZnJvbSBcImZsYXRwaWNrci9kaXN0L3BsdWdpbnMvcmFuZ2VQbHVnaW5cIjtcbmltcG9ydCBmbGF0cGlja3IgZnJvbSBcImZsYXRwaWNrclwiO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IGNhcmJvbkZsYXRwaWNrck1vbnRoU2VsZWN0UGx1Z2luIH0gZnJvbSBcIi4vY2FyYm9uLWZsYXRwaWNrci1tb250aC1zZWxlY3RcIjtcbmltcG9ydCAqIGFzIGxhbmd1YWdlcyBmcm9tIFwiZmxhdHBpY2tyL2Rpc3QvbDEwbi9pbmRleFwiO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gXCJmbGF0cGlja3IvZGlzdC90eXBlcy9vcHRpb25zXCI7XG5pbXBvcnQgeyBEYXRlUGlja2VySW5wdXQgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9kYXRlcGlja2VyLWlucHV0XCI7XG5pbXBvcnQgeyBJMThuIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuXG4vKipcbiAqIER1ZSB0byB0eXBlIGVycm9yLCB3ZSBoYXZlIHRvIHVzZSBzcXVhcmUgYnJhY2tldHMgcHJvcGVydHkgYWNjZXNzb3JcbiAqIFRoZXJlIGlzIGEgd2VicGFjayBpc3N1ZSB3aGVuIGF0dGVtcHRpbmcgdG8gYWNjZXNzIGV4cG9ydGVkIGxhbmd1YWdlcyBmcm9tIGZsYXRwaWNrciBsMTBuIEFuZ3VsYXIgMTQrIGFwcHNcbiAqIGxhbmd1YWdlcy5kZWZhdWx0W2xvY2FsZV0gZmFpbHMgaW4gYXBwIGNvbnN1bWluZyBDQ0EgbGlicmFyeSBidXQgcGFzc2VzIGluIHRlc3RcbiAqIGxhbmd1YWdlcy5kZWZhdWx0LmRlZmF1bHRbbG9jYWxlXSBmYWlscyBpbiB0ZXN0IGJ1dCB3b3JrcyBpbiBhcHAgY29uc3VtaW5nIENDQSBsaWJyYXJ5LlxuICpcbiAqIFRvIHBsZWFzZSBib3RoIHNjZW5hcmlvcywgd2UgYXJlIGFkZGluZyBhIGNvbmRpdGlvbiB0byBwcmV2ZW50IHRlc3RzIGZyb20gZmFpbGluZ1xuICovXG5pZiAobGFuZ3VhZ2VzLmRlZmF1bHQ/LmRlZmF1bHRbXCJlblwiXT8ud2Vla2RheXMpIHtcblx0KGxhbmd1YWdlcy5kZWZhdWx0LmRlZmF1bHRbXCJlblwiXS53ZWVrZGF5cy5zaG9ydGhhbmQgYXMgc3RyaW5nW10pID0gbGFuZ3VhZ2VzLmRlZmF1bHQuZGVmYXVsdFtcImVuXCJdLndlZWtkYXlzLmxvbmdoYW5kLm1hcChkYXkgPT4ge1xuXHRcdGlmIChkYXkgPT09IFwiVGh1cnNkYXlcIikge1xuXHRcdFx0cmV0dXJuIFwiVGhcIjtcblx0XHR9XG5cdFx0cmV0dXJuIGRheS5jaGFyQXQoMCk7XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldCBzdGFydGVkIHdpdGggaW1wb3J0aW5nIHRoZSBtb2R1bGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgRGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuICogYGBgXG4gKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3RvcnkvY29tcG9uZW50cy1kYXRlLXBpY2tlci0tc2luZ2xlKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLWRhdGUtcGlja2VyLCBpYm0tZGF0ZS1waWNrZXJcIixcblx0dGVtcGxhdGU6IGBcblx0PGRpdiBjbGFzcz1cImNkcy0tZm9ybS1pdGVtXCI+XG5cdFx0PGRpdlxuXHRcdFx0Y2xhc3M9XCJjZHMtLWRhdGUtcGlja2VyXCJcblx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdFx0J2Nkcy0tZGF0ZS1waWNrZXItLXJhbmdlJyA6IHJhbmdlLFxuXHRcdFx0XHQnY2RzLS1kYXRlLXBpY2tlci0tc2luZ2xlJyA6ICFyYW5nZSxcblx0XHRcdFx0J2Nkcy0tZGF0ZS1waWNrZXItLWxpZ2h0JyA6IHRoZW1lID09PSAnbGlnaHQnLFxuXHRcdFx0XHQnY2RzLS1za2VsZXRvbicgOiBza2VsZXRvblxuXHRcdFx0fVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG5cdFx0XHRcdDxjZHMtZGF0ZS1waWNrZXItaW5wdXRcblx0XHRcdFx0XHQjaW5wdXRcblx0XHRcdFx0XHRbbGFiZWxdPVwibGFiZWxcIlxuXHRcdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG5cdFx0XHRcdFx0W3BhdHRlcm5dPVwiaW5wdXRQYXR0ZXJuXCJcblx0XHRcdFx0XHRbaWRdPVwiaWQgKyAnLWlucHV0J1wiXG5cdFx0XHRcdFx0W3NpemVdPVwic2l6ZVwiXG5cdFx0XHRcdFx0W3R5cGVdPVwiKHJhbmdlID8gJ3JhbmdlJyA6ICdzaW5nbGUnKVwiXG5cdFx0XHRcdFx0W2hhc0ljb25dPVwiKHJhbmdlID8gZmFsc2UgOiB0cnVlKVwiXG5cdFx0XHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0XHRcdFx0XHRbaW52YWxpZF09XCJpbnZhbGlkXCJcblx0XHRcdFx0XHRbaW52YWxpZFRleHRdPVwiaW52YWxpZFRleHRcIlxuXHRcdFx0XHRcdFt3YXJuXT1cIndhcm5cIlxuXHRcdFx0XHRcdFt3YXJuVGV4dF09XCJ3YXJuVGV4dFwiXG5cdFx0XHRcdFx0W3NrZWxldG9uXT1cInNrZWxldG9uXCJcblx0XHRcdFx0XHRbaGVscGVyVGV4dF09XCJoZWxwZXJUZXh0XCJcblx0XHRcdFx0XHQodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcblx0XHRcdFx0XHQoY2xpY2spPVwib3BlbkNhbGVuZGFyKGlucHV0KVwiPlxuXHRcdFx0XHQ8L2Nkcy1kYXRlLXBpY2tlci1pbnB1dD5cblx0XHRcdDwvZGl2PlxuXG5cdFx0XHQ8ZGl2ICpuZ0lmPVwicmFuZ2VcIiBjbGFzcz1cImNkcy0tZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG5cdFx0XHRcdDxjZHMtZGF0ZS1waWNrZXItaW5wdXRcblx0XHRcdFx0XHQjcmFuZ2VJbnB1dFxuXHRcdFx0XHRcdFtsYWJlbF09XCJyYW5nZUxhYmVsXCJcblx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuXHRcdFx0XHRcdFtwYXR0ZXJuXT1cImlucHV0UGF0dGVyblwiXG5cdFx0XHRcdFx0W2lkXT1cImlkICsgJy1yYW5nZUlucHV0J1wiXG5cdFx0XHRcdFx0W3NpemVdPVwic2l6ZVwiXG5cdFx0XHRcdFx0W3R5cGVdPVwiKHJhbmdlID8gJ3JhbmdlJyA6ICdzaW5nbGUnKVwiXG5cdFx0XHRcdFx0W2hhc0ljb25dPVwiKHJhbmdlID8gdHJ1ZSA6IG51bGwpXCJcblx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdFx0XHRcdFtpbnZhbGlkXT1cInJhbmdlSW52YWxpZFwiXG5cdFx0XHRcdFx0W2ludmFsaWRUZXh0XT1cInJhbmdlSW52YWxpZFRleHRcIlxuXHRcdFx0XHRcdFt3YXJuXT1cInJhbmdlV2FyblwiXG5cdFx0XHRcdFx0W3dhcm5UZXh0XT1cInJhbmdlV2FyblRleHRcIlxuXHRcdFx0XHRcdFtza2VsZXRvbl09XCJza2VsZXRvblwiXG5cdFx0XHRcdFx0W2hlbHBlclRleHRdPVwicmFuZ2VIZWxwZXJUZXh0XCJcblx0XHRcdFx0XHQodmFsdWVDaGFuZ2UpPVwib25SYW5nZVZhbHVlQ2hhbmdlKCRldmVudClcIlxuXHRcdFx0XHRcdChjbGljayk9XCJvcGVuQ2FsZW5kYXIocmFuZ2VJbnB1dClcIj5cblx0XHRcdFx0PC9jZHMtZGF0ZS1waWNrZXItaW5wdXQ+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdGAsXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHRcdFx0dXNlRXhpc3Rpbmc6IERhdGVQaWNrZXIsXG5cdFx0XHRtdWx0aTogdHJ1ZVxuXHRcdH1cblx0XSxcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyIGltcGxlbWVudHNcblx0T25Jbml0LFxuXHRPbkRlc3Ryb3ksXG5cdE9uQ2hhbmdlcyxcblx0QWZ0ZXJWaWV3Q2hlY2tlZCxcblx0QWZ0ZXJWaWV3SW5pdCB7XG5cdHByaXZhdGUgc3RhdGljIGRhdGVQaWNrZXJDb3VudCA9IDA7XG5cblx0LyoqXG5cdCAqIFNlbGVjdCBjYWxlbmRhciByYW5nZSBtb2RlXG5cdCAqL1xuXHRASW5wdXQoKSByYW5nZSA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBGb3JtYXQgb2YgZGF0ZVxuXHQgKlxuXHQgKiBGb3IgcmVmZXJlbmNlOiBodHRwczovL2ZsYXRwaWNrci5qcy5vcmcvZm9ybWF0dGluZy9cblx0ICovXG5cdEBJbnB1dCgpIGRhdGVGb3JtYXQgPSBcIm0vZC9ZXCI7XG5cblx0LyoqXG5cdCAqIExhbmd1YWdlIG9mIHRoZSBmbGF0cGlja3IgY2FsZW5kYXIuXG5cdCAqXG5cdCAqIEZvciByZWZlcmVuY2Ugb2YgdGhlIHBvc3NpYmxlIGxvY2FsZXM6XG5cdCAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0cGlja3IvZmxhdHBpY2tyL2Jsb2IvbWFzdGVyL3NyYy9sMTBuL2luZGV4LnRzXG5cdCAqL1xuXHRASW5wdXQoKSBsYW5ndWFnZSA9IFwiZW5cIjtcblxuXHRASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0QElucHV0KCkgaGVscGVyVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0QElucHV0KCkgcmFuZ2VIZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHRASW5wdXQoKSByYW5nZUxhYmVsOiBzdHJpbmc7XG5cblx0QElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIm1tL2RkL3l5eXlcIjtcblxuXHQvKipcblx0ICogQXJpYSBsYWJlbCBhZGRlZCB0byBkYXRlcGlja2VyJ3MgY2FsZW5kYXIgY29udGFpbmVyLlxuXHQgKi9cblx0QElucHV0KCkgYXJpYUxhYmVsID0gXCJjYWxlbmRhciBjb250YWluZXJcIjtcblxuXHQvKipcblx0ICogVGhlIHBhdHRlcm4gZm9yIHRoZSB1bmRlcmx5aW5nIGlucHV0IGVsZW1lbnRcblx0ICovXG5cdEBJbnB1dCgpIGlucHV0UGF0dGVybiA9IFwiXlxcXFxkezEsMn0vXFxcXGR7MSwyfS9cXFxcZHs0fSRcIjtcblxuXHRASW5wdXQoKSBpZCA9IGBkYXRlcGlja2VyLSR7RGF0ZVBpY2tlci5kYXRlUGlja2VyQ291bnQrK31gO1xuXG5cdEBJbnB1dCgpIHNldCB2YWx1ZSh2OiAoRGF0ZSB8IHN0cmluZylbXSkge1xuXHRcdGlmICghdikge1xuXHRcdFx0diA9IFtdO1xuXHRcdH1cblx0XHR0aGlzLl92YWx1ZSA9IHY7XG5cdH1cblxuXHRnZXQgdmFsdWUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3ZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBkZXByZWNhdGVkIHNpbmNlIHY1IC0gVXNlIGBjZHNMYXllcmAgZGlyZWN0aXZlIGluc3RlYWRcblx0ICogU2V0IHRvIGBcImxpZ2h0XCJgIHRvIGFwcGx5IHRoZSBsaWdodCBzdHlsZVxuXHQgKi9cblx0QElucHV0KCkgdGhlbWU6IFwibGlnaHRcIiB8IFwiZGFya1wiID0gXCJkYXJrXCI7XG5cblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gZGlzcGxheSB0aGUgaW52YWxpZCBzdGF0ZS5cblx0ICovXG5cdEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFZhbHVlIGRpc3BsYXllZCBpZiBkYXRlcGlja2VyIGlzIGluIGFuIGludmFsaWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgYSB3YXJuaW5nIChjb250ZW50cyBzZXQgYnkgd2FybmluZ1RleHQpXG5cdCAgKi9cblx0QElucHV0KCkgd2FybiA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0cyB0aGUgd2FybmluZyB0ZXh0XG5cdCAqL1xuXHRASW5wdXQoKSB3YXJuVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuXHRASW5wdXQoKSBzaXplOiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgPSBcIm1kXCI7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIGRpc3BsYXkgdGhlIGludmFsaWQgc3RhdGUgZm9yIHRoZSBzZWNvbmQgZGF0ZXBpY2tlciBpbnB1dC5cblx0ICovXG5cdEBJbnB1dCgpIHJhbmdlSW52YWxpZCA9IGZhbHNlO1xuXHQvKipcblx0ICogVmFsdWUgZGlzcGxheWVkIGlmIHRoZSBzZWNvbmQgZGF0ZXBpY2tlciBpbnB1dCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgcmFuZ2VJbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgYSB3YXJuaW5nIGluIHRoZSBzZWNvbmQgZGF0ZXBpY2tlciBpbnB1dCAoY29udGVudHMgc2V0IGJ5IHJhbmdlV2FybmluZ1RleHQpXG5cdCAgKi9cblx0QElucHV0KCkgcmFuZ2VXYXJuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHQgZm9yIHRoZSBzZWNvbmQgZGF0ZXBpY2tlciBpbnB1dFxuXHQgKi9cblx0QElucHV0KCkgcmFuZ2VXYXJuVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuXHRASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuXG5cdEBJbnB1dCgpIHBsdWdpbnMgPSBbXTtcblxuXHRASW5wdXQoKVxuXHRzZXQgZmxhdHBpY2tyT3B0aW9ucyhvcHRpb25zOiBQYXJ0aWFsPE9wdGlvbnM+KSB7XG5cdFx0dGhpcy5fZmxhdHBpY2tyT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2ZsYXRwaWNrck9wdGlvbnMsIG9wdGlvbnMpO1xuXHR9XG5cdGdldCBmbGF0cGlja3JPcHRpb25zKCk6IFBhcnRpYWw8T3B0aW9ucz4ge1xuXHRcdGNvbnN0IHBsdWdpbnMgPSBbLi4udGhpcy5wbHVnaW5zLCBjYXJib25GbGF0cGlja3JNb250aFNlbGVjdFBsdWdpbl07XG5cdFx0aWYgKHRoaXMucmFuZ2UpIHtcblx0XHRcdHBsdWdpbnMucHVzaChyYW5nZVBsdWdpbih7IGlucHV0OiBgIyR7dGhpcy5pZH0tcmFuZ2VJbnB1dGAsIHBvc2l0aW9uOiBcImxlZnRcIiB9KSk7XG5cdFx0fVxuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9mbGF0cGlja3JPcHRpb25zLCB0aGlzLmZsYXRwaWNrckJhc2VPcHRpb25zLCB7XG5cdFx0XHRtb2RlOiB0aGlzLnJhbmdlID8gXCJyYW5nZVwiIDogXCJzaW5nbGVcIixcblx0XHRcdHBsdWdpbnMsXG5cdFx0XHRkYXRlRm9ybWF0OiB0aGlzLmRhdGVGb3JtYXQsXG5cdFx0XHRsb2NhbGU6IGxhbmd1YWdlcy5kZWZhdWx0Py5kZWZhdWx0W3RoaXMubGFuZ3VhZ2VdIHx8IGxhbmd1YWdlcy5kZWZhdWx0W3RoaXMubGFuZ3VhZ2VdXG5cdFx0fSk7XG5cdH1cblxuXHRAVmlld0NoaWxkKFwiaW5wdXRcIiwgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXQ6IERhdGVQaWNrZXJJbnB1dDtcblx0QFZpZXdDaGlsZChcInJhbmdlSW5wdXRcIikgcmFuZ2VJbnB1dDogRGF0ZVBpY2tlcklucHV0O1xuXG5cdEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0LyoqXG5cdCAqIFdlIGFyZSBvdmVycmlkaW5nIG9uQ2xvc2UgZXZlbnQgZXZlbiBpZiB1c2VycyBwYXNzIGl0IHZpYSBmbGF0cGlja3Igb3B0aW9uc1xuXHQgKiBFbWl0cyBhbiBldmVudCB3aGVuIGRhdGUgcGlja2VyIGNsb3Nlc1xuXHQgKi9cblx0QE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdHByb3RlY3RlZCBfdmFsdWUgPSBbXTtcblxuXHRwcm90ZWN0ZWQgX2ZsYXRwaWNrck9wdGlvbnM6IFBhcnRpYWw8T3B0aW9ucz4gPSB7XG5cdFx0YWxsb3dJbnB1dDogdHJ1ZVxuXHR9O1xuXG5cdHByb3RlY3RlZCBmbGF0cGlja3JCYXNlT3B0aW9ucyA9IHtcblx0XHRtb2RlOiBcInNpbmdsZVwiLFxuXHRcdGRhdGVGb3JtYXQ6IFwibS9kL1lcIixcblx0XHRwbHVnaW5zOiB0aGlzLnBsdWdpbnMsXG5cdFx0b25PcGVuOiAoKSA9PiB7XG5cdFx0XHR0aGlzLnVwZGF0ZUNsYXNzTmFtZXMoKTtcblx0XHRcdHRoaXMudXBkYXRlQXR0cmlidXRlcygpO1xuXHRcdFx0dGhpcy51cGRhdGVDYWxlbmRhckxpc3RlbmVycygpO1xuXHRcdH0sXG5cdFx0b25DbG9zZTogKGRhdGUpID0+IHtcblx0XHRcdC8vIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBgZmxhdHBpY2tySW5zdGFuY2Ugc2VsZWN0ZWREYXRlc2AgYXJlIGluIHN5bmMgd2l0aCB0aGUgdmFsdWVzIG9mXG5cdFx0XHQvLyB0aGUgaW5wdXRzIHdoZW4gdGhlIGNhbGVuZGFyIGNsb3Nlcy5cblx0XHRcdGlmICh0aGlzLnJhbmdlICYmIHRoaXMuZmxhdHBpY2tySW5zdGFuY2UpIHtcblx0XHRcdFx0aWYgKHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlcy5sZW5ndGggIT09IDIpIHtcblx0XHRcdFx0XHQvLyB3ZSBjb3VsZCBgdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5jbGVhcigpYCBidXQgaXQgaW5zaXN0cyBvbiBvcGVuaW5nIHRoZSBzZWNvbmQgcGlja2VyXG5cdFx0XHRcdFx0Ly8gaW4gc29tZSBjYXNlcywgc28gaW5zdGVhZCB3ZSBkbyB0aGlzXG5cdFx0XHRcdFx0dGhpcy5zZXREYXRlVmFsdWVzKFtdKTtcblx0XHRcdFx0XHR0aGlzLmRvU2VsZWN0KFtdKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcblx0XHRcdFx0Y29uc3QgcmFuZ2VJbnB1dFZhbHVlID0gdGhpcy5yYW5nZUlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG5cdFx0XHRcdGlmIChpbnB1dFZhbHVlIHx8IHJhbmdlSW5wdXRWYWx1ZSkge1xuXHRcdFx0XHRcdGNvbnN0IHBhcnNlRGF0ZSA9IChkYXRlOiBzdHJpbmcpID0+IHRoaXMuZmxhdHBpY2tySW5zdGFuY2UucGFyc2VEYXRlKGRhdGUsIHRoaXMuZGF0ZUZvcm1hdCk7XG5cdFx0XHRcdFx0dGhpcy5zZXREYXRlVmFsdWVzKFtwYXJzZURhdGUoaW5wdXRWYWx1ZSksIHBhcnNlRGF0ZShyYW5nZUlucHV0VmFsdWUpXSk7XG5cdFx0XHRcdFx0dGhpcy5kb1NlbGVjdCh0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLm9uQ2xvc2UuZW1pdChkYXRlKTtcblx0XHR9LFxuXHRcdG9uRGF5Q3JlYXRlOiAoX2RPYmosIF9kU3RyLCBfZnAsIGRheUVsZW0pID0+IHtcblx0XHRcdGRheUVsZW0uY2xhc3NMaXN0LmFkZChcImNkcy0tZGF0ZS1waWNrZXJfX2RheVwiKTtcblx0XHR9LFxuXHRcdG5leHRBcnJvdzogdGhpcy5yaWdodEFycm93SFRNTCgpLFxuXHRcdHByZXZBcnJvdzogdGhpcy5sZWZ0QXJyb3dIVE1MKCksXG5cdFx0dmFsdWU6IHRoaXMudmFsdWVcblx0fTtcblxuXHRwcm90ZWN0ZWQgZmxhdHBpY2tySW5zdGFuY2UgPSBudWxsO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuXHRcdHByb3RlY3RlZCBpMThuOiBJMThuXG5cdCkgeyB9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0Ly8gaWYgaTE4biBpcyBzZXQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiBlbiB3ZSdsbCB3YW50IHRvIGNoYW5nZSB0aGUgbGFuZ3VhZ2Vcblx0XHQvLyBvdGhlcndpc2Ugd2UnbGwganVzdCB1c2UgdGhlIGxvY2FsIHNldHRpbmdcblx0XHRpZiAodGhpcy5pMThuLmdldExvY2FsZSgpICE9PSBcImVuXCIpIHtcblx0XHRcdHRoaXMuaTE4bi5nZXRMb2NhbGVPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKGxvY2FsZSA9PiB7XG5cdFx0XHRcdHRoaXMubGFuZ3VhZ2UgPSBsb2NhbGU7XG5cdFx0XHRcdHRoaXMucmVzZXRGbGF0cGlja3JJbnN0YW5jZSgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuXHRcdC8vIFJlc2V0IHRoZSBmbGF0cGlja3IgaW5zdGFuY2Ugb24gaW5wdXQgY2hhbmdlcyB0aGF0IGFmZmVjdCBmbGF0cGlja3IuXG5cdFx0Y29uc3QgZmxhdHBpY2tyQ2hhbmdlS2V5cyA9IFtcblx0XHRcdFwicmFuZ2VcIixcblx0XHRcdFwiZGF0ZUZvcm1hdFwiLFxuXHRcdFx0XCJsYW5ndWFnZVwiLFxuXHRcdFx0XCJpZFwiLFxuXHRcdFx0XCJ2YWx1ZVwiLFxuXHRcdFx0XCJwbHVnaW5zXCIsXG5cdFx0XHRcImZsYXRwaWNrck9wdGlvbnNcIlxuXHRcdF07XG5cdFx0Y29uc3QgY2hhbmdlS2V5cyA9IE9iamVjdC5rZXlzKGNoYW5nZXMpO1xuXHRcdGlmIChjaGFuZ2VLZXlzLnNvbWUoa2V5ID0+IGZsYXRwaWNrckNoYW5nZUtleXMuaW5jbHVkZXMoa2V5KSkpIHtcblx0XHRcdHRoaXMucmVzZXRGbGF0cGlja3JJbnN0YW5jZShjaGFuZ2VzLnZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmFkZElucHV0TGlzdGVuZXJzKCk7XG5cdFx0fSwgMCk7XG5cdH1cblxuXHQvLyBiZWNhdXNlIHRoZSBhY3R1YWwgdmlldyBtYXkgYmUgZGVsYXllZCBpbiBsb2FkaW5nICh0aGluayBwcm9qZWN0aW9uIGludG8gYSB0YWIgcGFuZSlcblx0Ly8gYW5kIGJlY2F1c2Ugd2UgcmVseSBvbiBhIGxpYnJhcnkgdGhhdCBvcGVyYXRlcyBvdXRzaWRlIHRoZSBBbmd1bGFyIHZpZXcgb2YgdGhlIHdvcmxkXG5cdC8vIHdlIG5lZWQgdG8ga2VlcCB0cnlpbmcgdG8gbG9hZCB0aGUgbGlicmFyeSwgdW50aWwgdGhlIHJlbGV2YW50IERPTSBpcyBhY3R1YWxseSBsaXZlXG5cdG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcblx0XHRpZiAoIXRoaXMuaXNGbGF0cGlja3JMb2FkZWQoKSkge1xuXHRcdFx0Ly8gQHRzLWlnbm9yZSB0cyBpcyB1bmhhcHB5IHdpdGggdGhlIGJlbG93IGNhbGwgdG8gYGZsYXRwaWNrcmBcblx0XHRcdHRoaXMuZmxhdHBpY2tySW5zdGFuY2UgPSBmbGF0cGlja3IoYCMke3RoaXMuaWR9LWlucHV0YCwgdGhpcy5mbGF0cGlja3JPcHRpb25zKTtcblx0XHRcdC8vIGlmIChhbmQgb25seSBpZikgdGhlIGluaXRpYWxpemF0aW9uIHN1Y2NlZWRlZCwgd2UgY2FuIHNldCB0aGUgZGF0ZSB2YWx1ZXNcblx0XHRcdGlmICh0aGlzLmlzRmxhdHBpY2tyTG9hZGVkKCkpIHtcblx0XHRcdFx0aWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdHRoaXMuc2V0RGF0ZVZhbHVlcyh0aGlzLnZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoXCJmb2N1c2luXCIpXG5cdG9uRm9jdXMoKSB7XG5cdFx0Ly8gVXBkYXRlcyB0aGUgbW9udGggbWFudWFsbHkgd2hlbiBjYWxlbmRhciBtb2RlIGlzIHJhbmdlIGJlY2F1c2UgbW9udGhcblx0XHQvLyB3aWxsIG5vdCB1cGRhdGUgcHJvcGVybHkgd2l0aG91dCBtYW51YWxseSB1cGRhdGluZyB0aGVtIG9uIGZvY3VzLlxuXHRcdGlmICh0aGlzLnJhbmdlKSB7XG5cdFx0XHRpZiAodGhpcy5yYW5nZUlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzFdKSB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnRNb250aCA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1sxXS5nZXRNb250aCgpO1xuXHRcdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLmNoYW5nZU1vbnRoKGN1cnJlbnRNb250aCwgZmFsc2UpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzBdKSB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnRNb250aCA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1swXS5nZXRNb250aCgpO1xuXHRcdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLmNoYW5nZU1vbnRoKGN1cnJlbnRNb250aCwgZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoXCJmb2N1c291dFwiKVxuXHRvbkZvY3VzT3V0KCkge1xuXHRcdHRoaXMub25Ub3VjaGVkKCk7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGVzIGEgdmFsdWUgZnJvbSB0aGUgbW9kZWwgdG8gdGhlIGNvbXBvbmVudC4gRXhwZWN0cyB0aGUgdmFsdWUgdG8gYmUgYG51bGxgIG9yIGAoRGF0ZSB8IHN0cmluZylbXWBcblx0ICogQHBhcmFtIHZhbHVlIHZhbHVlIHJlY2VpdmVkIGZyb20gdGhlIG1vZGVsXG5cdCAqL1xuXHR3cml0ZVZhbHVlKHZhbHVlOiAoRGF0ZSB8IHN0cmluZylbXSkge1xuXHRcdHRoaXMudmFsdWUgPSB2YWx1ZTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGlmICh0aGlzLmlzRmxhdHBpY2tyTG9hZGVkKCkgJiYgdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5jb25maWcpIHtcblx0XHRcdFx0dGhpcy5zZXREYXRlVmFsdWVzKHRoaXMudmFsdWUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgbWV0aG9kIHRvIHByb2dyYW1tYXRpY2FsbHkgZGlzYWJsZSB0aGUgRGF0ZVBpY2tlci5cblx0ICpcblx0ICogZXg6IGB0aGlzLmZvcm1Hcm91cC5nZXQoXCJteURhdGVQaWNrZXJcIikuZGlzYWJsZSgpO2Bcblx0ICpcblx0ICogQHBhcmFtIGlzRGlzYWJsZWQgYHRydWVgIHRvIGRpc2FibGUgdGhlIERhdGVQaWNrZXJcblx0ICovXG5cdHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuXHRcdHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcblx0fVxuXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcblx0XHR0aGlzLm9uVG91Y2hlZCA9IGZuO1xuXHR9XG5cblx0b25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7IH07XG5cblx0cHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xuXG5cdC8qKlxuXHQgKiBDbGVhbnMgdXAgb3VyIGZsYXRwaWNrciBpbnN0YW5jZVxuXHQgKi9cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0aWYgKCF0aGlzLmlzRmxhdHBpY2tyTG9hZGVkKCkpIHsgcmV0dXJuOyB9XG5cdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZS5kZXN0cm95KCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgYHZhbHVlQ2hhbmdlYCBldmVudCBmcm9tIHRoZSBwcmltYXJ5L3NpbmdsZSBpbnB1dFxuXHQgKi9cblx0b25WYWx1ZUNoYW5nZShldmVudDogc3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuaXNGbGF0cGlja3JMb2FkZWQoKSkge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2UucGFyc2VEYXRlKGV2ZW50LCB0aGlzLmRhdGVGb3JtYXQpO1xuXHRcdFx0aWYgKHRoaXMucmFuZ2UpIHtcblx0XHRcdFx0dGhpcy5zZXREYXRlVmFsdWVzKFtkYXRlLCB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMV1dKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuc2V0RGF0ZVZhbHVlcyhbZGF0ZV0pO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5kb1NlbGVjdCh0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXMpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBgdmFsdWVDaGFuZ2VgIGV2ZW50IGZyb20gdGhlIHJhbmdlIGlucHV0XG5cdCAqL1xuXHRvblJhbmdlVmFsdWVDaGFuZ2UoZXZlbnQ6IHN0cmluZykge1xuXHRcdGlmICh0aGlzLmlzRmxhdHBpY2tyTG9hZGVkKCkgJiYgdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5pc09wZW4pIHtcblx0XHRcdGNvbnN0IGRhdGUgPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnBhcnNlRGF0ZShldmVudCwgdGhpcy5kYXRlRm9ybWF0KTtcblx0XHRcdHRoaXMuc2V0RGF0ZVZhbHVlcyhbdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzBdLCBkYXRlXSk7XG5cdFx0XHR0aGlzLmRvU2VsZWN0KHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlcyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgb3BlbmluZyB0aGUgY2FsZW5kYXIgXCJwcm9wZXJseVwiIHdoZW4gdGhlIGNhbGVuZGFyIGljb24gaXMgY2xpY2tlZC5cblx0ICovXG5cdG9wZW5DYWxlbmRhcihkYXRlcGlja2VySW5wdXQ6IERhdGVQaWNrZXJJbnB1dCkge1xuXHRcdGlmICh0aGlzLnJhbmdlKSB7XG5cdFx0XHRkYXRlcGlja2VySW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuXG5cdFx0XHQvLyBJZiB0aGUgZmlyc3QgaW5wdXQncyBjYWxlbmRhciBpY29uIGlzIGNsaWNrZWQgd2hlbiBjYWxlbmRhciBpcyBpbiByYW5nZSBtb2RlLCB0aGVuXG5cdFx0XHQvLyB0aGUgbW9udGggYW5kIHllYXIgbmVlZHMgdG8gYmUgbWFudWFsbHkgY2hhbmdlZCB0byB0aGUgY3VycmVudCBzZWxlY3RlZCBtb250aCBhbmRcblx0XHRcdC8vIHllYXIgb3RoZXJ3aXNlIHRoZSBjYWxlbmRhciB2aWV3IHdpbGwgbm90IGJlIHVwZGF0ZWQgdXBvbiBvcGVuaW5nLlxuXHRcdFx0aWYgKGRhdGVwaWNrZXJJbnB1dCA9PT0gdGhpcy5pbnB1dCAmJiB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMF0pIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzBdLmdldE1vbnRoKCk7XG5cblx0XHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZS5jdXJyZW50WWVhciA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1swXS5nZXRGdWxsWWVhcigpO1xuXHRcdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLmNoYW5nZU1vbnRoKGN1cnJlbnRNb250aCwgZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBTaW5nbGUtbW9kZSBmbGF0cGlja3IgaGFuZGxlcyBtb3VzZWRvd24gYnV0IG5vdCBjbGljaywgc28gbmF0aXZlRWxlbWVudC5jbGljaygpIHdvbid0XG5cdFx0XHQvLyB3b3JrIHdoZW4gdGhlIGNhbGVuZGFyIGljb24gaXMgY2xpY2tlZC4gSW4gdGhpcyBjYXNlIHdlIHNpbXBseSB1c2UgZmxhdHBpY2tyLm9wZW4oKS5cblx0XHRcdHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uub3BlbigpO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCB1cGRhdGVDYWxlbmRhckxpc3RlbmVycygpIHtcblx0XHRjb25zdCBjYWxlbmRhckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZmxhdHBpY2tyLWNhbGVuZGFyXCIpO1xuXHRcdEFycmF5LmZyb20oY2FsZW5kYXJDb250YWluZXIpLmZvckVhY2goY2FsZW5kYXIgPT4ge1xuXHRcdFx0Y2FsZW5kYXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMucHJldmVudENhbGVuZGFyQ2xvc2UpO1xuXHRcdFx0Y2FsZW5kYXIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMucHJldmVudENhbGVuZGFyQ2xvc2UpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGV2ZW50IGxpc3RlbmVycyBmb3IgdGhlIGRhdGVwaWNrZXIgaW5wdXQgYW5kIHJhbmdlIGlucHV0IGZpZWxkcy5cblx0ICovXG5cdHByb3RlY3RlZCBhZGRJbnB1dExpc3RlbmVycygpIHtcblx0XHRpZiAoIXRoaXMuaXNGbGF0cGlja3JMb2FkZWQoKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEFsbG93cyBmb2N1cyB0cmFuc2l0aW9uIGZyb20gdGhlIGRhdGVwaWNrZXIgaW5wdXQgb3IgcmFuZ2UgaW5wdXQgZmllbGQgdG9cblx0XHQvLyBmbGF0cGlja3IgY2FsZW5kYXIgdXNpbmcgYSBrZXlib2FyZC5cblx0XHRjb25zdCBhZGRGb2N1c0NhbGVuZGFyTGlzdGVuZXIgPSAoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuXHRcdFx0ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuXHRcdFx0XHRcdHRoaXMuZmxhdHBpY2tySW5zdGFuY2UuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiKSB7XG5cdFx0XHRcdFx0aWYgKCF0aGlzLmZsYXRwaWNrckluc3RhbmNlLmlzT3Blbikge1xuXHRcdFx0XHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZS5vcGVuKCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgY2FsZW5kYXJDb250YWluZXIgPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLmNhbGVuZGFyQ29udGFpbmVyO1xuXHRcdFx0XHRcdGNvbnN0IGRheUVsZW1lbnQgPSBjYWxlbmRhckNvbnRhaW5lciAmJiBjYWxlbmRhckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFwiLmZsYXRwaWNrci1kYXlbdGFiaW5kZXhdXCIpO1xuXG5cdFx0XHRcdFx0aWYgKGRheUVsZW1lbnQpIHtcblx0XHRcdFx0XHRcdGRheUVsZW1lbnQuZm9jdXMoKTtcblxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHVzZXIgbWFudWFsbHkgaW5wdXRzIGEgdmFsdWUgaW50byB0aGUgZGF0ZSBmaWVsZCBhbmQgcHJlc3NlcyBhcnJvdyBkb3duLFxuXHRcdFx0XHRcdFx0Ly8gZGF0ZXBpY2tlciBpbnB1dCBvbmNoYW5nZSB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIGZvY3VzIGlzIHJlbW92ZWQgZnJvbSBpdCBhbmRcblx0XHRcdFx0XHRcdC8vIGBmbGF0cGlja3JJbnN0YW5jZS5zZXREYXRlYCBhbmQgYGZsYXRwaWNrckluc3RhbmNlLmNoYW5nZU1vbnRoYCB3aWxsIGJlIGludm9rZWRcblx0XHRcdFx0XHRcdC8vIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBjaGFuZ2UgZm9jdXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQuXG5cdFx0XHRcdFx0XHRpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZGF5RWxlbWVudCAmJiB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZUVsZW0pIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVFbGVtLmZvY3VzKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMuaW5wdXQgJiYgdGhpcy5pbnB1dC5pbnB1dCkge1xuXHRcdFx0YWRkRm9jdXNDYWxlbmRhckxpc3RlbmVyKHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucmFuZ2VJbnB1dCAmJiB0aGlzLnJhbmdlSW5wdXQuaW5wdXQpIHtcblx0XHRcdGFkZEZvY3VzQ2FsZW5kYXJMaXN0ZW5lcih0aGlzLnJhbmdlSW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlc2V0cyB0aGUgZmxhdHBpY2tyIGluc3RhbmNlIHdoaWxlIGtlZXBpbmcgdGhlIGRhdGUgdmFsdWVzIChvciB1cGRhdGluZyB0aGVtIGlmIG5ld0RhdGVzIGlzIHByb3ZpZGVkKVxuXHQgKlxuXHQgKiBVc2VkIHRvIHBpY2sgdXAgaW5wdXQgY2hhbmdlcyBvciBsb2NhbGUgY2hhbmdlcy5cblx0ICpcblx0ICogQHBhcmFtIG5ld0RhdGVzIEFuIG9wdGlvbmFsIFNpbXBsZUNoYW5nZSBvZiBkYXRlIHZhbHVlc1xuXHQgKi9cblx0cHJvdGVjdGVkIHJlc2V0RmxhdHBpY2tySW5zdGFuY2UobmV3RGF0ZXM/OiBTaW1wbGVDaGFuZ2UpIHtcblx0XHRpZiAodGhpcy5pc0ZsYXRwaWNrckxvYWRlZCgpKSB7XG5cdFx0XHRsZXQgZGF0ZXMgPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXM7XG5cdFx0XHRpZiAobmV3RGF0ZXMgJiYgdGhpcy5kaWREYXRlVmFsdWVDaGFuZ2UobmV3RGF0ZXMuY3VycmVudFZhbHVlLCBuZXdEYXRlcy5wcmV2aW91c1ZhbHVlKSkge1xuXHRcdFx0XHRkYXRlcyA9IG5ld0RhdGVzLmN1cnJlbnRWYWx1ZTtcblx0XHRcdH1cblx0XHRcdC8vIG9ubHkgcmVzZXQgdGhlIGZsYXRwaWNrciBpbnN0YW5jZSBvbiBJbnB1dCBjaGFuZ2VzXG5cdFx0XHQvLyBAdHMtaWdub3JlIHRzIGlzIHVuaGFwcHkgd2l0aCB0aGUgYmVsb3cgY2FsbCB0byBgZmxhdHBpY2tyYFxuXHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZSA9IGZsYXRwaWNrcihgIyR7dGhpcy5pZH0taW5wdXRgLCB0aGlzLmZsYXRwaWNrck9wdGlvbnMpO1xuXHRcdFx0dGhpcy5zZXREYXRlVmFsdWVzKGRhdGVzKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2FyYm9uIHVzZXMgYSBudW1iZXIgb2Ygc3BlY2lmaWMgY2xhc3NuYW1lcyBmb3IgcGFydHMgb2YgdGhlIGZsYXRwaWNrciAtIHRoaXMgaWRlbXBvdGVudCBtZXRob2QgYXBwbGllcyB0aGVtIGlmIG5lZWRlZC5cblx0ICovXG5cdHByb3RlY3RlZCB1cGRhdGVDbGFzc05hbWVzKCkge1xuXHRcdGlmICghdGhpcy5lbGVtZW50UmVmKSB7IHJldHVybjsgfVxuXHRcdC8vIGdldCBhbGwgdGhlIHBvc3NpYmxlIGZsYXRwaWNrcnMgaW4gdGhlIGRvY3VtZW50IC0gd2UgbmVlZCB0byBhZGQgY2xhc3NlcyB0byAocG90ZW50aWFsbHkpIGFsbCBvZiB0aGVtXG5cdFx0Y29uc3QgY2FsZW5kYXJDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmZsYXRwaWNrci1jYWxlbmRhclwiKTtcblx0XHRjb25zdCBtb250aENvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZmxhdHBpY2tyLW1vbnRoXCIpO1xuXHRcdGNvbnN0IHdlZWtkYXlzQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5mbGF0cGlja3Itd2Vla2RheXNcIik7XG5cdFx0Y29uc3Qgd2Vla2RheUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZmxhdHBpY2tyLXdlZWtkYXlcIik7XG5cdFx0Y29uc3QgZGF5c0NvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZmxhdHBpY2tyLWRheXNcIik7XG5cdFx0Y29uc3QgZGF5Q29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5mbGF0cGlja3ItZGF5XCIpO1xuXG5cdFx0Ly8gYWRkIGNsYXNzZXMgdG8gbGlzdHMgb2YgZWxlbWVudHNcblx0XHRjb25zdCBhZGRDbGFzc0lmTm90RXhpc3RzID0gKGNsYXNzbmFtZTogc3RyaW5nLCBlbGVtZW50TGlzdDogTm9kZUxpc3RPZjxFbGVtZW50PikgPT4ge1xuXHRcdFx0QXJyYXkuZnJvbShlbGVtZW50TGlzdCkuZm9yRWFjaChlbGVtZW50ID0+IHtcblx0XHRcdFx0aWYgKCFlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc25hbWUpKSB7XG5cdFx0XHRcdFx0ZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzbmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHQvLyBhZGQgY2xhc3NlcyAoYnV0IG9ubHkgaWYgdGhleSBkb24ndCBleGlzdCwgc21hbGwgcGVyZiB3aW4pXG5cdFx0YWRkQ2xhc3NJZk5vdEV4aXN0cyhcImNkcy0tZGF0ZS1waWNrZXJfX2NhbGVuZGFyXCIsIGNhbGVuZGFyQ29udGFpbmVyKTtcblx0XHRhZGRDbGFzc0lmTm90RXhpc3RzKFwiY2RzLS1kYXRlLXBpY2tlcl9fbW9udGhcIiwgbW9udGhDb250YWluZXIpO1xuXHRcdGFkZENsYXNzSWZOb3RFeGlzdHMoXCJjZHMtLWRhdGUtcGlja2VyX193ZWVrZGF5c1wiLCB3ZWVrZGF5c0NvbnRhaW5lcik7XG5cdFx0YWRkQ2xhc3NJZk5vdEV4aXN0cyhcImNkcy0tZGF0ZS1waWNrZXJfX2RheXNcIiwgZGF5c0NvbnRhaW5lcik7XG5cblx0XHQvLyBhZGQgd2Vla2RheSBjbGFzc2VzIGFuZCBmb3JtYXQgdGhlIHRleHRcblx0XHRBcnJheS5mcm9tKHdlZWtkYXlDb250YWluZXIpLmZvckVhY2goZWxlbWVudCA9PiB7XG5cdFx0XHRlbGVtZW50LmlubmVySFRNTCA9IGVsZW1lbnQuaW5uZXJIVE1MLnJlcGxhY2UoL1xccysvZywgXCJcIik7XG5cdFx0XHRlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJjZHMtLWRhdGUtcGlja2VyX193ZWVrZGF5XCIpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gYWRkIGRheSBjbGFzc2VzIGFuZCBzcGVjaWFsIGNhc2UgdGhlIFwidG9kYXlcIiBlbGVtZW50IGJhc2VkIG9uIGB0aGlzLnZhbHVlYFxuXHRcdEFycmF5LmZyb20oZGF5Q29udGFpbmVyKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuXHRcdFx0ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiY2RzLS1kYXRlLXBpY2tlcl9fZGF5XCIpO1xuXHRcdFx0aWYgKCF0aGlzLnZhbHVlKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcInRvZGF5XCIpICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJuby1ib3JkZXJcIik7XG5cdFx0XHR9IGVsc2UgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwidG9kYXlcIikgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwibm8tYm9yZGVyXCIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJvdGVjdGVkIHVwZGF0ZUF0dHJpYnV0ZXMoKSB7XG5cdFx0Y29uc3QgY2FsZW5kYXJDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmZsYXRwaWNrci1jYWxlbmRhclwiKTtcblx0XHRBcnJheS5mcm9tKGNhbGVuZGFyQ29udGFpbmVyKS5mb3JFYWNoKGNhbGVuZGFyID0+IHtcblx0XHRcdGNhbGVuZGFyLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJyZWdpb25cIik7XG5cdFx0XHRjYWxlbmRhci5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsIHRoaXMuYXJpYUxhYmVsKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBcHBsaWVzIHRoZSBnaXZlbiBkYXRlIHZhbHVlIGFycmF5IHRvIGJvdGggdGhlIGZsYXRwaWNrciBpbnN0YW5jZSBhbmQgdGhlIGBpbnB1dGAocylcblx0ICogQHBhcmFtIGRhdGVzIHRoZSBkYXRlIHZhbHVlcyB0byBhcHBseVxuXHQgKi9cblx0cHJvdGVjdGVkIHNldERhdGVWYWx1ZXMoZGF0ZXM6IChEYXRlIHwgc3RyaW5nKVtdKSB7XG5cdFx0aWYgKHRoaXMuaXNGbGF0cGlja3JMb2FkZWQoKSkge1xuXHRcdFx0Y29uc3Qgc2luZ2xlSW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAjJHt0aGlzLmlkfS1pbnB1dGApO1xuXHRcdFx0Y29uc3QgcmFuZ2VJbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3RoaXMuaWR9LXJhbmdlSW5wdXRgKTtcblxuXHRcdFx0Ly8gYGZsYXRwaWNrckluc3RhbmNlLnNldERhdGVgIHJlbW92ZXMgdGhlIGZvY3VzIG9uIHRoZSBzZWxlY3RlZCBkYXRlIGVsZW1lbnQgYW5kIHdpbGxcblx0XHRcdC8vIGF1dG9tYXRpY2FsbHkgY2hhbmdlIGZvY3VzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50LiBJZiBhIHNlbGVjdGVkIGRhdGUgaXNcblx0XHRcdC8vIGZvY3VzZWQgYmVmb3JlIGBmbGF0cGlja3JJbnN0YW5jZS5zZXREYXRlYCBpcyBpbnZva2VkIHRoZW4gaXQgc2hvdWxkIHJlbWFpbiBmb2N1c2VkLlxuXHRcdFx0bGV0IHNob3VsZFJlZm9jdXNEYXRlRWxlbWVudCA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlRWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuXHRcdFx0Ly8gc2V0IHRoZSBkYXRlIG9uIHRoZSBpbnN0YW5jZVxuXHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZXREYXRlKGRhdGVzKTtcblxuXHRcdFx0aWYgKHNob3VsZFJlZm9jdXNEYXRlRWxlbWVudCkge1xuXHRcdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZUVsZW0uZm9jdXMoKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gd2UgY2FuIGVpdGhlciBzZXQgYSBkYXRlIHZhbHVlIG9yIGFuIGVtcHR5IHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBhbiBlbXB0eSBzdHJpbmdcblx0XHRcdGxldCBzaW5nbGVEYXRlID0gXCJcIjtcblx0XHRcdC8vIGlmIGRhdGUgaXMgYSBzdHJpbmcsIHBhcnNlIGFuZCBmb3JtYXRcblx0XHRcdGlmICh0eXBlb2YgdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzBdID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdHNpbmdsZURhdGUgPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnBhcnNlRGF0ZSh0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMF0sIHRoaXMuZGF0ZUZvcm1hdCk7XG5cdFx0XHRcdHNpbmdsZURhdGUgPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLmZvcm1hdERhdGUoc2luZ2xlRGF0ZSwgdGhpcy5kYXRlRm9ybWF0KTtcblx0XHRcdC8vIGlmIGRhdGUgaXMgbm90IGEgc3RyaW5nIHdlIGNhbiBhc3N1bWUgaXQncyBhIERhdGUgYW5kIHdlIHNob3VsZCBmb3JtYXRcblx0XHRcdH0gZWxzZSBpZiAoISF0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMF0pIHtcblx0XHRcdFx0c2luZ2xlRGF0ZSA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2UuZm9ybWF0RGF0ZSh0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMF0sIHRoaXMuZGF0ZUZvcm1hdCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChyYW5nZUlucHV0KSB7XG5cdFx0XHRcdC8vIHdlIGNhbiBlaXRoZXIgc2V0IGEgZGF0ZSB2YWx1ZSBvciBhbiBlbXB0eSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggYW4gZW1wdHkgc3RyaW5nXG5cdFx0XHRcdGxldCByYW5nZURhdGUgPSBcIlwiO1xuXHRcdFx0XHQvLyBpZiBkYXRlIGlzIGEgc3RyaW5nLCBwYXJzZSBhbmQgZm9ybWF0XG5cdFx0XHRcdGlmICh0eXBlb2YgdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzFdID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0cmFuZ2VEYXRlID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5wYXJzZURhdGUodGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzFdLnRvU3RyaW5nKCksIHRoaXMuZGF0ZUZvcm1hdCk7XG5cdFx0XHRcdFx0cmFuZ2VEYXRlID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5mb3JtYXREYXRlKHJhbmdlRGF0ZSwgdGhpcy5kYXRlRm9ybWF0KTtcblx0XHRcdFx0Ly8gaWYgZGF0ZSBpcyBub3QgYSBzdHJpbmcgd2UgY2FuIGFzc3VtZSBpdCdzIGEgRGF0ZSBhbmQgd2Ugc2hvdWxkIGZvcm1hdFxuXHRcdFx0XHR9IGVsc2UgaWYgKCEhdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzFdKSB7XG5cdFx0XHRcdFx0cmFuZ2VEYXRlID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5mb3JtYXREYXRlKHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1sxXSwgdGhpcy5kYXRlRm9ybWF0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHQvLyBhcHBseSB0aGUgdmFsdWVzXG5cdFx0XHRcdFx0cmFuZ2VJbnB1dC52YWx1ZSA9IHJhbmdlRGF0ZTtcblx0XHRcdFx0XHRzaW5nbGVJbnB1dC52YWx1ZSA9IHNpbmdsZURhdGU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBwcmV2ZW50Q2FsZW5kYXJDbG9zZSA9IGV2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdHByb3RlY3RlZCBkb1NlbGVjdChzZWxlY3RlZFZhbHVlOiAoRGF0ZSB8IHN0cmluZylbXSkge1xuXHRcdC8vIEluIHJhbmdlIG1vZGUsIGlmIGEgZGF0ZSBpcyBzZWxlY3RlZCBmcm9tIHRoZSBmaXJzdCBjYWxlbmRhciB0aGF0IGlzIGZyb20gdGhlIHByZXZpb3VzIG1vbnRoLFxuXHRcdC8vIHRoZSBtb250aCB3aWxsIG5vdCBiZSB1cGRhdGVkIG9uIHRoZSBjYWxlbmRhciB1bnRpbCB0aGUgY2FsZW5kYXIgaXMgcmUtb3BlbmVkLlxuXHRcdC8vIFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhlIGNhbGVuZGFyIGlzIHVwZGF0ZWQgd2l0aCB0aGUgY29ycmVjdCBtb250aC5cblx0XHRpZiAodGhpcy5yYW5nZSAmJiB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMF0pIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRNb250aCA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1swXS5nZXRNb250aCgpO1xuXG5cdFx0XHQvLyBgZmxhdHBpY2tySW5zdGFuY2UuY2hhbmdlTW9udGhgIHJlbW92ZXMgdGhlIGZvY3VzIG9uIHRoZSBzZWxlY3RlZCBkYXRlIGVsZW1lbnQgYW5kIHdpbGxcblx0XHRcdC8vIGF1dG9tYXRpY2FsbHkgY2hhbmdlIGZvY3VzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50LiBJZiBhIHNlbGVjdGVkIGRhdGUgaXNcblx0XHRcdC8vIGZvY3VzZWQgYmVmb3JlIGBmbGF0cGlja3JJbnN0YW5jZS5jaGFuZ2VNb250aGAgaXMgaW52b2tlZCB0aGVuIGl0IHNob3VsZCByZW1haW4gZm9jdXNlZC5cblx0XHRcdGxldCBzaG91bGRSZWZvY3VzRGF0ZUVsZW1lbnQgPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZUVsZW0gPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdHRoaXMuZmxhdHBpY2tySW5zdGFuY2UuY2hhbmdlTW9udGgoY3VycmVudE1vbnRoLCBmYWxzZSk7XG5cblx0XHRcdGlmIChzaG91bGRSZWZvY3VzRGF0ZUVsZW1lbnQpIHtcblx0XHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVFbGVtLmZvY3VzKCk7XG5cdFx0XHR9XG5cblx0XHR9XG5cdFx0dGhpcy52YWx1ZUNoYW5nZS5lbWl0KHNlbGVjdGVkVmFsdWUpO1xuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlKHNlbGVjdGVkVmFsdWUpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGRpZERhdGVWYWx1ZUNoYW5nZShjdXJyZW50VmFsdWUsIHByZXZpb3VzVmFsdWUpIHtcblx0XHRyZXR1cm4gY3VycmVudFZhbHVlWzBdICE9PSBwcmV2aW91c1ZhbHVlWzBdIHx8IGN1cnJlbnRWYWx1ZVsxXSAhPT0gcHJldmlvdXNWYWx1ZVsxXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNb3JlIGFkdmFuY2VkIGNoZWNraW5nIG9mIHRoZSBsb2FkZWQgc3RhdGUgb2YgZmxhdHBpY2tyXG5cdCAqL1xuXHRwcm90ZWN0ZWQgaXNGbGF0cGlja3JMb2FkZWQoKSB7XG5cdFx0Ly8gY2FzdCB0aGUgaW5zdGFuY2UgdG8gYSBib29sZWFuLCBhbmQgc29tZSBtZXRob2QgdGhhdCBoYXMgdG8gZXhpc3QgZm9yIHRoZSBsaWJyYXJ5IHRvIGJlIGxvYWRlZCBpbiB0aGlzIGNhc2UgYHNldERhdGVgXG5cdFx0cmV0dXJuICEhdGhpcy5mbGF0cGlja3JJbnN0YW5jZSAmJiAhIXRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2V0RGF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSaWdodCBhcnJvdyBIVE1MIHBhc3NlZCB0byBmbGF0cGlja3Jcblx0ICovXG5cdHByb3RlY3RlZCByaWdodEFycm93SFRNTCgpIHtcblx0XHRyZXR1cm4gYFxuXHRcdFx0PHN2ZyB3aWR0aD1cIjE2cHhcIiBoZWlnaHQ9XCIxNnB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxuXHRcdFx0XHQ8cG9seWdvbiBwb2ludHM9XCIxMSw4IDYsMTMgNS4zLDEyLjMgOS42LDggNS4zLDMuNyA2LDMgXCIvPlxuXHRcdFx0XHQ8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBzdHlsZT1cImZpbGw6bm9uZVwiIC8+XG5cdFx0XHQ8L3N2Zz5gO1xuXHR9XG5cblx0LyoqXG5cdCAqIExlZnQgYXJyb3cgSFRNTCBwYXNzZWQgdG8gZmxhdHBpY2tyXG5cdCAqL1xuXHRwcm90ZWN0ZWQgbGVmdEFycm93SFRNTCgpIHtcblx0XHRyZXR1cm4gYFxuXHRcdFx0PHN2ZyB3aWR0aD1cIjE2cHhcIiBoZWlnaHQ9XCIxNnB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxuXHRcdFx0XHQ8cG9seWdvbiBwb2ludHM9XCI1LDggMTAsMyAxMC43LDMuNyA2LjQsOCAxMC43LDEyLjMgMTAsMTMgXCIvPlxuXHRcdFx0XHQ8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBzdHlsZT1cImZpbGw6bm9uZVwiIC8+XG5cdFx0XHQ8L3N2Zz5gO1xuXHR9XG59XG4iXX0=
725
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUdqQixZQUFZLEVBTVosU0FBUyxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sV0FBVyxNQUFNLG9DQUFvQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRixPQUFPLEtBQUssU0FBUyxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUt2RDs7Ozs7OztHQU9HO0FBQ0gsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUU7SUFDOUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQXNCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUgsSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7Q0FDSDtBQUVEOzs7Ozs7OztHQVFHO0FBb0VILE1BQU0sT0FBTyxVQUFVO0lBMkt0QixZQUNXLFVBQXNCLEVBQ3RCLElBQVU7UUFEVixlQUFVLEdBQVYs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O2dCQUlHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQWlCZ0MsS0FBSztzQkFBMUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNYLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFFYixXQUFXO3NCQUFwQixNQUFNO2dCQU1HLE9BQU87c0JBQWhCLE1BQU07Z0JBaUdQLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxTQUFTO2dCQWdCdkIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0Vmlld0VuY2Fwc3VsYXRpb24sXG5cdEVsZW1lbnRSZWYsXG5cdE9uRGVzdHJveSxcblx0SG9zdExpc3RlbmVyLFxuXHRUZW1wbGF0ZVJlZixcblx0T25DaGFuZ2VzLFxuXHRTaW1wbGVDaGFuZ2VzLFxuXHRBZnRlclZpZXdDaGVja2VkLFxuXHRBZnRlclZpZXdJbml0LFxuXHRWaWV3Q2hpbGQsXG5cdE9uSW5pdCxcblx0U2ltcGxlQ2hhbmdlXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgcmFuZ2VQbHVnaW4gZnJvbSBcImZsYXRwaWNrci9kaXN0L3BsdWdpbnMvcmFuZ2VQbHVnaW5cIjtcbmltcG9ydCBmbGF0cGlja3IgZnJvbSBcImZsYXRwaWNrclwiO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IGNhcmJvbkZsYXRwaWNrck1vbnRoU2VsZWN0UGx1Z2luIH0gZnJvbSBcIi4vY2FyYm9uLWZsYXRwaWNrci1tb250aC1zZWxlY3RcIjtcbmltcG9ydCAqIGFzIGxhbmd1YWdlcyBmcm9tIFwiZmxhdHBpY2tyL2Rpc3QvbDEwbi9pbmRleFwiO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gXCJmbGF0cGlja3IvZGlzdC90eXBlcy9vcHRpb25zXCI7XG5pbXBvcnQgeyBEYXRlUGlja2VySW5wdXQgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9kYXRlcGlja2VyLWlucHV0XCI7XG5pbXBvcnQgeyBJMThuIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuXG4vKipcbiAqIER1ZSB0byB0eXBlIGVycm9yLCB3ZSBoYXZlIHRvIHVzZSBzcXVhcmUgYnJhY2tldHMgcHJvcGVydHkgYWNjZXNzb3JcbiAqIFRoZXJlIGlzIGEgd2VicGFjayBpc3N1ZSB3aGVuIGF0dGVtcHRpbmcgdG8gYWNjZXNzIGV4cG9ydGVkIGxhbmd1YWdlcyBmcm9tIGZsYXRwaWNrciBsMTBuIEFuZ3VsYXIgMTQrIGFwcHNcbiAqIGxhbmd1YWdlcy5kZWZhdWx0W2xvY2FsZV0gZmFpbHMgaW4gYXBwIGNvbnN1bWluZyBDQ0EgbGlicmFyeSBidXQgcGFzc2VzIGluIHRlc3RcbiAqIGxhbmd1YWdlcy5kZWZhdWx0LmRlZmF1bHRbbG9jYWxlXSBmYWlscyBpbiB0ZXN0IGJ1dCB3b3JrcyBpbiBhcHAgY29uc3VtaW5nIENDQSBsaWJyYXJ5LlxuICpcbiAqIFRvIHBsZWFzZSBib3RoIHNjZW5hcmlvcywgd2UgYXJlIGFkZGluZyBhIGNvbmRpdGlvbiB0byBwcmV2ZW50IHRlc3RzIGZyb20gZmFpbGluZ1xuICovXG5pZiAobGFuZ3VhZ2VzLmRlZmF1bHQ/LmRlZmF1bHRbXCJlblwiXT8ud2Vla2RheXMpIHtcblx0KGxhbmd1YWdlcy5kZWZhdWx0LmRlZmF1bHRbXCJlblwiXS53ZWVrZGF5cy5zaG9ydGhhbmQgYXMgc3RyaW5nW10pID0gbGFuZ3VhZ2VzLmRlZmF1bHQuZGVmYXVsdFtcImVuXCJdLndlZWtkYXlzLmxvbmdoYW5kLm1hcChkYXkgPT4ge1xuXHRcdGlmIChkYXkgPT09IFwiVGh1cnNkYXlcIikge1xuXHRcdFx0cmV0dXJuIFwiVGhcIjtcblx0XHR9XG5cdFx0cmV0dXJuIGRheS5jaGFyQXQoMCk7XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldCBzdGFydGVkIHdpdGggaW1wb3J0aW5nIHRoZSBtb2R1bGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgRGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuICogYGBgXG4gKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3RvcnkvY29tcG9uZW50cy1kYXRlLXBpY2tlci0tc2luZ2xlKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLWRhdGUtcGlja2VyLCBpYm0tZGF0ZS1waWNrZXJcIixcblx0dGVtcGxhdGU6IGBcblx0PGRpdiBjbGFzcz1cImNkcy0tZm9ybS1pdGVtXCI+XG5cdFx0PGRpdlxuXHRcdFx0Y2xhc3M9XCJjZHMtLWRhdGUtcGlja2VyXCJcblx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdFx0J2Nkcy0tZGF0ZS1waWNrZXItLXJhbmdlJyA6IHJhbmdlLFxuXHRcdFx0XHQnY2RzLS1kYXRlLXBpY2tlci0tc2luZ2xlJyA6ICFyYW5nZSxcblx0XHRcdFx0J2Nkcy0tZGF0ZS1waWNrZXItLWxpZ2h0JyA6IHRoZW1lID09PSAnbGlnaHQnLFxuXHRcdFx0XHQnY2RzLS1za2VsZXRvbicgOiBza2VsZXRvblxuXHRcdFx0fVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG5cdFx0XHRcdDxjZHMtZGF0ZS1waWNrZXItaW5wdXRcblx0XHRcdFx0XHQjaW5wdXRcblx0XHRcdFx0XHRbbGFiZWxdPVwibGFiZWxcIlxuXHRcdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG5cdFx0XHRcdFx0W3BhdHRlcm5dPVwiaW5wdXRQYXR0ZXJuXCJcblx0XHRcdFx0XHRbaWRdPVwiaWQgKyAnLWlucHV0J1wiXG5cdFx0XHRcdFx0W3NpemVdPVwic2l6ZVwiXG5cdFx0XHRcdFx0W3R5cGVdPVwiKHJhbmdlID8gJ3JhbmdlJyA6ICdzaW5nbGUnKVwiXG5cdFx0XHRcdFx0W2hhc0ljb25dPVwiKHJhbmdlID8gZmFsc2UgOiB0cnVlKVwiXG5cdFx0XHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0XHRcdFx0XHRbaW52YWxpZF09XCJpbnZhbGlkXCJcblx0XHRcdFx0XHRbaW52YWxpZFRleHRdPVwiaW52YWxpZFRleHRcIlxuXHRcdFx0XHRcdFt3YXJuXT1cIndhcm5cIlxuXHRcdFx0XHRcdFt3YXJuVGV4dF09XCJ3YXJuVGV4dFwiXG5cdFx0XHRcdFx0W3NrZWxldG9uXT1cInNrZWxldG9uXCJcblx0XHRcdFx0XHRbaGVscGVyVGV4dF09XCJoZWxwZXJUZXh0XCJcblx0XHRcdFx0XHQodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcblx0XHRcdFx0XHQoY2xpY2spPVwib3BlbkNhbGVuZGFyKGlucHV0KVwiPlxuXHRcdFx0XHQ8L2Nkcy1kYXRlLXBpY2tlci1pbnB1dD5cblx0XHRcdDwvZGl2PlxuXG5cdFx0XHQ8ZGl2ICpuZ0lmPVwicmFuZ2VcIiBjbGFzcz1cImNkcy0tZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG5cdFx0XHRcdDxjZHMtZGF0ZS1waWNrZXItaW5wdXRcblx0XHRcdFx0XHQjcmFuZ2VJbnB1dFxuXHRcdFx0XHRcdFtsYWJlbF09XCJyYW5nZUxhYmVsXCJcblx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuXHRcdFx0XHRcdFtwYXR0ZXJuXT1cImlucHV0UGF0dGVyblwiXG5cdFx0XHRcdFx0W2lkXT1cImlkICsgJy1yYW5nZUlucHV0J1wiXG5cdFx0XHRcdFx0W3NpemVdPVwic2l6ZVwiXG5cdFx0XHRcdFx0W3R5cGVdPVwiKHJhbmdlID8gJ3JhbmdlJyA6ICdzaW5nbGUnKVwiXG5cdFx0XHRcdFx0W2hhc0ljb25dPVwiKHJhbmdlID8gdHJ1ZSA6IG51bGwpXCJcblx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdFx0XHRcdFtpbnZhbGlkXT1cInJhbmdlSW52YWxpZFwiXG5cdFx0XHRcdFx0W2ludmFsaWRUZXh0XT1cInJhbmdlSW52YWxpZFRleHRcIlxuXHRcdFx0XHRcdFt3YXJuXT1cInJhbmdlV2FyblwiXG5cdFx0XHRcdFx0W3dhcm5UZXh0XT1cInJhbmdlV2FyblRleHRcIlxuXHRcdFx0XHRcdFtza2VsZXRvbl09XCJza2VsZXRvblwiXG5cdFx0XHRcdFx0W2hlbHBlclRleHRdPVwicmFuZ2VIZWxwZXJUZXh0XCJcblx0XHRcdFx0XHQodmFsdWVDaGFuZ2UpPVwib25SYW5nZVZhbHVlQ2hhbmdlKCRldmVudClcIlxuXHRcdFx0XHRcdChjbGljayk9XCJvcGVuQ2FsZW5kYXIocmFuZ2VJbnB1dClcIj5cblx0XHRcdFx0PC9jZHMtZGF0ZS1waWNrZXItaW5wdXQ+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdGAsXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHRcdFx0dXNlRXhpc3Rpbmc6IERhdGVQaWNrZXIsXG5cdFx0XHRtdWx0aTogdHJ1ZVxuXHRcdH1cblx0XSxcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyIGltcGxlbWVudHNcblx0T25Jbml0LFxuXHRPbkRlc3Ryb3ksXG5cdE9uQ2hhbmdlcyxcblx0QWZ0ZXJWaWV3Q2hlY2tlZCxcblx0QWZ0ZXJWaWV3SW5pdCB7XG5cdHByaXZhdGUgc3RhdGljIGRhdGVQaWNrZXJDb3VudCA9IDA7XG5cblx0LyoqXG5cdCAqIFNlbGVjdCBjYWxlbmRhciByYW5nZSBtb2RlXG5cdCAqL1xuXHRASW5wdXQoKSByYW5nZSA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBGb3JtYXQgb2YgZGF0ZVxuXHQgKlxuXHQgKiBGb3IgcmVmZXJlbmNlOiBodHRwczovL2ZsYXRwaWNrci5qcy5vcmcvZm9ybWF0dGluZy9cblx0ICovXG5cdEBJbnB1dCgpIGRhdGVGb3JtYXQgPSBcIm0vZC9ZXCI7XG5cblx0LyoqXG5cdCAqIExhbmd1YWdlIG9mIHRoZSBmbGF0cGlja3IgY2FsZW5kYXIuXG5cdCAqXG5cdCAqIEZvciByZWZlcmVuY2Ugb2YgdGhlIHBvc3NpYmxlIGxvY2FsZXM6XG5cdCAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0cGlja3IvZmxhdHBpY2tyL2Jsb2IvbWFzdGVyL3NyYy9sMTBuL2luZGV4LnRzXG5cdCAqL1xuXHRASW5wdXQoKSBsYW5ndWFnZSA9IFwiZW5cIjtcblxuXHRASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0QElucHV0KCkgaGVscGVyVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0QElucHV0KCkgcmFuZ2VIZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHRASW5wdXQoKSByYW5nZUxhYmVsOiBzdHJpbmc7XG5cblx0QElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIm1tL2RkL3l5eXlcIjtcblxuXHQvKipcblx0ICogQXJpYSBsYWJlbCBhZGRlZCB0byBkYXRlcGlja2VyJ3MgY2FsZW5kYXIgY29udGFpbmVyLlxuXHQgKi9cblx0QElucHV0KCkgYXJpYUxhYmVsID0gXCJjYWxlbmRhciBjb250YWluZXJcIjtcblxuXHQvKipcblx0ICogVGhlIHBhdHRlcm4gZm9yIHRoZSB1bmRlcmx5aW5nIGlucHV0IGVsZW1lbnRcblx0ICovXG5cdEBJbnB1dCgpIGlucHV0UGF0dGVybiA9IFwiXlxcXFxkezEsMn0vXFxcXGR7MSwyfS9cXFxcZHs0fSRcIjtcblxuXHRASW5wdXQoKSBpZCA9IGBkYXRlcGlja2VyLSR7RGF0ZVBpY2tlci5kYXRlUGlja2VyQ291bnQrK31gO1xuXG5cdEBJbnB1dCgpIHNldCB2YWx1ZSh2OiAoRGF0ZSB8IHN0cmluZylbXSkge1xuXHRcdGlmICghdikge1xuXHRcdFx0diA9IFtdO1xuXHRcdH1cblx0XHR0aGlzLl92YWx1ZSA9IHY7XG5cdH1cblxuXHRnZXQgdmFsdWUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3ZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBkZXByZWNhdGVkIHNpbmNlIHY1IC0gVXNlIGBjZHNMYXllcmAgZGlyZWN0aXZlIGluc3RlYWRcblx0ICogU2V0IHRvIGBcImxpZ2h0XCJgIHRvIGFwcGx5IHRoZSBsaWdodCBzdHlsZVxuXHQgKi9cblx0QElucHV0KCkgdGhlbWU6IFwibGlnaHRcIiB8IFwiZGFya1wiID0gXCJkYXJrXCI7XG5cblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gZGlzcGxheSB0aGUgaW52YWxpZCBzdGF0ZS5cblx0ICovXG5cdEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFZhbHVlIGRpc3BsYXllZCBpZiBkYXRlcGlja2VyIGlzIGluIGFuIGludmFsaWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgYSB3YXJuaW5nIChjb250ZW50cyBzZXQgYnkgd2FybmluZ1RleHQpXG5cdCAgKi9cblx0QElucHV0KCkgd2FybiA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0cyB0aGUgd2FybmluZyB0ZXh0XG5cdCAqL1xuXHRASW5wdXQoKSB3YXJuVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuXHRASW5wdXQoKSBzaXplOiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgPSBcIm1kXCI7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIGRpc3BsYXkgdGhlIGludmFsaWQgc3RhdGUgZm9yIHRoZSBzZWNvbmQgZGF0ZXBpY2tlciBpbnB1dC5cblx0ICovXG5cdEBJbnB1dCgpIHJhbmdlSW52YWxpZCA9IGZhbHNlO1xuXHQvKipcblx0ICogVmFsdWUgZGlzcGxheWVkIGlmIHRoZSBzZWNvbmQgZGF0ZXBpY2tlciBpbnB1dCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgcmFuZ2VJbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgYSB3YXJuaW5nIGluIHRoZSBzZWNvbmQgZGF0ZXBpY2tlciBpbnB1dCAoY29udGVudHMgc2V0IGJ5IHJhbmdlV2FybmluZ1RleHQpXG5cdCAgKi9cblx0QElucHV0KCkgcmFuZ2VXYXJuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHQgZm9yIHRoZSBzZWNvbmQgZGF0ZXBpY2tlciBpbnB1dFxuXHQgKi9cblx0QElucHV0KCkgcmFuZ2VXYXJuVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuXHRASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuXG5cdEBJbnB1dCgpIHBsdWdpbnMgPSBbXTtcblxuXHRASW5wdXQoKVxuXHRzZXQgZmxhdHBpY2tyT3B0aW9ucyhvcHRpb25zOiBQYXJ0aWFsPE9wdGlvbnM+KSB7XG5cdFx0dGhpcy5fZmxhdHBpY2tyT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2ZsYXRwaWNrck9wdGlvbnMsIG9wdGlvbnMpO1xuXHR9XG5cdGdldCBmbGF0cGlja3JPcHRpb25zKCk6IFBhcnRpYWw8T3B0aW9ucz4ge1xuXHRcdGNvbnN0IHBsdWdpbnMgPSBbLi4udGhpcy5wbHVnaW5zLCBjYXJib25GbGF0cGlja3JNb250aFNlbGVjdFBsdWdpbl07XG5cdFx0aWYgKHRoaXMucmFuZ2UpIHtcblx0XHRcdHBsdWdpbnMucHVzaChyYW5nZVBsdWdpbih7IGlucHV0OiBgIyR7dGhpcy5pZH0tcmFuZ2VJbnB1dGAsIHBvc2l0aW9uOiBcImxlZnRcIiB9KSk7XG5cdFx0fVxuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9mbGF0cGlja3JPcHRpb25zLCB0aGlzLmZsYXRwaWNrckJhc2VPcHRpb25zLCB7XG5cdFx0XHRtb2RlOiB0aGlzLnJhbmdlID8gXCJyYW5nZVwiIDogXCJzaW5nbGVcIixcblx0XHRcdHBsdWdpbnMsXG5cdFx0XHRkYXRlRm9ybWF0OiB0aGlzLmRhdGVGb3JtYXQsXG5cdFx0XHRsb2NhbGU6IGxhbmd1YWdlcy5kZWZhdWx0Py5kZWZhdWx0W3RoaXMubGFuZ3VhZ2VdIHx8IGxhbmd1YWdlcy5kZWZhdWx0W3RoaXMubGFuZ3VhZ2VdXG5cdFx0fSk7XG5cdH1cblxuXHRAVmlld0NoaWxkKFwiaW5wdXRcIiwgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXQ6IERhdGVQaWNrZXJJbnB1dDtcblx0QFZpZXdDaGlsZChcInJhbmdlSW5wdXRcIikgcmFuZ2VJbnB1dDogRGF0ZVBpY2tlcklucHV0O1xuXG5cdEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0LyoqXG5cdCAqIFdlIGFyZSBvdmVycmlkaW5nIG9uQ2xvc2UgZXZlbnQgZXZlbiBpZiB1c2VycyBwYXNzIGl0IHZpYSBmbGF0cGlja3Igb3B0aW9uc1xuXHQgKiBFbWl0cyBhbiBldmVudCB3aGVuIGRhdGUgcGlja2VyIGNsb3Nlc1xuXHQgKi9cblx0QE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdHByb3RlY3RlZCBfdmFsdWUgPSBbXTtcblxuXHRwcm90ZWN0ZWQgX2ZsYXRwaWNrck9wdGlvbnM6IFBhcnRpYWw8T3B0aW9ucz4gPSB7XG5cdFx0YWxsb3dJbnB1dDogdHJ1ZVxuXHR9O1xuXG5cdHByb3RlY3RlZCBmbGF0cGlja3JCYXNlT3B0aW9ucyA9IHtcblx0XHRtb2RlOiBcInNpbmdsZVwiLFxuXHRcdGRhdGVGb3JtYXQ6IFwibS9kL1lcIixcblx0XHRwbHVnaW5zOiB0aGlzLnBsdWdpbnMsXG5cdFx0b25PcGVuOiAoKSA9PiB7XG5cdFx0XHR0aGlzLnVwZGF0ZUNsYXNzTmFtZXMoKTtcblx0XHRcdHRoaXMudXBkYXRlQXR0cmlidXRlcygpO1xuXHRcdFx0dGhpcy51cGRhdGVDYWxlbmRhckxpc3RlbmVycygpO1xuXHRcdH0sXG5cdFx0b25DbG9zZTogKGRhdGUpID0+IHtcblx0XHRcdC8vIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBgZmxhdHBpY2tySW5zdGFuY2Ugc2VsZWN0ZWREYXRlc2AgYXJlIGluIHN5bmMgd2l0aCB0aGUgdmFsdWVzIG9mXG5cdFx0XHQvLyB0aGUgaW5wdXRzIHdoZW4gdGhlIGNhbGVuZGFyIGNsb3Nlcy5cblx0XHRcdGlmICh0aGlzLnJhbmdlICYmIHRoaXMuZmxhdHBpY2tySW5zdGFuY2UpIHtcblx0XHRcdFx0Y29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcblx0XHRcdFx0Y29uc3QgcmFuZ2VJbnB1dFZhbHVlID0gdGhpcy5yYW5nZUlucHV0LmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG5cdFx0XHRcdGlmIChpbnB1dFZhbHVlIHx8IHJhbmdlSW5wdXRWYWx1ZSkge1xuXHRcdFx0XHRcdGNvbnN0IHBhcnNlRGF0ZSA9IChkYXRlOiBzdHJpbmcpID0+IHRoaXMuZmxhdHBpY2tySW5zdGFuY2UucGFyc2VEYXRlKGRhdGUsIHRoaXMuZGF0ZUZvcm1hdCk7XG5cdFx0XHRcdFx0dGhpcy5zZXREYXRlVmFsdWVzKFtwYXJzZURhdGUoaW5wdXRWYWx1ZSksIHBhcnNlRGF0ZShyYW5nZUlucHV0VmFsdWUgfHwgaW5wdXRWYWx1ZSldKTtcblx0XHRcdFx0XHR0aGlzLmRvU2VsZWN0KHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlcyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMub25DbG9zZS5lbWl0KGRhdGUpO1xuXHRcdH0sXG5cdFx0b25EYXlDcmVhdGU6IChfZE9iaiwgX2RTdHIsIF9mcCwgZGF5RWxlbSkgPT4ge1xuXHRcdFx0ZGF5RWxlbS5jbGFzc0xpc3QuYWRkKFwiY2RzLS1kYXRlLXBpY2tlcl9fZGF5XCIpO1xuXHRcdH0sXG5cdFx0bmV4dEFycm93OiB0aGlzLnJpZ2h0QXJyb3dIVE1MKCksXG5cdFx0cHJldkFycm93OiB0aGlzLmxlZnRBcnJvd0hUTUwoKSxcblx0XHR2YWx1ZTogdGhpcy52YWx1ZVxuXHR9O1xuXG5cdHByb3RlY3RlZCBmbGF0cGlja3JJbnN0YW5jZSA9IG51bGw7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG5cdFx0cHJvdGVjdGVkIGkxOG46IEkxOG5cblx0KSB7IH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHQvLyBpZiBpMThuIGlzIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuIGVuIHdlJ2xsIHdhbnQgdG8gY2hhbmdlIHRoZSBsYW5ndWFnZVxuXHRcdC8vIG90aGVyd2lzZSB3ZSdsbCBqdXN0IHVzZSB0aGUgbG9jYWwgc2V0dGluZ1xuXHRcdGlmICh0aGlzLmkxOG4uZ2V0TG9jYWxlKCkgIT09IFwiZW5cIikge1xuXHRcdFx0dGhpcy5pMThuLmdldExvY2FsZU9ic2VydmFibGUoKS5zdWJzY3JpYmUobG9jYWxlID0+IHtcblx0XHRcdFx0dGhpcy5sYW5ndWFnZSA9IGxvY2FsZTtcblx0XHRcdFx0dGhpcy5yZXNldEZsYXRwaWNrckluc3RhbmNlKCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cdFx0Ly8gUmVzZXQgdGhlIGZsYXRwaWNrciBpbnN0YW5jZSBvbiBpbnB1dCBjaGFuZ2VzIHRoYXQgYWZmZWN0IGZsYXRwaWNrci5cblx0XHRjb25zdCBmbGF0cGlja3JDaGFuZ2VLZXlzID0gW1xuXHRcdFx0XCJyYW5nZVwiLFxuXHRcdFx0XCJkYXRlRm9ybWF0XCIsXG5cdFx0XHRcImxhbmd1YWdlXCIsXG5cdFx0XHRcImlkXCIsXG5cdFx0XHRcInZhbHVlXCIsXG5cdFx0XHRcInBsdWdpbnNcIixcblx0XHRcdFwiZmxhdHBpY2tyT3B0aW9uc1wiXG5cdFx0XTtcblx0XHRjb25zdCBjaGFuZ2VLZXlzID0gT2JqZWN0LmtleXMoY2hhbmdlcyk7XG5cdFx0aWYgKGNoYW5nZUtleXMuc29tZShrZXkgPT4gZmxhdHBpY2tyQ2hhbmdlS2V5cy5pbmNsdWRlcyhrZXkpKSkge1xuXHRcdFx0dGhpcy5yZXNldEZsYXRwaWNrckluc3RhbmNlKGNoYW5nZXMudmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuYWRkSW5wdXRMaXN0ZW5lcnMoKTtcblx0XHR9LCAwKTtcblx0fVxuXG5cdC8vIGJlY2F1c2UgdGhlIGFjdHVhbCB2aWV3IG1heSBiZSBkZWxheWVkIGluIGxvYWRpbmcgKHRoaW5rIHByb2plY3Rpb24gaW50byBhIHRhYiBwYW5lKVxuXHQvLyBhbmQgYmVjYXVzZSB3ZSByZWx5IG9uIGEgbGlicmFyeSB0aGF0IG9wZXJhdGVzIG91dHNpZGUgdGhlIEFuZ3VsYXIgdmlldyBvZiB0aGUgd29ybGRcblx0Ly8gd2UgbmVlZCB0byBrZWVwIHRyeWluZyB0byBsb2FkIHRoZSBsaWJyYXJ5LCB1bnRpbCB0aGUgcmVsZXZhbnQgRE9NIGlzIGFjdHVhbGx5IGxpdmVcblx0bmdBZnRlclZpZXdDaGVja2VkKCkge1xuXHRcdGlmICghdGhpcy5pc0ZsYXRwaWNrckxvYWRlZCgpKSB7XG5cdFx0XHQvLyBAdHMtaWdub3JlIHRzIGlzIHVuaGFwcHkgd2l0aCB0aGUgYmVsb3cgY2FsbCB0byBgZmxhdHBpY2tyYFxuXHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZSA9IGZsYXRwaWNrcihgIyR7dGhpcy5pZH0taW5wdXRgLCB0aGlzLmZsYXRwaWNrck9wdGlvbnMpO1xuXHRcdFx0Ly8gaWYgKGFuZCBvbmx5IGlmKSB0aGUgaW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkLCB3ZSBjYW4gc2V0IHRoZSBkYXRlIHZhbHVlc1xuXHRcdFx0aWYgKHRoaXMuaXNGbGF0cGlja3JMb2FkZWQoKSkge1xuXHRcdFx0XHRpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXREYXRlVmFsdWVzKHRoaXMudmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcImZvY3VzaW5cIilcblx0b25Gb2N1cygpIHtcblx0XHQvLyBVcGRhdGVzIHRoZSBtb250aCBtYW51YWxseSB3aGVuIGNhbGVuZGFyIG1vZGUgaXMgcmFuZ2UgYmVjYXVzZSBtb250aFxuXHRcdC8vIHdpbGwgbm90IHVwZGF0ZSBwcm9wZXJseSB3aXRob3V0IG1hbnVhbGx5IHVwZGF0aW5nIHRoZW0gb24gZm9jdXMuXG5cdFx0aWYgKHRoaXMucmFuZ2UpIHtcblx0XHRcdGlmICh0aGlzLnJhbmdlSW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMV0pIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzFdLmdldE1vbnRoKCk7XG5cdFx0XHRcdHRoaXMuZmxhdHBpY2tySW5zdGFuY2UuY2hhbmdlTW9udGgoY3VycmVudE1vbnRoLCBmYWxzZSk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuaW5wdXQuaW5wdXQubmF0aXZlRWxlbWVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMF0pIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzBdLmdldE1vbnRoKCk7XG5cdFx0XHRcdHRoaXMuZmxhdHBpY2tySW5zdGFuY2UuY2hhbmdlTW9udGgoY3VycmVudE1vbnRoLCBmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcImZvY3Vzb3V0XCIpXG5cdG9uRm9jdXNPdXQoKSB7XG5cdFx0dGhpcy5vblRvdWNoZWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZXMgYSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCB0byB0aGUgY29tcG9uZW50LiBFeHBlY3RzIHRoZSB2YWx1ZSB0byBiZSBgbnVsbGAgb3IgYChEYXRlIHwgc3RyaW5nKVtdYFxuXHQgKiBAcGFyYW0gdmFsdWUgdmFsdWUgcmVjZWl2ZWQgZnJvbSB0aGUgbW9kZWxcblx0ICovXG5cdHdyaXRlVmFsdWUodmFsdWU6IChEYXRlIHwgc3RyaW5nKVtdKSB7XG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuaXNGbGF0cGlja3JMb2FkZWQoKSAmJiB0aGlzLmZsYXRwaWNrckluc3RhbmNlLmNvbmZpZykge1xuXHRcdFx0XHR0aGlzLnNldERhdGVWYWx1ZXModGhpcy52YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBtZXRob2QgdG8gcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlIHRoZSBEYXRlUGlja2VyLlxuXHQgKlxuXHQgKiBleDogYHRoaXMuZm9ybUdyb3VwLmdldChcIm15RGF0ZVBpY2tlclwiKS5kaXNhYmxlKCk7YFxuXHQgKlxuXHQgKiBAcGFyYW0gaXNEaXNhYmxlZCBgdHJ1ZWAgdG8gZGlzYWJsZSB0aGUgRGF0ZVBpY2tlclxuXHQgKi9cblx0c2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG5cdFx0dGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cdH1cblxuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuXHRcdHRoaXMub25Ub3VjaGVkID0gZm47XG5cdH1cblxuXHRvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHsgfTtcblxuXHRwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XG5cblx0LyoqXG5cdCAqIENsZWFucyB1cCBvdXIgZmxhdHBpY2tyIGluc3RhbmNlXG5cdCAqL1xuXHRuZ09uRGVzdHJveSgpIHtcblx0XHRpZiAoIXRoaXMuaXNGbGF0cGlja3JMb2FkZWQoKSkgeyByZXR1cm47IH1cblx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLmRlc3Ryb3koKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBgdmFsdWVDaGFuZ2VgIGV2ZW50IGZyb20gdGhlIHByaW1hcnkvc2luZ2xlIGlucHV0XG5cdCAqL1xuXHRvblZhbHVlQ2hhbmdlKGV2ZW50OiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5pc0ZsYXRwaWNrckxvYWRlZCgpKSB7XG5cdFx0XHRjb25zdCBkYXRlID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5wYXJzZURhdGUoZXZlbnQsIHRoaXMuZGF0ZUZvcm1hdCk7XG5cdFx0XHRpZiAodGhpcy5yYW5nZSkge1xuXHRcdFx0XHR0aGlzLnNldERhdGVWYWx1ZXMoW2RhdGUsIHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1sxXV0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5zZXREYXRlVmFsdWVzKFtkYXRlXSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmRvU2VsZWN0KHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlcyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIGB2YWx1ZUNoYW5nZWAgZXZlbnQgZnJvbSB0aGUgcmFuZ2UgaW5wdXRcblx0ICovXG5cdG9uUmFuZ2VWYWx1ZUNoYW5nZShldmVudDogc3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuaXNGbGF0cGlja3JMb2FkZWQoKSAmJiB0aGlzLmZsYXRwaWNrckluc3RhbmNlLmlzT3Blbikge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2UucGFyc2VEYXRlKGV2ZW50LCB0aGlzLmRhdGVGb3JtYXQpO1xuXHRcdFx0dGhpcy5zZXREYXRlVmFsdWVzKFt0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMF0sIGRhdGVdKTtcblx0XHRcdHRoaXMuZG9TZWxlY3QodGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyBvcGVuaW5nIHRoZSBjYWxlbmRhciBcInByb3Blcmx5XCIgd2hlbiB0aGUgY2FsZW5kYXIgaWNvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0b3BlbkNhbGVuZGFyKGRhdGVwaWNrZXJJbnB1dDogRGF0ZVBpY2tlcklucHV0KSB7XG5cdFx0aWYgKHRoaXMucmFuZ2UpIHtcblx0XHRcdGRhdGVwaWNrZXJJbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG5cblx0XHRcdC8vIElmIHRoZSBmaXJzdCBpbnB1dCdzIGNhbGVuZGFyIGljb24gaXMgY2xpY2tlZCB3aGVuIGNhbGVuZGFyIGlzIGluIHJhbmdlIG1vZGUsIHRoZW5cblx0XHRcdC8vIHRoZSBtb250aCBhbmQgeWVhciBuZWVkcyB0byBiZSBtYW51YWxseSBjaGFuZ2VkIHRvIHRoZSBjdXJyZW50IHNlbGVjdGVkIG1vbnRoIGFuZFxuXHRcdFx0Ly8geWVhciBvdGhlcndpc2UgdGhlIGNhbGVuZGFyIHZpZXcgd2lsbCBub3QgYmUgdXBkYXRlZCB1cG9uIG9wZW5pbmcuXG5cdFx0XHRpZiAoZGF0ZXBpY2tlcklucHV0ID09PSB0aGlzLmlucHV0ICYmIHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1swXSkge1xuXHRcdFx0XHRjb25zdCBjdXJyZW50TW9udGggPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMF0uZ2V0TW9udGgoKTtcblxuXHRcdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLmN1cnJlbnRZZWFyID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzBdLmdldEZ1bGxZZWFyKCk7XG5cdFx0XHRcdHRoaXMuZmxhdHBpY2tySW5zdGFuY2UuY2hhbmdlTW9udGgoY3VycmVudE1vbnRoLCBmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFNpbmdsZS1tb2RlIGZsYXRwaWNrciBoYW5kbGVzIG1vdXNlZG93biBidXQgbm90IGNsaWNrLCBzbyBuYXRpdmVFbGVtZW50LmNsaWNrKCkgd29uJ3Rcblx0XHRcdC8vIHdvcmsgd2hlbiB0aGUgY2FsZW5kYXIgaWNvbiBpcyBjbGlja2VkLiBJbiB0aGlzIGNhc2Ugd2Ugc2ltcGx5IHVzZSBmbGF0cGlja3Iub3BlbigpLlxuXHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZS5vcGVuKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIHVwZGF0ZUNhbGVuZGFyTGlzdGVuZXJzKCkge1xuXHRcdGNvbnN0IGNhbGVuZGFyQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5mbGF0cGlja3ItY2FsZW5kYXJcIik7XG5cdFx0QXJyYXkuZnJvbShjYWxlbmRhckNvbnRhaW5lcikuZm9yRWFjaChjYWxlbmRhciA9PiB7XG5cdFx0XHRjYWxlbmRhci5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5wcmV2ZW50Q2FsZW5kYXJDbG9zZSk7XG5cdFx0XHRjYWxlbmRhci5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5wcmV2ZW50Q2FsZW5kYXJDbG9zZSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgZXZlbnQgbGlzdGVuZXJzIGZvciB0aGUgZGF0ZXBpY2tlciBpbnB1dCBhbmQgcmFuZ2UgaW5wdXQgZmllbGRzLlxuXHQgKi9cblx0cHJvdGVjdGVkIGFkZElucHV0TGlzdGVuZXJzKCkge1xuXHRcdGlmICghdGhpcy5pc0ZsYXRwaWNrckxvYWRlZCgpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQWxsb3dzIGZvY3VzIHRyYW5zaXRpb24gZnJvbSB0aGUgZGF0ZXBpY2tlciBpbnB1dCBvciByYW5nZSBpbnB1dCBmaWVsZCB0b1xuXHRcdC8vIGZsYXRwaWNrciBjYWxlbmRhciB1c2luZyBhIGtleWJvYXJkLlxuXHRcdGNvbnN0IGFkZEZvY3VzQ2FsZW5kYXJMaXN0ZW5lciA9IChlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG5cdFx0XHRlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG5cdFx0XHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZS5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcblx0XHRcdFx0XHRpZiAoIXRoaXMuZmxhdHBpY2tySW5zdGFuY2UuaXNPcGVuKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLm9wZW4oKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCBjYWxlbmRhckNvbnRhaW5lciA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2UuY2FsZW5kYXJDb250YWluZXI7XG5cdFx0XHRcdFx0Y29uc3QgZGF5RWxlbWVudCA9IGNhbGVuZGFyQ29udGFpbmVyICYmIGNhbGVuZGFyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIuZmxhdHBpY2tyLWRheVt0YWJpbmRleF1cIik7XG5cblx0XHRcdFx0XHRpZiAoZGF5RWxlbWVudCkge1xuXHRcdFx0XHRcdFx0ZGF5RWxlbWVudC5mb2N1cygpO1xuXG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgdXNlciBtYW51YWxseSBpbnB1dHMgYSB2YWx1ZSBpbnRvIHRoZSBkYXRlIGZpZWxkIGFuZCBwcmVzc2VzIGFycm93IGRvd24sXG5cdFx0XHRcdFx0XHQvLyBkYXRlcGlja2VyIGlucHV0IG9uY2hhbmdlIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gZm9jdXMgaXMgcmVtb3ZlZCBmcm9tIGl0IGFuZFxuXHRcdFx0XHRcdFx0Ly8gYGZsYXRwaWNrckluc3RhbmNlLnNldERhdGVgIGFuZCBgZmxhdHBpY2tySW5zdGFuY2UuY2hhbmdlTW9udGhgIHdpbGwgYmUgaW52b2tlZFxuXHRcdFx0XHRcdFx0Ly8gd2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5IGNoYW5nZSBmb2N1cyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkb2N1bWVudC5cblx0XHRcdFx0XHRcdGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBkYXlFbGVtZW50ICYmIHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlRWxlbSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZUVsZW0uZm9jdXMoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAodGhpcy5pbnB1dCAmJiB0aGlzLmlucHV0LmlucHV0KSB7XG5cdFx0XHRhZGRGb2N1c0NhbGVuZGFyTGlzdGVuZXIodGhpcy5pbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50KTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5yYW5nZUlucHV0ICYmIHRoaXMucmFuZ2VJbnB1dC5pbnB1dCkge1xuXHRcdFx0YWRkRm9jdXNDYWxlbmRhckxpc3RlbmVyKHRoaXMucmFuZ2VJbnB1dC5pbnB1dC5uYXRpdmVFbGVtZW50KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVzZXRzIHRoZSBmbGF0cGlja3IgaW5zdGFuY2Ugd2hpbGUga2VlcGluZyB0aGUgZGF0ZSB2YWx1ZXMgKG9yIHVwZGF0aW5nIHRoZW0gaWYgbmV3RGF0ZXMgaXMgcHJvdmlkZWQpXG5cdCAqXG5cdCAqIFVzZWQgdG8gcGljayB1cCBpbnB1dCBjaGFuZ2VzIG9yIGxvY2FsZSBjaGFuZ2VzLlxuXHQgKlxuXHQgKiBAcGFyYW0gbmV3RGF0ZXMgQW4gb3B0aW9uYWwgU2ltcGxlQ2hhbmdlIG9mIGRhdGUgdmFsdWVzXG5cdCAqL1xuXHRwcm90ZWN0ZWQgcmVzZXRGbGF0cGlja3JJbnN0YW5jZShuZXdEYXRlcz86IFNpbXBsZUNoYW5nZSkge1xuXHRcdGlmICh0aGlzLmlzRmxhdHBpY2tyTG9hZGVkKCkpIHtcblx0XHRcdGxldCBkYXRlcyA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlcztcblx0XHRcdGlmIChuZXdEYXRlcyAmJiB0aGlzLmRpZERhdGVWYWx1ZUNoYW5nZShuZXdEYXRlcy5jdXJyZW50VmFsdWUsIG5ld0RhdGVzLnByZXZpb3VzVmFsdWUpKSB7XG5cdFx0XHRcdGRhdGVzID0gbmV3RGF0ZXMuY3VycmVudFZhbHVlO1xuXHRcdFx0fVxuXHRcdFx0Ly8gb25seSByZXNldCB0aGUgZmxhdHBpY2tyIGluc3RhbmNlIG9uIElucHV0IGNoYW5nZXNcblx0XHRcdC8vIEB0cy1pZ25vcmUgdHMgaXMgdW5oYXBweSB3aXRoIHRoZSBiZWxvdyBjYWxsIHRvIGBmbGF0cGlja3JgXG5cdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlID0gZmxhdHBpY2tyKGAjJHt0aGlzLmlkfS1pbnB1dGAsIHRoaXMuZmxhdHBpY2tyT3B0aW9ucyk7XG5cdFx0XHR0aGlzLnNldERhdGVWYWx1ZXMoZGF0ZXMpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYXJib24gdXNlcyBhIG51bWJlciBvZiBzcGVjaWZpYyBjbGFzc25hbWVzIGZvciBwYXJ0cyBvZiB0aGUgZmxhdHBpY2tyIC0gdGhpcyBpZGVtcG90ZW50IG1ldGhvZCBhcHBsaWVzIHRoZW0gaWYgbmVlZGVkLlxuXHQgKi9cblx0cHJvdGVjdGVkIHVwZGF0ZUNsYXNzTmFtZXMoKSB7XG5cdFx0aWYgKCF0aGlzLmVsZW1lbnRSZWYpIHsgcmV0dXJuOyB9XG5cdFx0Ly8gZ2V0IGFsbCB0aGUgcG9zc2libGUgZmxhdHBpY2tycyBpbiB0aGUgZG9jdW1lbnQgLSB3ZSBuZWVkIHRvIGFkZCBjbGFzc2VzIHRvIChwb3RlbnRpYWxseSkgYWxsIG9mIHRoZW1cblx0XHRjb25zdCBjYWxlbmRhckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZmxhdHBpY2tyLWNhbGVuZGFyXCIpO1xuXHRcdGNvbnN0IG1vbnRoQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5mbGF0cGlja3ItbW9udGhcIik7XG5cdFx0Y29uc3Qgd2Vla2RheXNDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmZsYXRwaWNrci13ZWVrZGF5c1wiKTtcblx0XHRjb25zdCB3ZWVrZGF5Q29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5mbGF0cGlja3Itd2Vla2RheVwiKTtcblx0XHRjb25zdCBkYXlzQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5mbGF0cGlja3ItZGF5c1wiKTtcblx0XHRjb25zdCBkYXlDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmZsYXRwaWNrci1kYXlcIik7XG5cblx0XHQvLyBhZGQgY2xhc3NlcyB0byBsaXN0cyBvZiBlbGVtZW50c1xuXHRcdGNvbnN0IGFkZENsYXNzSWZOb3RFeGlzdHMgPSAoY2xhc3NuYW1lOiBzdHJpbmcsIGVsZW1lbnRMaXN0OiBOb2RlTGlzdE9mPEVsZW1lbnQ+KSA9PiB7XG5cdFx0XHRBcnJheS5mcm9tKGVsZW1lbnRMaXN0KS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuXHRcdFx0XHRpZiAoIWVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzbmFtZSkpIHtcblx0XHRcdFx0XHRlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NuYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdC8vIGFkZCBjbGFzc2VzIChidXQgb25seSBpZiB0aGV5IGRvbid0IGV4aXN0LCBzbWFsbCBwZXJmIHdpbilcblx0XHRhZGRDbGFzc0lmTm90RXhpc3RzKFwiY2RzLS1kYXRlLXBpY2tlcl9fY2FsZW5kYXJcIiwgY2FsZW5kYXJDb250YWluZXIpO1xuXHRcdGFkZENsYXNzSWZOb3RFeGlzdHMoXCJjZHMtLWRhdGUtcGlja2VyX19tb250aFwiLCBtb250aENvbnRhaW5lcik7XG5cdFx0YWRkQ2xhc3NJZk5vdEV4aXN0cyhcImNkcy0tZGF0ZS1waWNrZXJfX3dlZWtkYXlzXCIsIHdlZWtkYXlzQ29udGFpbmVyKTtcblx0XHRhZGRDbGFzc0lmTm90RXhpc3RzKFwiY2RzLS1kYXRlLXBpY2tlcl9fZGF5c1wiLCBkYXlzQ29udGFpbmVyKTtcblxuXHRcdC8vIGFkZCB3ZWVrZGF5IGNsYXNzZXMgYW5kIGZvcm1hdCB0aGUgdGV4dFxuXHRcdEFycmF5LmZyb20od2Vla2RheUNvbnRhaW5lcikuZm9yRWFjaChlbGVtZW50ID0+IHtcblx0XHRcdGVsZW1lbnQuaW5uZXJIVE1MID0gZWxlbWVudC5pbm5lckhUTUwucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcblx0XHRcdGVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImNkcy0tZGF0ZS1waWNrZXJfX3dlZWtkYXlcIik7XG5cdFx0fSk7XG5cblx0XHQvLyBhZGQgZGF5IGNsYXNzZXMgYW5kIHNwZWNpYWwgY2FzZSB0aGUgXCJ0b2RheVwiIGVsZW1lbnQgYmFzZWQgb24gYHRoaXMudmFsdWVgXG5cdFx0QXJyYXkuZnJvbShkYXlDb250YWluZXIpLmZvckVhY2goZWxlbWVudCA9PiB7XG5cdFx0XHRlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJjZHMtLWRhdGUtcGlja2VyX19kYXlcIik7XG5cdFx0XHRpZiAoIXRoaXMudmFsdWUpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwidG9kYXlcIikgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGVsZW1lbnQuY2xhc3NMaXN0LmFkZChcIm5vLWJvcmRlclwiKTtcblx0XHRcdH0gZWxzZSBpZiAoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJ0b2RheVwiKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJuby1ib3JkZXJcIik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgdXBkYXRlQXR0cmlidXRlcygpIHtcblx0XHRjb25zdCBjYWxlbmRhckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZmxhdHBpY2tyLWNhbGVuZGFyXCIpO1xuXHRcdEFycmF5LmZyb20oY2FsZW5kYXJDb250YWluZXIpLmZvckVhY2goY2FsZW5kYXIgPT4ge1xuXHRcdFx0Y2FsZW5kYXIuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcInJlZ2lvblwiKTtcblx0XHRcdGNhbGVuZGFyLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgdGhpcy5hcmlhTGFiZWwpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgdGhlIGdpdmVuIGRhdGUgdmFsdWUgYXJyYXkgdG8gYm90aCB0aGUgZmxhdHBpY2tyIGluc3RhbmNlIGFuZCB0aGUgYGlucHV0YChzKVxuXHQgKiBAcGFyYW0gZGF0ZXMgdGhlIGRhdGUgdmFsdWVzIHRvIGFwcGx5XG5cdCAqL1xuXHRwcm90ZWN0ZWQgc2V0RGF0ZVZhbHVlcyhkYXRlczogKERhdGUgfCBzdHJpbmcpW10pIHtcblx0XHRpZiAodGhpcy5pc0ZsYXRwaWNrckxvYWRlZCgpKSB7XG5cdFx0XHRjb25zdCBzaW5nbGVJbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3RoaXMuaWR9LWlucHV0YCk7XG5cdFx0XHRjb25zdCByYW5nZUlucHV0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgIyR7dGhpcy5pZH0tcmFuZ2VJbnB1dGApO1xuXG5cdFx0XHQvLyBgZmxhdHBpY2tySW5zdGFuY2Uuc2V0RGF0ZWAgcmVtb3ZlcyB0aGUgZm9jdXMgb24gdGhlIHNlbGVjdGVkIGRhdGUgZWxlbWVudCBhbmQgd2lsbFxuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBjaGFuZ2UgZm9jdXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQuIElmIGEgc2VsZWN0ZWQgZGF0ZSBpc1xuXHRcdFx0Ly8gZm9jdXNlZCBiZWZvcmUgYGZsYXRwaWNrckluc3RhbmNlLnNldERhdGVgIGlzIGludm9rZWQgdGhlbiBpdCBzaG91bGQgcmVtYWluIGZvY3VzZWQuXG5cdFx0XHRsZXQgc2hvdWxkUmVmb2N1c0RhdGVFbGVtZW50ID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVFbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG5cdFx0XHQvLyBzZXQgdGhlIGRhdGUgb24gdGhlIGluc3RhbmNlXG5cdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNldERhdGUoZGF0ZXMpO1xuXG5cdFx0XHRpZiAoc2hvdWxkUmVmb2N1c0RhdGVFbGVtZW50KSB7XG5cdFx0XHRcdHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlRWxlbS5mb2N1cygpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyB3ZSBjYW4gZWl0aGVyIHNldCBhIGRhdGUgdmFsdWUgb3IgYW4gZW1wdHkgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuXHRcdFx0bGV0IHNpbmdsZURhdGUgPSBcIlwiO1xuXHRcdFx0Ly8gaWYgZGF0ZSBpcyBhIHN0cmluZywgcGFyc2UgYW5kIGZvcm1hdFxuXHRcdFx0aWYgKHR5cGVvZiB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMF0gPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0c2luZ2xlRGF0ZSA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2UucGFyc2VEYXRlKHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1swXSwgdGhpcy5kYXRlRm9ybWF0KTtcblx0XHRcdFx0c2luZ2xlRGF0ZSA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2UuZm9ybWF0RGF0ZShzaW5nbGVEYXRlLCB0aGlzLmRhdGVGb3JtYXQpO1xuXHRcdFx0Ly8gaWYgZGF0ZSBpcyBub3QgYSBzdHJpbmcgd2UgY2FuIGFzc3VtZSBpdCdzIGEgRGF0ZSBhbmQgd2Ugc2hvdWxkIGZvcm1hdFxuXHRcdFx0fSBlbHNlIGlmICghIXRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1swXSkge1xuXHRcdFx0XHRzaW5nbGVEYXRlID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5mb3JtYXREYXRlKHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1swXSwgdGhpcy5kYXRlRm9ybWF0KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHJhbmdlSW5wdXQpIHtcblx0XHRcdFx0Ly8gd2UgY2FuIGVpdGhlciBzZXQgYSBkYXRlIHZhbHVlIG9yIGFuIGVtcHR5IHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBhbiBlbXB0eSBzdHJpbmdcblx0XHRcdFx0bGV0IHJhbmdlRGF0ZSA9IFwiXCI7XG5cdFx0XHRcdC8vIGlmIGRhdGUgaXMgYSBzdHJpbmcsIHBhcnNlIGFuZCBmb3JtYXRcblx0XHRcdFx0aWYgKHR5cGVvZiB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMV0gPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0XHRyYW5nZURhdGUgPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLnBhcnNlRGF0ZSh0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMV0udG9TdHJpbmcoKSwgdGhpcy5kYXRlRm9ybWF0KTtcblx0XHRcdFx0XHRyYW5nZURhdGUgPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLmZvcm1hdERhdGUocmFuZ2VEYXRlLCB0aGlzLmRhdGVGb3JtYXQpO1xuXHRcdFx0XHQvLyBpZiBkYXRlIGlzIG5vdCBhIHN0cmluZyB3ZSBjYW4gYXNzdW1lIGl0J3MgYSBEYXRlIGFuZCB3ZSBzaG91bGQgZm9ybWF0XG5cdFx0XHRcdH0gZWxzZSBpZiAoISF0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZXNbMV0pIHtcblx0XHRcdFx0XHRyYW5nZURhdGUgPSB0aGlzLmZsYXRwaWNrckluc3RhbmNlLmZvcm1hdERhdGUodGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzFdLCB0aGlzLmRhdGVGb3JtYXQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdC8vIGFwcGx5IHRoZSB2YWx1ZXNcblx0XHRcdFx0XHRyYW5nZUlucHV0LnZhbHVlID0gcmFuZ2VEYXRlO1xuXHRcdFx0XHRcdHNpbmdsZUlucHV0LnZhbHVlID0gc2luZ2xlRGF0ZTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIHByZXZlbnRDYWxlbmRhckNsb3NlID0gZXZlbnQgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cblx0cHJvdGVjdGVkIGRvU2VsZWN0KHNlbGVjdGVkVmFsdWU6IChEYXRlIHwgc3RyaW5nKVtdKSB7XG5cdFx0Ly8gSW4gcmFuZ2UgbW9kZSwgaWYgYSBkYXRlIGlzIHNlbGVjdGVkIGZyb20gdGhlIGZpcnN0IGNhbGVuZGFyIHRoYXQgaXMgZnJvbSB0aGUgcHJldmlvdXMgbW9udGgsXG5cdFx0Ly8gdGhlIG1vbnRoIHdpbGwgbm90IGJlIHVwZGF0ZWQgb24gdGhlIGNhbGVuZGFyIHVudGlsIHRoZSBjYWxlbmRhciBpcyByZS1vcGVuZWQuXG5cdFx0Ly8gVGhpcyB3aWxsIG1ha2Ugc3VyZSB0aGUgY2FsZW5kYXIgaXMgdXBkYXRlZCB3aXRoIHRoZSBjb3JyZWN0IG1vbnRoLlxuXHRcdGlmICh0aGlzLnJhbmdlICYmIHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlc1swXSkge1xuXHRcdFx0Y29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZWxlY3RlZERhdGVzWzBdLmdldE1vbnRoKCk7XG5cblx0XHRcdC8vIGBmbGF0cGlja3JJbnN0YW5jZS5jaGFuZ2VNb250aGAgcmVtb3ZlcyB0aGUgZm9jdXMgb24gdGhlIHNlbGVjdGVkIGRhdGUgZWxlbWVudCBhbmQgd2lsbFxuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBjaGFuZ2UgZm9jdXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQuIElmIGEgc2VsZWN0ZWQgZGF0ZSBpc1xuXHRcdFx0Ly8gZm9jdXNlZCBiZWZvcmUgYGZsYXRwaWNrckluc3RhbmNlLmNoYW5nZU1vbnRoYCBpcyBpbnZva2VkIHRoZW4gaXQgc2hvdWxkIHJlbWFpbiBmb2N1c2VkLlxuXHRcdFx0bGV0IHNob3VsZFJlZm9jdXNEYXRlRWxlbWVudCA9IHRoaXMuZmxhdHBpY2tySW5zdGFuY2Uuc2VsZWN0ZWREYXRlRWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuXHRcdFx0dGhpcy5mbGF0cGlja3JJbnN0YW5jZS5jaGFuZ2VNb250aChjdXJyZW50TW9udGgsIGZhbHNlKTtcblxuXHRcdFx0aWYgKHNob3VsZFJlZm9jdXNEYXRlRWxlbWVudCkge1xuXHRcdFx0XHR0aGlzLmZsYXRwaWNrckluc3RhbmNlLnNlbGVjdGVkRGF0ZUVsZW0uZm9jdXMoKTtcblx0XHRcdH1cblxuXHRcdH1cblx0XHR0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoc2VsZWN0ZWRWYWx1ZSk7XG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2Uoc2VsZWN0ZWRWYWx1ZSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZGlkRGF0ZVZhbHVlQ2hhbmdlKGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSkge1xuXHRcdHJldHVybiBjdXJyZW50VmFsdWVbMF0gIT09IHByZXZpb3VzVmFsdWVbMF0gfHwgY3VycmVudFZhbHVlWzFdICE9PSBwcmV2aW91c1ZhbHVlWzFdO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1vcmUgYWR2YW5jZWQgY2hlY2tpbmcgb2YgdGhlIGxvYWRlZCBzdGF0ZSBvZiBmbGF0cGlja3Jcblx0ICovXG5cdHByb3RlY3RlZCBpc0ZsYXRwaWNrckxvYWRlZCgpIHtcblx0XHQvLyBjYXN0IHRoZSBpbnN0YW5jZSB0byBhIGJvb2xlYW4sIGFuZCBzb21lIG1ldGhvZCB0aGF0IGhhcyB0byBleGlzdCBmb3IgdGhlIGxpYnJhcnkgdG8gYmUgbG9hZGVkIGluIHRoaXMgY2FzZSBgc2V0RGF0ZWBcblx0XHRyZXR1cm4gISF0aGlzLmZsYXRwaWNrckluc3RhbmNlICYmICEhdGhpcy5mbGF0cGlja3JJbnN0YW5jZS5zZXREYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJpZ2h0IGFycm93IEhUTUwgcGFzc2VkIHRvIGZsYXRwaWNrclxuXHQgKi9cblx0cHJvdGVjdGVkIHJpZ2h0QXJyb3dIVE1MKCkge1xuXHRcdHJldHVybiBgXG5cdFx0XHQ8c3ZnIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG5cdFx0XHRcdDxwb2x5Z29uIHBvaW50cz1cIjExLDggNiwxMyA1LjMsMTIuMyA5LjYsOCA1LjMsMy43IDYsMyBcIi8+XG5cdFx0XHRcdDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHN0eWxlPVwiZmlsbDpub25lXCIgLz5cblx0XHRcdDwvc3ZnPmA7XG5cdH1cblxuXHQvKipcblx0ICogTGVmdCBhcnJvdyBIVE1MIHBhc3NlZCB0byBmbGF0cGlja3Jcblx0ICovXG5cdHByb3RlY3RlZCBsZWZ0QXJyb3dIVE1MKCkge1xuXHRcdHJldHVybiBgXG5cdFx0XHQ8c3ZnIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG5cdFx0XHRcdDxwb2x5Z29uIHBvaW50cz1cIjUsOCAxMCwzIDEwLjcsMy43IDYuNCw4IDEwLjcsMTIuMyAxMCwxMyBcIi8+XG5cdFx0XHRcdDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHN0eWxlPVwiZmlsbDpub25lXCIgLz5cblx0XHRcdDwvc3ZnPmA7XG5cdH1cbn1cbiJdfQ==