carbon-components-angular 6.0.0-rc.4 → 6.0.0-rc.6

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 (61) hide show
  1. package/combobox/combobox.component.d.ts +3 -2
  2. package/docs/documentation/components/ComboBox.html +160 -138
  3. package/docs/documentation/components/ContentSwitcher.html +19 -13
  4. package/docs/documentation/components/ContextMenuComponent.html +35 -29
  5. package/docs/documentation/components/ContextMenuDividerComponent.html +11 -6
  6. package/docs/documentation/components/ContextMenuGroupComponent.html +25 -19
  7. package/docs/documentation/components/ContextMenuItemComponent.html +70 -64
  8. package/docs/documentation/components/DatePicker.html +106 -100
  9. package/docs/documentation/components/DatePickerInput.html +41 -35
  10. package/docs/documentation/components/Dropdown.html +118 -119
  11. package/docs/documentation/components/DropdownList.html +88 -97
  12. package/docs/documentation/js/search/search_index.js +2 -2
  13. package/docs/documentation/modules/TilesModule/dependencies.svg +106 -106
  14. package/docs/documentation/modules/TilesModule.html +106 -106
  15. package/docs/documentation/modules/TimePickerModule/dependencies.svg +36 -40
  16. package/docs/documentation/modules/TimePickerModule.html +36 -40
  17. package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +49 -45
  18. package/docs/documentation/modules/TimePickerSelectModule.html +49 -45
  19. package/docs/documentation/modules/ToggleModule/dependencies.svg +4 -4
  20. package/docs/documentation/modules/ToggleModule.html +4 -4
  21. package/docs/documentation/modules/TooltipModule/dependencies.svg +29 -29
  22. package/docs/documentation/modules/TooltipModule.html +29 -29
  23. package/docs/documentation/modules/TreeviewModule/dependencies.svg +35 -35
  24. package/docs/documentation/modules/TreeviewModule.html +35 -35
  25. package/docs/documentation.json +505 -497
  26. package/docs/storybook/{8383.1f80f6c8.iframe.bundle.js → 8383.844bcd95.iframe.bundle.js} +1 -1
  27. package/docs/storybook/combobox-combobox-stories.2b92d137.iframe.bundle.js +1 -0
  28. package/docs/storybook/{content-switcher-content-switcher-stories.753fbf1c.iframe.bundle.js → content-switcher-content-switcher-stories.0d959b5c.iframe.bundle.js} +1 -1
  29. package/docs/storybook/{context-menu-context-menu-stories.6344e050.iframe.bundle.js → context-menu-context-menu-stories.d2e63fe8.iframe.bundle.js} +1 -1
  30. package/docs/storybook/{datepicker-datepicker-stories.5cf89dc1.iframe.bundle.js → datepicker-datepicker-stories.b4bcda9f.iframe.bundle.js} +1 -1
  31. package/docs/storybook/iframe.html +2 -2
  32. package/docs/storybook/main.07778da0.iframe.bundle.js +1 -0
  33. package/docs/storybook/project.json +1 -1
  34. package/docs/storybook/{runtime~main.de5a4ef6.iframe.bundle.js → runtime~main.ec2949a5.iframe.bundle.js} +1 -1
  35. package/dropdown/dropdown.component.d.ts +2 -3
  36. package/dropdown/list/dropdown-list.component.d.ts +2 -3
  37. package/esm2022/combobox/combobox.component.mjs +11 -9
  38. package/esm2022/content-switcher/content-switcher.component.mjs +5 -4
  39. package/esm2022/context-menu/context-menu-divider.component.mjs +5 -4
  40. package/esm2022/context-menu/context-menu-group.component.mjs +5 -4
  41. package/esm2022/context-menu/context-menu-item.component.mjs +4 -4
  42. package/esm2022/context-menu/context-menu.component.mjs +4 -4
  43. package/esm2022/datepicker/datepicker.component.mjs +5 -4
  44. package/esm2022/datepicker-input/datepicker-input.component.mjs +5 -4
  45. package/esm2022/dropdown/dropdown.component.mjs +1 -1
  46. package/esm2022/dropdown/list/dropdown-list.component.mjs +4 -6
  47. package/fesm2022/carbon-components-angular-combobox.mjs +10 -8
  48. package/fesm2022/carbon-components-angular-combobox.mjs.map +1 -1
  49. package/fesm2022/carbon-components-angular-content-switcher.mjs +4 -3
  50. package/fesm2022/carbon-components-angular-content-switcher.mjs.map +1 -1
  51. package/fesm2022/carbon-components-angular-context-menu.mjs +11 -9
  52. package/fesm2022/carbon-components-angular-context-menu.mjs.map +1 -1
  53. package/fesm2022/carbon-components-angular-datepicker-input.mjs +4 -3
  54. package/fesm2022/carbon-components-angular-datepicker-input.mjs.map +1 -1
  55. package/fesm2022/carbon-components-angular-datepicker.mjs +4 -3
  56. package/fesm2022/carbon-components-angular-datepicker.mjs.map +1 -1
  57. package/fesm2022/carbon-components-angular-dropdown.mjs +3 -5
  58. package/fesm2022/carbon-components-angular-dropdown.mjs.map +1 -1
  59. package/package.json +7 -7
  60. package/docs/storybook/combobox-combobox-stories.3bf37571.iframe.bundle.js +0 -1
  61. package/docs/storybook/main.3c25e34a.iframe.bundle.js +0 -1
@@ -1 +1 @@
1
- {"generatedAt":1732928164055,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":true,"hasStorybookEslint":false,"refCount":0,"packageManager":{"type":"npm","version":"8.19.4"},"preview":{"usesGlobals":false},"framework":{"name":"@storybook/angular","options":{}},"builder":"@storybook/builder-webpack5","renderer":"@storybook/angular","storybookVersion":"7.6.20","storybookVersionSpecifier":"7.6.20","language":"typescript","storybookPackages":{"@storybook/addon-actions":{"version":"7.6.20"},"@storybook/angular":{"version":"7.6.20"},"@storybook/theming":{"version":"7.6.20"},"storybook":{"version":"7.6.20"}},"addons":{"@storybook/addon-links":{"version":"7.6.20"},"@storybook/addon-essentials":{"options":{"backgrounds":false},"version":"7.6.20"},"@storybook/addon-a11y":{"version":"7.6.20"},"@storybook/addon-storysource":{"version":"7.6.20"}}}
1
+ {"generatedAt":1734465412211,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":true,"hasStorybookEslint":false,"refCount":0,"packageManager":{"type":"npm","version":"8.19.4"},"preview":{"usesGlobals":false},"framework":{"name":"@storybook/angular","options":{}},"builder":"@storybook/builder-webpack5","renderer":"@storybook/angular","storybookVersion":"7.6.20","storybookVersionSpecifier":"7.6.20","language":"typescript","storybookPackages":{"@storybook/addon-actions":{"version":"7.6.20"},"@storybook/angular":{"version":"7.6.20"},"@storybook/theming":{"version":"7.6.20"},"storybook":{"version":"7.6.20"}},"addons":{"@storybook/addon-links":{"version":"7.6.20"},"@storybook/addon-essentials":{"options":{"backgrounds":false},"version":"7.6.20"},"@storybook/addon-a11y":{"version":"7.6.20"},"@storybook/addon-storysource":{"version":"7.6.20"}}}
@@ -1 +1 @@
1
- (()=>{"use strict";var deferred,leafPrototypes,getProto,inProgress,__webpack_modules__={},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:!1,exports:{}};return __webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.amdO={},deferred=[],__webpack_require__.O=(result,chunkIds,fn,priority)=>{if(!chunkIds){var notFulfilled=1/0;for(i=0;i<deferred.length;i++){for(var[chunkIds,fn,priority]=deferred[i],fulfilled=!0,j=0;j<chunkIds.length;j++)(!1&priority||notFulfilled>=priority)&&Object.keys(__webpack_require__.O).every((key=>__webpack_require__.O[key](chunkIds[j])))?chunkIds.splice(j--,1):(fulfilled=!1,priority<notFulfilled&&(notFulfilled=priority));if(fulfilled){deferred.splice(i--,1);var r=fn();void 0!==r&&(result=r)}}return result}priority=priority||0;for(var i=deferred.length;i>0&&deferred[i-1][2]>priority;i--)deferred[i]=deferred[i-1];deferred[i]=[chunkIds,fn,priority]},__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module.default:()=>module;return __webpack_require__.d(getter,{a:getter}),getter},getProto=Object.getPrototypeOf?obj=>Object.getPrototypeOf(obj):obj=>obj.__proto__,__webpack_require__.t=function(value,mode){if(1&mode&&(value=this(value)),8&mode)return value;if("object"==typeof value&&value){if(4&mode&&value.__esModule)return value;if(16&mode&&"function"==typeof value.then)return value}var ns=Object.create(null);__webpack_require__.r(ns);var def={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var current=2&mode&&value;"object"==typeof current&&!~leafPrototypes.indexOf(current);current=getProto(current))Object.getOwnPropertyNames(current).forEach((key=>def[key]=()=>value[key]));return def.default=()=>value,__webpack_require__.d(ns,def),ns},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.f={},__webpack_require__.e=chunkId=>Promise.all(Object.keys(__webpack_require__.f).reduce(((promises,key)=>(__webpack_require__.f[key](chunkId,promises),promises)),[])),__webpack_require__.u=chunkId=>(({33:"patterns-filtering-single-selection-stories",388:"tooltip-definition-tooptip-stories",508:"tiles-expandable-tile-stories",700:"patterns-dialogs-modal-with-table-stories",826:"icon-icon-stories",966:"toggletip-toggletip-stories",1107:"dialog-overflow-menu-overflow-menu-stories",1748:"inline-loading-inline-loading-stories",1801:"input-password-stories",2234:"input-input-stories",2270:"combobox-combobox-stories",2518:"theme-theme-stories",2682:"structured-list-structured-list-stories",2900:"pagination-pagination-stories",2916:"pagination-pagination-nav-stories",2936:"contained-list-contained-list-stories",3035:"button-button-set-stories",3194:"breadcrumb-breadcrumb-stories",3199:"number-input-number-stories",3450:"treeview-treeview-stories",3710:"grid-css-grid-stories",3758:"loading-loading-stories",3902:"tag-tag-stories",4258:"dropdown-dropdown-stories",4414:"timepicker-timepicker-stories",4512:"input-textarea-stories",4728:"select-select-stories",4746:"tooltip-tooltip-stories",4910:"tiles-clickable-tile-stories",5326:"slider-slider-stories",5426:"patterns-forms-multi-step-form-stories",5658:"patterns-filtering-multi-selection-stories",5666:"checkbox-checkbox-stories",5678:"file-uploader-file-uploader-stories",5814:"layer-layer-stories",5846:"table-table-stories",5862:"modal-modal-stories",5886:"progress-bar-progress-bar-stories",6050:"accordion-accordion-stories",6066:"timepicker-select-timepicker-select-stories",6141:"index-stories",6236:"tabs-tabs-stories",6290:"radio-radio-stories",6416:"search-search-stories",6460:"grid-grid-stories",6966:"content-switcher-content-switcher-stories",7156:"datepicker-datepicker-stories",7502:"tiles-tiles-stories",7508:"list-list-stories",7696:"patterns-loading-progressive-loading-stories",7710:"context-menu-context-menu-stories",7830:"notification-notification-stories",7866:"layout-stack-stories",7974:"progress-indicator-progress-indicator-stories",8016:"button-button-stories",8156:"toggle-toggle-stories",8398:"skeleton-skeleton-stories",8610:"ui-shell-ui-shell-stories",8822:"popover-popover-stories",8849:"patterns-filtering-multiple-categories-stories",9238:"code-snippet-code-snippet-stories",9396:"patterns-loading-large-loading-stories",9476:"button-icon-button-stories",9517:"tiles-tile-group-stories",9540:"link-link-stories"}[chunkId]||chunkId)+"."+{33:"6dff4216",117:"9afd770d",388:"925bc048",508:"a62c03dc",700:"c77ae337",826:"e2fff3f7",886:"9d3f9718",914:"d9db10c6",966:"37645232",1002:"c28dfa97",1107:"8c958204",1191:"038df733",1391:"27aab07b",1433:"1782e8a4",1482:"cac12f78",1490:"b48978d9",1623:"a75a1919",1748:"57dc5dd2",1801:"f8812630",1803:"393ed417",1914:"598ce294",2234:"389f7ce5",2270:"3bf37571",2518:"6f853e9c",2672:"315dddc2",2682:"96e67577",2705:"0665cd1f",2900:"7c690f36",2916:"182d931b",2936:"fe5fb55d",3035:"e8696116",3194:"74ad1122",3199:"b774f231",3419:"4a09e863",3450:"29fd7e1a",3710:"fc8b1e2c",3758:"e5ce53a9",3902:"3755edbd",4046:"56c1a81d",4258:"0d63845a",4333:"a02faedf",4414:"a8e8bf9a",4512:"cc975621",4637:"f1d4bea8",4728:"cd189f1c",4746:"e7bf174b",4899:"58044c59",4910:"c2639981",5099:"16b386bd",5326:"738ec9f6",5351:"abde2017",5426:"f7a06f1c",5430:"0f21aa6e",5658:"bed3ec58",5666:"66ca37c2",5678:"45124847",5814:"30b25375",5830:"e66004ad",5846:"4f60305f",5862:"49f862a2",5886:"d8d74195",6050:"2979c72a",6066:"9c602dfb",6132:"9eaed68e",6141:"50d5d6ad",6169:"b756b9ce",6236:"b405d052",6290:"05cdb28c",6416:"510359a5",6460:"ce00bb0e",6462:"84d9c1f8",6966:"753fbf1c",7139:"c6a75c34",7156:"5cf89dc1",7208:"0ba39692",7502:"7e6a7f0a",7508:"957efb51",7696:"ae498925",7710:"6344e050",7830:"a99b43e9",7866:"cb77d0fc",7974:"49f55305",8016:"bf9949fa",8156:"b667c22a",8383:"1f80f6c8",8398:"7f7d3904",8610:"f8160603",8705:"ed2b50c9",8822:"0168d6bb",8849:"5203a88c",9238:"383aca46",9396:"0ffe3bf0",9476:"30745878",9517:"3a320bd0",9540:"e07fa679"}[chunkId]+".iframe.bundle.js"),__webpack_require__.miniCssF=chunkId=>{},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.hmd=module=>((module=Object.create(module)).children||(module.children=[]),Object.defineProperty(module,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+module.id)}}),module),__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),inProgress={},__webpack_require__.l=(url,done,key,chunkId)=>{if(inProgress[url])inProgress[url].push(done);else{var script,needAttach;if(void 0!==key)for(var scripts=document.getElementsByTagName("script"),i=0;i<scripts.length;i++){var s=scripts[i];if(s.getAttribute("src")==url||s.getAttribute("data-webpack")=="carbon-components-angular:"+key){script=s;break}}script||(needAttach=!0,(script=document.createElement("script")).charset="utf-8",script.timeout=120,__webpack_require__.nc&&script.setAttribute("nonce",__webpack_require__.nc),script.setAttribute("data-webpack","carbon-components-angular:"+key),script.src=url),inProgress[url]=[done];var onScriptComplete=(prev,event)=>{script.onerror=script.onload=null,clearTimeout(timeout);var doneFns=inProgress[url];if(delete inProgress[url],script.parentNode&&script.parentNode.removeChild(script),doneFns&&doneFns.forEach((fn=>fn(event))),prev)return prev(event)},timeout=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:script}),12e4);script.onerror=onScriptComplete.bind(null,script.onerror),script.onload=onScriptComplete.bind(null,script.onload),needAttach&&document.head.appendChild(script)}},__webpack_require__.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),__webpack_require__.p="",(()=>{var installedChunks={5354:0};__webpack_require__.f.j=(chunkId,promises)=>{var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:void 0;if(0!==installedChunkData)if(installedChunkData)promises.push(installedChunkData[2]);else if(5354!=chunkId){var promise=new Promise(((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]));promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId),error=new Error;__webpack_require__.l(url,(event=>{if(__webpack_require__.o(installedChunks,chunkId)&&(0!==(installedChunkData=installedChunks[chunkId])&&(installedChunks[chunkId]=void 0),installedChunkData)){var errorType=event&&("load"===event.type?"missing":event.type),realSrc=event&&event.target&&event.target.src;error.message="Loading chunk "+chunkId+" failed.\n("+errorType+": "+realSrc+")",error.name="ChunkLoadError",error.type=errorType,error.request=realSrc,installedChunkData[1](error)}}),"chunk-"+chunkId,chunkId)}else installedChunks[chunkId]=0},__webpack_require__.O.j=chunkId=>0===installedChunks[chunkId];var webpackJsonpCallback=(parentChunkLoadingFunction,data)=>{var moduleId,chunkId,[chunkIds,moreModules,runtime]=data,i=0;if(chunkIds.some((id=>0!==installedChunks[id]))){for(moduleId in moreModules)__webpack_require__.o(moreModules,moduleId)&&(__webpack_require__.m[moduleId]=moreModules[moduleId]);if(runtime)var result=runtime(__webpack_require__)}for(parentChunkLoadingFunction&&parentChunkLoadingFunction(data);i<chunkIds.length;i++)chunkId=chunkIds[i],__webpack_require__.o(installedChunks,chunkId)&&installedChunks[chunkId]&&installedChunks[chunkId][0](),installedChunks[chunkId]=0;return __webpack_require__.O(result)},chunkLoadingGlobal=self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[];chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null,0)),chunkLoadingGlobal.push=webpackJsonpCallback.bind(null,chunkLoadingGlobal.push.bind(chunkLoadingGlobal))})(),__webpack_require__.nc=void 0})();
1
+ (()=>{"use strict";var deferred,leafPrototypes,getProto,inProgress,__webpack_modules__={},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:!1,exports:{}};return __webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.amdO={},deferred=[],__webpack_require__.O=(result,chunkIds,fn,priority)=>{if(!chunkIds){var notFulfilled=1/0;for(i=0;i<deferred.length;i++){for(var[chunkIds,fn,priority]=deferred[i],fulfilled=!0,j=0;j<chunkIds.length;j++)(!1&priority||notFulfilled>=priority)&&Object.keys(__webpack_require__.O).every((key=>__webpack_require__.O[key](chunkIds[j])))?chunkIds.splice(j--,1):(fulfilled=!1,priority<notFulfilled&&(notFulfilled=priority));if(fulfilled){deferred.splice(i--,1);var r=fn();void 0!==r&&(result=r)}}return result}priority=priority||0;for(var i=deferred.length;i>0&&deferred[i-1][2]>priority;i--)deferred[i]=deferred[i-1];deferred[i]=[chunkIds,fn,priority]},__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module.default:()=>module;return __webpack_require__.d(getter,{a:getter}),getter},getProto=Object.getPrototypeOf?obj=>Object.getPrototypeOf(obj):obj=>obj.__proto__,__webpack_require__.t=function(value,mode){if(1&mode&&(value=this(value)),8&mode)return value;if("object"==typeof value&&value){if(4&mode&&value.__esModule)return value;if(16&mode&&"function"==typeof value.then)return value}var ns=Object.create(null);__webpack_require__.r(ns);var def={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var current=2&mode&&value;"object"==typeof current&&!~leafPrototypes.indexOf(current);current=getProto(current))Object.getOwnPropertyNames(current).forEach((key=>def[key]=()=>value[key]));return def.default=()=>value,__webpack_require__.d(ns,def),ns},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.f={},__webpack_require__.e=chunkId=>Promise.all(Object.keys(__webpack_require__.f).reduce(((promises,key)=>(__webpack_require__.f[key](chunkId,promises),promises)),[])),__webpack_require__.u=chunkId=>(({33:"patterns-filtering-single-selection-stories",388:"tooltip-definition-tooptip-stories",508:"tiles-expandable-tile-stories",700:"patterns-dialogs-modal-with-table-stories",826:"icon-icon-stories",966:"toggletip-toggletip-stories",1107:"dialog-overflow-menu-overflow-menu-stories",1748:"inline-loading-inline-loading-stories",1801:"input-password-stories",2234:"input-input-stories",2270:"combobox-combobox-stories",2518:"theme-theme-stories",2682:"structured-list-structured-list-stories",2900:"pagination-pagination-stories",2916:"pagination-pagination-nav-stories",2936:"contained-list-contained-list-stories",3035:"button-button-set-stories",3194:"breadcrumb-breadcrumb-stories",3199:"number-input-number-stories",3450:"treeview-treeview-stories",3710:"grid-css-grid-stories",3758:"loading-loading-stories",3902:"tag-tag-stories",4258:"dropdown-dropdown-stories",4414:"timepicker-timepicker-stories",4512:"input-textarea-stories",4728:"select-select-stories",4746:"tooltip-tooltip-stories",4910:"tiles-clickable-tile-stories",5326:"slider-slider-stories",5426:"patterns-forms-multi-step-form-stories",5658:"patterns-filtering-multi-selection-stories",5666:"checkbox-checkbox-stories",5678:"file-uploader-file-uploader-stories",5814:"layer-layer-stories",5846:"table-table-stories",5862:"modal-modal-stories",5886:"progress-bar-progress-bar-stories",6050:"accordion-accordion-stories",6066:"timepicker-select-timepicker-select-stories",6141:"index-stories",6236:"tabs-tabs-stories",6290:"radio-radio-stories",6416:"search-search-stories",6460:"grid-grid-stories",6966:"content-switcher-content-switcher-stories",7156:"datepicker-datepicker-stories",7502:"tiles-tiles-stories",7508:"list-list-stories",7696:"patterns-loading-progressive-loading-stories",7710:"context-menu-context-menu-stories",7830:"notification-notification-stories",7866:"layout-stack-stories",7974:"progress-indicator-progress-indicator-stories",8016:"button-button-stories",8156:"toggle-toggle-stories",8398:"skeleton-skeleton-stories",8610:"ui-shell-ui-shell-stories",8822:"popover-popover-stories",8849:"patterns-filtering-multiple-categories-stories",9238:"code-snippet-code-snippet-stories",9396:"patterns-loading-large-loading-stories",9476:"button-icon-button-stories",9517:"tiles-tile-group-stories",9540:"link-link-stories"}[chunkId]||chunkId)+"."+{33:"6dff4216",117:"9afd770d",388:"925bc048",508:"a62c03dc",700:"c77ae337",826:"e2fff3f7",886:"9d3f9718",914:"d9db10c6",966:"37645232",1002:"c28dfa97",1107:"8c958204",1191:"038df733",1391:"27aab07b",1433:"1782e8a4",1482:"cac12f78",1490:"b48978d9",1623:"a75a1919",1748:"57dc5dd2",1801:"f8812630",1803:"393ed417",1914:"598ce294",2234:"389f7ce5",2270:"2b92d137",2518:"6f853e9c",2672:"315dddc2",2682:"96e67577",2705:"0665cd1f",2900:"7c690f36",2916:"182d931b",2936:"fe5fb55d",3035:"e8696116",3194:"74ad1122",3199:"b774f231",3419:"4a09e863",3450:"29fd7e1a",3710:"fc8b1e2c",3758:"e5ce53a9",3902:"3755edbd",4046:"56c1a81d",4258:"0d63845a",4333:"a02faedf",4414:"a8e8bf9a",4512:"cc975621",4637:"f1d4bea8",4728:"cd189f1c",4746:"e7bf174b",4899:"58044c59",4910:"c2639981",5099:"16b386bd",5326:"738ec9f6",5351:"abde2017",5426:"f7a06f1c",5430:"0f21aa6e",5658:"bed3ec58",5666:"66ca37c2",5678:"45124847",5814:"30b25375",5830:"e66004ad",5846:"4f60305f",5862:"49f862a2",5886:"d8d74195",6050:"2979c72a",6066:"9c602dfb",6132:"9eaed68e",6141:"50d5d6ad",6169:"b756b9ce",6236:"b405d052",6290:"05cdb28c",6416:"510359a5",6460:"ce00bb0e",6462:"84d9c1f8",6966:"0d959b5c",7139:"c6a75c34",7156:"b4bcda9f",7208:"0ba39692",7502:"7e6a7f0a",7508:"957efb51",7696:"ae498925",7710:"d2e63fe8",7830:"a99b43e9",7866:"cb77d0fc",7974:"49f55305",8016:"bf9949fa",8156:"b667c22a",8383:"844bcd95",8398:"7f7d3904",8610:"f8160603",8705:"ed2b50c9",8822:"0168d6bb",8849:"5203a88c",9238:"383aca46",9396:"0ffe3bf0",9476:"30745878",9517:"3a320bd0",9540:"e07fa679"}[chunkId]+".iframe.bundle.js"),__webpack_require__.miniCssF=chunkId=>{},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.hmd=module=>((module=Object.create(module)).children||(module.children=[]),Object.defineProperty(module,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+module.id)}}),module),__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),inProgress={},__webpack_require__.l=(url,done,key,chunkId)=>{if(inProgress[url])inProgress[url].push(done);else{var script,needAttach;if(void 0!==key)for(var scripts=document.getElementsByTagName("script"),i=0;i<scripts.length;i++){var s=scripts[i];if(s.getAttribute("src")==url||s.getAttribute("data-webpack")=="carbon-components-angular:"+key){script=s;break}}script||(needAttach=!0,(script=document.createElement("script")).charset="utf-8",script.timeout=120,__webpack_require__.nc&&script.setAttribute("nonce",__webpack_require__.nc),script.setAttribute("data-webpack","carbon-components-angular:"+key),script.src=url),inProgress[url]=[done];var onScriptComplete=(prev,event)=>{script.onerror=script.onload=null,clearTimeout(timeout);var doneFns=inProgress[url];if(delete inProgress[url],script.parentNode&&script.parentNode.removeChild(script),doneFns&&doneFns.forEach((fn=>fn(event))),prev)return prev(event)},timeout=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:script}),12e4);script.onerror=onScriptComplete.bind(null,script.onerror),script.onload=onScriptComplete.bind(null,script.onload),needAttach&&document.head.appendChild(script)}},__webpack_require__.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),__webpack_require__.p="",(()=>{var installedChunks={5354:0};__webpack_require__.f.j=(chunkId,promises)=>{var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:void 0;if(0!==installedChunkData)if(installedChunkData)promises.push(installedChunkData[2]);else if(5354!=chunkId){var promise=new Promise(((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]));promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId),error=new Error;__webpack_require__.l(url,(event=>{if(__webpack_require__.o(installedChunks,chunkId)&&(0!==(installedChunkData=installedChunks[chunkId])&&(installedChunks[chunkId]=void 0),installedChunkData)){var errorType=event&&("load"===event.type?"missing":event.type),realSrc=event&&event.target&&event.target.src;error.message="Loading chunk "+chunkId+" failed.\n("+errorType+": "+realSrc+")",error.name="ChunkLoadError",error.type=errorType,error.request=realSrc,installedChunkData[1](error)}}),"chunk-"+chunkId,chunkId)}else installedChunks[chunkId]=0},__webpack_require__.O.j=chunkId=>0===installedChunks[chunkId];var webpackJsonpCallback=(parentChunkLoadingFunction,data)=>{var moduleId,chunkId,[chunkIds,moreModules,runtime]=data,i=0;if(chunkIds.some((id=>0!==installedChunks[id]))){for(moduleId in moreModules)__webpack_require__.o(moreModules,moduleId)&&(__webpack_require__.m[moduleId]=moreModules[moduleId]);if(runtime)var result=runtime(__webpack_require__)}for(parentChunkLoadingFunction&&parentChunkLoadingFunction(data);i<chunkIds.length;i++)chunkId=chunkIds[i],__webpack_require__.o(installedChunks,chunkId)&&installedChunks[chunkId]&&installedChunks[chunkId][0](),installedChunks[chunkId]=0;return __webpack_require__.O(result)},chunkLoadingGlobal=self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[];chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null,0)),chunkLoadingGlobal.push=webpackJsonpCallback.bind(null,chunkLoadingGlobal.push.bind(chunkLoadingGlobal))})(),__webpack_require__.nc=void 0})();
@@ -23,7 +23,6 @@ import { ControlValueAccessor } from "@angular/forms";
23
23
  import { Observable, Subscription } from "rxjs";
24
24
  import { AbstractDropdownView } from "./abstract-dropdown-view.class";
25
25
  import { I18n } from "carbon-components-angular/i18n";
26
- import { ListItem } from "./list-item.interface";
27
26
  import { DropdownService } from "./dropdown.service";
28
27
  import { ElementService } from "carbon-components-angular/utils";
29
28
  import * as i0 from "@angular/core";
@@ -267,10 +266,10 @@ export declare class Dropdown implements OnInit, AfterContentInit, AfterViewInit
267
266
  getDisplayStringValue(): Observable<string>;
268
267
  isRenderString(): boolean;
269
268
  getRenderTemplateContext(): {
270
- items: ListItem[];
269
+ items: import("carbon-components-angular/dropdown").ListItem[];
271
270
  item?: undefined;
272
271
  } | {
273
- item: ListItem;
272
+ item: import("carbon-components-angular/dropdown").ListItem;
274
273
  items?: undefined;
275
274
  } | {
276
275
  items?: undefined;
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
 
21
- import { OnDestroy, EventEmitter, TemplateRef, AfterViewInit, ElementRef, QueryList, ApplicationRef } from "@angular/core";
21
+ import { OnDestroy, EventEmitter, TemplateRef, AfterViewInit, ElementRef, QueryList } from "@angular/core";
22
22
  import { Observable, Subscription } from "rxjs";
23
23
  import { I18n } from "carbon-components-angular/i18n";
24
24
  import { AbstractDropdownView } from "../abstract-dropdown-view.class";
@@ -53,7 +53,6 @@ import * as i0 from "@angular/core";
53
53
  export declare class DropdownList implements AbstractDropdownView, AfterViewInit, OnDestroy {
54
54
  elementRef: ElementRef;
55
55
  protected i18n: I18n;
56
- protected appRef: ApplicationRef;
57
56
  static listCount: number;
58
57
  ariaLabel: any;
59
58
  /**
@@ -142,7 +141,7 @@ export declare class DropdownList implements AbstractDropdownView, AfterViewInit
142
141
  /**
143
142
  * Creates an instance of `DropdownList`.
144
143
  */
145
- constructor(elementRef: ElementRef, i18n: I18n, appRef: ApplicationRef);
144
+ constructor(elementRef: ElementRef, i18n: I18n);
146
145
  /**
147
146
  * Retrieves array of list items and index of the selected item after view has rendered.
148
147
  * Additionally, any Observables for the `DropdownList` are initialized.
@@ -1,4 +1,4 @@
1
- import { Component, ContentChild, Input, Output, HostListener, ViewChild, EventEmitter, HostBinding, TemplateRef } from "@angular/core";
1
+ import { Component, ContentChild, Input, Output, HostListener, ViewChild, EventEmitter, HostBinding, TemplateRef, ChangeDetectionStrategy } from "@angular/core";
2
2
  import { AbstractDropdownView } from "carbon-components-angular/dropdown";
3
3
  import { NG_VALUE_ACCESSOR } from "@angular/forms";
4
4
  import { filter } from "rxjs/operators";
@@ -88,10 +88,11 @@ export class ComboBox {
88
88
  /**
89
89
  * Creates an instance of ComboBox.
90
90
  */
91
- constructor(elementRef, dropdownService, i18n) {
91
+ constructor(elementRef, dropdownService, i18n, cdr) {
92
92
  this.elementRef = elementRef;
93
93
  this.dropdownService = dropdownService;
94
94
  this.i18n = i18n;
95
+ this.cdr = cdr;
95
96
  this.id = `combobox-${ComboBox.comboBoxCount++}`;
96
97
  this.labelId = `combobox-label-${ComboBox.comboBoxCount++}`;
97
98
  /**
@@ -472,6 +473,7 @@ export class ComboBox {
472
473
  this._appendToDropdown();
473
474
  }
474
475
  document.removeEventListener("click", this.outsideClick, true);
476
+ this.cdr.markForCheck();
475
477
  }
476
478
  /**
477
479
  * Opens the dropdown.
@@ -493,6 +495,7 @@ export class ComboBox {
493
495
  this._dropUp = this._shouldDropUp();
494
496
  }
495
497
  }, 0);
498
+ this.cdr.markForCheck();
496
499
  }
497
500
  /**
498
501
  * Toggles the dropdown.
@@ -655,7 +658,7 @@ export class ComboBox {
655
658
  this.view.reorderSelected(true);
656
659
  }
657
660
  }
658
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ComboBox, deps: [{ token: i0.ElementRef }, { token: i1.DropdownService }, { token: i2.I18n }], target: i0.ɵɵFactoryTarget.Component }); }
661
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ComboBox, deps: [{ token: i0.ElementRef }, { token: i1.DropdownService }, { token: i2.I18n }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
659
662
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: { placeholder: "placeholder", openMenuAria: "openMenuAria", closeMenuAria: "closeMenuAria", clearSelectionsTitle: "clearSelectionsTitle", clearSelectionsAria: "clearSelectionsAria", clearSelectionTitle: "clearSelectionTitle", clearSelectionAria: "clearSelectionAria", id: "id", labelId: "labelId", items: "items", type: "type", size: "size", itemValueKey: "itemValueKey", label: "label", hideLabel: "hideLabel", helperText: "helperText", appendInline: "appendInline", invalid: "invalid", invalidText: "invalidText", warn: "warn", warnText: "warnText", maxLength: "maxLength", theme: "theme", selectionFeedback: "selectionFeedback", autocomplete: "autocomplete", dropUp: "dropUp", disabled: "disabled", readonly: "readonly", fluid: "fluid" }, outputs: { selected: "selected", submit: "submit", close: "close", search: "search", clear: "clear" }, host: { listeners: { "keydown": "hostkeys($event)" }, properties: { "class.cds--list-box__wrapper": "this.hostClass" } }, providers: [
660
663
  {
661
664
  provide: NG_VALUE_ACCESSOR,
@@ -761,7 +764,6 @@ export class ComboBox {
761
764
  [placeholder]="placeholder"/>
762
765
  @if (invalid) {
763
766
  <svg
764
-
765
767
  cdsIcon="warning--filled"
766
768
  size="16"
767
769
  class="cds--list-box__invalid-icon">
@@ -838,7 +840,7 @@ export class ComboBox {
838
840
  </div>
839
841
  }
840
842
  </div>
841
- `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }] }); }
843
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
842
844
  }
843
845
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ComboBox, decorators: [{
844
846
  type: Component,
@@ -943,7 +945,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
943
945
  [placeholder]="placeholder"/>
944
946
  @if (invalid) {
945
947
  <svg
946
-
947
948
  cdsIcon="warning--filled"
948
949
  size="16"
949
950
  class="cds--list-box__invalid-icon">
@@ -1027,9 +1028,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
1027
1028
  useExisting: ComboBox,
1028
1029
  multi: true
1029
1030
  }
1030
- ]
1031
+ ],
1032
+ changeDetection: ChangeDetectionStrategy.OnPush
1031
1033
  }]
1032
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DropdownService }, { type: i2.I18n }], propDecorators: { placeholder: [{
1034
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DropdownService }, { type: i2.I18n }, { type: i0.ChangeDetectorRef }], propDecorators: { placeholder: [{
1033
1035
  type: Input
1034
1036
  }], openMenuAria: [{
1035
1037
  type: Input
@@ -1116,4 +1118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
1116
1118
  type: HostListener,
1117
1119
  args: ["keydown", ["$event"]]
1118
1120
  }] } });
1119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBQ1QsWUFBWSxFQUdaLFdBQVcsRUFDWCxXQUFXLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFtQixNQUFNLG9DQUFvQyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQ04sb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFJekM7Ozs7Ozs7Ozs7O0dBV0c7QUE0TEgsTUFBTSxPQUFPLFFBQVE7SUFDcEI7O09BRUc7SUFDSCxJQUFhLFdBQVcsQ0FBQyxLQUFrQztRQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFhLFlBQVksQ0FBQyxLQUFrQztRQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFhLGFBQWEsQ0FBQyxLQUFrQztRQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEs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QkFBaEIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFZSSxRQUFRO3NCQUFqQixNQUFNO2dCQTJCRyxNQUFNO3NCQUFmLE1BQU07Z0JBU0csS0FBSztzQkFBZCxNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFFRyxLQUFLO3NCQUFkLE1BQU07Z0JBRStDLElBQUk7c0JBQXpELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUN6QixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ2EsS0FBSztzQkFBMUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNJLE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDTyxTQUFTO3NCQUFyRCxXQUFXO3VCQUFDLDhCQUE4QjtnQkF5SjNDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdE9uQ2hhbmdlcyxcblx0Q29udGVudENoaWxkLFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRIb3N0TGlzdGVuZXIsXG5cdEVsZW1lbnRSZWYsXG5cdFZpZXdDaGlsZCxcblx0RXZlbnRFbWl0dGVyLFxuXHRBZnRlclZpZXdJbml0LFxuXHRBZnRlckNvbnRlbnRJbml0LFxuXHRIb3N0QmluZGluZyxcblx0VGVtcGxhdGVSZWYsXG5cdE9uRGVzdHJveVxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3REcm9wZG93blZpZXcsIERyb3Bkb3duU2VydmljZSB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2Ryb3Bkb3duXCI7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2Ryb3Bkb3duXCI7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge1xuXHRnZXRTY3JvbGxhYmxlUGFyZW50cyxcblx0aGFzU2Nyb2xsYWJsZVBhcmVudHNcbn0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvdXRpbHNcIjtcbmltcG9ydCB7IEkxOG4sIE92ZXJyaWRhYmxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbi8qKlxuICogR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBDb21ib0JveE1vZHVsZSB9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuICogYGBgXG4gKlxuICogQ29tYm9Cb3hlcyBhcmUgc2ltaWxhciB0byBkcm9wZG93bnMsIGV4Y2VwdCBhIGNvbWJvYm94IHByb3ZpZGVzIGFuIGlucHV0IGZpZWxkIGZvciB1c2VycyB0byBzZWFyY2ggaXRlbXMgYW5kIChvcHRpb25hbGx5KSBhZGQgdGhlaXIgb3duLlxuICogTXVsdGktc2VsZWN0IGNvbWJvYm94ZXMgYWxzbyBwcm92aWRlIFwicGlsbHNcIiBvZiBzZWxlY3RlZCBpdGVtcy5cbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWNvbWJvYm94LS1iYXNpYylcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1jb21iby1ib3gsIGlibS1jb21iby1ib3hcIixcblx0dGVtcGxhdGU6IGBcblx0XHQ8ZGl2XG5cdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX3dyYXBwZXJcIlxuXHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHQnY2RzLS1saXN0LWJveF9fd3JhcHBlci0tZmx1aWQnOiBmbHVpZCxcblx0XHRcdFx0J2Nkcy0tbGlzdC1ib3hfX3dyYXBwZXItLWZsdWlkLS1pbnZhbGlkJzogZmx1aWQgJiYgaW52YWxpZCxcblx0XHRcdFx0J2Nkcy0tbGlzdC1ib3hfX3dyYXBwZXItLWZsdWlkLS1mb2N1cyc6IGZsdWlkICYmIF9pc0ZvY3VzZWRcblx0XHRcdH1cIj5cblx0XHRcdEBpZiAobGFiZWwpIHtcblx0XHRcdFx0PGxhYmVsXG5cdFx0XHRcdFx0W2Zvcl09XCJpZFwiXG5cdFx0XHRcdFx0W2lkXT1cImxhYmVsSWRcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1sYWJlbFwiXG5cdFx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdFx0J2Nkcy0tbGFiZWwtLWRpc2FibGVkJzogZGlzYWJsZWQsXG5cdFx0XHRcdFx0XHQnY2RzLS12aXN1YWxseS1oaWRkZW4nOiBoaWRlTGFiZWxcblx0XHRcdFx0XHR9XCI+XG5cdFx0XHRcdFx0QGlmIChpc1RlbXBsYXRlKGxhYmVsKSkge1xuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCIgLz5cblx0XHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRcdHt7bGFiZWx9fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdH1cblx0XHRcdDxkaXZcblx0XHRcdFx0I2xpc3Rib3hcblx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdCdjZHMtLW11bHRpLXNlbGVjdCBjZHMtLW11bHRpLXNlbGVjdC0tZmlsdGVyYWJsZSc6IHR5cGUgPT09ICdtdWx0aScsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWxpZ2h0JzogdGhlbWUgPT09ICdsaWdodCcsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWV4cGFuZGVkJzogb3Blbixcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tc20nOiBzaXplID09PSAnc20nLFxuXHRcdFx0XHRcdCdjZHMtLWxpc3QtYm94LS1tZCc6IHNpemUgPT09ICdtZCcsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWxnJzogc2l6ZSA9PT0gJ2xnJyxcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tZGlzYWJsZWQnOiBkaXNhYmxlZCxcblx0XHRcdFx0XHQnY2RzLS1jb21iby1ib3gtLXJlYWRvbmx5JzogcmVhZG9ubHksXG5cdFx0XHRcdFx0J2Nkcy0tY29tYm8tYm94LS13YXJuaW5nIGNkcy0tbGlzdC1ib3gtLXdhcm5pbmcnOiB3YXJuLFxuXHRcdFx0XHRcdCdjZHMtLWxpc3QtYm94LS1pbnZhbGlkJzogaW52YWxpZFxuXHRcdFx0XHR9XCJcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94IGNkcy0tY29tYm8tYm94XCJcblx0XHRcdFx0W2F0dHIuZGF0YS1pbnZhbGlkXT1cIihpbnZhbGlkID8gdHJ1ZSA6IG51bGwpXCI+XG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2ZpZWxkXCJcblx0XHRcdFx0XHQoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG5cdFx0XHRcdFx0KGJsdXIpPVwib25CbHVyKClcIj5cblx0XHRcdFx0XHRAaWYgKHR5cGUgPT09ICdtdWx0aScgJiYgcGlsbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tdGFnIGNkcy0tdGFnLS1maWx0ZXIgY2RzLS10YWctLWhpZ2gtY29udHJhc3RcIlxuXHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tdGFnLS1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IHJlYWRvbmx5fVwiPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImNkcy0tdGFnX19sYWJlbFwiPnt7IHBpbGxzLmxlbmd0aCB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJjbGVhclNlbGVjdGVkKCRldmVudClcIlxuXHRcdFx0XHRcdFx0XHRcdChibHVyKT1cIm9uQmx1cigpXCJcblx0XHRcdFx0XHRcdFx0XHQoa2V5ZG93bi5lbnRlcik9XCJjbGVhclNlbGVjdGVkKCRldmVudClcIlxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10YWdfX2Nsb3NlLWljb25cIlxuXHRcdFx0XHRcdFx0XHRcdHRhYmluZGV4PVwiMFwiXG5cdFx0XHRcdFx0XHRcdFx0W3RpdGxlXT1cImNsZWFyU2VsZWN0aW9uc1RpdGxlXCJcblx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuXHRcdFx0XHRcdFx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwiY2xlYXJTZWxlY3Rpb25BcmlhXCI+XG5cdFx0XHRcdFx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9jdXNhYmxlPVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJ3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRyb2xlPVwiaW1nXCJcblx0XHRcdFx0XHRcdFx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHR2aWV3Qm94PVwiMCAwIDE2IDE2XCJcblx0XHRcdFx0XHRcdFx0XHRcdGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHBhdGggZD1cIk0xMiA0LjdsLS43LS43TDggNy4zIDQuNyA0bC0uNy43TDcuMyA4IDQgMTEuM2wuNy43TDggOC43bDMuMyAzLjMuNy0uN0w4LjcgOHpcIj48L3BhdGg+XG5cdFx0XHRcdFx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDxpbnB1dFxuXHRcdFx0XHRcdFx0I2lucHV0XG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJvZmZcIlxuXHRcdFx0XHRcdFx0cm9sZT1cImNvbWJvYm94XCJcblx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG5cdFx0XHRcdFx0XHRbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxuXHRcdFx0XHRcdFx0KGlucHV0KT1cIm9uU2VhcmNoKCRldmVudC50YXJnZXQudmFsdWUpXCJcblx0XHRcdFx0XHRcdChmb2N1cyk9XCJmbHVpZCA/IGhhbmRsZUZvY3VzKCRldmVudCkgOiBudWxsXCJcblx0XHRcdFx0XHRcdChibHVyKT1cImZsdWlkID8gaGFuZGxlRm9jdXMoJGV2ZW50KSA6IG9uQmx1cigpXCJcblx0XHRcdFx0XHRcdChrZXlkb3duLmVudGVyKT1cIm9uU3VibWl0KCRldmVudClcIlxuXHRcdFx0XHRcdFx0W3ZhbHVlXT1cInNlbGVjdGVkVmFsdWVcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRleHQtaW5wdXRcIlxuXHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLXRleHQtaW5wdXQtLWVtcHR5JzogIXNob3dDbGVhckJ1dHRvbn1cIlxuXHRcdFx0XHRcdFx0dGFiaW5kZXg9XCIwXCJcblx0XHRcdFx0XHRcdFtpZF09XCJpZFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxJZFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5cIlxuXHRcdFx0XHRcdFx0YXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuXHRcdFx0XHRcdFx0W2F0dHIubWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIm9wZW4gPyB2aWV3Py5saXN0SWQgOiBudWxsXCJcblx0XHRcdFx0XHRcdFthdHRyLmFyaWEtYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG5cdFx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIi8+XG5cdFx0XHRcdFx0QGlmIChpbnZhbGlkKSB7XG5cdFx0XHRcdFx0XHQ8c3ZnXG5cblx0XHRcdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWZpbGxlZFwiXG5cdFx0XHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9faW52YWxpZC1pY29uXCI+XG5cdFx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHR9IEBlbHNlIGlmICh3YXJuKSB7XG5cdFx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1hbHQtLWZpbGxlZFwiXG5cdFx0XHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9faW52YWxpZC1pY29uIGNkcy0tbGlzdC1ib3hfX2ludmFsaWQtaWNvbi0td2FybmluZ1wiPlxuXHRcdFx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdEBpZiAoc2hvd0NsZWFyQnV0dG9uKSB7XG5cdFx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRcdHJvbGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX3NlbGVjdGlvblwiXG5cdFx0XHRcdFx0XHRcdHRhYmluZGV4PVwiMFwiXG5cdFx0XHRcdFx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwiY2xlYXJTZWxlY3Rpb25BcmlhXCJcblx0XHRcdFx0XHRcdFx0W3RpdGxlXT1cImNsZWFyU2VsZWN0aW9uVGl0bGVcIlxuXHRcdFx0XHRcdFx0XHQoa2V5dXAuZW50ZXIpPVwiY2xlYXJJbnB1dCgkZXZlbnQpXCJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImNsZWFySW5wdXQoJGV2ZW50KVwiXG5cdFx0XHRcdFx0XHRcdChibHVyKT1cIm9uQmx1cigpXCI+XG5cdFx0XHRcdFx0XHRcdDxzdmcgY2RzSWNvbj1cImNsb3NlXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbWVudS1pY29uXCJcblx0XHRcdFx0XHRcdHRhYmluZGV4PVwiLTFcIlxuXHRcdFx0XHRcdFx0W3RpdGxlXT1cIm9wZW4gPyBjbG9zZU1lbnVBcmlhIDogb3Blbk1lbnVBcmlhXCJcblx0XHRcdFx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwib3BlbiA/IGNsb3NlTWVudUFyaWEgOiBvcGVuTWVudUFyaWFcIlxuXHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWxpc3QtYm94X19tZW51LWljb24tLW9wZW4nOiBvcGVufVwiPlxuXHRcdFx0XHRcdFx0PHN2ZyBjZHNJY29uPVwiY2hldnJvbi0tZG93blwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuXHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdCNkcm9wZG93bk1lbnVcblx0XHRcdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tdXAnOiB0aGlzLmRyb3BVcCAhPT0gbnVsbCAmJiB0aGlzLmRyb3BVcCAhPT0gdW5kZWZpbmVkID8gZHJvcFVwIDogX2Ryb3BVcFxuXHRcdFx0XHRcdH1cIj5cblx0XHRcdFx0XHRAaWYgKG9wZW4pIHtcblx0XHRcdFx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0QGlmIChmbHVpZCkge1xuXHRcdFx0XHQ8aHIgY2xhc3M9XCJjZHMtLWxpc3QtYm94X19kaXZpZGVyXCIgLz5cblx0XHRcdH1cblx0XHRcdEBpZiAoaW52YWxpZCkge1xuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdFx0QGlmIChpc1RlbXBsYXRlKGludmFsaWRUZXh0KSkge1xuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludmFsaWRUZXh0XCIgLz5cblx0XHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRcdHt7IGludmFsaWRUZXh0IH19XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdH0gQGVsc2UgaWYgKHdhcm4pIHtcblx0XHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0XHRcdEBpZiAoaXNUZW1wbGF0ZSh3YXJuVGV4dCkpIHtcblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ3YXJuVGV4dFwiIC8+XG5cdFx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0XHR7e3dhcm5UZXh0fX1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0fSBAZWxzZSBpZihoZWxwZXJUZXh0ICYmICFmbHVpZCkge1xuXHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWZvcm1fX2hlbHBlci10ZXh0XCJcblx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tZm9ybV9faGVscGVyLXRleHQtLWRpc2FibGVkJzogZGlzYWJsZWR9XCI+XG5cdFx0XHRcdFx0XHRAaWYgKGlzVGVtcGxhdGUoaGVscGVyVGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlbHBlclRleHRcIiAvPlxuXHRcdFx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHt7aGVscGVyVGV4dH19XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0fVxuXHRcdDwvZGl2PlxuXHRgLFxuXHRwcm92aWRlcnM6IFtcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcblx0XHRcdHVzZUV4aXN0aW5nOiBDb21ib0JveCxcblx0XHRcdG11bHRpOiB0cnVlXG5cdFx0fVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIENvbWJvQm94IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXHQvKipcblx0ICogVGV4dCB0byBzaG93IHdoZW4gbm90aGluZyBpcyBzZWxlY3RlZC5cblx0ICovXG5cdEBJbnB1dCgpIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB7XG5cdFx0dGhpcy5fcGxhY2Vob2xkZXIub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IHBsYWNlaG9sZGVyKCkge1xuXHRcdHJldHVybiB0aGlzLl9wbGFjZWhvbGRlci52YWx1ZTtcblx0fVxuXHQvKipcblx0ICogVmFsdWUgdG8gZGlzcGxheSBmb3IgYWNjZXNzaWJpbGl0eSBwdXJwb3NlcyBvbiB0aGUgY29tYm9ib3ggY29udHJvbCBtZW51IHdoZW4gY2xvc2VkXG5cdCAqL1xuXHRASW5wdXQoKSBzZXQgb3Blbk1lbnVBcmlhKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9vcGVuTWVudUFyaWEub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IG9wZW5NZW51QXJpYSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fb3Blbk1lbnVBcmlhLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IGZvciBhY2Nlc3NpYmlsaXR5IHB1cnBvc2VzIG9uIHRoZSBjb21ib2JveCBjb250cm9sIG1lbnUgd2hlbiBvcGVuZWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBjbG9zZU1lbnVBcmlhKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbG9zZU1lbnVBcmlhLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXG5cdGdldCBjbG9zZU1lbnVBcmlhKCkge1xuXHRcdHJldHVybiB0aGlzLl9jbG9zZU1lbnVBcmlhLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IG9uIHRoZSBjbGVhciBzZWxlY3Rpb25zIGljb24sIHdoZW4gbXVsdGkgaXMgc2VsZWN0ZWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBjbGVhclNlbGVjdGlvbnNUaXRsZSh2YWx1ZTogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB7XG5cdFx0dGhpcy5fY2xlYXJTZWxlY3Rpb25zVGl0bGUub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsZWFyU2VsZWN0aW9uc1RpdGxlKCkge1xuXHRcdHJldHVybiB0aGlzLl9jbGVhclNlbGVjdGlvbnNUaXRsZS52YWx1ZTtcblx0fVxuXHQvKipcblx0ICogVmFsdWUgdG8gZGlzcGxheSBmb3IgYWNjZXNzaWJpbGl0eSBwdXJwb3NlcyB0byBjbGVhciBzZWxlY3Rpb25zLCB3aGVuIG11bHRpIGlzIHNlbGVjdGVkXG5cdCAqL1xuXHRASW5wdXQoKSBzZXQgY2xlYXJTZWxlY3Rpb25zQXJpYSh2YWx1ZTogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB7XG5cdFx0dGhpcy5fY2xlYXJTZWxlY3Rpb25zQXJpYS5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgY2xlYXJTZWxlY3Rpb25zQXJpYSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fY2xlYXJTZWxlY3Rpb25zQXJpYS52YWx1ZTtcblx0fVxuXHQvKipcblx0ICogVmFsdWUgdG8gZGlzcGxheSBvbiB0aGUgY2xlYXIgdGhlIHNlbGVjdGVkIGl0ZW0gaWNvbiwgd2hlbiBzaW5nbGUgaXMgc2VsZWN0ZWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBjbGVhclNlbGVjdGlvblRpdGxlKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvblRpdGxlLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXG5cdGdldCBjbGVhclNlbGVjdGlvblRpdGxlKCkge1xuXHRcdHJldHVybiB0aGlzLl9jbGVhclNlbGVjdGlvblRpdGxlLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IGZvciBhY2Nlc3NpYmlsaXR5IHB1cnBvc2VzIG9uIHRoZSBjbGVhciB0aGUgc2VsZWN0ZWQgaXRlbSBpY29uLCB3aGVuIHNpbmdsZSBpcyBzZWxlY3RlZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsZWFyU2VsZWN0aW9uQXJpYSh2YWx1ZTogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB7XG5cdFx0dGhpcy5fY2xlYXJTZWxlY3Rpb25BcmlhLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXG5cdGdldCBjbGVhclNlbGVjdGlvbkFyaWEoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NsZWFyU2VsZWN0aW9uQXJpYS52YWx1ZTtcblx0fVxuXHRzdGF0aWMgY29tYm9Cb3hDb3VudCA9IDA7XG5cdEBJbnB1dCgpIGlkID0gYGNvbWJvYm94LSR7Q29tYm9Cb3guY29tYm9Cb3hDb3VudCsrfWA7XG5cdEBJbnB1dCgpIGxhYmVsSWQgPSBgY29tYm9ib3gtbGFiZWwtJHtDb21ib0JveC5jb21ib0JveENvdW50Kyt9YDtcblx0LyoqXG5cdCAqIExpc3Qgb2YgaXRlbXMgdG8gZmlsbCB0aGUgY29udGVudCB3aXRoLlxuXHQgKlxuXHQgKiAqKkV4YW1wbGU6Kipcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKiBpdGVtcyA9IFtcblx0ICpcdFx0e1xuXHQgKlx0XHRcdGNvbnRlbnQ6IFwiQWJhY3VzXCIsXG5cdCAqXHRcdFx0c2VsZWN0ZWQ6IGZhbHNlXG5cdCAqXHRcdH0sXG5cdCAqXHRcdHtcblx0ICpcdFx0XHRjb250ZW50OiBcIkJ5dGVcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2UsXG5cdCAqXHRcdH0sXG5cdCAqXHRcdHtcblx0ICpcdFx0XHRjb250ZW50OiBcIkNvbXB1dGVyXCIsXG5cdCAqXHRcdFx0c2VsZWN0ZWQ6IGZhbHNlXG5cdCAqXHRcdH0sXG5cdCAqXHRcdHtcblx0ICpcdFx0XHRjb250ZW50OiBcIkRpZ2l0YWxcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2Vcblx0ICpcdFx0fVxuXHQgKiBdO1xuXHQgKiBgYGBcblx0ICpcblx0ICovXG5cdEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxMaXN0SXRlbT4gPSBbXTtcblx0LyoqXG5cdCAqIENvbWJvIGJveCB0eXBlIChzdXBwb3J0aW5nIHNpbmdsZSBvciBtdWx0aSBzZWxlY3Rpb24gb2YgaXRlbXMpLlxuXHQgKi9cblx0QElucHV0KCkgdHlwZTogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiA9IFwic2luZ2xlXCI7XG5cdC8qKlxuXHQgKiBDb21ibyBib3ggcmVuZGVyIHNpemUuXG5cdCAqL1xuXHRASW5wdXQoKSBzaXplOiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgPSBcIm1kXCI7XG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIHByb3BlcnR5IHRvIGJlIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSB0byBgbmdNb2RlbGBcblx0ICovXG5cdEBJbnB1dCgpIGl0ZW1WYWx1ZUtleTogc3RyaW5nO1xuXHQvKipcblx0ICogTGFiZWwgZm9yIHRoZSBjb21ib2JveC5cblx0ICovXG5cdEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogSGlkZSBsYWJlbCB3aGlsZSBrZWVwaW5nIGl0IGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXJzXG5cdCAqL1xuXHRASW5wdXQoKSBoaWRlTGFiZWwgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldHMgdGhlIG9wdGlvbmFsIGhlbHBlciB0ZXh0LlxuXHQgKi9cblx0QElucHV0KCkgaGVscGVyVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAqIHNldCB0byBgdHJ1ZWAgdG8gcGxhY2UgdGhlIGRyb3Bkb3duIHZpZXcgaW5saW5lIHdpdGggdGhlIGNvbXBvbmVudFxuXHQgKi9cblx0QElucHV0KCkgYXBwZW5kSW5saW5lOiBib29sZWFuID0gbnVsbDtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gc2hvdyB0aGUgaW52YWxpZCBzdGF0ZS5cblx0ICovXG5cdEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFZhbHVlIGRpc3BsYXllZCBpZiBjb21ib2JveCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZFRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdC8qKlxuXHQqIFNldCB0byBgdHJ1ZWAgdG8gc2hvdyBhIHdhcm5pbmcgKGNvbnRlbnRzIHNldCBieSB3YXJuVGV4dClcblx0Ki9cblx0QElucHV0KCkgd2FybiA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0cyB0aGUgd2FybmluZyB0ZXh0XG5cdCAqL1xuXHRASW5wdXQoKSB3YXJuVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAqIE1heCBsZW5ndGggdmFsdWUgdG8gbGltaXQgaW5wdXQgY2hhcmFjdGVyc1xuXHQgKi9cblx0QElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXIgPSBudWxsO1xuXHQvKipcblx0ICogQGRlcHJlY2F0ZWQgc2luY2UgdjUgLSBVc2UgYGNkc0xheWVyYCBkaXJlY3RpdmUgaW5zdGVhZFxuXHQgKi9cblx0QElucHV0KCkgdGhlbWU6IFwibGlnaHRcIiB8IFwiZGFya1wiID0gXCJkYXJrXCI7XG5cdC8qKlxuXHQgKiBTcGVjaWZ5IGZlZWRiYWNrIChtb2RlKSBvZiB0aGUgc2VsZWN0aW9uLlxuXHQgKiBgdG9wYDogc2VsZWN0ZWQgaXRlbSBqdW1wcyB0byB0b3Bcblx0ICogYGZpeGVkYDogc2VsZWN0ZWQgaXRlbSBzdGF5cyBhdCBpdHMgcG9zaXRpb25cblx0ICogYHRvcC1hZnRlci1yZW9wZW5gOiBzZWxlY3RlZCBpdGVtIGp1bXAgdG8gdG9wIGFmdGVyIHJlb3BlbiBkcm9wZG93blxuXHQgKi9cblx0QElucHV0KCkgc2VsZWN0aW9uRmVlZGJhY2s6IFwidG9wXCIgfCBcImZpeGVkXCIgfCBcInRvcC1hZnRlci1yZW9wZW5cIiA9IFwidG9wLWFmdGVyLXJlb3BlblwiO1xuXHQvKipcblx0ICogU3BlY2lmeSBhcmlhLWF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgb2YgdGV4dCBpbnB1dC5cblx0ICogXCJsaXN0XCIsIGlzIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgYSBjb21ib2JveCB0aGF0IGludm9rZXMgYSBkcm9wLWRvd24gbGlzdFxuXHQgKi9cblx0QElucHV0KCkgYXV0b2NvbXBsZXRlID0gXCJsaXN0XCI7XG5cdC8qKlxuXHQgKiBPdmVycmlkZXMgdGhlIGF1dG9tYXRpYyBkcm9wVXAuXG5cdCAqL1xuXHRASW5wdXQoKSBkcm9wVXA6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIGRpc2FibGUgY29tYm9ib3guXG5cdCAqL1xuXHRASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBmb3IgcmVhZG9ubHkgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuXHQvKipcblx0ICogRXhwZXJpbWVudGFsOiBlbmFibGUgZmx1aWQgc3RhdGVcblx0ICovXG5cdEBJbnB1dCgpIGZsdWlkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBFbWl0cyBhIExpc3RJdGVtXG5cdCAqXG5cdCAqIEV4YW1wbGU6XG5cdCAqIGBgYGphdmFzY3JpcHRcblx0ICoge1xuXHQgKiBcdFx0Y29udGVudDogXCJvbmVcIixcblx0ICogXHRcdHNlbGVjdGVkOiB0cnVlXG5cdCAqIH1cblx0ICogYGBgXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExpc3RJdGVtIHwgTGlzdEl0ZW1bXT4oKTtcblx0LyoqXG5cdCAqIEludGVuZGVkIHRvIGJlIHVzZWQgdG8gYWRkIGl0ZW1zIHRvIHRoZSBsaXN0LlxuXHQgKlxuXHQgKiBFbWl0cyBhbiBldmVudCB0aGF0IGluY2x1ZGVzIHRoZSBjdXJyZW50IGl0ZW0gbGlzdCwgdGhlIHN1Z2dlc3RlZCBpbmRleCBmb3IgdGhlIG5ldyBpdGVtLCBhbmQgYSBzaW1wbGUgTGlzdEl0ZW1cblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKlx0e1xuXHQgKlx0XHRpdGVtczogW3tjb250ZW50OiBcIm9uZVwiLCBzZWxlY3RlZDogdHJ1ZX0sIHtjb250ZW50OiBcInR3b1wiLCBzZWxlY3RlZDogdHJ1ZX1dLFxuXHQgKlx0XHRpbmRleDogMSxcblx0ICpcdFx0dmFsdWU6IHtcblx0ICpcdFx0XHRjb250ZW50OiBcInNvbWUgdXNlciBzdHJpbmdcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2Vcblx0ICpcdFx0fVxuXHQgKlx0fVxuXHQgKiBgYGBcblx0ICpcblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKiB7XG5cdCAqXHRhZnRlcjogMSxcblx0ICpcdHZhbHVlOiBcInNvbWUgdXNlciBzdHJpbmdcIlxuXHQgKiB9XG5cdCAqIGBgYFxuXHQgKi9cblx0QE91dHB1dCgpIHN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuXHRcdGl0ZW1zOiBMaXN0SXRlbVtdLFxuXHRcdGluZGV4OiBudW1iZXIsXG5cdFx0dmFsdWU6IHtcblx0XHRcdGNvbnRlbnQ6IHN0cmluZyxcblx0XHRcdHNlbGVjdGVkOiBib29sZWFuXG5cdFx0fVxuXHR9PigpO1xuXHQvKiogRW1pdHMgYW4gZW1wdHkgZXZlbnQgd2hlbiB0aGUgbWVudSBpcyBjbG9zZWQgKi9cblx0QE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXHQvKiogRW1pdHMgdGhlIHNlYXJjaCBzdHJpbmcgZnJvbSB0aGUgaW5wdXQgKi9cblx0QE91dHB1dCgpIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXHQvKiogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgY2xlYXIgYnV0dG9uIGlzIGNsaWNrZWQuICovXG5cdEBPdXRwdXQoKSBjbGVhciA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cdC8qKiBDb250ZW50Q2hpbGQgcmVmZXJlbmNlIHRvIHRoZSBpbnN0YW50aWF0ZWQgZHJvcGRvd24gbGlzdCAqL1xuXHRAQ29udGVudENoaWxkKEFic3RyYWN0RHJvcGRvd25WaWV3LCB7IHN0YXRpYzogdHJ1ZSB9KSB2aWV3OiBBYnN0cmFjdERyb3Bkb3duVmlldztcblx0QFZpZXdDaGlsZChcImRyb3Bkb3duTWVudVwiKSBkcm9wZG93bk1lbnU7XG5cdEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dDogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZChcImxpc3Rib3hcIiwgeyBzdGF0aWM6IHRydWUgfSkgbGlzdGJveDogRWxlbWVudFJlZjtcblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1saXN0LWJveF9fd3JhcHBlclwiKSBob3N0Q2xhc3MgPSB0cnVlO1xuXG5cdHB1YmxpYyBvcGVuID0gZmFsc2U7XG5cblx0cHVibGljIHNob3dDbGVhckJ1dHRvbiA9IGZhbHNlO1xuXG5cdC8qKiBTZWxlY3RlZCBpdGVtcyBmb3IgbXVsdGktc2VsZWN0IGNvbWJvLWJveGVzLiAqL1xuXHRwdWJsaWMgcGlsbHMgPSBbXTtcblx0LyoqIHVzZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5VmFsdWUgKi9cblx0cHVibGljIHNlbGVjdGVkVmFsdWUgPSBcIlwiO1xuXG5cdG91dHNpZGVDbGljayA9IHRoaXMuX291dHNpZGVDbGljay5iaW5kKHRoaXMpO1xuXHRrZXlib2FyZE5hdiA9IHRoaXMuX2tleWJvYXJkTmF2LmJpbmQodGhpcyk7XG5cdC8qKlxuXHQgKiBjb250cm9scyB3aGV0aGVyIHRoZSBgZHJvcC11cGAgY2xhc3MgaXMgYXBwbGllZFxuXHQgKi9cblx0X2Ryb3BVcCA9IGZhbHNlO1xuXG5cdHByb3RlY3RlZCBub29wID0gdGhpcy5fbm9vcC5iaW5kKHRoaXMpO1xuXHRwcm90ZWN0ZWQgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSB0aGlzLl9ub29wO1xuXHRwcm90ZWN0ZWQgcHJvcGFnYXRlQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSB0aGlzLl9ub29wO1xuXG5cdHByb3RlY3RlZCBfcGxhY2Vob2xkZXIgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5QTEFDRUhPTERFUlwiKTtcblx0cHJvdGVjdGVkIF9jbG9zZU1lbnVBcmlhID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiQ09NQk9CT1guQTExWS5DTE9TRV9NRU5VXCIpO1xuXHRwcm90ZWN0ZWQgX29wZW5NZW51QXJpYSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLkExMVkuT1BFTl9NRU5VXCIpO1xuXHRwcm90ZWN0ZWQgX2NsZWFyU2VsZWN0aW9uc1RpdGxlID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiQ09NQk9CT1guQ0xFQVJfU0VMRUNUSU9OU1wiKTtcblx0cHJvdGVjdGVkIF9jbGVhclNlbGVjdGlvbnNBcmlhID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiQ09NQk9CT1guQTExWS5DTEVBUl9TRUxFQ1RJT05TXCIpO1xuXHRwcm90ZWN0ZWQgX2NsZWFyU2VsZWN0aW9uVGl0bGUgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5DTEVBUl9TRUxFQ1RFRFwiKTtcblx0cHJvdGVjdGVkIF9jbGVhclNlbGVjdGlvbkFyaWEgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5BMTFZLkNMRUFSX1NFTEVDVEVEXCIpO1xuXG5cdHByb3RlY3RlZCBfaXNGb2N1c2VkID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQ29tYm9Cb3guXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcblx0XHRwcm90ZWN0ZWQgZHJvcGRvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXG5cdFx0cHJvdGVjdGVkIGkxOG46IEkxOG5cblx0KSB7fVxuXG5cdC8qKlxuXHQgKiBMaWZlY3ljbGUgaG9vay5cblx0ICogVXBkYXRlcyBwaWxscyBpZiBuZWNlc3NhcnkuXG5cdCAqXG5cdCAqL1xuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzKSB7XG5cdFx0aWYgKGNoYW5nZXMuaXRlbXMpIHtcblx0XHRcdHRoaXMudmlldy5pdGVtcyA9IGNoYW5nZXMuaXRlbXMuY3VycmVudFZhbHVlO1xuXHRcdFx0dGhpcy51cGRhdGVTZWxlY3RlZCgpO1xuXHRcdFx0Ly8gSWYgbmV3IGl0ZW1zIGFyZSBhZGRlZCBpbnRvIHRoZSBjb21ib2JveCB3aGlsZSB0aGVyZSBpcyBzZWFyY2ggaW5wdXQsXG5cdFx0XHQvLyByZXBlYXQgdGhlIHNlYXJjaC4gU2VhcmNoIHNob3VsZCBvbmx5IHRyaWdnZXIgZm9yIHR5cGUgJ3NpbmdsZScgd2hlbiB0aGVyZSBpcyBubyB2YWx1ZSBzZWxlY3RlZC5cblx0XHRcdGlmICh0aGlzLnR5cGUgPT09IFwibXVsdGlcIiB8fCAodGhpcy50eXBlID09PSBcInNpbmdsZVwiICYmICF0aGlzLnNlbGVjdGVkVmFsdWUpKSB7XG5cdFx0XHRcdHRoaXMub25TZWFyY2godGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlLCBmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgaW5pdGlhbCBzdGF0ZSB0aGF0IGRlcGVuZHMgb24gY2hpbGQgY29tcG9uZW50c1xuXHQgKiBTdWJzY3JpYmVzIHRvIHNlbGVjdCBldmVudHMgYW5kIGhhbmRsZXMgZm9jdXMvZmlsdGVyaW5nL2luaXRpYWwgbGlzdCB1cGRhdGVzXG5cdCAqL1xuXHRuZ0FmdGVyQ29udGVudEluaXQoKSB7XG5cdFx0aWYgKHRoaXMudmlldykge1xuXHRcdFx0dGhpcy52aWV3LnR5cGUgPSB0aGlzLnR5cGU7XG5cblx0XHRcdC8vIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBldmVudCBpcyBvcmdhbmljIChpc1VwZGF0ZSA9PT0gZmFsc2UpIG9yIHByb2dyYW1tYXRpY1xuXHRcdFx0Y29uc3QgaXNVcGRhdGUgPSBldmVudCA9PiBldmVudCAmJiBldmVudC5pc1VwZGF0ZTtcblxuXHRcdFx0dGhpcy52aWV3LnNlbGVjdC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShldmVudCkpIHtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZVBpbGxzKCk7XG5cdFx0XHRcdFx0aWYgKCFpc1VwZGF0ZShldmVudCkpIHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLml0ZW1WYWx1ZUtleSAmJiB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB2YWx1ZXMgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuaXRlbVZhbHVlS2V5XSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlQ2FsbGJhY2sodmFsdWVzKTtcblx0XHRcdFx0XHRcdC8vIG90aGVyd2lzZSBqdXN0IHBhc3MgdXAgdGhlIHZhbHVlcyBmcm9tIGBnZXRTZWxlY3RlZGBcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlQ2FsbGJhY2sodGhpcy52aWV3LmdldFNlbGVjdGVkKCkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZC5lbWl0KGV2ZW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gSWYgdHlwZSBpcyBzaW5nbGUsIGRyb3Bkb3duIGxpc3Qgd2lsbCBlbWl0IGFuIG9iamVjdFxuXHRcdFx0XHRcdGlmIChldmVudC5pdGVtICYmIGV2ZW50Lml0ZW0uc2VsZWN0ZWQpIHtcblx0XHRcdFx0XHRcdHRoaXMuc2hvd0NsZWFyQnV0dG9uID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50Lml0ZW0uY29udGVudDtcblxuXHRcdFx0XHRcdFx0aWYgKCFpc1VwZGF0ZShldmVudCkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5KSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayhldmVudC5pdGVtW3RoaXMuaXRlbVZhbHVlS2V5XSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayhldmVudC5pdGVtKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkVmFsdWUgPSBcIlwiO1xuXHRcdFx0XHRcdFx0aWYgKCFpc1VwZGF0ZShldmVudCkpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayhudWxsKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gbm90IGd1YXJkaW5nIHRoZXNlIHNpbmNlIHRoZSBuYXRpdmVFbGVtZW50IGhhcyB0byBiZSBsb2FkZWRcblx0XHRcdFx0XHQvLyBmb3Igc2VsZWN0IHRvIGV2ZW4gZmlyZVxuXHRcdFx0XHRcdC8vIG9ubHkgZm9jdXMgZm9yIFwib3JnYW5pY1wiIHNlbGVjdGlvbnNcblx0XHRcdFx0XHRpZiAoIWlzVXBkYXRlKGV2ZW50KSkge1xuXHRcdFx0XHRcdFx0dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpLmZvY3VzKCk7XG5cdFx0XHRcdFx0XHR0aGlzLnZpZXcuZmlsdGVyQnkoXCJcIik7XG5cdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoZXZlbnQuaXRlbSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdC8vIHVwZGF0ZSB0aGUgcmVzdCBvZiBjb21ib2JveCB3aXRoIGFueSBwcmUtc2VsZWN0ZWQgaXRlbXNcblx0XHRcdC8vIHNldFRpbWVvdXQganVzdCBkZWZlcnMgdGhlIGNhbGwgdG8gdGhlIG5leHQgY2hlY2sgY3ljbGVcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnVwZGF0ZVNlbGVjdGVkKCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy52aWV3LmJsdXJJbnRlbnQucGlwZShmaWx0ZXIodiA9PiB2ID09PSBcInRvcFwiKSkuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdFx0dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5jZHMtLXRleHQtaW5wdXRcIikuZm9jdXMoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBCaW5kcyBldmVudCBoYW5kbGVycyBhZ2FpbnN0IHRoZSByZW5kZXJlZCB2aWV3XG5cdCAqL1xuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0Ly8gaWYgYXBwZW5kSW5saW5lIGlzIGRlZmF1bHQgdmFsdWVkIChudWxsKSB3ZSBzaG91bGQ6XG5cdFx0Ly8gMS4gaWYgdGhlcmUgYXJlIHNjcm9sbGFibGUgcGFyZW50cyAobm90IGluY2x1ZGluZyBib2R5KSBkb24ndCBhcHBlbmQgaW5saW5lXG5cdFx0Ly8gICAgdGhpcyBzaG91bGQgYWxzbyBjb3ZlciB0aGUgY2FzZSB3aGVyZSB0aGUgZHJvcGRvd24gaXMgaW4gYSBtb2RhbFxuXHRcdC8vICAgICh3aGVyZSB3ZSBfZG9fIHdhbnQgdG8gYXBwZW5kIHRvIHRoZSBwbGFjZWhvbGRlcilcblx0XHRpZiAodGhpcy5hcHBlbmRJbmxpbmUgPT09IG51bGwgJiYgaGFzU2Nyb2xsYWJsZVBhcmVudHModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKSB7XG5cdFx0XHR0aGlzLmFwcGVuZElubGluZSA9IGZhbHNlO1xuXHRcdC8vIDIuIG90aGVyd2lzZSB3ZSBzaG91bGQgYXBwZW5kIGlubGluZVxuXHRcdH0gZWxzZSBpZiAodGhpcy5hcHBlbmRJbmxpbmUgPT09IG51bGwpIHtcblx0XHRcdHRoaXMuYXBwZW5kSW5saW5lID0gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZpbmcgdGhlIGBEcm9wZG93bmAgZnJvbSB0aGUgYm9keSBpZiBpdCBpcyBhcHBlbmRlZCB0byB0aGUgYm9keS5cblx0ICovXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdGlmICghdGhpcy5hcHBlbmRJbmxpbmUpIHtcblx0XHRcdHRoaXMuX2FwcGVuZFRvRHJvcGRvd24oKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyBgRXNjYXBlL1RhYmAga2V5IGNsb3NpbmcgdGhlIGRyb3Bkb3duLCBhbmQgYXJyb3cgdXAvZG93biBmb2N1cyB0by9mcm9tIHRoZSBkcm9wZG93biBsaXN0LlxuXHQgKi9cblx0QEhvc3RMaXN0ZW5lcihcImtleWRvd25cIiwgW1wiJGV2ZW50XCJdKVxuXHRob3N0a2V5cyhldjogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGlmIChldi5rZXkgPT09IFwiRXNjYXBlXCIpIHtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdH0gZWxzZSBpZiAoKGV2LmtleSA9PT0gXCJBcnJvd0Rvd25cIilcblx0XHRcdCYmICghdGhpcy5kcm9wZG93bk1lbnUgfHwgIXRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXYudGFyZ2V0KSkpIHtcblx0XHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR0aGlzLm9wZW5Ecm9wZG93bigpO1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7IHRoaXMudmlldy5pbml0Rm9jdXMoKTsgfSwgMCk7XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5vcGVuICYmIGV2LmtleSA9PT0gXCJUYWJcIiAmJlxuXHRcdFx0KHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXYudGFyZ2V0IGFzIE5vZGUpIHx8IGV2LnRhcmdldCA9PT0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KVxuXHRcdCkge1xuXHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMub3BlbiAmJiBldi5rZXkgPT09IFwiVGFiXCIgJiYgZXYuc2hpZnRLZXkpIHtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qXG5cdCAqIG5vLW9wIG1ldGhvZCBmb3IgbnVsbCBldmVudCBsaXN0ZW5lcnMsIGFuZCBvdGhlciBubyBvcCBjYWxsc1xuXHQgKi9cblx0X25vb3AoKSB7fVxuXG5cdC8qXG5cdCAqIHByb3BhZ2F0ZXMgdGhlIHZhbHVlIHByb3ZpZGVkIGZyb20gbmdNb2RlbFxuXHQgKi9cblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG5cdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIikge1xuXHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5KSB7XG5cdFx0XHRcdC8vIGNsb25lIHRoZSBzcGVjaWZpZWQgaXRlbSBhbmQgdXBkYXRlIGl0cyBzdGF0ZVxuXHRcdFx0XHRjb25zdCBuZXdWYWx1ZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKS5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0gPT09IHZhbHVlKSk7XG5cdFx0XHRcdG5ld1ZhbHVlLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy52aWV3LnByb3BhZ2F0ZVNlbGVjdGVkKFtuZXdWYWx1ZV0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gYWxsIGl0ZW1zIGluIHByb3BhZ2F0ZVNlbGVjdGVkIG11c3QgYmUgaXRlcmFibGVcblx0XHRcdFx0dGhpcy52aWV3LnByb3BhZ2F0ZVNlbGVjdGVkKFt2YWx1ZSB8fCBcIlwiXSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnNob3dDbGVhckJ1dHRvbiA9ICEhKHZhbHVlICYmIHRoaXMudmlldy5nZXRTZWxlY3RlZCgpLmxlbmd0aCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0aGlzLml0ZW1WYWx1ZUtleSkge1xuXHRcdFx0XHQvLyBjbG9uZSB0aGUgaXRlbXMgYW5kIHVwZGF0ZSB0aGVpciBzdGF0ZSBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgdmFsdWUgYXJyYXlcblx0XHRcdFx0Ly8gdGhpcyB3YXkgd2UgZG9uJ3QgbG9zZSBhbnkgYWRkaXRpb25hbCBtZXRhZGF0YSB0aGF0IG1heSBiZSBwYXNzZWQgaW4gdmlhIHRoZSBgaXRlbXNgIElucHV0XG5cdFx0XHRcdGxldCBuZXdWYWx1ZXMgPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCB2IG9mIHZhbHVlID8/IFtdKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKSkge1xuXHRcdFx0XHRcdFx0aWYgKGl0ZW1bdGhpcy5pdGVtVmFsdWVLZXldID09PSB2KSB7XG5cdFx0XHRcdFx0XHRcdG5ld1ZhbHVlcy5wdXNoKE9iamVjdC5hc3NpZ24oe30sIGl0ZW0sIHsgc2VsZWN0ZWQ6IHRydWUgfSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnZpZXcucHJvcGFnYXRlU2VsZWN0ZWQobmV3VmFsdWVzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMudmlldy5wcm9wYWdhdGVTZWxlY3RlZCh2YWx1ZSA/IHZhbHVlIDogW1wiXCJdKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy51cGRhdGVTZWxlY3RlZCgpO1xuXHR9XG5cblx0b25CbHVyKCkge1xuXHRcdHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcblx0fVxuXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcblx0fVxuXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcblx0XHR0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG5cdH1cblxuXHQvKipcblx0ICogYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBtZXRob2QgdG8gcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlIHRoZSBjb21ib2JveC5cblx0ICpcblx0ICogZXg6IGB0aGlzLmZvcm1Hcm91cC5nZXQoXCJteUNvb2xDb21ib2JveFwiKS5kaXNhYmxlKCk7YFxuXHQgKi9cblx0c2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG5cdFx0dGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGVkIGJ5IGBuLXBpbGwtaW5wdXRgIHdoZW4gdGhlIHNlbGVjdGVkIHBpbGxzIGhhdmUgY2hhbmdlZC5cblx0ICovXG5cdHB1YmxpYyB1cGRhdGVQaWxscygpIHtcblx0XHR0aGlzLnBpbGxzID0gdGhpcy52aWV3LmdldFNlbGVjdGVkKCkgfHwgW107XG5cdFx0dGhpcy5jaGVja0ZvclJlb3JkZXIoKTtcblx0fVxuXG5cdHB1YmxpYyBjbGVhclNlbGVjdGVkKGV2ZW50KSB7XG5cdFx0dGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4ge1xuXHRcdFx0aWYgKCFpdGVtLmRpc2FibGVkKSB7XG5cdFx0XHRcdGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBpdGVtO1xuXHRcdH0pO1xuXHRcdHRoaXMudmlldy5pdGVtcyA9IHRoaXMuaXRlbXM7XG5cdFx0dGhpcy51cGRhdGVQaWxscygpO1xuXHRcdC8vIGNsZWFyU2VsZWN0ZWQgY2FuIG9ubHkgZmlyZSBvbiB0eXBlPW11bHRpXG5cdFx0Ly8gc28gd2UganVzdCBlbWl0IGdldFNlbGVjdGVkKCkgKGp1c3QgaW4gY2FzZSB0aGVyZSdzIGFueSBkaXNhYmxlZCBidXQgc2VsZWN0ZWQgaXRlbXMpXG5cdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKTtcblxuXHRcdC8vIGluIGNhc2UgdGhlcmUgYXJlIGRpc2FibGVkIGl0ZW1zIHRoZXkgc2hvdWxkIGJlIG1hcHBlZCBhY2NvcmRpbmcgdG8gaXRlbVZhbHVlS2V5XG5cdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5ICYmIHNlbGVjdGVkKSB7XG5cdFx0XHRjb25zdCB2YWx1ZXMgPSBzZWxlY3RlZC5tYXAoKGl0ZW0pID0+IGl0ZW1bdGhpcy5pdGVtVmFsdWVLZXldKTtcblx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlQ2FsbGJhY2sodmFsdWVzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayhzZWxlY3RlZCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zZWxlY3RlZC5lbWl0KHNlbGVjdGVkIGFzIGFueSk7XG5cdFx0dGhpcy5jbGVhci5lbWl0KGV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbG9zZXMgdGhlIGRyb3Bkb3duIGFuZCBlbWl0cyB0aGUgY2xvc2UgZXZlbnQuXG5cdCAqL1xuXHRwdWJsaWMgY2xvc2VEcm9wZG93bigpIHtcblx0XHR0aGlzLm9wZW4gPSBmYWxzZTtcblx0XHR0aGlzLmNoZWNrRm9yUmVvcmRlcigpO1xuXHRcdHRoaXMuY2xvc2UuZW1pdCgpO1xuXHRcdGlmICghdGhpcy5hcHBlbmRJbmxpbmUpIHtcblx0XHRcdHRoaXMuX2FwcGVuZFRvRHJvcGRvd24oKTtcblx0XHR9XG5cblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vdXRzaWRlQ2xpY2ssIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE9wZW5zIHRoZSBkcm9wZG93bi5cblx0ICovXG5cdHB1YmxpYyBvcGVuRHJvcGRvd24oKSB7XG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkgeyByZXR1cm47IH1cblx0XHR0aGlzLm9wZW4gPSB0cnVlO1xuXHRcdHRoaXMuX2Ryb3BVcCA9IGZhbHNlO1xuXG5cdFx0aWYgKCF0aGlzLmFwcGVuZElubGluZSkge1xuXHRcdFx0dGhpcy5fYXBwZW5kVG9Cb2R5KCk7XG5cdFx0fVxuXG5cdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub3V0c2lkZUNsaWNrLCB0cnVlKTtcblxuXHRcdC8vIHNldCB0aGUgZHJvcGRvd24gbWVudSB0byBkcm9wIHVwIGlmIGl0IGlzIG5lYXIgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuXG5cdFx0Ly8gc2V0VGltZW91dCBsZXRzIHVzIGRvIHRoZSBjYWxjdWxhdGlvbnMgYWZ0ZXIgaXQgaXMgdmlzaWJsZSBpbiB0aGUgRE9NXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5kcm9wVXAgPT09IG51bGwgfHwgdGhpcy5kcm9wVXAgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aGlzLl9kcm9wVXAgPSB0aGlzLl9zaG91bGREcm9wVXAoKTtcblx0XHRcdH1cblx0XHR9LCAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUb2dnbGVzIHRoZSBkcm9wZG93bi5cblx0ICovXG5cdHB1YmxpYyB0b2dnbGVEcm9wZG93bigpIHtcblx0XHRpZiAodGhpcy5vcGVuKSB7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5vcGVuRHJvcGRvd24oKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgbGlzdCBncm91cCBmaWx0ZXIsIGFuZCBtYW5hZ2VzIHNpbmdsZSBzZWxlY3QgaXRlbSBzZWxlY3Rpb24uXG5cdCAqL1xuXHRwdWJsaWMgb25TZWFyY2goc2VhcmNoU3RyaW5nLCBzaG91bGRFbWl0U2VhcmNoID0gdHJ1ZSkge1xuXHRcdGlmIChzaG91bGRFbWl0U2VhcmNoKSB7XG5cdFx0XHR0aGlzLnNlYXJjaC5lbWl0KHNlYXJjaFN0cmluZyk7XG5cdFx0fVxuXHRcdHRoaXMuc2hvd0NsZWFyQnV0dG9uID0gISFzZWFyY2hTdHJpbmc7XG5cdFx0dGhpcy52aWV3LmZpbHRlckJ5KHNlYXJjaFN0cmluZyk7XG5cdFx0aWYgKHNlYXJjaFN0cmluZyAhPT0gXCJcIikge1xuXHRcdFx0aWYgKCF0aGlzLm9wZW4pIHtcblx0XHRcdFx0dGhpcy5vcGVuRHJvcGRvd24oKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZWxlY3RlZFZhbHVlID0gXCJcIjtcblx0XHRcdGlmICh0aGlzLnR5cGUgPT09IFwibXVsdGlcIiAmJlxuXHRcdFx0XHQodGhpcy5zZWxlY3Rpb25GZWVkYmFjayA9PT0gXCJ0b3BcIiB8fCB0aGlzLnNlbGVjdGlvbkZlZWRiYWNrID09PSBcInRvcC1hZnRlci1yZW9wZW5cIikpIHtcblx0XHRcdFx0dGhpcy52aWV3LnJlb3JkZXJTZWxlY3RlZCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHQvLyBkZXNlbGVjdCBpZiB0aGUgaW5wdXQgZG9lc24ndCBtYXRjaCB0aGUgY29udGVudFxuXHRcdFx0Ly8gb2YgYW55IGdpdmVuIGl0ZW1cblx0XHRcdGNvbnN0IG1hdGNoZXMgPSB0aGlzLnZpZXcuZ2V0TGlzdEl0ZW1zKCkuc29tZShpdGVtID0+IGl0ZW0uY29udGVudC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSk7XG5cdFx0XHRpZiAoIW1hdGNoZXMpIHtcblx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKTtcblx0XHRcdFx0aWYgKCFzZWxlY3RlZCB8fCAhc2VsZWN0ZWRbMF0pIHtcblx0XHRcdFx0XHR0aGlzLnZpZXcuZmlsdGVyQnkoc2VhcmNoU3RyaW5nKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJbnRlbmRlZCB0byBiZSB1c2VkIHRvIGFkZCBpdGVtcyB0byB0aGUgbGlzdC5cblx0ICovXG5cdHB1YmxpYyBvblN1Ym1pdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdHRoaXMuc3VibWl0LmVtaXQoe1xuXHRcdFx0aXRlbXM6IHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKSxcblx0XHRcdGluZGV4OiAwLFxuXHRcdFx0dmFsdWU6IHtcblx0XHRcdFx0Y29udGVudDogKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSxcblx0XHRcdFx0c2VsZWN0ZWQ6IGZhbHNlXG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRjbGVhcklucHV0KGV2ZW50KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7IC8vIGRvbid0IHdhbnQgdG8gY2xlYXIgc2VsZWN0ZWQgb3IgY2xvc2UgaWYgbXVsdGlcblx0XHRcdHRoaXMuY2xlYXJTZWxlY3RlZChldmVudCk7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9XG5cblx0XHR0aGlzLnNlbGVjdGVkVmFsdWUgPSBcIlwiO1xuXHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XG5cblx0XHR0aGlzLnNob3dDbGVhckJ1dHRvbiA9IGZhbHNlO1xuXHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdHRoaXMub25TZWFyY2godGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgc28gdXNlcnMgYXJlIGNvbnRyb2xsaW5nIHRoZSBgRHJvcGRvd25gIGluc3RlYWQgb2YgdW5pbnRlbnRpb25hbGx5IGNvbnRyb2xsaW5nIG91dHNpZGUgZWxlbWVudHMuXG5cdCAqL1xuXHRfa2V5Ym9hcmROYXYoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRpZiAoKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikgJiYgdGhpcy5vcGVuKSB7XG5cdFx0XHRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsgIC8vIGRvbid0IHVuaW50ZW50aW9uYWxseSBjbG9zZSBtb2RhbCBpZiBpbnNpZGUgb2YgaXRcblx0XHR9XG5cdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLm9wZW4gJiYgZXZlbnQua2V5ID09PSBcIlRhYlwiKSB7XG5cdFx0XHQvLyB0aGlzIHdheSBmb2N1cyB3aWxsIHN0YXJ0IG9uIHRoZSBuZXh0IGZvY3VzYWJsZSBpdGVtIGZyb20gdGhlIGRyb3Bkb3duXG5cdFx0XHQvLyBub3QgdGhlIHRvcCBvZiB0aGUgYm9keSFcblx0XHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoXCJrZXlkb3duXCIsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSwga2V5OiBcIlRhYlwiIH0pKTtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBgRHJvcGRvd25gIGxpc3QgYXMgYW4gZWxlbWVudCB0aGF0IGlzIGFwcGVuZGVkIHRvIHRoZSBET00gYm9keS5cblx0ICovXG5cdF9hcHBlbmRUb0JvZHkoKSB7XG5cdFx0dGhpcy5kcm9wZG93blNlcnZpY2UuYXBwZW5kVG9Cb2R5KFxuXHRcdFx0dGhpcy5saXN0Ym94Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHR0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0YCR7dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lfSR7dGhpcy5vcGVuID8gXCIgY2RzLS1saXN0LWJveC0tZXhwYW5kZWRcIiA6IFwiXCJ9YCk7XG5cdFx0dGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmtleWJvYXJkTmF2LCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBgRHJvcGRvd25gIGxpc3QgYXBwZW5kaW5nIGl0IHRvIHRoZSBkcm9wZG93biBwYXJlbnQgb2JqZWN0IGluc3RlYWQgb2YgdGhlIGJvZHkuXG5cdCAqL1xuXHRfYXBwZW5kVG9Ecm9wZG93bigpIHtcblx0XHR0aGlzLmRyb3Bkb3duU2VydmljZS5hcHBlbmRUb0Ryb3Bkb3duKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHR0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMua2V5Ym9hcmROYXYsIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVjdHMgd2hldGhlciBvciBub3QgdGhlIGBEcm9wZG93bmAgbGlzdCBpcyB2aXNpYmxlIHdpdGhpbiBhbGwgc2Nyb2xsYWJsZSBwYXJlbnRzLlxuXHQgKiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBhc3NpbmcgaW4gYSB2YWx1ZSB0byB0aGUgYGRyb3BVcGAgaW5wdXQuXG5cdCAqL1xuXHRfc2hvdWxkRHJvcFVwKCkge1xuXHRcdC8vIGNoZWNrIGlmIGRyb3Bkb3duTWVudSBleGlzdHMgZmlyc3QuXG5cdFx0Y29uc3QgbWVudSA9IHRoaXMuZHJvcGRvd25NZW51ICYmIHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5jZHMtLWxpc3QtYm94X19tZW51XCIpO1xuXHRcdC8vIGNoZWNrIGlmIG1lbnUgZXhpc3RzIGZpcnN0LlxuXHRcdGNvbnN0IG1lbnVSZWN0ID0gbWVudSAmJiBtZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdGlmIChtZW51ICYmIG1lbnVSZWN0KSB7XG5cdFx0XHRjb25zdCBzY3JvbGxhYmxlUGFyZW50cyA9IGdldFNjcm9sbGFibGVQYXJlbnRzKG1lbnUpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGFibGVQYXJlbnRzLnJlZHVjZSgoc2hvdWxkRHJvcFVwOiBib29sZWFuLCBwYXJlbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhcmVudFJlY3QgPSBwYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0XHRcdGNvbnN0IGlzQmVsb3dQYXJlbnQgPSAhKG1lbnVSZWN0LmJvdHRvbSA8PSBwYXJlbnRSZWN0LmJvdHRvbSk7XG5cdFx0XHRcdHJldHVybiBzaG91bGREcm9wVXAgfHwgaXNCZWxvd1BhcmVudDtcblx0XHRcdH0sIGZhbHNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgYERyb3Bkb3duYCBsaXN0LlxuXHQgKi9cblx0X291dHNpZGVDbGljayhldmVudCkge1xuXHRcdGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuXHRcdFx0Ly8gaWYgd2UncmUgYXBwZW5kVG9Cb2R5IHRoZSBsaXN0IGlzbid0IHdpdGhpbiB0aGUgX2VsZW1lbnRSZWYsXG5cdFx0XHQvLyBzbyB3ZSd2ZSBnb3QgdG8gY2hlY2sgaWYgb3VyIHRhcmdldCBpcyBwb3NzaWJseSBpbiB0aGVyZSB0b28uXG5cdFx0XHQhdGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9XG5cdH1cblxuXHRoYW5kbGVGb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuXHRcdHRoaXMuX2lzRm9jdXNlZCA9IGV2ZW50LnR5cGUgPT09IFwiZm9jdXNcIjtcblx0fVxuXG5cdHByb3RlY3RlZCB1cGRhdGVTZWxlY3RlZCgpIHtcblx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMudmlldy5nZXRTZWxlY3RlZCgpO1xuXHRcdGlmICh0aGlzLnR5cGUgPT09IFwibXVsdGlcIikge1xuXHRcdFx0dGhpcy51cGRhdGVQaWxscygpO1xuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gc2VsZWN0ZWRbMF0gPyBzZWxlY3RlZFswXS5jb250ZW50IDogXCJcIjtcblx0XHRcdGNvbnN0IGNoYW5nZUNhbGxiYWNrVmFsdWUgPSBzZWxlY3RlZFswXSA/IHNlbGVjdGVkWzBdIDogXCJcIjtcblx0XHRcdHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuXHRcdFx0dGhpcy5zaG93Q2xlYXJCdXR0b24gPSAhIXZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjaGVja0ZvclJlb3JkZXIoKSB7XG5cdFx0Y29uc3QgdG9wQWZ0ZXJSZW9wZW4gPSAhdGhpcy5vcGVuICYmIHRoaXMuc2VsZWN0aW9uRmVlZGJhY2sgPT09IFwidG9wLWFmdGVyLXJlb3BlblwiO1xuXHRcdGlmICgodGhpcy50eXBlID09PSBcIm11bHRpXCIpICYmICh0b3BBZnRlclJlb3BlbiB8fCB0aGlzLnNlbGVjdGlvbkZlZWRiYWNrID09PSBcInRvcFwiKSkge1xuXHRcdFx0dGhpcy52aWV3LnJlb3JkZXJTZWxlY3RlZCh0cnVlKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
1121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBQ1QsWUFBWSxFQUdaLFdBQVcsRUFDWCxXQUFXLEVBRVgsdUJBQXVCLEVBRXZCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUNOLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBSXpDOzs7Ozs7Ozs7OztHQVdHO0FBNExILE1BQU0sT0FBTyxRQUFRO0lBQ3BCOztPQUVHO0lBQ0gsSUFBYSxXQUFXLENBQUMsS0FBa0M7UUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksV0FBVztRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBYSxZQUFZLENBQUMsS0FBa0M7UUFDM0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBYSxhQUFhLENBQUMsS0FBa0M7UUFDNUQsSUFBSSxDQUFDLGNB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RyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBWUksUUFBUTtzQkFBakIsTUFBTTtnQkEyQkcsTUFBTTtzQkFBZixNQUFNO2dCQVNHLEtBQUs7c0JBQWQsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsS0FBSztzQkFBZCxNQUFNO2dCQUUrQyxJQUFJO3NCQUF6RCxZQUFZO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDekIsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNhLEtBQUs7c0JBQTFDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSSxPQUFPO3NCQUE5QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ08sU0FBUztzQkFBckQsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBMEozQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRPbkNoYW5nZXMsXG5cdENvbnRlbnRDaGlsZCxcblx0SW5wdXQsXG5cdE91dHB1dCxcblx0SG9zdExpc3RlbmVyLFxuXHRFbGVtZW50UmVmLFxuXHRWaWV3Q2hpbGQsXG5cdEV2ZW50RW1pdHRlcixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0QWZ0ZXJDb250ZW50SW5pdCxcblx0SG9zdEJpbmRpbmcsXG5cdFRlbXBsYXRlUmVmLFxuXHRPbkRlc3Ryb3ksXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3REcm9wZG93blZpZXcsIERyb3Bkb3duU2VydmljZSB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2Ryb3Bkb3duXCI7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2Ryb3Bkb3duXCI7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge1xuXHRnZXRTY3JvbGxhYmxlUGFyZW50cyxcblx0aGFzU2Nyb2xsYWJsZVBhcmVudHNcbn0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvdXRpbHNcIjtcbmltcG9ydCB7IEkxOG4sIE92ZXJyaWRhYmxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbi8qKlxuICogR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBDb21ib0JveE1vZHVsZSB9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuICogYGBgXG4gKlxuICogQ29tYm9Cb3hlcyBhcmUgc2ltaWxhciB0byBkcm9wZG93bnMsIGV4Y2VwdCBhIGNvbWJvYm94IHByb3ZpZGVzIGFuIGlucHV0IGZpZWxkIGZvciB1c2VycyB0byBzZWFyY2ggaXRlbXMgYW5kIChvcHRpb25hbGx5KSBhZGQgdGhlaXIgb3duLlxuICogTXVsdGktc2VsZWN0IGNvbWJvYm94ZXMgYWxzbyBwcm92aWRlIFwicGlsbHNcIiBvZiBzZWxlY3RlZCBpdGVtcy5cbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWNvbWJvYm94LS1iYXNpYylcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1jb21iby1ib3gsIGlibS1jb21iby1ib3hcIixcblx0dGVtcGxhdGU6IGBcblx0XHQ8ZGl2XG5cdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX3dyYXBwZXJcIlxuXHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHQnY2RzLS1saXN0LWJveF9fd3JhcHBlci0tZmx1aWQnOiBmbHVpZCxcblx0XHRcdFx0J2Nkcy0tbGlzdC1ib3hfX3dyYXBwZXItLWZsdWlkLS1pbnZhbGlkJzogZmx1aWQgJiYgaW52YWxpZCxcblx0XHRcdFx0J2Nkcy0tbGlzdC1ib3hfX3dyYXBwZXItLWZsdWlkLS1mb2N1cyc6IGZsdWlkICYmIF9pc0ZvY3VzZWRcblx0XHRcdH1cIj5cblx0XHRcdEBpZiAobGFiZWwpIHtcblx0XHRcdFx0PGxhYmVsXG5cdFx0XHRcdFx0W2Zvcl09XCJpZFwiXG5cdFx0XHRcdFx0W2lkXT1cImxhYmVsSWRcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1sYWJlbFwiXG5cdFx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdFx0J2Nkcy0tbGFiZWwtLWRpc2FibGVkJzogZGlzYWJsZWQsXG5cdFx0XHRcdFx0XHQnY2RzLS12aXN1YWxseS1oaWRkZW4nOiBoaWRlTGFiZWxcblx0XHRcdFx0XHR9XCI+XG5cdFx0XHRcdFx0QGlmIChpc1RlbXBsYXRlKGxhYmVsKSkge1xuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCIgLz5cblx0XHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRcdHt7bGFiZWx9fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdH1cblx0XHRcdDxkaXZcblx0XHRcdFx0I2xpc3Rib3hcblx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdCdjZHMtLW11bHRpLXNlbGVjdCBjZHMtLW11bHRpLXNlbGVjdC0tZmlsdGVyYWJsZSc6IHR5cGUgPT09ICdtdWx0aScsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWxpZ2h0JzogdGhlbWUgPT09ICdsaWdodCcsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWV4cGFuZGVkJzogb3Blbixcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tc20nOiBzaXplID09PSAnc20nLFxuXHRcdFx0XHRcdCdjZHMtLWxpc3QtYm94LS1tZCc6IHNpemUgPT09ICdtZCcsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWxnJzogc2l6ZSA9PT0gJ2xnJyxcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveC0tZGlzYWJsZWQnOiBkaXNhYmxlZCxcblx0XHRcdFx0XHQnY2RzLS1jb21iby1ib3gtLXJlYWRvbmx5JzogcmVhZG9ubHksXG5cdFx0XHRcdFx0J2Nkcy0tY29tYm8tYm94LS13YXJuaW5nIGNkcy0tbGlzdC1ib3gtLXdhcm5pbmcnOiB3YXJuLFxuXHRcdFx0XHRcdCdjZHMtLWxpc3QtYm94LS1pbnZhbGlkJzogaW52YWxpZFxuXHRcdFx0XHR9XCJcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94IGNkcy0tY29tYm8tYm94XCJcblx0XHRcdFx0W2F0dHIuZGF0YS1pbnZhbGlkXT1cIihpbnZhbGlkID8gdHJ1ZSA6IG51bGwpXCI+XG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2ZpZWxkXCJcblx0XHRcdFx0XHQoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG5cdFx0XHRcdFx0KGJsdXIpPVwib25CbHVyKClcIj5cblx0XHRcdFx0XHRAaWYgKHR5cGUgPT09ICdtdWx0aScgJiYgcGlsbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tdGFnIGNkcy0tdGFnLS1maWx0ZXIgY2RzLS10YWctLWhpZ2gtY29udHJhc3RcIlxuXHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tdGFnLS1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IHJlYWRvbmx5fVwiPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImNkcy0tdGFnX19sYWJlbFwiPnt7IHBpbGxzLmxlbmd0aCB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJjbGVhclNlbGVjdGVkKCRldmVudClcIlxuXHRcdFx0XHRcdFx0XHRcdChibHVyKT1cIm9uQmx1cigpXCJcblx0XHRcdFx0XHRcdFx0XHQoa2V5ZG93bi5lbnRlcik9XCJjbGVhclNlbGVjdGVkKCRldmVudClcIlxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10YWdfX2Nsb3NlLWljb25cIlxuXHRcdFx0XHRcdFx0XHRcdHRhYmluZGV4PVwiMFwiXG5cdFx0XHRcdFx0XHRcdFx0W3RpdGxlXT1cImNsZWFyU2VsZWN0aW9uc1RpdGxlXCJcblx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuXHRcdFx0XHRcdFx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwiY2xlYXJTZWxlY3Rpb25BcmlhXCI+XG5cdFx0XHRcdFx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9jdXNhYmxlPVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJ3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRyb2xlPVwiaW1nXCJcblx0XHRcdFx0XHRcdFx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHR2aWV3Qm94PVwiMCAwIDE2IDE2XCJcblx0XHRcdFx0XHRcdFx0XHRcdGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHBhdGggZD1cIk0xMiA0LjdsLS43LS43TDggNy4zIDQuNyA0bC0uNy43TDcuMyA4IDQgMTEuM2wuNy43TDggOC43bDMuMyAzLjMuNy0uN0w4LjcgOHpcIj48L3BhdGg+XG5cdFx0XHRcdFx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDxpbnB1dFxuXHRcdFx0XHRcdFx0I2lucHV0XG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJvZmZcIlxuXHRcdFx0XHRcdFx0cm9sZT1cImNvbWJvYm94XCJcblx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG5cdFx0XHRcdFx0XHRbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxuXHRcdFx0XHRcdFx0KGlucHV0KT1cIm9uU2VhcmNoKCRldmVudC50YXJnZXQudmFsdWUpXCJcblx0XHRcdFx0XHRcdChmb2N1cyk9XCJmbHVpZCA/IGhhbmRsZUZvY3VzKCRldmVudCkgOiBudWxsXCJcblx0XHRcdFx0XHRcdChibHVyKT1cImZsdWlkID8gaGFuZGxlRm9jdXMoJGV2ZW50KSA6IG9uQmx1cigpXCJcblx0XHRcdFx0XHRcdChrZXlkb3duLmVudGVyKT1cIm9uU3VibWl0KCRldmVudClcIlxuXHRcdFx0XHRcdFx0W3ZhbHVlXT1cInNlbGVjdGVkVmFsdWVcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRleHQtaW5wdXRcIlxuXHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLXRleHQtaW5wdXQtLWVtcHR5JzogIXNob3dDbGVhckJ1dHRvbn1cIlxuXHRcdFx0XHRcdFx0dGFiaW5kZXg9XCIwXCJcblx0XHRcdFx0XHRcdFtpZF09XCJpZFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxJZFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5cIlxuXHRcdFx0XHRcdFx0YXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuXHRcdFx0XHRcdFx0W2F0dHIubWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXG5cdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIm9wZW4gPyB2aWV3Py5saXN0SWQgOiBudWxsXCJcblx0XHRcdFx0XHRcdFthdHRyLmFyaWEtYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG5cdFx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIi8+XG5cdFx0XHRcdFx0QGlmIChpbnZhbGlkKSB7XG5cdFx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1maWxsZWRcIlxuXHRcdFx0XHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2ludmFsaWQtaWNvblwiPlxuXHRcdFx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdFx0fSBAZWxzZSBpZiAod2Fybikge1xuXHRcdFx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdFx0XHRjZHNJY29uPVwid2FybmluZy0tYWx0LS1maWxsZWRcIlxuXHRcdFx0XHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2ludmFsaWQtaWNvbiBjZHMtLWxpc3QtYm94X19pbnZhbGlkLWljb24tLXdhcm5pbmdcIj5cblx0XHRcdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRAaWYgKHNob3dDbGVhckJ1dHRvbikge1xuXHRcdFx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19zZWxlY3Rpb25cIlxuXHRcdFx0XHRcdFx0XHR0YWJpbmRleD1cIjBcIlxuXHRcdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImNsZWFyU2VsZWN0aW9uQXJpYVwiXG5cdFx0XHRcdFx0XHRcdFt0aXRsZV09XCJjbGVhclNlbGVjdGlvblRpdGxlXCJcblx0XHRcdFx0XHRcdFx0KGtleXVwLmVudGVyKT1cImNsZWFySW5wdXQoJGV2ZW50KVwiXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJjbGVhcklucHV0KCRldmVudClcIlxuXHRcdFx0XHRcdFx0XHQoYmx1cik9XCJvbkJsdXIoKVwiPlxuXHRcdFx0XHRcdFx0XHQ8c3ZnIGNkc0ljb249XCJjbG9zZVwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0cm9sZT1cImJ1dHRvblwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX21lbnUtaWNvblwiXG5cdFx0XHRcdFx0XHR0YWJpbmRleD1cIi0xXCJcblx0XHRcdFx0XHRcdFt0aXRsZV09XCJvcGVuID8gY2xvc2VNZW51QXJpYSA6IG9wZW5NZW51QXJpYVwiXG5cdFx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cIm9wZW4gPyBjbG9zZU1lbnVBcmlhIDogb3Blbk1lbnVBcmlhXCJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS1saXN0LWJveF9fbWVudS1pY29uLS1vcGVuJzogb3Blbn1cIj5cblx0XHRcdFx0XHRcdDxzdmcgY2RzSWNvbj1cImNoZXZyb24tLWRvd25cIiBzaXplPVwiMTZcIj48L3N2Zz5cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHQjZHJvcGRvd25NZW51XG5cdFx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3gtLXVwJzogdGhpcy5kcm9wVXAgIT09IG51bGwgJiYgdGhpcy5kcm9wVXAgIT09IHVuZGVmaW5lZCA/IGRyb3BVcCA6IF9kcm9wVXBcblx0XHRcdFx0XHR9XCI+XG5cdFx0XHRcdFx0QGlmIChvcGVuKSB7XG5cdFx0XHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdEBpZiAoZmx1aWQpIHtcblx0XHRcdFx0PGhyIGNsYXNzPVwiY2RzLS1saXN0LWJveF9fZGl2aWRlclwiIC8+XG5cdFx0XHR9XG5cdFx0XHRAaWYgKGludmFsaWQpIHtcblx0XHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0XHRcdEBpZiAoaXNUZW1wbGF0ZShpbnZhbGlkVGV4dCkpIHtcblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnZhbGlkVGV4dFwiIC8+XG5cdFx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0XHR7eyBpbnZhbGlkVGV4dCB9fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHR9IEBlbHNlIGlmICh3YXJuKSB7XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLWZvcm0tcmVxdWlyZW1lbnRcIj5cblx0XHRcdFx0XHRAaWYgKGlzVGVtcGxhdGUod2FyblRleHQpKSB7XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIiAvPlxuXHRcdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdFx0e3t3YXJuVGV4dH19XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdH0gQGVsc2UgaWYoaGVscGVyVGV4dCAmJiAhZmx1aWQpIHtcblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1mb3JtX19oZWxwZXItdGV4dFwiXG5cdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWZvcm1fX2hlbHBlci10ZXh0LS1kaXNhYmxlZCc6IGRpc2FibGVkfVwiPlxuXHRcdFx0XHRcdFx0QGlmIChpc1RlbXBsYXRlKGhlbHBlclRleHQpKSB7XG5cdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWxwZXJUZXh0XCIgLz5cblx0XHRcdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR7e2hlbHBlclRleHR9fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdH1cblx0XHQ8L2Rpdj5cblx0YCxcblx0cHJvdmlkZXJzOiBbXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG5cdFx0XHR1c2VFeGlzdGluZzogQ29tYm9Cb3gsXG5cdFx0XHRtdWx0aTogdHJ1ZVxuXHRcdH1cblx0XSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29tYm9Cb3ggaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cdC8qKlxuXHQgKiBUZXh0IHRvIHNob3cgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLlxuXHQgKi9cblx0QElucHV0KCkgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9wbGFjZWhvbGRlci5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgcGxhY2Vob2xkZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IGZvciBhY2Nlc3NpYmlsaXR5IHB1cnBvc2VzIG9uIHRoZSBjb21ib2JveCBjb250cm9sIG1lbnUgd2hlbiBjbG9zZWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBvcGVuTWVudUFyaWEodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX29wZW5NZW51QXJpYS5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgb3Blbk1lbnVBcmlhKCkge1xuXHRcdHJldHVybiB0aGlzLl9vcGVuTWVudUFyaWEudmFsdWU7XG5cdH1cblx0LyoqXG5cdCAqIFZhbHVlIHRvIGRpc3BsYXkgZm9yIGFjY2Vzc2liaWxpdHkgcHVycG9zZXMgb24gdGhlIGNvbWJvYm94IGNvbnRyb2wgbWVudSB3aGVuIG9wZW5lZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsb3NlTWVudUFyaWEodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX2Nsb3NlTWVudUFyaWEub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsb3NlTWVudUFyaWEoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2Nsb3NlTWVudUFyaWEudmFsdWU7XG5cdH1cblx0LyoqXG5cdCAqIFZhbHVlIHRvIGRpc3BsYXkgb24gdGhlIGNsZWFyIHNlbGVjdGlvbnMgaWNvbiwgd2hlbiBtdWx0aSBpcyBzZWxlY3RlZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsZWFyU2VsZWN0aW9uc1RpdGxlKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvbnNUaXRsZS5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblxuXHRnZXQgY2xlYXJTZWxlY3Rpb25zVGl0bGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NsZWFyU2VsZWN0aW9uc1RpdGxlLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IGZvciBhY2Nlc3NpYmlsaXR5IHB1cnBvc2VzIHRvIGNsZWFyIHNlbGVjdGlvbnMsIHdoZW4gbXVsdGkgaXMgc2VsZWN0ZWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBjbGVhclNlbGVjdGlvbnNBcmlhKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvbnNBcmlhLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXG5cdGdldCBjbGVhclNlbGVjdGlvbnNBcmlhKCkge1xuXHRcdHJldHVybiB0aGlzLl9jbGVhclNlbGVjdGlvbnNBcmlhLnZhbHVlO1xuXHR9XG5cdC8qKlxuXHQgKiBWYWx1ZSB0byBkaXNwbGF5IG9uIHRoZSBjbGVhciB0aGUgc2VsZWN0ZWQgaXRlbSBpY29uLCB3aGVuIHNpbmdsZSBpcyBzZWxlY3RlZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGNsZWFyU2VsZWN0aW9uVGl0bGUodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX2NsZWFyU2VsZWN0aW9uVGl0bGUub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsZWFyU2VsZWN0aW9uVGl0bGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NsZWFyU2VsZWN0aW9uVGl0bGUudmFsdWU7XG5cdH1cblx0LyoqXG5cdCAqIFZhbHVlIHRvIGRpc3BsYXkgZm9yIGFjY2Vzc2liaWxpdHkgcHVycG9zZXMgb24gdGhlIGNsZWFyIHRoZSBzZWxlY3RlZCBpdGVtIGljb24sIHdoZW4gc2luZ2xlIGlzIHNlbGVjdGVkXG5cdCAqL1xuXHRASW5wdXQoKSBzZXQgY2xlYXJTZWxlY3Rpb25BcmlhKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9jbGVhclNlbGVjdGlvbkFyaWEub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cblx0Z2V0IGNsZWFyU2VsZWN0aW9uQXJpYSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fY2xlYXJTZWxlY3Rpb25BcmlhLnZhbHVlO1xuXHR9XG5cdHN0YXRpYyBjb21ib0JveENvdW50ID0gMDtcblx0QElucHV0KCkgaWQgPSBgY29tYm9ib3gtJHtDb21ib0JveC5jb21ib0JveENvdW50Kyt9YDtcblx0QElucHV0KCkgbGFiZWxJZCA9IGBjb21ib2JveC1sYWJlbC0ke0NvbWJvQm94LmNvbWJvQm94Q291bnQrK31gO1xuXHQvKipcblx0ICogTGlzdCBvZiBpdGVtcyB0byBmaWxsIHRoZSBjb250ZW50IHdpdGguXG5cdCAqXG5cdCAqICoqRXhhbXBsZToqKlxuXHQgKiBgYGBqYXZhc2NyaXB0XG5cdCAqIGl0ZW1zID0gW1xuXHQgKlx0XHR7XG5cdCAqXHRcdFx0Y29udGVudDogXCJBYmFjdXNcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2Vcblx0ICpcdFx0fSxcblx0ICpcdFx0e1xuXHQgKlx0XHRcdGNvbnRlbnQ6IFwiQnl0ZVwiLFxuXHQgKlx0XHRcdHNlbGVjdGVkOiBmYWxzZSxcblx0ICpcdFx0fSxcblx0ICpcdFx0e1xuXHQgKlx0XHRcdGNvbnRlbnQ6IFwiQ29tcHV0ZXJcIixcblx0ICpcdFx0XHRzZWxlY3RlZDogZmFsc2Vcblx0ICpcdFx0fSxcblx0ICpcdFx0e1xuXHQgKlx0XHRcdGNvbnRlbnQ6IFwiRGlnaXRhbFwiLFxuXHQgKlx0XHRcdHNlbGVjdGVkOiBmYWxzZVxuXHQgKlx0XHR9XG5cdCAqIF07XG5cdCAqIGBgYFxuXHQgKlxuXHQgKi9cblx0QElucHV0KCkgaXRlbXM6IEFycmF5PExpc3RJdGVtPiA9IFtdO1xuXHQvKipcblx0ICogQ29tYm8gYm94IHR5cGUgKHN1cHBvcnRpbmcgc2luZ2xlIG9yIG11bHRpIHNlbGVjdGlvbiBvZiBpdGVtcykuXG5cdCAqL1xuXHRASW5wdXQoKSB0eXBlOiBcInNpbmdsZVwiIHwgXCJtdWx0aVwiID0gXCJzaW5nbGVcIjtcblx0LyoqXG5cdCAqIENvbWJvIGJveCByZW5kZXIgc2l6ZS5cblx0ICovXG5cdEBJbnB1dCgpIHNpemU6IFwic21cIiB8IFwibWRcIiB8IFwibGdcIiA9IFwibWRcIjtcblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgcHJvcGVydHkgdG8gYmUgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlIHRvIGBuZ01vZGVsYFxuXHQgKi9cblx0QElucHV0KCkgaXRlbVZhbHVlS2V5OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBMYWJlbCBmb3IgdGhlIGNvbWJvYm94LlxuXHQgKi9cblx0QElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdC8qKlxuXHQgKiBIaWRlIGxhYmVsIHdoaWxlIGtlZXBpbmcgaXQgYWNjZXNzaWJsZSBmb3Igc2NyZWVuIHJlYWRlcnNcblx0ICovXG5cdEBJbnB1dCgpIGhpZGVMYWJlbCA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0cyB0aGUgb3B0aW9uYWwgaGVscGVyIHRleHQuXG5cdCAqL1xuXHRASW5wdXQoKSBoZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogc2V0IHRvIGB0cnVlYCB0byBwbGFjZSB0aGUgZHJvcGRvd24gdmlldyBpbmxpbmUgd2l0aCB0aGUgY29tcG9uZW50XG5cdCAqL1xuXHRASW5wdXQoKSBhcHBlbmRJbmxpbmU6IGJvb2xlYW4gPSBudWxsO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byBzaG93IHRoZSBpbnZhbGlkIHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuXHQvKipcblx0ICogVmFsdWUgZGlzcGxheWVkIGlmIGNvbWJvYm94IGlzIGluIGFuIGludmFsaWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCogU2V0IHRvIGB0cnVlYCB0byBzaG93IGEgd2FybmluZyAoY29udGVudHMgc2V0IGJ5IHdhcm5UZXh0KVxuXHQqL1xuXHRASW5wdXQoKSB3YXJuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHRcblx0ICovXG5cdEBJbnB1dCgpIHdhcm5UZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogTWF4IGxlbmd0aCB2YWx1ZSB0byBsaW1pdCBpbnB1dCBjaGFyYWN0ZXJzXG5cdCAqL1xuXHRASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciA9IG51bGw7XG5cdC8qKlxuXHQgKiBAZGVwcmVjYXRlZCBzaW5jZSB2NSAtIFVzZSBgY2RzTGF5ZXJgIGRpcmVjdGl2ZSBpbnN0ZWFkXG5cdCAqL1xuXHRASW5wdXQoKSB0aGVtZTogXCJsaWdodFwiIHwgXCJkYXJrXCIgPSBcImRhcmtcIjtcblx0LyoqXG5cdCAqIFNwZWNpZnkgZmVlZGJhY2sgKG1vZGUpIG9mIHRoZSBzZWxlY3Rpb24uXG5cdCAqIGB0b3BgOiBzZWxlY3RlZCBpdGVtIGp1bXBzIHRvIHRvcFxuXHQgKiBgZml4ZWRgOiBzZWxlY3RlZCBpdGVtIHN0YXlzIGF0IGl0cyBwb3NpdGlvblxuXHQgKiBgdG9wLWFmdGVyLXJlb3BlbmA6IHNlbGVjdGVkIGl0ZW0ganVtcCB0byB0b3AgYWZ0ZXIgcmVvcGVuIGRyb3Bkb3duXG5cdCAqL1xuXHRASW5wdXQoKSBzZWxlY3Rpb25GZWVkYmFjazogXCJ0b3BcIiB8IFwiZml4ZWRcIiB8IFwidG9wLWFmdGVyLXJlb3BlblwiID0gXCJ0b3AtYWZ0ZXItcmVvcGVuXCI7XG5cdC8qKlxuXHQgKiBTcGVjaWZ5IGFyaWEtYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBvZiB0ZXh0IGlucHV0LlxuXHQgKiBcImxpc3RcIiwgaXMgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBhIGNvbWJvYm94IHRoYXQgaW52b2tlcyBhIGRyb3AtZG93biBsaXN0XG5cdCAqL1xuXHRASW5wdXQoKSBhdXRvY29tcGxldGUgPSBcImxpc3RcIjtcblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB0aGUgYXV0b21hdGljIGRyb3BVcC5cblx0ICovXG5cdEBJbnB1dCgpIGRyb3BVcDogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWJsZSBjb21ib2JveC5cblx0ICovXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciByZWFkb25seSBzdGF0ZS5cblx0ICovXG5cdEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBFeHBlcmltZW50YWw6IGVuYWJsZSBmbHVpZCBzdGF0ZVxuXHQgKi9cblx0QElucHV0KCkgZmx1aWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIEVtaXRzIGEgTGlzdEl0ZW1cblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICogYGBgamF2YXNjcmlwdFxuXHQgKiB7XG5cdCAqIFx0XHRjb250ZW50OiBcIm9uZVwiLFxuXHQgKiBcdFx0c2VsZWN0ZWQ6IHRydWVcblx0ICogfVxuXHQgKiBgYGBcblx0ICovXG5cdEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEl0ZW0gfCBMaXN0SXRlbVtdPigpO1xuXHQvKipcblx0ICogSW50ZW5kZWQgdG8gYmUgdXNlZCB0byBhZGQgaXRlbXMgdG8gdGhlIGxpc3QuXG5cdCAqXG5cdCAqIEVtaXRzIGFuIGV2ZW50IHRoYXQgaW5jbHVkZXMgdGhlIGN1cnJlbnQgaXRlbSBsaXN0LCB0aGUgc3VnZ2VzdGVkIGluZGV4IGZvciB0aGUgbmV3IGl0ZW0sIGFuZCBhIHNpbXBsZSBMaXN0SXRlbVxuXHQgKlxuXHQgKiBFeGFtcGxlOlxuXHQgKiBgYGBqYXZhc2NyaXB0XG5cdCAqXHR7XG5cdCAqXHRcdGl0ZW1zOiBbe2NvbnRlbnQ6IFwib25lXCIsIHNlbGVjdGVkOiB0cnVlfSwge2NvbnRlbnQ6IFwidHdvXCIsIHNlbGVjdGVkOiB0cnVlfV0sXG5cdCAqXHRcdGluZGV4OiAxLFxuXHQgKlx0XHR2YWx1ZToge1xuXHQgKlx0XHRcdGNvbnRlbnQ6IFwic29tZSB1c2VyIHN0cmluZ1wiLFxuXHQgKlx0XHRcdHNlbGVjdGVkOiBmYWxzZVxuXHQgKlx0XHR9XG5cdCAqXHR9XG5cdCAqIGBgYFxuXHQgKlxuXHQgKlxuXHQgKiBFeGFtcGxlOlxuXHQgKiBgYGBqYXZhc2NyaXB0XG5cdCAqIHtcblx0ICpcdGFmdGVyOiAxLFxuXHQgKlx0dmFsdWU6IFwic29tZSB1c2VyIHN0cmluZ1wiXG5cdCAqIH1cblx0ICogYGBgXG5cdCAqL1xuXHRAT3V0cHV0KCkgc3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG5cdFx0aXRlbXM6IExpc3RJdGVtW10sXG5cdFx0aW5kZXg6IG51bWJlcixcblx0XHR2YWx1ZToge1xuXHRcdFx0Y29udGVudDogc3RyaW5nLFxuXHRcdFx0c2VsZWN0ZWQ6IGJvb2xlYW5cblx0XHR9XG5cdH0+KCk7XG5cdC8qKiBFbWl0cyBhbiBlbXB0eSBldmVudCB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZCAqL1xuXHRAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cdC8qKiBFbWl0cyB0aGUgc2VhcmNoIHN0cmluZyBmcm9tIHRoZSBpbnB1dCAqL1xuXHRAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cdC8qKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSBjbGVhciBidXR0b24gaXMgY2xpY2tlZC4gKi9cblx0QE91dHB1dCgpIGNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblx0LyoqIENvbnRlbnRDaGlsZCByZWZlcmVuY2UgdG8gdGhlIGluc3RhbnRpYXRlZCBkcm9wZG93biBsaXN0ICovXG5cdEBDb250ZW50Q2hpbGQoQWJzdHJhY3REcm9wZG93blZpZXcsIHsgc3RhdGljOiB0cnVlIH0pIHZpZXc6IEFic3RyYWN0RHJvcGRvd25WaWV3O1xuXHRAVmlld0NoaWxkKFwiZHJvcGRvd25NZW51XCIpIGRyb3Bkb3duTWVudTtcblx0QFZpZXdDaGlsZChcImlucHV0XCIsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0OiBFbGVtZW50UmVmO1xuXHRAVmlld0NoaWxkKFwibGlzdGJveFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXN0Ym94OiBFbGVtZW50UmVmO1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWxpc3QtYm94X193cmFwcGVyXCIpIGhvc3RDbGFzcyA9IHRydWU7XG5cblx0cHVibGljIG9wZW4gPSBmYWxzZTtcblxuXHRwdWJsaWMgc2hvd0NsZWFyQnV0dG9uID0gZmFsc2U7XG5cblx0LyoqIFNlbGVjdGVkIGl0ZW1zIGZvciBtdWx0aS1zZWxlY3QgY29tYm8tYm94ZXMuICovXG5cdHB1YmxpYyBwaWxscyA9IFtdO1xuXHQvKiogdXNlZCB0byB1cGRhdGUgdGhlIGRpc3BsYXlWYWx1ZSAqL1xuXHRwdWJsaWMgc2VsZWN0ZWRWYWx1ZSA9IFwiXCI7XG5cblx0b3V0c2lkZUNsaWNrID0gdGhpcy5fb3V0c2lkZUNsaWNrLmJpbmQodGhpcyk7XG5cdGtleWJvYXJkTmF2ID0gdGhpcy5fa2V5Ym9hcmROYXYuYmluZCh0aGlzKTtcblx0LyoqXG5cdCAqIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGBkcm9wLXVwYCBjbGFzcyBpcyBhcHBsaWVkXG5cdCAqL1xuXHRfZHJvcFVwID0gZmFsc2U7XG5cblx0cHJvdGVjdGVkIG5vb3AgPSB0aGlzLl9ub29wLmJpbmQodGhpcyk7XG5cdHByb3RlY3RlZCBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IHRoaXMuX25vb3A7XG5cdHByb3RlY3RlZCBwcm9wYWdhdGVDaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IHRoaXMuX25vb3A7XG5cblx0cHJvdGVjdGVkIF9wbGFjZWhvbGRlciA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLlBMQUNFSE9MREVSXCIpO1xuXHRwcm90ZWN0ZWQgX2Nsb3NlTWVudUFyaWEgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5BMTFZLkNMT1NFX01FTlVcIik7XG5cdHByb3RlY3RlZCBfb3Blbk1lbnVBcmlhID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiQ09NQk9CT1guQTExWS5PUEVOX01FTlVcIik7XG5cdHByb3RlY3RlZCBfY2xlYXJTZWxlY3Rpb25zVGl0bGUgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5DTEVBUl9TRUxFQ1RJT05TXCIpO1xuXHRwcm90ZWN0ZWQgX2NsZWFyU2VsZWN0aW9uc0FyaWEgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJDT01CT0JPWC5BMTFZLkNMRUFSX1NFTEVDVElPTlNcIik7XG5cdHByb3RlY3RlZCBfY2xlYXJTZWxlY3Rpb25UaXRsZSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLkNMRUFSX1NFTEVDVEVEXCIpO1xuXHRwcm90ZWN0ZWQgX2NsZWFyU2VsZWN0aW9uQXJpYSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIkNPTUJPQk9YLkExMVkuQ0xFQVJfU0VMRUNURURcIik7XG5cblx0cHJvdGVjdGVkIF9pc0ZvY3VzZWQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb21ib0JveC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuXHRcdHByb3RlY3RlZCBkcm9wZG93blNlcnZpY2U6IERyb3Bkb3duU2VydmljZSxcblx0XHRwcm90ZWN0ZWQgaTE4bjogSTE4bixcblx0XHRwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuXHQpIHt9XG5cblx0LyoqXG5cdCAqIExpZmVjeWNsZSBob29rLlxuXHQgKiBVcGRhdGVzIHBpbGxzIGlmIG5lY2Vzc2FyeS5cblx0ICpcblx0ICovXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcblx0XHRpZiAoY2hhbmdlcy5pdGVtcykge1xuXHRcdFx0dGhpcy52aWV3Lml0ZW1zID0gY2hhbmdlcy5pdGVtcy5jdXJyZW50VmFsdWU7XG5cdFx0XHR0aGlzLnVwZGF0ZVNlbGVjdGVkKCk7XG5cdFx0XHQvLyBJZiBuZXcgaXRlbXMgYXJlIGFkZGVkIGludG8gdGhlIGNvbWJvYm94IHdoaWxlIHRoZXJlIGlzIHNlYXJjaCBpbnB1dCxcblx0XHRcdC8vIHJlcGVhdCB0aGUgc2VhcmNoLiBTZWFyY2ggc2hvdWxkIG9ubHkgdHJpZ2dlciBmb3IgdHlwZSAnc2luZ2xlJyB3aGVuIHRoZXJlIGlzIG5vIHZhbHVlIHNlbGVjdGVkLlxuXHRcdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJtdWx0aVwiIHx8ICh0aGlzLnR5cGUgPT09IFwic2luZ2xlXCIgJiYgIXRoaXMuc2VsZWN0ZWRWYWx1ZSkpIHtcblx0XHRcdFx0dGhpcy5vblNlYXJjaCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUsIGZhbHNlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBpbml0aWFsIHN0YXRlIHRoYXQgZGVwZW5kcyBvbiBjaGlsZCBjb21wb25lbnRzXG5cdCAqIFN1YnNjcmliZXMgdG8gc2VsZWN0IGV2ZW50cyBhbmQgaGFuZGxlcyBmb2N1cy9maWx0ZXJpbmcvaW5pdGlhbCBsaXN0IHVwZGF0ZXNcblx0ICovXG5cdG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcblx0XHRpZiAodGhpcy52aWV3KSB7XG5cdFx0XHR0aGlzLnZpZXcudHlwZSA9IHRoaXMudHlwZTtcblxuXHRcdFx0Ly8gZnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIGV2ZW50IGlzIG9yZ2FuaWMgKGlzVXBkYXRlID09PSBmYWxzZSkgb3IgcHJvZ3JhbW1hdGljXG5cdFx0XHRjb25zdCBpc1VwZGF0ZSA9IGV2ZW50ID0+IGV2ZW50ICYmIGV2ZW50LmlzVXBkYXRlO1xuXG5cdFx0XHR0aGlzLnZpZXcuc2VsZWN0LnN1YnNjcmliZShldmVudCA9PiB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlUGlsbHMoKTtcblx0XHRcdFx0XHRpZiAoIWlzVXBkYXRlKGV2ZW50KSkge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5ICYmIHRoaXMudmlldy5nZXRTZWxlY3RlZCgpKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHZhbHVlcyA9IHRoaXMudmlldy5nZXRTZWxlY3RlZCgpLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5pdGVtVmFsdWVLZXldKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayh2YWx1ZXMpO1xuXHRcdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIGp1c3QgcGFzcyB1cCB0aGUgdmFsdWVzIGZyb20gYGdldFNlbGVjdGVkYFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayh0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoZXZlbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBJZiB0eXBlIGlzIHNpbmdsZSwgZHJvcGRvd24gbGlzdCB3aWxsIGVtaXQgYW4gb2JqZWN0XG5cdFx0XHRcdFx0aWYgKGV2ZW50Lml0ZW0gJiYgZXZlbnQuaXRlbS5zZWxlY3RlZCkge1xuXHRcdFx0XHRcdFx0dGhpcy5zaG93Q2xlYXJCdXR0b24gPSB0cnVlO1xuXHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFZhbHVlID0gZXZlbnQuaXRlbS5jb250ZW50O1xuXG5cdFx0XHRcdFx0XHRpZiAoIWlzVXBkYXRlKGV2ZW50KSkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5pdGVtVmFsdWVLZXkpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZUNhbGxiYWNrKGV2ZW50Lml0ZW1bdGhpcy5pdGVtVmFsdWVLZXldKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZUNhbGxiYWNrKGV2ZW50Lml0ZW0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IFwiXCI7XG5cdFx0XHRcdFx0XHRpZiAoIWlzVXBkYXRlKGV2ZW50KSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZUNhbGxiYWNrKG51bGwpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBub3QgZ3VhcmRpbmcgdGhlc2Ugc2luY2UgdGhlIG5hdGl2ZUVsZW1lbnQgaGFzIHRvIGJlIGxvYWRlZFxuXHRcdFx0XHRcdC8vIGZvciBzZWxlY3QgdG8gZXZlbiBmaXJlXG5cdFx0XHRcdFx0Ly8gb25seSBmb2N1cyBmb3IgXCJvcmdhbmljXCIgc2VsZWN0aW9uc1xuXHRcdFx0XHRcdGlmICghaXNVcGRhdGUoZXZlbnQpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIikuZm9jdXMoKTtcblx0XHRcdFx0XHRcdHRoaXMudmlldy5maWx0ZXJCeShcIlwiKTtcblx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWQuZW1pdChldmVudC5pdGVtKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0Ly8gdXBkYXRlIHRoZSByZXN0IG9mIGNvbWJvYm94IHdpdGggYW55IHByZS1zZWxlY3RlZCBpdGVtc1xuXHRcdFx0Ly8gc2V0VGltZW91dCBqdXN0IGRlZmVycyB0aGUgY2FsbCB0byB0aGUgbmV4dCBjaGVjayBjeWNsZVxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMudXBkYXRlU2VsZWN0ZWQoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnZpZXcuYmx1ckludGVudC5waXBlKGZpbHRlcih2ID0+IHYgPT09IFwidG9wXCIpKS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLmNkcy0tdGV4dC1pbnB1dFwiKS5mb2N1cygpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEJpbmRzIGV2ZW50IGhhbmRsZXJzIGFnYWluc3QgdGhlIHJlbmRlcmVkIHZpZXdcblx0ICovXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHQvLyBpZiBhcHBlbmRJbmxpbmUgaXMgZGVmYXVsdCB2YWx1ZWQgKG51bGwpIHdlIHNob3VsZDpcblx0XHQvLyAxLiBpZiB0aGVyZSBhcmUgc2Nyb2xsYWJsZSBwYXJlbnRzIChub3QgaW5jbHVkaW5nIGJvZHkpIGRvbid0IGFwcGVuZCBpbmxpbmVcblx0XHQvLyAgICB0aGlzIHNob3VsZCBhbHNvIGNvdmVyIHRoZSBjYXNlIHdoZXJlIHRoZSBkcm9wZG93biBpcyBpbiBhIG1vZGFsXG5cdFx0Ly8gICAgKHdoZXJlIHdlIF9kb18gd2FudCB0byBhcHBlbmQgdG8gdGhlIHBsYWNlaG9sZGVyKVxuXHRcdGlmICh0aGlzLmFwcGVuZElubGluZSA9PT0gbnVsbCAmJiBoYXNTY3JvbGxhYmxlUGFyZW50cyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpIHtcblx0XHRcdHRoaXMuYXBwZW5kSW5saW5lID0gZmFsc2U7XG5cdFx0Ly8gMi4gb3RoZXJ3aXNlIHdlIHNob3VsZCBhcHBlbmQgaW5saW5lXG5cdFx0fSBlbHNlIGlmICh0aGlzLmFwcGVuZElubGluZSA9PT0gbnVsbCkge1xuXHRcdFx0dGhpcy5hcHBlbmRJbmxpbmUgPSB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmluZyB0aGUgYERyb3Bkb3duYCBmcm9tIHRoZSBib2R5IGlmIGl0IGlzIGFwcGVuZGVkIHRvIHRoZSBib2R5LlxuXHQgKi9cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0aWYgKCF0aGlzLmFwcGVuZElubGluZSkge1xuXHRcdFx0dGhpcy5fYXBwZW5kVG9Ecm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIGBFc2NhcGUvVGFiYCBrZXkgY2xvc2luZyB0aGUgZHJvcGRvd24sIGFuZCBhcnJvdyB1cC9kb3duIGZvY3VzIHRvL2Zyb20gdGhlIGRyb3Bkb3duIGxpc3QuXG5cdCAqL1xuXHRASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG5cdGhvc3RrZXlzKGV2OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0aWYgKGV2LmtleSA9PT0gXCJFc2NhcGVcIikge1xuXHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0fSBlbHNlIGlmICgoZXYua2V5ID09PSBcIkFycm93RG93blwiKVxuXHRcdFx0JiYgKCF0aGlzLmRyb3Bkb3duTWVudSB8fCAhdGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyhldi50YXJnZXQpKSkge1xuXHRcdFx0ZXYucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHRoaXMub3BlbkRyb3Bkb3duKCk7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy52aWV3LmluaXRGb2N1cygpOyB9LCAwKTtcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHR0aGlzLm9wZW4gJiYgZXYua2V5ID09PSBcIlRhYlwiICYmXG5cdFx0XHQodGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkgfHwgZXYudGFyZ2V0ID09PSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5vcGVuICYmIGV2LmtleSA9PT0gXCJUYWJcIiAmJiBldi5zaGlmdEtleSkge1xuXHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogbm8tb3AgbWV0aG9kIGZvciBudWxsIGV2ZW50IGxpc3RlbmVycywgYW5kIG90aGVyIG5vIG9wIGNhbGxzXG5cdCAqL1xuXHRfbm9vcCgpIHt9XG5cblx0Lypcblx0ICogcHJvcGFnYXRlcyB0aGUgdmFsdWUgcHJvdmlkZWQgZnJvbSBuZ01vZGVsXG5cdCAqL1xuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcblx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHRpZiAodGhpcy5pdGVtVmFsdWVLZXkpIHtcblx0XHRcdFx0Ly8gY2xvbmUgdGhlIHNwZWNpZmllZCBpdGVtIGFuZCB1cGRhdGUgaXRzIHN0YXRlXG5cdFx0XHRcdGNvbnN0IG5ld1ZhbHVlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy52aWV3LmdldExpc3RJdGVtcygpLmZpbmQoaXRlbSA9PiBpdGVtW3RoaXMuaXRlbVZhbHVlS2V5XSA9PT0gdmFsdWUpKTtcblx0XHRcdFx0bmV3VmFsdWUuc2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLnZpZXcucHJvcGFnYXRlU2VsZWN0ZWQoW25ld1ZhbHVlXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBhbGwgaXRlbXMgaW4gcHJvcGFnYXRlU2VsZWN0ZWQgbXVzdCBiZSBpdGVyYWJsZVxuXHRcdFx0XHR0aGlzLnZpZXcucHJvcGFnYXRlU2VsZWN0ZWQoW3ZhbHVlIHx8IFwiXCJdKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc2hvd0NsZWFyQnV0dG9uID0gISEodmFsdWUgJiYgdGhpcy52aWV3LmdldFNlbGVjdGVkKCkubGVuZ3RoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5KSB7XG5cdFx0XHRcdC8vIGNsb25lIHRoZSBpdGVtcyBhbmQgdXBkYXRlIHRoZWlyIHN0YXRlIGJhc2VkIG9uIHRoZSByZWNlaXZlZCB2YWx1ZSBhcnJheVxuXHRcdFx0XHQvLyB0aGlzIHdheSB3ZSBkb24ndCBsb3NlIGFueSBhZGRpdGlvbmFsIG1ldGFkYXRhIHRoYXQgbWF5IGJlIHBhc3NlZCBpbiB2aWEgdGhlIGBpdGVtc2AgSW5wdXRcblx0XHRcdFx0bGV0IG5ld1ZhbHVlcyA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHYgb2YgdmFsdWUgPz8gW10pIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy52aWV3LmdldExpc3RJdGVtcygpKSB7XG5cdFx0XHRcdFx0XHRpZiAoaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0gPT09IHYpIHtcblx0XHRcdFx0XHRcdFx0bmV3VmFsdWVzLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgaXRlbSwgeyBzZWxlY3RlZDogdHJ1ZSB9KSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMudmlldy5wcm9wYWdhdGVTZWxlY3RlZChuZXdWYWx1ZXMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy52aWV3LnByb3BhZ2F0ZVNlbGVjdGVkKHZhbHVlID8gdmFsdWUgOiBbXCJcIl0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLnVwZGF0ZVNlbGVjdGVkKCk7XG5cdH1cblxuXHRvbkJsdXIoKSB7XG5cdFx0dGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayA9IGZuO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuXHRcdHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIG1ldGhvZCB0byBwcm9ncmFtbWF0aWNhbGx5IGRpc2FibGUgdGhlIGNvbWJvYm94LlxuXHQgKlxuXHQgKiBleDogYHRoaXMuZm9ybUdyb3VwLmdldChcIm15Q29vbENvbWJvYm94XCIpLmRpc2FibGUoKTtgXG5cdCAqL1xuXHRzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYnkgYG4tcGlsbC1pbnB1dGAgd2hlbiB0aGUgc2VsZWN0ZWQgcGlsbHMgaGF2ZSBjaGFuZ2VkLlxuXHQgKi9cblx0cHVibGljIHVwZGF0ZVBpbGxzKCkge1xuXHRcdHRoaXMucGlsbHMgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKSB8fCBbXTtcblx0XHR0aGlzLmNoZWNrRm9yUmVvcmRlcigpO1xuXHR9XG5cblx0cHVibGljIGNsZWFyU2VsZWN0ZWQoZXZlbnQpIHtcblx0XHR0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiB7XG5cdFx0XHRpZiAoIWl0ZW0uZGlzYWJsZWQpIHtcblx0XHRcdFx0aXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0fSk7XG5cdFx0dGhpcy52aWV3Lml0ZW1zID0gdGhpcy5pdGVtcztcblx0XHR0aGlzLnVwZGF0ZVBpbGxzKCk7XG5cdFx0Ly8gY2xlYXJTZWxlY3RlZCBjYW4gb25seSBmaXJlIG9uIHR5cGU9bXVsdGlcblx0XHQvLyBzbyB3ZSBqdXN0IGVtaXQgZ2V0U2VsZWN0ZWQoKSAoanVzdCBpbiBjYXNlIHRoZXJlJ3MgYW55IGRpc2FibGVkIGJ1dCBzZWxlY3RlZCBpdGVtcylcblx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMudmlldy5nZXRTZWxlY3RlZCgpO1xuXG5cdFx0Ly8gaW4gY2FzZSB0aGVyZSBhcmUgZGlzYWJsZWQgaXRlbXMgdGhleSBzaG91bGQgYmUgbWFwcGVkIGFjY29yZGluZyB0byBpdGVtVmFsdWVLZXlcblx0XHRpZiAodGhpcy5pdGVtVmFsdWVLZXkgJiYgc2VsZWN0ZWQpIHtcblx0XHRcdGNvbnN0IHZhbHVlcyA9IHNlbGVjdGVkLm1hcCgoaXRlbSkgPT4gaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0pO1xuXHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2VDYWxsYmFjayh2YWx1ZXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZUNhbGxiYWNrKHNlbGVjdGVkKTtcblx0XHR9XG5cblx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0ZWQgYXMgYW55KTtcblx0XHR0aGlzLmNsZWFyLmVtaXQoZXZlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsb3NlcyB0aGUgZHJvcGRvd24gYW5kIGVtaXRzIHRoZSBjbG9zZSBldmVudC5cblx0ICovXG5cdHB1YmxpYyBjbG9zZURyb3Bkb3duKCkge1xuXHRcdHRoaXMub3BlbiA9IGZhbHNlO1xuXHRcdHRoaXMuY2hlY2tGb3JSZW9yZGVyKCk7XG5cdFx0dGhpcy5jbG9zZS5lbWl0KCk7XG5cdFx0aWYgKCF0aGlzLmFwcGVuZElubGluZSkge1xuXHRcdFx0dGhpcy5fYXBwZW5kVG9Ecm9wZG93bigpO1xuXHRcdH1cblxuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLm91dHNpZGVDbGljaywgdHJ1ZSk7XG5cblx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVucyB0aGUgZHJvcGRvd24uXG5cdCAqL1xuXHRwdWJsaWMgb3BlbkRyb3Bkb3duKCkge1xuXHRcdGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHsgcmV0dXJuOyB9XG5cdFx0dGhpcy5vcGVuID0gdHJ1ZTtcblx0XHR0aGlzLl9kcm9wVXAgPSBmYWxzZTtcblxuXHRcdGlmICghdGhpcy5hcHBlbmRJbmxpbmUpIHtcblx0XHRcdHRoaXMuX2FwcGVuZFRvQm9keSgpO1xuXHRcdH1cblxuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLm91dHNpZGVDbGljaywgdHJ1ZSk7XG5cblx0XHQvLyBzZXQgdGhlIGRyb3Bkb3duIG1lbnUgdG8gZHJvcCB1cCBpZiBpdCBpcyBuZWFyIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlblxuXHRcdC8vIHNldFRpbWVvdXQgbGV0cyB1cyBkbyB0aGUgY2FsY3VsYXRpb25zIGFmdGVyIGl0IGlzIHZpc2libGUgaW4gdGhlIERPTVxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuZHJvcFVwID09PSBudWxsIHx8IHRoaXMuZHJvcFVwID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dGhpcy5fZHJvcFVwID0gdGhpcy5fc2hvdWxkRHJvcFVwKCk7XG5cdFx0XHR9XG5cdFx0fSwgMCk7XG5cblx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUb2dnbGVzIHRoZSBkcm9wZG93bi5cblx0ICovXG5cdHB1YmxpYyB0b2dnbGVEcm9wZG93bigpIHtcblx0XHRpZiAodGhpcy5vcGVuKSB7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5vcGVuRHJvcGRvd24oKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgbGlzdCBncm91cCBmaWx0ZXIsIGFuZCBtYW5hZ2VzIHNpbmdsZSBzZWxlY3QgaXRlbSBzZWxlY3Rpb24uXG5cdCAqL1xuXHRwdWJsaWMgb25TZWFyY2goc2VhcmNoU3RyaW5nLCBzaG91bGRFbWl0U2VhcmNoID0gdHJ1ZSkge1xuXHRcdGlmIChzaG91bGRFbWl0U2VhcmNoKSB7XG5cdFx0XHR0aGlzLnNlYXJjaC5lbWl0KHNlYXJjaFN0cmluZyk7XG5cdFx0fVxuXHRcdHRoaXMuc2hvd0NsZWFyQnV0dG9uID0gISFzZWFyY2hTdHJpbmc7XG5cdFx0dGhpcy52aWV3LmZpbHRlckJ5KHNlYXJjaFN0cmluZyk7XG5cdFx0aWYgKHNlYXJjaFN0cmluZyAhPT0gXCJcIikge1xuXHRcdFx0aWYgKCF0aGlzLm9wZW4pIHtcblx0XHRcdFx0dGhpcy5vcGVuRHJvcGRvd24oKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZWxlY3RlZFZhbHVlID0gXCJcIjtcblx0XHRcdGlmICh0aGlzLnR5cGUgPT09IFwibXVsdGlcIiAmJlxuXHRcdFx0XHQodGhpcy5zZWxlY3Rpb25GZWVkYmFjayA9PT0gXCJ0b3BcIiB8fCB0aGlzLnNlbGVjdGlvbkZlZWRiYWNrID09PSBcInRvcC1hZnRlci1yZW9wZW5cIikpIHtcblx0XHRcdFx0dGhpcy52aWV3LnJlb3JkZXJTZWxlY3RlZCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHQvLyBkZXNlbGVjdCBpZiB0aGUgaW5wdXQgZG9lc24ndCBtYXRjaCB0aGUgY29udGVudFxuXHRcdFx0Ly8gb2YgYW55IGdpdmVuIGl0ZW1cblx0XHRcdGNvbnN0IG1hdGNoZXMgPSB0aGlzLnZpZXcuZ2V0TGlzdEl0ZW1zKCkuc29tZShpdGVtID0+IGl0ZW0uY29udGVudC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSk7XG5cdFx0XHRpZiAoIW1hdGNoZXMpIHtcblx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKTtcblx0XHRcdFx0aWYgKCFzZWxlY3RlZCB8fCAhc2VsZWN0ZWRbMF0pIHtcblx0XHRcdFx0XHR0aGlzLnZpZXcuZmlsdGVyQnkoc2VhcmNoU3RyaW5nKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJbnRlbmRlZCB0byBiZSB1c2VkIHRvIGFkZCBpdGVtcyB0byB0aGUgbGlzdC5cblx0ICovXG5cdHB1YmxpYyBvblN1Ym1pdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdHRoaXMuc3VibWl0LmVtaXQoe1xuXHRcdFx0aXRlbXM6IHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKSxcblx0XHRcdGluZGV4OiAwLFxuXHRcdFx0dmFsdWU6IHtcblx0XHRcdFx0Y29udGVudDogKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSxcblx0XHRcdFx0c2VsZWN0ZWQ6IGZhbHNlXG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRjbGVhcklucHV0KGV2ZW50KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7IC8vIGRvbid0IHdhbnQgdG8gY2xlYXIgc2VsZWN0ZWQgb3IgY2xvc2UgaWYgbXVsdGlcblx0XHRcdHRoaXMuY2xlYXJTZWxlY3RlZChldmVudCk7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9XG5cblx0XHR0aGlzLnNlbGVjdGVkVmFsdWUgPSBcIlwiO1xuXHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XG5cblx0XHR0aGlzLnNob3dDbGVhckJ1dHRvbiA9IGZhbHNlO1xuXHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdHRoaXMub25TZWFyY2godGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgc28gdXNlcnMgYXJlIGNvbnRyb2xsaW5nIHRoZSBgRHJvcGRvd25gIGluc3RlYWQgb2YgdW5pbnRlbnRpb25hbGx5IGNvbnRyb2xsaW5nIG91dHNpZGUgZWxlbWVudHMuXG5cdCAqL1xuXHRfa2V5Ym9hcmROYXYoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRpZiAoKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikgJiYgdGhpcy5vcGVuKSB7XG5cdFx0XHRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsgIC8vIGRvbid0IHVuaW50ZW50aW9uYWxseSBjbG9zZSBtb2RhbCBpZiBpbnNpZGUgb2YgaXRcblx0XHR9XG5cdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLm9wZW4gJiYgZXZlbnQua2V5ID09PSBcIlRhYlwiKSB7XG5cdFx0XHQvLyB0aGlzIHdheSBmb2N1cyB3aWxsIHN0YXJ0IG9uIHRoZSBuZXh0IGZvY3VzYWJsZSBpdGVtIGZyb20gdGhlIGRyb3Bkb3duXG5cdFx0XHQvLyBub3QgdGhlIHRvcCBvZiB0aGUgYm9keSFcblx0XHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoXCJrZXlkb3duXCIsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSwga2V5OiBcIlRhYlwiIH0pKTtcblx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBgRHJvcGRvd25gIGxpc3QgYXMgYW4gZWxlbWVudCB0aGF0IGlzIGFwcGVuZGVkIHRvIHRoZSBET00gYm9keS5cblx0ICovXG5cdF9hcHBlbmRUb0JvZHkoKSB7XG5cdFx0dGhpcy5kcm9wZG93blNlcnZpY2UuYXBwZW5kVG9Cb2R5KFxuXHRcdFx0dGhpcy5saXN0Ym94Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHR0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0YCR7dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lfSR7dGhpcy5vcGVuID8gXCIgY2RzLS1saXN0LWJveC0tZXhwYW5kZWRcIiA6IFwiXCJ9YCk7XG5cdFx0dGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmtleWJvYXJkTmF2LCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBgRHJvcGRvd25gIGxpc3QgYXBwZW5kaW5nIGl0IHRvIHRoZSBkcm9wZG93biBwYXJlbnQgb2JqZWN0IGluc3RlYWQgb2YgdGhlIGJvZHkuXG5cdCAqL1xuXHRfYXBwZW5kVG9Ecm9wZG93bigpIHtcblx0XHR0aGlzLmRyb3Bkb3duU2VydmljZS5hcHBlbmRUb0Ryb3Bkb3duKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHR0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMua2V5Ym9hcmROYXYsIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVjdHMgd2hldGhlciBvciBub3QgdGhlIGBEcm9wZG93bmAgbGlzdCBpcyB2aXNpYmxlIHdpdGhpbiBhbGwgc2Nyb2xsYWJsZSBwYXJlbnRzLlxuXHQgKiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBhc3NpbmcgaW4gYSB2YWx1ZSB0byB0aGUgYGRyb3BVcGAgaW5wdXQuXG5cdCAqL1xuXHRfc2hvdWxkRHJvcFVwKCkge1xuXHRcdC8vIGNoZWNrIGlmIGRyb3Bkb3duTWVudSBleGlzdHMgZmlyc3QuXG5cdFx0Y29uc3QgbWVudSA9IHRoaXMuZHJvcGRvd25NZW51ICYmIHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5jZHMtLWxpc3QtYm94X19tZW51XCIpO1xuXHRcdC8vIGNoZWNrIGlmIG1lbnUgZXhpc3RzIGZpcnN0LlxuXHRcdGNvbnN0IG1lbnVSZWN0ID0gbWVudSAmJiBtZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdGlmIChtZW51ICYmIG1lbnVSZWN0KSB7XG5cdFx0XHRjb25zdCBzY3JvbGxhYmxlUGFyZW50cyA9IGdldFNjcm9sbGFibGVQYXJlbnRzKG1lbnUpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGFibGVQYXJlbnRzLnJlZHVjZSgoc2hvdWxkRHJvcFVwOiBib29sZWFuLCBwYXJlbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhcmVudFJlY3QgPSBwYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0XHRcdGNvbnN0IGlzQmVsb3dQYXJlbnQgPSAhKG1lbnVSZWN0LmJvdHRvbSA8PSBwYXJlbnRSZWN0LmJvdHRvbSk7XG5cdFx0XHRcdHJldHVybiBzaG91bGREcm9wVXAgfHwgaXNCZWxvd1BhcmVudDtcblx0XHRcdH0sIGZhbHNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgYERyb3Bkb3duYCBsaXN0LlxuXHQgKi9cblx0X291dHNpZGVDbGljayhldmVudCkge1xuXHRcdGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuXHRcdFx0Ly8gaWYgd2UncmUgYXBwZW5kVG9Cb2R5IHRoZSBsaXN0IGlzbid0IHdpdGhpbiB0aGUgX2VsZW1lbnRSZWYsXG5cdFx0XHQvLyBzbyB3ZSd2ZSBnb3QgdG8gY2hlY2sgaWYgb3VyIHRhcmdldCBpcyBwb3NzaWJseSBpbiB0aGVyZSB0b28uXG5cdFx0XHQhdGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcGRvd24oKTtcblx0XHR9XG5cdH1cblxuXHRoYW5kbGVGb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuXHRcdHRoaXMuX2lzRm9jdXNlZCA9IGV2ZW50LnR5cGUgPT09IFwiZm9jdXNcIjtcblx0fVxuXG5cdHByb3RlY3RlZCB1cGRhdGVTZWxlY3RlZCgpIHtcblx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMudmlldy5nZXRTZWxlY3RlZCgpO1xuXHRcdGlmICh0aGlzLnR5cGUgPT09IFwibXVsdGlcIikge1xuXHRcdFx0dGhpcy51cGRhdGVQaWxscygpO1xuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gc2VsZWN0ZWRbMF0gPyBzZWxlY3RlZFswXS5jb250ZW50IDogXCJcIjtcblx0XHRcdGNvbnN0IGNoYW5nZUNhbGxiYWNrVmFsdWUgPSBzZWxlY3RlZFswXSA/IHNlbGVjdGVkWzBdIDogXCJcIjtcblx0XHRcdHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuXHRcdFx0dGhpcy5zaG93Q2xlYXJCdXR0b24gPSAhIXZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjaGVja0ZvclJlb3JkZXIoKSB7XG5cdFx0Y29uc3QgdG9wQWZ0ZXJSZW9wZW4gPSAhdGhpcy5vcGVuICYmIHRoaXMuc2VsZWN0aW9uRmVlZGJhY2sgPT09IFwidG9wLWFmdGVyLXJlb3BlblwiO1xuXHRcdGlmICgodGhpcy50eXBlID09PSBcIm11bHRpXCIpICYmICh0b3BBZnRlclJlb3BlbiB8fCB0aGlzLnNlbGVjdGlvbkZlZWRiYWNrID09PSBcInRvcFwiKSkge1xuXHRcdFx0dGhpcy52aWV3LnJlb3JkZXJTZWxlY3RlZCh0cnVlKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, Input, ContentChildren, Output, EventEmitter, HostListener } from "@angular/core";
1
+ import { Component, Input, ContentChildren, Output, EventEmitter, HostListener, ChangeDetectionStrategy } from "@angular/core";
2
2
  import { ContentSwitcherOption } from "./content-switcher-option.directive";
3
3
  import { isFocusInLastItem, isFocusInFirstItem } from "carbon-components-angular/common";
4
4
  import * as i0 from "@angular/core";
@@ -101,7 +101,7 @@ export class ContentSwitcher {
101
101
  role="tablist">
102
102
  <ng-content />
103
103
  </div>
104
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
104
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
105
  }
106
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ContentSwitcher, decorators: [{
107
107
  type: Component,
@@ -119,7 +119,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
119
119
  role="tablist">
120
120
  <ng-content />
121
121
  </div>
122
- `
122
+ `,
123
+ changeDetection: ChangeDetectionStrategy.OnPush
123
124
  }]
124
125
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { ariaLabel: [{
125
126
  type: Input
@@ -134,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
134
135
  type: HostListener,
135
136
  args: ["keydown", ["$event"]]
136
137
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1zd2l0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGVudC1zd2l0Y2hlci9jb250ZW50LXN3aXRjaGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxlQUFlLEVBRWYsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztBQUV6Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQWlCSCxNQUFNLE9BQU8sZUFBZTtJQWUzQixZQUFzQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBZG5DLGNBQVMsR0FBRyxrQkFBa0IsQ0FBQztRQUV4Qzs7V0FFRztRQUNNLFNBQUksR0FBdUIsSUFBSSxDQUFDO1FBRXpDOztXQUVHO1FBQ08sYUFBUSxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO0lBSWhCLENBQUM7SUFFaEQsZUFBZTtRQUNkLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzdCLE1BQU0s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ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0SW5wdXQsXG5cdENvbnRlbnRDaGlsZHJlbixcblx0UXVlcnlMaXN0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0SG9zdExpc3RlbmVyLFxuXHRFbGVtZW50UmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250ZW50U3dpdGNoZXJPcHRpb24gfSBmcm9tIFwiLi9jb250ZW50LXN3aXRjaGVyLW9wdGlvbi5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IGlzRm9jdXNJbkxhc3RJdGVtLCBpc0ZvY3VzSW5GaXJzdEl0ZW0gfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9jb21tb25cIjtcblxuLyoqXG4gKiBUaGUgY29udGVudCBzd2l0Y2hlciBjYW4gYmUgdXNlZCBmb3IgdG9nZ2xpbmcgYmV0d2VlbiBkaXN0aW5jdCBvcHRpb25zLlxuICogU2ltaWxhciB0byB0YWJzLCBidXQgd2l0aG91dCBhbiBhc3NvY2lhdGVkIGNvbnRlbnQgcGFuZWwuXG4gKlxuICogR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBDb250ZW50U3dpdGNoZXJNb2R1bGUgfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDxjZHMtY29udGVudC1zd2l0Y2hlciAoc2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPlxuICpcdFx0PGJ1dHRvbiBjZHNDb250ZW50T3B0aW9uPkZpcnN0IHNlY3Rpb248L2J1dHRvbj5cbiAqXHRcdDxidXR0b24gY2RzQ29udGVudE9wdGlvbj5TZWNvbmQgc2VjdGlvbjwvYnV0dG9uPlxuICpcdFx0PGJ1dHRvbiBjZHNDb250ZW50T3B0aW9uPlRoaXJkIHNlY3Rpb248L2J1dHRvbj5cbiAqIDwvY2RzLWNvbnRlbnQtc3dpdGNoZXI+XG4gKiBgYGBcbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWNvbnRlbnQtc3dpdGNoZXItLWJhc2ljKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLWNvbnRlbnQtc3dpdGNoZXIsIGlibS1jb250ZW50LXN3aXRjaGVyXCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGRpdlxuXHRcdFx0W2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuXHRcdFx0Y2xhc3M9XCJjZHMtLWNvbnRlbnQtc3dpdGNoZXJcIlxuXHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHQnY2RzLS1jb250ZW50LXN3aXRjaGVyLS1zbSc6IHNpemUgPT09ICdzbScsXG5cdFx0XHRcdCdjZHMtLWNvbnRlbnQtc3dpdGNoZXItLW1kJzogc2l6ZSA9PT0gJ21kJyxcblx0XHRcdFx0J2Nkcy0tY29udGVudC1zd2l0Y2hlci0tbGcnOiBzaXplID09PSAnbGcnXG5cdFx0XHR9XCJcblx0XHRcdHJvbGU9XCJ0YWJsaXN0XCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvZGl2PlxuXHRgXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRTd2l0Y2hlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXHRASW5wdXQoKSBhcmlhTGFiZWwgPSBcImNvbnRlbnQgc3dpdGNoZXJcIjtcblxuXHQvKipcblx0ICogU2V0IGNvbnRlbnQgc3dpdGNoZXIgc2l6ZVxuXHQgKi9cblx0QElucHV0KCkgc2l6ZTogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiID0gXCJtZFwiO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyB0aGUgYWN0aXZhdGVkIGBDb250ZW50U3dpdGNoZXJPcHRpb25gXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbnRlbnRTd2l0Y2hlck9wdGlvbj4oKTtcblxuXHRAQ29udGVudENoaWxkcmVuKENvbnRlbnRTd2l0Y2hlck9wdGlvbikgb3B0aW9uczogUXVlcnlMaXN0PENvbnRlbnRTd2l0Y2hlck9wdGlvbj47XG5cblx0Y29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdGNvbnN0IGZpcnN0QWN0aXZlID0gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi5hY3RpdmUpO1xuXHRcdC8vIGRlbGF5IHNldHRpbmcgYWN0aXZlIHVudGlsIHRoZSBET00gaGFzIHNldHRsZWRcblx0XHRpZiAoIWZpcnN0QWN0aXZlKSB7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHRoaXMub3B0aW9ucy5maXJzdC5hY3RpdmUgPSB0cnVlKTtcblx0XHR9XG5cdFx0Ly8gc3Vic2NyaWJlIHRvIGVhY2ggaXRlbSwgZW1pdCB3aGVuIG9uZSBpcyBzZWxlY3RlZCwgYW5kIHJlc2V0IHRoZSBhY3RpdmUgc3RhdGVzXG5cdFx0dGhpcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcblx0XHRcdG9wdGlvbi5zZWxlY3RlZC5zdWJzY3JpYmUoKF86IGJvb2xlYW4pID0+IHtcblx0XHRcdFx0Y29uc3QgYWN0aXZlID0gb3B0aW9uO1xuXHRcdFx0XHR0aGlzLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuXHRcdFx0XHRcdGlmIChvcHRpb24gIT09IGFjdGl2ZSkge1xuXHRcdFx0XHRcdFx0b3B0aW9uLmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWQuZW1pdChhY3RpdmUpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG5cdGhvc3RrZXlzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0Y29uc3QgYnV0dG9uTGlzdCA9IEFycmF5LmZyb208YW55Pih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2Nkc0NvbnRlbnRPcHRpb25dLCBbaWJtQ29udGVudE9wdGlvbl1cIikpO1xuXG5cdFx0c3dpdGNoIChldmVudC5rZXkpIHtcblx0XHRcdGNhc2UgXCJBcnJvd1JpZ2h0XCI6XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdGlmICghaXNGb2N1c0luTGFzdEl0ZW0oZXZlbnQsIGJ1dHRvbkxpc3QpKSAge1xuXHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gYnV0dG9uTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSBldmVudC50YXJnZXQpO1xuXHRcdFx0XHRcdGJ1dHRvbkxpc3RbaW5kZXggKyAxXS5mb2N1cygpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGJ1dHRvbkxpc3RbMF0uZm9jdXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIkFycm93TGVmdFwiOlxuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRpZiAoIWlzRm9jdXNJbkZpcnN0SXRlbShldmVudCwgYnV0dG9uTGlzdCkpICB7XG5cdFx0XHRcdFx0Y29uc3QgaW5kZXggPSBidXR0b25MaXN0LmZpbmRJbmRleChpdGVtID0+IGl0ZW0gPT09IGV2ZW50LnRhcmdldCk7XG5cdFx0XHRcdFx0YnV0dG9uTGlzdFtpbmRleCAtIDFdLmZvY3VzKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YnV0dG9uTGlzdFtidXR0b25MaXN0Lmxlbmd0aCAtIDFdLmZvY3VzKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJIb21lXCI6XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdGJ1dHRvbkxpc3RbMF0uZm9jdXMoKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJFbmRcIjpcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0YnV0dG9uTGlzdFtidXR0b25MaXN0Lmxlbmd0aCAtIDFdLmZvY3VzKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxufVxuIl19
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1zd2l0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGVudC1zd2l0Y2hlci9jb250ZW50LXN3aXRjaGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxlQUFlLEVBRWYsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEVBRVosdUJBQXVCLEVBQ3ZCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFekY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFrQkgsTUFBTSxPQUFPLGVBQWU7SUFlM0IsWUFBc0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWRuQyxjQUFTLEdBQUcsa0JBQWtCLENBQUM7UUFFeEM7O1dBRUc7UUFDTSxTQUFJLEdBQXVCLElBQUksQ0FBQztRQUV6Qzs7V0FFRztRQUNPLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztJQUloQixDQUFDO0lBRWhELGVBQWU7UUFDZCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELGlGQUFpRjtRQUNqRixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFB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QVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0Q29udGVudENoaWxkcmVuLFxuXHRRdWVyeUxpc3QsXG5cdE91dHB1dCxcblx0RXZlbnRFbWl0dGVyLFxuXHRBZnRlclZpZXdJbml0LFxuXHRIb3N0TGlzdGVuZXIsXG5cdEVsZW1lbnRSZWYsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5XG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250ZW50U3dpdGNoZXJPcHRpb24gfSBmcm9tIFwiLi9jb250ZW50LXN3aXRjaGVyLW9wdGlvbi5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IGlzRm9jdXNJbkxhc3RJdGVtLCBpc0ZvY3VzSW5GaXJzdEl0ZW0gfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9jb21tb25cIjtcblxuLyoqXG4gKiBUaGUgY29udGVudCBzd2l0Y2hlciBjYW4gYmUgdXNlZCBmb3IgdG9nZ2xpbmcgYmV0d2VlbiBkaXN0aW5jdCBvcHRpb25zLlxuICogU2ltaWxhciB0byB0YWJzLCBidXQgd2l0aG91dCBhbiBhc3NvY2lhdGVkIGNvbnRlbnQgcGFuZWwuXG4gKlxuICogR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBDb250ZW50U3dpdGNoZXJNb2R1bGUgfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDxjZHMtY29udGVudC1zd2l0Y2hlciAoc2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPlxuICpcdFx0PGJ1dHRvbiBjZHNDb250ZW50T3B0aW9uPkZpcnN0IHNlY3Rpb248L2J1dHRvbj5cbiAqXHRcdDxidXR0b24gY2RzQ29udGVudE9wdGlvbj5TZWNvbmQgc2VjdGlvbjwvYnV0dG9uPlxuICpcdFx0PGJ1dHRvbiBjZHNDb250ZW50T3B0aW9uPlRoaXJkIHNlY3Rpb248L2J1dHRvbj5cbiAqIDwvY2RzLWNvbnRlbnQtc3dpdGNoZXI+XG4gKiBgYGBcbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWNvbnRlbnQtc3dpdGNoZXItLWJhc2ljKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLWNvbnRlbnQtc3dpdGNoZXIsIGlibS1jb250ZW50LXN3aXRjaGVyXCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGRpdlxuXHRcdFx0W2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuXHRcdFx0Y2xhc3M9XCJjZHMtLWNvbnRlbnQtc3dpdGNoZXJcIlxuXHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHQnY2RzLS1jb250ZW50LXN3aXRjaGVyLS1zbSc6IHNpemUgPT09ICdzbScsXG5cdFx0XHRcdCdjZHMtLWNvbnRlbnQtc3dpdGNoZXItLW1kJzogc2l6ZSA9PT0gJ21kJyxcblx0XHRcdFx0J2Nkcy0tY29udGVudC1zd2l0Y2hlci0tbGcnOiBzaXplID09PSAnbGcnXG5cdFx0XHR9XCJcblx0XHRcdHJvbGU9XCJ0YWJsaXN0XCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvZGl2PlxuXHRgLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50U3dpdGNoZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblx0QElucHV0KCkgYXJpYUxhYmVsID0gXCJjb250ZW50IHN3aXRjaGVyXCI7XG5cblx0LyoqXG5cdCAqIFNldCBjb250ZW50IHN3aXRjaGVyIHNpemVcblx0ICovXG5cdEBJbnB1dCgpIHNpemU6IFwic21cIiB8IFwibWRcIiB8IFwibGdcIiA9IFwibWRcIjtcblxuXHQvKipcblx0ICogRW1pdHMgdGhlIGFjdGl2YXRlZCBgQ29udGVudFN3aXRjaGVyT3B0aW9uYFxuXHQgKi9cblx0QE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxDb250ZW50U3dpdGNoZXJPcHRpb24+KCk7XG5cblx0QENvbnRlbnRDaGlsZHJlbihDb250ZW50U3dpdGNoZXJPcHRpb24pIG9wdGlvbnM6IFF1ZXJ5TGlzdDxDb250ZW50U3dpdGNoZXJPcHRpb24+O1xuXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHRjb25zdCBmaXJzdEFjdGl2ZSA9IHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24uYWN0aXZlKTtcblx0XHQvLyBkZWxheSBzZXR0aW5nIGFjdGl2ZSB1bnRpbCB0aGUgRE9NIGhhcyBzZXR0bGVkXG5cdFx0aWYgKCFmaXJzdEFjdGl2ZSkge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLm9wdGlvbnMuZmlyc3QuYWN0aXZlID0gdHJ1ZSk7XG5cdFx0fVxuXHRcdC8vIHN1YnNjcmliZSB0byBlYWNoIGl0ZW0sIGVtaXQgd2hlbiBvbmUgaXMgc2VsZWN0ZWQsIGFuZCByZXNldCB0aGUgYWN0aXZlIHN0YXRlc1xuXHRcdHRoaXMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG5cdFx0XHRvcHRpb24uc2VsZWN0ZWQuc3Vic2NyaWJlKChfOiBib29sZWFuKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGFjdGl2ZSA9IG9wdGlvbjtcblx0XHRcdFx0dGhpcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcblx0XHRcdFx0XHRpZiAob3B0aW9uICE9PSBhY3RpdmUpIHtcblx0XHRcdFx0XHRcdG9wdGlvbi5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoYWN0aXZlKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcImtleWRvd25cIiwgW1wiJGV2ZW50XCJdKVxuXHRob3N0a2V5cyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGNvbnN0IGJ1dHRvbkxpc3QgPSBBcnJheS5mcm9tPGFueT4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltjZHNDb250ZW50T3B0aW9uXSwgW2libUNvbnRlbnRPcHRpb25dXCIpKTtcblxuXHRcdHN3aXRjaCAoZXZlbnQua2V5KSB7XG5cdFx0XHRjYXNlIFwiQXJyb3dSaWdodFwiOlxuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRpZiAoIWlzRm9jdXNJbkxhc3RJdGVtKGV2ZW50LCBidXR0b25MaXN0KSkgIHtcblx0XHRcdFx0XHRjb25zdCBpbmRleCA9IGJ1dHRvbkxpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gZXZlbnQudGFyZ2V0KTtcblx0XHRcdFx0XHRidXR0b25MaXN0W2luZGV4ICsgMV0uZm9jdXMoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRidXR0b25MaXN0WzBdLmZvY3VzKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJBcnJvd0xlZnRcIjpcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0aWYgKCFpc0ZvY3VzSW5GaXJzdEl0ZW0oZXZlbnQsIGJ1dHRvbkxpc3QpKSAge1xuXHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gYnV0dG9uTGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSBldmVudC50YXJnZXQpO1xuXHRcdFx0XHRcdGJ1dHRvbkxpc3RbaW5kZXggLSAxXS5mb2N1cygpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGJ1dHRvbkxpc3RbYnV0dG9uTGlzdC5sZW5ndGggLSAxXS5mb2N1cygpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiSG9tZVwiOlxuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRidXR0b25MaXN0WzBdLmZvY3VzKCk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiRW5kXCI6XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdGJ1dHRvbkxpc3RbYnV0dG9uTGlzdC5sZW5ndGggLSAxXS5mb2N1cygpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cbn1cbiJdfQ==