@touchtech/baselayer-ui 2.6.7 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- !function(e,t){for(var n in t)e[n]=t[n]}(exports,function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}([function(e,t){e.exports=require("react")},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return a}));var r=Array.isArray;function a(e){var t="";if("string"==typeof e||"number"==typeof e)return e||"";if(r(e))for(var n,o=0;o<e.length;o++)""!==(n=a(e[o]))&&(t+=(t&&" ")+n);else for(var o in e)e.hasOwnProperty(o)&&e[o]&&(t+=(t&&" ")+o);return t}},function(e,t,n){e.exports=n(49)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(17);Object.defineProperty(t,"Label",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(33);Object.defineProperty(t,"Icon",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(13);Object.defineProperty(t,"ButtonLink",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){e.exports={listViewItem:"_2LgjqABwjHtpbGzkQQkqiQ"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(11);Object.defineProperty(t,"Button",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(22);Object.defineProperty(t,"ColorSwatch",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(27);Object.defineProperty(t,"Modal",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||t.hasOwnProperty(n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),a(n(7),t),a(n(5),t),a(n(15),t),a(n(20),t),a(n(8),t),a(n(25),t),a(n(30),t),a(n(4),t),a(n(35),t),a(n(38),t),a(n(41),t),a(n(44),t),a(n(51),t),a(n(9),t),a(n(60),t),a(n(3),t),a(n(63),t),a(n(66),t),a(n(71),t),a(n(74),t)},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(12));t.default=function(e){var t,n=e.children,r=e.className,u=e.onClick,l=e.containerRef,d=e.disabled,c=void 0!==d&&d,f=e.inverted,s=void 0!==f&&f,p=e.rounded,v=void 0!==p&&p,m=e.noShadow,_=void 0!==m&&m,y=e.noPadding,h=void 0!==y&&y,b=e.noBorder,O=void 0!==b&&b,g=e.transparent,P=void 0!==g&&g,j=e.stretchHorizontally,E=void 0!==j&&j,w=e.stretchVertically,k=void 0!==w&&w,C=e.offsetSides,M=void 0===C?[]:C,x=e.align,S=void 0===x?"center":x,N=e.size,A=void 0===N?"medium":N,B=e.type;return a.default.createElement("button",{ref:l,className:o.default([i.default.container,i.default[A],i.default[S],(t={},t[i.default.inverted]=s,t[i.default.rounded]=v,t[i.default.noShadow]=_,t[i.default.noPadding]=h,t[i.default.noBorder]=O,t[i.default.transparent]=P,t[i.default.stretchHorizontally]=E,t[i.default.stretchVertically]=k,t[i.default.leftOffset]=v&&M.includes("left"),t[i.default.rightOffset]=v&&M.includes("right"),t),r]),disabled:c,onClick:u,type:B,role:"button"},"string"!=typeof n&&Array.isArray(n)&&n.length?a.default.createElement("div",{className:i.default.content},n):n)}},function(e,t,n){e.exports={container:"M9_egEC8msu135oPGVdIf",left:"RSRbTg8Yc4-s8k6qU_vCg",small:"_1bNQhbZwLA8ErLmwdQitJe",large:"_2DwLFD-4gDz9HEAAiwWJPq",inverted:"_31CfmTUYpEh1hZvctQ9lK4",rounded:"_2bq31qKD7B6r6CTCOL3drW",rightOffset:"_2eUCWQMETOgiXuib7XfThZ",leftOffset:"G8o_OMDUFsEQ1ytU7oUYG",noShadow:"_2vknhUFAIGmjXs7tgkAC7I",noBorder:"_2p0GpdmPKIFCUes584YHeV",transparent:"_8vMlSRH_9HoRGJh8Swka",stretchHorizontally:"nZ9rOZwzGXVI3ayRgA3QC",stretchVertically:"_1y8ifb95spTLWGAmsbw1R2",noPadding:"_3cO49JELNKtGyaFxRlshyO",content:"o8d7YoT83umePPSFzK31Y"}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=o(n(14));t.default=function(e){var t,n=e.as,o=e.children,d=e.className,c=e.size,f=e.containerRef,s=e.inverted,p=void 0!==s&&s,v=e.rounded,m=void 0!==v&&v,_=e.transparent,y=void 0!==_&&_,h=e.noShadow,b=void 0!==h&&h,O=e.noPadding,g=void 0!==O&&O,P=e.noBorder,j=void 0!==P&&P,E=e.stretchHorizontally,w=void 0!==E&&E,k=e.stretchVertically,C=void 0!==k&&k,M=e.offsetSides,x=void 0===M?[]:M,S=e.align,N=void 0===S?"center":S,A=a(e,["as","children","className","size","containerRef","inverted","rounded","transparent","noShadow","noPadding","noBorder","stretchHorizontally","stretchVertically","offsetSides","align"]);return void 0===n&&(n="a"),i.default.createElement(n,r({ref:f,"data-testid":"button-link",className:u.default([l.default.container,l.default[c],l.default[N],(t={},t[l.default.inverted]=p,t[l.default.rounded]=m,t[l.default.noShadow]=b,t[l.default.noPadding]=g,t[l.default.noBorder]=j,t[l.default.transparent]=y,t[l.default.stretchHorizontally]=w,t[l.default.stretchVertically]=C,t[l.default.leftOffset]=m&&x.includes("left"),t[l.default.rightOffset]=m&&x.includes("right"),t),d])},A),"string"!=typeof o&&Array.isArray(o)&&o.length?i.default.createElement("div",{className:l.default.content},o):o)}},function(e,t,n){e.exports={container:"_3eVBgmkG6hjVokm5Xy4UMQ",left:"_3F6hMEQkJgywUkt1fwmTsy",small:"_8I9fhnzbMvCrl5KPj9f0",medium:"csj4PKQgdPBeF7Rd5Z-WQ",large:"_3_SwqmDWOGv877iHACnJpC",inverted:"_1xOa3CBRHzPCRWNsiJ65aC",rounded:"_3UGlOItzKokVg0wGH0eIlX",rightOffset:"_13tPsp6dfA1Twb1MMHRiGT",leftOffset:"NI5n6bEVRCQPy6AOAsQ1q",noShadow:"gIY9iuvC2VWxcvwwCmaJJ",transparent:"_3Xflh3Q1AZnTOD0ctquI6w",stretchHorizontally:"_2FbRDEGS_7eMUcJ0ViOBU0",stretchVertically:"_1rPm-t5ZWwrS-L9l7z66jb",noPadding:"_3J8DeaLq5iw3Ap7qKJkP9B",noBorder:"_3cEQs-K_mShFNDgDP32Wd6",content:"_1VTyfTwVloAcZwYCZyslsJ"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(16);Object.defineProperty(t,"Checkbox",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=n(3),c=i(n(19));t.default=function(e){var t=e.label,n=e.onChange,r=e.placeholder,a=e.checked,o=e.disabled,i=e.name,f=e.indeterminate,s=e.size,p=void 0===s?"small":s,v=e.autoFocus,m=void 0!==v&&v,_=u.useCallback((function(e){return n(e.target.checked)}),[n]);return u.default.createElement(d.Label,{value:t},u.default.createElement("input",{"data-testid":"checkbox",ref:function(e){e&&(e.indeterminate=f)},checked:a,disabled:o,className:l.default([c.default.input,c.default[p]]),onChange:_,placeholder:r,name:i,type:"checkbox",autoFocus:m}))}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(18));t.default=function(e){var t=e.children,n=e.value,r=e.containerRef;return a.default.createElement("label",{ref:r,className:o.default.container},n,t)}},function(e,t,n){e.exports={container:"_2ql27bllsQX39R3E2uRqg-"}},function(e,t,n){e.exports={input:"pOBdyACtdyJG6MI_-N4s6",small:"_2BczHzgNzaFAQksuN13Qu",medium:"_3Ps1QX1Itl93JL_H5OpnZy",large:"_3vHUM7GhnqQhMkI01go6Pn"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(21);Object.defineProperty(t,"ColorPicker",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(8),u=r(n(24));t.default=function(e){var t=e.colors,n=e.containerRef,r=e.onSelect,l=e.selectedColor,d=e.direction,c=void 0===d?"vertical":d;return a.default.createElement("div",{ref:n,className:o.default([u.default.colorPicker,u.default[c]])},t.map((function(e){return a.default.createElement(i.ColorSwatch,{key:e.key,color:e,isSelected:e===l,onClick:function(){return r(e)}})})))}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(23));t.default=function(e){var t,n=e.color,r=e.containerRef,u=e.onClick,l=e.isSelected,d=void 0!==l&&l;return a.default.createElement("button",{ref:r,className:o.default([i.default.colorSwatch,(t={},t[i.default.selected]=d,t)]),"data-testid":"color-swatch",disabled:d,onClick:u,style:{backgroundColor:n.hexCode}},a.default.createElement("span",{className:i.default.srOnly},"Select "+n.label+" color"))}},function(e,t,n){e.exports={colorSwatch:"_13ss1xsMNizvEgP_hxEV8B",selected:"L6fAt6RZYz_z3wPbjZExH",srOnly:"_3vJ5mxpzaYsKaxf-8tB31x"}},function(e,t,n){e.exports={colorPicker:"_31FwH_nWr72k3pugApJub9",horizontal:"Qa-BpuTT2kxpmV_AQgCjH",vertical:"_2x4SAnbopyZmkycWLC0EXk"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(26);Object.defineProperty(t,"ConfirmationModal",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(9),u=r(n(29));function l(e){var t,n=e.children,r=e.containerRef,l=e.header,d=e.isOpen,c=e.buttonsLeft,f=void 0===c?[]:c,s=e.buttonsRight,p=void 0===s?[]:s,v=e.onClose,m=void 0===v?function(){}:v,_=e.noPadding,y=void 0!==_&&_;return a.default.createElement(i.Modal,{containerRef:r,isOpen:d,onClose:m},a.default.createElement("div",{className:u.default.container},a.default.createElement("h1",{className:u.default.modalHeader},l),a.default.createElement("div",{className:o.default([u.default.modalContent,(t={},t[u.default.noPadding]=y,t)])},n),a.default.createElement("div",{className:u.default.modalButtonsContainer},a.default.createElement("div",{className:u.default.modalButtons},f),a.default.createElement("div",{className:u.default.modalButtons},p))))}l.displayName="ConfirmationModal",t.default=l},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=n(77),d=i(n(28));t.default=function(e){var t=e.children,n=e.containerRef,r=e.isOpen,a=e.button,o=e.onClose,i=void 0===o?function(){}:o;l.useHotkeys("Escape",i);var c=u.useCallback((function(){i()}),[i]);return r&&u.default.createElement("div",{ref:n},u.default.createElement("div",{className:d.default.overlay,"data-testid":"modal-overlay",onClick:c}),u.default.createElement("div",{className:d.default.modal,"data-testid":"modal"},t),a&&u.default.createElement("div",{className:d.default.modalButton},a))}},function(e,t,n){e.exports={overlay:"_1yxCbQJqStUvytvKEeNC3n",modal:"D8SjBx3ikz636YubnHYAY",modalButton:"o8VRVxMrs1xXavADyxjLG"}},function(e,t,n){e.exports={container:"kkgHoBQhFPsKj_x1ZFdRH",modalHeader:"_1WuvHD-GdXLrtqwa04W1qy",modalContent:"_27eUySQqvq5qloNClIjIST",noPadding:"_2gtBXL9PFSpHsW0A9xd55S",modalButtonsContainer:"_5gIpyF3X5thPQAnsAC4z9",modalButtons:"swsoCii1w4xNl7ioDVkO5"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(31);Object.defineProperty(t,"FloatingPanel",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(32));t.default=function(e){var t,n=e.children,r=e.containerRef,u=e.layout,l=void 0===u?"column":u,d=e.placement,c=void 0===d?{horizontal:"center",vertical:"bottom",parent:"viewport"}:d,f="center"===c.horizontal?"horizontalCenter":c.horizontal,s="center"===c.vertical?"verticalCenter":c.vertical;return a.default.createElement("div",{ref:r,"data-testid":"floating-panel",className:o.default([i.default.container,i.default[f],i.default[s],i.default[l],(t={},t[i.default.fixed]="container"!==c.parent,t)])},n)}},function(e,t,n){e.exports={container:"a6NHO2CVVCfiniye2XLN-",row:"_3RSgB76rEBniPc2Ycr8Zbv",column:"_1JkX15igclnbm5sRScWVDY",fixed:"MMQ1yjEafWkYFVDHMpTbI",plain:"_3m2M_Narc5xwLay8HJljkc",transparent:"_1rfa49zhZxNifz64Oqb_6P",top:"_kUalnDeEfvzqAji0AMDo",topEdge:"W8JAIwLjO8JQGbviZpPQw",topOnEdge:"_3opJ7Eb6tj394uV8a57ixz",right:"_3-vbwjp0aPcLEV1Sx0ICgP",rightEdge:"_3XNFy5ZoMCoYBIabeGN4BQ",rightOnEdge:"_12c3CzUMQE8AG3AL8Hiki2",bottom:"_3geBENH5oErqGdt-QyHnPh",bottomEdge:"_3_saM4Gs32nRbIHHxIEbF6",bottomOnEdge:"_2PLE4dmGhncgk-lEnoU4kv",left:"_1iSBnyZgPeFUWoM4i6dSpU",leftEdge:"_1fX19qIOShn2o5uusRzTgs",leftOnEdge:"KBHDockuHTEOKMGOzadXi",horizontalCenter:"_31t6tHRJ5s-5DcDLFTKh1m",verticalCenter:"_2hq7fkDXHxrxz2t7LLg4_9"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(34));t.default=function(e){var t,n=e.src,r=e.alt,u=e.containerRef,l=e.size,d=void 0===l?"medium":l,c=e.inverted,f=void 0!==c&&c;return a.default.createElement("img",{ref:u,className:o.default([i.default.icon,i.default[d],(t={},t[i.default.inverted]=f,t)]),crossOrigin:"anonymous","data-testid":"icon",alt:r,src:n})}},function(e,t,n){e.exports={icon:"uh8zkmQp5ybk5WJSla69D",small:"_9DICtqmQSnLPjm1XI7YVs",medium:"sJpxfYgiTz7ik6JOGu1wi",large:"_2rgucAH8Bnli-cmjz9i2C2",inverted:"I-eI5q8rd2bSp9B-FhUza"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(36);Object.defineProperty(t,"IconButton",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(4),u=r(n(37));t.default=function(e){var t,n=e.className,r=e.containerRef,l=e.src,d=e.alt,c=e.offsetSides,f=void 0===c?[]:c,s=e.onClick,p=void 0===s?function(){}:s,v=e.disabled,m=void 0!==v&&v,_=e.inverted,y=void 0!==_&&_,h=e.noShadow,b=void 0!==h&&h,O=e.noBorder,g=void 0!==O&&O,P=e.transparent,j=void 0!==P&&P,E=e.rounded,w=void 0!==E&&E,k=e.size,C=void 0===k?"medium":k,M=e.type,x=void 0===M?"button":M;return a.default.createElement("button",{ref:r,className:o.default([u.default.container,u.default[C],(t={},t[u.default.inverted]=y,t[u.default.rounded]=w,t[u.default.noShadow]=b,t[u.default.noBorder]=g,t[u.default.transparent]=j,t[u.default.topOffset]=w&&f.includes("top"),t[u.default.rightOffset]=w&&f.includes("right"),t[u.default.bottomOffset]=w&&f.includes("bottom"),t[u.default.leftOffset]=w&&f.includes("left"),t),n]),disabled:m,onClick:p,type:x,role:"button"},a.default.createElement(i.Icon,{src:l,alt:d,size:C,inverted:y}))}},function(e,t,n){e.exports={container:"_2MPuJ3ApvrAvrewjSWGAA2",small:"lOkoan7dbp-goDtJVuK7B",medium:"_3a9cWts_Y7x3pajk8umN3z",large:"_2aG6zXqTEKVcvBaaniCNBy",rounded:"_2JX034qUTCoTdWC2ppA487",topOffset:"_1wpC-WXgL06QKxtPzOwNRK",rightOffset:"LIzrQC7poQT9jURBqMDKh",bottomOffset:"_2i_w5ULkUK7LVw5hEO97Ew",leftOffset:"_38eKlTQTV1YlnEe1GmNtQk",inverted:"_2NkZ50rkA3eZCysY9FAp-e",noShadow:"_3Uy5HZdvkWf7bilT0wxwVe",noBorder:"_2F4Hy9lq5OCrEpPZPh5xAJ",transparent:"_2u7qTMeE9D5rtcsEcSoAY3"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(39);Object.defineProperty(t,"IconButtonLink",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=n(4),d=o(n(40));t.default=function(e){var t,n=e.as,o=e.containerRef,c=e.className,f=e.src,s=e.alt,p=e.inverted,v=void 0!==p&&p,m=e.noShadow,_=void 0!==m&&m,y=e.noBorder,h=void 0!==y&&y,b=e.transparent,O=void 0!==b&&b,g=e.rounded,P=void 0!==g&&g,j=e.offsetSides,E=void 0===j?[]:j,w=e.size,k=void 0===w?"medium":w,C=a(e,["as","containerRef","className","src","alt","inverted","noShadow","noBorder","transparent","rounded","offsetSides","size"]);return void 0===n&&(n="a"),i.default.createElement(n,r({ref:o,"data-testid":"icon-button-link",className:u.default([d.default.container,d.default[k],(t={},t[d.default.inverted]=v,t[d.default.rounded]=P,t[d.default.noShadow]=_,t[d.default.noBorder]=h,t[d.default.transparent]=O,t[d.default.topOffset]=P&&E.includes("top"),t[d.default.rightOffset]=P&&E.includes("right"),t[d.default.bottomOffset]=P&&E.includes("bottom"),t[d.default.leftOffset]=P&&E.includes("left"),t),c])},C),i.default.createElement(l.Icon,{src:f,alt:s,size:k,inverted:v}))}},function(e,t,n){e.exports={container:"_1uifmKNPDzdu5YDnhgwPQK",small:"pfHcYaew-HrHtTNuR4v7h",large:"_26Z9FH-CNPqf55ZRP1vnab",rounded:"_2q7WvROhNm3gsRIRaQQeaU",topOffset:"wZy_vulZkMbWSX0akcZHA",rightOffset:"_2jhhpm60_yPEfxQ-wazj-5",bottomOffset:"DnnrG7ZXmTIhmWUcs99m1",leftOffset:"_1YdCg7T6XjhmxwcjLNSEb-",inverted:"HV0R-lqwmyeqsS1Z8poZS",noShadow:"_1LPpt70Jjim6SfZe35G2kb",noBorder:"RkzSrGixM28JMat6IB5Lr",transparent:"_1KdXfY3Pk6tENYH81tWrps"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(42);Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.emptyImage=void 0;var u=o(n(0)),l=i(n(1)),d=i(n(43));t.emptyImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=",t.default=function(e){var n,r,a=e.src,o=e.alt,i=e.srcWidth,c=e.srcHeight,f=e.children,s=e.animation,p=e.containerRef,v=e.layout,m=void 0===v?"contain":v,_=u.useState(!1),y=_[0],h=_[1],b=u.useRef(null);return u.useEffect((function(){var e=new Image;return e.crossOrigin="anonymous",e.src=a,e.onload=function(){var e;null===(e=b.current)||void 0===e||e.setAttribute("src",a),h(!0)},function(){e.src="",delete e.onload,delete e.src,delete e.crossOrigin,e=null}}),[a]),f?u.default.createElement("div",{ref:p,className:l.default([d.default.container,d.default.hasOverlay])},u.default.createElement("img",{ref:b,className:l.default([d.default.image,d.default[m],(n={},n[d.default.fadeIn]="fadeIn"===s&&y,n[d.default.scaleUp]="scaleUp"===s&&y,n)]),crossOrigin:"anonymous","data-testid":"image",alt:o,src:t.emptyImage,width:i,height:c}),f&&u.default.createElement("div",{className:d.default.overlay},f)):u.default.createElement("img",{ref:b,className:l.default([d.default.image,d.default[m],(r={},r[d.default.fadeIn]="fadeIn"===s&&y,r[d.default.scaleUp]="scaleUp"===s&&y,r)]),crossOrigin:"anonymous","data-testid":"image",alt:o,src:t.emptyImage,width:i,height:c})}},function(e,t,n){e.exports={container:"_3zwln8xpkZwpTY5i6J7bOD",hasOverlay:"_2el8xWqqf3w4S3x0s2D9xl",overlay:"Eg3imfbXdI6U6rfRE0-qO",image:"t1897dfts_pqHzSnwmWBW",cover:"_1-R_HDjO6qNnywcNiS8byD",contain:"_3mDpCjHJ2g66e0w4R2EZkG",stretchHorizontally:"_3yEtH7cqpUlVFaGiWG129w",stretchVertically:"lyiBs6OBxvREnwIR0ls2C",fadeIn:"_2OKJw8Udt916IXmTlT986Y",fadeInAnimation:"NoOVrW466Htk6EpZ1wYiI",scaleUp:"_309VTqjVHpVJHuyAQa_aZi",scaleUpAnimation:"_3icbJre0PJ7MFnXQiCY_q6"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(45);Object.defineProperty(t,"ListView",{enumerable:!0,get:function(){return r.default}});var a=n(47);Object.defineProperty(t,"ListViewItem",{enumerable:!0,get:function(){return a.default}});var o=n(48);Object.defineProperty(t,"ListViewLinkItem",{enumerable:!0,get:function(){return o.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(46));t.default=function(e){var t=e.children,n=e.className,r=e.containerRef,u=e.header,l=e.headerActions;return a.default.createElement("div",{ref:r,className:o.default([i.default.container,n])},a.default.createElement("div",{className:i.default.header},u&&a.default.createElement("h3",{className:i.default.headerLabel},u),l),a.default.createElement("ul",{className:i.default.list},t))}},function(e,t,n){e.exports={container:"CPHNd8osKjLvQDEQUErux",header:"_1e7hHSVo59e8yQnhc9B6Id",headerLabel:"_2iBL-SRETRThDGo8w_u4Sh",list:"_1w1W8E6_Hzfes3WZTYZaJK"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(7),u=r(n(6));t.default=function(e){var t=e.children,n=e.active,r=void 0!==n&&n,l=e.disabled,d=void 0!==l&&l,c=e.transparent,f=void 0!==c&&c,s=e.noPadding,p=void 0!==s&&s,v=e.size,m=void 0===v?"medium":v,_=e.align,y=void 0===_?"center":_,h=e.onClick,b=void 0===h?function(){}:h;return a.default.createElement("li",{className:o.default([u.default.listViewItem])},a.default.createElement(i.Button,{onClick:b,disabled:d,inverted:r,transparent:f,noPadding:p,align:y,size:m,stretchHorizontally:!0,noShadow:!0,noBorder:!0},t))}},function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(2),i=n.n(o),u=n(1),l=n(5),d=n(6),c=n.n(d);function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function s({children:e,active:t,transparent:n,noPadding:r,size:o,align:i,as:d,...s}){return a.a.createElement("li",{className:Object(u.default)([c.a.listViewItem])},a.a.createElement(l.ButtonLink,f({as:d,inverted:t,transparent:n,noPadding:r,align:i,size:o,stretchHorizontally:!0,noShadow:!0,noBorder:!0},s),e))}s.defaultProps={active:!1,transparent:!1,noPadding:!1,size:"medium",align:"center",as:"a"},s.propTypes={children:i.a.node.isRequired,as:i.a.elementType,active:i.a.bool,transparent:i.a.bool,noPadding:i.a.bool,align:i.a.oneOf(["left","center"]),size:i.a.string,onClick:i.a.func},t.default=s},function(e,t,n){"use strict";var r=n(50);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(52);Object.defineProperty(t,"Menu",{enumerable:!0,get:function(){return r.default}});var a=n(54);Object.defineProperty(t,"MenuContainer",{enumerable:!0,get:function(){return a.default}});var o=n(56);Object.defineProperty(t,"MenuItem",{enumerable:!0,get:function(){return o.default}});var i=n(58);Object.defineProperty(t,"MenuLinkItem",{enumerable:!0,get:function(){return i.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(53));t.default=function(e){var t,n=e.children,r=e.containerRef,u=e.className,l=e.isOpen,d=void 0===l||l,c=e.placement,f=void 0===c?{horizontal:"left",vertical:"bottom"}:c,s=e.header;return a.default.createElement("div",{ref:r,className:o.default([i.default.menu,i.default[f.horizontal],i.default[f.vertical],(t={},t[i.default.open]=d,t),u])},s&&d&&a.default.createElement("h3",{className:i.default.menuHeader},s),a.default.createElement("ul",null,d&&n))}},function(e,t,n){e.exports={menu:"_2ahi8JcnxGHrnZmD0xT9RL",top:"_3gpFTd1Fdx4EAfq170TGs7",right:"_1L5ATpM9GXy-SORFr0G6S4",left:"CYEJl39TkEfnKal3vtvz9",bottom:"_3zyp-NdTBeBDKvk26psZup",open:"_1iaaziZrVI_-E8D99WdNji",entrance:"_2fiKe4-X8PqcG4_9qeB3ZO",menuHeader:"_19nk1IMNS-u_YIQLlmYRtU"}},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=i(n(55));t.default=u.forwardRef((function(e,t){var n=e.children,r=e.className;return u.default.createElement("div",{ref:t,className:l.default([d.default.menuContainer,r])},n)}))},function(e,t,n){e.exports={menuContainer:"_2-SFwsppEuobBJkAwwQrFC"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(57));t.default=function(e){var t,n=e.children,r=e.className,u=e.onClick,l=e.isActive,d=void 0!==l&&l;return a.default.createElement("li",{className:o.default([i.default.menuItem,(t={},t[i.default.active]=d,t),r]),onClick:u},n)}},function(e,t,n){e.exports={menuItem:"_3gGczRJwrNenXTBLQnC29M",active:"_2j1ilUNkbFGSgulXSoHAdP"}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=o(n(59));t.default=function(e){var t=e.as,n=e.children,o=e.className,d=a(e,["as","children","className"]);return void 0===t&&(t="a"),i.default.createElement(t,r({"data-testid":"menu-link-item",className:u.default([l.default.menuLinkItem,o])},d),n)}},function(e,t,n){e.exports={menuLinkItem:"_2Dy1LTfScGZtSb_5Lud-lU",active:"_2Uws7bj3yejmn1k7XiyKfQ",menuItem:"_2lI7S2t5zWhQsvg_XnQ7--"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(61);Object.defineProperty(t,"Overlay",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(62));t.default=function(e){var t,n=e.children,r=e.containerRef,u=e.transparent,l=void 0!==u&&u,d=e.isFixed,c=void 0!==d&&d,f=e.onClick,s=void 0===f?function(){}:f;return a.default.createElement("div",{ref:r,"data-testid":"overlay",className:o.default([i.default.overlay,(t={},t[i.default.transparent]=l,t[i.default.fixed]=c,t)]),onClick:s},n)}},function(e,t,n){e.exports={overlay:"_2QgpyrDcUQyKYESC5DXXJr",transparent:"_28fVmoxp69OPr88Ew0zVeN",fixed:"_2sU3515EbFFgeP1yK2Zubz"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(64);Object.defineProperty(t,"TextInput",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=n(3),c=i(n(65));t.default=function(e){var t=e.label,n=e.onChange,r=e.placeholder,a=e.value,o=e.name,i=e.inputRef,f=e.size,s=void 0===f?"medium":f,p=e.autoFocus,v=void 0!==p&&p,m=e.type,_=void 0===m?"text":m,y=u.useCallback((function(e){return n(e.target.value)}),[n]),h=u.default.createElement("input",{"data-testid":"input",ref:i,className:l.default([c.default.textInput,c.default[s]]),onChange:i?void 0:y,placeholder:r,name:o,type:_,value:a,autoFocus:v});return t?u.default.createElement(d.Label,{value:t},h):u.default.createElement(u.default.Fragment,null,h)}},function(e,t,n){e.exports={textInput:"_2wfqOzWBoAn_K7goqvjXJe",small:"_1a4QOVJB0zW3Urf_5hqNjj",medium:"_3UJoe8nlpzhVTmC09TVso-",large:"_3DQ52Qd_1K4_VxxVv728SX"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(67);Object.defineProperty(t,"Toast",{enumerable:!0,get:function(){return r.default}});var a=n(69);Object.defineProperty(t,"ToastContainer",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(68));t.default=function(e){var t=e.children,n=e.containerRef,r=e.image,u=e.buttons,l=e.onClick,d=void 0===l?function(){}:l;return a.default.createElement("div",{ref:n,className:o.default([i.default.toast]),onClick:d,"data-testid":"toast"},r&&a.default.createElement("img",{"data-testid":"toast-image",className:i.default.toastImage,src:r.src,alt:r.alt}),a.default.createElement("div",{className:i.default.toastContent},t),a.default.createElement("div",{className:i.default.toastButtons},u))}},function(e,t,n){e.exports={toast:"_3sBs_ERXV3k0SQMGUy2Wj4",entrance:"_1_xjtLeUMoEXNA-qOEZhcx",toastContent:"_10lBETCU3UNFR8py1q1q-h",toastImage:"_3Ci0wpObk6oqf7dwkHsFWo",toastButtons:"FEWDnDsP-9A9JHG20qBS5"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(70));t.default=function(e){var t=e.children;return a.default.createElement("div",{className:o.default([i.default.toastContainer]),"data-testid":"toast-container"},t)}},function(e,t,n){e.exports={toastContainer:"_3F8cJU1wmKmbrjidg-O3zp"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(72);Object.defineProperty(t,"Video",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(73));t.default=function(e){var t=e.src,n=e.type,r=e.children,u=e.containerRef,l=e.muted,d=void 0===l||l,c=e.loop,f=void 0===c||c,s=e.autoPlay,p=void 0===s||s,v=e.layout,m=void 0===v?"contain":v;return r?a.default.createElement("div",{ref:u,className:o.default([i.default.container,i.default.hasOverlay])},a.default.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:o.default([i.default.video,i.default[m]]),muted:d,loop:f,autoPlay:p,playsInline:!0},a.default.createElement("source",{"data-testid":"source",src:t,type:n})),r&&a.default.createElement("div",{className:i.default.overlay},r)):a.default.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:o.default([i.default.video,i.default[m]]),muted:d,loop:f,autoPlay:p,playsInline:!0},a.default.createElement("source",{"data-testid":"source",src:t,type:n}))}},function(e,t,n){e.exports={container:"_2EQBfr5w8h1x1bq-2fp6wT",hasOverlay:"_3GRMpmGk_PqITcUv0Nfmt3",video:"_2tZfXkEhCkwAzfaG_BVn0B",cover:"_3OYHfbzaL3QHanWZBj8RxO",contain:"_3I_c7shcSrtG_FxvvU2IeE",stretchHorizontally:"_1Z7dL9uEd0Ksx3CkrZhsB8",stretchVertically:"_1zbrDYO0fYFJVc7xvsTYi6",overlay:"_2osXd7SkwF0Lh-2yiquYQM"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(75);Object.defineProperty(t,"useToggle",{enumerable:!0,get:function(){return r.default}});var a=n(76);Object.defineProperty(t,"useOutsideClick",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default=function(e){void 0===e&&(e=!1);var t=r.useState(e),n=t[0],a=t[1];return[n,r.useCallback((function(e){a("boolean"==typeof e?e:function(e){return!e})}),[n])]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default=function(e){var t=r.useRef();return r.useEffect((function(){var n=function(n){t.current&&!t.current.contains(n.target)&&e(n)};return document.addEventListener("click",n),document.addEventListener("touchstart",n),function(){document.removeEventListener("click",n),document.removeEventListener("touchstart",n)}}),[e]),t}},function(e,t,n){"use strict";n.r(t),n.d(t,"useHotkeys",(function(){return x})),n.d(t,"useIsHotkeyPressed",(function(){return M}));
1
+ !function(e,t){for(var n in t)e[n]=t[n]}(exports,function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}([function(e,t){e.exports=require("react")},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return a}));var r=Array.isArray;function a(e){var t="";if("string"==typeof e||"number"==typeof e)return e||"";if(r(e))for(var n,o=0;o<e.length;o++)""!==(n=a(e[o]))&&(t+=(t&&" ")+n);else for(var o in e)e.hasOwnProperty(o)&&e[o]&&(t+=(t&&" ")+o);return t}},function(e,t,n){e.exports=n(49)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(17);Object.defineProperty(t,"Label",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(33);Object.defineProperty(t,"Icon",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(13);Object.defineProperty(t,"ButtonLink",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){e.exports={listViewItem:"_2LgjqABwjHtpbGzkQQkqiQ"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(11);Object.defineProperty(t,"Button",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(22);Object.defineProperty(t,"ColorSwatch",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(27);Object.defineProperty(t,"Modal",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||t.hasOwnProperty(n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),a(n(7),t),a(n(5),t),a(n(15),t),a(n(20),t),a(n(8),t),a(n(25),t),a(n(30),t),a(n(4),t),a(n(35),t),a(n(38),t),a(n(41),t),a(n(44),t),a(n(51),t),a(n(9),t),a(n(60),t),a(n(3),t),a(n(63),t),a(n(66),t),a(n(71),t),a(n(74),t)},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(12));t.default=function(e){var t,n=e.children,r=e.className,u=e.onClick,l=e.containerRef,d=e.disabled,c=void 0!==d&&d,f=e.inverted,s=void 0!==f&&f,p=e.rounded,v=void 0!==p&&p,m=e.noShadow,_=void 0!==m&&m,y=e.noPadding,h=void 0!==y&&y,b=e.noBorder,O=void 0!==b&&b,g=e.transparent,P=void 0!==g&&g,j=e.stretchHorizontally,E=void 0!==j&&j,w=e.stretchVertically,k=void 0!==w&&w,C=e.offsetSides,M=void 0===C?[]:C,x=e.align,S=void 0===x?"center":x,N=e.size,A=void 0===N?"medium":N,B=e.type;return a.default.createElement("button",{ref:l,className:o.default([i.default.container,i.default[A],i.default[S],(t={},t[i.default.inverted]=s,t[i.default.rounded]=v,t[i.default.noShadow]=_,t[i.default.noPadding]=h,t[i.default.noBorder]=O,t[i.default.transparent]=P,t[i.default.stretchHorizontally]=E,t[i.default.stretchVertically]=k,t[i.default.leftOffset]=v&&M.includes("left"),t[i.default.rightOffset]=v&&M.includes("right"),t),r]),disabled:c,onClick:u,type:B,role:"button"},"string"!=typeof n&&Array.isArray(n)&&n.length?a.default.createElement("div",{className:i.default.content},n):n)}},function(e,t,n){e.exports={container:"M9_egEC8msu135oPGVdIf",left:"RSRbTg8Yc4-s8k6qU_vCg",small:"_1bNQhbZwLA8ErLmwdQitJe",large:"_2DwLFD-4gDz9HEAAiwWJPq",inverted:"_31CfmTUYpEh1hZvctQ9lK4",rounded:"_2bq31qKD7B6r6CTCOL3drW",rightOffset:"_2eUCWQMETOgiXuib7XfThZ",leftOffset:"G8o_OMDUFsEQ1ytU7oUYG",noShadow:"_2vknhUFAIGmjXs7tgkAC7I",noBorder:"_2p0GpdmPKIFCUes584YHeV",transparent:"_8vMlSRH_9HoRGJh8Swka",stretchHorizontally:"nZ9rOZwzGXVI3ayRgA3QC",stretchVertically:"_1y8ifb95spTLWGAmsbw1R2",noPadding:"_3cO49JELNKtGyaFxRlshyO",content:"o8d7YoT83umePPSFzK31Y"}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=o(n(14));t.default=function(e){var t,n=e.as,o=e.children,d=e.className,c=e.size,f=e.containerRef,s=e.inverted,p=void 0!==s&&s,v=e.rounded,m=void 0!==v&&v,_=e.transparent,y=void 0!==_&&_,h=e.noShadow,b=void 0!==h&&h,O=e.noPadding,g=void 0!==O&&O,P=e.noBorder,j=void 0!==P&&P,E=e.stretchHorizontally,w=void 0!==E&&E,k=e.stretchVertically,C=void 0!==k&&k,M=e.offsetSides,x=void 0===M?[]:M,S=e.align,N=void 0===S?"center":S,A=a(e,["as","children","className","size","containerRef","inverted","rounded","transparent","noShadow","noPadding","noBorder","stretchHorizontally","stretchVertically","offsetSides","align"]);return void 0===n&&(n="a"),i.default.createElement(n,r({ref:f,"data-testid":"button-link",className:u.default([l.default.container,l.default[c],l.default[N],(t={},t[l.default.inverted]=p,t[l.default.rounded]=m,t[l.default.noShadow]=b,t[l.default.noPadding]=g,t[l.default.noBorder]=j,t[l.default.transparent]=y,t[l.default.stretchHorizontally]=w,t[l.default.stretchVertically]=C,t[l.default.leftOffset]=m&&x.includes("left"),t[l.default.rightOffset]=m&&x.includes("right"),t),d])},A),"string"!=typeof o&&Array.isArray(o)&&o.length?i.default.createElement("div",{className:l.default.content},o):o)}},function(e,t,n){e.exports={container:"_3eVBgmkG6hjVokm5Xy4UMQ",left:"_3F6hMEQkJgywUkt1fwmTsy",small:"_8I9fhnzbMvCrl5KPj9f0",medium:"csj4PKQgdPBeF7Rd5Z-WQ",large:"_3_SwqmDWOGv877iHACnJpC",inverted:"_1xOa3CBRHzPCRWNsiJ65aC",rounded:"_3UGlOItzKokVg0wGH0eIlX",rightOffset:"_13tPsp6dfA1Twb1MMHRiGT",leftOffset:"NI5n6bEVRCQPy6AOAsQ1q",noShadow:"gIY9iuvC2VWxcvwwCmaJJ",transparent:"_3Xflh3Q1AZnTOD0ctquI6w",stretchHorizontally:"_2FbRDEGS_7eMUcJ0ViOBU0",stretchVertically:"_1rPm-t5ZWwrS-L9l7z66jb",noPadding:"_3J8DeaLq5iw3Ap7qKJkP9B",noBorder:"_3cEQs-K_mShFNDgDP32Wd6",content:"_1VTyfTwVloAcZwYCZyslsJ"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(16);Object.defineProperty(t,"Checkbox",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=n(3),c=i(n(19));t.default=function(e){var t=e.label,n=e.onChange,r=e.placeholder,a=e.checked,o=e.disabled,i=e.name,f=e.indeterminate,s=e.size,p=void 0===s?"small":s,v=e.autoFocus,m=void 0!==v&&v,_=u.useCallback((function(e){return n(e.target.checked)}),[n]);return u.default.createElement(d.Label,{value:t},u.default.createElement("input",{"data-testid":"checkbox",ref:function(e){e&&(e.indeterminate=f)},checked:a,disabled:o,className:l.default([c.default.input,c.default[p]]),onChange:_,placeholder:r,name:i,type:"checkbox",autoFocus:m}))}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(18));t.default=function(e){var t=e.children,n=e.value,r=e.containerRef;return a.default.createElement("label",{ref:r,className:o.default.container},n,t)}},function(e,t,n){e.exports={container:"_2ql27bllsQX39R3E2uRqg-"}},function(e,t,n){e.exports={input:"pOBdyACtdyJG6MI_-N4s6",small:"_2BczHzgNzaFAQksuN13Qu",medium:"_3Ps1QX1Itl93JL_H5OpnZy",large:"_3vHUM7GhnqQhMkI01go6Pn"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(21);Object.defineProperty(t,"ColorPicker",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(8),u=r(n(24));t.default=function(e){var t=e.colors,n=e.containerRef,r=e.onSelect,l=e.selectedColor,d=e.direction,c=void 0===d?"vertical":d;return a.default.createElement("div",{ref:n,className:o.default([u.default.colorPicker,u.default[c]])},t.map((function(e){return a.default.createElement(i.ColorSwatch,{key:e.key,color:e,isSelected:e===l,onClick:function(){return r(e)}})})))}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(23));t.default=function(e){var t,n=e.color,r=e.containerRef,u=e.onClick,l=e.isSelected,d=void 0!==l&&l;return a.default.createElement("button",{ref:r,className:o.default([i.default.colorSwatch,(t={},t[i.default.selected]=d,t)]),"data-testid":"color-swatch",disabled:d,onClick:u,style:{backgroundColor:n.hexCode}},a.default.createElement("span",{className:i.default.srOnly},"Select "+n.label+" color"))}},function(e,t,n){e.exports={colorSwatch:"_13ss1xsMNizvEgP_hxEV8B",selected:"L6fAt6RZYz_z3wPbjZExH",srOnly:"_3vJ5mxpzaYsKaxf-8tB31x"}},function(e,t,n){e.exports={colorPicker:"_31FwH_nWr72k3pugApJub9",horizontal:"Qa-BpuTT2kxpmV_AQgCjH",vertical:"_2x4SAnbopyZmkycWLC0EXk"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(26);Object.defineProperty(t,"ConfirmationModal",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(9),u=r(n(29));function l(e){var t,n=e.children,r=e.containerRef,l=e.header,d=e.isOpen,c=e.buttonsLeft,f=void 0===c?[]:c,s=e.buttonsRight,p=void 0===s?[]:s,v=e.onClose,m=void 0===v?function(){}:v,_=e.noPadding,y=void 0!==_&&_;return a.default.createElement(i.Modal,{containerRef:r,isOpen:d,onClose:m},a.default.createElement("div",{className:u.default.container},a.default.createElement("h1",{className:u.default.modalHeader},l),a.default.createElement("div",{className:o.default([u.default.modalContent,(t={},t[u.default.noPadding]=y,t)])},n),a.default.createElement("div",{className:u.default.modalButtonsContainer},a.default.createElement("div",{className:u.default.modalButtons},f),a.default.createElement("div",{className:u.default.modalButtons},p))))}l.displayName="ConfirmationModal",t.default=l},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=n(77),d=i(n(28));t.default=function(e){var t=e.children,n=e.containerRef,r=e.isOpen,a=e.button,o=e.onClose,i=void 0===o?function(){}:o;l.useHotkeys("Escape",i);var c=u.useCallback((function(){i()}),[i]);return r&&u.default.createElement("div",{ref:n},u.default.createElement("div",{className:d.default.overlay,"data-testid":"modal-overlay",onClick:c}),u.default.createElement("div",{className:d.default.modal,"data-testid":"modal"},t),a&&u.default.createElement("div",{className:d.default.modalButton},a))}},function(e,t,n){e.exports={overlay:"_1yxCbQJqStUvytvKEeNC3n",modal:"D8SjBx3ikz636YubnHYAY",modalButton:"o8VRVxMrs1xXavADyxjLG"}},function(e,t,n){e.exports={container:"kkgHoBQhFPsKj_x1ZFdRH",modalHeader:"_1WuvHD-GdXLrtqwa04W1qy",modalContent:"_27eUySQqvq5qloNClIjIST",noPadding:"_2gtBXL9PFSpHsW0A9xd55S",modalButtonsContainer:"_5gIpyF3X5thPQAnsAC4z9",modalButtons:"swsoCii1w4xNl7ioDVkO5"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(31);Object.defineProperty(t,"FloatingPanel",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(32));t.default=function(e){var t,n=e.children,r=e.containerRef,u=e.layout,l=void 0===u?"column":u,d=e.placement,c=void 0===d?{horizontal:"center",vertical:"bottom",parent:"viewport"}:d,f="center"===c.horizontal?"horizontalCenter":c.horizontal,s="center"===c.vertical?"verticalCenter":c.vertical;return a.default.createElement("div",{ref:r,"data-testid":"floating-panel",className:o.default([i.default.container,i.default[f],i.default[s],i.default[l],(t={},t[i.default.fixed]="container"!==c.parent,t)])},n)}},function(e,t,n){e.exports={container:"a6NHO2CVVCfiniye2XLN-",row:"_3RSgB76rEBniPc2Ycr8Zbv",column:"_1JkX15igclnbm5sRScWVDY",fixed:"MMQ1yjEafWkYFVDHMpTbI",plain:"_3m2M_Narc5xwLay8HJljkc",transparent:"_1rfa49zhZxNifz64Oqb_6P",top:"_kUalnDeEfvzqAji0AMDo",topEdge:"W8JAIwLjO8JQGbviZpPQw",topOnEdge:"_3opJ7Eb6tj394uV8a57ixz",right:"_3-vbwjp0aPcLEV1Sx0ICgP",rightEdge:"_3XNFy5ZoMCoYBIabeGN4BQ",rightOnEdge:"_12c3CzUMQE8AG3AL8Hiki2",bottom:"_3geBENH5oErqGdt-QyHnPh",bottomEdge:"_3_saM4Gs32nRbIHHxIEbF6",bottomOnEdge:"_2PLE4dmGhncgk-lEnoU4kv",left:"_1iSBnyZgPeFUWoM4i6dSpU",leftEdge:"_1fX19qIOShn2o5uusRzTgs",leftOnEdge:"KBHDockuHTEOKMGOzadXi",horizontalCenter:"_31t6tHRJ5s-5DcDLFTKh1m",verticalCenter:"_2hq7fkDXHxrxz2t7LLg4_9"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(34));t.default=function(e){var t,n=e.src,r=e.alt,u=e.containerRef,l=e.size,d=void 0===l?"medium":l,c=e.inverted,f=void 0!==c&&c;return a.default.createElement("img",{ref:u,className:o.default([i.default.icon,i.default[d],(t={},t[i.default.inverted]=f,t)]),crossOrigin:"anonymous","data-testid":"icon",alt:r,src:n})}},function(e,t,n){e.exports={icon:"uh8zkmQp5ybk5WJSla69D",small:"_9DICtqmQSnLPjm1XI7YVs",medium:"sJpxfYgiTz7ik6JOGu1wi",large:"_2rgucAH8Bnli-cmjz9i2C2",inverted:"I-eI5q8rd2bSp9B-FhUza"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(36);Object.defineProperty(t,"IconButton",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(4),u=r(n(37));t.default=function(e){var t,n=e.className,r=e.containerRef,l=e.src,d=e.alt,c=e.offsetSides,f=void 0===c?[]:c,s=e.onClick,p=void 0===s?function(){}:s,v=e.disabled,m=void 0!==v&&v,_=e.inverted,y=void 0!==_&&_,h=e.noShadow,b=void 0!==h&&h,O=e.noBorder,g=void 0!==O&&O,P=e.transparent,j=void 0!==P&&P,E=e.rounded,w=void 0!==E&&E,k=e.size,C=void 0===k?"medium":k,M=e.type,x=void 0===M?"button":M;return a.default.createElement("button",{ref:r,className:o.default([u.default.container,u.default[C],(t={},t[u.default.inverted]=y,t[u.default.rounded]=w,t[u.default.noShadow]=b,t[u.default.noBorder]=g,t[u.default.transparent]=j,t[u.default.topOffset]=w&&f.includes("top"),t[u.default.rightOffset]=w&&f.includes("right"),t[u.default.bottomOffset]=w&&f.includes("bottom"),t[u.default.leftOffset]=w&&f.includes("left"),t),n]),disabled:m,onClick:p,type:x,role:"button"},a.default.createElement(i.Icon,{src:l,alt:d,size:C,inverted:y}))}},function(e,t,n){e.exports={container:"_2MPuJ3ApvrAvrewjSWGAA2",small:"lOkoan7dbp-goDtJVuK7B",medium:"_3a9cWts_Y7x3pajk8umN3z",large:"_2aG6zXqTEKVcvBaaniCNBy",rounded:"_2JX034qUTCoTdWC2ppA487",topOffset:"_1wpC-WXgL06QKxtPzOwNRK",rightOffset:"LIzrQC7poQT9jURBqMDKh",bottomOffset:"_2i_w5ULkUK7LVw5hEO97Ew",leftOffset:"_38eKlTQTV1YlnEe1GmNtQk",inverted:"_2NkZ50rkA3eZCysY9FAp-e",noShadow:"_3Uy5HZdvkWf7bilT0wxwVe",noBorder:"_2F4Hy9lq5OCrEpPZPh5xAJ",transparent:"_2u7qTMeE9D5rtcsEcSoAY3"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(39);Object.defineProperty(t,"IconButtonLink",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=n(4),d=o(n(40));t.default=function(e){var t,n=e.as,o=e.containerRef,c=e.className,f=e.src,s=e.alt,p=e.inverted,v=void 0!==p&&p,m=e.noShadow,_=void 0!==m&&m,y=e.noBorder,h=void 0!==y&&y,b=e.transparent,O=void 0!==b&&b,g=e.rounded,P=void 0!==g&&g,j=e.offsetSides,E=void 0===j?[]:j,w=e.size,k=void 0===w?"medium":w,C=a(e,["as","containerRef","className","src","alt","inverted","noShadow","noBorder","transparent","rounded","offsetSides","size"]);return void 0===n&&(n="a"),i.default.createElement(n,r({ref:o,"data-testid":"icon-button-link",className:u.default([d.default.container,d.default[k],(t={},t[d.default.inverted]=v,t[d.default.rounded]=P,t[d.default.noShadow]=_,t[d.default.noBorder]=h,t[d.default.transparent]=O,t[d.default.topOffset]=P&&E.includes("top"),t[d.default.rightOffset]=P&&E.includes("right"),t[d.default.bottomOffset]=P&&E.includes("bottom"),t[d.default.leftOffset]=P&&E.includes("left"),t),c])},C),i.default.createElement(l.Icon,{src:f,alt:s,size:k,inverted:v}))}},function(e,t,n){e.exports={container:"_1uifmKNPDzdu5YDnhgwPQK",small:"pfHcYaew-HrHtTNuR4v7h",large:"_26Z9FH-CNPqf55ZRP1vnab",rounded:"_2q7WvROhNm3gsRIRaQQeaU",topOffset:"wZy_vulZkMbWSX0akcZHA",rightOffset:"_2jhhpm60_yPEfxQ-wazj-5",bottomOffset:"DnnrG7ZXmTIhmWUcs99m1",leftOffset:"_1YdCg7T6XjhmxwcjLNSEb-",inverted:"HV0R-lqwmyeqsS1Z8poZS",noShadow:"_1LPpt70Jjim6SfZe35G2kb",noBorder:"RkzSrGixM28JMat6IB5Lr",transparent:"_1KdXfY3Pk6tENYH81tWrps"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(42);Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.emptyImage=void 0;var u=o(n(0)),l=i(n(1)),d=i(n(43));t.emptyImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=",t.default=function(e){var n,r,a=e.src,o=e.alt,i=e.srcWidth,c=e.srcHeight,f=e.children,s=e.animation,p=e.containerRef,v=e.layout,m=void 0===v?"contain":v,_=u.useState(!1),y=_[0],h=_[1],b=u.useRef(null);return u.useEffect((function(){var e=new Image;return e.crossOrigin="anonymous",e.src=a,e.onload=function(){var e;null===(e=b.current)||void 0===e||e.setAttribute("src",a),h(!0)},function(){e.src="",delete e.onload,delete e.src,delete e.crossOrigin,e=null}}),[a]),f?u.default.createElement("div",{ref:p,className:l.default([d.default.container,d.default.hasOverlay])},u.default.createElement("img",{ref:b,className:l.default([d.default.image,d.default[m],(n={},n[d.default.fadeIn]="fadeIn"===s&&y,n[d.default.scaleUp]="scaleUp"===s&&y,n)]),crossOrigin:"anonymous","data-testid":"image",alt:o,src:t.emptyImage,width:i,height:c}),f&&u.default.createElement("div",{className:d.default.overlay},f)):u.default.createElement("img",{ref:b,className:l.default([d.default.image,d.default[m],(r={},r[d.default.fadeIn]="fadeIn"===s&&y,r[d.default.scaleUp]="scaleUp"===s&&y,r)]),crossOrigin:"anonymous","data-testid":"image",alt:o,src:t.emptyImage,width:i,height:c})}},function(e,t,n){e.exports={container:"_3zwln8xpkZwpTY5i6J7bOD",hasOverlay:"_2el8xWqqf3w4S3x0s2D9xl",overlay:"Eg3imfbXdI6U6rfRE0-qO",image:"t1897dfts_pqHzSnwmWBW",cover:"_1-R_HDjO6qNnywcNiS8byD",contain:"_3mDpCjHJ2g66e0w4R2EZkG",stretchHorizontally:"_3yEtH7cqpUlVFaGiWG129w",stretchVertically:"lyiBs6OBxvREnwIR0ls2C",fadeIn:"_2OKJw8Udt916IXmTlT986Y",fadeInAnimation:"NoOVrW466Htk6EpZ1wYiI",scaleUp:"_309VTqjVHpVJHuyAQa_aZi",scaleUpAnimation:"_3icbJre0PJ7MFnXQiCY_q6"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(45);Object.defineProperty(t,"ListView",{enumerable:!0,get:function(){return r.default}});var a=n(47);Object.defineProperty(t,"ListViewItem",{enumerable:!0,get:function(){return a.default}});var o=n(48);Object.defineProperty(t,"ListViewLinkItem",{enumerable:!0,get:function(){return o.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(46));t.default=function(e){var t=e.children,n=e.className,r=e.containerRef,u=e.header,l=e.headerActions;return a.default.createElement("div",{ref:r,className:o.default([i.default.container,n])},(u||l)&&a.default.createElement("div",{className:i.default.header},u&&a.default.createElement("h3",{className:i.default.headerLabel},u),l),a.default.createElement("ul",{className:i.default.list},t))}},function(e,t,n){e.exports={container:"CPHNd8osKjLvQDEQUErux",header:"_1e7hHSVo59e8yQnhc9B6Id",headerLabel:"_2iBL-SRETRThDGo8w_u4Sh",list:"_1w1W8E6_Hzfes3WZTYZaJK"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=n(7),u=r(n(6));t.default=function(e){var t=e.children,n=e.active,r=void 0!==n&&n,l=e.disabled,d=void 0!==l&&l,c=e.transparent,f=void 0!==c&&c,s=e.noPadding,p=void 0!==s&&s,v=e.size,m=void 0===v?"medium":v,_=e.align,y=void 0===_?"center":_,h=e.onClick,b=void 0===h?function(){}:h;return a.default.createElement("li",{className:o.default([u.default.listViewItem])},a.default.createElement(i.Button,{onClick:b,disabled:d,inverted:r,transparent:f,noPadding:p,align:y,size:m,stretchHorizontally:!0,noShadow:!0,noBorder:!0},t))}},function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(2),i=n.n(o),u=n(1),l=n(5),d=n(6),c=n.n(d);function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function s({children:e,active:t,transparent:n,noPadding:r,size:o,align:i,as:d,...s}){return a.a.createElement("li",{className:Object(u.default)([c.a.listViewItem])},a.a.createElement(l.ButtonLink,f({as:d,inverted:t,transparent:n,noPadding:r,align:i,size:o,stretchHorizontally:!0,noShadow:!0,noBorder:!0},s),e))}s.defaultProps={active:!1,transparent:!1,noPadding:!1,size:"medium",align:"center",as:"a"},s.propTypes={children:i.a.node.isRequired,as:i.a.elementType,active:i.a.bool,transparent:i.a.bool,noPadding:i.a.bool,align:i.a.oneOf(["left","center"]),size:i.a.string,onClick:i.a.func},t.default=s},function(e,t,n){"use strict";var r=n(50);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(52);Object.defineProperty(t,"Menu",{enumerable:!0,get:function(){return r.default}});var a=n(54);Object.defineProperty(t,"MenuContainer",{enumerable:!0,get:function(){return a.default}});var o=n(56);Object.defineProperty(t,"MenuItem",{enumerable:!0,get:function(){return o.default}});var i=n(58);Object.defineProperty(t,"MenuLinkItem",{enumerable:!0,get:function(){return i.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(53));t.default=function(e){var t,n=e.children,r=e.containerRef,u=e.className,l=e.isOpen,d=void 0===l||l,c=e.placement,f=void 0===c?{horizontal:"left",vertical:"bottom"}:c,s=e.header;return a.default.createElement("div",{ref:r,className:o.default([i.default.menu,i.default[f.horizontal],i.default[f.vertical],(t={},t[i.default.open]=d,t),u])},s&&d&&a.default.createElement("h3",{className:i.default.menuHeader},s),a.default.createElement("ul",null,d&&n))}},function(e,t,n){e.exports={menu:"_2ahi8JcnxGHrnZmD0xT9RL",top:"_3gpFTd1Fdx4EAfq170TGs7",right:"_1L5ATpM9GXy-SORFr0G6S4",left:"CYEJl39TkEfnKal3vtvz9",bottom:"_3zyp-NdTBeBDKvk26psZup",open:"_1iaaziZrVI_-E8D99WdNji",entrance:"_2fiKe4-X8PqcG4_9qeB3ZO",menuHeader:"_19nk1IMNS-u_YIQLlmYRtU"}},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=i(n(55));t.default=u.forwardRef((function(e,t){var n=e.children,r=e.className;return u.default.createElement("div",{ref:t,className:l.default([d.default.menuContainer,r])},n)}))},function(e,t,n){e.exports={menuContainer:"_2-SFwsppEuobBJkAwwQrFC"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(57));t.default=function(e){var t,n=e.children,r=e.className,u=e.onClick,l=e.isActive,d=void 0!==l&&l;return a.default.createElement("li",{className:o.default([i.default.menuItem,(t={},t[i.default.active]=d,t),r]),onClick:u},n)}},function(e,t,n){e.exports={menuItem:"_3gGczRJwrNenXTBLQnC29M",active:"_2j1ilUNkbFGSgulXSoHAdP"}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},a=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(0)),u=o(n(1)),l=o(n(59));t.default=function(e){var t=e.as,n=e.children,o=e.className,d=a(e,["as","children","className"]);return void 0===t&&(t="a"),i.default.createElement(t,r({"data-testid":"menu-link-item",className:u.default([l.default.menuLinkItem,o])},d),n)}},function(e,t,n){e.exports={menuLinkItem:"_2Dy1LTfScGZtSb_5Lud-lU",active:"_2Uws7bj3yejmn1k7XiyKfQ",menuItem:"_2lI7S2t5zWhQsvg_XnQ7--"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(61);Object.defineProperty(t,"Overlay",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(62));t.default=function(e){var t,n=e.children,r=e.containerRef,u=e.transparent,l=void 0!==u&&u,d=e.isFixed,c=void 0!==d&&d,f=e.onClick,s=void 0===f?function(){}:f;return a.default.createElement("div",{ref:r,"data-testid":"overlay",className:o.default([i.default.overlay,(t={},t[i.default.transparent]=l,t[i.default.fixed]=c,t)]),onClick:s},n)}},function(e,t,n){e.exports={overlay:"_2QgpyrDcUQyKYESC5DXXJr",transparent:"_28fVmoxp69OPr88Ew0zVeN",fixed:"_2sU3515EbFFgeP1yK2Zubz"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(64);Object.defineProperty(t,"TextInput",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(n(0)),l=i(n(1)),d=n(3),c=i(n(65));t.default=function(e){var t=e.label,n=e.onChange,r=e.placeholder,a=e.value,o=e.name,i=e.inputRef,f=e.size,s=void 0===f?"medium":f,p=e.autoFocus,v=void 0!==p&&p,m=e.type,_=void 0===m?"text":m,y=u.useCallback((function(e){return n(e.target.value)}),[n]),h=u.default.createElement("input",{"data-testid":"input",ref:i,className:l.default([c.default.textInput,c.default[s]]),onChange:i?void 0:y,placeholder:r,name:o,type:_,value:a,autoFocus:v});return t?u.default.createElement(d.Label,{value:t},h):u.default.createElement(u.default.Fragment,null,h)}},function(e,t,n){e.exports={textInput:"_2wfqOzWBoAn_K7goqvjXJe",small:"_1a4QOVJB0zW3Urf_5hqNjj",medium:"_3UJoe8nlpzhVTmC09TVso-",large:"_3DQ52Qd_1K4_VxxVv728SX"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(67);Object.defineProperty(t,"Toast",{enumerable:!0,get:function(){return r.default}});var a=n(69);Object.defineProperty(t,"ToastContainer",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(68));t.default=function(e){var t=e.children,n=e.containerRef,r=e.image,u=e.buttons,l=e.onClick,d=void 0===l?function(){}:l;return a.default.createElement("div",{ref:n,className:o.default([i.default.toast]),onClick:d,"data-testid":"toast"},r&&a.default.createElement("img",{"data-testid":"toast-image",className:i.default.toastImage,src:r.src,alt:r.alt}),a.default.createElement("div",{className:i.default.toastContent},t),a.default.createElement("div",{className:i.default.toastButtons},u))}},function(e,t,n){e.exports={toast:"_3sBs_ERXV3k0SQMGUy2Wj4",entrance:"_1_xjtLeUMoEXNA-qOEZhcx",toastContent:"_10lBETCU3UNFR8py1q1q-h",toastImage:"_3Ci0wpObk6oqf7dwkHsFWo",toastButtons:"FEWDnDsP-9A9JHG20qBS5"}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(70));t.default=function(e){var t=e.children;return a.default.createElement("div",{className:o.default([i.default.toastContainer]),"data-testid":"toast-container"},t)}},function(e,t,n){e.exports={toastContainer:"_3F8cJU1wmKmbrjidg-O3zp"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(72);Object.defineProperty(t,"Video",{enumerable:!0,get:function(){return r.default}})},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=r(n(0)),o=r(n(1)),i=r(n(73));t.default=function(e){var t=e.src,n=e.type,r=e.children,u=e.containerRef,l=e.muted,d=void 0===l||l,c=e.loop,f=void 0===c||c,s=e.autoPlay,p=void 0===s||s,v=e.layout,m=void 0===v?"contain":v;return r?a.default.createElement("div",{ref:u,className:o.default([i.default.container,i.default.hasOverlay])},a.default.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:o.default([i.default.video,i.default[m]]),muted:d,loop:f,autoPlay:p,playsInline:!0},a.default.createElement("source",{"data-testid":"source",src:t,type:n})),r&&a.default.createElement("div",{className:i.default.overlay},r)):a.default.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:o.default([i.default.video,i.default[m]]),muted:d,loop:f,autoPlay:p,playsInline:!0},a.default.createElement("source",{"data-testid":"source",src:t,type:n}))}},function(e,t,n){e.exports={container:"_2EQBfr5w8h1x1bq-2fp6wT",hasOverlay:"_3GRMpmGk_PqITcUv0Nfmt3",video:"_2tZfXkEhCkwAzfaG_BVn0B",cover:"_3OYHfbzaL3QHanWZBj8RxO",contain:"_3I_c7shcSrtG_FxvvU2IeE",stretchHorizontally:"_1Z7dL9uEd0Ksx3CkrZhsB8",stretchVertically:"_1zbrDYO0fYFJVc7xvsTYi6",overlay:"_2osXd7SkwF0Lh-2yiquYQM"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(75);Object.defineProperty(t,"useToggle",{enumerable:!0,get:function(){return r.default}});var a=n(76);Object.defineProperty(t,"useOutsideClick",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default=function(e){void 0===e&&(e=!1);var t=r.useState(e),n=t[0],a=t[1];return[n,r.useCallback((function(e){a("boolean"==typeof e?e:function(e){return!e})}),[n])]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default=function(e){var t=r.useRef();return r.useEffect((function(){var n=function(n){t.current&&!t.current.contains(n.target)&&e(n)};return document.addEventListener("click",n),document.addEventListener("touchstart",n),function(){document.removeEventListener("click",n),document.removeEventListener("touchstart",n)}}),[e]),t}},function(e,t,n){"use strict";n.r(t),n.d(t,"useHotkeys",(function(){return x})),n.d(t,"useIsHotkeyPressed",(function(){return M}));
2
2
  /*!
3
3
  * hotkeys-js v3.8.1
4
4
  * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies.
@@ -9,4 +9,4 @@
9
9
  * Licensed under the MIT license.
10
10
  */
11
11
  var r="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>0;function a(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on".concat(t),(function(){n(window.event)}))}function o(e,t){for(var n=t.slice(0,t.length-1),r=0;r<n.length;r++)n[r]=e[n[r].toLowerCase()];return n}function i(e){"string"!=typeof e&&(e="");for(var t=(e=e.replace(/\s/g,"")).split(","),n=t.lastIndexOf("");n>=0;)t[n-1]+=",",t.splice(n,1),n=t.lastIndexOf("");return t}for(var u={backspace:8,tab:9,clear:12,enter:13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,delete:46,ins:45,insert:45,home:36,end:35,pageup:33,pagedown:34,capslock:20,"⇪":20,",":188,".":190,"/":191,"`":192,"-":r?173:189,"=":r?61:187,";":r?59:186,"'":222,"[":219,"]":221,"\\":220},l={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,cmd:91,command:91},d={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey",shiftKey:16,ctrlKey:17,altKey:18,metaKey:91},c={16:!1,18:!1,17:!1,91:!1},f={},s=1;s<20;s++)u["f".concat(s)]=111+s;var p=[],v="all",m=[],_=function(e){return u[e.toLowerCase()]||l[e.toLowerCase()]||e.toUpperCase().charCodeAt(0)};function y(e){v=e||"all"}function h(){return v||"all"}var b=function(e){var t=e.key,n=e.scope,r=e.method,a=e.splitKey,u=void 0===a?"+":a;i(t).forEach((function(e){var t=e.split(u),a=t.length,i=t[a-1],d="*"===i?"*":_(i);if(f[d]){n||(n=h());var c=a>1?o(l,t):[];f[d]=f[d].map((function(e){return(!r||e.method===r)&&e.scope===n&&function(e,t){for(var n=e.length>=t.length?e:t,r=e.length>=t.length?t:e,a=!0,o=0;o<n.length;o++)-1===r.indexOf(n[o])&&(a=!1);return a}(e.mods,c)?{}:e}))}}))};function O(e,t,n){var r;if(t.scope===n||"all"===t.scope){for(var a in r=t.mods.length>0,c)Object.prototype.hasOwnProperty.call(c,a)&&(!c[a]&&t.mods.indexOf(+a)>-1||c[a]&&-1===t.mods.indexOf(+a))&&(r=!1);(0!==t.mods.length||c[16]||c[18]||c[17]||c[91])&&!r&&"*"!==t.shortcut||!1===t.method(e,t)&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0))}}function g(e){var t=f["*"],n=e.keyCode||e.which||e.charCode;if(P.filter.call(this,e)){if(93!==n&&224!==n||(n=91),-1===p.indexOf(n)&&229!==n&&p.push(n),["ctrlKey","altKey","shiftKey","metaKey"].forEach((function(t){var n=d[t];e[t]&&-1===p.indexOf(n)?p.push(n):!e[t]&&p.indexOf(n)>-1?p.splice(p.indexOf(n),1):"metaKey"===t&&e[t]&&3===p.length&&(e.ctrlKey||e.shiftKey||e.altKey||(p=p.slice(p.indexOf(n))))})),n in c){for(var r in c[n]=!0,l)l[r]===n&&(P[r]=!0);if(!t)return}for(var a in c)Object.prototype.hasOwnProperty.call(c,a)&&(c[a]=e[d[a]]);e.getModifierState&&(!e.altKey||e.ctrlKey)&&e.getModifierState("AltGraph")&&(-1===p.indexOf(17)&&p.push(17),-1===p.indexOf(18)&&p.push(18),c[17]=!0,c[18]=!0);var o=h();if(t)for(var i=0;i<t.length;i++)t[i].scope===o&&("keydown"===e.type&&t[i].keydown||"keyup"===e.type&&t[i].keyup)&&O(e,t[i],o);if(n in f)for(var u=0;u<f[n].length;u++)if(("keydown"===e.type&&f[n][u].keydown||"keyup"===e.type&&f[n][u].keyup)&&f[n][u].key){for(var s=f[n][u],v=s.splitKey,m=s.key.split(v),y=[],b=0;b<m.length;b++)y.push(_(m[b]));y.sort().join("")===p.sort().join("")&&O(e,s,o)}}}function P(e,t,n){p=[];var r=i(e),u=[],d="all",s=document,v=0,y=!1,h=!0,b="+";for(void 0===n&&"function"==typeof t&&(n=t),"[object Object]"===Object.prototype.toString.call(t)&&(t.scope&&(d=t.scope),t.element&&(s=t.element),t.keyup&&(y=t.keyup),void 0!==t.keydown&&(h=t.keydown),"string"==typeof t.splitKey&&(b=t.splitKey)),"string"==typeof t&&(d=t);v<r.length;v++)u=[],(e=r[v].split(b)).length>1&&(u=o(l,e)),(e="*"===(e=e[e.length-1])?"*":_(e))in f||(f[e]=[]),f[e].push({keyup:y,keydown:h,scope:d,mods:u,shortcut:r[v],method:n,key:r[v],splitKey:b});void 0!==s&&!function(e){return m.indexOf(e)>-1}(s)&&window&&(m.push(s),a(s,"keydown",(function(e){g(e)})),a(window,"focus",(function(){p=[]})),a(s,"keyup",(function(e){g(e),function(e){var t=e.keyCode||e.which||e.charCode,n=p.indexOf(t);if(n>=0&&p.splice(n,1),e.key&&"meta"===e.key.toLowerCase()&&p.splice(0,p.length),93!==t&&224!==t||(t=91),t in c)for(var r in c[t]=!1,l)l[r]===t&&(P[r]=!1)}(e)})))}var j={setScope:y,getScope:h,deleteScope:function(e,t){var n,r;for(var a in e||(e=h()),f)if(Object.prototype.hasOwnProperty.call(f,a))for(n=f[a],r=0;r<n.length;)n[r].scope===e?n.splice(r,1):r++;h()===e&&y(t||"all")},getPressedKeyCodes:function(){return p.slice(0)},isPressed:function(e){return"string"==typeof e&&(e=_(e)),-1!==p.indexOf(e)},filter:function(e){var t=e.target||e.srcElement,n=t.tagName,r=!0;return!t.isContentEditable&&("INPUT"!==n&&"TEXTAREA"!==n&&"SELECT"!==n||t.readOnly)||(r=!1),r},unbind:function(e){if(e){if(Array.isArray(e))e.forEach((function(e){e.key&&b(e)}));else if("object"==typeof e)e.key&&b(e);else if("string"==typeof e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var a=n[0],o=n[1];"function"==typeof a&&(o=a,a=""),b({key:e,scope:a,method:o,splitKey:"+"})}}else Object.keys(f).forEach((function(e){return delete f[e]}))}};for(var E in j)Object.prototype.hasOwnProperty.call(j,E)&&(P[E]=j[E]);if("undefined"!=typeof window){var w=window.hotkeys;P.noConflict=function(e){return e&&window.hotkeys===P&&(window.hotkeys=w),P},window.hotkeys=P}var k=P,C=n(0);function M(){return k.isPressed}function x(e,t,n,r){n instanceof Array&&(r=n,n=void 0);const{enableOnTags:a,filter:o}=n||{},i=Object(C.useRef)(null),u=Object(C.useCallback)((e,n)=>(null===i.current||document.activeElement===i.current)&&(t(e,n),!0),r?[i,...r]:[i]);return Object(C.useEffect)(()=>(n&&n.enableOnTags&&(k.filter=({target:e,srcElement:t})=>{const n=e&&e.tagName||t&&t.tagName;return Boolean(n&&a&&a.includes(n))}),o&&(k.filter=o),k(e,n||{},u),()=>k.unbind(e,u)),[u,n,a,o,e]),i}}]));
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xhc3NjYXQvc3JjL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xhYmVsL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb24vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzcz85YTRlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclN3YXRjaC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5tb2R1bGUuY3NzP2NkNDYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9CdXR0b25MaW5rLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9CdXR0b25MaW5rL0J1dHRvbkxpbmsubW9kdWxlLmNzcz8wODQxIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94L0NoZWNrYm94LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MYWJlbC9MYWJlbC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGFiZWwvTGFiZWwubW9kdWxlLmNzcz8xZjExIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94L0NoZWNrYm94Lm1vZHVsZS5jc3M/NGVlYiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclBpY2tlci9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclBpY2tlci9Db2xvclBpY2tlci50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29sb3JTd2F0Y2gvQ29sb3JTd2F0Y2gudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yU3dhdGNoL0NvbG9yU3dhdGNoLm1vZHVsZS5jc3M/MjNlYiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclBpY2tlci9Db2xvclBpY2tlci5tb2R1bGUuY3NzP2UxODgiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29uZmlybWF0aW9uTW9kYWwvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01vZGFsL01vZGFsLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5tb2R1bGUuY3NzPzBlZGYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwubW9kdWxlLmNzcz8yN2IzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0Zsb2F0aW5nUGFuZWwvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvRmxvYXRpbmdQYW5lbC9GbG9hdGluZ1BhbmVsLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9GbG9hdGluZ1BhbmVsL0Zsb2F0aW5nUGFuZWwubW9kdWxlLmNzcz83YWJmIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb24vSWNvbi50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbi9JY29uLm1vZHVsZS5jc3M/OWI5MyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b24vSWNvbkJ1dHRvbi50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbkJ1dHRvbi9JY29uQnV0dG9uLm1vZHVsZS5jc3M/ZDI4ZCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uTGluay9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uTGluay9JY29uQnV0dG9uTGluay50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbkJ1dHRvbkxpbmsvSWNvbkJ1dHRvbkxpbmsubW9kdWxlLmNzcz9jYzM3Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ltYWdlL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ltYWdlL0ltYWdlLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JbWFnZS9JbWFnZS5tb2R1bGUuY3NzPzk1YTciLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXcudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xpc3RWaWV3L0xpc3RWaWV3Lm1vZHVsZS5jc3M/NDY0ZSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlld0l0ZW0udHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xpc3RWaWV3L0xpc3RWaWV3TGlua0l0ZW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51Lm1vZHVsZS5jc3M/MzcwOSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVDb250YWluZXIudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUNvbnRhaW5lci5tb2R1bGUuY3NzPzk2ZDIiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51SXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51SXRlbS5tb2R1bGUuY3NzPzUwNDkiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51TGlua0l0ZW0udHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUxpbmtJdGVtLm1vZHVsZS5jc3M/MDQyNyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9PdmVybGF5L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL092ZXJsYXkvT3ZlcmxheS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvT3ZlcmxheS9PdmVybGF5Lm1vZHVsZS5jc3M/MjFjNSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9UZXh0SW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVGV4dElucHV0L1RleHRJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVGV4dElucHV0L1RleHRJbnB1dC5tb2R1bGUuY3NzP2NkMzYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9hc3QvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9hc3QvVG9hc3QudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L1RvYXN0Lm1vZHVsZS5jc3M/Y2Y2MSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2FzdC9Ub2FzdENvbnRhaW5lci50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9hc3QvVG9hc3RDb250YWluZXIubW9kdWxlLmNzcz85YTM2Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1ZpZGVvL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1ZpZGVvL1ZpZGVvLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WaWRlby9WaWRlby5tb2R1bGUuY3NzP2UyMjMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2hvb2tzL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9ob29rcy91c2VUb2dnbGUudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2hvb2tzL3VzZU91dHNpZGVDbGljay50cyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaG90a2V5cy1qcy9kaXN0L2hvdGtleXMuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ob3RrZXlzLWhvb2svZGlzdC13ZWIvaW5kZXguanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJyZXF1aXJlIiwiaXNBcnJheSIsIkFycmF5IiwiY2MiLCJvYmoiLCJvdXQiLCJ0bXAiLCJrIiwibGVuZ3RoIiwiZGVmYXVsdCIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwib25DbGljayIsImNvbnRhaW5lclJlZiIsImRpc2FibGVkIiwiaW52ZXJ0ZWQiLCJyb3VuZGVkIiwibm9TaGFkb3ciLCJub1BhZGRpbmciLCJub0JvcmRlciIsInRyYW5zcGFyZW50Iiwic3RyZXRjaEhvcml6b250YWxseSIsInN0cmV0Y2hWZXJ0aWNhbGx5Iiwib2Zmc2V0U2lkZXMiLCJhbGlnbiIsInNpemUiLCJ0eXBlIiwicmVmIiwiY29udGFpbmVyIiwibGVmdE9mZnNldCIsImluY2x1ZGVzIiwicmlnaHRPZmZzZXQiLCJyb2xlIiwiY29udGVudCIsIkNvbXBvbmVudCIsInByb3BzIiwibGFiZWwiLCJvbkNoYW5nZSIsInBsYWNlaG9sZGVyIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJhdXRvRm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJ1c2VDYWxsYmFjayIsImUiLCJ0YXJnZXQiLCJMYWJlbCIsImlucHV0UmVmIiwiaW5wdXQiLCJjb2xvcnMiLCJvblNlbGVjdCIsInNlbGVjdGVkQ29sb3IiLCJkaXJlY3Rpb24iLCJjb2xvclBpY2tlciIsIm1hcCIsImNvbG9yIiwiQ29sb3JTd2F0Y2giLCJpc1NlbGVjdGVkIiwiY29sb3JTd2F0Y2giLCJzZWxlY3RlZCIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiaGV4Q29kZSIsInNyT25seSIsIkNvbmZpcm1hdGlvbk1vZGFsIiwiaGVhZGVyIiwiaXNPcGVuIiwiYnV0dG9uc0xlZnQiLCJidXR0b25zUmlnaHQiLCJvbkNsb3NlIiwiTW9kYWwiLCJtb2RhbEhlYWRlciIsIm1vZGFsQ29udGVudCIsIm1vZGFsQnV0dG9uc0NvbnRhaW5lciIsIm1vZGFsQnV0dG9ucyIsImRpc3BsYXlOYW1lIiwiYnV0dG9uIiwidXNlSG90a2V5cyIsImhhbmRsZU92ZXJsYXlDbGljayIsIm92ZXJsYXkiLCJtb2RhbCIsIm1vZGFsQnV0dG9uIiwibGF5b3V0IiwicGxhY2VtZW50IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwicGFyZW50IiwiaG9yaXpvbnRhbFBsYWNlbWVudCIsInZlcnRpY2FsUGxhY2VtZW50IiwiZml4ZWQiLCJzcmMiLCJhbHQiLCJpY29uIiwiY3Jvc3NPcmlnaW4iLCJ0b3BPZmZzZXQiLCJib3R0b21PZmZzZXQiLCJJY29uIiwiZW1wdHlJbWFnZSIsInNyY1dpZHRoIiwic3JjSGVpZ2h0IiwiYW5pbWF0aW9uIiwidXNlU3RhdGUiLCJpc0xvYWRlZCIsInNldElzTG9hZGVkIiwiaW1hZ2VSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJpbWFnZSIsIkltYWdlIiwib25sb2FkIiwiY3VycmVudCIsInNldEF0dHJpYnV0ZSIsImhhc092ZXJsYXkiLCJmYWRlSW4iLCJzY2FsZVVwIiwid2lkdGgiLCJoZWlnaHQiLCJoZWFkZXJBY3Rpb25zIiwiaGVhZGVyTGFiZWwiLCJsaXN0IiwiYWN0aXZlIiwibGlzdFZpZXdJdGVtIiwiQnV0dG9uIiwiTGlzdFZpZXdMaW5rSXRlbSIsImFzIiwiY2xhc3NjYXQiLCJzdHlsZXMiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJub2RlIiwiaXNSZXF1aXJlZCIsImVsZW1lbnRUeXBlIiwiYm9vbCIsIm9uZU9mIiwic3RyaW5nIiwiZnVuYyIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwiZ2V0U2hpbSIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJudW1iZXIiLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIm1lbnUiLCJvcGVuIiwibWVudUhlYWRlciIsImZvcndhcmRSZWYiLCJtZW51Q29udGFpbmVyIiwiaXNBY3RpdmUiLCJtZW51SXRlbSIsIm1lbnVMaW5rSXRlbSIsImlzRml4ZWQiLCJpbnB1dEVsZW1lbnQiLCJ0ZXh0SW5wdXQiLCJ1bmRlZmluZWQiLCJidXR0b25zIiwidG9hc3QiLCJ0b2FzdEltYWdlIiwidG9hc3RDb250ZW50IiwidG9hc3RCdXR0b25zIiwidG9hc3RDb250YWluZXIiLCJtdXRlZCIsImxvb3AiLCJhdXRvUGxheSIsInZpZGVvIiwicGxheXNJbmxpbmUiLCJpbml0aWFsVmFsdWUiLCJzZXRWYWx1ZSIsIm5ld1ZhbHVlIiwicHJldlZhbHVlIiwiY2FsbGJhY2siLCJoYW5kbGVDbGljayIsImV2ZW50IiwiY29udGFpbnMiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaXNmZiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsImFkZEV2ZW50IiwibWV0aG9kIiwiYXR0YWNoRXZlbnQiLCJjb25jYXQiLCJ3aW5kb3ciLCJnZXRNb2RzIiwibW9kaWZpZXIiLCJtb2RzIiwic2xpY2UiLCJnZXRLZXlzIiwia2V5cyIsInJlcGxhY2UiLCJzcGxpdCIsImluZGV4IiwibGFzdEluZGV4T2YiLCJzcGxpY2UiLCJfa2V5TWFwIiwiYmFja3NwYWNlIiwidGFiIiwiY2xlYXIiLCJlbnRlciIsInJldHVybiIsImVzYyIsImVzY2FwZSIsInNwYWNlIiwibGVmdCIsInVwIiwicmlnaHQiLCJkb3duIiwiZGVsIiwiZGVsZXRlIiwiaW5zIiwiaW5zZXJ0IiwiaG9tZSIsImVuZCIsInBhZ2V1cCIsInBhZ2Vkb3duIiwiY2Fwc2xvY2siLCInIiwiX21vZGlmaWVyIiwic2hpZnQiLCJvcHRpb24iLCJjdHJsIiwiY29udHJvbCIsImNtZCIsImNvbW1hbmQiLCJtb2RpZmllck1hcCIsIjE2IiwiMTgiLCIxNyIsIjkxIiwic2hpZnRLZXkiLCJjdHJsS2V5IiwiYWx0S2V5IiwibWV0YUtleSIsIl9tb2RzIiwiX2hhbmRsZXJzIiwiX2Rvd25LZXlzIiwiX3Njb3BlIiwiZWxlbWVudEhhc0JpbmRFdmVudCIsImNvZGUiLCJ4IiwidG9VcHBlckNhc2UiLCJjaGFyQ29kZUF0Iiwic2V0U2NvcGUiLCJzY29wZSIsImdldFNjb3BlIiwiZWFjaFVuYmluZCIsIl9yZWYiLCJfcmVmJHNwbGl0S2V5Iiwic3BsaXRLZXkiLCJmb3JFYWNoIiwib3JpZ2luS2V5IiwidW5iaW5kS2V5cyIsImxlbiIsImxhc3RLZXkiLCJrZXlDb2RlIiwicmVjb3JkIiwiYTEiLCJhMiIsImFycjEiLCJhcnIyIiwiaXNJbmRleCIsImNvbXBhcmVBcnJheSIsImV2ZW50SGFuZGxlciIsImhhbmRsZXIiLCJtb2RpZmllcnNNYXRjaCIsInkiLCJzaG9ydGN1dCIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJzdG9wUHJvcGFnYXRpb24iLCJjYW5jZWxCdWJibGUiLCJkaXNwYXRjaCIsImFzdGVyaXNrIiwid2hpY2giLCJjaGFyQ29kZSIsImhvdGtleXMiLCJmaWx0ZXIiLCJ0aGlzIiwicHVzaCIsImtleU5hbWUiLCJrZXlOdW0iLCJnZXRNb2RpZmllclN0YXRlIiwia2V5ZG93biIsImtleXVwIiwiX2kiLCJrZXlTaG9ydGN1dCIsIl9kb3duS2V5c0N1cnJlbnQiLCJhIiwic29ydCIsImpvaW4iLCJ0b1N0cmluZyIsImlzRWxlbWVudEJpbmQiLCJjbGVhck1vZGlmaWVyIiwiX2FwaSIsImRlbGV0ZVNjb3BlIiwibmV3U2NvcGUiLCJoYW5kbGVycyIsImdldFByZXNzZWRLZXlDb2RlcyIsImlzUHJlc3NlZCIsInNyY0VsZW1lbnQiLCJ0YWdOYW1lIiwiZmxhZyIsImlzQ29udGVudEVkaXRhYmxlIiwicmVhZE9ubHkiLCJ1bmJpbmQiLCJrZXlzSW5mbyIsImluZm8iLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJfaG90a2V5cyIsIm5vQ29uZmxpY3QiLCJkZWVwIiwidXNlSXNIb3RrZXlQcmVzc2VkIiwib3B0aW9ucyIsImRlcHMiLCJlbmFibGVPblRhZ3MiLCJtZW1vaXNlZENhbGxiYWNrIiwia2V5Ym9hcmRFdmVudCIsImhvdGtleXNFdmVudCIsImFjdGl2ZUVsZW1lbnQiLCJ0YXJnZXRUYWdOYW1lIiwiQm9vbGVhbiJdLCJtYXBwaW5ncyI6IjZEQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQTBEZixPQXJEQUYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVBQW9CVSxFQUFJLFNBQVNSLEVBQVNTLEVBQU1DLEdBQzNDWixFQUFvQmEsRUFBRVgsRUFBU1MsSUFDbENHLE9BQU9DLGVBQWViLEVBQVNTLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVosRUFBb0JrQixFQUFJLFNBQVNoQixHQUNYLG9CQUFYaUIsUUFBMEJBLE9BQU9DLGFBQzFDTixPQUFPQyxlQUFlYixFQUFTaUIs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QUFRRCxHQUFpQkwsR0FBZ0JBLEVBQWF2VCxTQUFTNFQsTUFHMUU5QyxJQUNBLEVBQVFBLE9BQVNBLEdBQ3JCLEVBQVF4RixFQUFNK0gsR0FBVyxHQUFJRyxHQUN0QixJQUFNLEVBQVFkLE9BQU9wSCxFQUFNa0ksSUFDbkMsQ0FBQ0EsRUFBa0JILEVBQVNFLEVBQWN6QyxFQUFReEYsSUFDOUN6TCIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxMCk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJ2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2Mob2JqKSB7XG4gIHZhciBvdXQgPSBcIlwiXG5cbiAgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJudW1iZXJcIikgcmV0dXJuIG9iaiB8fCBcIlwiXG5cbiAgaWYgKGlzQXJyYXkob2JqKSlcbiAgICBmb3IgKHZhciBrID0gMCwgdG1wOyBrIDwgb2JqLmxlbmd0aDsgaysrKSB7XG4gICAgICBpZiAoKHRtcCA9IGNjKG9ialtrXSkpICE9PSBcIlwiKSB7XG4gICAgICAgIG91dCArPSAob3V0ICYmIFwiIFwiKSArIHRtcFxuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvciAodmFyIGsgaW4gb2JqKSB7XG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGspICYmIG9ialtrXSkgb3V0ICs9IChvdXQgJiYgXCIgXCIpICsga1xuICAgIH1cblxuICByZXR1cm4gb3V0XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIExhYmVsIH0gZnJvbSBcIi4vTGFiZWxcIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvbiB9IGZyb20gXCIuL0ljb25cIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQnV0dG9uTGluayB9IGZyb20gXCIuL0J1dHRvbkxpbmtcIjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJsaXN0Vmlld0l0ZW1cIjpcIl8yTGdqcUFCd2pIdHBiR3prUVFrcWlRXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQnV0dG9uIH0gZnJvbSBcIi4vQnV0dG9uXCI7XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIENvbG9yU3dhdGNoIH0gZnJvbSBcIi4vQ29sb3JTd2F0Y2hcIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgTW9kYWwgfSBmcm9tIFwiLi9Nb2RhbFwiO1xuIiwiZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9CdXR0b25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQnV0dG9uTGlua1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Db2xvclBpY2tlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Db2xvclN3YXRjaFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9GbG9hdGluZ1BhbmVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0ljb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvSWNvbkJ1dHRvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9JY29uQnV0dG9uTGlua1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9JbWFnZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9MaXN0Vmlld1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9NZW51XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL01vZGFsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL092ZXJsYXlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvTGFiZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dElucHV0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL1RvYXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL1ZpZGVvXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ob29rc1wiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQnV0dG9uLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBCdXR0b25Qcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGludmVydGVkPzogYm9vbGVhbjtcbiAgcm91bmRlZD86IGJvb2xlYW47XG4gIG5vU2hhZG93PzogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgbm9Cb3JkZXI/OiBib29sZWFuO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIHN0cmV0Y2hIb3Jpem9udGFsbHk/OiBib29sZWFuO1xuICBzdHJldGNoVmVydGljYWxseT86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoZXZlbnQ6IFJlYWN0LlN5bnRoZXRpY0V2ZW50KSA9PiB2b2lkO1xuICBzaXplPzogU2l6ZTtcbiAgdHlwZT86IFwic3VibWl0XCIgfCBcInJlc2V0XCIgfCBcImJ1dHRvblwiO1xuICBhbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIjtcbiAgb2Zmc2V0U2lkZXM/OiBBcnJheTxcImxlZnRcIiB8IFwicmlnaHRcIj47XG59O1xuXG5mdW5jdGlvbiBCdXR0b24oe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvbkNsaWNrLFxuICBjb250YWluZXJSZWYsXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIHN0cmV0Y2hIb3Jpem9udGFsbHkgPSBmYWxzZSxcbiAgc3RyZXRjaFZlcnRpY2FsbHkgPSBmYWxzZSxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgYWxpZ24gPSBcImNlbnRlclwiLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgdHlwZSxcbn06IEJ1dHRvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgc3R5bGVzW3NpemVdLFxuICAgICAgICBzdHlsZXNbYWxpZ25dLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5pbnZlcnRlZF06IGludmVydGVkLFxuICAgICAgICAgIFtzdHlsZXMucm91bmRlZF06IHJvdW5kZWQsXG4gICAgICAgICAgW3N0eWxlcy5ub1NoYWRvd106IG5vU2hhZG93LFxuICAgICAgICAgIFtzdHlsZXMubm9QYWRkaW5nXTogbm9QYWRkaW5nLFxuICAgICAgICAgIFtzdHlsZXMubm9Cb3JkZXJdOiBub0JvcmRlcixcbiAgICAgICAgICBbc3R5bGVzLnRyYW5zcGFyZW50XTogdHJhbnNwYXJlbnQsXG4gICAgICAgICAgW3N0eWxlcy5zdHJldGNoSG9yaXpvbnRhbGx5XTogc3RyZXRjaEhvcml6b250YWxseSxcbiAgICAgICAgICBbc3R5bGVzLnN0cmV0Y2hWZXJ0aWNhbGx5XTogc3RyZXRjaFZlcnRpY2FsbHksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIHt0eXBlb2YgY2hpbGRyZW4gIT09IFwic3RyaW5nXCIgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4gICAgICBjaGlsZHJlbi5sZW5ndGggPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY29udGVudH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgKSA6IChcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgICl9XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIk05X2VnRUM4bXN1MTM1b1BHVmRJZlwiLFwibGVmdFwiOlwiUlNSYlRnOFljNC1zOGs2cVVfdkNnXCIsXCJzbWFsbFwiOlwiXzFiTlFoYlp3TEE4RXJMbXdkUWl0SmVcIixcImxhcmdlXCI6XCJfMkR3TEZELTRnRHo5SEVBQWl3V0pQcVwiLFwiaW52ZXJ0ZWRcIjpcIl8zMUNmbVRVWXBFaDFoWnZjdFE5bEs0XCIsXCJyb3VuZGVkXCI6XCJfMmJxMzFxS0Q3QjZyNkNUQ09MM2RyV1wiLFwicmlnaHRPZmZzZXRcIjpcIl8yZVVDV1FNRVRPZ2lYdWliN1hmVGhaXCIsXCJsZWZ0T2Zmc2V0XCI6XCJHOG9fT01EVUZzRVExeXRVN29VWUdcIixcIm5vU2hhZG93XCI6XCJfMnZrbmhVRkFJR21qWHM3dGdrQUM3SVwiLFwibm9Cb3JkZXJcIjpcIl8ycDBHcGRtUEtJRkNVZXM1ODRZSGVWXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzh2TWxTUkhfOUhvUkdKaDhTd2thXCIsXCJzdHJldGNoSG9yaXpvbnRhbGx5XCI6XCJuWjlyT1p3ekdYVkkzYXlSZ0EzUUNcIixcInN0cmV0Y2hWZXJ0aWNhbGx5XCI6XCJfMXk4aWZiOTVzcFRMV0dBbXNidzFSMlwiLFwibm9QYWRkaW5nXCI6XCJfM2NPNDlKRUxOS3RHeWFGeFJsc2h5T1wiLFwiY29udGVudFwiOlwibzhkN1lvVDgzdW1lUFBTRnpLMzFZXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlYWN0VHlwZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQnV0dG9uTGluay5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgT2Zmc2V0U2lkZSA9IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuXG50eXBlIEJ1dHRvbkxpbmtQcm9wcyA9XG4gIHwge1xuICAgICAgYXM/OiBSZWFjdFR5cGU7XG4gICAgICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICAgICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgICAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxFbGVtZW50PjtcbiAgICAgIGludmVydGVkPzogYm9vbGVhbjtcbiAgICAgIHJvdW5kZWQ/OiBib29sZWFuO1xuICAgICAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICAgICAgbm9TaGFkb3c/OiBib29sZWFuO1xuICAgICAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgICAgIG5vQm9yZGVyPzogYm9vbGVhbjtcbiAgICAgIHN0cmV0Y2hIb3Jpem9udGFsbHk/OiBib29sZWFuO1xuICAgICAgc3RyZXRjaFZlcnRpY2FsbHk/OiBib29sZWFuO1xuICAgICAgc2l6ZT86IFNpemU7XG4gICAgICBvZmZzZXRTaWRlcz86IEFycmF5PE9mZnNldFNpZGU+O1xuICAgICAgYWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCI7XG4gICAgfVxuICB8IGFueTtcblxuZnVuY3Rpb24gQnV0dG9uTGluayh7XG4gIGFzOiBDb21wb25lbnQsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHNpemUsXG4gIGNvbnRhaW5lclJlZixcbiAgaW52ZXJ0ZWQgPSBmYWxzZSxcbiAgcm91bmRlZCA9IGZhbHNlLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICBub1NoYWRvdyA9IGZhbHNlLFxuICBub1BhZGRpbmcgPSBmYWxzZSxcbiAgbm9Cb3JkZXIgPSBmYWxzZSxcbiAgc3RyZXRjaEhvcml6b250YWxseSA9IGZhbHNlLFxuICBzdHJldGNoVmVydGljYWxseSA9IGZhbHNlLFxuICBvZmZzZXRTaWRlcyA9IFtdLFxuICBhbGlnbiA9IFwiY2VudGVyXCIsXG4gIC4uLnByb3BzXG59OiBCdXR0b25MaW5rUHJvcHMpIHtcbiAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBDb21wb25lbnQgPSBcImFcIjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbXBvbmVudFxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBkYXRhLXRlc3RpZD1cImJ1dHRvbi1saW5rXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHN0eWxlc1thbGlnbl0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQsXG4gICAgICAgICAgW3N0eWxlcy5yb3VuZGVkXTogcm91bmRlZCxcbiAgICAgICAgICBbc3R5bGVzLm5vU2hhZG93XTogbm9TaGFkb3csXG4gICAgICAgICAgW3N0eWxlcy5ub1BhZGRpbmddOiBub1BhZGRpbmcsXG4gICAgICAgICAgW3N0eWxlcy5ub0JvcmRlcl06IG5vQm9yZGVyLFxuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLnN0cmV0Y2hIb3Jpem9udGFsbHldOiBzdHJldGNoSG9yaXpvbnRhbGx5LFxuICAgICAgICAgIFtzdHlsZXMuc3RyZXRjaFZlcnRpY2FsbHldOiBzdHJldGNoVmVydGljYWxseSxcbiAgICAgICAgICBbc3R5bGVzLmxlZnRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwibGVmdFwiKSxcbiAgICAgICAgICBbc3R5bGVzLnJpZ2h0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInJpZ2h0XCIpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICBdKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7dHlwZW9mIGNoaWxkcmVuICE9PSBcInN0cmluZ1wiICYmXG4gICAgICBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJlxuICAgICAgY2hpbGRyZW4ubGVuZ3RoID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRlbnR9PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgICkgOiAoXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICApfVxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdXR0b25MaW5rO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzNlVkJnbWtHNmhqVm9rbTVYeTRVTVFcIixcImxlZnRcIjpcIl8zRjZoTUVRa0pneXdVa3QxZndtVHN5XCIsXCJzbWFsbFwiOlwiXzhJOWZobnpiTXZDcmw1S1BqOWYwXCIsXCJtZWRpdW1cIjpcImNzajRQS1FnZFBCZUY3UmQ1Wi1XUVwiLFwibGFyZ2VcIjpcIl8zX1N3cW1EV09Hdjg3N2lIQUNuSnBDXCIsXCJpbnZlcnRlZFwiOlwiXzF4T2EzQ0JSSHpQQ1JXTnNpSjY1YUNcIixcInJvdW5kZWRcIjpcIl8zVUdsT0l0ektva1ZnMHdHSDBlSWxYXCIsXCJyaWdodE9mZnNldFwiOlwiXzEzdFBzcDZkZkExVHdiMU1NSFJpR1RcIixcImxlZnRPZmZzZXRcIjpcIk5JNW42YkVWUkNRUHk2QU9Bc1ExcVwiLFwibm9TaGFkb3dcIjpcImdJWTlpdXZDMlZXeGN2d3dDbWFKSlwiLFwidHJhbnNwYXJlbnRcIjpcIl8zWGZsaDNRMUFablRPRDBjdHF1STZ3XCIsXCJzdHJldGNoSG9yaXpvbnRhbGx5XCI6XCJfMkZiUkRFR1NfN2VNVWNKMFZpT0JVMFwiLFwic3RyZXRjaFZlcnRpY2FsbHlcIjpcIl8xclBtLXQ1Wld3clMtTDlsN3o2NmpiXCIsXCJub1BhZGRpbmdcIjpcIl8zSjhEZWFMcTVpdzNBcDdxS0prUDlCXCIsXCJub0JvcmRlclwiOlwiXzNjRVFzLUtfbVNoRk5EZ0RQMzJXZDZcIixcImNvbnRlbnRcIjpcIl8xVlR5ZlR3VmxvQWNad1lDWnlzbHNKXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQ2hlY2tib3ggfSBmcm9tIFwiLi9DaGVja2JveFwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi4vTGFiZWxcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQ2hlY2tib3gubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgU2l6ZSwgVGV4dElucHV0VHlwZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG50eXBlIENoZWNrYm94UHJvcHMgPSB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBvbkNoYW5nZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2hlY2tlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgbmFtZT86IHN0cmluZztcbiAgc2l6ZT86IFNpemU7XG4gIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xufTtcblxuZnVuY3Rpb24gQ2hlY2tib3goe1xuICBsYWJlbCxcbiAgb25DaGFuZ2UsXG4gIHBsYWNlaG9sZGVyLFxuICBjaGVja2VkLFxuICBkaXNhYmxlZCxcbiAgbmFtZSxcbiAgaW5kZXRlcm1pbmF0ZSxcbiAgc2l6ZSA9IFwic21hbGxcIixcbiAgYXV0b0ZvY3VzID0gZmFsc2UsXG59OiBDaGVja2JveFByb3BzKSB7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5Gb3JtRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+XG4gICAgICBvbkNoYW5nZSgoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZCksXG4gICAgW29uQ2hhbmdlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPExhYmVsIHZhbHVlPXtsYWJlbH0+XG4gICAgICA8aW5wdXRcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjaGVja2JveFwiXG4gICAgICAgIHJlZj17KGlucHV0UmVmKSA9PiB7XG4gICAgICAgICAgaWYgKGlucHV0UmVmKSB7XG4gICAgICAgICAgICBpbnB1dFJlZi5pbmRldGVybWluYXRlID0gaW5kZXRlcm1pbmF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmlucHV0LCBzdHlsZXNbc2l6ZV1dKX1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBhdXRvRm9jdXM9e2F1dG9Gb2N1c31cbiAgICAgIC8+XG4gICAgPC9MYWJlbD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVmT2JqZWN0LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MYWJlbC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTGFiZWxJbnB1dFByb3BzID0ge1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxMYWJlbEVsZW1lbnQ+O1xuICB2YWx1ZTogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gTGFiZWwoeyBjaGlsZHJlbiwgdmFsdWUsIGNvbnRhaW5lclJlZiB9OiBMYWJlbElucHV0UHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8bGFiZWwgcmVmPXtjb250YWluZXJSZWZ9IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRhaW5lcn0+XG4gICAgICB7dmFsdWV9XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9sYWJlbD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGFiZWw7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJfMnFsMjdibGxzUVgzOVIzRTJ1UnFnLVwifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiaW5wdXRcIjpcInBPQmR5QUN0ZHlKRzZNSV8tTjRzNlwiLFwic21hbGxcIjpcIl8yQmN6SHpnTnphRkFRa3N1TjEzUXVcIixcIm1lZGl1bVwiOlwiXzNQczFRWDFJdGw5M0pMX0g1T3BuWnlcIixcImxhcmdlXCI6XCJfM3ZIVU03R2hucVFoTWtJMDFnbzZQblwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIENvbG9yUGlja2VyIH0gZnJvbSBcIi4vQ29sb3JQaWNrZXJcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgQ29sb3JTd2F0Y2ggfSBmcm9tIFwiLi4vQ29sb3JTd2F0Y2hcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQ29sb3JQaWNrZXIubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBDb2xvclBpY2tlclByb3BzID0ge1xuICBjb2xvcnM6IENvbG9yW107XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gIGRpcmVjdGlvbj86IFwiaG9yaXpvbnRhbFwiIHwgXCJ2ZXJ0aWNhbFwiO1xuICBvblNlbGVjdDogKGNvbG9yOiBDb2xvcikgPT4gdm9pZDtcbiAgc2VsZWN0ZWRDb2xvcj86IENvbG9yO1xufTtcblxuZnVuY3Rpb24gQ29sb3JQaWNrZXIoe1xuICBjb2xvcnMsXG4gIGNvbnRhaW5lclJlZixcbiAgb25TZWxlY3QsXG4gIHNlbGVjdGVkQ29sb3IsXG4gIGRpcmVjdGlvbiA9IFwidmVydGljYWxcIixcbn06IENvbG9yUGlja2VyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb2xvclBpY2tlciwgc3R5bGVzW2RpcmVjdGlvbl1dKX1cbiAgICA+XG4gICAgICB7Y29sb3JzLm1hcCgoY29sb3I6IENvbG9yKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPENvbG9yU3dhdGNoXG4gICAgICAgICAgICBrZXk9e2NvbG9yLmtleX1cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e2NvbG9yID09PSBzZWxlY3RlZENvbG9yfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25TZWxlY3QoY29sb3IpfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sb3JQaWNrZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQ29sb3JTd2F0Y2gubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBDb2xvclN3YXRjaFByb3BzID0ge1xuICBjb2xvcjogQ29sb3I7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudD47XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xufTtcblxuZnVuY3Rpb24gQ29sb3JTd2F0Y2goe1xuICBjb2xvcixcbiAgY29udGFpbmVyUmVmLFxuICBvbkNsaWNrLFxuICBpc1NlbGVjdGVkID0gZmFsc2UsXG59OiBDb2xvclN3YXRjaFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbG9yU3dhdGNoLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5zZWxlY3RlZF06IGlzU2VsZWN0ZWQsXG4gICAgICAgIH0sXG4gICAgICBdKX1cbiAgICAgIGRhdGEtdGVzdGlkPVwiY29sb3Itc3dhdGNoXCJcbiAgICAgIGRpc2FibGVkPXtpc1NlbGVjdGVkfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogY29sb3IuaGV4Q29kZSB9fVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNyT25seX0+e2BTZWxlY3QgJHtjb2xvci5sYWJlbH0gY29sb3JgfTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sb3JTd2F0Y2g7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29sb3JTd2F0Y2hcIjpcIl8xM3NzMXhzTU5penZFZ1BfaHhFVjhCXCIsXCJzZWxlY3RlZFwiOlwiTDZmQXQ2UlpZel96M3dQYmpaRXhIXCIsXCJzck9ubHlcIjpcIl8zdko1bXhwemFZc0theGYtOHRCMzF4XCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb2xvclBpY2tlclwiOlwiXzMxRndIX25XcjcyazNwdWdBcEp1YjlcIixcImhvcml6b250YWxcIjpcIlFhLUJwdVRUMmt4cG1WX0FRZ0NqSFwiLFwidmVydGljYWxcIjpcIl8yeDRTQW5ib3B5Wm1reWNXTEMwRVhrXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQ29uZmlybWF0aW9uTW9kYWwgfSBmcm9tIFwiLi9Db25maXJtYXRpb25Nb2RhbFwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCwgUmVhY3ROb2RlLCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgTW9kYWwgfSBmcm9tIFwiLi4vTW9kYWxcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQ29uZmlybWF0aW9uTW9kYWwubW9kdWxlLmNzc1wiO1xuXG50eXBlIENvbmZpcm1hdGlvbk1vZGFsUHJvcHMgPSB7XG4gIGJ1dHRvbnNMZWZ0PzogUmVhY3RFbGVtZW50W107XG4gIGJ1dHRvbnNSaWdodD86IFJlYWN0RWxlbWVudFtdO1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgaGVhZGVyOiBzdHJpbmc7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgb25DbG9zZT86ICgpID0+IHZvaWQ7XG59O1xuXG5mdW5jdGlvbiBDb25maXJtYXRpb25Nb2RhbCh7XG4gIGNoaWxkcmVuLFxuICBjb250YWluZXJSZWYsXG4gIGhlYWRlcixcbiAgaXNPcGVuLFxuICBidXR0b25zTGVmdCA9IFtdLFxuICBidXR0b25zUmlnaHQgPSBbXSxcbiAgb25DbG9zZSA9ICgpID0+IHt9LFxuICBub1BhZGRpbmcgPSBmYWxzZSxcbn06IENvbmZpcm1hdGlvbk1vZGFsUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8TW9kYWwgY29udGFpbmVyUmVmPXtjb250YWluZXJSZWZ9IGlzT3Blbj17aXNPcGVufSBvbkNsb3NlPXtvbkNsb3NlfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY29udGFpbmVyfT5cbiAgICAgICAgPGgxIGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsSGVhZGVyfT57aGVhZGVyfTwvaDE+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgICAgIHN0eWxlcy5tb2RhbENvbnRlbnQsXG4gICAgICAgICAgICB7IFtzdHlsZXMubm9QYWRkaW5nXTogbm9QYWRkaW5nIH0sXG4gICAgICAgICAgXSl9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJ1dHRvbnN9PntidXR0b25zTGVmdH08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsQnV0dG9uc30+e2J1dHRvbnNSaWdodH08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L01vZGFsPlxuICApO1xufVxuXG5Db25maXJtYXRpb25Nb2RhbC5kaXNwbGF5TmFtZSA9IFwiQ29uZmlybWF0aW9uTW9kYWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgQ29uZmlybWF0aW9uTW9kYWw7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VIb3RrZXlzIH0gZnJvbSBcInJlYWN0LWhvdGtleXMtaG9va1wiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01vZGFsLm1vZHVsZS5jc3NcIjtcblxudHlwZSBNb2RhbFByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xuICBpc09wZW46IGJvb2xlYW47XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBidXR0b24/OiBSZWFjdE5vZGU7XG59O1xuXG5mdW5jdGlvbiBNb2RhbCh7XG4gIGNoaWxkcmVuLFxuICBjb250YWluZXJSZWYsXG4gIGlzT3BlbixcbiAgYnV0dG9uLFxuICBvbkNsb3NlID0gKCkgPT4ge30sXG59OiBNb2RhbFByb3BzKSB7XG4gIHVzZUhvdGtleXMoXCJFc2NhcGVcIiwgb25DbG9zZSk7XG5cbiAgY29uc3QgaGFuZGxlT3ZlcmxheUNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9uQ2xvc2UoKTtcbiAgfSwgW29uQ2xvc2VdKTtcblxuICByZXR1cm4gKFxuICAgIGlzT3BlbiAmJiAoXG4gICAgICA8ZGl2IHJlZj17Y29udGFpbmVyUmVmfT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXl9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtb2RhbC1vdmVybGF5XCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVPdmVybGF5Q2xpY2t9XG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWx9IGRhdGEtdGVzdGlkPVwibW9kYWxcIj5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7YnV0dG9uICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCdXR0b259PntidXR0b259PC9kaXY+fVxuICAgICAgPC9kaXY+XG4gICAgKVxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNb2RhbDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJvdmVybGF5XCI6XCJfMXl4Q2JRSnFTdFV2eXR2S0VlTkMzblwiLFwibW9kYWxcIjpcIkQ4U2pCeDNpa3o2MzZZdWJuSFlBWVwiLFwibW9kYWxCdXR0b25cIjpcIm84VlJWeE1yczF4WGF2QUR5eGpMR1wifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJra2dIb0JRaEZQc0tqX3gxWkZkUkhcIixcIm1vZGFsSGVhZGVyXCI6XCJfMVd1dkhELUdkWExydHF3YTA0VzFxeVwiLFwibW9kYWxDb250ZW50XCI6XCJfMjdlVXlTUXF2cTVxbG9OQ2xJaklTVFwiLFwibm9QYWRkaW5nXCI6XCJfMmd0QlhMOVBGU3BIc1cwQTl4ZDU1U1wiLFwibW9kYWxCdXR0b25zQ29udGFpbmVyXCI6XCJfNWdJcHlGM1g1dGhQUUFuc0FDNHo5XCIsXCJtb2RhbEJ1dHRvbnNcIjpcInN3c29DaWkxdzR4Tmw3aW9EVmtPNVwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIEZsb2F0aW5nUGFuZWwgfSBmcm9tIFwiLi9GbG9hdGluZ1BhbmVsXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9GbG9hdGluZ1BhbmVsLm1vZHVsZS5jc3NcIjtcblxudHlwZSBQbGFjZW1lbnQgPSB7XG4gIGhvcml6b250YWw6XG4gICAgfCBcInJpZ2h0XCJcbiAgICB8IFwicmlnaHRFZGdlXCJcbiAgICB8IFwicmlnaHRPbkVkZ2VcIlxuICAgIHwgXCJsZWZ0XCJcbiAgICB8IFwibGVmdEVkZ2VcIlxuICAgIHwgXCJsZWZ0T25FZGdlXCJcbiAgICB8IFwibGVmdE9uRWRnZVwiXG4gICAgfCBcImNlbnRlclwiO1xuICB2ZXJ0aWNhbDpcbiAgICB8IFwidG9wXCJcbiAgICB8IFwidG9wRWRnZVwiXG4gICAgfCBcImJvdHRvbVwiXG4gICAgfCBcImJvdHRvbUVkZ2VcIlxuICAgIHwgXCJib3R0b21PbkVkZ2VcIlxuICAgIHwgXCJjZW50ZXJcIjtcbiAgcGFyZW50OiBcInZpZXdwb3J0XCIgfCBcImNvbnRhaW5lclwiO1xufTtcblxudHlwZSBGbG9hdGluZ1BhbmVsUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gIGxheW91dD86IFwiY29sdW1uXCIgfCBcInJvd1wiO1xuICBwbGFjZW1lbnQ/OiBQbGFjZW1lbnQ7XG59O1xuXG5mdW5jdGlvbiBGbG9hdGluZ1BhbmVsKHtcbiAgY2hpbGRyZW4sXG4gIGNvbnRhaW5lclJlZixcbiAgbGF5b3V0ID0gXCJjb2x1bW5cIixcbiAgcGxhY2VtZW50ID0geyBob3Jpem9udGFsOiBcImNlbnRlclwiLCB2ZXJ0aWNhbDogXCJib3R0b21cIiwgcGFyZW50OiBcInZpZXdwb3J0XCIgfSxcbn06IEZsb2F0aW5nUGFuZWxQcm9wcykge1xuICBjb25zdCBob3Jpem9udGFsUGxhY2VtZW50ID1cbiAgICBwbGFjZW1lbnQuaG9yaXpvbnRhbCA9PT0gXCJjZW50ZXJcIlxuICAgICAgPyBcImhvcml6b250YWxDZW50ZXJcIlxuICAgICAgOiBwbGFjZW1lbnQuaG9yaXpvbnRhbDtcblxuICBjb25zdCB2ZXJ0aWNhbFBsYWNlbWVudCA9XG4gICAgcGxhY2VtZW50LnZlcnRpY2FsID09PSBcImNlbnRlclwiID8gXCJ2ZXJ0aWNhbENlbnRlclwiIDogcGxhY2VtZW50LnZlcnRpY2FsO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBkYXRhLXRlc3RpZD1cImZsb2F0aW5nLXBhbmVsXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbaG9yaXpvbnRhbFBsYWNlbWVudF0sXG4gICAgICAgIHN0eWxlc1t2ZXJ0aWNhbFBsYWNlbWVudF0sXG4gICAgICAgIHN0eWxlc1tsYXlvdXRdLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5maXhlZF06IHBsYWNlbWVudC5wYXJlbnQgIT09IFwiY29udGFpbmVyXCIsXG4gICAgICAgIH0sXG4gICAgICBdKX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZsb2F0aW5nUGFuZWw7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJhNk5ITzJDVlZDZmluaXllMlhMTi1cIixcInJvd1wiOlwiXzNSU2dCNzZyRUJuaVBjMlljcjhaYnZcIixcImNvbHVtblwiOlwiXzFKa1gxNWlnY2xuYm01c1JTY1dWRFlcIixcImZpeGVkXCI6XCJNTVExeWpFYWZXa1lGVkRITXBUYklcIixcInBsYWluXCI6XCJfM20yTV9OYXJjNXh3TGF5OEhKbGprY1wiLFwidHJhbnNwYXJlbnRcIjpcIl8xcmZhNDl6aFp4TmlmejY0T3FiXzZQXCIsXCJ0b3BcIjpcIl9rVWFsbkRlRWZ2enFBamkwQU1Eb1wiLFwidG9wRWRnZVwiOlwiVzhKQUl3TGpPOEpRR2J2aVpwUFF3XCIsXCJ0b3BPbkVkZ2VcIjpcIl8zb3BKN0ViNnRqMzk0dVY4YTU3aXh6XCIsXCJyaWdodFwiOlwiXzMtdmJ3anAwYVBjTEVWMVN4MElDZ1BcIixcInJpZ2h0RWRnZVwiOlwiXzNYTkZ5NVpvTUNvWUJJYWJlR040QlFcIixcInJpZ2h0T25FZGdlXCI6XCJfMTJjM0N6VU1RRThBRzNBTDhIaWtpMlwiLFwiYm90dG9tXCI6XCJfM2dlQkVOSDVvRXJxR2R0LVF5SG5QaFwiLFwiYm90dG9tRWRnZVwiOlwiXzNfc2FNNEdzMzJuUmJJSEh4SUViRjZcIixcImJvdHRvbU9uRWRnZVwiOlwiXzJQTEU0ZG1HaG5jZ2stbEVub1U0a3ZcIixcImxlZnRcIjpcIl8xaVNCbnlaZ1BlRlVXb000aTZkU3BVXCIsXCJsZWZ0RWRnZVwiOlwiXzFmWDE5cUlPU2huMm81dXVzUnpUZ3NcIixcImxlZnRPbkVkZ2VcIjpcIktCSERvY2t1SFRFT0tNR096YWRYaVwiLFwiaG9yaXpvbnRhbENlbnRlclwiOlwiXzMxdDZ0SFJKNXMtNURjRExGVEtoMW1cIixcInZlcnRpY2FsQ2VudGVyXCI6XCJfMmhxN2ZrRFhIeHJ4ejJ0N0xMZzRfOVwifTsiLCJpbXBvcnQgUmVhY3QsIHsgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ljb24ubW9kdWxlLmNzc1wiO1xuXG50eXBlIEljb25Qcm9wcyA9IHtcbiAgYWx0Pzogc3RyaW5nO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTEltYWdlRWxlbWVudD47XG4gIGludmVydGVkPzogYm9vbGVhbjtcbiAgc3JjOiBzdHJpbmc7XG4gIHNpemU/OiBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiO1xufTtcbmZ1bmN0aW9uIEljb24oe1xuICBzcmMsXG4gIGFsdCxcbiAgY29udGFpbmVyUmVmLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgaW52ZXJ0ZWQgPSBmYWxzZSxcbn06IEljb25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxpbWdcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5pY29uLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHsgW3N0eWxlcy5pbnZlcnRlZF06IGludmVydGVkIH0sXG4gICAgICBdKX1cbiAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwiaWNvblwiXG4gICAgICBhbHQ9e2FsdH1cbiAgICAgIHNyYz17c3JjfVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEljb247XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiaWNvblwiOlwidWg4emttUXA1eWJrNVdKU2xhNjlEXCIsXCJzbWFsbFwiOlwiXzlESUN0cW1RU25MUGptMVhJN1lWc1wiLFwibWVkaXVtXCI6XCJzSnB4ZllnaVR6N2lrNkpPR3Uxd2lcIixcImxhcmdlXCI6XCJfMnJndWNBSDhCbmxpLWNtano5aTJDMlwiLFwiaW52ZXJ0ZWRcIjpcIkktZUk1cThyZDJiU3A5Qi1GaFV6YVwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIEljb25CdXR0b24gfSBmcm9tIFwiLi9JY29uQnV0dG9uXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvblwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9JY29uQnV0dG9uLm1vZHVsZS5jc3NcIjtcblxudHlwZSBJY29uQnV0dG9uUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50PjtcbiAgc3JjOiBzdHJpbmc7XG4gIGFsdDogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGludmVydGVkPzogYm9vbGVhbjtcbiAgbm9TaGFkb3c/OiBib29sZWFuO1xuICBub0JvcmRlcj86IGJvb2xlYW47XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgcm91bmRlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBzaXplPzogXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIjtcbiAgdHlwZT86IFwic3VibWl0XCIgfCBcInJlc2V0XCIgfCBcImJ1dHRvblwiO1xuICBvZmZzZXRTaWRlcz86IEFycmF5PFwidG9wXCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCI+O1xufTtcblxuZnVuY3Rpb24gSWNvbkJ1dHRvbih7XG4gIGNsYXNzTmFtZSxcbiAgY29udGFpbmVyUmVmLFxuICBzcmMsXG4gIGFsdCxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgb25DbGljayA9ICgpID0+IHt9LFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBpbnZlcnRlZCA9IGZhbHNlLFxuICBub1NoYWRvdyA9IGZhbHNlLFxuICBub0JvcmRlciA9IGZhbHNlLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICByb3VuZGVkID0gZmFsc2UsXG4gIHNpemUgPSBcIm1lZGl1bVwiLFxuICB0eXBlID0gXCJidXR0b25cIixcbn06IEljb25CdXR0b25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuaW52ZXJ0ZWRdOiBpbnZlcnRlZCxcbiAgICAgICAgICBbc3R5bGVzLnJvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICAgIFtzdHlsZXMubm9TaGFkb3ddOiBub1NoYWRvdyxcbiAgICAgICAgICBbc3R5bGVzLm5vQm9yZGVyXTogbm9Cb3JkZXIsXG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMudG9wT2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInRvcFwiKSxcbiAgICAgICAgICBbc3R5bGVzLnJpZ2h0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInJpZ2h0XCIpLFxuICAgICAgICAgIFtzdHlsZXMuYm90dG9tT2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImJvdHRvbVwiKSxcbiAgICAgICAgICBbc3R5bGVzLmxlZnRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwibGVmdFwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxJY29uIHNyYz17c3JjfSBhbHQ9e2FsdH0gc2l6ZT17c2l6ZX0gaW52ZXJ0ZWQ9e2ludmVydGVkfSAvPlxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBJY29uQnV0dG9uO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzJNUHVKM0FwdnJBdnJld2pTV0dBQTJcIixcInNtYWxsXCI6XCJsT2tvYW43ZGJwLWdvRHRKVnVLN0JcIixcIm1lZGl1bVwiOlwiXzNhOWNXdHNfWTd4M3Bhams4dW1OM3pcIixcImxhcmdlXCI6XCJfMmFHNnpYcVRFS1ZjdkJhYW5pQ05CeVwiLFwicm91bmRlZFwiOlwiXzJKWDAzNHFVVENvVGRXQzJwcEE0ODdcIixcInRvcE9mZnNldFwiOlwiXzF3cEMtV1hnTDA2UUt4dFB6T3dOUktcIixcInJpZ2h0T2Zmc2V0XCI6XCJMSXpyUUM3cG9RVDlqVVJCcU1ES2hcIixcImJvdHRvbU9mZnNldFwiOlwiXzJpX3c1VUxrVUs3TFZ3NWhFTzk3RXdcIixcImxlZnRPZmZzZXRcIjpcIl8zOGVLbFRRVFYxWWxuRWUxR21OdFFrXCIsXCJpbnZlcnRlZFwiOlwiXzJOa1o1MHJrQTNlWkN5c1k5RkFwLWVcIixcIm5vU2hhZG93XCI6XCJfM1V5NUhaZHZrV2Y3YmlsVDB3eHdWZVwiLFwibm9Cb3JkZXJcIjpcIl8yRjRIeTlscTVPQ3JFcFBaUGg1eEFKXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzJ1N3FUTWVFOUQ1cnRjc0VjU29BWTNcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBJY29uQnV0dG9uTGluayB9IGZyb20gXCIuL0ljb25CdXR0b25MaW5rXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3RUeXBlLCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ljb25CdXR0b25MaW5rLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBPZmZzZXRTaWRlID0gXCJ0b3BcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCIgfCBcImxlZnRcIjtcblxudHlwZSBJY29uQnV0dG9uTGlua1Byb3BzID1cbiAgfCB7XG4gICAgICBhcz86IFJlYWN0VHlwZTtcbiAgICAgIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG4gICAgICBzcmM6IHN0cmluZztcbiAgICAgIGFsdDogc3RyaW5nO1xuICAgICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgICAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICAgICAgcm91bmRlZD86IGJvb2xlYW47XG4gICAgICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gICAgICBub1NoYWRvdz86IGJvb2xlYW47XG4gICAgICBub0JvcmRlcj86IGJvb2xlYW47XG4gICAgICBzaXplPzogU2l6ZTtcbiAgICAgIG9mZnNldFNpZGVzPzogQXJyYXk8T2Zmc2V0U2lkZT47XG4gICAgfVxuICB8IGFueTtcblxuZnVuY3Rpb24gSWNvbkJ1dHRvbkxpbmsoe1xuICBhczogQ29tcG9uZW50LFxuICBjb250YWluZXJSZWYsXG4gIGNsYXNzTmFtZSxcbiAgc3JjLFxuICBhbHQsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIG5vU2hhZG93ID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIC4uLnByb3BzXG59OiBJY29uQnV0dG9uTGlua1Byb3BzKSB7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgQ29tcG9uZW50ID0gXCJhXCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJpY29uLWJ1dHRvbi1saW5rXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQsXG4gICAgICAgICAgW3N0eWxlcy5yb3VuZGVkXTogcm91bmRlZCxcbiAgICAgICAgICBbc3R5bGVzLm5vU2hhZG93XTogbm9TaGFkb3csXG4gICAgICAgICAgW3N0eWxlcy5ub0JvcmRlcl06IG5vQm9yZGVyLFxuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLnRvcE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJ0b3BcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgICBbc3R5bGVzLmJvdHRvbU9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJib3R0b21cIiksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxJY29uIHNyYz17c3JjfSBhbHQ9e2FsdH0gc2l6ZT17c2l6ZX0gaW52ZXJ0ZWQ9e2ludmVydGVkfSAvPlxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBJY29uQnV0dG9uTGluaztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8xdWlmbUtOUER6ZHU1WURuaGd3UFFLXCIsXCJzbWFsbFwiOlwicGZIY1lhZXctSHJIdFROdVI0djdoXCIsXCJsYXJnZVwiOlwiXzI2WjlGSC1DTlBxZjU1WlJQMXZuYWJcIixcInJvdW5kZWRcIjpcIl8ycTdXdlJPaE5tM2dzUklSYVFRZWFVXCIsXCJ0b3BPZmZzZXRcIjpcIndaeV92dWxaa01iV1NYMGFrY1pIQVwiLFwicmlnaHRPZmZzZXRcIjpcIl8yamhocG02MF95UEVmeFEtd2F6ai01XCIsXCJib3R0b21PZmZzZXRcIjpcIkRubnJHN1pYbVRJaG1XVWNzOTltMVwiLFwibGVmdE9mZnNldFwiOlwiXzFZZENnN1Q2WGpobXh3Y2pMTlNFYi1cIixcImludmVydGVkXCI6XCJIVjBSLWxxd215ZXFzUzFaOHBvWlNcIixcIm5vU2hhZG93XCI6XCJfMUxQcHQ3MEpqaW02U2ZaZTM1RzJrYlwiLFwibm9Cb3JkZXJcIjpcIlJrelNyR2l4TTI4Sk1hdDZJQjVMclwiLFwidHJhbnNwYXJlbnRcIjpcIl8xS2RYZlkzUGs2dEVOWUg4MXRXcnBzXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSW1hZ2UgfSBmcm9tIFwiLi9JbWFnZVwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vSW1hZ2UubW9kdWxlLmNzc1wiO1xuXG5leHBvcnQgY29uc3QgZW1wdHlJbWFnZSA9XG4gIFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FRQUFBQzFIQXdDQUFBQUMwbEVRVlI0Mm1Oa1lBQUFBQVlBQWpDQjBDOEFBQUFBU1VWT1JLNUNZSUk9XCI7IC8vIDF4MXBuZ1xuXG50eXBlIEltYWdlUHJvcHMgPSB7XG4gIGFuaW1hdGlvbj86IFwiZmFkZUluXCIgfCBcInNjYWxlVXBcIjtcbiAgYWx0Pzogc3RyaW5nO1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgbGF5b3V0PzogXCJjb3ZlclwiIHwgXCJjb250YWluXCIgfCBcInN0cmV0Y2hIb3Jpem9udGFsbHlcIiB8IFwic3RyZXRjaFZlcnRpY2FsbHlcIjtcbiAgc3JjOiBzdHJpbmc7XG4gIHNyY1dpZHRoPzogbnVtYmVyO1xuICBzcmNIZWlnaHQ/OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiBJbWFnZUNvbXBvbmVudCh7XG4gIHNyYyxcbiAgYWx0LFxuICBzcmNXaWR0aCxcbiAgc3JjSGVpZ2h0LFxuICBjaGlsZHJlbixcbiAgYW5pbWF0aW9uLFxuICBjb250YWluZXJSZWYsXG4gIGxheW91dCA9IFwiY29udGFpblwiLFxufTogSW1hZ2VQcm9wcykge1xuICBjb25zdCBbaXNMb2FkZWQsIHNldElzTG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaW1hZ2VSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICBpbWFnZS5jcm9zc09yaWdpbiA9IFwiYW5vbnltb3VzXCI7XG4gICAgaW1hZ2Uuc3JjID0gc3JjO1xuICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGltYWdlUmVmLmN1cnJlbnQ/LnNldEF0dHJpYnV0ZShcInNyY1wiLCBzcmMpO1xuICAgICAgc2V0SXNMb2FkZWQodHJ1ZSk7XG4gICAgfTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpbWFnZS5zcmMgPSBcIlwiO1xuICAgICAgZGVsZXRlIGltYWdlLm9ubG9hZDtcbiAgICAgIGRlbGV0ZSBpbWFnZS5zcmM7XG4gICAgICBkZWxldGUgaW1hZ2UuY3Jvc3NPcmlnaW47XG4gICAgICBpbWFnZSA9IG51bGw7XG4gICAgfTtcbiAgfSwgW3NyY10pO1xuXG4gIHJldHVybiBjaGlsZHJlbiA/IChcbiAgICA8ZGl2XG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb250YWluZXIsIHN0eWxlcy5oYXNPdmVybGF5XSl9XG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICByZWY9e2ltYWdlUmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgICBzdHlsZXMuaW1hZ2UsXG4gICAgICAgICAgc3R5bGVzW2xheW91dF0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgW3N0eWxlcy5mYWRlSW5dOiBhbmltYXRpb24gPT09IFwiZmFkZUluXCIgJiYgaXNMb2FkZWQsXG4gICAgICAgICAgICBbc3R5bGVzLnNjYWxlVXBdOiBhbmltYXRpb24gPT09IFwic2NhbGVVcFwiICYmIGlzTG9hZGVkLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pfVxuICAgICAgICBjcm9zc09yaWdpbj1cImFub255bW91c1wiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiaW1hZ2VcIlxuICAgICAgICBhbHQ9e2FsdH1cbiAgICAgICAgc3JjPXtlbXB0eUltYWdlfVxuICAgICAgICB3aWR0aD17c3JjV2lkdGh9XG4gICAgICAgIGhlaWdodD17c3JjSGVpZ2h0fVxuICAgICAgLz5cbiAgICAgIHtjaGlsZHJlbiAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXl9PntjaGlsZHJlbn08L2Rpdj59XG4gICAgPC9kaXY+XG4gICkgOiAoXG4gICAgPGltZ1xuICAgICAgcmVmPXtpbWFnZVJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuaW1hZ2UsXG4gICAgICAgIHN0eWxlc1tsYXlvdXRdLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5mYWRlSW5dOiBhbmltYXRpb24gPT09IFwiZmFkZUluXCIgJiYgaXNMb2FkZWQsXG4gICAgICAgICAgW3N0eWxlcy5zY2FsZVVwXTogYW5pbWF0aW9uID09PSBcInNjYWxlVXBcIiAmJiBpc0xvYWRlZCxcbiAgICAgICAgfSxcbiAgICAgIF0pfVxuICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJpbWFnZVwiXG4gICAgICBhbHQ9e2FsdH1cbiAgICAgIHNyYz17ZW1wdHlJbWFnZX1cbiAgICAgIHdpZHRoPXtzcmNXaWR0aH1cbiAgICAgIGhlaWdodD17c3JjSGVpZ2h0fVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlQ29tcG9uZW50O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzN6d2xuOHhwa1p3cFRZNWk2SjdiT0RcIixcImhhc092ZXJsYXlcIjpcIl8yZWw4eFdxcWYzdzRTM3gwczJEOXhsXCIsXCJvdmVybGF5XCI6XCJFZzNpbWZiWGRJNlU2cmZSRTAtcU9cIixcImltYWdlXCI6XCJ0MTg5N2RmdHNfcHFIelNud21XQldcIixcImNvdmVyXCI6XCJfMS1SX0hEak82cU5ueXdjTmlTOGJ5RFwiLFwiY29udGFpblwiOlwiXzNtRHBDakhKMmc2NmUwdzRSMkVaa0dcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIl8zeUV0SDdjcXBVbFZGYUdpV0cxMjl3XCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwibHlpQnM2T0J4dlJFbndJUjBsczJDXCIsXCJmYWRlSW5cIjpcIl8yT0tKdzhVZHQ5MTZJWG1UbFQ5ODZZXCIsXCJmYWRlSW5BbmltYXRpb25cIjpcIk5vT1ZyVzQ2Nkh0azZFcFoxd1lpSVwiLFwic2NhbGVVcFwiOlwiXzMwOVZUcWpWSHBWSkh1eUFRYV9hWmlcIixcInNjYWxlVXBBbmltYXRpb25cIjpcIl8zaWNiSnJlMFBKN01GblhRaUNZX3E2XCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgTGlzdFZpZXcgfSBmcm9tIFwiLi9MaXN0Vmlld1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaXN0Vmlld0l0ZW0gfSBmcm9tIFwiLi9MaXN0Vmlld0l0ZW1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGlzdFZpZXdMaW5rSXRlbSB9IGZyb20gXCIuL0xpc3RWaWV3TGlua0l0ZW1cIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0xpc3RWaWV3Lm1vZHVsZS5jc3NcIjtcblxudHlwZSBMaXN0Vmlld1Byb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gIGhlYWRlcj86IHN0cmluZztcbiAgaGVhZGVyQWN0aW9ucz86IFJlYWN0Tm9kZTtcbn07XG5cbmZ1bmN0aW9uIExpc3RWaWV3KHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgY29udGFpbmVyUmVmLFxuICBoZWFkZXIsXG4gIGhlYWRlckFjdGlvbnMsXG59OiBMaXN0Vmlld1Byb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e2NvbnRhaW5lclJlZn0gY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmNvbnRhaW5lciwgY2xhc3NOYW1lXSl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICB7aGVhZGVyICYmIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJMYWJlbH0+e2hlYWRlcn08L2gzPn1cbiAgICAgICAge2hlYWRlckFjdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICAgIDx1bCBjbGFzc05hbWU9e3N0eWxlcy5saXN0fT57Y2hpbGRyZW59PC91bD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXc7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJDUEhOZDhvc0tqTHZRREVRVUVydXhcIixcImhlYWRlclwiOlwiXzFlN2hIU1ZvNTllOHlRbmhjOUI2SWRcIixcImhlYWRlckxhYmVsXCI6XCJfMmlCTC1TUkVUUlRoREdvOHdfdTRTaFwiLFwibGlzdFwiOlwiXzF3MVc4RTZfSHpmZXMzV1pUWVphSktcIn07IiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vQnV0dG9uXCI7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0xpc3RWaWV3SXRlbS5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTGlzdFZpZXdJdGVtUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICBub1BhZGRpbmc/OiBib29sZWFuO1xuICBzaXplPzogU2l6ZTtcbiAgYWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCI7XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkLFxufVxuXG5mdW5jdGlvbiBMaXN0Vmlld0l0ZW0oe1xuICBjaGlsZHJlbixcbiAgYWN0aXZlID0gZmFsc2UsXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIG5vUGFkZGluZyA9IGZhbHNlLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgYWxpZ24gPSBcImNlbnRlclwiLFxuICBvbkNsaWNrID0gKCkgPT4ge30sXG59OiBMaXN0Vmlld0l0ZW1Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxsaSBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMubGlzdFZpZXdJdGVtXSl9PlxuICAgICAgPEJ1dHRvblxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGludmVydGVkPXthY3RpdmV9XG4gICAgICAgIHRyYW5zcGFyZW50PXt0cmFuc3BhcmVudH1cbiAgICAgICAgbm9QYWRkaW5nPXtub1BhZGRpbmd9XG4gICAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgc3RyZXRjaEhvcml6b250YWxseVxuICAgICAgICBub1NoYWRvd1xuICAgICAgICBub0JvcmRlclxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L2xpPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMaXN0Vmlld0l0ZW07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgeyBCdXR0b25MaW5rIH0gZnJvbSBcIi4uL0J1dHRvbkxpbmtcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTGlzdFZpZXdJdGVtLm1vZHVsZS5jc3NcIjtcblxuZnVuY3Rpb24gTGlzdFZpZXdMaW5rSXRlbSh7XG4gIGNoaWxkcmVuLFxuICBhY3RpdmUsXG4gIHRyYW5zcGFyZW50LFxuICBub1BhZGRpbmcsXG4gIHNpemUsXG4gIGFsaWduLFxuICBhcyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8bGkgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmxpc3RWaWV3SXRlbV0pfT5cbiAgICAgIDxCdXR0b25MaW5rXG4gICAgICAgIGFzPXthc31cbiAgICAgICAgaW52ZXJ0ZWQ9e2FjdGl2ZX1cbiAgICAgICAgdHJhbnNwYXJlbnQ9e3RyYW5zcGFyZW50fVxuICAgICAgICBub1BhZGRpbmc9e25vUGFkZGluZ31cbiAgICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICBzdHJldGNoSG9yaXpvbnRhbGx5XG4gICAgICAgIG5vU2hhZG93XG4gICAgICAgIG5vQm9yZGVyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9CdXR0b25MaW5rPlxuICAgIDwvbGk+XG4gICk7XG59XG5cbkxpc3RWaWV3TGlua0l0ZW0uZGVmYXVsdFByb3BzID0ge1xuICBhY3RpdmU6IGZhbHNlLFxuICB0cmFuc3BhcmVudDogZmFsc2UsXG4gIG5vUGFkZGluZzogZmFsc2UsXG4gIHNpemU6IFwibWVkaXVtXCIsXG4gIGFsaWduOiBcImNlbnRlclwiLFxuICBhczogXCJhXCIsXG59O1xuXG5MaXN0Vmlld0xpbmtJdGVtLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIGFzOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHRyYW5zcGFyZW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgbm9QYWRkaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgYWxpZ246IFByb3BUeXBlcy5vbmVPZihbXCJsZWZ0XCIsIFwiY2VudGVyXCJdKSxcbiAgc2l6ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMaXN0Vmlld0xpbmtJdGVtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgTWVudSB9IGZyb20gXCIuL01lbnVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWVudUNvbnRhaW5lciB9IGZyb20gXCIuL01lbnVDb250YWluZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWVudUl0ZW0gfSBmcm9tIFwiLi9NZW51SXRlbVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNZW51TGlua0l0ZW0gfSBmcm9tIFwiLi9NZW51TGlua0l0ZW1cIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9NZW51Lm1vZHVsZS5jc3NcIjtcblxudHlwZSBQbGFjZW1lbnQgPSB7XG4gIGhvcml6b250YWw6IFwicmlnaHRcIiB8IFwibGVmdFwiO1xuICB2ZXJ0aWNhbDogXCJ0b3BcIiB8IFwiYm90dG9tXCI7XG59O1xuXG50eXBlIE1lbnVQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpc09wZW4/OiBib29sZWFuO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIHBsYWNlbWVudD86IFBsYWNlbWVudDtcbn07XG5cbmZ1bmN0aW9uIE1lbnUoe1xuICBjaGlsZHJlbixcbiAgY29udGFpbmVyUmVmLFxuICBjbGFzc05hbWUsXG4gIGlzT3BlbiA9IHRydWUsXG4gIHBsYWNlbWVudCA9IHsgaG9yaXpvbnRhbDogXCJsZWZ0XCIsIHZlcnRpY2FsOiBcImJvdHRvbVwiIH0sXG4gIGhlYWRlcixcbn06IE1lbnVQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5tZW51LFxuICAgICAgICBzdHlsZXNbcGxhY2VtZW50Lmhvcml6b250YWxdLFxuICAgICAgICBzdHlsZXNbcGxhY2VtZW50LnZlcnRpY2FsXSxcbiAgICAgICAgeyBbc3R5bGVzLm9wZW5dOiBpc09wZW4gfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgPlxuICAgICAge2hlYWRlciAmJiBpc09wZW4gJiYgPGgzIGNsYXNzTmFtZT17c3R5bGVzLm1lbnVIZWFkZXJ9PntoZWFkZXJ9PC9oMz59XG4gICAgICA8dWw+e2lzT3BlbiAmJiBjaGlsZHJlbn08L3VsPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm1lbnVcIjpcIl8yYWhpOEpjbnhHSHJuWm1EMHhUOVJMXCIsXCJ0b3BcIjpcIl8zZ3BGVGQxRmR4NEVBZnExNzBUR3M3XCIsXCJyaWdodFwiOlwiXzFMNUFUcE05R1h5LVNPUkZyMEc2UzRcIixcImxlZnRcIjpcIkNZRUpsMzlUa0VmbkthbDN2dHZ6OVwiLFwiYm90dG9tXCI6XCJfM3p5cC1OZFRCZUJES3ZrMjZwc1p1cFwiLFwib3BlblwiOlwiXzFpYWF6aVpyVklfLUU4RDk5V2ROamlcIixcImVudHJhbmNlXCI6XCJfMmZpS2U0LVg4UHFjRzRfOXFlQjNaT1wiLFwibWVudUhlYWRlclwiOlwiXzE5bmsxSU1OUy11X1lJUUxsbVlSdFVcIn07IiwiaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTWVudUNvbnRhaW5lci5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTWVudUNvbnRhaW5lclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlZj86ICgpID0+IHZvaWQgfCB7IGN1cnJlbnQ6IGFueSB9O1xufVxuXG5mdW5jdGlvbiBNZW51Q29udGFpbmVyKHsgY2hpbGRyZW4sIGNsYXNzTmFtZX06IE1lbnVDb250YWluZXJQcm9wcywgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLm1lbnVDb250YWluZXIsIGNsYXNzTmFtZV0pfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9yd2FyZFJlZihNZW51Q29udGFpbmVyKTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJtZW51Q29udGFpbmVyXCI6XCJfMi1TRndzcHBFdW9iQkprQXd3UXJGQ1wifTsiLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTWVudUl0ZW0ubW9kdWxlLmNzc1wiO1xuXG50eXBlIE1lbnVJdGVtUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaXNBY3RpdmU/OiBib29sZWFuLFxuICBvbkNsaWNrPzogKCkgPT4gdm9pZCxcbn07XG5cbmZ1bmN0aW9uIE1lbnVJdGVtKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgaXNBY3RpdmUgPSBmYWxzZVxufTogTWVudUl0ZW1Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5tZW51SXRlbSxcbiAgICAgICAgeyBbc3R5bGVzLmFjdGl2ZV06IGlzQWN0aXZlIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9saT5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWVudUl0ZW07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudUl0ZW1cIjpcIl8zZ0djelJKd3JOZW5YVEJMUW5DMjlNXCIsXCJhY3RpdmVcIjpcIl8yajFpbFVOa2JGR1NndWxYU29IQWRQXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlYWN0VHlwZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnVMaW5rSXRlbS5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTWVudUxpbmtJdGVtUHJvcHMgPSB7XG4gIGFzOiBSZWFjdFR5cGU7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xufSB8IGFueTtcblxuZnVuY3Rpb24gTWVudUxpbmtJdGVtKHtcbiAgYXM6IENvbXBvbmVudCxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IE1lbnVMaW5rSXRlbVByb3BzKSB7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgQ29tcG9uZW50ID0gXCJhXCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIGRhdGEtdGVzdGlkPVwibWVudS1saW5rLWl0ZW1cIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLm1lbnVMaW5rSXRlbSwgY2xhc3NOYW1lXSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51TGlua0l0ZW07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudUxpbmtJdGVtXCI6XCJfMkR5MUxUZlNjR1p0U2JfNUx1ZC1sVVwiLFwiYWN0aXZlXCI6XCJfMlV3czdiajN5ZWptbjFrN1hpeUtmUVwiLFwibWVudUl0ZW1cIjpcIl8ybEk3UzJ0NXpXaFFzdmdfWG5RNy0tXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgT3ZlcmxheSB9IGZyb20gXCIuL092ZXJsYXlcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9PdmVybGF5Lm1vZHVsZS5jc3NcIjtcblxudHlwZSBPdmVybGF5UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgaXNGaXhlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xufTtcblxuZnVuY3Rpb24gT3ZlcmxheSh7XG4gIGNoaWxkcmVuLFxuICBjb250YWluZXJSZWYsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIGlzRml4ZWQgPSBmYWxzZSxcbiAgb25DbGljayA9ICgpID0+IHt9LFxufTogT3ZlcmxheVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm92ZXJsYXlcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5vdmVybGF5LFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMuZml4ZWRdOiBpc0ZpeGVkLFxuICAgICAgICB9LFxuICAgICAgXSl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgT3ZlcmxheTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJvdmVybGF5XCI6XCJfMlFncHlyRGNVUXlLWUVTQzVEWFhKclwiLFwidHJhbnNwYXJlbnRcIjpcIl8yOGZWbW94cDY5T1ByODhFdzB6VmVOXCIsXCJmaXhlZFwiOlwiXzJzVTM1MTVFYkZGZ2VQMXlLMlp1YnpcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0SW5wdXQgfSBmcm9tIFwiLi9UZXh0SW5wdXRcIjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi9MYWJlbFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9UZXh0SW5wdXQubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgU2l6ZSwgVGV4dElucHV0VHlwZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG50eXBlIFRleHRJbnB1dFByb3BzID0ge1xuICBsYWJlbD86IHN0cmluZztcbiAgb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgc2l6ZT86IFNpemU7XG4gIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gIGlucHV0UmVmPzogUmVhY3QuUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQ+O1xufTtcblxuZnVuY3Rpb24gVGV4dElucHV0KHtcbiAgbGFiZWwsXG4gIG9uQ2hhbmdlLFxuICBwbGFjZWhvbGRlcixcbiAgdmFsdWUsXG4gIG5hbWUsXG4gIGlucHV0UmVmLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgYXV0b0ZvY3VzID0gZmFsc2UsXG4gIHR5cGUgPSBcInRleHRcIixcbn06IFRleHRJbnB1dFByb3BzKSB7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5Gb3JtRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+XG4gICAgICBvbkNoYW5nZSgoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpLFxuICAgIFtvbkNoYW5nZV1cbiAgKTtcblxuICBjb25zdCBpbnB1dEVsZW1lbnQgPSAoXG4gICAgPGlucHV0XG4gICAgICBkYXRhLXRlc3RpZD1cImlucHV0XCJcbiAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudGV4dElucHV0LCBzdHlsZXNbc2l6ZV1dKX1cbiAgICAgIG9uQ2hhbmdlPXshaW5wdXRSZWYgPyBoYW5kbGVDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIGF1dG9Gb2N1cz17YXV0b0ZvY3VzfVxuICAgIC8+XG4gICk7XG4gIGlmIChsYWJlbCkge1xuICAgIHJldHVybiA8TGFiZWwgdmFsdWU9e2xhYmVsfT57aW5wdXRFbGVtZW50fTwvTGFiZWw+O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiA8PntpbnB1dEVsZW1lbnR9PC8+O1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBUZXh0SW5wdXQ7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1widGV4dElucHV0XCI6XCJfMndmcU96V0JvQW5fSzdnb3F2alhKZVwiLFwic21hbGxcIjpcIl8xYTRRT1ZKQjB6VzNVcmZfNWhxTmpqXCIsXCJtZWRpdW1cIjpcIl8zVUpvZThubHB6aFZUbUMwOVRWc28tXCIsXCJsYXJnZVwiOlwiXzNEUTUyUWRfMUs0X1Z4eFZ2NzI4U1hcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBUb2FzdCB9IGZyb20gXCIuL1RvYXN0XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFRvYXN0Q29udGFpbmVyIH0gZnJvbSBcIi4vVG9hc3RDb250YWluZXJcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlYWN0Tm9kZUFycmF5LCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Ub2FzdC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgSW1hZ2VUeXBlID0ge1xuICBzcmM6IHN0cmluZztcbiAgYWx0OiBzdHJpbmc7XG59O1xuXG50eXBlIFRvYXN0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gIGJ1dHRvbnM6IFJlYWN0Tm9kZUFycmF5O1xuICBpbWFnZT86IEltYWdlVHlwZTtcbiAgb25DbGljaz86ICgpID0+IHZvaWQ7XG59O1xuXG5mdW5jdGlvbiBUb2FzdCh7XG4gIGNoaWxkcmVuLFxuICBjb250YWluZXJSZWYsXG4gIGltYWdlLFxuICBidXR0b25zLFxuICBvbkNsaWNrID0gKCkgPT4ge30sXG59OiBUb2FzdFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudG9hc3RdKX1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInRvYXN0XCJcbiAgICA+XG4gICAgICB7aW1hZ2UgJiYgKFxuICAgICAgICA8aW1nXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0b2FzdC1pbWFnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudG9hc3RJbWFnZX1cbiAgICAgICAgICBzcmM9e2ltYWdlLnNyY31cbiAgICAgICAgICBhbHQ9e2ltYWdlLmFsdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRvYXN0Q29udGVudH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50b2FzdEJ1dHRvbnN9PntidXR0b25zfTwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBUb2FzdDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ0b2FzdFwiOlwiXzNzQnNfRVJYVjNrMFNRTUdVeTJXajRcIixcImVudHJhbmNlXCI6XCJfMV94anRMZVVNb0VYTkEtcU9FWmhjeFwiLFwidG9hc3RDb250ZW50XCI6XCJfMTBsQkVUQ1UzVU5GUjhweTFxMXEtaFwiLFwidG9hc3RJbWFnZVwiOlwiXzNDaTB3cE9iazZvcWY3ZHdrSHNGV29cIixcInRvYXN0QnV0dG9uc1wiOlwiRkVXRG5Ec1AtOUE5SkhHMjBxQlM1XCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Ub2FzdENvbnRhaW5lci5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgVG9hc3RDb250YWluZXJQcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5mdW5jdGlvbiBUb2FzdENvbnRhaW5lcih7IGNoaWxkcmVuIH06IFRvYXN0Q29udGFpbmVyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudG9hc3RDb250YWluZXJdKX1cbiAgICAgIGRhdGEtdGVzdGlkPVwidG9hc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRvYXN0Q29udGFpbmVyO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcInRvYXN0Q29udGFpbmVyXCI6XCJfM0Y4Y0pVMXdtS21icmppZGctTzN6cFwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIFZpZGVvIH0gZnJvbSBcIi4vVmlkZW9cIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL1ZpZGVvLm1vZHVsZS5jc3NcIjtcblxuLyoqXG4gKiBUaGVyZSBpcyBhIGtub3duIGlzc3VlIGluIFJlYWN0IGluIHJlZ2FyZHMgdG8gdGhlICdtdXRlZCcgcHJvcGVydHkgd2hpY2ggY2F1c2VzIHRoZSB3YXJuaW5nOlxuICogXCJXYXJuaW5nOiB1bnN0YWJsZV9mbHVzaERpc2NyZXRlVXBkYXRlczogQ2Fubm90IGZsdXNoIHVwZGF0ZXMgd2hlbiBSZWFjdCBpcyBhbHJlYWR5IHJlbmRlcmluZy5cIlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTAzODlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNjU0NFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpbmctbGlicmFyeS9yZWFjdC10ZXN0aW5nLWxpYnJhcnkvaXNzdWVzLzQ3MFxuICovXG5cbnR5cGUgTGF5b3V0ID0gXCJjb3ZlclwiIHwgXCJjb250YWluXCIgfCBcInN0cmV0Y2hIb3Jpem9udGFsbHlcIiB8IFwic3RyZXRjaFZlcnRpY2FsbHlcIjtcblxudHlwZSBWaWRlb1Byb3BzID0ge1xuICBzcmM6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBsYXlvdXQ/OiBMYXlvdXQ7XG4gIGF1dG9QbGF5PzogYm9vbGVhbjtcbiAgbG9vcD86IGJvb2xlYW47XG4gIG11dGVkPzogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG59O1xuXG5mdW5jdGlvbiBWaWRlbyh7XG4gIHNyYyxcbiAgdHlwZSxcbiAgY2hpbGRyZW4sXG4gIGNvbnRhaW5lclJlZixcbiAgbXV0ZWQgPSB0cnVlLFxuICBsb29wID0gdHJ1ZSxcbiAgYXV0b1BsYXkgPSB0cnVlLFxuICBsYXlvdXQgPSBcImNvbnRhaW5cIixcbn06IFZpZGVvUHJvcHMpIHtcbiAgcmV0dXJuIGNoaWxkcmVuID8gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmNvbnRhaW5lciwgc3R5bGVzLmhhc092ZXJsYXldKX1cbiAgICA+XG4gICAgICA8dmlkZW9cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJ2aWRlb1wiXG4gICAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnZpZGVvLCBzdHlsZXNbbGF5b3V0XV0pfVxuICAgICAgICBtdXRlZD17bXV0ZWR9XG4gICAgICAgIGxvb3A9e2xvb3B9XG4gICAgICAgIGF1dG9QbGF5PXthdXRvUGxheX1cbiAgICAgICAgcGxheXNJbmxpbmU9e3RydWV9XG4gICAgICA+XG4gICAgICAgIDxzb3VyY2UgZGF0YS10ZXN0aWQ9XCJzb3VyY2VcIiBzcmM9e3NyY30gdHlwZT17dHlwZX0gLz5cbiAgICAgIDwvdmlkZW8+XG4gICAgICB7Y2hpbGRyZW4gJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vdmVybGF5fT57Y2hpbGRyZW59PC9kaXY+fVxuICAgIDwvZGl2PlxuICApIDogKFxuICAgIDx2aWRlb1xuICAgICAgZGF0YS10ZXN0aWQ9XCJ2aWRlb1wiXG4gICAgICBjcm9zc09yaWdpbj1cImFub255bW91c1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudmlkZW8sIHN0eWxlc1tsYXlvdXRdXSl9XG4gICAgICBtdXRlZD17bXV0ZWR9XG4gICAgICBsb29wPXtsb29wfVxuICAgICAgYXV0b1BsYXk9e2F1dG9QbGF5fVxuICAgICAgcGxheXNJbmxpbmU9e3RydWV9XG4gICAgPlxuICAgICAgPHNvdXJjZSBkYXRhLXRlc3RpZD1cInNvdXJjZVwiIHNyYz17c3JjfSB0eXBlPXt0eXBlfSAvPlxuICAgIDwvdmlkZW8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZpZGVvO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzJFUUJmcjV3OGgxeDFicS0yZnA2d1RcIixcImhhc092ZXJsYXlcIjpcIl8zR1JNcG1Ha19QcUlUY1V2ME5mbXQzXCIsXCJ2aWRlb1wiOlwiXzJ0WmZYa0VoQ2t3QXpmYUdfQlZuMEJcIixcImNvdmVyXCI6XCJfM09ZSGZiemFMM1FIYW5XWkJqOFJ4T1wiLFwiY29udGFpblwiOlwiXzNJX2M3c2hjU3J0R19GeHZ2VTJJZUVcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIl8xWjdkTDl1RWQwS3N4M0Nrclpoc0I4XCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwiXzF6YnJEWU8wZllGSlZjN3h2c1RZaTZcIixcIm92ZXJsYXlcIjpcIl8yb3NYZDdTa3dGMExoLTJ5aXF1WVFNXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlVG9nZ2xlIH0gZnJvbSBcIi4vdXNlVG9nZ2xlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuL3VzZU91dHNpZGVDbGlja1wiO1xuIiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVRvZ2dsZShcbiAgaW5pdGlhbFZhbHVlID0gZmFsc2Vcbik6IFtib29sZWFuLCAobmV3VmFsdWU/OiBib29sZWFuKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8Ym9vbGVhbj4oaW5pdGlhbFZhbHVlKTtcblxuICBjb25zdCB0b2dnbGUgPSAobmV3VmFsdWU/OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoKHByZXZWYWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4gIXByZXZWYWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gW3ZhbHVlLCB1c2VDYWxsYmFjayh0b2dnbGUsIFt2YWx1ZV0pXTtcbn1cblxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBDYWxsYmFjayA9IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU91dHNpZGVDbGljayhjYWxsYmFjazogQ2FsbGJhY2spIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXJlZi5jdXJyZW50IHx8IHJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCBoYW5kbGVDbGljayk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIGhhbmRsZUNsaWNrKTtcbiAgICB9O1xuICB9LCBbY2FsbGJhY2tdKTtcblxuICByZXR1cm4gcmVmO1xufVxuIiwiLyohXG4gKiBob3RrZXlzLWpzIHYzLjguMVxuICogQSBzaW1wbGUgbWljcm8tbGlicmFyeSBmb3IgZGVmaW5pbmcgYW5kIGRpc3BhdGNoaW5nIGtleWJvYXJkIHNob3J0Y3V0cy4gSXQgaGFzIG5vIGRlcGVuZGVuY2llcy5cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIwIGtlbm55IHdvbmcgPHdvd29ob29AcXEuY29tPlxuICogaHR0cDovL2pheXdjamxvdmUuZ2l0aHViLmlvL2hvdGtleXNcbiAqIFxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbnZhciBpc2ZmID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgPyBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpID4gMCA6IGZhbHNlOyAvLyDnu5Hlrprkuovku7ZcblxuZnVuY3Rpb24gYWRkRXZlbnQob2JqZWN0LCBldmVudCwgbWV0aG9kKSB7XG4gIGlmIChvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBtZXRob2QsIGZhbHNlKTtcbiAgfSBlbHNlIGlmIChvYmplY3QuYXR0YWNoRXZlbnQpIHtcbiAgICBvYmplY3QuYXR0YWNoRXZlbnQoXCJvblwiLmNvbmNhdChldmVudCksIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1ldGhvZCh3aW5kb3cuZXZlbnQpO1xuICAgIH0pO1xuICB9XG59IC8vIOS/rumlsOmUrui9rOaNouaIkOWvueW6lOeahOmUrueggVxuXG5cbmZ1bmN0aW9uIGdldE1vZHMobW9kaWZpZXIsIGtleSkge1xuICB2YXIgbW9kcyA9IGtleS5zbGljZSgwLCBrZXkubGVuZ3RoIC0gMSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgaSsrKSB7XG4gICAgbW9kc1tpXSA9IG1vZGlmaWVyW21vZHNbaV0udG9Mb3dlckNhc2UoKV07XG4gIH1cblxuICByZXR1cm4gbW9kcztcbn0gLy8g5aSE55CG5Lyg55qEa2V55a2X56ym5Liy6L2s5o2i5oiQ5pWw57uEXG5cblxuZnVuY3Rpb24gZ2V0S2V5cyhrZXkpIHtcbiAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSBrZXkgPSAnJztcbiAga2V5ID0ga2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7IC8vIOWMuemFjeS7u+S9leepuueZveWtl+espizljIXmi6znqbrmoLzjgIHliLbooajnrKbjgIHmjaLpobXnrKbnrYnnrYlcblxuICB2YXIga2V5cyA9IGtleS5zcGxpdCgnLCcpOyAvLyDlkIzml7borr7nva7lpJrkuKrlv6vmjbfplK7vvIzku6UnLCfliIblibJcblxuICB2YXIgaW5kZXggPSBrZXlzLmxhc3RJbmRleE9mKCcnKTsgLy8g5b+r5o236ZSu5Y+v6IO95YyF5ZCrJywn77yM6ZyA54m55q6K5aSE55CGXG5cbiAgZm9yICg7IGluZGV4ID49IDA7KSB7XG4gICAga2V5c1tpbmRleCAtIDFdICs9ICcsJztcbiAgICBrZXlzLnNwbGljZShpbmRleCwgMSk7XG4gICAgaW5kZXggPSBrZXlzLmxhc3RJbmRleE9mKCcnKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufSAvLyDmr5TovoPkv67ppbDplK7nmoTmlbDnu4RcblxuXG5mdW5jdGlvbiBjb21wYXJlQXJyYXkoYTEsIGEyKSB7XG4gIHZhciBhcnIxID0gYTEubGVuZ3RoID49IGEyLmxlbmd0aCA/IGExIDogYTI7XG4gIHZhciBhcnIyID0gYTEubGVuZ3RoID49IGEyLmxlbmd0aCA/IGEyIDogYTE7XG4gIHZhciBpc0luZGV4ID0gdHJ1ZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXJyMi5pbmRleE9mKGFycjFbaV0pID09PSAtMSkgaXNJbmRleCA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzSW5kZXg7XG59XG5cbnZhciBfa2V5TWFwID0ge1xuICBiYWNrc3BhY2U6IDgsXG4gIHRhYjogOSxcbiAgY2xlYXI6IDEyLFxuICBlbnRlcjogMTMsXG4gIHJldHVybjogMTMsXG4gIGVzYzogMjcsXG4gIGVzY2FwZTogMjcsXG4gIHNwYWNlOiAzMixcbiAgbGVmdDogMzcsXG4gIHVwOiAzOCxcbiAgcmlnaHQ6IDM5LFxuICBkb3duOiA0MCxcbiAgZGVsOiA0NixcbiAgZGVsZXRlOiA0NixcbiAgaW5zOiA0NSxcbiAgaW5zZXJ0OiA0NSxcbiAgaG9tZTogMzYsXG4gIGVuZDogMzUsXG4gIHBhZ2V1cDogMzMsXG4gIHBhZ2Vkb3duOiAzNCxcbiAgY2Fwc2xvY2s6IDIwLFxuICAn4oeqJzogMjAsXG4gICcsJzogMTg4LFxuICAnLic6IDE5MCxcbiAgJy8nOiAxOTEsXG4gICdgJzogMTkyLFxuICAnLSc6IGlzZmYgPyAxNzMgOiAxODksXG4gICc9JzogaXNmZiA/IDYxIDogMTg3LFxuICAnOyc6IGlzZmYgPyA1OSA6IDE4NixcbiAgJ1xcJyc6IDIyMixcbiAgJ1snOiAyMTksXG4gICddJzogMjIxLFxuICAnXFxcXCc6IDIyMFxufTsgLy8gTW9kaWZpZXIgS2V5c1xuXG52YXIgX21vZGlmaWVyID0ge1xuICAvLyBzaGlmdEtleVxuICAn4oenJzogMTYsXG4gIHNoaWZ0OiAxNixcbiAgLy8gYWx0S2V5XG4gICfijKUnOiAxOCxcbiAgYWx0OiAxOCxcbiAgb3B0aW9uOiAxOCxcbiAgLy8gY3RybEtleVxuICAn4oyDJzogMTcsXG4gIGN0cmw6IDE3LFxuICBjb250cm9sOiAxNyxcbiAgLy8gbWV0YUtleVxuICAn4oyYJzogOTEsXG4gIGNtZDogOTEsXG4gIGNvbW1hbmQ6IDkxXG59O1xudmFyIG1vZGlmaWVyTWFwID0ge1xuICAxNjogJ3NoaWZ0S2V5JyxcbiAgMTg6ICdhbHRLZXknLFxuICAxNzogJ2N0cmxLZXknLFxuICA5MTogJ21ldGFLZXknLFxuICBzaGlmdEtleTogMTYsXG4gIGN0cmxLZXk6IDE3LFxuICBhbHRLZXk6IDE4LFxuICBtZXRhS2V5OiA5MVxufTtcbnZhciBfbW9kcyA9IHtcbiAgMTY6IGZhbHNlLFxuICAxODogZmFsc2UsXG4gIDE3OiBmYWxzZSxcbiAgOTE6IGZhbHNlXG59O1xudmFyIF9oYW5kbGVycyA9IHt9OyAvLyBGMX5GMTIgc3BlY2lhbCBrZXlcblxuZm9yICh2YXIgayA9IDE7IGsgPCAyMDsgaysrKSB7XG4gIF9rZXlNYXBbXCJmXCIuY29uY2F0KGspXSA9IDExMSArIGs7XG59XG5cbnZhciBfZG93bktleXMgPSBbXTsgLy8g6K6w5b2V5pGB5LiL55qE57uR5a6a6ZSuXG5cbnZhciBfc2NvcGUgPSAnYWxsJzsgLy8g6buY6K6k54Ot6ZSu6IyD5Zu0XG5cbnZhciBlbGVtZW50SGFzQmluZEV2ZW50ID0gW107IC8vIOW3sue7keWumuS6i+S7tueahOiKgueCueiusOW9lVxuLy8g6L+U5Zue6ZSu56CBXG5cbnZhciBjb2RlID0gZnVuY3Rpb24gY29kZSh4KSB7XG4gIHJldHVybiBfa2V5TWFwW3gudG9Mb3dlckNhc2UoKV0gfHwgX21vZGlmaWVyW3gudG9Mb3dlckNhc2UoKV0gfHwgeC50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCk7XG59OyAvLyDorr7nva7ojrflj5blvZPliY3ojIPlm7TvvIjpu5jorqTkuLon5omA5pyJJ++8iVxuXG5cbmZ1bmN0aW9uIHNldFNjb3BlKHNjb3BlKSB7XG4gIF9zY29wZSA9IHNjb3BlIHx8ICdhbGwnO1xufSAvLyDojrflj5blvZPliY3ojIPlm7RcblxuXG5mdW5jdGlvbiBnZXRTY29wZSgpIHtcbiAgcmV0dXJuIF9zY29wZSB8fCAnYWxsJztcbn0gLy8g6I635Y+W5pGB5LiL57uR5a6a6ZSu55qE6ZSu5YC8XG5cblxuZnVuY3Rpb24gZ2V0UHJlc3NlZEtleUNvZGVzKCkge1xuICByZXR1cm4gX2Rvd25LZXlzLnNsaWNlKDApO1xufSAvLyDooajljZXmjqfku7bmjqfku7bliKTmlq0g6L+U5ZueIEJvb2xlYW5cbi8vIGhvdGtleSBpcyBlZmZlY3RpdmUgb25seSB3aGVuIGZpbHRlciByZXR1cm4gdHJ1ZVxuXG5cbmZ1bmN0aW9uIGZpbHRlcihldmVudCkge1xuICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gIHZhciB0YWdOYW1lID0gdGFyZ2V0LnRhZ05hbWU7XG4gIHZhciBmbGFnID0gdHJ1ZTsgLy8gaWdub3JlOiBpc0NvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnLCA8aW5wdXQ+IGFuZCA8dGV4dGFyZWE+IHdoZW4gcmVhZE9ubHkgc3RhdGUgaXMgZmFsc2UsIDxzZWxlY3Q+XG5cbiAgaWYgKHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSB8fCAodGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCB0YWdOYW1lID09PSAnVEVYVEFSRUEnIHx8IHRhZ05hbWUgPT09ICdTRUxFQ1QnKSAmJiAhdGFyZ2V0LnJlYWRPbmx5KSB7XG4gICAgZmxhZyA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGZsYWc7XG59IC8vIOWIpOaWreaRgeS4i+eahOmUruaYr+WQpuS4uuafkOS4qumUru+8jOi/lOWbnnRydWXmiJbogIVmYWxzZVxuXG5cbmZ1bmN0aW9uIGlzUHJlc3NlZChrZXlDb2RlKSB7XG4gIGlmICh0eXBlb2Yga2V5Q29kZSA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXlDb2RlID0gY29kZShrZXlDb2RlKTsgLy8g6L2s5o2i5oiQ6ZSu56CBXG4gIH1cblxuICByZXR1cm4gX2Rvd25LZXlzLmluZGV4T2Yoa2V5Q29kZSkgIT09IC0xO1xufSAvLyDlvqrnjq/liKDpmaRoYW5kbGVyc+S4reeahOaJgOaciSBzY29wZSjojIPlm7QpXG5cblxuZnVuY3Rpb24gZGVsZXRlU2NvcGUoc2NvcGUsIG5ld1Njb3BlKSB7XG4gIHZhciBoYW5kbGVycztcbiAgdmFyIGk7IC8vIOayoeacieaMh+WumnNjb3Bl77yM6I635Y+Wc2NvcGVcblxuICBpZiAoIXNjb3BlKSBzY29wZSA9IGdldFNjb3BlKCk7XG5cbiAgZm9yICh2YXIga2V5IGluIF9oYW5kbGVycykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoX2hhbmRsZXJzLCBrZXkpKSB7XG4gICAgICBoYW5kbGVycyA9IF9oYW5kbGVyc1trZXldO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOykge1xuICAgICAgICBpZiAoaGFuZGxlcnNbaV0uc2NvcGUgPT09IHNjb3BlKSBoYW5kbGVycy5zcGxpY2UoaSwgMSk7ZWxzZSBpKys7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIOWmguaenHNjb3Bl6KKr5Yig6Zmk77yM5bCGc2NvcGXph43nva7kuLphbGxcblxuXG4gIGlmIChnZXRTY29wZSgpID09PSBzY29wZSkgc2V0U2NvcGUobmV3U2NvcGUgfHwgJ2FsbCcpO1xufSAvLyDmuIXpmaTkv67ppbDplK5cblxuXG5mdW5jdGlvbiBjbGVhck1vZGlmaWVyKGV2ZW50KSB7XG4gIHZhciBrZXkgPSBldmVudC5rZXlDb2RlIHx8IGV2ZW50LndoaWNoIHx8IGV2ZW50LmNoYXJDb2RlO1xuXG4gIHZhciBpID0gX2Rvd25LZXlzLmluZGV4T2Yoa2V5KTsgLy8g5LuO5YiX6KGo5Lit5riF6Zmk5oyJ5Y6L6L+H55qE6ZSuXG5cblxuICBpZiAoaSA+PSAwKSB7XG4gICAgX2Rvd25LZXlzLnNwbGljZShpLCAxKTtcbiAgfSAvLyDnibnmrorlpITnkIYgY21tYW5kIOmUru+8jOWcqCBjbW1hbmQg57uE5ZCI5b+r5o236ZSuIGtleXVwIOWPquaJp+ihjOS4gOasoeeahOmXrumimFxuXG5cbiAgaWYgKGV2ZW50LmtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ21ldGEnKSB7XG4gICAgX2Rvd25LZXlzLnNwbGljZSgwLCBfZG93bktleXMubGVuZ3RoKTtcbiAgfSAvLyDkv67ppbDplK4gc2hpZnRLZXkgYWx0S2V5IGN0cmxLZXkgKGNvbW1hbmR8fG1ldGFLZXkpIOa4hemZpFxuXG5cbiAgaWYgKGtleSA9PT0gOTMgfHwga2V5ID09PSAyMjQpIGtleSA9IDkxO1xuXG4gIGlmIChrZXkgaW4gX21vZHMpIHtcbiAgICBfbW9kc1trZXldID0gZmFsc2U7IC8vIOWwhuS/rumlsOmUrumHjee9ruS4umZhbHNlXG5cbiAgICBmb3IgKHZhciBrIGluIF9tb2RpZmllcikge1xuICAgICAgaWYgKF9tb2RpZmllcltrXSA9PT0ga2V5KSBob3RrZXlzW2tdID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHVuYmluZChrZXlzSW5mbykge1xuICAvLyB1bmJpbmQoKSwgdW5iaW5kIGFsbCBrZXlzXG4gIGlmICgha2V5c0luZm8pIHtcbiAgICBPYmplY3Qua2V5cyhfaGFuZGxlcnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIGRlbGV0ZSBfaGFuZGxlcnNba2V5XTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGtleXNJbmZvKSkge1xuICAgIC8vIHN1cHBvcnQgbGlrZSA6IHVuYmluZChbe2tleTogJ2N0cmwrYScsIHNjb3BlOiAnczEnfSwge2tleTogJ2N0cmwtYScsIHNjb3BlOiAnczInLCBzcGxpdEtleTogJy0nfV0pXG4gICAga2V5c0luZm8uZm9yRWFjaChmdW5jdGlvbiAoaW5mbykge1xuICAgICAgaWYgKGluZm8ua2V5KSBlYWNoVW5iaW5kKGluZm8pO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBrZXlzSW5mbyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBzdXBwb3J0IGxpa2UgdW5iaW5kKHtrZXk6ICdjdHJsK2EsIGN0cmwrYicsIHNjb3BlOidhYmMnfSlcbiAgICBpZiAoa2V5c0luZm8ua2V5KSBlYWNoVW5iaW5kKGtleXNJbmZvKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Yga2V5c0luZm8gPT09ICdzdHJpbmcnKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydCBvbGQgbWV0aG9kXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIHZhciBzY29wZSA9IGFyZ3NbMF0sXG4gICAgICAgIG1ldGhvZCA9IGFyZ3NbMV07XG5cbiAgICBpZiAodHlwZW9mIHNjb3BlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBtZXRob2QgPSBzY29wZTtcbiAgICAgIHNjb3BlID0gJyc7XG4gICAgfVxuXG4gICAgZWFjaFVuYmluZCh7XG4gICAgICBrZXk6IGtleXNJbmZvLFxuICAgICAgc2NvcGU6IHNjb3BlLFxuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICBzcGxpdEtleTogJysnXG4gICAgfSk7XG4gIH1cbn0gLy8g6Kej6Zmk57uR5a6a5p+Q5Liq6IyD5Zu055qE5b+r5o236ZSuXG5cblxudmFyIGVhY2hVbmJpbmQgPSBmdW5jdGlvbiBlYWNoVW5iaW5kKF9yZWYpIHtcbiAgdmFyIGtleSA9IF9yZWYua2V5LFxuICAgICAgc2NvcGUgPSBfcmVmLnNjb3BlLFxuICAgICAgbWV0aG9kID0gX3JlZi5tZXRob2QsXG4gICAgICBfcmVmJHNwbGl0S2V5ID0gX3JlZi5zcGxpdEtleSxcbiAgICAgIHNwbGl0S2V5ID0gX3JlZiRzcGxpdEtleSA9PT0gdm9pZCAwID8gJysnIDogX3JlZiRzcGxpdEtleTtcbiAgdmFyIG11bHRpcGxlS2V5cyA9IGdldEtleXMoa2V5KTtcbiAgbXVsdGlwbGVLZXlzLmZvckVhY2goZnVuY3Rpb24gKG9yaWdpbktleSkge1xuICAgIHZhciB1bmJpbmRLZXlzID0gb3JpZ2luS2V5LnNwbGl0KHNwbGl0S2V5KTtcbiAgICB2YXIgbGVuID0gdW5iaW5kS2V5cy5sZW5ndGg7XG4gICAgdmFyIGxhc3RLZXkgPSB1bmJpbmRLZXlzW2xlbiAtIDFdO1xuICAgIHZhciBrZXlDb2RlID0gbGFzdEtleSA9PT0gJyonID8gJyonIDogY29kZShsYXN0S2V5KTtcbiAgICBpZiAoIV9oYW5kbGVyc1trZXlDb2RlXSkgcmV0dXJuOyAvLyDliKTmlq3mmK/lkKbkvKDlhaXojIPlm7TvvIzmsqHmnInlsLHojrflj5bojIPlm7RcblxuICAgIGlmICghc2NvcGUpIHNjb3BlID0gZ2V0U2NvcGUoKTtcbiAgICB2YXIgbW9kcyA9IGxlbiA+IDEgPyBnZXRNb2RzKF9tb2RpZmllciwgdW5iaW5kS2V5cykgOiBbXTtcbiAgICBfaGFuZGxlcnNba2V5Q29kZV0gPSBfaGFuZGxlcnNba2V5Q29kZV0ubWFwKGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgIC8vIOmAmui/h+WHveaVsOWIpOaWre+8jOaYr+WQpuino+mZpOe7keWumu+8jOWHveaVsOebuOetieebtOaOpei/lOWbnlxuICAgICAgdmFyIGlzTWF0Y2hpbmdNZXRob2QgPSBtZXRob2QgPyByZWNvcmQubWV0aG9kID09PSBtZXRob2QgOiB0cnVlO1xuXG4gICAgICBpZiAoaXNNYXRjaGluZ01ldGhvZCAmJiByZWNvcmQuc2NvcGUgPT09IHNjb3BlICYmIGNvbXBhcmVBcnJheShyZWNvcmQubW9kcywgbW9kcykpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVjb3JkO1xuICAgIH0pO1xuICB9KTtcbn07IC8vIOWvueebkeWQrOWvueW6lOW/q+aNt+mUrueahOWbnuiwg+WHveaVsOi/m+ihjOWkhOeQhlxuXG5cbmZ1bmN0aW9uIGV2ZW50SGFuZGxlcihldmVudCwgaGFuZGxlciwgc2NvcGUpIHtcbiAgdmFyIG1vZGlmaWVyc01hdGNoOyAvLyDnnIvlroPmmK/lkKblnKjlvZPliY3ojIPlm7RcblxuICBpZiAoaGFuZGxlci5zY29wZSA9PT0gc2NvcGUgfHwgaGFuZGxlci5zY29wZSA9PT0gJ2FsbCcpIHtcbiAgICAvLyDmo4Dmn6XmmK/lkKbljLnphY3kv67ppbDnrKbvvIjlpoLmnpzmnInov5Tlm550cnVl77yJXG4gICAgbW9kaWZpZXJzTWF0Y2ggPSBoYW5kbGVyLm1vZHMubGVuZ3RoID4gMDtcblxuICAgIGZvciAodmFyIHkgaW4gX21vZHMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoX21vZHMsIHkpKSB7XG4gICAgICAgIGlmICghX21vZHNbeV0gJiYgaGFuZGxlci5tb2RzLmluZGV4T2YoK3kpID4gLTEgfHwgX21vZHNbeV0gJiYgaGFuZGxlci5tb2RzLmluZGV4T2YoK3kpID09PSAtMSkge1xuICAgICAgICAgIG1vZGlmaWVyc01hdGNoID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIOiwg+eUqOWkhOeQhueoi+W6j++8jOWmguaenOaYr+S/rumlsOmUruS4jeWBmuWkhOeQhlxuXG5cbiAgICBpZiAoaGFuZGxlci5tb2RzLmxlbmd0aCA9PT0gMCAmJiAhX21vZHNbMTZdICYmICFfbW9kc1sxOF0gJiYgIV9tb2RzWzE3XSAmJiAhX21vZHNbOTFdIHx8IG1vZGlmaWVyc01hdGNoIHx8IGhhbmRsZXIuc2hvcnRjdXQgPT09ICcqJykge1xuICAgICAgaWYgKGhhbmRsZXIubWV0aG9kKGV2ZW50LCBoYW5kbGVyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGV2ZW50LnByZXZlbnREZWZhdWx0KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChldmVudC5jYW5jZWxCdWJibGUpIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIOWkhOeQhmtleWRvd27kuovku7ZcblxuXG5mdW5jdGlvbiBkaXNwYXRjaChldmVudCkge1xuICB2YXIgYXN0ZXJpc2sgPSBfaGFuZGxlcnNbJyonXTtcbiAgdmFyIGtleSA9IGV2ZW50LmtleUNvZGUgfHwgZXZlbnQud2hpY2ggfHwgZXZlbnQuY2hhckNvZGU7IC8vIOihqOWNleaOp+S7tui/h+a7pCDpu5jorqTooajljZXmjqfku7bkuI3op6blj5Hlv6vmjbfplK5cblxuICBpZiAoIWhvdGtleXMuZmlsdGVyLmNhbGwodGhpcywgZXZlbnQpKSByZXR1cm47IC8vIEdlY2tvKEZpcmVmb3gp55qEY29tbWFuZOmUruWAvDIyNO+8jOWcqFdlYmtpdChDaHJvbWUp5Lit5L+d5oyB5LiA6Ie0XG4gIC8vIFdlYmtpdOW3puWPsyBjb21tYW5kIOmUruWAvOS4jeS4gOagt1xuXG4gIGlmIChrZXkgPT09IDkzIHx8IGtleSA9PT0gMjI0KSBrZXkgPSA5MTtcbiAgLyoqXG4gICAqIENvbGxlY3QgYm91bmQga2V5c1xuICAgKiBJZiBhbiBJbnB1dCBNZXRob2QgRWRpdG9yIGlzIHByb2Nlc3Npbmcga2V5IGlucHV0IGFuZCB0aGUgZXZlbnQgaXMga2V5ZG93biwgcmV0dXJuIDIyOS5cbiAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjUwNDM5MzQvaXMtaXQtb2stdG8taWdub3JlLWtleWRvd24tZXZlbnRzLXdpdGgta2V5Y29kZS0yMjlcbiAgICogaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LWRvbS8yMDEwSnVsU2VwL2F0dC0wMTgyL2tleUNvZGUtc3BlYy5odG1sXG4gICAqL1xuXG4gIGlmIChfZG93bktleXMuaW5kZXhPZihrZXkpID09PSAtMSAmJiBrZXkgIT09IDIyOSkgX2Rvd25LZXlzLnB1c2goa2V5KTtcbiAgLyoqXG4gICAqIEplc3QgdGVzdCBjYXNlcyBhcmUgcmVxdWlyZWQuXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICovXG5cbiAgWydjdHJsS2V5JywgJ2FsdEtleScsICdzaGlmdEtleScsICdtZXRhS2V5J10uZm9yRWFjaChmdW5jdGlvbiAoa2V5TmFtZSkge1xuICAgIHZhciBrZXlOdW0gPSBtb2RpZmllck1hcFtrZXlOYW1lXTtcblxuICAgIGlmIChldmVudFtrZXlOYW1lXSAmJiBfZG93bktleXMuaW5kZXhPZihrZXlOdW0pID09PSAtMSkge1xuICAgICAgX2Rvd25LZXlzLnB1c2goa2V5TnVtKTtcbiAgICB9IGVsc2UgaWYgKCFldmVudFtrZXlOYW1lXSAmJiBfZG93bktleXMuaW5kZXhPZihrZXlOdW0pID4gLTEpIHtcbiAgICAgIF9kb3duS2V5cy5zcGxpY2UoX2Rvd25LZXlzLmluZGV4T2Yoa2V5TnVtKSwgMSk7XG4gICAgfSBlbHNlIGlmIChrZXlOYW1lID09PSAnbWV0YUtleScgJiYgZXZlbnRba2V5TmFtZV0gJiYgX2Rvd25LZXlzLmxlbmd0aCA9PT0gMykge1xuICAgICAgLyoqXG4gICAgICAgKiBGaXggaWYgQ29tbWFuZCBpcyBwcmVzc2VkOlxuICAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICovXG4gICAgICBpZiAoIShldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleSkpIHtcbiAgICAgICAgX2Rvd25LZXlzID0gX2Rvd25LZXlzLnNsaWNlKF9kb3duS2V5cy5pbmRleE9mKGtleU51bSkpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIC8qKlxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIGlmIChrZXkgaW4gX21vZHMpIHtcbiAgICBfbW9kc1trZXldID0gdHJ1ZTsgLy8g5bCG54m55q6K5a2X56ym55qEa2V55rOo5YaM5YiwIGhvdGtleXMg5LiKXG5cbiAgICBmb3IgKHZhciBrIGluIF9tb2RpZmllcikge1xuICAgICAgaWYgKF9tb2RpZmllcltrXSA9PT0ga2V5KSBob3RrZXlzW2tdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWFzdGVyaXNrKSByZXR1cm47XG4gIH0gLy8g5bCGIG1vZGlmaWVyTWFwIOmHjOmdoueahOS/rumlsOmUrue7keWumuWIsCBldmVudCDkuK1cblxuXG4gIGZvciAodmFyIGUgaW4gX21vZHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKF9tb2RzLCBlKSkge1xuICAgICAgX21vZHNbZV0gPSBldmVudFttb2RpZmllck1hcFtlXV07XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vamF5d2NqbG92ZS9ob3RrZXlzL3B1bGwvMTI5XG4gICAqIFRoaXMgc29sdmVzIHRoZSBpc3N1ZSBpbiBGaXJlZm94IG9uIFdpbmRvd3Mgd2hlcmUgaG90a2V5cyBjb3JyZXNwb25kaW5nIHRvIHNwZWNpYWwgY2hhcmFjdGVycyB3b3VsZCBub3QgdHJpZ2dlci5cbiAgICogQW4gZXhhbXBsZSBvZiB0aGlzIGlzIGN0cmwrYWx0K20gb24gYSBTd2VkaXNoIGtleWJvYXJkIHdoaWNoIGlzIHVzZWQgdG8gdHlwZSDOvC5cbiAgICogQnJvd3NlciBzdXBwb3J0OiBodHRwczovL2Nhbml1c2UuY29tLyNmZWF0PWtleWJvYXJkZXZlbnQtZ2V0bW9kaWZpZXJzdGF0ZVxuICAgKi9cblxuXG4gIGlmIChldmVudC5nZXRNb2RpZmllclN0YXRlICYmICEoZXZlbnQuYWx0S2V5ICYmICFldmVudC5jdHJsS2V5KSAmJiBldmVudC5nZXRNb2RpZmllclN0YXRlKCdBbHRHcmFwaCcpKSB7XG4gICAgaWYgKF9kb3duS2V5cy5pbmRleE9mKDE3KSA9PT0gLTEpIHtcbiAgICAgIF9kb3duS2V5cy5wdXNoKDE3KTtcbiAgICB9XG5cbiAgICBpZiAoX2Rvd25LZXlzLmluZGV4T2YoMTgpID09PSAtMSkge1xuICAgICAgX2Rvd25LZXlzLnB1c2goMTgpO1xuICAgIH1cblxuICAgIF9tb2RzWzE3XSA9IHRydWU7XG4gICAgX21vZHNbMThdID0gdHJ1ZTtcbiAgfSAvLyDojrflj5bojIPlm7Qg6buY6K6k5Li6IGBhbGxgXG5cblxuICB2YXIgc2NvcGUgPSBnZXRTY29wZSgpOyAvLyDlr7nku7vkvZXlv6vmjbfplK7pg73pnIDopoHlgZrnmoTlpITnkIZcblxuICBpZiAoYXN0ZXJpc2spIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFzdGVyaXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXN0ZXJpc2tbaV0uc2NvcGUgPT09IHNjb3BlICYmIChldmVudC50eXBlID09PSAna2V5ZG93bicgJiYgYXN0ZXJpc2tbaV0ua2V5ZG93biB8fCBldmVudC50eXBlID09PSAna2V5dXAnICYmIGFzdGVyaXNrW2ldLmtleXVwKSkge1xuICAgICAgICBldmVudEhhbmRsZXIoZXZlbnQsIGFzdGVyaXNrW2ldLCBzY29wZSk7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIGtleSDkuI3lnKggX2hhbmRsZXJzIOS4rei/lOWbnlxuXG5cbiAgaWYgKCEoa2V5IGluIF9oYW5kbGVycykpIHJldHVybjtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgX2hhbmRsZXJzW2tleV0ubGVuZ3RoOyBfaSsrKSB7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyAmJiBfaGFuZGxlcnNba2V5XVtfaV0ua2V5ZG93biB8fCBldmVudC50eXBlID09PSAna2V5dXAnICYmIF9oYW5kbGVyc1trZXldW19pXS5rZXl1cCkge1xuICAgICAgaWYgKF9oYW5kbGVyc1trZXldW19pXS5rZXkpIHtcbiAgICAgICAgdmFyIHJlY29yZCA9IF9oYW5kbGVyc1trZXldW19pXTtcbiAgICAgICAgdmFyIHNwbGl0S2V5ID0gcmVjb3JkLnNwbGl0S2V5O1xuICAgICAgICB2YXIga2V5U2hvcnRjdXQgPSByZWNvcmQua2V5LnNwbGl0KHNwbGl0S2V5KTtcbiAgICAgICAgdmFyIF9kb3duS2V5c0N1cnJlbnQgPSBbXTsgLy8g6K6w5b2V5b2T5YmN5oyJ6ZSu6ZSu5YC8XG5cbiAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCBrZXlTaG9ydGN1dC5sZW5ndGg7IGErKykge1xuICAgICAgICAgIF9kb3duS2V5c0N1cnJlbnQucHVzaChjb2RlKGtleVNob3J0Y3V0W2FdKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX2Rvd25LZXlzQ3VycmVudC5zb3J0KCkuam9pbignJykgPT09IF9kb3duS2V5cy5zb3J0KCkuam9pbignJykpIHtcbiAgICAgICAgICAvLyDmib7liLDlpITnkIblhoXlrrlcbiAgICAgICAgICBldmVudEhhbmRsZXIoZXZlbnQsIHJlY29yZCwgc2NvcGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIOWIpOaWrSBlbGVtZW50IOaYr+WQpuW3sue7j+e7keWumuS6i+S7tlxuXG5cbmZ1bmN0aW9uIGlzRWxlbWVudEJpbmQoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudEhhc0JpbmRFdmVudC5pbmRleE9mKGVsZW1lbnQpID4gLTE7XG59XG5cbmZ1bmN0aW9uIGhvdGtleXMoa2V5LCBvcHRpb24sIG1ldGhvZCkge1xuICBfZG93bktleXMgPSBbXTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKGtleSk7IC8vIOmcgOimgeWkhOeQhueahOW/q+aNt+mUruWIl+ihqFxuXG4gIHZhciBtb2RzID0gW107XG4gIHZhciBzY29wZSA9ICdhbGwnOyAvLyBzY29wZem7mOiupOS4umFsbO+8jOaJgOacieiMg+WbtOmDveacieaViFxuXG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQ7IC8vIOW/q+aNt+mUruS6i+S7tue7keWumuiKgueCuVxuXG4gIHZhciBpID0gMDtcbiAgdmFyIGtleXVwID0gZmFsc2U7XG4gIHZhciBrZXlkb3duID0gdHJ1ZTtcbiAgdmFyIHNwbGl0S2V5ID0gJysnOyAvLyDlr7nkuLrorr7lrprojIPlm7TnmoTliKTmlq1cblxuICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG1ldGhvZCA9IG9wdGlvbjtcbiAgfVxuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob3B0aW9uKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICBpZiAob3B0aW9uLnNjb3BlKSBzY29wZSA9IG9wdGlvbi5zY29wZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKG9wdGlvbi5lbGVtZW50KSBlbGVtZW50ID0gb3B0aW9uLmVsZW1lbnQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIGlmIChvcHRpb24ua2V5dXApIGtleXVwID0gb3B0aW9uLmtleXVwOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAob3B0aW9uLmtleWRvd24gIT09IHVuZGVmaW5lZCkga2V5ZG93biA9IG9wdGlvbi5rZXlkb3duOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbi5zcGxpdEtleSA9PT0gJ3N0cmluZycpIHNwbGl0S2V5ID0gb3B0aW9uLnNwbGl0S2V5OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIH1cblxuICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycpIHNjb3BlID0gb3B0aW9uOyAvLyDlr7nkuo7mr4/kuKrlv6vmjbfplK7ov5vooYzlpITnkIZcblxuICBmb3IgKDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBrZXlzW2ldLnNwbGl0KHNwbGl0S2V5KTsgLy8g5oyJ6ZSu5YiX6KGoXG5cbiAgICBtb2RzID0gW107IC8vIOWmguaenOaYr+e7hOWQiOW/q+aNt+mUruWPluW+l+e7hOWQiOW/q+aNt+mUrlxuXG4gICAgaWYgKGtleS5sZW5ndGggPiAxKSBtb2RzID0gZ2V0TW9kcyhfbW9kaWZpZXIsIGtleSk7IC8vIOWwhumdnuS/rumlsOmUrui9rOWMluS4uumUrueggVxuXG4gICAga2V5ID0ga2V5W2tleS5sZW5ndGggLSAxXTtcbiAgICBrZXkgPSBrZXkgPT09ICcqJyA/ICcqJyA6IGNvZGUoa2V5KTsgLy8gKuihqOekuuWMuemFjeaJgOacieW/q+aNt+mUrlxuICAgIC8vIOWIpOaWrWtleeaYr+WQpuWcqF9oYW5kbGVyc+S4re+8jOS4jeWcqOWwsei1i+S4gOS4quepuuaVsOe7hFxuXG4gICAgaWYgKCEoa2V5IGluIF9oYW5kbGVycykpIF9oYW5kbGVyc1trZXldID0gW107XG5cbiAgICBfaGFuZGxlcnNba2V5XS5wdXNoKHtcbiAgICAgIGtleXVwOiBrZXl1cCxcbiAgICAgIGtleWRvd246IGtleWRvd24sXG4gICAgICBzY29wZTogc2NvcGUsXG4gICAgICBtb2RzOiBtb2RzLFxuICAgICAgc2hvcnRjdXQ6IGtleXNbaV0sXG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIGtleToga2V5c1tpXSxcbiAgICAgIHNwbGl0S2V5OiBzcGxpdEtleVxuICAgIH0pO1xuICB9IC8vIOWcqOWFqOWxgGRvY3VtZW505LiK6K6+572u5b+r5o236ZSuXG5cblxuICBpZiAodHlwZW9mIGVsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmICFpc0VsZW1lbnRCaW5kKGVsZW1lbnQpICYmIHdpbmRvdykge1xuICAgIGVsZW1lbnRIYXNCaW5kRXZlbnQucHVzaChlbGVtZW50KTtcbiAgICBhZGRFdmVudChlbGVtZW50LCAna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBkaXNwYXRjaChlKTtcbiAgICB9KTtcbiAgICBhZGRFdmVudCh3aW5kb3csICdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF9kb3duS2V5cyA9IFtdO1xuICAgIH0pO1xuICAgIGFkZEV2ZW50KGVsZW1lbnQsICdrZXl1cCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBkaXNwYXRjaChlKTtcbiAgICAgIGNsZWFyTW9kaWZpZXIoZSk7XG4gICAgfSk7XG4gIH1cbn1cblxudmFyIF9hcGkgPSB7XG4gIHNldFNjb3BlOiBzZXRTY29wZSxcbiAgZ2V0U2NvcGU6IGdldFNjb3BlLFxuICBkZWxldGVTY29wZTogZGVsZXRlU2NvcGUsXG4gIGdldFByZXNzZWRLZXlDb2RlczogZ2V0UHJlc3NlZEtleUNvZGVzLFxuICBpc1ByZXNzZWQ6IGlzUHJlc3NlZCxcbiAgZmlsdGVyOiBmaWx0ZXIsXG4gIHVuYmluZDogdW5iaW5kXG59O1xuXG5mb3IgKHZhciBhIGluIF9hcGkpIHtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfYXBpLCBhKSkge1xuICAgIGhvdGtleXNbYV0gPSBfYXBpW2FdO1xuICB9XG59XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICB2YXIgX2hvdGtleXMgPSB3aW5kb3cuaG90a2V5cztcblxuICBob3RrZXlzLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoZGVlcCkge1xuICAgIGlmIChkZWVwICYmIHdpbmRvdy5ob3RrZXlzID09PSBob3RrZXlzKSB7XG4gICAgICB3aW5kb3cuaG90a2V5cyA9IF9ob3RrZXlzO1xuICAgIH1cblxuICAgIHJldHVybiBob3RrZXlzO1xuICB9O1xuXG4gIHdpbmRvdy5ob3RrZXlzID0gaG90a2V5cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaG90a2V5cztcbiIsImltcG9ydCBob3RrZXlzIGZyb20gJ2hvdGtleXMtanMnO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiB1c2VJc0hvdGtleVByZXNzZWQoKSB7XG4gICAgcmV0dXJuIGhvdGtleXMuaXNQcmVzc2VkO1xufVxuXG5mdW5jdGlvbiB1c2VIb3RrZXlzKGtleXMsIGNhbGxiYWNrLCBvcHRpb25zLCBkZXBzKSB7XG4gICAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBkZXBzID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgeyBlbmFibGVPblRhZ3MsIGZpbHRlciB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgbWVtb2lzZWRDYWxsYmFjayA9IHVzZUNhbGxiYWNrKChrZXlib2FyZEV2ZW50LCBob3RrZXlzRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHJlZi5jdXJyZW50ID09PSBudWxsIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjYWxsYmFjayhrZXlib2FyZEV2ZW50LCBob3RrZXlzRXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sIGRlcHMgPyBbcmVmLCAuLi5kZXBzXSA6IFtyZWZdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmVuYWJsZU9uVGFncykge1xuICAgICAgICAgICAgaG90a2V5cy5maWx0ZXIgPSAoeyB0YXJnZXQsIHNyY0VsZW1lbnQgfSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRUYWdOYW1lID0gKHRhcmdldCAmJiB0YXJnZXQudGFnTmFtZSkgfHwgKHNyY0VsZW1lbnQgJiYgc3JjRWxlbWVudC50YWdOYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbih0YXJnZXRUYWdOYW1lICYmIGVuYWJsZU9uVGFncyAmJiBlbmFibGVPblRhZ3MuaW5jbHVkZXModGFyZ2V0VGFnTmFtZSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyKVxuICAgICAgICAgICAgaG90a2V5cy5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgICAgIGhvdGtleXMoa2V5cywgb3B0aW9ucyB8fCB7fSwgbWVtb2lzZWRDYWxsYmFjayk7XG4gICAgICAgIHJldHVybiAoKSA9PiBob3RrZXlzLnVuYmluZChrZXlzLCBtZW1vaXNlZENhbGxiYWNrKTtcbiAgICB9LCBbbWVtb2lzZWRDYWxsYmFjaywgb3B0aW9ucywgZW5hYmxlT25UYWdzLCBmaWx0ZXIsIGtleXNdKTtcbiAgICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgeyB1c2VIb3RrZXlzLCB1c2VJc0hvdGtleVByZXNzZWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcFxuIl0sInNvdXJjZVJvb3QiOiIifQ==
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xhc3NjYXQvc3JjL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xhYmVsL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb24vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzcz85YTRlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclN3YXRjaC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5tb2R1bGUuY3NzP2NkNDYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9CdXR0b25MaW5rLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9CdXR0b25MaW5rL0J1dHRvbkxpbmsubW9kdWxlLmNzcz8wODQxIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94L0NoZWNrYm94LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MYWJlbC9MYWJlbC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGFiZWwvTGFiZWwubW9kdWxlLmNzcz8xZjExIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94L0NoZWNrYm94Lm1vZHVsZS5jc3M/NGVlYiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclBpY2tlci9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclBpY2tlci9Db2xvclBpY2tlci50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29sb3JTd2F0Y2gvQ29sb3JTd2F0Y2gudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yU3dhdGNoL0NvbG9yU3dhdGNoLm1vZHVsZS5jc3M/MjNlYiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclBpY2tlci9Db2xvclBpY2tlci5tb2R1bGUuY3NzP2UxODgiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29uZmlybWF0aW9uTW9kYWwvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01vZGFsL01vZGFsLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5tb2R1bGUuY3NzPzBlZGYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwubW9kdWxlLmNzcz8yN2IzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0Zsb2F0aW5nUGFuZWwvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvRmxvYXRpbmdQYW5lbC9GbG9hdGluZ1BhbmVsLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9GbG9hdGluZ1BhbmVsL0Zsb2F0aW5nUGFuZWwubW9kdWxlLmNzcz83YWJmIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb24vSWNvbi50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbi9JY29uLm1vZHVsZS5jc3M/OWI5MyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b24vSWNvbkJ1dHRvbi50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbkJ1dHRvbi9JY29uQnV0dG9uLm1vZHVsZS5jc3M/ZDI4ZCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uTGluay9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uTGluay9JY29uQnV0dG9uTGluay50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbkJ1dHRvbkxpbmsvSWNvbkJ1dHRvbkxpbmsubW9kdWxlLmNzcz9jYzM3Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ltYWdlL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ltYWdlL0ltYWdlLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JbWFnZS9JbWFnZS5tb2R1bGUuY3NzPzk1YTciLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXcudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xpc3RWaWV3L0xpc3RWaWV3Lm1vZHVsZS5jc3M/NDY0ZSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlld0l0ZW0udHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xpc3RWaWV3L0xpc3RWaWV3TGlua0l0ZW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51Lm1vZHVsZS5jc3M/MzcwOSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVDb250YWluZXIudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUNvbnRhaW5lci5tb2R1bGUuY3NzPzk2ZDIiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51SXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51SXRlbS5tb2R1bGUuY3NzPzUwNDkiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51TGlua0l0ZW0udHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUxpbmtJdGVtLm1vZHVsZS5jc3M/MDQyNyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9PdmVybGF5L2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL092ZXJsYXkvT3ZlcmxheS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvT3ZlcmxheS9PdmVybGF5Lm1vZHVsZS5jc3M/MjFjNSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9UZXh0SW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVGV4dElucHV0L1RleHRJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVGV4dElucHV0L1RleHRJbnB1dC5tb2R1bGUuY3NzP2NkMzYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9hc3QvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9hc3QvVG9hc3QudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L1RvYXN0Lm1vZHVsZS5jc3M/Y2Y2MSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2FzdC9Ub2FzdENvbnRhaW5lci50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9hc3QvVG9hc3RDb250YWluZXIubW9kdWxlLmNzcz85YTM2Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1ZpZGVvL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1ZpZGVvL1ZpZGVvLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WaWRlby9WaWRlby5tb2R1bGUuY3NzP2UyMjMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2hvb2tzL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9ob29rcy91c2VUb2dnbGUudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2hvb2tzL3VzZU91dHNpZGVDbGljay50cyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaG90a2V5cy1qcy9kaXN0L2hvdGtleXMuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ob3RrZXlzLWhvb2svZGlzdC13ZWIvaW5kZXguanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJyZXF1aXJlIiwiaXNBcnJheSIsIkFycmF5IiwiY2MiLCJvYmoiLCJvdXQiLCJ0bXAiLCJrIiwibGVuZ3RoIiwiZGVmYXVsdCIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwib25DbGljayIsImNvbnRhaW5lclJlZiIsImRpc2FibGVkIiwiaW52ZXJ0ZWQiLCJyb3VuZGVkIiwibm9TaGFkb3ciLCJub1BhZGRpbmciLCJub0JvcmRlciIsInRyYW5zcGFyZW50Iiwic3RyZXRjaEhvcml6b250YWxseSIsInN0cmV0Y2hWZXJ0aWNhbGx5Iiwib2Zmc2V0U2lkZXMiLCJhbGlnbiIsInNpemUiLCJ0eXBlIiwicmVmIiwiY29udGFpbmVyIiwibGVmdE9mZnNldCIsImluY2x1ZGVzIiwicmlnaHRPZmZzZXQiLCJyb2xlIiwiY29udGVudCIsIkNvbXBvbmVudCIsInByb3BzIiwibGFiZWwiLCJvbkNoYW5nZSIsInBsYWNlaG9sZGVyIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJhdXRvRm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJ1c2VDYWxsYmFjayIsImUiLCJ0YXJnZXQiLCJMYWJlbCIsImlucHV0UmVmIiwiaW5wdXQiLCJjb2xvcnMiLCJvblNlbGVjdCIsInNlbGVjdGVkQ29sb3IiLCJkaXJlY3Rpb24iLCJjb2xvclBpY2tlciIsIm1hcCIsImNvbG9yIiwiQ29sb3JTd2F0Y2giLCJpc1NlbGVjdGVkIiwiY29sb3JTd2F0Y2giLCJzZWxlY3RlZCIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiaGV4Q29kZSIsInNyT25seSIsIkNvbmZpcm1hdGlvbk1vZGFsIiwiaGVhZGVyIiwiaXNPcGVuIiwiYnV0dG9uc0xlZnQiLCJidXR0b25zUmlnaHQiLCJvbkNsb3NlIiwiTW9kYWwiLCJtb2RhbEhlYWRlciIsIm1vZGFsQ29udGVudCIsIm1vZGFsQnV0dG9uc0NvbnRhaW5lciIsIm1vZGFsQnV0dG9ucyIsImRpc3BsYXlOYW1lIiwiYnV0dG9uIiwidXNlSG90a2V5cyIsImhhbmRsZU92ZXJsYXlDbGljayIsIm92ZXJsYXkiLCJtb2RhbCIsIm1vZGFsQnV0dG9uIiwibGF5b3V0IiwicGxhY2VtZW50IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwicGFyZW50IiwiaG9yaXpvbnRhbFBsYWNlbWVudCIsInZlcnRpY2FsUGxhY2VtZW50IiwiZml4ZWQiLCJzcmMiLCJhbHQiLCJpY29uIiwiY3Jvc3NPcmlnaW4iLCJ0b3BPZmZzZXQiLCJib3R0b21PZmZzZXQiLCJJY29uIiwiZW1wdHlJbWFnZSIsInNyY1dpZHRoIiwic3JjSGVpZ2h0IiwiYW5pbWF0aW9uIiwidXNlU3RhdGUiLCJpc0xvYWRlZCIsInNldElzTG9hZGVkIiwiaW1hZ2VSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJpbWFnZSIsIkltYWdlIiwib25sb2FkIiwiY3VycmVudCIsInNldEF0dHJpYnV0ZSIsImhhc092ZXJsYXkiLCJmYWRlSW4iLCJzY2FsZVVwIiwid2lkdGgiLCJoZWlnaHQiLCJoZWFkZXJBY3Rpb25zIiwiaGVhZGVyTGFiZWwiLCJsaXN0IiwiYWN0aXZlIiwibGlzdFZpZXdJdGVtIiwiQnV0dG9uIiwiTGlzdFZpZXdMaW5rSXRlbSIsImFzIiwiY2xhc3NjYXQiLCJzdHlsZXMiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJub2RlIiwiaXNSZXF1aXJlZCIsImVsZW1lbnRUeXBlIiwiYm9vbCIsIm9uZU9mIiwic3RyaW5nIiwiZnVuYyIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwiZ2V0U2hpbSIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJudW1iZXIiLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIm1lbnUiLCJvcGVuIiwibWVudUhlYWRlciIsImZvcndhcmRSZWYiLCJtZW51Q29udGFpbmVyIiwiaXNBY3RpdmUiLCJtZW51SXRlbSIsIm1lbnVMaW5rSXRlbSIsImlzRml4ZWQiLCJpbnB1dEVsZW1lbnQiLCJ0ZXh0SW5wdXQiLCJ1bmRlZmluZWQiLCJidXR0b25zIiwidG9hc3QiLCJ0b2FzdEltYWdlIiwidG9hc3RDb250ZW50IiwidG9hc3RCdXR0b25zIiwidG9hc3RDb250YWluZXIiLCJtdXRlZCIsImxvb3AiLCJhdXRvUGxheSIsInZpZGVvIiwicGxheXNJbmxpbmUiLCJpbml0aWFsVmFsdWUiLCJzZXRWYWx1ZSIsIm5ld1ZhbHVlIiwicHJldlZhbHVlIiwiY2FsbGJhY2siLCJoYW5kbGVDbGljayIsImV2ZW50IiwiY29udGFpbnMiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaXNmZiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsImFkZEV2ZW50IiwibWV0aG9kIiwiYXR0YWNoRXZlbnQiLCJjb25jYXQiLCJ3aW5kb3ciLCJnZXRNb2RzIiwibW9kaWZpZXIiLCJtb2RzIiwic2xpY2UiLCJnZXRLZXlzIiwia2V5cyIsInJlcGxhY2UiLCJzcGxpdCIsImluZGV4IiwibGFzdEluZGV4T2YiLCJzcGxpY2UiLCJfa2V5TWFwIiwiYmFja3NwYWNlIiwidGFiIiwiY2xlYXIiLCJlbnRlciIsInJldHVybiIsImVzYyIsImVzY2FwZSIsInNwYWNlIiwibGVmdCIsInVwIiwicmlnaHQiLCJkb3duIiwiZGVsIiwiZGVsZXRlIiwiaW5zIiwiaW5zZXJ0IiwiaG9tZSIsImVuZCIsInBhZ2V1cCIsInBhZ2Vkb3duIiwiY2Fwc2xvY2siLCInIiwiX21vZGlmaWVyIiwic2hpZnQiLCJvcHRpb24iLCJjdHJsIiwiY29udHJvbCIsImNtZCIsImNvbW1hbmQiLCJtb2RpZmllck1hcCIsIjE2IiwiMTgiLCIxNyIsIjkxIiwic2hpZnRLZXkiLCJjdHJsS2V5IiwiYWx0S2V5IiwibWV0YUtleSIsIl9tb2RzIiwiX2hhbmRsZXJzIiwiX2Rvd25LZXlzIiwiX3Njb3BlIiwiZWxlbWVudEhhc0JpbmRFdmVudCIsImNvZGUiLCJ4IiwidG9VcHBlckNhc2UiLCJjaGFyQ29kZUF0Iiwic2V0U2NvcGUiLCJzY29wZSIsImdldFNjb3BlIiwiZWFjaFVuYmluZCIsIl9yZWYiLCJfcmVmJHNwbGl0S2V5Iiwic3BsaXRLZXkiLCJmb3JFYWNoIiwib3JpZ2luS2V5IiwidW5iaW5kS2V5cyIsImxlbiIsImxhc3RLZXkiLCJrZXlDb2RlIiwicmVjb3JkIiwiYTEiLCJhMiIsImFycjEiLCJhcnIyIiwiaXNJbmRleCIsImNvbXBhcmVBcnJheSIsImV2ZW50SGFuZGxlciIsImhhbmRsZXIiLCJtb2RpZmllcnNNYXRjaCIsInkiLCJzaG9ydGN1dCIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJzdG9wUHJvcGFnYXRpb24iLCJjYW5jZWxCdWJibGUiLCJkaXNwYXRjaCIsImFzdGVyaXNrIiwid2hpY2giLCJjaGFyQ29kZSIsImhvdGtleXMiLCJmaWx0ZXIiLCJ0aGlzIiwicHVzaCIsImtleU5hbWUiLCJrZXlOdW0iLCJnZXRNb2RpZmllclN0YXRlIiwia2V5ZG93biIsImtleXVwIiwiX2kiLCJrZXlTaG9ydGN1dCIsIl9kb3duS2V5c0N1cnJlbnQiLCJhIiwic29ydCIsImpvaW4iLCJ0b1N0cmluZyIsImlzRWxlbWVudEJpbmQiLCJjbGVhck1vZGlmaWVyIiwiX2FwaSIsImRlbGV0ZVNjb3BlIiwibmV3U2NvcGUiLCJoYW5kbGVycyIsImdldFByZXNzZWRLZXlDb2RlcyIsImlzUHJlc3NlZCIsInNyY0VsZW1lbnQiLCJ0YWdOYW1lIiwiZmxhZyIsImlzQ29udGVudEVkaXRhYmxlIiwicmVhZE9ubHkiLCJ1bmJpbmQiLCJrZXlzSW5mbyIsImluZm8iLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJfaG90a2V5cyIsIm5vQ29uZmxpY3QiLCJkZWVwIiwidXNlSXNIb3RrZXlQcmVzc2VkIiwib3B0aW9ucyIsImRlcHMiLCJlbmFibGVPblRhZ3MiLCJtZW1vaXNlZENhbGxiYWNrIiwia2V5Ym9hcmRFdmVudCIsImhvdGtleXNFdmVudCIsImFjdGl2ZUVsZW1lbnQiLCJ0YXJnZXRUYWdOYW1lIiwiQm9vbGVhbiJdLCJtYXBwaW5ncyI6IjZEQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQTBEZixPQXJEQUYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVBQW9CVSxFQUFJLFNBQVNSLEVBQVNTLEVBQU1DLEdBQzNDWixFQUFvQmEsRUFBRVgsRUFBU1MsSUFDbENHLE9BQU9DLGVBQWViLEVBQVNTLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVosRUFBb0JrQixFQUFJLFNBQVNoQixHQUNYLG9CQUFYaUIsUUFBMEJBLE9BQU9DLGFBQzFDTixPQUFPQyxlQUFlYixFQUFTaUIs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LFFBQzlFLE9BQU91QixRQUFRRCxHQUFpQkwsR0FBZ0JBLEVBQWF2VCxTQUFTNFQsTUFHMUU5QyxJQUNBLEVBQVFBLE9BQVNBLEdBQ3JCLEVBQVF4RixFQUFNK0gsR0FBVyxHQUFJRyxHQUN0QixJQUFNLEVBQVFkLE9BQU9wSCxFQUFNa0ksSUFDbkMsQ0FBQ0EsRUFBa0JILEVBQVNFLEVBQWN6QyxFQUFReEYsSUFDOUN6TCIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxMCk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJ2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2Mob2JqKSB7XG4gIHZhciBvdXQgPSBcIlwiXG5cbiAgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJudW1iZXJcIikgcmV0dXJuIG9iaiB8fCBcIlwiXG5cbiAgaWYgKGlzQXJyYXkob2JqKSlcbiAgICBmb3IgKHZhciBrID0gMCwgdG1wOyBrIDwgb2JqLmxlbmd0aDsgaysrKSB7XG4gICAgICBpZiAoKHRtcCA9IGNjKG9ialtrXSkpICE9PSBcIlwiKSB7XG4gICAgICAgIG91dCArPSAob3V0ICYmIFwiIFwiKSArIHRtcFxuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvciAodmFyIGsgaW4gb2JqKSB7XG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGspICYmIG9ialtrXSkgb3V0ICs9IChvdXQgJiYgXCIgXCIpICsga1xuICAgIH1cblxuICByZXR1cm4gb3V0XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIExhYmVsIH0gZnJvbSBcIi4vTGFiZWxcIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvbiB9IGZyb20gXCIuL0ljb25cIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQnV0dG9uTGluayB9IGZyb20gXCIuL0J1dHRvbkxpbmtcIjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJsaXN0Vmlld0l0ZW1cIjpcIl8yTGdqcUFCd2pIdHBiR3prUVFrcWlRXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQnV0dG9uIH0gZnJvbSBcIi4vQnV0dG9uXCI7XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIENvbG9yU3dhdGNoIH0gZnJvbSBcIi4vQ29sb3JTd2F0Y2hcIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgTW9kYWwgfSBmcm9tIFwiLi9Nb2RhbFwiO1xuIiwiZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9CdXR0b25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQnV0dG9uTGlua1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Db2xvclBpY2tlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Db2xvclN3YXRjaFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9GbG9hdGluZ1BhbmVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0ljb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvSWNvbkJ1dHRvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9JY29uQnV0dG9uTGlua1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9JbWFnZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9MaXN0Vmlld1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9NZW51XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL01vZGFsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL092ZXJsYXlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvTGFiZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dElucHV0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL1RvYXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL1ZpZGVvXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ob29rc1wiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQnV0dG9uLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBCdXR0b25Qcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGludmVydGVkPzogYm9vbGVhbjtcbiAgcm91bmRlZD86IGJvb2xlYW47XG4gIG5vU2hhZG93PzogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgbm9Cb3JkZXI/OiBib29sZWFuO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIHN0cmV0Y2hIb3Jpem9udGFsbHk/OiBib29sZWFuO1xuICBzdHJldGNoVmVydGljYWxseT86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBzaXplPzogU2l6ZTtcbiAgdHlwZT86IFwic3VibWl0XCIgfCBcInJlc2V0XCIgfCBcImJ1dHRvblwiO1xuICBhbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIjtcbiAgb2Zmc2V0U2lkZXM/OiBBcnJheTxcImxlZnRcIiB8IFwicmlnaHRcIj47XG59O1xuXG5mdW5jdGlvbiBCdXR0b24oe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvbkNsaWNrLFxuICBjb250YWluZXJSZWYsXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIHN0cmV0Y2hIb3Jpem9udGFsbHkgPSBmYWxzZSxcbiAgc3RyZXRjaFZlcnRpY2FsbHkgPSBmYWxzZSxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgYWxpZ24gPSBcImNlbnRlclwiLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgdHlwZSxcbn06IEJ1dHRvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgc3R5bGVzW3NpemVdLFxuICAgICAgICBzdHlsZXNbYWxpZ25dLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5pbnZlcnRlZF06IGludmVydGVkLFxuICAgICAgICAgIFtzdHlsZXMucm91bmRlZF06IHJvdW5kZWQsXG4gICAgICAgICAgW3N0eWxlcy5ub1NoYWRvd106IG5vU2hhZG93LFxuICAgICAgICAgIFtzdHlsZXMubm9QYWRkaW5nXTogbm9QYWRkaW5nLFxuICAgICAgICAgIFtzdHlsZXMubm9Cb3JkZXJdOiBub0JvcmRlcixcbiAgICAgICAgICBbc3R5bGVzLnRyYW5zcGFyZW50XTogdHJhbnNwYXJlbnQsXG4gICAgICAgICAgW3N0eWxlcy5zdHJldGNoSG9yaXpvbnRhbGx5XTogc3RyZXRjaEhvcml6b250YWxseSxcbiAgICAgICAgICBbc3R5bGVzLnN0cmV0Y2hWZXJ0aWNhbGx5XTogc3RyZXRjaFZlcnRpY2FsbHksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIHt0eXBlb2YgY2hpbGRyZW4gIT09IFwic3RyaW5nXCIgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4gICAgICBjaGlsZHJlbi5sZW5ndGggPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY29udGVudH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgKSA6IChcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgICl9XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIk05X2VnRUM4bXN1MTM1b1BHVmRJZlwiLFwibGVmdFwiOlwiUlNSYlRnOFljNC1zOGs2cVVfdkNnXCIsXCJzbWFsbFwiOlwiXzFiTlFoYlp3TEE4RXJMbXdkUWl0SmVcIixcImxhcmdlXCI6XCJfMkR3TEZELTRnRHo5SEVBQWl3V0pQcVwiLFwiaW52ZXJ0ZWRcIjpcIl8zMUNmbVRVWXBFaDFoWnZjdFE5bEs0XCIsXCJyb3VuZGVkXCI6XCJfMmJxMzFxS0Q3QjZyNkNUQ09MM2RyV1wiLFwicmlnaHRPZmZzZXRcIjpcIl8yZVVDV1FNRVRPZ2lYdWliN1hmVGhaXCIsXCJsZWZ0T2Zmc2V0XCI6XCJHOG9fT01EVUZzRVExeXRVN29VWUdcIixcIm5vU2hhZG93XCI6XCJfMnZrbmhVRkFJR21qWHM3dGdrQUM3SVwiLFwibm9Cb3JkZXJcIjpcIl8ycDBHcGRtUEtJRkNVZXM1ODRZSGVWXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzh2TWxTUkhfOUhvUkdKaDhTd2thXCIsXCJzdHJldGNoSG9yaXpvbnRhbGx5XCI6XCJuWjlyT1p3ekdYVkkzYXlSZ0EzUUNcIixcInN0cmV0Y2hWZXJ0aWNhbGx5XCI6XCJfMXk4aWZiOTVzcFRMV0dBbXNidzFSMlwiLFwibm9QYWRkaW5nXCI6XCJfM2NPNDlKRUxOS3RHeWFGeFJsc2h5T1wiLFwiY29udGVudFwiOlwibzhkN1lvVDgzdW1lUFBTRnpLMzFZXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIEVsZW1lbnRUeXBlLCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9CdXR0b25MaW5rLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBPZmZzZXRTaWRlID0gXCJsZWZ0XCIgfCBcInJpZ2h0XCI7XG5cbnR5cGUgQnV0dG9uTGlua1Byb3BzID1cbiAgfCB7XG4gICAgICBhcz86IEVsZW1lbnRUeXBlO1xuICAgICAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICAgIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG4gICAgICBpbnZlcnRlZD86IGJvb2xlYW47XG4gICAgICByb3VuZGVkPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgICAgIG5vU2hhZG93PzogYm9vbGVhbjtcbiAgICAgIG5vUGFkZGluZz86IGJvb2xlYW47XG4gICAgICBub0JvcmRlcj86IGJvb2xlYW47XG4gICAgICBzdHJldGNoSG9yaXpvbnRhbGx5PzogYm9vbGVhbjtcbiAgICAgIHN0cmV0Y2hWZXJ0aWNhbGx5PzogYm9vbGVhbjtcbiAgICAgIHNpemU/OiBTaXplO1xuICAgICAgb2Zmc2V0U2lkZXM/OiBBcnJheTxPZmZzZXRTaWRlPjtcbiAgICAgIGFsaWduPzogXCJsZWZ0XCIgfCBcImNlbnRlclwiO1xuICAgIH1cbiAgfCBhbnk7XG5cbmZ1bmN0aW9uIEJ1dHRvbkxpbmsoe1xuICBhczogQ29tcG9uZW50LFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBzaXplLFxuICBjb250YWluZXJSZWYsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHN0cmV0Y2hIb3Jpem9udGFsbHkgPSBmYWxzZSxcbiAgc3RyZXRjaFZlcnRpY2FsbHkgPSBmYWxzZSxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgYWxpZ24gPSBcImNlbnRlclwiLFxuICAuLi5wcm9wc1xufTogQnV0dG9uTGlua1Byb3BzKSB7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgQ29tcG9uZW50ID0gXCJhXCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJidXR0b24tbGlua1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgc3R5bGVzW3NpemVdLFxuICAgICAgICBzdHlsZXNbYWxpZ25dLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5pbnZlcnRlZF06IGludmVydGVkLFxuICAgICAgICAgIFtzdHlsZXMucm91bmRlZF06IHJvdW5kZWQsXG4gICAgICAgICAgW3N0eWxlcy5ub1NoYWRvd106IG5vU2hhZG93LFxuICAgICAgICAgIFtzdHlsZXMubm9QYWRkaW5nXTogbm9QYWRkaW5nLFxuICAgICAgICAgIFtzdHlsZXMubm9Cb3JkZXJdOiBub0JvcmRlcixcbiAgICAgICAgICBbc3R5bGVzLnRyYW5zcGFyZW50XTogdHJhbnNwYXJlbnQsXG4gICAgICAgICAgW3N0eWxlcy5zdHJldGNoSG9yaXpvbnRhbGx5XTogc3RyZXRjaEhvcml6b250YWxseSxcbiAgICAgICAgICBbc3R5bGVzLnN0cmV0Y2hWZXJ0aWNhbGx5XTogc3RyZXRjaFZlcnRpY2FsbHksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge3R5cGVvZiBjaGlsZHJlbiAhPT0gXCJzdHJpbmdcIiAmJlxuICAgICAgQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiZcbiAgICAgIGNoaWxkcmVuLmxlbmd0aCA/IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250ZW50fT57Y2hpbGRyZW59PC9kaXY+XG4gICAgICApIDogKFxuICAgICAgICBjaGlsZHJlblxuICAgICAgKX1cbiAgICA8L0NvbXBvbmVudD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uTGluaztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8zZVZCZ21rRzZoalZva201WHk0VU1RXCIsXCJsZWZ0XCI6XCJfM0Y2aE1FUWtKZ3l3VWt0MWZ3bVRzeVwiLFwic21hbGxcIjpcIl84STlmaG56Yk12Q3JsNUtQajlmMFwiLFwibWVkaXVtXCI6XCJjc2o0UEtRZ2RQQmVGN1JkNVotV1FcIixcImxhcmdlXCI6XCJfM19Td3FtRFdPR3Y4NzdpSEFDbkpwQ1wiLFwiaW52ZXJ0ZWRcIjpcIl8xeE9hM0NCUkh6UENSV05zaUo2NWFDXCIsXCJyb3VuZGVkXCI6XCJfM1VHbE9JdHpLb2tWZzB3R0gwZUlsWFwiLFwicmlnaHRPZmZzZXRcIjpcIl8xM3RQc3A2ZGZBMVR3YjFNTUhSaUdUXCIsXCJsZWZ0T2Zmc2V0XCI6XCJOSTVuNmJFVlJDUVB5NkFPQXNRMXFcIixcIm5vU2hhZG93XCI6XCJnSVk5aXV2QzJWV3hjdnd3Q21hSkpcIixcInRyYW5zcGFyZW50XCI6XCJfM1hmbGgzUTFBWm5UT0QwY3RxdUk2d1wiLFwic3RyZXRjaEhvcml6b250YWxseVwiOlwiXzJGYlJERUdTXzdlTVVjSjBWaU9CVTBcIixcInN0cmV0Y2hWZXJ0aWNhbGx5XCI6XCJfMXJQbS10NVpXd3JTLUw5bDd6NjZqYlwiLFwibm9QYWRkaW5nXCI6XCJfM0o4RGVhTHE1aXczQXA3cUtKa1A5QlwiLFwibm9Cb3JkZXJcIjpcIl8zY0VRcy1LX21TaEZORGdEUDMyV2Q2XCIsXCJjb250ZW50XCI6XCJfMVZUeWZUd1Zsb0FjWndZQ1p5c2xzSlwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIENoZWNrYm94IH0gZnJvbSBcIi4vQ2hlY2tib3hcIjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uL0xhYmVsXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0NoZWNrYm94Lm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IFNpemUsIFRleHRJbnB1dFR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBDaGVja2JveFByb3BzID0ge1xuICBsYWJlbD86IHN0cmluZztcbiAgb25DaGFuZ2U6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGNoZWNrZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHNpemU/OiBTaXplO1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIENoZWNrYm94KHtcbiAgbGFiZWwsXG4gIG9uQ2hhbmdlLFxuICBwbGFjZWhvbGRlcixcbiAgY2hlY2tlZCxcbiAgZGlzYWJsZWQsXG4gIG5hbWUsXG4gIGluZGV0ZXJtaW5hdGUsXG4gIHNpemUgPSBcInNtYWxsXCIsXG4gIGF1dG9Gb2N1cyA9IGZhbHNlLFxufTogQ2hlY2tib3hQcm9wcykge1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuRm9ybUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICAgICAgb25DaGFuZ2UoKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQpLFxuICAgIFtvbkNoYW5nZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxMYWJlbCB2YWx1ZT17bGFiZWx9PlxuICAgICAgPGlucHV0XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2hlY2tib3hcIlxuICAgICAgICByZWY9eyhpbnB1dFJlZikgPT4ge1xuICAgICAgICAgIGlmIChpbnB1dFJlZikge1xuICAgICAgICAgICAgaW5wdXRSZWYuaW5kZXRlcm1pbmF0ZSA9IGluZGV0ZXJtaW5hdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5pbnB1dCwgc3R5bGVzW3NpemVdXSl9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgYXV0b0ZvY3VzPXthdXRvRm9jdXN9XG4gICAgICAvPlxuICAgIDwvTGFiZWw+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94O1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlZk9iamVjdCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTGFiZWwubW9kdWxlLmNzc1wiO1xuXG50eXBlIExhYmVsSW5wdXRQcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MTGFiZWxFbGVtZW50PjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIExhYmVsKHsgY2hpbGRyZW4sIHZhbHVlLCBjb250YWluZXJSZWYgfTogTGFiZWxJbnB1dFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIHJlZj17Y29udGFpbmVyUmVmfSBjbGFzc05hbWU9e3N0eWxlcy5jb250YWluZXJ9PlxuICAgICAge3ZhbHVlfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvbGFiZWw+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExhYmVsO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzJxbDI3Ymxsc1FYMzlSM0UydVJxZy1cIn07IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImlucHV0XCI6XCJwT0JkeUFDdGR5Skc2TUlfLU40czZcIixcInNtYWxsXCI6XCJfMkJjekh6Z056YUZBUWtzdU4xM1F1XCIsXCJtZWRpdW1cIjpcIl8zUHMxUVgxSXRsOTNKTF9INU9wblp5XCIsXCJsYXJnZVwiOlwiXzN2SFVNN0dobnFRaE1rSTAxZ282UG5cIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBDb2xvclBpY2tlciB9IGZyb20gXCIuL0NvbG9yUGlja2VyXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IENvbG9yU3dhdGNoIH0gZnJvbSBcIi4uL0NvbG9yU3dhdGNoXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0NvbG9yUGlja2VyLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IENvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgQ29sb3JQaWNrZXJQcm9wcyA9IHtcbiAgY29sb3JzOiBDb2xvcltdO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xuICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIjtcbiAgb25TZWxlY3Q6IChjb2xvcjogQ29sb3IpID0+IHZvaWQ7XG4gIHNlbGVjdGVkQ29sb3I/OiBDb2xvcjtcbn07XG5cbmZ1bmN0aW9uIENvbG9yUGlja2VyKHtcbiAgY29sb3JzLFxuICBjb250YWluZXJSZWYsXG4gIG9uU2VsZWN0LFxuICBzZWxlY3RlZENvbG9yLFxuICBkaXJlY3Rpb24gPSBcInZlcnRpY2FsXCIsXG59OiBDb2xvclBpY2tlclByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMuY29sb3JQaWNrZXIsIHN0eWxlc1tkaXJlY3Rpb25dXSl9XG4gICAgPlxuICAgICAge2NvbG9ycy5tYXAoKGNvbG9yOiBDb2xvcikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxDb2xvclN3YXRjaFxuICAgICAgICAgICAga2V5PXtjb2xvci5rZXl9XG4gICAgICAgICAgICBjb2xvcj17Y29sb3J9XG4gICAgICAgICAgICBpc1NlbGVjdGVkPXtjb2xvciA9PT0gc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2VsZWN0KGNvbG9yKX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yUGlja2VyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0NvbG9yU3dhdGNoLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IENvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgQ29sb3JTd2F0Y2hQcm9wcyA9IHtcbiAgY29sb3I6IENvbG9yO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbiAgb25DbGljazogKCkgPT4gdm9pZDtcbn07XG5cbmZ1bmN0aW9uIENvbG9yU3dhdGNoKHtcbiAgY29sb3IsXG4gIGNvbnRhaW5lclJlZixcbiAgb25DbGljayxcbiAgaXNTZWxlY3RlZCA9IGZhbHNlLFxufTogQ29sb3JTd2F0Y2hQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb2xvclN3YXRjaCxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuc2VsZWN0ZWRdOiBpc1NlbGVjdGVkLFxuICAgICAgICB9LFxuICAgICAgXSl9XG4gICAgICBkYXRhLXRlc3RpZD1cImNvbG9yLXN3YXRjaFwiXG4gICAgICBkaXNhYmxlZD17aXNTZWxlY3RlZH1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmhleENvZGUgfX1cbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zck9ubHl9PntgU2VsZWN0ICR7Y29sb3IubGFiZWx9IGNvbG9yYH08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yU3dhdGNoO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbG9yU3dhdGNoXCI6XCJfMTNzczF4c01OaXp2RWdQX2h4RVY4QlwiLFwic2VsZWN0ZWRcIjpcIkw2ZkF0NlJaWXpfejN3UGJqWkV4SFwiLFwic3JPbmx5XCI6XCJfM3ZKNW14cHphWXNLYXhmLTh0QjMxeFwifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29sb3JQaWNrZXJcIjpcIl8zMUZ3SF9uV3I3MmszcHVnQXBKdWI5XCIsXCJob3Jpem9udGFsXCI6XCJRYS1CcHVUVDJreHBtVl9BUWdDakhcIixcInZlcnRpY2FsXCI6XCJfMng0U0FuYm9weVpta3ljV0xDMEVYa1wifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIENvbmZpcm1hdGlvbk1vZGFsIH0gZnJvbSBcIi4vQ29uZmlybWF0aW9uTW9kYWxcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdEVsZW1lbnQsIFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcIi4uL01vZGFsXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0NvbmZpcm1hdGlvbk1vZGFsLm1vZHVsZS5jc3NcIjtcblxudHlwZSBDb25maXJtYXRpb25Nb2RhbFByb3BzID0ge1xuICBidXR0b25zTGVmdD86IFJlYWN0RWxlbWVudFtdO1xuICBidXR0b25zUmlnaHQ/OiBSZWFjdEVsZW1lbnRbXTtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gIGhlYWRlcjogc3RyaW5nO1xuICBpc09wZW46IGJvb2xlYW47XG4gIG5vUGFkZGluZz86IGJvb2xlYW47XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xufTtcblxuZnVuY3Rpb24gQ29uZmlybWF0aW9uTW9kYWwoe1xuICBjaGlsZHJlbixcbiAgY29udGFpbmVyUmVmLFxuICBoZWFkZXIsXG4gIGlzT3BlbixcbiAgYnV0dG9uc0xlZnQgPSBbXSxcbiAgYnV0dG9uc1JpZ2h0ID0gW10sXG4gIG9uQ2xvc2UgPSAoKSA9PiB7fSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG59OiBDb25maXJtYXRpb25Nb2RhbFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPE1vZGFsIGNvbnRhaW5lclJlZj17Y29udGFpbmVyUmVmfSBpc09wZW49e2lzT3Blbn0gb25DbG9zZT17b25DbG9zZX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRhaW5lcn0+XG4gICAgICAgIDxoMSBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEhlYWRlcn0+e2hlYWRlcn08L2gxPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgICAgICBzdHlsZXMubW9kYWxDb250ZW50LFxuICAgICAgICAgICAgeyBbc3R5bGVzLm5vUGFkZGluZ106IG5vUGFkZGluZyB9LFxuICAgICAgICAgIF0pfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCdXR0b25zfT57YnV0dG9uc0xlZnR9PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJ1dHRvbnN9PntidXR0b25zUmlnaHR9PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Nb2RhbD5cbiAgKTtcbn1cblxuQ29uZmlybWF0aW9uTW9kYWwuZGlzcGxheU5hbWUgPSBcIkNvbmZpcm1hdGlvbk1vZGFsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IENvbmZpcm1hdGlvbk1vZGFsO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCBSZWFjdE5vZGUsIFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlSG90a2V5cyB9IGZyb20gXCJyZWFjdC1ob3RrZXlzLWhvb2tcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Nb2RhbC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTW9kYWxQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAgYnV0dG9uPzogUmVhY3ROb2RlO1xufTtcblxuZnVuY3Rpb24gTW9kYWwoe1xuICBjaGlsZHJlbixcbiAgY29udGFpbmVyUmVmLFxuICBpc09wZW4sXG4gIGJ1dHRvbixcbiAgb25DbG9zZSA9ICgpID0+IHt9LFxufTogTW9kYWxQcm9wcykge1xuICB1c2VIb3RrZXlzKFwiRXNjYXBlXCIsIG9uQ2xvc2UpO1xuXG4gIGNvbnN0IGhhbmRsZU92ZXJsYXlDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBvbkNsb3NlKCk7XG4gIH0sIFtvbkNsb3NlXSk7XG5cbiAgcmV0dXJuIChcbiAgICBpc09wZW4gJiYgKFxuICAgICAgPGRpdiByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vdmVybGF5fVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibW9kYWwtb3ZlcmxheVwiXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlT3ZlcmxheUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsfSBkYXRhLXRlc3RpZD1cIm1vZGFsXCI+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge2J1dHRvbiAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsQnV0dG9ufT57YnV0dG9ufTwvZGl2Pn1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTW9kYWw7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wib3ZlcmxheVwiOlwiXzF5eENiUUpxU3RVdnl0dktFZU5DM25cIixcIm1vZGFsXCI6XCJEOFNqQngzaWt6NjM2WXVibkhZQVlcIixcIm1vZGFsQnV0dG9uXCI6XCJvOFZSVnhNcnMxeFhhdkFEeXhqTEdcIn07IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwia2tnSG9CUWhGUHNLal94MVpGZFJIXCIsXCJtb2RhbEhlYWRlclwiOlwiXzFXdXZIRC1HZFhMcnRxd2EwNFcxcXlcIixcIm1vZGFsQ29udGVudFwiOlwiXzI3ZVV5U1FxdnE1cWxvTkNsSWpJU1RcIixcIm5vUGFkZGluZ1wiOlwiXzJndEJYTDlQRlNwSHNXMEE5eGQ1NVNcIixcIm1vZGFsQnV0dG9uc0NvbnRhaW5lclwiOlwiXzVnSXB5RjNYNXRoUFFBbnNBQzR6OVwiLFwibW9kYWxCdXR0b25zXCI6XCJzd3NvQ2lpMXc0eE5sN2lvRFZrTzVcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBGbG9hdGluZ1BhbmVsIH0gZnJvbSBcIi4vRmxvYXRpbmdQYW5lbFwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vRmxvYXRpbmdQYW5lbC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgUGxhY2VtZW50ID0ge1xuICBob3Jpem9udGFsOlxuICAgIHwgXCJyaWdodFwiXG4gICAgfCBcInJpZ2h0RWRnZVwiXG4gICAgfCBcInJpZ2h0T25FZGdlXCJcbiAgICB8IFwibGVmdFwiXG4gICAgfCBcImxlZnRFZGdlXCJcbiAgICB8IFwibGVmdE9uRWRnZVwiXG4gICAgfCBcImxlZnRPbkVkZ2VcIlxuICAgIHwgXCJjZW50ZXJcIjtcbiAgdmVydGljYWw6XG4gICAgfCBcInRvcFwiXG4gICAgfCBcInRvcEVkZ2VcIlxuICAgIHwgXCJib3R0b21cIlxuICAgIHwgXCJib3R0b21FZGdlXCJcbiAgICB8IFwiYm90dG9tT25FZGdlXCJcbiAgICB8IFwiY2VudGVyXCI7XG4gIHBhcmVudDogXCJ2aWV3cG9ydFwiIHwgXCJjb250YWluZXJcIjtcbn07XG5cbnR5cGUgRmxvYXRpbmdQYW5lbFByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xuICBsYXlvdXQ/OiBcImNvbHVtblwiIHwgXCJyb3dcIjtcbiAgcGxhY2VtZW50PzogUGxhY2VtZW50O1xufTtcblxuZnVuY3Rpb24gRmxvYXRpbmdQYW5lbCh7XG4gIGNoaWxkcmVuLFxuICBjb250YWluZXJSZWYsXG4gIGxheW91dCA9IFwiY29sdW1uXCIsXG4gIHBsYWNlbWVudCA9IHsgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiwgdmVydGljYWw6IFwiYm90dG9tXCIsIHBhcmVudDogXCJ2aWV3cG9ydFwiIH0sXG59OiBGbG9hdGluZ1BhbmVsUHJvcHMpIHtcbiAgY29uc3QgaG9yaXpvbnRhbFBsYWNlbWVudCA9XG4gICAgcGxhY2VtZW50Lmhvcml6b250YWwgPT09IFwiY2VudGVyXCJcbiAgICAgID8gXCJob3Jpem9udGFsQ2VudGVyXCJcbiAgICAgIDogcGxhY2VtZW50Lmhvcml6b250YWw7XG5cbiAgY29uc3QgdmVydGljYWxQbGFjZW1lbnQgPVxuICAgIHBsYWNlbWVudC52ZXJ0aWNhbCA9PT0gXCJjZW50ZXJcIiA/IFwidmVydGljYWxDZW50ZXJcIiA6IHBsYWNlbWVudC52ZXJ0aWNhbDtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJmbG9hdGluZy1wYW5lbFwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgc3R5bGVzW2hvcml6b250YWxQbGFjZW1lbnRdLFxuICAgICAgICBzdHlsZXNbdmVydGljYWxQbGFjZW1lbnRdLFxuICAgICAgICBzdHlsZXNbbGF5b3V0XSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuZml4ZWRdOiBwbGFjZW1lbnQucGFyZW50ICE9PSBcImNvbnRhaW5lclwiLFxuICAgICAgICB9LFxuICAgICAgXSl9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBGbG9hdGluZ1BhbmVsO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiYTZOSE8yQ1ZWQ2Zpbml5ZTJYTE4tXCIsXCJyb3dcIjpcIl8zUlNnQjc2ckVCbmlQYzJZY3I4WmJ2XCIsXCJjb2x1bW5cIjpcIl8xSmtYMTVpZ2NsbmJtNXNSU2NXVkRZXCIsXCJmaXhlZFwiOlwiTU1RMXlqRWFmV2tZRlZESE1wVGJJXCIsXCJwbGFpblwiOlwiXzNtMk1fTmFyYzV4d0xheThISmxqa2NcIixcInRyYW5zcGFyZW50XCI6XCJfMXJmYTQ5emhaeE5pZno2NE9xYl82UFwiLFwidG9wXCI6XCJfa1VhbG5EZUVmdnpxQWppMEFNRG9cIixcInRvcEVkZ2VcIjpcIlc4SkFJd0xqTzhKUUdidmlacFBRd1wiLFwidG9wT25FZGdlXCI6XCJfM29wSjdFYjZ0ajM5NHVWOGE1N2l4elwiLFwicmlnaHRcIjpcIl8zLXZid2pwMGFQY0xFVjFTeDBJQ2dQXCIsXCJyaWdodEVkZ2VcIjpcIl8zWE5GeTVab01Db1lCSWFiZUdONEJRXCIsXCJyaWdodE9uRWRnZVwiOlwiXzEyYzNDelVNUUU4QUczQUw4SGlraTJcIixcImJvdHRvbVwiOlwiXzNnZUJFTkg1b0VycUdkdC1ReUhuUGhcIixcImJvdHRvbUVkZ2VcIjpcIl8zX3NhTTRHczMyblJiSUhIeElFYkY2XCIsXCJib3R0b21PbkVkZ2VcIjpcIl8yUExFNGRtR2huY2drLWxFbm9VNGt2XCIsXCJsZWZ0XCI6XCJfMWlTQm55WmdQZUZVV29NNGk2ZFNwVVwiLFwibGVmdEVkZ2VcIjpcIl8xZlgxOXFJT1NobjJvNXV1c1J6VGdzXCIsXCJsZWZ0T25FZGdlXCI6XCJLQkhEb2NrdUhURU9LTUdPemFkWGlcIixcImhvcml6b250YWxDZW50ZXJcIjpcIl8zMXQ2dEhSSjVzLTVEY0RMRlRLaDFtXCIsXCJ2ZXJ0aWNhbENlbnRlclwiOlwiXzJocTdma0RYSHhyeHoydDdMTGc0XzlcIn07IiwiaW1wb3J0IFJlYWN0LCB7IFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9JY29uLm1vZHVsZS5jc3NcIjtcblxudHlwZSBJY29uUHJvcHMgPSB7XG4gIGFsdD86IHN0cmluZztcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxJbWFnZUVsZW1lbnQ+O1xuICBpbnZlcnRlZD86IGJvb2xlYW47XG4gIHNyYzogc3RyaW5nO1xuICBzaXplPzogXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIjtcbn07XG5mdW5jdGlvbiBJY29uKHtcbiAgc3JjLFxuICBhbHQsXG4gIGNvbnRhaW5lclJlZixcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIGludmVydGVkID0gZmFsc2UsXG59OiBJY29uUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aW1nXG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuaWNvbixcbiAgICAgICAgc3R5bGVzW3NpemVdLFxuICAgICAgICB7IFtzdHlsZXMuaW52ZXJ0ZWRdOiBpbnZlcnRlZCB9LFxuICAgICAgXSl9XG4gICAgICBjcm9zc09yaWdpbj1cImFub255bW91c1wiXG4gICAgICBkYXRhLXRlc3RpZD1cImljb25cIlxuICAgICAgYWx0PXthbHR9XG4gICAgICBzcmM9e3NyY31cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBJY29uO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImljb25cIjpcInVoOHprbVFwNXliazVXSlNsYTY5RFwiLFwic21hbGxcIjpcIl85RElDdHFtUVNuTFBqbTFYSTdZVnNcIixcIm1lZGl1bVwiOlwic0pweGZZZ2lUejdpazZKT0d1MXdpXCIsXCJsYXJnZVwiOlwiXzJyZ3VjQUg4Qm5saS1jbWp6OWkyQzJcIixcImludmVydGVkXCI6XCJJLWVJNXE4cmQyYlNwOUItRmhVemFcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBJY29uQnV0dG9uIH0gZnJvbSBcIi4vSWNvbkJ1dHRvblwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlZk9iamVjdCwgU3ludGhldGljRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ljb25CdXR0b24ubW9kdWxlLmNzc1wiO1xuXG50eXBlIEljb25CdXR0b25Qcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBzcmM6IHN0cmluZztcbiAgYWx0OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICBub1NoYWRvdz86IGJvb2xlYW47XG4gIG5vQm9yZGVyPzogYm9vbGVhbjtcbiAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICByb3VuZGVkPzogYm9vbGVhbjtcbiAgb25DbGljaz86IChldmVudD86IFN5bnRoZXRpY0V2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4gdm9pZDtcbiAgc2l6ZT86IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCI7XG4gIHR5cGU/OiBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIHwgXCJidXR0b25cIjtcbiAgb2Zmc2V0U2lkZXM/OiBBcnJheTxcInRvcFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIiB8IFwibGVmdFwiPjtcbn07XG5cbmZ1bmN0aW9uIEljb25CdXR0b24oe1xuICBjbGFzc05hbWUsXG4gIGNvbnRhaW5lclJlZixcbiAgc3JjLFxuICBhbHQsXG4gIG9mZnNldFNpZGVzID0gW10sXG4gIG9uQ2xpY2sgPSAoKSA9PiB7fSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgaW52ZXJ0ZWQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9Cb3JkZXIgPSBmYWxzZSxcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZSxcbiAgcm91bmRlZCA9IGZhbHNlLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgdHlwZSA9IFwiYnV0dG9uXCIsXG59OiBJY29uQnV0dG9uUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQsXG4gICAgICAgICAgW3N0eWxlcy5yb3VuZGVkXTogcm91bmRlZCxcbiAgICAgICAgICBbc3R5bGVzLm5vU2hhZG93XTogbm9TaGFkb3csXG4gICAgICAgICAgW3N0eWxlcy5ub0JvcmRlcl06IG5vQm9yZGVyLFxuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLnRvcE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJ0b3BcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgICBbc3R5bGVzLmJvdHRvbU9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJib3R0b21cIiksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIHR5cGU9e3R5cGV9XG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8SWNvbiBzcmM9e3NyY30gYWx0PXthbHR9IHNpemU9e3NpemV9IGludmVydGVkPXtpbnZlcnRlZH0gLz5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSWNvbkJ1dHRvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8yTVB1SjNBcHZyQXZyZXdqU1dHQUEyXCIsXCJzbWFsbFwiOlwibE9rb2FuN2RicC1nb0R0SlZ1SzdCXCIsXCJtZWRpdW1cIjpcIl8zYTljV3RzX1k3eDNwYWprOHVtTjN6XCIsXCJsYXJnZVwiOlwiXzJhRzZ6WHFURUtWY3ZCYWFuaUNOQnlcIixcInJvdW5kZWRcIjpcIl8ySlgwMzRxVVRDb1RkV0MycHBBNDg3XCIsXCJ0b3BPZmZzZXRcIjpcIl8xd3BDLVdYZ0wwNlFLeHRQek93TlJLXCIsXCJyaWdodE9mZnNldFwiOlwiTEl6clFDN3BvUVQ5alVSQnFNREtoXCIsXCJib3R0b21PZmZzZXRcIjpcIl8yaV93NVVMa1VLN0xWdzVoRU85N0V3XCIsXCJsZWZ0T2Zmc2V0XCI6XCJfMzhlS2xUUVRWMVlsbkVlMUdtTnRRa1wiLFwiaW52ZXJ0ZWRcIjpcIl8yTmtaNTBya0EzZVpDeXNZOUZBcC1lXCIsXCJub1NoYWRvd1wiOlwiXzNVeTVIWmR2a1dmN2JpbFQwd3h3VmVcIixcIm5vQm9yZGVyXCI6XCJfMkY0SHk5bHE1T0NyRXBQWlBoNXhBSlwiLFwidHJhbnNwYXJlbnRcIjpcIl8ydTdxVE1lRTlENXJ0Y3NFY1NvQVkzXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvbkJ1dHRvbkxpbmsgfSBmcm9tIFwiLi9JY29uQnV0dG9uTGlua1wiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IEVsZW1lbnRUeXBlLCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ljb25CdXR0b25MaW5rLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxudHlwZSBPZmZzZXRTaWRlID0gXCJ0b3BcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCIgfCBcImxlZnRcIjtcblxudHlwZSBJY29uQnV0dG9uTGlua1Byb3BzID1cbiAgfCB7XG4gICAgICBhcz86IEVsZW1lbnRUeXBlO1xuICAgICAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxFbGVtZW50PjtcbiAgICAgIHNyYzogc3RyaW5nO1xuICAgICAgYWx0OiBzdHJpbmc7XG4gICAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgICBpbnZlcnRlZD86IGJvb2xlYW47XG4gICAgICByb3VuZGVkPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgICAgIG5vU2hhZG93PzogYm9vbGVhbjtcbiAgICAgIG5vQm9yZGVyPzogYm9vbGVhbjtcbiAgICAgIHNpemU/OiBTaXplO1xuICAgICAgb2Zmc2V0U2lkZXM/OiBBcnJheTxPZmZzZXRTaWRlPjtcbiAgICB9XG4gIHwgYW55O1xuXG5mdW5jdGlvbiBJY29uQnV0dG9uTGluayh7XG4gIGFzOiBDb21wb25lbnQsXG4gIGNvbnRhaW5lclJlZixcbiAgY2xhc3NOYW1lLFxuICBzcmMsXG4gIGFsdCxcbiAgaW52ZXJ0ZWQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9Cb3JkZXIgPSBmYWxzZSxcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZSxcbiAgcm91bmRlZCA9IGZhbHNlLFxuICBvZmZzZXRTaWRlcyA9IFtdLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgLi4ucHJvcHNcbn06IEljb25CdXR0b25MaW5rUHJvcHMpIHtcbiAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBDb21wb25lbnQgPSBcImFcIjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbXBvbmVudFxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBkYXRhLXRlc3RpZD1cImljb24tYnV0dG9uLWxpbmtcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuaW52ZXJ0ZWRdOiBpbnZlcnRlZCxcbiAgICAgICAgICBbc3R5bGVzLnJvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICAgIFtzdHlsZXMubm9TaGFkb3ddOiBub1NoYWRvdyxcbiAgICAgICAgICBbc3R5bGVzLm5vQm9yZGVyXTogbm9Cb3JkZXIsXG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMudG9wT2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInRvcFwiKSxcbiAgICAgICAgICBbc3R5bGVzLnJpZ2h0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInJpZ2h0XCIpLFxuICAgICAgICAgIFtzdHlsZXMuYm90dG9tT2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImJvdHRvbVwiKSxcbiAgICAgICAgICBbc3R5bGVzLmxlZnRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwibGVmdFwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPEljb24gc3JjPXtzcmN9IGFsdD17YWx0fSBzaXplPXtzaXplfSBpbnZlcnRlZD17aW52ZXJ0ZWR9IC8+XG4gICAgPC9Db21wb25lbnQ+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEljb25CdXR0b25MaW5rO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzF1aWZtS05QRHpkdTVZRG5oZ3dQUUtcIixcInNtYWxsXCI6XCJwZkhjWWFldy1Ickh0VE51UjR2N2hcIixcImxhcmdlXCI6XCJfMjZaOUZILUNOUHFmNTVaUlAxdm5hYlwiLFwicm91bmRlZFwiOlwiXzJxN1d2Uk9oTm0zZ3NSSVJhUVFlYVVcIixcInRvcE9mZnNldFwiOlwid1p5X3Z1bFprTWJXU1gwYWtjWkhBXCIsXCJyaWdodE9mZnNldFwiOlwiXzJqaGhwbTYwX3lQRWZ4US13YXpqLTVcIixcImJvdHRvbU9mZnNldFwiOlwiRG5uckc3WlhtVElobVdVY3M5OW0xXCIsXCJsZWZ0T2Zmc2V0XCI6XCJfMVlkQ2c3VDZYamhteHdjakxOU0ViLVwiLFwiaW52ZXJ0ZWRcIjpcIkhWMFItbHF3bXllcXNTMVo4cG9aU1wiLFwibm9TaGFkb3dcIjpcIl8xTFBwdDcwSmppbTZTZlplMzVHMmtiXCIsXCJub0JvcmRlclwiOlwiUmt6U3JHaXhNMjhKTWF0NklCNUxyXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzFLZFhmWTNQazZ0RU5ZSDgxdFdycHNcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBJbWFnZSB9IGZyb20gXCIuL0ltYWdlXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmLCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9JbWFnZS5tb2R1bGUuY3NzXCI7XG5cbmV4cG9ydCBjb25zdCBlbXB0eUltYWdlID1cbiAgXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFFQUFBQUJDQVFBQUFDMUhBd0NBQUFBQzBsRVFWUjQybU5rWUFBQUFBWUFBakNCMEM4QUFBQUFTVVZPUks1Q1lJST1cIjsgLy8gMXgxcG5nXG5cbnR5cGUgSW1hZ2VQcm9wcyA9IHtcbiAgYW5pbWF0aW9uPzogXCJmYWRlSW5cIiB8IFwic2NhbGVVcFwiO1xuICBhbHQ/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xuICBsYXlvdXQ/OiBcImNvdmVyXCIgfCBcImNvbnRhaW5cIiB8IFwic3RyZXRjaEhvcml6b250YWxseVwiIHwgXCJzdHJldGNoVmVydGljYWxseVwiO1xuICBzcmM6IHN0cmluZztcbiAgc3JjV2lkdGg/OiBudW1iZXI7XG4gIHNyY0hlaWdodD86IG51bWJlcjtcbn07XG5cbmZ1bmN0aW9uIEltYWdlQ29tcG9uZW50KHtcbiAgc3JjLFxuICBhbHQsXG4gIHNyY1dpZHRoLFxuICBzcmNIZWlnaHQsXG4gIGNoaWxkcmVuLFxuICBhbmltYXRpb24sXG4gIGNvbnRhaW5lclJlZixcbiAgbGF5b3V0ID0gXCJjb250YWluXCIsXG59OiBJbWFnZVByb3BzKSB7XG4gIGNvbnN0IFtpc0xvYWRlZCwgc2V0SXNMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpbWFnZVJlZiA9IHVzZVJlZihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgIGltYWdlLmNyb3NzT3JpZ2luID0gXCJhbm9ueW1vdXNcIjtcbiAgICBpbWFnZS5zcmMgPSBzcmM7XG4gICAgaW1hZ2Uub25sb2FkID0gKCkgPT4ge1xuICAgICAgaW1hZ2VSZWYuY3VycmVudD8uc2V0QXR0cmlidXRlKFwic3JjXCIsIHNyYyk7XG4gICAgICBzZXRJc0xvYWRlZCh0cnVlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGltYWdlLnNyYyA9IFwiXCI7XG4gICAgICBkZWxldGUgaW1hZ2Uub25sb2FkO1xuICAgICAgZGVsZXRlIGltYWdlLnNyYztcbiAgICAgIGRlbGV0ZSBpbWFnZS5jcm9zc09yaWdpbjtcbiAgICAgIGltYWdlID0gbnVsbDtcbiAgICB9O1xuICB9LCBbc3JjXSk7XG5cbiAgcmV0dXJuIGNoaWxkcmVuID8gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmNvbnRhaW5lciwgc3R5bGVzLmhhc092ZXJsYXldKX1cbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIHJlZj17aW1hZ2VSZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICAgIHN0eWxlcy5pbWFnZSxcbiAgICAgICAgICBzdHlsZXNbbGF5b3V0XSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbc3R5bGVzLmZhZGVJbl06IGFuaW1hdGlvbiA9PT0gXCJmYWRlSW5cIiAmJiBpc0xvYWRlZCxcbiAgICAgICAgICAgIFtzdHlsZXMuc2NhbGVVcF06IGFuaW1hdGlvbiA9PT0gXCJzY2FsZVVwXCIgJiYgaXNMb2FkZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSl9XG4gICAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJpbWFnZVwiXG4gICAgICAgIGFsdD17YWx0fVxuICAgICAgICBzcmM9e2VtcHR5SW1hZ2V9XG4gICAgICAgIHdpZHRoPXtzcmNXaWR0aH1cbiAgICAgICAgaGVpZ2h0PXtzcmNIZWlnaHR9XG4gICAgICAvPlxuICAgICAge2NoaWxkcmVuICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3ZlcmxheX0+e2NoaWxkcmVufTwvZGl2Pn1cbiAgICA8L2Rpdj5cbiAgKSA6IChcbiAgICA8aW1nXG4gICAgICByZWY9e2ltYWdlUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5pbWFnZSxcbiAgICAgICAgc3R5bGVzW2xheW91dF0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmZhZGVJbl06IGFuaW1hdGlvbiA9PT0gXCJmYWRlSW5cIiAmJiBpc0xvYWRlZCxcbiAgICAgICAgICBbc3R5bGVzLnNjYWxlVXBdOiBhbmltYXRpb24gPT09IFwic2NhbGVVcFwiICYmIGlzTG9hZGVkLFxuICAgICAgICB9LFxuICAgICAgXSl9XG4gICAgICBjcm9zc09yaWdpbj1cImFub255bW91c1wiXG4gICAgICBkYXRhLXRlc3RpZD1cImltYWdlXCJcbiAgICAgIGFsdD17YWx0fVxuICAgICAgc3JjPXtlbXB0eUltYWdlfVxuICAgICAgd2lkdGg9e3NyY1dpZHRofVxuICAgICAgaGVpZ2h0PXtzcmNIZWlnaHR9XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSW1hZ2VDb21wb25lbnQ7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJfM3p3bG44eHBrWndwVFk1aTZKN2JPRFwiLFwiaGFzT3ZlcmxheVwiOlwiXzJlbDh4V3FxZjN3NFMzeDBzMkQ5eGxcIixcIm92ZXJsYXlcIjpcIkVnM2ltZmJYZEk2VTZyZlJFMC1xT1wiLFwiaW1hZ2VcIjpcInQxODk3ZGZ0c19wcUh6U253bVdCV1wiLFwiY292ZXJcIjpcIl8xLVJfSERqTzZxTm55d2NOaVM4YnlEXCIsXCJjb250YWluXCI6XCJfM21EcENqSEoyZzY2ZTB3NFIyRVprR1wiLFwic3RyZXRjaEhvcml6b250YWxseVwiOlwiXzN5RXRIN2NxcFVsVkZhR2lXRzEyOXdcIixcInN0cmV0Y2hWZXJ0aWNhbGx5XCI6XCJseWlCczZPQnh2UkVud0lSMGxzMkNcIixcImZhZGVJblwiOlwiXzJPS0p3OFVkdDkxNklYbVRsVDk4NllcIixcImZhZGVJbkFuaW1hdGlvblwiOlwiTm9PVnJXNDY2SHRrNkVwWjF3WWlJXCIsXCJzY2FsZVVwXCI6XCJfMzA5VlRxalZIcFZKSHV5QVFhX2FaaVwiLFwic2NhbGVVcEFuaW1hdGlvblwiOlwiXzNpY2JKcmUwUEo3TUZuWFFpQ1lfcTZcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBMaXN0VmlldyB9IGZyb20gXCIuL0xpc3RWaWV3XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIExpc3RWaWV3SXRlbSB9IGZyb20gXCIuL0xpc3RWaWV3SXRlbVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaXN0Vmlld0xpbmtJdGVtIH0gZnJvbSBcIi4vTGlzdFZpZXdMaW5rSXRlbVwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTGlzdFZpZXcubW9kdWxlLmNzc1wiO1xuXG50eXBlIExpc3RWaWV3UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgY29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgaGVhZGVyPzogc3RyaW5nO1xuICBoZWFkZXJBY3Rpb25zPzogUmVhY3ROb2RlO1xufTtcblxuZnVuY3Rpb24gTGlzdFZpZXcoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb250YWluZXJSZWYsXG4gIGhlYWRlcixcbiAgaGVhZGVyQWN0aW9ucyxcbn06IExpc3RWaWV3UHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17Y29udGFpbmVyUmVmfSBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMuY29udGFpbmVyLCBjbGFzc05hbWVdKX0+XG4gICAgICB7KGhlYWRlciB8fCBoZWFkZXJBY3Rpb25zKSAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICB7aGVhZGVyICYmIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJMYWJlbH0+e2hlYWRlcn08L2gzPn1cbiAgICAgICAgICB7aGVhZGVyQWN0aW9uc31cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPHVsIGNsYXNzTmFtZT17c3R5bGVzLmxpc3R9PntjaGlsZHJlbn08L3VsPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMaXN0VmlldztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIkNQSE5kOG9zS2pMdlFERVFVRXJ1eFwiLFwiaGVhZGVyXCI6XCJfMWU3aEhTVm81OWU4eVFuaGM5QjZJZFwiLFwiaGVhZGVyTGFiZWxcIjpcIl8yaUJMLVNSRVRSVGhER284d191NFNoXCIsXCJsaXN0XCI6XCJfMXcxVzhFNl9IemZlczNXWlRZWmFKS1wifTsiLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9CdXR0b25cIjtcbmltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTGlzdFZpZXdJdGVtLm1vZHVsZS5jc3NcIjtcblxudHlwZSBMaXN0Vmlld0l0ZW1Qcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgYWN0aXZlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIG5vUGFkZGluZz86IGJvb2xlYW47XG4gIHNpemU/OiBTaXplO1xuICBhbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIjtcbiAgb25DbGljaz86ICgpID0+IHZvaWQsXG59XG5cbmZ1bmN0aW9uIExpc3RWaWV3SXRlbSh7XG4gIGNoaWxkcmVuLFxuICBhY3RpdmUgPSBmYWxzZSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG4gIHNpemUgPSBcIm1lZGl1bVwiLFxuICBhbGlnbiA9IFwiY2VudGVyXCIsXG4gIG9uQ2xpY2sgPSAoKSA9PiB7fSxcbn06IExpc3RWaWV3SXRlbVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGxpIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5saXN0Vmlld0l0ZW1dKX0+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgaW52ZXJ0ZWQ9e2FjdGl2ZX1cbiAgICAgICAgdHJhbnNwYXJlbnQ9e3RyYW5zcGFyZW50fVxuICAgICAgICBub1BhZGRpbmc9e25vUGFkZGluZ31cbiAgICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICBzdHJldGNoSG9yaXpvbnRhbGx5XG4gICAgICAgIG5vU2hhZG93XG4gICAgICAgIG5vQm9yZGVyXG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvbGk+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExpc3RWaWV3SXRlbTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCB7IEJ1dHRvbkxpbmsgfSBmcm9tIFwiLi4vQnV0dG9uTGlua1wiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzc1wiO1xuXG5mdW5jdGlvbiBMaXN0Vmlld0xpbmtJdGVtKHtcbiAgY2hpbGRyZW4sXG4gIGFjdGl2ZSxcbiAgdHJhbnNwYXJlbnQsXG4gIG5vUGFkZGluZyxcbiAgc2l6ZSxcbiAgYWxpZ24sXG4gIGFzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gKFxuICAgIDxsaSBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMubGlzdFZpZXdJdGVtXSl9PlxuICAgICAgPEJ1dHRvbkxpbmtcbiAgICAgICAgYXM9e2FzfVxuICAgICAgICBpbnZlcnRlZD17YWN0aXZlfVxuICAgICAgICB0cmFuc3BhcmVudD17dHJhbnNwYXJlbnR9XG4gICAgICAgIG5vUGFkZGluZz17bm9QYWRkaW5nfVxuICAgICAgICBhbGlnbj17YWxpZ259XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHN0cmV0Y2hIb3Jpem9udGFsbHlcbiAgICAgICAgbm9TaGFkb3dcbiAgICAgICAgbm9Cb3JkZXJcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0J1dHRvbkxpbms+XG4gICAgPC9saT5cbiAgKTtcbn1cblxuTGlzdFZpZXdMaW5rSXRlbS5kZWZhdWx0UHJvcHMgPSB7XG4gIGFjdGl2ZTogZmFsc2UsXG4gIHRyYW5zcGFyZW50OiBmYWxzZSxcbiAgbm9QYWRkaW5nOiBmYWxzZSxcbiAgc2l6ZTogXCJtZWRpdW1cIixcbiAgYWxpZ246IFwiY2VudGVyXCIsXG4gIGFzOiBcImFcIixcbn07XG5cbkxpc3RWaWV3TGlua0l0ZW0ucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgYXM6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgYWN0aXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJhbnNwYXJlbnQ6IFByb3BUeXBlcy5ib29sLFxuICBub1BhZGRpbmc6IFByb3BUeXBlcy5ib29sLFxuICBhbGlnbjogUHJvcFR5cGVzLm9uZU9mKFtcImxlZnRcIiwgXCJjZW50ZXJcIl0pLFxuICBzaXplOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExpc3RWaWV3TGlua0l0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBNZW51IH0gZnJvbSBcIi4vTWVudVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNZW51Q29udGFpbmVyIH0gZnJvbSBcIi4vTWVudUNvbnRhaW5lclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNZW51SXRlbSB9IGZyb20gXCIuL01lbnVJdGVtXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1lbnVMaW5rSXRlbSB9IGZyb20gXCIuL01lbnVMaW5rSXRlbVwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnUubW9kdWxlLmNzc1wiO1xuXG50eXBlIFBsYWNlbWVudCA9IHtcbiAgaG9yaXpvbnRhbDogXCJyaWdodFwiIHwgXCJsZWZ0XCI7XG4gIHZlcnRpY2FsOiBcInRvcFwiIHwgXCJib3R0b21cIjtcbn07XG5cbnR5cGUgTWVudVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjb250YWluZXJSZWY/OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGlzT3Blbj86IGJvb2xlYW47XG4gIGhlYWRlcj86IHN0cmluZztcbiAgcGxhY2VtZW50PzogUGxhY2VtZW50O1xufTtcblxuZnVuY3Rpb24gTWVudSh7XG4gIGNoaWxkcmVuLFxuICBjb250YWluZXJSZWYsXG4gIGNsYXNzTmFtZSxcbiAgaXNPcGVuID0gdHJ1ZSxcbiAgcGxhY2VtZW50ID0geyBob3Jpem9udGFsOiBcImxlZnRcIiwgdmVydGljYWw6IFwiYm90dG9tXCIgfSxcbiAgaGVhZGVyLFxufTogTWVudVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLm1lbnUsXG4gICAgICAgIHN0eWxlc1twbGFjZW1lbnQuaG9yaXpvbnRhbF0sXG4gICAgICAgIHN0eWxlc1twbGFjZW1lbnQudmVydGljYWxdLFxuICAgICAgICB7IFtzdHlsZXMub3Blbl06IGlzT3BlbiB9LFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICBdKX1cbiAgICA+XG4gICAgICB7aGVhZGVyICYmIGlzT3BlbiAmJiA8aDMgY2xhc3NOYW1lPXtzdHlsZXMubWVudUhlYWRlcn0+e2hlYWRlcn08L2gzPn1cbiAgICAgIDx1bD57aXNPcGVuICYmIGNoaWxkcmVufTwvdWw+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1lbnU7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudVwiOlwiXzJhaGk4SmNueEdIcm5abUQweFQ5UkxcIixcInRvcFwiOlwiXzNncEZUZDFGZHg0RUFmcTE3MFRHczdcIixcInJpZ2h0XCI6XCJfMUw1QVRwTTlHWHktU09SRnIwRzZTNFwiLFwibGVmdFwiOlwiQ1lFSmwzOVRrRWZuS2FsM3Z0dno5XCIsXCJib3R0b21cIjpcIl8zenlwLU5kVEJlQkRLdmsyNnBzWnVwXCIsXCJvcGVuXCI6XCJfMWlhYXppWnJWSV8tRThEOTlXZE5qaVwiLFwiZW50cmFuY2VcIjpcIl8yZmlLZTQtWDhQcWNHNF85cWVCM1pPXCIsXCJtZW51SGVhZGVyXCI6XCJfMTluazFJTU5TLXVfWUlRTGxtWVJ0VVwifTsiLCJpbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiwgUmVhY3ROb2RlLCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9NZW51Q29udGFpbmVyLm1vZHVsZS5jc3NcIjtcblxudHlwZSBNZW51Q29udGFpbmVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVmPzogKCkgPT4gdm9pZCB8IHsgY3VycmVudDogYW55IH07XG59XG5cbmZ1bmN0aW9uIE1lbnVDb250YWluZXIoeyBjaGlsZHJlbiwgY2xhc3NOYW1lfTogTWVudUNvbnRhaW5lclByb3BzLCByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMubWVudUNvbnRhaW5lciwgY2xhc3NOYW1lXSl9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmb3J3YXJkUmVmKE1lbnVDb250YWluZXIpO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm1lbnVDb250YWluZXJcIjpcIl8yLVNGd3NwcEV1b2JCSmtBd3dRckZDXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9NZW51SXRlbS5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTWVudUl0ZW1Qcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpc0FjdGl2ZT86IGJvb2xlYW4sXG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkLFxufTtcblxuZnVuY3Rpb24gTWVudUl0ZW0oe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvbkNsaWNrLFxuICBpc0FjdGl2ZSA9IGZhbHNlXG59OiBNZW51SXRlbVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGxpXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLm1lbnVJdGVtLFxuICAgICAgICB7IFtzdHlsZXMuYWN0aXZlXTogaXNBY3RpdmUgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2xpPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51SXRlbTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJtZW51SXRlbVwiOlwiXzNnR2N6Ukp3ck5lblhUQkxRbkMyOU1cIixcImFjdGl2ZVwiOlwiXzJqMWlsVU5rYkZHU2d1bFhTb0hBZFBcIn07IiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgRWxlbWVudFR5cGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9NZW51TGlua0l0ZW0ubW9kdWxlLmNzc1wiO1xuXG50eXBlIE1lbnVMaW5rSXRlbVByb3BzID1cbiAgfCB7XG4gICAgICBhczogRWxlbWVudFR5cGU7XG4gICAgICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICAgICAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgfVxuICB8IGFueTtcblxuZnVuY3Rpb24gTWVudUxpbmtJdGVtKHtcbiAgYXM6IENvbXBvbmVudCxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IE1lbnVMaW5rSXRlbVByb3BzKSB7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgQ29tcG9uZW50ID0gXCJhXCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIGRhdGEtdGVzdGlkPVwibWVudS1saW5rLWl0ZW1cIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLm1lbnVMaW5rSXRlbSwgY2xhc3NOYW1lXSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51TGlua0l0ZW07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudUxpbmtJdGVtXCI6XCJfMkR5MUxUZlNjR1p0U2JfNUx1ZC1sVVwiLFwiYWN0aXZlXCI6XCJfMlV3czdiajN5ZWptbjFrN1hpeUtmUVwiLFwibWVudUl0ZW1cIjpcIl8ybEk3UzJ0NXpXaFFzdmdfWG5RNy0tXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgT3ZlcmxheSB9IGZyb20gXCIuL092ZXJsYXlcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9PdmVybGF5Lm1vZHVsZS5jc3NcIjtcblxudHlwZSBPdmVybGF5UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgaXNGaXhlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xufTtcblxuZnVuY3Rpb24gT3ZlcmxheSh7XG4gIGNoaWxkcmVuLFxuICBjb250YWluZXJSZWYsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIGlzRml4ZWQgPSBmYWxzZSxcbiAgb25DbGljayA9ICgpID0+IHt9LFxufTogT3ZlcmxheVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm92ZXJsYXlcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5vdmVybGF5LFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMuZml4ZWRdOiBpc0ZpeGVkLFxuICAgICAgICB9LFxuICAgICAgXSl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgT3ZlcmxheTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJvdmVybGF5XCI6XCJfMlFncHlyRGNVUXlLWUVTQzVEWFhKclwiLFwidHJhbnNwYXJlbnRcIjpcIl8yOGZWbW94cDY5T1ByODhFdzB6VmVOXCIsXCJmaXhlZFwiOlwiXzJzVTM1MTVFYkZGZ2VQMXlLMlp1YnpcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0SW5wdXQgfSBmcm9tIFwiLi9UZXh0SW5wdXRcIjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi9MYWJlbFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9UZXh0SW5wdXQubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgU2l6ZSwgVGV4dElucHV0VHlwZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG50eXBlIFRleHRJbnB1dFByb3BzID0ge1xuICBsYWJlbD86IHN0cmluZztcbiAgb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgc2l6ZT86IFNpemU7XG4gIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gIGlucHV0UmVmPzogUmVhY3QuUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQ+O1xufTtcblxuZnVuY3Rpb24gVGV4dElucHV0KHtcbiAgbGFiZWwsXG4gIG9uQ2hhbmdlLFxuICBwbGFjZWhvbGRlcixcbiAgdmFsdWUsXG4gIG5hbWUsXG4gIGlucHV0UmVmLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgYXV0b0ZvY3VzID0gZmFsc2UsXG4gIHR5cGUgPSBcInRleHRcIixcbn06IFRleHRJbnB1dFByb3BzKSB7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5Gb3JtRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+XG4gICAgICBvbkNoYW5nZSgoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpLFxuICAgIFtvbkNoYW5nZV1cbiAgKTtcblxuICBjb25zdCBpbnB1dEVsZW1lbnQgPSAoXG4gICAgPGlucHV0XG4gICAgICBkYXRhLXRlc3RpZD1cImlucHV0XCJcbiAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudGV4dElucHV0LCBzdHlsZXNbc2l6ZV1dKX1cbiAgICAgIG9uQ2hhbmdlPXshaW5wdXRSZWYgPyBoYW5kbGVDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIGF1dG9Gb2N1cz17YXV0b0ZvY3VzfVxuICAgIC8+XG4gICk7XG4gIGlmIChsYWJlbCkge1xuICAgIHJldHVybiA8TGFiZWwgdmFsdWU9e2xhYmVsfT57aW5wdXRFbGVtZW50fTwvTGFiZWw+O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiA8PntpbnB1dEVsZW1lbnR9PC8+O1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBUZXh0SW5wdXQ7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1widGV4dElucHV0XCI6XCJfMndmcU96V0JvQW5fSzdnb3F2alhKZVwiLFwic21hbGxcIjpcIl8xYTRRT1ZKQjB6VzNVcmZfNWhxTmpqXCIsXCJtZWRpdW1cIjpcIl8zVUpvZThubHB6aFZUbUMwOVRWc28tXCIsXCJsYXJnZVwiOlwiXzNEUTUyUWRfMUs0X1Z4eFZ2NzI4U1hcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBUb2FzdCB9IGZyb20gXCIuL1RvYXN0XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFRvYXN0Q29udGFpbmVyIH0gZnJvbSBcIi4vVG9hc3RDb250YWluZXJcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlYWN0Tm9kZUFycmF5LCBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Ub2FzdC5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgSW1hZ2VUeXBlID0ge1xuICBzcmM6IHN0cmluZztcbiAgYWx0OiBzdHJpbmc7XG59O1xuXG50eXBlIFRvYXN0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gIGJ1dHRvbnM6IFJlYWN0Tm9kZUFycmF5O1xuICBpbWFnZT86IEltYWdlVHlwZTtcbiAgb25DbGljaz86ICgpID0+IHZvaWQ7XG59O1xuXG5mdW5jdGlvbiBUb2FzdCh7XG4gIGNoaWxkcmVuLFxuICBjb250YWluZXJSZWYsXG4gIGltYWdlLFxuICBidXR0b25zLFxuICBvbkNsaWNrID0gKCkgPT4ge30sXG59OiBUb2FzdFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudG9hc3RdKX1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInRvYXN0XCJcbiAgICA+XG4gICAgICB7aW1hZ2UgJiYgKFxuICAgICAgICA8aW1nXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0b2FzdC1pbWFnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudG9hc3RJbWFnZX1cbiAgICAgICAgICBzcmM9e2ltYWdlLnNyY31cbiAgICAgICAgICBhbHQ9e2ltYWdlLmFsdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRvYXN0Q29udGVudH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50b2FzdEJ1dHRvbnN9PntidXR0b25zfTwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBUb2FzdDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ0b2FzdFwiOlwiXzNzQnNfRVJYVjNrMFNRTUdVeTJXajRcIixcImVudHJhbmNlXCI6XCJfMV94anRMZVVNb0VYTkEtcU9FWmhjeFwiLFwidG9hc3RDb250ZW50XCI6XCJfMTBsQkVUQ1UzVU5GUjhweTFxMXEtaFwiLFwidG9hc3RJbWFnZVwiOlwiXzNDaTB3cE9iazZvcWY3ZHdrSHNGV29cIixcInRvYXN0QnV0dG9uc1wiOlwiRkVXRG5Ec1AtOUE5SkhHMjBxQlM1XCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Ub2FzdENvbnRhaW5lci5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgVG9hc3RDb250YWluZXJQcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5mdW5jdGlvbiBUb2FzdENvbnRhaW5lcih7IGNoaWxkcmVuIH06IFRvYXN0Q29udGFpbmVyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudG9hc3RDb250YWluZXJdKX1cbiAgICAgIGRhdGEtdGVzdGlkPVwidG9hc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRvYXN0Q29udGFpbmVyO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcInRvYXN0Q29udGFpbmVyXCI6XCJfM0Y4Y0pVMXdtS21icmppZGctTzN6cFwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIFZpZGVvIH0gZnJvbSBcIi4vVmlkZW9cIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL1ZpZGVvLm1vZHVsZS5jc3NcIjtcblxuLyoqXG4gKiBUaGVyZSBpcyBhIGtub3duIGlzc3VlIGluIFJlYWN0IGluIHJlZ2FyZHMgdG8gdGhlICdtdXRlZCcgcHJvcGVydHkgd2hpY2ggY2F1c2VzIHRoZSB3YXJuaW5nOlxuICogXCJXYXJuaW5nOiB1bnN0YWJsZV9mbHVzaERpc2NyZXRlVXBkYXRlczogQ2Fubm90IGZsdXNoIHVwZGF0ZXMgd2hlbiBSZWFjdCBpcyBhbHJlYWR5IHJlbmRlcmluZy5cIlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTAzODlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNjU0NFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpbmctbGlicmFyeS9yZWFjdC10ZXN0aW5nLWxpYnJhcnkvaXNzdWVzLzQ3MFxuICovXG5cbnR5cGUgTGF5b3V0ID0gXCJjb3ZlclwiIHwgXCJjb250YWluXCIgfCBcInN0cmV0Y2hIb3Jpem9udGFsbHlcIiB8IFwic3RyZXRjaFZlcnRpY2FsbHlcIjtcblxudHlwZSBWaWRlb1Byb3BzID0ge1xuICBzcmM6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBsYXlvdXQ/OiBMYXlvdXQ7XG4gIGF1dG9QbGF5PzogYm9vbGVhbjtcbiAgbG9vcD86IGJvb2xlYW47XG4gIG11dGVkPzogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIGNvbnRhaW5lclJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG59O1xuXG5mdW5jdGlvbiBWaWRlbyh7XG4gIHNyYyxcbiAgdHlwZSxcbiAgY2hpbGRyZW4sXG4gIGNvbnRhaW5lclJlZixcbiAgbXV0ZWQgPSB0cnVlLFxuICBsb29wID0gdHJ1ZSxcbiAgYXV0b1BsYXkgPSB0cnVlLFxuICBsYXlvdXQgPSBcImNvbnRhaW5cIixcbn06IFZpZGVvUHJvcHMpIHtcbiAgcmV0dXJuIGNoaWxkcmVuID8gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmNvbnRhaW5lciwgc3R5bGVzLmhhc092ZXJsYXldKX1cbiAgICA+XG4gICAgICA8dmlkZW9cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJ2aWRlb1wiXG4gICAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnZpZGVvLCBzdHlsZXNbbGF5b3V0XV0pfVxuICAgICAgICBtdXRlZD17bXV0ZWR9XG4gICAgICAgIGxvb3A9e2xvb3B9XG4gICAgICAgIGF1dG9QbGF5PXthdXRvUGxheX1cbiAgICAgICAgcGxheXNJbmxpbmU9e3RydWV9XG4gICAgICA+XG4gICAgICAgIDxzb3VyY2UgZGF0YS10ZXN0aWQ9XCJzb3VyY2VcIiBzcmM9e3NyY30gdHlwZT17dHlwZX0gLz5cbiAgICAgIDwvdmlkZW8+XG4gICAgICB7Y2hpbGRyZW4gJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vdmVybGF5fT57Y2hpbGRyZW59PC9kaXY+fVxuICAgIDwvZGl2PlxuICApIDogKFxuICAgIDx2aWRlb1xuICAgICAgZGF0YS10ZXN0aWQ9XCJ2aWRlb1wiXG4gICAgICBjcm9zc09yaWdpbj1cImFub255bW91c1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudmlkZW8sIHN0eWxlc1tsYXlvdXRdXSl9XG4gICAgICBtdXRlZD17bXV0ZWR9XG4gICAgICBsb29wPXtsb29wfVxuICAgICAgYXV0b1BsYXk9e2F1dG9QbGF5fVxuICAgICAgcGxheXNJbmxpbmU9e3RydWV9XG4gICAgPlxuICAgICAgPHNvdXJjZSBkYXRhLXRlc3RpZD1cInNvdXJjZVwiIHNyYz17c3JjfSB0eXBlPXt0eXBlfSAvPlxuICAgIDwvdmlkZW8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZpZGVvO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzJFUUJmcjV3OGgxeDFicS0yZnA2d1RcIixcImhhc092ZXJsYXlcIjpcIl8zR1JNcG1Ha19QcUlUY1V2ME5mbXQzXCIsXCJ2aWRlb1wiOlwiXzJ0WmZYa0VoQ2t3QXpmYUdfQlZuMEJcIixcImNvdmVyXCI6XCJfM09ZSGZiemFMM1FIYW5XWkJqOFJ4T1wiLFwiY29udGFpblwiOlwiXzNJX2M3c2hjU3J0R19GeHZ2VTJJZUVcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIl8xWjdkTDl1RWQwS3N4M0Nrclpoc0I4XCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwiXzF6YnJEWU8wZllGSlZjN3h2c1RZaTZcIixcIm92ZXJsYXlcIjpcIl8yb3NYZDdTa3dGMExoLTJ5aXF1WVFNXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlVG9nZ2xlIH0gZnJvbSBcIi4vdXNlVG9nZ2xlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuL3VzZU91dHNpZGVDbGlja1wiO1xuIiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVRvZ2dsZShcbiAgaW5pdGlhbFZhbHVlID0gZmFsc2Vcbik6IFtib29sZWFuLCAobmV3VmFsdWU/OiBib29sZWFuKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8Ym9vbGVhbj4oaW5pdGlhbFZhbHVlKTtcblxuICBjb25zdCB0b2dnbGUgPSAobmV3VmFsdWU/OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoKHByZXZWYWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4gIXByZXZWYWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gW3ZhbHVlLCB1c2VDYWxsYmFjayh0b2dnbGUsIFt2YWx1ZV0pXTtcbn1cblxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBDYWxsYmFjayA9IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU91dHNpZGVDbGljayhjYWxsYmFjazogQ2FsbGJhY2spIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXJlZi5jdXJyZW50IHx8IHJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCBoYW5kbGVDbGljayk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIGhhbmRsZUNsaWNrKTtcbiAgICB9O1xuICB9LCBbY2FsbGJhY2tdKTtcblxuICByZXR1cm4gcmVmO1xufVxuIiwiLyohXG4gKiBob3RrZXlzLWpzIHYzLjguMVxuICogQSBzaW1wbGUgbWljcm8tbGlicmFyeSBmb3IgZGVmaW5pbmcgYW5kIGRpc3BhdGNoaW5nIGtleWJvYXJkIHNob3J0Y3V0cy4gSXQgaGFzIG5vIGRlcGVuZGVuY2llcy5cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIwIGtlbm55IHdvbmcgPHdvd29ob29AcXEuY29tPlxuICogaHR0cDovL2pheXdjamxvdmUuZ2l0aHViLmlvL2hvdGtleXNcbiAqIFxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbnZhciBpc2ZmID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgPyBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpID4gMCA6IGZhbHNlOyAvLyDnu5Hlrprkuovku7ZcblxuZnVuY3Rpb24gYWRkRXZlbnQob2JqZWN0LCBldmVudCwgbWV0aG9kKSB7XG4gIGlmIChvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBtZXRob2QsIGZhbHNlKTtcbiAgfSBlbHNlIGlmIChvYmplY3QuYXR0YWNoRXZlbnQpIHtcbiAgICBvYmplY3QuYXR0YWNoRXZlbnQoXCJvblwiLmNvbmNhdChldmVudCksIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1ldGhvZCh3aW5kb3cuZXZlbnQpO1xuICAgIH0pO1xuICB9XG59IC8vIOS/rumlsOmUrui9rOaNouaIkOWvueW6lOeahOmUrueggVxuXG5cbmZ1bmN0aW9uIGdldE1vZHMobW9kaWZpZXIsIGtleSkge1xuICB2YXIgbW9kcyA9IGtleS5zbGljZSgwLCBrZXkubGVuZ3RoIC0gMSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgaSsrKSB7XG4gICAgbW9kc1tpXSA9IG1vZGlmaWVyW21vZHNbaV0udG9Mb3dlckNhc2UoKV07XG4gIH1cblxuICByZXR1cm4gbW9kcztcbn0gLy8g5aSE55CG5Lyg55qEa2V55a2X56ym5Liy6L2s5o2i5oiQ5pWw57uEXG5cblxuZnVuY3Rpb24gZ2V0S2V5cyhrZXkpIHtcbiAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSBrZXkgPSAnJztcbiAga2V5ID0ga2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7IC8vIOWMuemFjeS7u+S9leepuueZveWtl+espizljIXmi6znqbrmoLzjgIHliLbooajnrKbjgIHmjaLpobXnrKbnrYnnrYlcblxuICB2YXIga2V5cyA9IGtleS5zcGxpdCgnLCcpOyAvLyDlkIzml7borr7nva7lpJrkuKrlv6vmjbfplK7vvIzku6UnLCfliIblibJcblxuICB2YXIgaW5kZXggPSBrZXlzLmxhc3RJbmRleE9mKCcnKTsgLy8g5b+r5o236ZSu5Y+v6IO95YyF5ZCrJywn77yM6ZyA54m55q6K5aSE55CGXG5cbiAgZm9yICg7IGluZGV4ID49IDA7KSB7XG4gICAga2V5c1tpbmRleCAtIDFdICs9ICcsJztcbiAgICBrZXlzLnNwbGljZShpbmRleCwgMSk7XG4gICAgaW5kZXggPSBrZXlzLmxhc3RJbmRleE9mKCcnKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufSAvLyDmr5TovoPkv67ppbDplK7nmoTmlbDnu4RcblxuXG5mdW5jdGlvbiBjb21wYXJlQXJyYXkoYTEsIGEyKSB7XG4gIHZhciBhcnIxID0gYTEubGVuZ3RoID49IGEyLmxlbmd0aCA/IGExIDogYTI7XG4gIHZhciBhcnIyID0gYTEubGVuZ3RoID49IGEyLmxlbmd0aCA/IGEyIDogYTE7XG4gIHZhciBpc0luZGV4ID0gdHJ1ZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXJyMi5pbmRleE9mKGFycjFbaV0pID09PSAtMSkgaXNJbmRleCA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzSW5kZXg7XG59XG5cbnZhciBfa2V5TWFwID0ge1xuICBiYWNrc3BhY2U6IDgsXG4gIHRhYjogOSxcbiAgY2xlYXI6IDEyLFxuICBlbnRlcjogMTMsXG4gIHJldHVybjogMTMsXG4gIGVzYzogMjcsXG4gIGVzY2FwZTogMjcsXG4gIHNwYWNlOiAzMixcbiAgbGVmdDogMzcsXG4gIHVwOiAzOCxcbiAgcmlnaHQ6IDM5LFxuICBkb3duOiA0MCxcbiAgZGVsOiA0NixcbiAgZGVsZXRlOiA0NixcbiAgaW5zOiA0NSxcbiAgaW5zZXJ0OiA0NSxcbiAgaG9tZTogMzYsXG4gIGVuZDogMzUsXG4gIHBhZ2V1cDogMzMsXG4gIHBhZ2Vkb3duOiAzNCxcbiAgY2Fwc2xvY2s6IDIwLFxuICAn4oeqJzogMjAsXG4gICcsJzogMTg4LFxuICAnLic6IDE5MCxcbiAgJy8nOiAxOTEsXG4gICdgJzogMTkyLFxuICAnLSc6IGlzZmYgPyAxNzMgOiAxODksXG4gICc9JzogaXNmZiA/IDYxIDogMTg3LFxuICAnOyc6IGlzZmYgPyA1OSA6IDE4NixcbiAgJ1xcJyc6IDIyMixcbiAgJ1snOiAyMTksXG4gICddJzogMjIxLFxuICAnXFxcXCc6IDIyMFxufTsgLy8gTW9kaWZpZXIgS2V5c1xuXG52YXIgX21vZGlmaWVyID0ge1xuICAvLyBzaGlmdEtleVxuICAn4oenJzogMTYsXG4gIHNoaWZ0OiAxNixcbiAgLy8gYWx0S2V5XG4gICfijKUnOiAxOCxcbiAgYWx0OiAxOCxcbiAgb3B0aW9uOiAxOCxcbiAgLy8gY3RybEtleVxuICAn4oyDJzogMTcsXG4gIGN0cmw6IDE3LFxuICBjb250cm9sOiAxNyxcbiAgLy8gbWV0YUtleVxuICAn4oyYJzogOTEsXG4gIGNtZDogOTEsXG4gIGNvbW1hbmQ6IDkxXG59O1xudmFyIG1vZGlmaWVyTWFwID0ge1xuICAxNjogJ3NoaWZ0S2V5JyxcbiAgMTg6ICdhbHRLZXknLFxuICAxNzogJ2N0cmxLZXknLFxuICA5MTogJ21ldGFLZXknLFxuICBzaGlmdEtleTogMTYsXG4gIGN0cmxLZXk6IDE3LFxuICBhbHRLZXk6IDE4LFxuICBtZXRhS2V5OiA5MVxufTtcbnZhciBfbW9kcyA9IHtcbiAgMTY6IGZhbHNlLFxuICAxODogZmFsc2UsXG4gIDE3OiBmYWxzZSxcbiAgOTE6IGZhbHNlXG59O1xudmFyIF9oYW5kbGVycyA9IHt9OyAvLyBGMX5GMTIgc3BlY2lhbCBrZXlcblxuZm9yICh2YXIgayA9IDE7IGsgPCAyMDsgaysrKSB7XG4gIF9rZXlNYXBbXCJmXCIuY29uY2F0KGspXSA9IDExMSArIGs7XG59XG5cbnZhciBfZG93bktleXMgPSBbXTsgLy8g6K6w5b2V5pGB5LiL55qE57uR5a6a6ZSuXG5cbnZhciBfc2NvcGUgPSAnYWxsJzsgLy8g6buY6K6k54Ot6ZSu6IyD5Zu0XG5cbnZhciBlbGVtZW50SGFzQmluZEV2ZW50ID0gW107IC8vIOW3sue7keWumuS6i+S7tueahOiKgueCueiusOW9lVxuLy8g6L+U5Zue6ZSu56CBXG5cbnZhciBjb2RlID0gZnVuY3Rpb24gY29kZSh4KSB7XG4gIHJldHVybiBfa2V5TWFwW3gudG9Mb3dlckNhc2UoKV0gfHwgX21vZGlmaWVyW3gudG9Mb3dlckNhc2UoKV0gfHwgeC50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCk7XG59OyAvLyDorr7nva7ojrflj5blvZPliY3ojIPlm7TvvIjpu5jorqTkuLon5omA5pyJJ++8iVxuXG5cbmZ1bmN0aW9uIHNldFNjb3BlKHNjb3BlKSB7XG4gIF9zY29wZSA9IHNjb3BlIHx8ICdhbGwnO1xufSAvLyDojrflj5blvZPliY3ojIPlm7RcblxuXG5mdW5jdGlvbiBnZXRTY29wZSgpIHtcbiAgcmV0dXJuIF9zY29wZSB8fCAnYWxsJztcbn0gLy8g6I635Y+W5pGB5LiL57uR5a6a6ZSu55qE6ZSu5YC8XG5cblxuZnVuY3Rpb24gZ2V0UHJlc3NlZEtleUNvZGVzKCkge1xuICByZXR1cm4gX2Rvd25LZXlzLnNsaWNlKDApO1xufSAvLyDooajljZXmjqfku7bmjqfku7bliKTmlq0g6L+U5ZueIEJvb2xlYW5cbi8vIGhvdGtleSBpcyBlZmZlY3RpdmUgb25seSB3aGVuIGZpbHRlciByZXR1cm4gdHJ1ZVxuXG5cbmZ1bmN0aW9uIGZpbHRlcihldmVudCkge1xuICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gIHZhciB0YWdOYW1lID0gdGFyZ2V0LnRhZ05hbWU7XG4gIHZhciBmbGFnID0gdHJ1ZTsgLy8gaWdub3JlOiBpc0NvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnLCA8aW5wdXQ+IGFuZCA8dGV4dGFyZWE+IHdoZW4gcmVhZE9ubHkgc3RhdGUgaXMgZmFsc2UsIDxzZWxlY3Q+XG5cbiAgaWYgKHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSB8fCAodGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCB0YWdOYW1lID09PSAnVEVYVEFSRUEnIHx8IHRhZ05hbWUgPT09ICdTRUxFQ1QnKSAmJiAhdGFyZ2V0LnJlYWRPbmx5KSB7XG4gICAgZmxhZyA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGZsYWc7XG59IC8vIOWIpOaWreaRgeS4i+eahOmUruaYr+WQpuS4uuafkOS4qumUru+8jOi/lOWbnnRydWXmiJbogIVmYWxzZVxuXG5cbmZ1bmN0aW9uIGlzUHJlc3NlZChrZXlDb2RlKSB7XG4gIGlmICh0eXBlb2Yga2V5Q29kZSA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXlDb2RlID0gY29kZShrZXlDb2RlKTsgLy8g6L2s5o2i5oiQ6ZSu56CBXG4gIH1cblxuICByZXR1cm4gX2Rvd25LZXlzLmluZGV4T2Yoa2V5Q29kZSkgIT09IC0xO1xufSAvLyDlvqrnjq/liKDpmaRoYW5kbGVyc+S4reeahOaJgOaciSBzY29wZSjojIPlm7QpXG5cblxuZnVuY3Rpb24gZGVsZXRlU2NvcGUoc2NvcGUsIG5ld1Njb3BlKSB7XG4gIHZhciBoYW5kbGVycztcbiAgdmFyIGk7IC8vIOayoeacieaMh+WumnNjb3Bl77yM6I635Y+Wc2NvcGVcblxuICBpZiAoIXNjb3BlKSBzY29wZSA9IGdldFNjb3BlKCk7XG5cbiAgZm9yICh2YXIga2V5IGluIF9oYW5kbGVycykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoX2hhbmRsZXJzLCBrZXkpKSB7XG4gICAgICBoYW5kbGVycyA9IF9oYW5kbGVyc1trZXldO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOykge1xuICAgICAgICBpZiAoaGFuZGxlcnNbaV0uc2NvcGUgPT09IHNjb3BlKSBoYW5kbGVycy5zcGxpY2UoaSwgMSk7ZWxzZSBpKys7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIOWmguaenHNjb3Bl6KKr5Yig6Zmk77yM5bCGc2NvcGXph43nva7kuLphbGxcblxuXG4gIGlmIChnZXRTY29wZSgpID09PSBzY29wZSkgc2V0U2NvcGUobmV3U2NvcGUgfHwgJ2FsbCcpO1xufSAvLyDmuIXpmaTkv67ppbDplK5cblxuXG5mdW5jdGlvbiBjbGVhck1vZGlmaWVyKGV2ZW50KSB7XG4gIHZhciBrZXkgPSBldmVudC5rZXlDb2RlIHx8IGV2ZW50LndoaWNoIHx8IGV2ZW50LmNoYXJDb2RlO1xuXG4gIHZhciBpID0gX2Rvd25LZXlzLmluZGV4T2Yoa2V5KTsgLy8g5LuO5YiX6KGo5Lit5riF6Zmk5oyJ5Y6L6L+H55qE6ZSuXG5cblxuICBpZiAoaSA+PSAwKSB7XG4gICAgX2Rvd25LZXlzLnNwbGljZShpLCAxKTtcbiAgfSAvLyDnibnmrorlpITnkIYgY21tYW5kIOmUru+8jOWcqCBjbW1hbmQg57uE5ZCI5b+r5o236ZSuIGtleXVwIOWPquaJp+ihjOS4gOasoeeahOmXrumimFxuXG5cbiAgaWYgKGV2ZW50LmtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ21ldGEnKSB7XG4gICAgX2Rvd25LZXlzLnNwbGljZSgwLCBfZG93bktleXMubGVuZ3RoKTtcbiAgfSAvLyDkv67ppbDplK4gc2hpZnRLZXkgYWx0S2V5IGN0cmxLZXkgKGNvbW1hbmR8fG1ldGFLZXkpIOa4hemZpFxuXG5cbiAgaWYgKGtleSA9PT0gOTMgfHwga2V5ID09PSAyMjQpIGtleSA9IDkxO1xuXG4gIGlmIChrZXkgaW4gX21vZHMpIHtcbiAgICBfbW9kc1trZXldID0gZmFsc2U7IC8vIOWwhuS/rumlsOmUrumHjee9ruS4umZhbHNlXG5cbiAgICBmb3IgKHZhciBrIGluIF9tb2RpZmllcikge1xuICAgICAgaWYgKF9tb2RpZmllcltrXSA9PT0ga2V5KSBob3RrZXlzW2tdID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHVuYmluZChrZXlzSW5mbykge1xuICAvLyB1bmJpbmQoKSwgdW5iaW5kIGFsbCBrZXlzXG4gIGlmICgha2V5c0luZm8pIHtcbiAgICBPYmplY3Qua2V5cyhfaGFuZGxlcnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIGRlbGV0ZSBfaGFuZGxlcnNba2V5XTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGtleXNJbmZvKSkge1xuICAgIC8vIHN1cHBvcnQgbGlrZSA6IHVuYmluZChbe2tleTogJ2N0cmwrYScsIHNjb3BlOiAnczEnfSwge2tleTogJ2N0cmwtYScsIHNjb3BlOiAnczInLCBzcGxpdEtleTogJy0nfV0pXG4gICAga2V5c0luZm8uZm9yRWFjaChmdW5jdGlvbiAoaW5mbykge1xuICAgICAgaWYgKGluZm8ua2V5KSBlYWNoVW5iaW5kKGluZm8pO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBrZXlzSW5mbyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBzdXBwb3J0IGxpa2UgdW5iaW5kKHtrZXk6ICdjdHJsK2EsIGN0cmwrYicsIHNjb3BlOidhYmMnfSlcbiAgICBpZiAoa2V5c0luZm8ua2V5KSBlYWNoVW5iaW5kKGtleXNJbmZvKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Yga2V5c0luZm8gPT09ICdzdHJpbmcnKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydCBvbGQgbWV0aG9kXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIHZhciBzY29wZSA9IGFyZ3NbMF0sXG4gICAgICAgIG1ldGhvZCA9IGFyZ3NbMV07XG5cbiAgICBpZiAodHlwZW9mIHNjb3BlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBtZXRob2QgPSBzY29wZTtcbiAgICAgIHNjb3BlID0gJyc7XG4gICAgfVxuXG4gICAgZWFjaFVuYmluZCh7XG4gICAgICBrZXk6IGtleXNJbmZvLFxuICAgICAgc2NvcGU6IHNjb3BlLFxuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICBzcGxpdEtleTogJysnXG4gICAgfSk7XG4gIH1cbn0gLy8g6Kej6Zmk57uR5a6a5p+Q5Liq6IyD5Zu055qE5b+r5o236ZSuXG5cblxudmFyIGVhY2hVbmJpbmQgPSBmdW5jdGlvbiBlYWNoVW5iaW5kKF9yZWYpIHtcbiAgdmFyIGtleSA9IF9yZWYua2V5LFxuICAgICAgc2NvcGUgPSBfcmVmLnNjb3BlLFxuICAgICAgbWV0aG9kID0gX3JlZi5tZXRob2QsXG4gICAgICBfcmVmJHNwbGl0S2V5ID0gX3JlZi5zcGxpdEtleSxcbiAgICAgIHNwbGl0S2V5ID0gX3JlZiRzcGxpdEtleSA9PT0gdm9pZCAwID8gJysnIDogX3JlZiRzcGxpdEtleTtcbiAgdmFyIG11bHRpcGxlS2V5cyA9IGdldEtleXMoa2V5KTtcbiAgbXVsdGlwbGVLZXlzLmZvckVhY2goZnVuY3Rpb24gKG9yaWdpbktleSkge1xuICAgIHZhciB1bmJpbmRLZXlzID0gb3JpZ2luS2V5LnNwbGl0KHNwbGl0S2V5KTtcbiAgICB2YXIgbGVuID0gdW5iaW5kS2V5cy5sZW5ndGg7XG4gICAgdmFyIGxhc3RLZXkgPSB1bmJpbmRLZXlzW2xlbiAtIDFdO1xuICAgIHZhciBrZXlDb2RlID0gbGFzdEtleSA9PT0gJyonID8gJyonIDogY29kZShsYXN0S2V5KTtcbiAgICBpZiAoIV9oYW5kbGVyc1trZXlDb2RlXSkgcmV0dXJuOyAvLyDliKTmlq3mmK/lkKbkvKDlhaXojIPlm7TvvIzmsqHmnInlsLHojrflj5bojIPlm7RcblxuICAgIGlmICghc2NvcGUpIHNjb3BlID0gZ2V0U2NvcGUoKTtcbiAgICB2YXIgbW9kcyA9IGxlbiA+IDEgPyBnZXRNb2RzKF9tb2RpZmllciwgdW5iaW5kS2V5cykgOiBbXTtcbiAgICBfaGFuZGxlcnNba2V5Q29kZV0gPSBfaGFuZGxlcnNba2V5Q29kZV0ubWFwKGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgIC8vIOmAmui/h+WHveaVsOWIpOaWre+8jOaYr+WQpuino+mZpOe7keWumu+8jOWHveaVsOebuOetieebtOaOpei/lOWbnlxuICAgICAgdmFyIGlzTWF0Y2hpbmdNZXRob2QgPSBtZXRob2QgPyByZWNvcmQubWV0aG9kID09PSBtZXRob2QgOiB0cnVlO1xuXG4gICAgICBpZiAoaXNNYXRjaGluZ01ldGhvZCAmJiByZWNvcmQuc2NvcGUgPT09IHNjb3BlICYmIGNvbXBhcmVBcnJheShyZWNvcmQubW9kcywgbW9kcykpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVjb3JkO1xuICAgIH0pO1xuICB9KTtcbn07IC8vIOWvueebkeWQrOWvueW6lOW/q+aNt+mUrueahOWbnuiwg+WHveaVsOi/m+ihjOWkhOeQhlxuXG5cbmZ1bmN0aW9uIGV2ZW50SGFuZGxlcihldmVudCwgaGFuZGxlciwgc2NvcGUpIHtcbiAgdmFyIG1vZGlmaWVyc01hdGNoOyAvLyDnnIvlroPmmK/lkKblnKjlvZPliY3ojIPlm7RcblxuICBpZiAoaGFuZGxlci5zY29wZSA9PT0gc2NvcGUgfHwgaGFuZGxlci5zY29wZSA9PT0gJ2FsbCcpIHtcbiAgICAvLyDmo4Dmn6XmmK/lkKbljLnphY3kv67ppbDnrKbvvIjlpoLmnpzmnInov5Tlm550cnVl77yJXG4gICAgbW9kaWZpZXJzTWF0Y2ggPSBoYW5kbGVyLm1vZHMubGVuZ3RoID4gMDtcblxuICAgIGZvciAodmFyIHkgaW4gX21vZHMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoX21vZHMsIHkpKSB7XG4gICAgICAgIGlmICghX21vZHNbeV0gJiYgaGFuZGxlci5tb2RzLmluZGV4T2YoK3kpID4gLTEgfHwgX21vZHNbeV0gJiYgaGFuZGxlci5tb2RzLmluZGV4T2YoK3kpID09PSAtMSkge1xuICAgICAgICAgIG1vZGlmaWVyc01hdGNoID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIOiwg+eUqOWkhOeQhueoi+W6j++8jOWmguaenOaYr+S/rumlsOmUruS4jeWBmuWkhOeQhlxuXG5cbiAgICBpZiAoaGFuZGxlci5tb2RzLmxlbmd0aCA9PT0gMCAmJiAhX21vZHNbMTZdICYmICFfbW9kc1sxOF0gJiYgIV9tb2RzWzE3XSAmJiAhX21vZHNbOTFdIHx8IG1vZGlmaWVyc01hdGNoIHx8IGhhbmRsZXIuc2hvcnRjdXQgPT09ICcqJykge1xuICAgICAgaWYgKGhhbmRsZXIubWV0aG9kKGV2ZW50LCBoYW5kbGVyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGV2ZW50LnByZXZlbnREZWZhdWx0KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChldmVudC5jYW5jZWxCdWJibGUpIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIOWkhOeQhmtleWRvd27kuovku7ZcblxuXG5mdW5jdGlvbiBkaXNwYXRjaChldmVudCkge1xuICB2YXIgYXN0ZXJpc2sgPSBfaGFuZGxlcnNbJyonXTtcbiAgdmFyIGtleSA9IGV2ZW50LmtleUNvZGUgfHwgZXZlbnQud2hpY2ggfHwgZXZlbnQuY2hhckNvZGU7IC8vIOihqOWNleaOp+S7tui/h+a7pCDpu5jorqTooajljZXmjqfku7bkuI3op6blj5Hlv6vmjbfplK5cblxuICBpZiAoIWhvdGtleXMuZmlsdGVyLmNhbGwodGhpcywgZXZlbnQpKSByZXR1cm47IC8vIEdlY2tvKEZpcmVmb3gp55qEY29tbWFuZOmUruWAvDIyNO+8jOWcqFdlYmtpdChDaHJvbWUp5Lit5L+d5oyB5LiA6Ie0XG4gIC8vIFdlYmtpdOW3puWPsyBjb21tYW5kIOmUruWAvOS4jeS4gOagt1xuXG4gIGlmIChrZXkgPT09IDkzIHx8IGtleSA9PT0gMjI0KSBrZXkgPSA5MTtcbiAgLyoqXG4gICAqIENvbGxlY3QgYm91bmQga2V5c1xuICAgKiBJZiBhbiBJbnB1dCBNZXRob2QgRWRpdG9yIGlzIHByb2Nlc3Npbmcga2V5IGlucHV0IGFuZCB0aGUgZXZlbnQgaXMga2V5ZG93biwgcmV0dXJuIDIyOS5cbiAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjUwNDM5MzQvaXMtaXQtb2stdG8taWdub3JlLWtleWRvd24tZXZlbnRzLXdpdGgta2V5Y29kZS0yMjlcbiAgICogaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LWRvbS8yMDEwSnVsU2VwL2F0dC0wMTgyL2tleUNvZGUtc3BlYy5odG1sXG4gICAqL1xuXG4gIGlmIChfZG93bktleXMuaW5kZXhPZihrZXkpID09PSAtMSAmJiBrZXkgIT09IDIyOSkgX2Rvd25LZXlzLnB1c2goa2V5KTtcbiAgLyoqXG4gICAqIEplc3QgdGVzdCBjYXNlcyBhcmUgcmVxdWlyZWQuXG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICovXG5cbiAgWydjdHJsS2V5JywgJ2FsdEtleScsICdzaGlmdEtleScsICdtZXRhS2V5J10uZm9yRWFjaChmdW5jdGlvbiAoa2V5TmFtZSkge1xuICAgIHZhciBrZXlOdW0gPSBtb2RpZmllck1hcFtrZXlOYW1lXTtcblxuICAgIGlmIChldmVudFtrZXlOYW1lXSAmJiBfZG93bktleXMuaW5kZXhPZihrZXlOdW0pID09PSAtMSkge1xuICAgICAgX2Rvd25LZXlzLnB1c2goa2V5TnVtKTtcbiAgICB9IGVsc2UgaWYgKCFldmVudFtrZXlOYW1lXSAmJiBfZG93bktleXMuaW5kZXhPZihrZXlOdW0pID4gLTEpIHtcbiAgICAgIF9kb3duS2V5cy5zcGxpY2UoX2Rvd25LZXlzLmluZGV4T2Yoa2V5TnVtKSwgMSk7XG4gICAgfSBlbHNlIGlmIChrZXlOYW1lID09PSAnbWV0YUtleScgJiYgZXZlbnRba2V5TmFtZV0gJiYgX2Rvd25LZXlzLmxlbmd0aCA9PT0gMykge1xuICAgICAgLyoqXG4gICAgICAgKiBGaXggaWYgQ29tbWFuZCBpcyBwcmVzc2VkOlxuICAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICovXG4gICAgICBpZiAoIShldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleSkpIHtcbiAgICAgICAgX2Rvd25LZXlzID0gX2Rvd25LZXlzLnNsaWNlKF9kb3duS2V5cy5pbmRleE9mKGtleU51bSkpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIC8qKlxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIGlmIChrZXkgaW4gX21vZHMpIHtcbiAgICBfbW9kc1trZXldID0gdHJ1ZTsgLy8g5bCG54m55q6K5a2X56ym55qEa2V55rOo5YaM5YiwIGhvdGtleXMg5LiKXG5cbiAgICBmb3IgKHZhciBrIGluIF9tb2RpZmllcikge1xuICAgICAgaWYgKF9tb2RpZmllcltrXSA9PT0ga2V5KSBob3RrZXlzW2tdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWFzdGVyaXNrKSByZXR1cm47XG4gIH0gLy8g5bCGIG1vZGlmaWVyTWFwIOmHjOmdoueahOS/rumlsOmUrue7keWumuWIsCBldmVudCDkuK1cblxuXG4gIGZvciAodmFyIGUgaW4gX21vZHMpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKF9tb2RzLCBlKSkge1xuICAgICAgX21vZHNbZV0gPSBldmVudFttb2RpZmllck1hcFtlXV07XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vamF5d2NqbG92ZS9ob3RrZXlzL3B1bGwvMTI5XG4gICAqIFRoaXMgc29sdmVzIHRoZSBpc3N1ZSBpbiBGaXJlZm94IG9uIFdpbmRvd3Mgd2hlcmUgaG90a2V5cyBjb3JyZXNwb25kaW5nIHRvIHNwZWNpYWwgY2hhcmFjdGVycyB3b3VsZCBub3QgdHJpZ2dlci5cbiAgICogQW4gZXhhbXBsZSBvZiB0aGlzIGlzIGN0cmwrYWx0K20gb24gYSBTd2VkaXNoIGtleWJvYXJkIHdoaWNoIGlzIHVzZWQgdG8gdHlwZSDOvC5cbiAgICogQnJvd3NlciBzdXBwb3J0OiBodHRwczovL2Nhbml1c2UuY29tLyNmZWF0PWtleWJvYXJkZXZlbnQtZ2V0bW9kaWZpZXJzdGF0ZVxuICAgKi9cblxuXG4gIGlmIChldmVudC5nZXRNb2RpZmllclN0YXRlICYmICEoZXZlbnQuYWx0S2V5ICYmICFldmVudC5jdHJsS2V5KSAmJiBldmVudC5nZXRNb2RpZmllclN0YXRlKCdBbHRHcmFwaCcpKSB7XG4gICAgaWYgKF9kb3duS2V5cy5pbmRleE9mKDE3KSA9PT0gLTEpIHtcbiAgICAgIF9kb3duS2V5cy5wdXNoKDE3KTtcbiAgICB9XG5cbiAgICBpZiAoX2Rvd25LZXlzLmluZGV4T2YoMTgpID09PSAtMSkge1xuICAgICAgX2Rvd25LZXlzLnB1c2goMTgpO1xuICAgIH1cblxuICAgIF9tb2RzWzE3XSA9IHRydWU7XG4gICAgX21vZHNbMThdID0gdHJ1ZTtcbiAgfSAvLyDojrflj5bojIPlm7Qg6buY6K6k5Li6IGBhbGxgXG5cblxuICB2YXIgc2NvcGUgPSBnZXRTY29wZSgpOyAvLyDlr7nku7vkvZXlv6vmjbfplK7pg73pnIDopoHlgZrnmoTlpITnkIZcblxuICBpZiAoYXN0ZXJpc2spIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFzdGVyaXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXN0ZXJpc2tbaV0uc2NvcGUgPT09IHNjb3BlICYmIChldmVudC50eXBlID09PSAna2V5ZG93bicgJiYgYXN0ZXJpc2tbaV0ua2V5ZG93biB8fCBldmVudC50eXBlID09PSAna2V5dXAnICYmIGFzdGVyaXNrW2ldLmtleXVwKSkge1xuICAgICAgICBldmVudEhhbmRsZXIoZXZlbnQsIGFzdGVyaXNrW2ldLCBzY29wZSk7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIGtleSDkuI3lnKggX2hhbmRsZXJzIOS4rei/lOWbnlxuXG5cbiAgaWYgKCEoa2V5IGluIF9oYW5kbGVycykpIHJldHVybjtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgX2hhbmRsZXJzW2tleV0ubGVuZ3RoOyBfaSsrKSB7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyAmJiBfaGFuZGxlcnNba2V5XVtfaV0ua2V5ZG93biB8fCBldmVudC50eXBlID09PSAna2V5dXAnICYmIF9oYW5kbGVyc1trZXldW19pXS5rZXl1cCkge1xuICAgICAgaWYgKF9oYW5kbGVyc1trZXldW19pXS5rZXkpIHtcbiAgICAgICAgdmFyIHJlY29yZCA9IF9oYW5kbGVyc1trZXldW19pXTtcbiAgICAgICAgdmFyIHNwbGl0S2V5ID0gcmVjb3JkLnNwbGl0S2V5O1xuICAgICAgICB2YXIga2V5U2hvcnRjdXQgPSByZWNvcmQua2V5LnNwbGl0KHNwbGl0S2V5KTtcbiAgICAgICAgdmFyIF9kb3duS2V5c0N1cnJlbnQgPSBbXTsgLy8g6K6w5b2V5b2T5YmN5oyJ6ZSu6ZSu5YC8XG5cbiAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCBrZXlTaG9ydGN1dC5sZW5ndGg7IGErKykge1xuICAgICAgICAgIF9kb3duS2V5c0N1cnJlbnQucHVzaChjb2RlKGtleVNob3J0Y3V0W2FdKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX2Rvd25LZXlzQ3VycmVudC5zb3J0KCkuam9pbignJykgPT09IF9kb3duS2V5cy5zb3J0KCkuam9pbignJykpIHtcbiAgICAgICAgICAvLyDmib7liLDlpITnkIblhoXlrrlcbiAgICAgICAgICBldmVudEhhbmRsZXIoZXZlbnQsIHJlY29yZCwgc2NvcGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIOWIpOaWrSBlbGVtZW50IOaYr+WQpuW3sue7j+e7keWumuS6i+S7tlxuXG5cbmZ1bmN0aW9uIGlzRWxlbWVudEJpbmQoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudEhhc0JpbmRFdmVudC5pbmRleE9mKGVsZW1lbnQpID4gLTE7XG59XG5cbmZ1bmN0aW9uIGhvdGtleXMoa2V5LCBvcHRpb24sIG1ldGhvZCkge1xuICBfZG93bktleXMgPSBbXTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKGtleSk7IC8vIOmcgOimgeWkhOeQhueahOW/q+aNt+mUruWIl+ihqFxuXG4gIHZhciBtb2RzID0gW107XG4gIHZhciBzY29wZSA9ICdhbGwnOyAvLyBzY29wZem7mOiupOS4umFsbO+8jOaJgOacieiMg+WbtOmDveacieaViFxuXG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQ7IC8vIOW/q+aNt+mUruS6i+S7tue7keWumuiKgueCuVxuXG4gIHZhciBpID0gMDtcbiAgdmFyIGtleXVwID0gZmFsc2U7XG4gIHZhciBrZXlkb3duID0gdHJ1ZTtcbiAgdmFyIHNwbGl0S2V5ID0gJysnOyAvLyDlr7nkuLrorr7lrprojIPlm7TnmoTliKTmlq1cblxuICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG1ldGhvZCA9IG9wdGlvbjtcbiAgfVxuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob3B0aW9uKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICBpZiAob3B0aW9uLnNjb3BlKSBzY29wZSA9IG9wdGlvbi5zY29wZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKG9wdGlvbi5lbGVtZW50KSBlbGVtZW50ID0gb3B0aW9uLmVsZW1lbnQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIGlmIChvcHRpb24ua2V5dXApIGtleXVwID0gb3B0aW9uLmtleXVwOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAob3B0aW9uLmtleWRvd24gIT09IHVuZGVmaW5lZCkga2V5ZG93biA9IG9wdGlvbi5rZXlkb3duOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbi5zcGxpdEtleSA9PT0gJ3N0cmluZycpIHNwbGl0S2V5ID0gb3B0aW9uLnNwbGl0S2V5OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIH1cblxuICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycpIHNjb3BlID0gb3B0aW9uOyAvLyDlr7nkuo7mr4/kuKrlv6vmjbfplK7ov5vooYzlpITnkIZcblxuICBmb3IgKDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBrZXlzW2ldLnNwbGl0KHNwbGl0S2V5KTsgLy8g5oyJ6ZSu5YiX6KGoXG5cbiAgICBtb2RzID0gW107IC8vIOWmguaenOaYr+e7hOWQiOW/q+aNt+mUruWPluW+l+e7hOWQiOW/q+aNt+mUrlxuXG4gICAgaWYgKGtleS5sZW5ndGggPiAxKSBtb2RzID0gZ2V0TW9kcyhfbW9kaWZpZXIsIGtleSk7IC8vIOWwhumdnuS/rumlsOmUrui9rOWMluS4uumUrueggVxuXG4gICAga2V5ID0ga2V5W2tleS5sZW5ndGggLSAxXTtcbiAgICBrZXkgPSBrZXkgPT09ICcqJyA/ICcqJyA6IGNvZGUoa2V5KTsgLy8gKuihqOekuuWMuemFjeaJgOacieW/q+aNt+mUrlxuICAgIC8vIOWIpOaWrWtleeaYr+WQpuWcqF9oYW5kbGVyc+S4re+8jOS4jeWcqOWwsei1i+S4gOS4quepuuaVsOe7hFxuXG4gICAgaWYgKCEoa2V5IGluIF9oYW5kbGVycykpIF9oYW5kbGVyc1trZXldID0gW107XG5cbiAgICBfaGFuZGxlcnNba2V5XS5wdXNoKHtcbiAgICAgIGtleXVwOiBrZXl1cCxcbiAgICAgIGtleWRvd246IGtleWRvd24sXG4gICAgICBzY29wZTogc2NvcGUsXG4gICAgICBtb2RzOiBtb2RzLFxuICAgICAgc2hvcnRjdXQ6IGtleXNbaV0sXG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIGtleToga2V5c1tpXSxcbiAgICAgIHNwbGl0S2V5OiBzcGxpdEtleVxuICAgIH0pO1xuICB9IC8vIOWcqOWFqOWxgGRvY3VtZW505LiK6K6+572u5b+r5o236ZSuXG5cblxuICBpZiAodHlwZW9mIGVsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmICFpc0VsZW1lbnRCaW5kKGVsZW1lbnQpICYmIHdpbmRvdykge1xuICAgIGVsZW1lbnRIYXNCaW5kRXZlbnQucHVzaChlbGVtZW50KTtcbiAgICBhZGRFdmVudChlbGVtZW50LCAna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBkaXNwYXRjaChlKTtcbiAgICB9KTtcbiAgICBhZGRFdmVudCh3aW5kb3csICdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF9kb3duS2V5cyA9IFtdO1xuICAgIH0pO1xuICAgIGFkZEV2ZW50KGVsZW1lbnQsICdrZXl1cCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBkaXNwYXRjaChlKTtcbiAgICAgIGNsZWFyTW9kaWZpZXIoZSk7XG4gICAgfSk7XG4gIH1cbn1cblxudmFyIF9hcGkgPSB7XG4gIHNldFNjb3BlOiBzZXRTY29wZSxcbiAgZ2V0U2NvcGU6IGdldFNjb3BlLFxuICBkZWxldGVTY29wZTogZGVsZXRlU2NvcGUsXG4gIGdldFByZXNzZWRLZXlDb2RlczogZ2V0UHJlc3NlZEtleUNvZGVzLFxuICBpc1ByZXNzZWQ6IGlzUHJlc3NlZCxcbiAgZmlsdGVyOiBmaWx0ZXIsXG4gIHVuYmluZDogdW5iaW5kXG59O1xuXG5mb3IgKHZhciBhIGluIF9hcGkpIHtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfYXBpLCBhKSkge1xuICAgIGhvdGtleXNbYV0gPSBfYXBpW2FdO1xuICB9XG59XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICB2YXIgX2hvdGtleXMgPSB3aW5kb3cuaG90a2V5cztcblxuICBob3RrZXlzLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoZGVlcCkge1xuICAgIGlmIChkZWVwICYmIHdpbmRvdy5ob3RrZXlzID09PSBob3RrZXlzKSB7XG4gICAgICB3aW5kb3cuaG90a2V5cyA9IF9ob3RrZXlzO1xuICAgIH1cblxuICAgIHJldHVybiBob3RrZXlzO1xuICB9O1xuXG4gIHdpbmRvdy5ob3RrZXlzID0gaG90a2V5cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaG90a2V5cztcbiIsImltcG9ydCBob3RrZXlzIGZyb20gJ2hvdGtleXMtanMnO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiB1c2VJc0hvdGtleVByZXNzZWQoKSB7XG4gICAgcmV0dXJuIGhvdGtleXMuaXNQcmVzc2VkO1xufVxuXG5mdW5jdGlvbiB1c2VIb3RrZXlzKGtleXMsIGNhbGxiYWNrLCBvcHRpb25zLCBkZXBzKSB7XG4gICAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBkZXBzID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgeyBlbmFibGVPblRhZ3MsIGZpbHRlciB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgbWVtb2lzZWRDYWxsYmFjayA9IHVzZUNhbGxiYWNrKChrZXlib2FyZEV2ZW50LCBob3RrZXlzRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHJlZi5jdXJyZW50ID09PSBudWxsIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjYWxsYmFjayhrZXlib2FyZEV2ZW50LCBob3RrZXlzRXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sIGRlcHMgPyBbcmVmLCAuLi5kZXBzXSA6IFtyZWZdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmVuYWJsZU9uVGFncykge1xuICAgICAgICAgICAgaG90a2V5cy5maWx0ZXIgPSAoeyB0YXJnZXQsIHNyY0VsZW1lbnQgfSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRUYWdOYW1lID0gKHRhcmdldCAmJiB0YXJnZXQudGFnTmFtZSkgfHwgKHNyY0VsZW1lbnQgJiYgc3JjRWxlbWVudC50YWdOYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbih0YXJnZXRUYWdOYW1lICYmIGVuYWJsZU9uVGFncyAmJiBlbmFibGVPblRhZ3MuaW5jbHVkZXModGFyZ2V0VGFnTmFtZSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyKVxuICAgICAgICAgICAgaG90a2V5cy5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgICAgIGhvdGtleXMoa2V5cywgb3B0aW9ucyB8fCB7fSwgbWVtb2lzZWRDYWxsYmFjayk7XG4gICAgICAgIHJldHVybiAoKSA9PiBob3RrZXlzLnVuYmluZChrZXlzLCBtZW1vaXNlZENhbGxiYWNrKTtcbiAgICB9LCBbbWVtb2lzZWRDYWxsYmFjaywgb3B0aW9ucywgZW5hYmxlT25UYWdzLCBmaWx0ZXIsIGtleXNdKTtcbiAgICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgeyB1c2VIb3RrZXlzLCB1c2VJc0hvdGtleVByZXNzZWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcFxuIl0sInNvdXJjZVJvb3QiOiIifQ==