@touchtech/baselayer-ui 2.5.0-beta.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/bundle.js +12 -2
  2. package/dist/components/Button/Button.d.ts +22 -0
  3. package/dist/components/Button/__tests__/Button.test.d.ts +1 -0
  4. package/dist/components/Button/index.d.ts +2 -0
  5. package/dist/components/ButtonLink/ButtonLink.d.ts +21 -0
  6. package/dist/components/ButtonLink/__tests__/ButtonLink.test.d.ts +1 -0
  7. package/dist/components/ButtonLink/index.d.ts +1 -0
  8. package/dist/components/ColorPicker/ColorPicker.d.ts +9 -0
  9. package/dist/components/ColorPicker/__tests__/ColorPicker.test.d.ts +1 -0
  10. package/dist/components/ColorPicker/index.d.ts +1 -0
  11. package/dist/components/ColorSwatch/ColorSwatch.d.ts +8 -0
  12. package/dist/components/ColorSwatch/__tests__/ColorSwatch.test.d.ts +1 -0
  13. package/dist/components/ColorSwatch/index.d.ts +1 -0
  14. package/dist/components/ConfirmationModal/ConfirmationModal.d.ts +15 -0
  15. package/dist/components/ConfirmationModal/__tests__/ConfirmationModal.test.d.ts +1 -0
  16. package/dist/components/ConfirmationModal/index.d.ts +1 -0
  17. package/dist/components/FloatingPanel/FloatingPanel.d.ts +13 -0
  18. package/dist/components/FloatingPanel/__tests__/FloatingPanel.test.d.ts +1 -0
  19. package/dist/components/FloatingPanel/index.d.ts +1 -0
  20. package/dist/components/Icon/Icon.d.ts +8 -0
  21. package/dist/components/Icon/__tests__/Icon.test.d.ts +1 -0
  22. package/dist/components/Icon/index.d.ts +1 -0
  23. package/dist/components/IconButton/IconButton.d.ts +17 -0
  24. package/dist/components/IconButton/__tests__/IconButton.test.d.ts +1 -0
  25. package/dist/components/IconButton/index.d.ts +1 -0
  26. package/dist/components/IconButtonLink/IconButtonLink.d.ts +18 -0
  27. package/dist/components/IconButtonLink/__tests__/IconButtonLink.test.d.ts +1 -0
  28. package/dist/components/IconButtonLink/index.d.ts +1 -0
  29. package/dist/components/Image/Image.d.ts +11 -0
  30. package/dist/components/Image/__tests__/Image.test.d.ts +1 -0
  31. package/dist/components/Image/index.d.ts +1 -0
  32. package/dist/components/ListView/ListView.d.ts +8 -0
  33. package/dist/components/ListView/ListViewItem.d.ts +14 -0
  34. package/dist/components/ListView/__tests__/ListView.test.d.ts +1 -0
  35. package/dist/components/ListView/index.d.ts +3 -0
  36. package/dist/components/Menu/Menu.d.ts +14 -0
  37. package/dist/components/Menu/MenuContainer.d.ts +10 -0
  38. package/dist/components/Menu/MenuItem.d.ts +9 -0
  39. package/dist/components/Menu/MenuLinkItem.d.ts +8 -0
  40. package/dist/components/Menu/__tests__/Menu.test.d.ts +1 -0
  41. package/dist/components/Menu/__tests__/MenuLinkItem.test.d.ts +1 -0
  42. package/dist/components/Menu/index.d.ts +4 -0
  43. package/dist/components/Modal/Modal.d.ts +9 -0
  44. package/dist/components/Modal/__tests__/Modal.test.d.ts +1 -0
  45. package/dist/components/Modal/index.d.ts +1 -0
  46. package/dist/components/Overlay/Overlay.d.ts +9 -0
  47. package/dist/components/Overlay/__tests__/Overlay.test.d.ts +1 -0
  48. package/dist/components/Overlay/index.d.ts +1 -0
  49. package/dist/components/TextInput/TextInput.d.ts +16 -0
  50. package/dist/components/TextInput/__tests__/TextInput.test.d.ts +1 -0
  51. package/dist/components/TextInput/index.d.ts +1 -0
  52. package/dist/components/Toast/Toast.d.ts +13 -0
  53. package/dist/components/Toast/ToastContainer.d.ts +6 -0
  54. package/dist/components/Toast/__tests__/Toast.test.d.ts +1 -0
  55. package/dist/components/Toast/__tests__/ToastContainer.test.d.ts +1 -0
  56. package/dist/components/Toast/index.d.ts +2 -0
  57. package/dist/components/Video/Video.d.ts +21 -0
  58. package/dist/components/Video/__tests__/Video.test.d.ts +1 -0
  59. package/dist/components/Video/index.d.ts +1 -0
  60. package/dist/hooks/index.d.ts +2 -0
  61. package/dist/hooks/useOutsideClick.d.ts +4 -0
  62. package/dist/hooks/useToggle.d.ts +5 -0
  63. package/dist/index.d.ts +18 -0
  64. package/dist/styles.css +23 -1
  65. package/dist/types/components/Button/Button.d.ts +22 -0
  66. package/dist/types/components/Button/__tests__/Button.test.d.ts +1 -0
  67. package/dist/types/components/Button/index.d.ts +1 -0
  68. package/dist/types/components/ButtonLink/ButtonLink.d.ts +21 -0
  69. package/dist/types/components/ButtonLink/__tests__/ButtonLink.test.d.ts +1 -0
  70. package/dist/types/components/ButtonLink/index.d.ts +1 -0
  71. package/dist/types/components/ColorPicker/ColorPicker.d.ts +9 -0
  72. package/dist/types/components/ColorPicker/__tests__/ColorPicker.test.d.ts +1 -0
  73. package/dist/types/components/ColorPicker/index.d.ts +1 -0
  74. package/dist/types/components/ColorSwatch/ColorSwatch.d.ts +8 -0
  75. package/dist/types/components/ColorSwatch/__tests__/ColorSwatch.test.d.ts +1 -0
  76. package/dist/types/components/ColorSwatch/index.d.ts +1 -0
  77. package/dist/types/components/ConfirmationModal/ConfirmationModal.d.ts +15 -0
  78. package/dist/types/components/ConfirmationModal/__tests__/ConfirmationModal.test.d.ts +1 -0
  79. package/dist/types/components/ConfirmationModal/index.d.ts +1 -0
  80. package/dist/types/components/FloatingPanel/FloatingPanel.d.ts +13 -0
  81. package/dist/types/components/FloatingPanel/__tests__/FloatingPanel.test.d.ts +1 -0
  82. package/dist/types/components/FloatingPanel/index.d.ts +1 -0
  83. package/dist/types/components/Icon/Icon.d.ts +8 -0
  84. package/dist/types/components/Icon/__tests__/Icon.test.d.ts +1 -0
  85. package/dist/types/components/Icon/index.d.ts +1 -0
  86. package/dist/types/components/IconButton/IconButton.d.ts +17 -0
  87. package/dist/types/components/IconButton/__tests__/IconButton.test.d.ts +1 -0
  88. package/dist/types/components/IconButton/index.d.ts +1 -0
  89. package/dist/types/components/IconButtonLink/IconButtonLink.d.ts +18 -0
  90. package/dist/types/components/IconButtonLink/__tests__/IconButtonLink.test.d.ts +1 -0
  91. package/dist/types/components/IconButtonLink/index.d.ts +1 -0
  92. package/dist/types/components/Image/Image.d.ts +11 -0
  93. package/dist/types/components/Image/__tests__/Image.test.d.ts +1 -0
  94. package/dist/types/components/Image/index.d.ts +1 -0
  95. package/dist/types/components/ListView/ListView.d.ts +8 -0
  96. package/dist/types/components/ListView/ListViewItem.d.ts +14 -0
  97. package/dist/types/components/ListView/__tests__/ListView.test.d.ts +1 -0
  98. package/dist/types/components/ListView/index.d.ts +3 -0
  99. package/dist/types/components/Menu/Menu.d.ts +14 -0
  100. package/dist/types/components/Menu/MenuContainer.d.ts +10 -0
  101. package/dist/types/components/Menu/MenuItem.d.ts +9 -0
  102. package/dist/types/components/Menu/MenuLinkItem.d.ts +8 -0
  103. package/dist/types/components/Menu/__tests__/Menu.test.d.ts +1 -0
  104. package/dist/types/components/Menu/__tests__/MenuLinkItem.test.d.ts +1 -0
  105. package/dist/types/components/Menu/index.d.ts +4 -0
  106. package/dist/types/components/Modal/Modal.d.ts +9 -0
  107. package/dist/types/components/Modal/__tests__/Modal.test.d.ts +1 -0
  108. package/dist/types/components/Modal/index.d.ts +1 -0
  109. package/dist/types/components/Overlay/Overlay.d.ts +9 -0
  110. package/dist/types/components/Overlay/__tests__/Overlay.test.d.ts +1 -0
  111. package/dist/types/components/Overlay/index.d.ts +1 -0
  112. package/dist/types/components/TextInput/TextInput.d.ts +16 -0
  113. package/dist/types/components/TextInput/__tests__/TextInput.test.d.ts +1 -0
  114. package/dist/types/components/TextInput/index.d.ts +1 -0
  115. package/dist/types/components/Toast/Toast.d.ts +13 -0
  116. package/dist/types/components/Toast/ToastContainer.d.ts +6 -0
  117. package/dist/types/components/Toast/__tests__/Toast.test.d.ts +1 -0
  118. package/dist/types/components/Toast/__tests__/ToastContainer.test.d.ts +1 -0
  119. package/dist/types/components/Toast/index.d.ts +2 -0
  120. package/dist/types/components/Video/Video.d.ts +21 -0
  121. package/dist/types/components/Video/__tests__/Video.test.d.ts +1 -0
  122. package/dist/types/components/Video/index.d.ts +1 -0
  123. package/dist/types/hooks/index.d.ts +2 -0
  124. package/dist/types/hooks/useOutsideClick.d.ts +4 -0
  125. package/dist/types/hooks/useToggle.d.ts +5 -0
  126. package/dist/types/index.d.ts +18 -0
  127. package/dist/types/types/index.d.ts +7 -0
  128. package/package.json +13 -12
  129. package/dist/640e1c62fd0dfa7c00a1c8fe0e35c6d1.svg +0 -3
package/dist/bundle.js CHANGED
@@ -1,2 +1,12 @@
1
- !function(e,t){for(var n in t)e[n]=t[n]}(exports,function(e){var t={};function n(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},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 a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(a,r,function(t){return e[t]}.bind(null,r));return a},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=27)}([function(e,t,n){e.exports=n(32)()},function(e,t){e.exports=require("react")},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return r}));var a=Array.isArray;function r(e){var t="";if("string"==typeof e||"number"==typeof e)return e||"";if(a(e))for(var n,o=0;o<e.length;o++)""!==(n=r(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={container:"_2MPuJ3ApvrAvrewjSWGAA2",small:"lOkoan7dbp-goDtJVuK7B",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){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){e.exports={container:"kkgHoBQhFPsKj_x1ZFdRH",modalHeader:"_1WuvHD-GdXLrtqwa04W1qy",modalContent:"_27eUySQqvq5qloNClIjIST",noPadding:"_2gtBXL9PFSpHsW0A9xd55S",modalButtonsContainer:"_5gIpyF3X5thPQAnsAC4z9",modalButtons:"swsoCii1w4xNl7ioDVkO5"}},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){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){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";n.r(t),n.d(t,"Icon",(function(){return u}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(14),c=n.n(l);function d({src:e,alt:t,size:n,inverted:a}){return r.a.createElement("img",{className:Object(s.default)([c.a.icon,c.a[n],{[c.a.inverted]:a}]),crossOrigin:"anonymous","data-testid":"icon",alt:t,src:e})}d.defaultProps={size:"medium",inverted:!1},d.propTypes={src:i.a.string.isRequired,alt:i.a.string,children:i.a.node,size:i.a.oneOf(["small","medium","large"]),inverted:i.a.bool};var u=d},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){e.exports={listViewItem:"_2LgjqABwjHtpbGzkQQkqiQ"}},function(e,t,n){e.exports={colorSwatch:"_13ss1xsMNizvEgP_hxEV8B",selected:"L6fAt6RZYz_z3wPbjZExH",srOnly:"_3vJ5mxpzaYsKaxf-8tB31x"}},function(e,t,n){e.exports={overlay:"_1yxCbQJqStUvytvKEeNC3n",modal:"D8SjBx3ikz636YubnHYAY",modalButton:"o8VRVxMrs1xXavADyxjLG"}},function(e,t,n){e.exports={icon:"uh8zkmQp5ybk5WJSla69D",small:"_9DICtqmQSnLPjm1XI7YVs",large:"_2rgucAH8Bnli-cmjz9i2C2",inverted:"I-eI5q8rd2bSp9B-FhUza"}},function(e,t,n){e.exports={container:"CPHNd8osKjLvQDEQUErux",header:"_1e7hHSVo59e8yQnhc9B6Id",list:"_1w1W8E6_Hzfes3WZTYZaJK"}},function(e,t,n){e.exports={overlay:"_2QgpyrDcUQyKYESC5DXXJr",transparent:"_28fVmoxp69OPr88Ew0zVeN",fixed:"_2sU3515EbFFgeP1yK2Zubz"}},function(e,t,n){e.exports={textInput:"_2wfqOzWBoAn_K7goqvjXJe",small:"_1a4QOVJB0zW3Urf_5hqNjj",large:"_3DQ52Qd_1K4_VxxVv728SX",textLabel:"_31oAAOE_dvGoAz9qJmo8EG"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(28);Object.defineProperty(t,"Button",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(30);Object.defineProperty(t,"ButtonLink",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";n.r(t),n.d(t,"Modal",(function(){return R}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>0;function l(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on".concat(t),(function(){n(window.event)}))}function c(e,t){for(var n=t.slice(0,t.length-1),a=0;a<n.length;a++)n[a]=e[n[a].toLowerCase()];return n}function d(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,"-":s?173:189,"=":s?61:187,";":s?59:186,"'":222,"[":219,"]":221,"\\":220},f={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,cmd:91,command:91},p={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey",shiftKey:16,ctrlKey:17,altKey:18,metaKey:91},m={16:!1,18:!1,17:!1,91:!1},v={},y=1;y<20;y++)u["f".concat(y)]=111+y;var h=[],g="all",b=[],O=function(e){return u[e.toLowerCase()]||f[e.toLowerCase()]||e.toUpperCase().charCodeAt(0)};function _(e){g=e||"all"}function E(){return g||"all"}var w=function(e){var t=e.key,n=e.scope,a=e.method,r=e.splitKey,o=void 0===r?"+":r;d(t).forEach((function(e){var t=e.split(o),r=t.length,i=t[r-1],s="*"===i?"*":O(i);if(v[s]){n||(n=E());var l=r>1?c(f,t):[];v[s]=v[s].map((function(e){return(!a||e.method===a)&&e.scope===n&&function(e,t){for(var n=e.length>=t.length?e:t,a=e.length>=t.length?t:e,r=!0,o=0;o<n.length;o++)-1===a.indexOf(n[o])&&(r=!1);return r}(e.mods,l)?{}:e}))}}))};function k(e,t,n){var a;if(t.scope===n||"all"===t.scope){for(var r in a=t.mods.length>0,m)Object.prototype.hasOwnProperty.call(m,r)&&(!m[r]&&t.mods.indexOf(+r)>-1||m[r]&&-1===t.mods.indexOf(+r))&&(a=!1);(0!==t.mods.length||m[16]||m[18]||m[17]||m[91])&&!a&&"*"!==t.shortcut||!1===t.method(e,t)&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0))}}function C(e){var t=v["*"],n=e.keyCode||e.which||e.charCode;if(P.filter.call(this,e)){if(93!==n&&224!==n||(n=91),-1===h.indexOf(n)&&229!==n&&h.push(n),["ctrlKey","altKey","shiftKey","metaKey"].forEach((function(t){var n=p[t];e[t]&&-1===h.indexOf(n)?h.push(n):!e[t]&&h.indexOf(n)>-1?h.splice(h.indexOf(n),1):"metaKey"===t&&e[t]&&3===h.length&&(e.ctrlKey||e.shiftKey||e.altKey||(h=h.slice(h.indexOf(n))))})),n in m){for(var a in m[n]=!0,f)f[a]===n&&(P[a]=!0);if(!t)return}for(var r in m)Object.prototype.hasOwnProperty.call(m,r)&&(m[r]=e[p[r]]);e.getModifierState&&(!e.altKey||e.ctrlKey)&&e.getModifierState("AltGraph")&&(-1===h.indexOf(17)&&h.push(17),-1===h.indexOf(18)&&h.push(18),m[17]=!0,m[18]=!0);var o=E();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)&&k(e,t[i],o);if(n in v)for(var s=0;s<v[n].length;s++)if(("keydown"===e.type&&v[n][s].keydown||"keyup"===e.type&&v[n][s].keyup)&&v[n][s].key){for(var l=v[n][s],c=l.splitKey,d=l.key.split(c),u=[],y=0;y<d.length;y++)u.push(O(d[y]));u.sort().join("")===h.sort().join("")&&k(e,l,o)}}}function P(e,t,n){h=[];var a=d(e),r=[],o="all",i=document,s=0,u=!1,p=!0,y="+";for(void 0===n&&"function"==typeof t&&(n=t),"[object Object]"===Object.prototype.toString.call(t)&&(t.scope&&(o=t.scope),t.element&&(i=t.element),t.keyup&&(u=t.keyup),void 0!==t.keydown&&(p=t.keydown),"string"==typeof t.splitKey&&(y=t.splitKey)),"string"==typeof t&&(o=t);s<a.length;s++)r=[],(e=a[s].split(y)).length>1&&(r=c(f,e)),(e="*"===(e=e[e.length-1])?"*":O(e))in v||(v[e]=[]),v[e].push({keyup:u,keydown:p,scope:o,mods:r,shortcut:a[s],method:n,key:a[s],splitKey:y});void 0!==i&&!function(e){return b.indexOf(e)>-1}(i)&&window&&(b.push(i),l(i,"keydown",(function(e){C(e)})),l(window,"focus",(function(){h=[]})),l(i,"keyup",(function(e){C(e),function(e){var t=e.keyCode||e.which||e.charCode,n=h.indexOf(t);if(n>=0&&h.splice(n,1),e.key&&"meta"===e.key.toLowerCase()&&h.splice(0,h.length),93!==t&&224!==t||(t=91),t in m)for(var a in m[t]=!1,f)f[a]===t&&(P[a]=!1)}(e)})))}var x={setScope:_,getScope:E,deleteScope:function(e,t){var n,a;for(var r in e||(e=E()),v)if(Object.prototype.hasOwnProperty.call(v,r))for(n=v[r],a=0;a<n.length;)n[a].scope===e?n.splice(a,1):a++;E()===e&&_(t||"all")},getPressedKeyCodes:function(){return h.slice(0)},isPressed:function(e){return"string"==typeof e&&(e=O(e)),-1!==h.indexOf(e)},filter:function(e){var t=e.target||e.srcElement,n=t.tagName,a=!0;return!t.isContentEditable&&("INPUT"!==n&&"TEXTAREA"!==n&&"SELECT"!==n||t.readOnly)||(a=!1),a},unbind:function(e){if(e){if(Array.isArray(e))e.forEach((function(e){e.key&&w(e)}));else if("object"==typeof e)e.key&&w(e);else if("string"==typeof e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];var r=n[0],o=n[1];"function"==typeof r&&(o=r,r=""),w({key:e,scope:r,method:o,splitKey:"+"})}}else Object.keys(v).forEach((function(e){return delete v[e]}))}};for(var j in x)Object.prototype.hasOwnProperty.call(x,j)&&(P[j]=x[j]);if("undefined"!=typeof window){var S=window.hotkeys;P.noConflict=function(e){return e&&window.hotkeys===P&&(window.hotkeys=S),P},window.hotkeys=P}var N=P;var z=n(13),T=n.n(z);function q({children:e,isOpen:t,onClose:n,button:o}){!function(e,t,n,r){n instanceof Array&&(r=n,n=void 0);const{enableOnTags:o,filter:i}=n||{},s=Object(a.useRef)(null),l=Object(a.useCallback)((e,n)=>(null===s.current||document.activeElement===s.current)&&(t(e,n),!0),r?[s,...r]:[s]);Object(a.useEffect)(()=>(n&&n.enableOnTags&&(N.filter=({target:e,srcElement:t})=>{const n=e&&e.tagName||t&&t.tagName;return Boolean(n&&o&&o.includes(n))}),i&&(N.filter=i),N(e,n||{},l),()=>N.unbind(e,l)),[l,n,o,i,e])}("Escape",n);const i=Object(a.useCallback)(()=>{n()},[n]);return t&&r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{className:T.a.overlay,"data-testid":"modal-overlay",onClick:i}),r.a.createElement("div",{className:T.a.modal,"data-testid":"modal"},e),o&&r.a.createElement("div",{className:T.a.modalButton},o))}q.defaultProps={onClose:()=>{}},q.propTypes={children:i.a.node.isRequired,isOpen:i.a.bool.isRequired,onClose:i.a.func,button:i.a.node};var R=q},function(e,t,n){"use strict";n.r(t),n.d(t,"ColorSwatch",(function(){return u}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(12),c=n.n(l);function d({color:e,isSelected:t,onClick:n}){return r.a.createElement("button",{className:Object(s.default)([c.a.colorSwatch,{[c.a.selected]:t}]),"data-testid":"color-swatch",disabled:t,onClick:n,style:{backgroundColor:e.hexCode}},r.a.createElement("span",{className:c.a.srOnly},`Select ${e.label} color`))}d.defaultProps={isSelected:!1},d.propTypes={color:i.a.shape({hexCode:i.a.string.isRequired,label:i.a.string.isRequired}).isRequired,isSelected:i.a.bool,onClick:i.a.func.isRequired};var u=d},function(e,t,n){e.exports={colorPicker:"_31FwH_nWr72k3pugApJub9",horizontal:"Qa-BpuTT2kxpmV_AQgCjH",vertical:"_2x4SAnbopyZmkycWLC0EXk"}},function(e,t,n){e.exports={menuItem:"_3gGczRJwrNenXTBLQnC29M",active:"_2j1ilUNkbFGSgulXSoHAdP"}},function(e,t,n){e.exports={menuContainer:"_2-SFwsppEuobBJkAwwQrFC"}},function(e,t,n){e.exports={menuLinkItem:"_2Dy1LTfScGZtSb_5Lud-lU",active:"_2Uws7bj3yejmn1k7XiyKfQ",menuItem:"_2lI7S2t5zWhQsvg_XnQ7--"}},function(e,t,n){e.exports={toastContainer:"_3F8cJU1wmKmbrjidg-O3zp"}},function(e,t,n){"use strict";var a=this&&this.__createBinding||(Object.create?function(e,t,n,a){void 0===a&&(a=n),Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,a){void 0===a&&(a=n),e[a]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||t.hasOwnProperty(n)||a(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(18),t),r(n(19),t),r(n(41),t),r(n(21),t),r(n(42),t),r(n(43),t),r(n(9),t),r(n(44),t),r(n(45),t),r(n(34),t),r(n(38),t),r(n(37),t),r(n(20),t),r(n(46),t),r(n(47),t),r(n(39),t),r(n(48),t),r(n(40),t)},function(e,t,n){"use strict";var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(1)),o=a(n(2)),i=a(n(29));t.default=function(e){var t,n=e.children,a=e.className,s=e.onClick,l=e.disabled,c=void 0!==l&&l,d=e.inverted,u=void 0!==d&&d,f=e.rounded,p=void 0!==f&&f,m=e.noShadow,v=void 0!==m&&m,y=e.noPadding,h=void 0!==y&&y,g=e.noBorder,b=void 0!==g&&g,O=e.transparent,_=void 0!==O&&O,E=e.stretchHorizontally,w=void 0!==E&&E,k=e.stretchVertically,C=void 0!==k&&k,P=e.offsetSides,x=void 0===P?[]:P,j=e.align,S=void 0===j?"center":j,N=e.size,z=void 0===N?"medium":N,T=e.type;return r.default.createElement("button",{className:o.default([i.default.container,i.default[z],i.default[S],(t={},t[i.default.inverted]=u,t[i.default.rounded]=p,t[i.default.noShadow]=v,t[i.default.noPadding]=h,t[i.default.noBorder]=b,t[i.default.transparent]=_,t[i.default.stretchHorizontally]=w,t[i.default.stretchVertically]=C,t),x.map((function(e){return i.default[e+"Offset"]})),a]),disabled:c,onClick:s,type:T,role:"button"},"string"!=typeof n&&Array.isArray(n)&&n.length?r.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 a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},r=this&&this.__rest||function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}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(1)),s=o(n(2)),l=o(n(31));t.default=function(e){var t,n=e.as,o=e.children,c=e.className,d=e.size,u=e.inverted,f=void 0!==u&&u,p=e.rounded,m=void 0!==p&&p,v=e.transparent,y=void 0!==v&&v,h=e.noShadow,g=void 0!==h&&h,b=e.noPadding,O=void 0!==b&&b,_=e.noBorder,E=void 0!==_&&_,w=e.stretchHorizontally,k=void 0!==w&&w,C=e.stretchVertically,P=void 0!==C&&C,x=e.offsetSides,j=void 0===x?[]:x,S=e.align,N=void 0===S?"center":S,z=r(e,["as","children","className","size","inverted","rounded","transparent","noShadow","noPadding","noBorder","stretchHorizontally","stretchVertically","offsetSides","align"]);return void 0===n&&(n="a"),i.default.createElement(n,a({"data-testid":"button-link",className:s.default([l.default.container,l.default[d],l.default[N],(t={},t[l.default.inverted]=f,t[l.default.rounded]=m,t[l.default.noShadow]=g,t[l.default.noPadding]=O,t[l.default.noBorder]=E,t[l.default.transparent]=y,t[l.default.stretchHorizontally]=k,t[l.default.stretchVertically]=P,t),j.map((function(e){return l.default[e+"Offset"]})),c])},z),"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",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";var a=n(33);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,i){if(i!==a){var s=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 s.name="Invariant Violation",s}}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:r};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 a=n(35);Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return a.default}})},function(e,t,n){"use strict";var a=this&&this.__createBinding||(Object.create?function(e,t,n,a){void 0===a&&(a=n),Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,a){void 0===a&&(a=n),e[a]=t[n]}),r=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)&&a(t,e,n);return r(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var s=o(n(1)),l=i(n(2)),c=i(n(36));t.default=function(e){var t=e.src,n=e.alt,a=e.srcWidth,r=e.srcHeight,o=e.children,i=e.layout,d=void 0===i?"contain":i;return o?s.createElement("div",{className:l.default([c.default.container,c.default.hasOverlay])},s.createElement("img",{className:l.default([c.default.image,c.default[d]]),crossOrigin:"anonymous","data-testid":"image",alt:n,src:t,width:a,height:r}),o&&s.createElement("div",{className:c.default.overlay},o)):s.createElement("img",{className:l.default([c.default.image,c.default[d]]),crossOrigin:"anonymous","data-testid":"image",alt:n,src:t,width:a,height:r})}},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"}},function(e,t,n){"use strict";n.r(t),n.d(t,"Menu",(function(){return u})),n.d(t,"MenuContainer",(function(){return v})),n.d(t,"MenuItem",(function(){return b})),n.d(t,"MenuLinkItem",(function(){return k}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(8),c=n.n(l);function d({children:e,className:t,isOpen:n,placement:a,header:o}){return r.a.createElement("div",{className:Object(s.default)([c.a.menu,c.a[a.horizontal],c.a[a.vertical],{[c.a.open]:n},t])},o&&n&&r.a.createElement("h3",{className:c.a.menuHeader},o),r.a.createElement("ul",null,n&&e))}d.defaultProps={isOpen:!0,placement:{horizontal:"left",vertical:"bottom"}},d.propTypes={children:i.a.node.isRequired,className:i.a.string,isOpen:i.a.bool,header:i.a.string,placement:i.a.shape({horizontal:i.a.oneOf(["right","left"]),vertical:i.a.oneOf(["top","bottom"])})};var u=d,f=n(24),p=n.n(f);function m({children:e,className:t},n){return r.a.createElement("div",{ref:n,className:Object(s.default)([p.a.menuContainer,t])},e)}var v=Object(a.forwardRef)(m),y=n(23),h=n.n(y);function g({children:e,className:t,isActive:n,onClick:a}){return r.a.createElement("li",{className:Object(s.default)([h.a.menuItem,{[h.a.active]:n},t]),onClick:a},e)}g.defaultProps={isActive:!1},g.propTypes={children:i.a.node.isRequired,className:i.a.string,isActive:i.a.bool,onClick:i.a.func};var b=g,O=n(25),_=n.n(O);function E(){return(E=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function w({as:e,children:t,className:n,...a}){return r.a.createElement(e,E({"data-testid":"menu-link-item",className:Object(s.default)([_.a.menuLinkItem,n])},a),t)}w.defaultProps={as:"a"},w.propTypes={as:i.a.elementType,children:i.a.node,className:i.a.string};var k=w},function(e,t,n){"use strict";n.r(t),n.d(t,"ListView",(function(){return u})),n.d(t,"ListViewItem",(function(){return y})),n.d(t,"ListViewLinkItem",(function(){return O}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(15),c=n.n(l);function d({children:e,className:t,header:n}){return r.a.createElement("div",{className:Object(s.default)([c.a.container,t])},n&&r.a.createElement("h3",{className:c.a.header},n),r.a.createElement("ul",{className:c.a.list},e))}d.propTypes={children:i.a.node.isRequired,className:i.a.string,header:i.a.string};var u=d,f=n(18),p=n(11),m=n.n(p);function v({children:e,active:t,disabled:n,transparent:a,noPadding:o,size:i,align:l,onClick:c}){return r.a.createElement("li",{className:Object(s.default)([m.a.listViewItem])},r.a.createElement(f.Button,{onClick:c,disabled:n,inverted:t,transparent:a,noPadding:o,align:l,size:i,stretchHorizontally:!0,noShadow:!0,noBorder:!0},e))}v.defaultProps={active:!1,transparent:!1,noPadding:!1,disabled:!1,size:"medium",align:"center"},v.propTypes={children:i.a.node.isRequired,active:i.a.bool,disabled:i.a.bool,transparent:i.a.bool,noPadding:i.a.bool,size:i.a.string,align:i.a.oneOf(["left","center"]),onClick:i.a.func};var y=v,h=n(19);function g(){return(g=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function b({children:e,active:t,transparent:n,noPadding:a,size:o,align:i,as:l,...c}){return r.a.createElement("li",{className:Object(s.default)([m.a.listViewItem])},r.a.createElement(h.ButtonLink,g({as:l,inverted:t,transparent:n,noPadding:a,align:i,size:o,stretchHorizontally:!0,noShadow:!0,noBorder:!0},c),e))}b.defaultProps={active:!1,transparent:!1,noPadding:!1,size:"medium",align:"center",as:"a"},b.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};var O=b},function(e,t,n){"use strict";n.r(t),n.d(t,"Toast",(function(){return u})),n.d(t,"ToastContainer",(function(){return v}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(10),c=n.n(l);function d({children:e,image:t,buttons:n,onClick:a}){return r.a.createElement("div",{className:Object(s.default)([c.a.toast]),onClick:a,"data-testid":"toast"},t&&r.a.createElement("img",{"data-testid":"toast-image",className:c.a.toastImage,src:t.src,alt:t.alt}),r.a.createElement("div",{className:c.a.toastContent},e),r.a.createElement("div",{className:c.a.toastButtons},n))}d.defaultProps={onClick:()=>{}},d.propTypes={children:i.a.node,buttons:i.a.arrayOf(i.a.node),image:i.a.shape({alt:i.a.string.isRequired,src:i.a.string.isRequired}),onClick:i.a.func};var u=d,f=n(26),p=n.n(f);function m({children:e}){return r.a.createElement("div",{className:Object(s.default)([p.a.toastContainer]),"data-testid":"toast-container"},e)}m.propTypes={children:i.a.node};var v=m},function(e,t,n){"use strict";n.r(t),n.d(t,"useToggle",(function(){return r})),n.d(t,"useOutsideClick",(function(){return o}));var a=n(1);function r(e=!1){const[t,n]=Object(a.useState)("boolean"==typeof e&&e),r=()=>n(e=>!e);return r.on=()=>n(!0),r.off=()=>n(!1),[t,Object(a.useCallback)(r,[])]}function o(e){const t=Object(a.useRef)();return Object(a.useEffect)(()=>{const n=n=>{t.current&&!t.current.contains(n.target)&&e(n)};return document.addEventListener("click",n),document.addEventListener("touchstart",n),()=>{document.removeEventListener("click",n),document.removeEventListener("touchstart",n)}},[e]),t}},function(e,t,n){"use strict";n.r(t),n.d(t,"ColorPicker",(function(){return f}));var a=n(1),r=n.n(a),o=n(2),i=n(0),s=n.n(i),l=n(21),c=n(22),d=n.n(c);function u({colors:e,direction:t,onSelect:n,selectedColor:a}){return r.a.createElement("div",{className:Object(o.default)([d.a.colorPicker,d.a[t]])},e.map(e=>r.a.createElement(l.ColorSwatch,{key:e.key,color:e,isSelected:e===a,onClick:()=>n(e)})))}u.defaultProps={direction:"vertical"},u.propTypes={direction:s.a.oneOf(["horizontal","vertical"]),colors:s.a.arrayOf(s.a.shape({hexCode:s.a.string.isRequired,key:s.a.string.isRequired,label:s.a.string.isRequired})).isRequired,onSelect:s.a.func.isRequired,selectedColor:s.a.shape({hexCode:s.a.string.isRequired,key:s.a.string.isRequired,label:s.a.string.isRequired})};var f=u},function(e,t,n){"use strict";n.r(t),n.d(t,"ConfirmationModal",(function(){return f}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(20),c=n(5),d=n.n(c);function u({buttonsLeft:e,buttonsRight:t,children:n,header:a,isOpen:o,onClose:i,noPadding:c}){return r.a.createElement(l.Modal,{isOpen:o,onClose:i,showCloseButton:!1},r.a.createElement("div",{className:d.a.container},r.a.createElement("h1",{className:d.a.modalHeader},a),r.a.createElement("div",{className:Object(s.default)([d.a.modalContent,{[d.a.noPadding]:c}])},n),r.a.createElement("div",{className:d.a.modalButtonsContainer},r.a.createElement("div",{className:d.a.modalButtons},e),r.a.createElement("div",{className:d.a.modalButtons},t))))}u.displayName="ConfirmationModal",u.defaultProps={buttonsLeft:[],buttonsRight:[],onClose:()=>{},noPadding:!1},u.propTypes={buttonsLeft:i.a.arrayOf(i.a.element),buttonsRight:i.a.arrayOf(i.a.element),children:i.a.node.isRequired,header:i.a.string.isRequired,isOpen:i.a.bool.isRequired,noPadding:i.a.bool,onClose:i.a.func};var f=u},function(e,t,n){"use strict";n.r(t),n.d(t,"FloatingPanel",(function(){return u}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(7),c=n.n(l);function d({children:e,layout:t,placement:n}){const a="center"===n.horizontal?"horizontalCenter":n.horizontal,o="center"===n.vertical?"verticalCenter":n.vertical;return r.a.createElement("div",{"data-testid":"floating-panel",className:Object(s.default)([c.a.container,c.a[a],c.a[o],c.a[t],{[c.a.fixed]:"container"!==n.parent}])},e)}d.defaultProps={layout:"column",placement:{horizontal:"center",vertical:"bottom",parent:"viewport"}},d.propTypes={children:i.a.node,layout:i.a.oneOf(["column","row"]),placement:i.a.shape({horizontal:i.a.oneOf(["right","rightEdge","rightOnEdge","left","leftEdge","leftOnEdge","leftOnEdge","center"]),vertical:i.a.oneOf(["top","topEdge","bottom","bottomEdge","bottomOnEdge","center"]),parent:i.a.oneOf(["viewport","container"])})};var u=d},function(e,t,n){"use strict";n.r(t),n.d(t,"IconButton",(function(){return f}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(9),c=n(3),d=n.n(c);function u({className:e,onClick:t,size:n,type:a,src:o,alt:i,disabled:c,inverted:u,noShadow:f,noBorder:p,isActive:m,transparent:v,rounded:y,offsetSides:h}){return r.a.createElement("button",{className:Object(s.default)([d.a.container,d.a[n],{[d.a.inverted]:u,[d.a.rounded]:y,[d.a.active]:m,[d.a.noShadow]:f,[d.a.noBorder]:p,[d.a.transparent]:v},h.map(e=>d.a[`${e}Offset`]),e]),disabled:c,onClick:t,type:a,role:"button"},r.a.createElement(l.Icon,{src:o,alt:i,size:n,inverted:u}))}u.defaultProps={size:"medium",disabled:!1,inverted:!1,isActive:!1,noShadow:!1,noBorder:!1,transparent:!1,rounded:!1,offsetSides:[]},u.propTypes={className:i.a.string,src:i.a.string.isRequired,alt:i.a.string.isRequired,isActive:i.a.bool,disabled:i.a.bool,inverted:i.a.bool,noShadow:i.a.bool,noBorder:i.a.bool,transparent:i.a.bool,rounded:i.a.bool,onClick:i.a.func,size:i.a.oneOf(["small","medium","large"]),type:i.a.oneOf(["submit","reset","button"]),offsetSides:i.a.arrayOf(["top","right","bottom","left"])};var f=u},function(e,t,n){"use strict";n.r(t),n.d(t,"IconButtonLink",(function(){return p}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(9),c=n(4),d=n.n(c);function u(){return(u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function f({as:e,className:t,src:n,alt:a,size:o,inverted:i,noShadow:c,noBorder:f,transparent:p,rounded:m,offsetSides:v,...y}){return r.a.createElement(e,u({"data-testid":"icon-button-link",className:Object(s.default)([d.a.container,d.a[o],{[d.a.inverted]:i,[d.a.rounded]:m,[d.a.noShadow]:c,[d.a.noBorder]:f,[d.a.transparent]:p},v.map(e=>d.a[`${e}Offset`]),t])},y),r.a.createElement(l.Icon,{src:n,alt:a,size:o,inverted:i}))}f.defaultProps={as:"a",size:"medium",inverted:!1,noShadow:!1,noBorder:!1,transparent:!1,rounded:!1,offsetSides:[]},f.propTypes={as:i.a.elementType,children:i.a.node,className:i.a.string,src:i.a.string.isRequired,alt:i.a.string.isRequired,inverted:i.a.bool,noShadow:i.a.bool,noBorder:i.a.bool,transparent:i.a.bool,rounded:i.a.bool,size:i.a.oneOf(["small","medium","large"]),offsetSides:i.a.arrayOf(["top","right","bottom","left"])};var p=f},function(e,t,n){"use strict";n.r(t),n.d(t,"Overlay",(function(){return u}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(16),c=n.n(l);function d({children:e,transparent:t,isFixed:n,onClick:a}){return r.a.createElement("div",{"data-testid":"overlay",className:Object(s.default)([c.a.overlay,{[c.a.transparent]:t,[c.a.fixed]:n}]),onClick:a},e)}d.defaultProps={transparent:!1,isFixed:!1,onClick:()=>{}},d.propTypes={children:i.a.arrayOf(i.a.node),transparent:i.a.bool,isFixed:i.a.bool,onClick:i.a.func};var u=d},function(e,t,n){"use strict";n.r(t),n.d(t,"TextInput",(function(){return u}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(17),c=n.n(l);function d({label:e,onChange:t,placeholder:n,value:o,name:i,type:l,size:d,autoFocus:u,inputRef:f}){const p=Object(a.useCallback)(e=>t(e.target.value),[t]);return r.a.createElement("label",{className:c.a.textLabel},e,r.a.createElement("input",{"data-testid":"input",ref:f,className:Object(s.default)([c.a.textInput,c.a[d]]),onChange:f?void 0:p,placeholder:n,name:i,type:l,value:o,autoFocus:u}))}d.defaultProps={type:"text",autoFocus:!1},d.propTypes={label:i.a.string.isRequired,onChange:i.a.func,placeholder:i.a.string,value:i.a.string,name:i.a.string.isRequired,type:i.a.oneOf(["text","password","email"]),size:i.a.oneOf(["small","medium","large"]),autoFocus:i.a.bool,inputRef:i.a.oneOfType([i.a.func,i.a.shape({current:i.a.any})])};var u=d},function(e,t,n){"use strict";n.r(t),n.d(t,"Video",(function(){return u}));var a=n(1),r=n.n(a),o=n(0),i=n.n(o),s=n(2),l=n(6),c=n.n(l);function d({src:e,type:t,muted:n,loop:a,autoPlay:o,layout:i,children:l}){return l?r.a.createElement("div",{className:Object(s.default)([c.a.container,c.a.hasOverlay])},r.a.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:Object(s.default)([c.a.video,c.a[i]]),src:e,type:t,muted:n,loop:a,autoPlay:o,playsInline:!0}),l&&r.a.createElement("div",{className:c.a.overlay},l)):r.a.createElement("video",{"data-testid":"video",crossOrigin:"anonymous",className:Object(s.default)([c.a.video,c.a[i]]),src:e,type:t,muted:n,loop:a,autoPlay:o,playsInline:!0})}d.defaultProps={muted:!0,loop:!0,autoPlay:!0,layout:"contain"},d.propTypes={src:i.a.string.isRequired,type:i.a.string.isRequired,layout:i.a.oneOf(["cover","contain","stretchHorizontally","stretchVertically"]),autoPlay:i.a.bool,loop:i.a.bool,muted:i.a.bool,children:i.a.node};var u=d}]));
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xhc3NjYXQvc3JjL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b24vSWNvbkJ1dHRvbi5tb2R1bGUuY3NzP2QyOGQiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbkJ1dHRvbkxpbmsvSWNvbkJ1dHRvbkxpbmsubW9kdWxlLmNzcz9jYzM3Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbmZpcm1hdGlvbk1vZGFsL0NvbmZpcm1hdGlvbk1vZGFsLm1vZHVsZS5jc3M/MjdiMyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9WaWRlby9WaWRlby5tb2R1bGUuY3NzP2UyMjMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvRmxvYXRpbmdQYW5lbC9GbG9hdGluZ1BhbmVsLm1vZHVsZS5jc3M/N2FiZiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnUubW9kdWxlLmNzcz8zNzA5Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb24vSWNvbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2FzdC9Ub2FzdC5tb2R1bGUuY3NzP2NmNjEiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXdJdGVtLm1vZHVsZS5jc3M/OWE0ZSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclN3YXRjaC9Db2xvclN3YXRjaC5tb2R1bGUuY3NzPzIzZWIiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwubW9kdWxlLmNzcz8wZWRmIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb24vSWNvbi5tb2R1bGUuY3NzPzliOTMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXcubW9kdWxlLmNzcz80NjRlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL092ZXJsYXkvT3ZlcmxheS5tb2R1bGUuY3NzPzIxYzUiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVGV4dElucHV0L1RleHRJbnB1dC5tb2R1bGUuY3NzP2NkMzYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0J1dHRvbkxpbmsvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hvdGtleXMtanMvZGlzdC9ob3RrZXlzLmVzbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtaG90a2V5cy1ob29rL2Rpc3Qtd2ViL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yU3dhdGNoL0NvbG9yU3dhdGNoLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL0NvbG9yUGlja2VyLm1vZHVsZS5jc3M/ZTE4OCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLm1vZHVsZS5jc3M/NTA0OSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVDb250YWluZXIubW9kdWxlLmNzcz85NmQyIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUxpbmtJdGVtLm1vZHVsZS5jc3M/MDQyNyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2FzdC9Ub2FzdENvbnRhaW5lci5tb2R1bGUuY3NzPzlhMzYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24udHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24ubW9kdWxlLmNzcz9jZDQ2Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0J1dHRvbkxpbmsvQnV0dG9uTGluay50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9CdXR0b25MaW5rLm1vZHVsZS5jc3M/MDg0MSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ltYWdlL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ltYWdlL0ltYWdlLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JbWFnZS9JbWFnZS5tb2R1bGUuY3NzPzk1YTciLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUNvbnRhaW5lci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUxpbmtJdGVtLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xpc3RWaWV3L0xpc3RWaWV3LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xpc3RWaWV3L0xpc3RWaWV3SXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlld0xpbmtJdGVtLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L1RvYXN0LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L1RvYXN0Q29udGFpbmVyLmpzIiwid2VicGFjazovLy8uL3NyYy9ob29rcy91c2VUb2dnbGUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2hvb2tzL3VzZU91dHNpZGVDbGljay5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclBpY2tlci9Db2xvclBpY2tlci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9GbG9hdGluZ1BhbmVsL0Zsb2F0aW5nUGFuZWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbkJ1dHRvbi9JY29uQnV0dG9uLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b25MaW5rL0ljb25CdXR0b25MaW5rLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL092ZXJsYXkvT3ZlcmxheS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9UZXh0SW5wdXQvVGV4dElucHV0LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1ZpZGVvL1ZpZGVvLmpzIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwicmVxdWlyZSIsImlzQXJyYXkiLCJBcnJheSIsImNjIiwib2JqIiwib3V0IiwidG1wIiwiayIsImxlbmd0aCIsIkljb24iLCJzcmMiLCJhbHQiLCJzaXplIiwiaW52ZXJ0ZWQiLCJjbGFzc05hbWUiLCJjbGFzc2NhdCIsInN0eWxlcyIsImljb24iLCJjcm9zc09yaWdpbiIsImRhdGEtdGVzdGlkIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsImNoaWxkcmVuIiwibm9kZSIsIm9uZU9mIiwiYm9vbCIsImRlZmF1bHQiLCJpc2ZmIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidG9Mb3dlckNhc2UiLCJpbmRleE9mIiwiYWRkRXZlbnQiLCJldmVudCIsIm1ldGhvZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJhdHRhY2hFdmVudCIsImNvbmNhdCIsIndpbmRvdyIsImdldE1vZHMiLCJtb2RpZmllciIsIm1vZHMiLCJzbGljZSIsImdldEtleXMiLCJrZXlzIiwicmVwbGFjZSIsInNwbGl0IiwiaW5kZXgiLCJsYXN0SW5kZXhPZiIsInNwbGljZSIsIl9rZXlNYXAiLCJiYWNrc3BhY2UiLCJ0YWIiLCJjbGVhciIsImVudGVyIiwicmV0dXJuIiwiZXNjIiwiZXNjYXBlIiwic3BhY2UiLCJsZWZ0IiwidXAiLCJyaWdodCIsImRvd24iLCJkZWwiLCJkZWxldGUiLCJpbnMiLCJpbnNlcnQiLCJob21lIiwiZW5kIiwicGFnZXVwIiwicGFnZWRvd24iLCJjYXBzbG9jayIsIiciLCJfbW9kaWZpZXIiLCJzaGlmdCIsIm9wdGlvbiIsImN0cmwiLCJjb250cm9sIiwiY21kIiwiY29tbWFuZCIsIm1vZGlmaWVyTWFwIiwiMTYiLCIxOCIsIjE3IiwiOTEiLCJzaGlmdEtleSIsImN0cmxLZXkiLCJhbHRLZXkiLCJtZXRhS2V5IiwiX21vZHMiLCJfaGFuZGxlcnMiLCJfZG93bktleXMiLCJfc2NvcGUiLCJlbGVtZW50SGFzQmluZEV2ZW50IiwiY29kZSIsIngiLCJ0b1VwcGVyQ2FzZSIsImNoYXJDb2RlQXQiLCJzZXRTY29wZSIsInNjb3BlIiwiZ2V0U2NvcGUiLCJlYWNoVW5iaW5kIiwiX3JlZiIsIl9yZWYkc3BsaXRLZXkiLCJzcGxpdEtleSIsImZvckVhY2giLCJvcmlnaW5LZXkiLCJ1bmJpbmRLZXlzIiwibGVuIiwibGFzdEtleSIsImtleUNvZGUiLCJtYXAiLCJyZWNvcmQiLCJhMSIsImEyIiwiYXJyMSIsImFycjIiLCJpc0luZGV4IiwiY29tcGFyZUFycmF5IiwiZXZlbnRIYW5kbGVyIiwiaGFuZGxlciIsIm1vZGlmaWVyc01hdGNoIiwieSIsInNob3J0Y3V0IiwicHJldmVudERlZmF1bHQiLCJyZXR1cm5WYWx1ZSIsInN0b3BQcm9wYWdhdGlvbiIsImNhbmNlbEJ1YmJsZSIsImRpc3BhdGNoIiwiYXN0ZXJpc2siLCJ3aGljaCIsImNoYXJDb2RlIiwiaG90a2V5cyIsImZpbHRlciIsInRoaXMiLCJwdXNoIiwia2V5TmFtZSIsImtleU51bSIsImUiLCJnZXRNb2RpZmllclN0YXRlIiwidHlwZSIsImtleWRvd24iLCJrZXl1cCIsIl9pIiwia2V5U2hvcnRjdXQiLCJfZG93bktleXNDdXJyZW50IiwiYSIsInNvcnQiLCJqb2luIiwiZWxlbWVudCIsImRvY3VtZW50IiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJpc0VsZW1lbnRCaW5kIiwiY2xlYXJNb2RpZmllciIsIl9hcGkiLCJkZWxldGVTY29wZSIsIm5ld1Njb3BlIiwiaGFuZGxlcnMiLCJnZXRQcmVzc2VkS2V5Q29kZXMiLCJpc1ByZXNzZWQiLCJ0YXJnZXQiLCJzcmNFbGVtZW50IiwidGFnTmFtZSIsImZsYWciLCJpc0NvbnRlbnRFZGl0YWJsZSIsInJlYWRPbmx5IiwidW5iaW5kIiwia2V5c0luZm8iLCJpbmZvIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiX2hvdGtleXMiLCJub0NvbmZsaWN0IiwiZGVlcCIsIk1vZGFsIiwiaXNPcGVuIiwib25DbG9zZSIsImJ1dHRvbiIsImNhbGxiYWNrIiwib3B0aW9ucyIsImRlcHMiLCJlbmFibGVPblRhZ3MiLCJyZWYiLCJtZW1vaXNlZENhbGxiYWNrIiwia2V5Ym9hcmRFdmVudCIsImhvdGtleXNFdmVudCIsImN1cnJlbnQiLCJhY3RpdmVFbGVtZW50IiwidGFyZ2V0VGFnTmFtZSIsIkJvb2xlYW4iLCJpbmNsdWRlcyIsInVzZUhvdGtleXMiLCJoYW5kbGVPdmVybGF5Q2xpY2siLCJ1c2VDYWxsYmFjayIsIm92ZXJsYXkiLCJvbkNsaWNrIiwibW9kYWwiLCJtb2RhbEJ1dHRvbiIsImZ1bmMiLCJDb2xvclN3YXRjaCIsImNvbG9yIiwiaXNTZWxlY3RlZCIsImNvbG9yU3dhdGNoIiwic2VsZWN0ZWQiLCJkaXNhYmxlZCIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiaGV4Q29kZSIsInNyT25seSIsImxhYmVsIiwic2hhcGUiLCJyb3VuZGVkIiwibm9TaGFkb3ciLCJub1BhZGRpbmciLCJub0JvcmRlciIsInRyYW5zcGFyZW50Iiwic3RyZXRjaEhvcml6b250YWxseSIsInN0cmV0Y2hWZXJ0aWNhbGx5Iiwib2Zmc2V0U2lkZXMiLCJhbGlnbiIsImNvbnRhaW5lciIsInNpZGUiLCJyb2xlIiwiY29udGVudCIsIkNvbXBvbmVudCIsInByb3BzIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJnZXRTaGltIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsIm51bWJlciIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mVHlwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJzcmNXaWR0aCIsInNyY0hlaWdodCIsImxheW91dCIsImhhc092ZXJsYXkiLCJpbWFnZSIsIndpZHRoIiwiaGVpZ2h0IiwiTWVudSIsInBsYWNlbWVudCIsImhlYWRlciIsIm1lbnUiLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJvcGVuIiwibWVudUhlYWRlciIsIk1lbnVDb250YWluZXIiLCJtZW51Q29udGFpbmVyIiwiZm9yd2FyZFJlZiIsIk1lbnVJdGVtIiwiaXNBY3RpdmUiLCJtZW51SXRlbSIsImFjdGl2ZSIsIk1lbnVMaW5rSXRlbSIsImFzIiwibWVudUxpbmtJdGVtIiwiTGlzdFZpZXciLCJsaXN0IiwiTGlzdFZpZXdJdGVtIiwibGlzdFZpZXdJdGVtIiwiQnV0dG9uIiwiTGlzdFZpZXdMaW5rSXRlbSIsIkJ1dHRvbkxpbmsiLCJUb2FzdCIsImJ1dHRvbnMiLCJ0b2FzdCIsInRvYXN0SW1hZ2UiLCJ0b2FzdENvbnRlbnQiLCJ0b2FzdEJ1dHRvbnMiLCJUb2FzdENvbnRhaW5lciIsInRvYXN0Q29udGFpbmVyIiwidXNlVG9nZ2xlIiwiaW5pdGlhbFN0YXRlIiwic2V0Qm9vbCIsInVzZVN0YXRlIiwidG9nZ2xlIiwicHJldkJvb2wiLCJvbiIsIm9mZiIsInVzZU91dHNpZGVDbGljayIsInVzZVJlZiIsInVzZUVmZmVjdCIsImhhbmRsZUNsaWNrIiwiY29udGFpbnMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiQ29sb3JQaWNrZXIiLCJjb2xvcnMiLCJkaXJlY3Rpb24iLCJvblNlbGVjdCIsInNlbGVjdGVkQ29sb3IiLCJjb2xvclBpY2tlciIsIkNvbmZpcm1hdGlvbk1vZGFsIiwiYnV0dG9uc0xlZnQiLCJidXR0b25zUmlnaHQiLCJzaG93Q2xvc2VCdXR0b24iLCJtb2RhbEhlYWRlciIsIm1vZGFsQ29udGVudCIsIm1vZGFsQnV0dG9uc0NvbnRhaW5lciIsIm1vZGFsQnV0dG9ucyIsImRpc3BsYXlOYW1lIiwiRmxvYXRpbmdQYW5lbCIsImhvcml6b250YWxQbGFjZW1lbnQiLCJ2ZXJ0aWNhbFBsYWNlbWVudCIsImZpeGVkIiwicGFyZW50IiwiSWNvbkJ1dHRvbiIsIkljb25CdXR0b25MaW5rIiwiT3ZlcmxheSIsImlzRml4ZWQiLCJUZXh0SW5wdXQiLCJvbkNoYW5nZSIsInBsYWNlaG9sZGVyIiwiYXV0b0ZvY3VzIiwiaW5wdXRSZWYiLCJoYW5kbGVDaGFuZ2UiLCJ0ZXh0TGFiZWwiLCJ0ZXh0SW5wdXQiLCJWaWRlbyIsIm11dGVkIiwibG9vcCIsImF1dG9QbGF5IiwidmlkZW8iLCJwbGF5c0lubGluZSJdLCJtYXBwaW5ncyI6IjZEQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQTBEZixPQXJEQUYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVBQW9CVSxFQUFJLFNBQVNSLEVBQVNTLEVBQU1DLEdBQzNDWixFQUFvQmEsRUFBRVgsRUFBU1MsSUFDbENHLE9BQU9DLGVBQWViLEVBQVNTLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVosRUFBb0JrQixFQUFJLFNBQVNoQixHQUNYLG9CQUFYaUIsUUFBMEJBLE9BQU9DLGFBQzFDTixPQUFPQyxlQUFlYixFQUFTaUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEUCxPQUFPQyxlQUFlYixFQUFTLGFBQWMsQ0FBRW1CLE9BQU8sS0FRdkRyQixFQUFvQnNCLEVBQUksU0FBU0QsRUFBT0UsR0FFdkMsR0FEVSxFQUFQQSxJQUFVRixFQUFRckIsRUFBb0JxQixJQUMvQixFQUFQRSxF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RTdVLEVBQUYsS0FBT3FJLEVBQVAsTUFBYXlNLEVBQWIsS0FBb0JDLEVBQXBCLFNBQTBCQyxFQUExQixPQUFvQ3ZGLEVBQXBDLFNBQTRDMU8sSUFDekQsT0FBT0EsRUFDTCx5QkFBS1gsVUFBV0Msa0JBQVMsQ0FBQ0MsSUFBT2tOLFVBQVdsTixJQUFPb1AsY0FDakQsMkJBQ0VqUCxjQUFZLFFBQ1pELFlBQVksWUFDWkosVUFBV0Msa0JBQVMsQ0FBQ0MsSUFBTzJVLE1BQU8zVSxJQUFPbVAsS0FDMUN6UCxJQUFLQSxFQUNMcUksS0FBTUEsRUFDTnlNLE1BQU9BLEVBQ1BDLEtBQU1BLEVBQ05DLFNBQVVBLEVBQ1ZFLGFBQWEsSUFFZG5VLEdBQVkseUJBQUtYLFVBQVdFLElBQU93TCxTQUFVL0ssSUFHaEQsMkJBQ0VOLGNBQVksUUFDWkQsWUFBWSxZQUNaSixVQUFXQyxrQkFBUyxDQUFDQyxJQUFPMlUsTUFBTzNVLElBQU9tUCxLQUMxQ3pQLElBQUtBLEVBQ0xxSSxLQUFNQSxFQUNOeU0sTUFBT0EsRUFDUEMsS0FBTUEsRUFDTkMsU0FBVUEsRUFDVkUsYUFBYSxJQUtuQkwsRUFBTW5VLGFBQWUsQ0FDbkJvVSxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsVUFBVSxFQUNWdkYsT0FBUSxXQUdWb0YsRUFBTWxVLFVBQVksQ0FDaEJYLElBQUtZLElBQVVDLE9BQU9DLFdBQ3RCdUgsS0FBTXpILElBQVVDLE9BQU9DLFdBQ3ZCMk8sT0FBUTdPLElBQVVLLE1BQU0sQ0FDdEIsUUFDQSxVQUNBLHNCQUNBLHNCQUVGK1QsU0FBVXBVLElBQVVNLEtBQ3BCNlQsS0FBTW5VLElBQVVNLEtBQ2hCNFQsTUFBT2xVLElBQVVNLEtBQ2pCSCxTQUFVSCxJQUFVSSxNQUdQNlQiLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDI3KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsInZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjYyhvYmopIHtcbiAgdmFyIG91dCA9IFwiXCJcblxuICBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2Ygb2JqID09PSBcIm51bWJlclwiKSByZXR1cm4gb2JqIHx8IFwiXCJcblxuICBpZiAoaXNBcnJheShvYmopKVxuICAgIGZvciAodmFyIGsgPSAwLCB0bXA7IGsgPCBvYmoubGVuZ3RoOyBrKyspIHtcbiAgICAgIGlmICgodG1wID0gY2Mob2JqW2tdKSkgIT09IFwiXCIpIHtcbiAgICAgICAgb3V0ICs9IChvdXQgJiYgXCIgXCIpICsgdG1wXG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgayBpbiBvYmopIHtcbiAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykgJiYgb2JqW2tdKSBvdXQgKz0gKG91dCAmJiBcIiBcIikgKyBrXG4gICAgfVxuXG4gIHJldHVybiBvdXRcbn1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8yTVB1SjNBcHZyQXZyZXdqU1dHQUEyXCIsXCJzbWFsbFwiOlwibE9rb2FuN2RicC1nb0R0SlZ1SzdCXCIsXCJsYXJnZVwiOlwiXzJhRzZ6WHFURUtWY3ZCYWFuaUNOQnlcIixcInJvdW5kZWRcIjpcIl8ySlgwMzRxVVRDb1RkV0MycHBBNDg3XCIsXCJ0b3BPZmZzZXRcIjpcIl8xd3BDLVdYZ0wwNlFLeHRQek93TlJLXCIsXCJyaWdodE9mZnNldFwiOlwiTEl6clFDN3BvUVQ5alVSQnFNREtoXCIsXCJib3R0b21PZmZzZXRcIjpcIl8yaV93NVVMa1VLN0xWdzVoRU85N0V3XCIsXCJsZWZ0T2Zmc2V0XCI6XCJfMzhlS2xUUVRWMVlsbkVlMUdtTnRRa1wiLFwiaW52ZXJ0ZWRcIjpcIl8yTmtaNTBya0EzZVpDeXNZOUZBcC1lXCIsXCJub1NoYWRvd1wiOlwiXzNVeTVIWmR2a1dmN2JpbFQwd3h3VmVcIixcIm5vQm9yZGVyXCI6XCJfMkY0SHk5bHE1T0NyRXBQWlBoNXhBSlwiLFwidHJhbnNwYXJlbnRcIjpcIl8ydTdxVE1lRTlENXJ0Y3NFY1NvQVkzXCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8xdWlmbUtOUER6ZHU1WURuaGd3UFFLXCIsXCJzbWFsbFwiOlwicGZIY1lhZXctSHJIdFROdVI0djdoXCIsXCJsYXJnZVwiOlwiXzI2WjlGSC1DTlBxZjU1WlJQMXZuYWJcIixcInJvdW5kZWRcIjpcIl8ycTdXdlJPaE5tM2dzUklSYVFRZWFVXCIsXCJ0b3BPZmZzZXRcIjpcIndaeV92dWxaa01iV1NYMGFrY1pIQVwiLFwicmlnaHRPZmZzZXRcIjpcIl8yamhocG02MF95UEVmeFEtd2F6ai01XCIsXCJib3R0b21PZmZzZXRcIjpcIkRubnJHN1pYbVRJaG1XVWNzOTltMVwiLFwibGVmdE9mZnNldFwiOlwiXzFZZENnN1Q2WGpobXh3Y2pMTlNFYi1cIixcImludmVydGVkXCI6XCJIVjBSLWxxd215ZXFzUzFaOHBvWlNcIixcIm5vU2hhZG93XCI6XCJfMUxQcHQ3MEpqaW02U2ZaZTM1RzJrYlwiLFwibm9Cb3JkZXJcIjpcIlJrelNyR2l4TTI4Sk1hdDZJQjVMclwiLFwidHJhbnNwYXJlbnRcIjpcIl8xS2RYZlkzUGs2dEVOWUg4MXRXcnBzXCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcImtrZ0hvQlFoRlBzS2pfeDFaRmRSSFwiLFwibW9kYWxIZWFkZXJcIjpcIl8xV3V2SEQtR2RYTHJ0cXdhMDRXMXF5XCIsXCJtb2RhbENvbnRlbnRcIjpcIl8yN2VVeVNRcXZxNXFsb05DbElqSVNUXCIsXCJub1BhZGRpbmdcIjpcIl8yZ3RCWEw5UEZTcEhzVzBBOXhkNTVTXCIsXCJtb2RhbEJ1dHRvbnNDb250YWluZXJcIjpcIl81Z0lweUYzWDV0aFBRQW5zQUM0ejlcIixcIm1vZGFsQnV0dG9uc1wiOlwic3dzb0NpaTF3NHhObDdpb0RWa081XCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8yRVFCZnI1dzhoMXgxYnEtMmZwNndUXCIsXCJoYXNPdmVybGF5XCI6XCJfM0dSTXBtR2tfUHFJVGNVdjBOZm10M1wiLFwidmlkZW9cIjpcIl8ydFpmWGtFaENrd0F6ZmFHX0JWbjBCXCIsXCJjb3ZlclwiOlwiXzNPWUhmYnphTDNRSGFuV1pCajhSeE9cIixcImNvbnRhaW5cIjpcIl8zSV9jN3NoY1NydEdfRnh2dlUySWVFXCIsXCJzdHJldGNoSG9yaXpvbnRhbGx5XCI6XCJfMVo3ZEw5dUVkMEtzeDNDa3JaaHNCOFwiLFwic3RyZXRjaFZlcnRpY2FsbHlcIjpcIl8xemJyRFlPMGZZRkpWYzd4dnNUWWk2XCIsXCJvdmVybGF5XCI6XCJfMm9zWGQ3U2t3RjBMaC0yeWlxdVlRTVwifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJhNk5ITzJDVlZDZmluaXllMlhMTi1cIixcInJvd1wiOlwiXzNSU2dCNzZyRUJuaVBjMlljcjhaYnZcIixcImNvbHVtblwiOlwiXzFKa1gxNWlnY2xuYm01c1JTY1dWRFlcIixcImZpeGVkXCI6XCJNTVExeWpFYWZXa1lGVkRITXBUYklcIixcInBsYWluXCI6XCJfM20yTV9OYXJjNXh3TGF5OEhKbGprY1wiLFwidHJhbnNwYXJlbnRcIjpcIl8xcmZhNDl6aFp4TmlmejY0T3FiXzZQXCIsXCJ0b3BcIjpcIl9rVWFsbkRlRWZ2enFBamkwQU1Eb1wiLFwidG9wRWRnZVwiOlwiVzhKQUl3TGpPOEpRR2J2aVpwUFF3XCIsXCJ0b3BPbkVkZ2VcIjpcIl8zb3BKN0ViNnRqMzk0dVY4YTU3aXh6XCIsXCJyaWdodFwiOlwiXzMtdmJ3anAwYVBjTEVWMVN4MElDZ1BcIixcInJpZ2h0RWRnZVwiOlwiXzNYTkZ5NVpvTUNvWUJJYWJlR040QlFcIixcInJpZ2h0T25FZGdlXCI6XCJfMTJjM0N6VU1RRThBRzNBTDhIaWtpMlwiLFwiYm90dG9tXCI6XCJfM2dlQkVOSDVvRXJxR2R0LVF5SG5QaFwiLFwiYm90dG9tRWRnZVwiOlwiXzNfc2FNNEdzMzJuUmJJSEh4SUViRjZcIixcImJvdHRvbU9uRWRnZVwiOlwiXzJQTEU0ZG1HaG5jZ2stbEVub1U0a3ZcIixcImxlZnRcIjpcIl8xaVNCbnlaZ1BlRlVXb000aTZkU3BVXCIsXCJsZWZ0RWRnZVwiOlwiXzFmWDE5cUlPU2huMm81dXVzUnpUZ3NcIixcImxlZnRPbkVkZ2VcIjpcIktCSERvY2t1SFRFT0tNR096YWRYaVwiLFwiaG9yaXpvbnRhbENlbnRlclwiOlwiXzMxdDZ0SFJKNXMtNURjRExGVEtoMW1cIixcInZlcnRpY2FsQ2VudGVyXCI6XCJfMmhxN2ZrRFhIeHJ4ejJ0N0xMZzRfOVwifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudVwiOlwiXzJhaGk4SmNueEdIcm5abUQweFQ5UkxcIixcInRvcFwiOlwiXzNncEZUZDFGZHg0RUFmcTE3MFRHczdcIixcInJpZ2h0XCI6XCJfMUw1QVRwTTlHWHktU09SRnIwRzZTNFwiLFwibGVmdFwiOlwiQ1lFSmwzOVRrRWZuS2FsM3Z0dno5XCIsXCJib3R0b21cIjpcIl8zenlwLU5kVEJlQkRLdmsyNnBzWnVwXCIsXCJvcGVuXCI6XCJfMWlhYXppWnJWSV8tRThEOTlXZE5qaVwiLFwiZW50cmFuY2VcIjpcIl8yZmlLZTQtWDhQcWNHNF85cWVCM1pPXCIsXCJtZW51SGVhZGVyXCI6XCJfMTluazFJTU5TLXVfWUlRTGxtWVJ0VVwifTsiLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ljb24ubW9kdWxlLmNzc1wiO1xuXG5mdW5jdGlvbiBJY29uKHsgc3JjLCBhbHQsIHNpemUsIGludmVydGVkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8aW1nXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmljb24sXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAgeyBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQgfSxcbiAgICAgIF0pfVxuICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJpY29uXCJcbiAgICAgIGFsdD17YWx0fVxuICAgICAgc3JjPXtzcmN9XG4gICAgLz5cbiAgKTtcbn1cblxuSWNvbi5kZWZhdWx0UHJvcHMgPSB7XG4gIHNpemU6IFwibWVkaXVtXCIsXG4gIGludmVydGVkOiBmYWxzZSxcbn07XG5cbkljb24ucHJvcFR5cGVzID0ge1xuICBzcmM6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgYWx0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJzbWFsbFwiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgaW52ZXJ0ZWQ6IFByb3BUeXBlcy5ib29sLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ0b2FzdFwiOlwiXzNzQnNfRVJYVjNrMFNRTUdVeTJXajRcIixcImVudHJhbmNlXCI6XCJfMV94anRMZVVNb0VYTkEtcU9FWmhjeFwiLFwidG9hc3RDb250ZW50XCI6XCJfMTBsQkVUQ1UzVU5GUjhweTFxMXEtaFwiLFwidG9hc3RJbWFnZVwiOlwiXzNDaTB3cE9iazZvcWY3ZHdrSHNGV29cIixcInRvYXN0QnV0dG9uc1wiOlwiRkVXRG5Ec1AtOUE5SkhHMjBxQlM1XCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJsaXN0Vmlld0l0ZW1cIjpcIl8yTGdqcUFCd2pIdHBiR3prUVFrcWlRXCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb2xvclN3YXRjaFwiOlwiXzEzc3MxeHNNTml6dkVnUF9oeEVWOEJcIixcInNlbGVjdGVkXCI6XCJMNmZBdDZSWll6X3ozd1BialpFeEhcIixcInNyT25seVwiOlwiXzN2SjVteHB6YVlzS2F4Zi04dEIzMXhcIn07IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm92ZXJsYXlcIjpcIl8xeXhDYlFKcVN0VXZ5dHZLRWVOQzNuXCIsXCJtb2RhbFwiOlwiRDhTakJ4M2lrejYzNll1Ym5IWUFZXCIsXCJtb2RhbEJ1dHRvblwiOlwibzhWUlZ4TXJzMXhYYXZBRHl4akxHXCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJpY29uXCI6XCJ1aDh6a21RcDV5Yms1V0pTbGE2OURcIixcInNtYWxsXCI6XCJfOURJQ3RxbVFTbkxQam0xWEk3WVZzXCIsXCJsYXJnZVwiOlwiXzJyZ3VjQUg4Qm5saS1jbWp6OWkyQzJcIixcImludmVydGVkXCI6XCJJLWVJNXE4cmQyYlNwOUItRmhVemFcIn07IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiQ1BITmQ4b3NLakx2UURFUVVFcnV4XCIsXCJoZWFkZXJcIjpcIl8xZTdoSFNWbzU5ZTh5UW5oYzlCNklkXCIsXCJsaXN0XCI6XCJfMXcxVzhFNl9IemZlczNXWlRZWmFKS1wifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wib3ZlcmxheVwiOlwiXzJRZ3B5ckRjVVF5S1lFU0M1RFhYSnJcIixcInRyYW5zcGFyZW50XCI6XCJfMjhmVm1veHA2OU9Qcjg4RXcwelZlTlwiLFwiZml4ZWRcIjpcIl8yc1UzNTE1RWJGRmdlUDF5SzJadWJ6XCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ0ZXh0SW5wdXRcIjpcIl8yd2ZxT3pXQm9Bbl9LN2dvcXZqWEplXCIsXCJzbWFsbFwiOlwiXzFhNFFPVkpCMHpXM1VyZl81aHFOampcIixcImxhcmdlXCI6XCJfM0RRNTJRZF8xSzRfVnh4VnY3MjhTWFwiLFwidGV4dExhYmVsXCI6XCJfMzFvQUFPRV9kdkdvQXo5cUptbzhFR1wifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIEJ1dHRvbiB9IGZyb20gXCIuL0J1dHRvblwiO1xuIiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBCdXR0b25MaW5rIH0gZnJvbSBcIi4vQnV0dG9uTGlua1wiO1xuIiwiLyohXG4gKiBob3RrZXlzLWpzIHYzLjguMVxuICogQSBzaW1wbGUgbWljcm8tbGlicmFyeSBmb3IgZGVmaW5pbmcgYW5kIGRpc3BhdGNoaW5nIGtleWJvYXJkIHNob3J0Y3V0cy4gSXQgaGFzIG5vIGRlcGVuZGVuY2llcy5cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIwIGtlbm55IHdvbmcgPHdvd29ob29AcXEuY29tPlxuICogaHR0cDovL2pheXdjamxvdmUuZ2l0aHViLmlvL2hvdGtleXNcbiAqIFxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbnZhciBpc2ZmID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgPyBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpID4gMCA6IGZhbHNlOyAvLyDnu5Hlrprkuovku7ZcblxuZnVuY3Rpb24gYWRkRXZlbnQob2JqZWN0LCBldmVudCwgbWV0aG9kKSB7XG4gIGlmIChvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBtZXRob2QsIGZhbHNlKTtcbiAgfSBlbHNlIGlmIChvYmplY3QuYXR0YWNoRXZlbnQpIHtcbiAgICBvYmplY3QuYXR0YWNoRXZlbnQoXCJvblwiLmNvbmNhdChldmVudCksIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1ldGhvZCh3aW5kb3cuZXZlbnQpO1xuICAgIH0pO1xuICB9XG59IC8vIOS/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+r5o236ZSuXG5cblxuICBpZiAodHlwZW9mIGVsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmICFpc0VsZW1lbnRCaW5kKGVsZW1lbnQpICYmIHdpbmRvdykge1xuICAgIGVsZW1lbnRIYXNCaW5kRXZlbnQucHVzaChlbGVtZW50KTtcbiAgICBhZGRFdmVudChlbGVtZW50LCAna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBkaXNwYXRjaChlKTtcbiAgICB9KTtcbiAgICBhZGRFdmVudCh3aW5kb3csICdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF9kb3duS2V5cyA9IFtdO1xuICAgIH0pO1xuICAgIGFkZEV2ZW50KGVsZW1lbnQsICdrZXl1cCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBkaXNwYXRjaChlKTtcbiAgICAgIGNsZWFyTW9kaWZpZXIoZSk7XG4gICAgfSk7XG4gIH1cbn1cblxudmFyIF9hcGkgPSB7XG4gIHNldFNjb3BlOiBzZXRTY29wZSxcbiAgZ2V0U2NvcGU6IGdldFNjb3BlLFxuICBkZWxldGVTY29wZTogZGVsZXRlU2NvcGUsXG4gIGdldFByZXNzZWRLZXlDb2RlczogZ2V0UHJlc3NlZEtleUNvZGVzLFxuICBpc1ByZXNzZWQ6IGlzUHJlc3NlZCxcbiAgZmlsdGVyOiBmaWx0ZXIsXG4gIHVuYmluZDogdW5iaW5kXG59O1xuXG5mb3IgKHZhciBhIGluIF9hcGkpIHtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfYXBpLCBhKSkge1xuICAgIGhvdGtleXNbYV0gPSBfYXBpW2FdO1xuICB9XG59XG5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICB2YXIgX2hvdGtleXMgPSB3aW5kb3cuaG90a2V5cztcblxuICBob3RrZXlzLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoZGVlcCkge1xuICAgIGlmIChkZWVwICYmIHdpbmRvdy5ob3RrZXlzID09PSBob3RrZXlzKSB7XG4gICAgICB3aW5kb3cuaG90a2V5cyA9IF9ob3RrZXlzO1xuICAgIH1cblxuICAgIHJldHVybiBob3RrZXlzO1xuICB9O1xuXG4gIHdpbmRvdy5ob3RrZXlzID0gaG90a2V5cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaG90a2V5cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlSG90a2V5cyB9IGZyb20gXCJyZWFjdC1ob3RrZXlzLWhvb2tcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Nb2RhbC5tb2R1bGUuY3NzXCI7XG5cbmZ1bmN0aW9uIE1vZGFsKHsgY2hpbGRyZW4sIGlzT3Blbiwgb25DbG9zZSwgYnV0dG9uIH0pIHtcbiAgdXNlSG90a2V5cyhcIkVzY2FwZVwiLCBvbkNsb3NlKTtcblxuICBjb25zdCBoYW5kbGVPdmVybGF5Q2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgb25DbG9zZSgpO1xuICB9LCBbb25DbG9zZV0pO1xuXG4gIHJldHVybiAoXG4gICAgaXNPcGVuICYmIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vdmVybGF5fVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibW9kYWwtb3ZlcmxheVwiXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlT3ZlcmxheUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsfSBkYXRhLXRlc3RpZD1cIm1vZGFsXCI+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge2J1dHRvbiAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsQnV0dG9ufT57YnV0dG9ufTwvZGl2Pn1cbiAgICAgIDwvPlxuICAgIClcbiAgKTtcbn1cblxuTW9kYWwuZGVmYXVsdFByb3BzID0ge1xuICBvbkNsb3NlOiAoKSA9PiB7fSxcbn07XG5cbk1vZGFsLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIGlzT3BlbjogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGJ1dHRvbjogUHJvcFR5cGVzLm5vZGUsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2RhbDtcbiIsImltcG9ydCBob3RrZXlzIGZyb20gJ2hvdGtleXMtanMnO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiB1c2VJc0hvdGtleVByZXNzZWQoKSB7XG4gICAgcmV0dXJuIGhvdGtleXMuaXNQcmVzc2VkO1xufVxuXG5mdW5jdGlvbiB1c2VIb3RrZXlzKGtleXMsIGNhbGxiYWNrLCBvcHRpb25zLCBkZXBzKSB7XG4gICAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBkZXBzID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgeyBlbmFibGVPblRhZ3MsIGZpbHRlciB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgbWVtb2lzZWRDYWxsYmFjayA9IHVzZUNhbGxiYWNrKChrZXlib2FyZEV2ZW50LCBob3RrZXlzRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHJlZi5jdXJyZW50ID09PSBudWxsIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjYWxsYmFjayhrZXlib2FyZEV2ZW50LCBob3RrZXlzRXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sIGRlcHMgPyBbcmVmLCAuLi5kZXBzXSA6IFtyZWZdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmVuYWJsZU9uVGFncykge1xuICAgICAgICAgICAgaG90a2V5cy5maWx0ZXIgPSAoeyB0YXJnZXQsIHNyY0VsZW1lbnQgfSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRUYWdOYW1lID0gKHRhcmdldCAmJiB0YXJnZXQudGFnTmFtZSkgfHwgKHNyY0VsZW1lbnQgJiYgc3JjRWxlbWVudC50YWdOYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbih0YXJnZXRUYWdOYW1lICYmIGVuYWJsZU9uVGFncyAmJiBlbmFibGVPblRhZ3MuaW5jbHVkZXModGFyZ2V0VGFnTmFtZSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyKVxuICAgICAgICAgICAgaG90a2V5cy5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgICAgIGhvdGtleXMoa2V5cywgb3B0aW9ucyB8fCB7fSwgbWVtb2lzZWRDYWxsYmFjayk7XG4gICAgICAgIHJldHVybiAoKSA9PiBob3RrZXlzLnVuYmluZChrZXlzLCBtZW1vaXNlZENhbGxiYWNrKTtcbiAgICB9LCBbbWVtb2lzZWRDYWxsYmFjaywgb3B0aW9ucywgZW5hYmxlT25UYWdzLCBmaWx0ZXIsIGtleXNdKTtcbiAgICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgeyB1c2VIb3RrZXlzLCB1c2VJc0hvdGtleVByZXNzZWQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcFxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0NvbG9yU3dhdGNoLm1vZHVsZS5jc3NcIjtcblxuZnVuY3Rpb24gQ29sb3JTd2F0Y2goeyBjb2xvciwgaXNTZWxlY3RlZCwgb25DbGljayB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb2xvclN3YXRjaCxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuc2VsZWN0ZWRdOiBpc1NlbGVjdGVkLFxuICAgICAgICB9LFxuICAgICAgXSl9XG4gICAgICBkYXRhLXRlc3RpZD1cImNvbG9yLXN3YXRjaFwiXG4gICAgICBkaXNhYmxlZD17aXNTZWxlY3RlZH1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmhleENvZGUgfX1cbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zck9ubHl9PntgU2VsZWN0ICR7Y29sb3IubGFiZWx9IGNvbG9yYH08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbkNvbG9yU3dhdGNoLmRlZmF1bHRQcm9wcyA9IHtcbiAgaXNTZWxlY3RlZDogZmFsc2UsXG59O1xuXG5Db2xvclN3YXRjaC5wcm9wVHlwZXMgPSB7XG4gIGNvbG9yOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGhleENvZGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KS5pc1JlcXVpcmVkLFxuICBpc1NlbGVjdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yU3dhdGNoO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbG9yUGlja2VyXCI6XCJfMzFGd0hfbldyNzJrM3B1Z0FwSnViOVwiLFwiaG9yaXpvbnRhbFwiOlwiUWEtQnB1VFQya3hwbVZfQVFnQ2pIXCIsXCJ2ZXJ0aWNhbFwiOlwiXzJ4NFNBbmJvcHlabWt5Y1dMQzBFWGtcIn07IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm1lbnVJdGVtXCI6XCJfM2dHY3pSSndyTmVuWFRCTFFuQzI5TVwiLFwiYWN0aXZlXCI6XCJfMmoxaWxVTmtiRkdTZ3VsWFNvSEFkUFwifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wibWVudUNvbnRhaW5lclwiOlwiXzItU0Z3c3BwRXVvYkJKa0F3d1FyRkNcIn07IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm1lbnVMaW5rSXRlbVwiOlwiXzJEeTFMVGZTY0dadFNiXzVMdWQtbFVcIixcImFjdGl2ZVwiOlwiXzJVd3M3YmozeWVqbW4xazdYaXlLZlFcIixcIm1lbnVJdGVtXCI6XCJfMmxJN1MydDV6V2hRc3ZnX1huUTctLVwifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1widG9hc3RDb250YWluZXJcIjpcIl8zRjhjSlUxd21LbWJyamlkZy1PM3pwXCJ9OyIsImV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQnV0dG9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0J1dHRvbkxpbmtcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQ29sb3JQaWNrZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQ29sb3JTd2F0Y2hcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQ29uZmlybWF0aW9uTW9kYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvRmxvYXRpbmdQYW5lbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9JY29uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0ljb25CdXR0b25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvSWNvbkJ1dHRvbkxpbmtcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvSW1hZ2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvTGlzdFZpZXdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvTWVudVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Nb2RhbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9PdmVybGF5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRJbnB1dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Ub2FzdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9WaWRlb1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaG9va3NcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQnV0dG9uLm1vZHVsZS5jc3NcIjtcblxudHlwZSBCdXR0b25Qcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGludmVydGVkPzogYm9vbGVhbjtcbiAgcm91bmRlZD86IGJvb2xlYW47XG4gIG5vU2hhZG93PzogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgbm9Cb3JkZXI/OiBib29sZWFuO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIHN0cmV0Y2hIb3Jpem9udGFsbHk/OiBib29sZWFuO1xuICBzdHJldGNoVmVydGljYWxseT86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoZXZlbnQ6IFJlYWN0LlN5bnRoZXRpY0V2ZW50KSA9PiB2b2lkO1xuICBzaXplPzogXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIixcbiAgdHlwZT86IFwic3VibWl0XCIgfCBcInJlc2V0XCIgfCBcImJ1dHRvblwiLFxuICBhbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIixcbiAgb2Zmc2V0U2lkZXM/OiBBcnJheTxcImxlZnRcIiB8IFwicmlnaHRcIj4sXG59XG5cbmZ1bmN0aW9uIEJ1dHRvbih7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIG9uQ2xpY2ssXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIHN0cmV0Y2hIb3Jpem9udGFsbHkgPSBmYWxzZSxcbiAgc3RyZXRjaFZlcnRpY2FsbHkgPSBmYWxzZSxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgYWxpZ24gPSBcImNlbnRlclwiLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgdHlwZSxcbn06IEJ1dHRvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAgc3R5bGVzW2FsaWduXSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuaW52ZXJ0ZWRdOiBpbnZlcnRlZCxcbiAgICAgICAgICBbc3R5bGVzLnJvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICAgIFtzdHlsZXMubm9TaGFkb3ddOiBub1NoYWRvdyxcbiAgICAgICAgICBbc3R5bGVzLm5vUGFkZGluZ106IG5vUGFkZGluZyxcbiAgICAgICAgICBbc3R5bGVzLm5vQm9yZGVyXTogbm9Cb3JkZXIsXG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMuc3RyZXRjaEhvcml6b250YWxseV06IHN0cmV0Y2hIb3Jpem9udGFsbHksXG4gICAgICAgICAgW3N0eWxlcy5zdHJldGNoVmVydGljYWxseV06IHN0cmV0Y2hWZXJ0aWNhbGx5LFxuICAgICAgICB9LFxuICAgICAgICBvZmZzZXRTaWRlcy5tYXAoKHNpZGUpID0+IHN0eWxlc1tgJHtzaWRlfU9mZnNldGBdKSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIHt0eXBlb2YgY2hpbGRyZW4gIT09IFwic3RyaW5nXCIgJiYgQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiYgY2hpbGRyZW4ubGVuZ3RoICA/IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250ZW50fT57Y2hpbGRyZW59PC9kaXY+XG4gICAgICApIDogY2hpbGRyZW59XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIk05X2VnRUM4bXN1MTM1b1BHVmRJZlwiLFwibGVmdFwiOlwiUlNSYlRnOFljNC1zOGs2cVVfdkNnXCIsXCJzbWFsbFwiOlwiXzFiTlFoYlp3TEE4RXJMbXdkUWl0SmVcIixcImxhcmdlXCI6XCJfMkR3TEZELTRnRHo5SEVBQWl3V0pQcVwiLFwiaW52ZXJ0ZWRcIjpcIl8zMUNmbVRVWXBFaDFoWnZjdFE5bEs0XCIsXCJyb3VuZGVkXCI6XCJfMmJxMzFxS0Q3QjZyNkNUQ09MM2RyV1wiLFwicmlnaHRPZmZzZXRcIjpcIl8yZVVDV1FNRVRPZ2lYdWliN1hmVGhaXCIsXCJsZWZ0T2Zmc2V0XCI6XCJHOG9fT01EVUZzRVExeXRVN29VWUdcIixcIm5vU2hhZG93XCI6XCJfMnZrbmhVRkFJR21qWHM3dGdrQUM3SVwiLFwibm9Cb3JkZXJcIjpcIl8ycDBHcGRtUEtJRkNVZXM1ODRZSGVWXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzh2TWxTUkhfOUhvUkdKaDhTd2thXCIsXCJzdHJldGNoSG9yaXpvbnRhbGx5XCI6XCJuWjlyT1p3ekdYVkkzYXlSZ0EzUUNcIixcInN0cmV0Y2hWZXJ0aWNhbGx5XCI6XCJfMXk4aWZiOTVzcFRMV0dBbXNidzFSMlwiLFwibm9QYWRkaW5nXCI6XCJfM2NPNDlKRUxOS3RHeWFGeFJsc2h5T1wiLFwiY29udGVudFwiOlwibzhkN1lvVDgzdW1lUFBTRnpLMzFZXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIFJlYWN0VHlwZSwgQW5jaG9ySFRNTEF0dHJpYnV0ZXMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQnV0dG9uTGluay5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgU2lkZSA9IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuXG50eXBlIEJ1dHRvbkxpbmtQcm9wcyA9IHtcbiAgYXM/OiBSZWFjdFR5cGU7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICByb3VuZGVkPzogYm9vbGVhbjtcbiAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICBub1NoYWRvdz86IGJvb2xlYW47XG4gIG5vUGFkZGluZz86IGJvb2xlYW47XG4gIG5vQm9yZGVyPzogYm9vbGVhbjtcbiAgc3RyZXRjaEhvcml6b250YWxseT86IGJvb2xlYW47XG4gIHN0cmV0Y2hWZXJ0aWNhbGx5PzogYm9vbGVhbjtcbiAgc2l6ZT86IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCI7XG4gIG9mZnNldFNpZGVzPzogQXJyYXk8U2lkZT47XG4gIGFsaWduPzogXCJsZWZ0XCIgfCBcImNlbnRlclwiO1xufSB8IGFueTtcblxuZnVuY3Rpb24gQnV0dG9uTGluayh7XG4gIGFzOiBDb21wb25lbnQsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHNpemUsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9QYWRkaW5nID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHN0cmV0Y2hIb3Jpem9udGFsbHkgPSBmYWxzZSxcbiAgc3RyZXRjaFZlcnRpY2FsbHkgPSBmYWxzZSxcbiAgb2Zmc2V0U2lkZXMgPSBbXSxcbiAgYWxpZ24gPSBcImNlbnRlclwiLFxuICAuLi5wcm9wc1xufTogQnV0dG9uTGlua1Byb3BzKSB7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgQ29tcG9uZW50ID0gXCJhXCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIGRhdGEtdGVzdGlkPVwiYnV0dG9uLWxpbmtcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAgc3R5bGVzW2FsaWduXSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuaW52ZXJ0ZWRdOiBpbnZlcnRlZCxcbiAgICAgICAgICBbc3R5bGVzLnJvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICAgIFtzdHlsZXMubm9TaGFkb3ddOiBub1NoYWRvdyxcbiAgICAgICAgICBbc3R5bGVzLm5vUGFkZGluZ106IG5vUGFkZGluZyxcbiAgICAgICAgICBbc3R5bGVzLm5vQm9yZGVyXTogbm9Cb3JkZXIsXG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMuc3RyZXRjaEhvcml6b250YWxseV06IHN0cmV0Y2hIb3Jpem9udGFsbHksXG4gICAgICAgICAgW3N0eWxlcy5zdHJldGNoVmVydGljYWxseV06IHN0cmV0Y2hWZXJ0aWNhbGx5LFxuICAgICAgICB9LFxuICAgICAgICBvZmZzZXRTaWRlcy5tYXAoKHNpZGU6IFNpZGUpID0+IHN0eWxlc1tgJHtzaWRlfU9mZnNldGBdKSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge3R5cGVvZiBjaGlsZHJlbiAhPT0gXCJzdHJpbmdcIiAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5sZW5ndGggID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRlbnR9PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgICkgOiAoXG4gICAgICAgIGNoaWxkcmVuXG4gICAgICApfVxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdXR0b25MaW5rO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzNlVkJnbWtHNmhqVm9rbTVYeTRVTVFcIixcImxlZnRcIjpcIl8zRjZoTUVRa0pneXdVa3QxZndtVHN5XCIsXCJzbWFsbFwiOlwiXzhJOWZobnpiTXZDcmw1S1BqOWYwXCIsXCJsYXJnZVwiOlwiXzNfU3dxbURXT0d2ODc3aUhBQ25KcENcIixcImludmVydGVkXCI6XCJfMXhPYTNDQlJIelBDUldOc2lKNjVhQ1wiLFwicm91bmRlZFwiOlwiXzNVR2xPSXR6S29rVmcwd0dIMGVJbFhcIixcInJpZ2h0T2Zmc2V0XCI6XCJfMTN0UHNwNmRmQTFUd2IxTU1IUmlHVFwiLFwibGVmdE9mZnNldFwiOlwiTkk1bjZiRVZSQ1FQeTZBT0FzUTFxXCIsXCJub1NoYWRvd1wiOlwiZ0lZOWl1dkMyVld4Y3Z3d0NtYUpKXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzNYZmxoM1ExQVpuVE9EMGN0cXVJNndcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIl8yRmJSREVHU183ZU1VY0owVmlPQlUwXCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwiXzFyUG0tdDVaV3dyUy1MOWw3ejY2amJcIixcIm5vUGFkZGluZ1wiOlwiXzNKOERlYUxxNWl3M0FwN3FLSmtQOUJcIixcIm5vQm9yZGVyXCI6XCJfM2NFUXMtS19tU2hGTkRnRFAzMldkNlwiLFwiY29udGVudFwiOlwiXzFWVHlmVHdWbG9BY1p3WUNaeXNsc0pcIn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSW1hZ2UgfSBmcm9tIFwiLi9JbWFnZVwiO1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ltYWdlLm1vZHVsZS5jc3NcIjtcblxudHlwZSBJbWFnZVByb3BzID0ge1xuICBzcmM6IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xuICBzcmNXaWR0aD86IG51bWJlcjtcbiAgc3JjSGVpZ2h0PzogbnVtYmVyO1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgbGF5b3V0PzogXCJjb3ZlclwiIHwgXCJjb250YWluXCIgfCBcInN0cmV0Y2hIb3Jpem9udGFsbHlcIiB8IFwic3RyZXRjaFZlcnRpY2FsbHlcIjtcbn07XG5cbmZ1bmN0aW9uIEltYWdlKHsgc3JjLCBhbHQsIHNyY1dpZHRoLCBzcmNIZWlnaHQsIGNoaWxkcmVuLCBsYXlvdXQgPSBcImNvbnRhaW5cIiB9OiBJbWFnZVByb3BzKSB7XG4gIHJldHVybiBjaGlsZHJlbiA/IChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb250YWluZXIsIHN0eWxlcy5oYXNPdmVybGF5XSl9PlxuICAgICAgPGltZ1xuICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMuaW1hZ2UsIHN0eWxlc1tsYXlvdXRdXSl9XG4gICAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJpbWFnZVwiXG4gICAgICAgIGFsdD17YWx0fVxuICAgICAgICBzcmM9e3NyY31cbiAgICAgICAgd2lkdGg9e3NyY1dpZHRofVxuICAgICAgICBoZWlnaHQ9e3NyY0hlaWdodH1cbiAgICAgIC8+XG4gICAgICB7Y2hpbGRyZW4gJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vdmVybGF5fT57Y2hpbGRyZW59PC9kaXY+fVxuICAgIDwvZGl2PlxuICApIDogKFxuICAgIDxpbWdcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5pbWFnZSwgc3R5bGVzW2xheW91dF1dKX1cbiAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwiaW1hZ2VcIlxuICAgICAgYWx0PXthbHR9XG4gICAgICBzcmM9e3NyY31cbiAgICAgIHdpZHRoPXtzcmNXaWR0aH1cbiAgICAgIGhlaWdodD17c3JjSGVpZ2h0fVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzN6d2xuOHhwa1p3cFRZNWk2SjdiT0RcIixcImhhc092ZXJsYXlcIjpcIl8yZWw4eFdxcWYzdzRTM3gwczJEOXhsXCIsXCJvdmVybGF5XCI6XCJFZzNpbWZiWGRJNlU2cmZSRTAtcU9cIixcImltYWdlXCI6XCJ0MTg5N2RmdHNfcHFIelNud21XQldcIixcImNvdmVyXCI6XCJfMS1SX0hEak82cU5ueXdjTmlTOGJ5RFwiLFwiY29udGFpblwiOlwiXzNtRHBDakhKMmc2NmUwdzRSMkVaa0dcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIl8zeUV0SDdjcXBVbFZGYUdpV0cxMjl3XCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwibHlpQnM2T0J4dlJFbndJUjBsczJDXCJ9OyIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTWVudS5tb2R1bGUuY3NzXCI7XG5cbmZ1bmN0aW9uIE1lbnUoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBpc09wZW4sIHBsYWNlbWVudCwgaGVhZGVyIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLm1lbnUsXG4gICAgICAgIHN0eWxlc1twbGFjZW1lbnQuaG9yaXpvbnRhbF0sXG4gICAgICAgIHN0eWxlc1twbGFjZW1lbnQudmVydGljYWxdLFxuICAgICAgICB7IFtzdHlsZXMub3Blbl06IGlzT3BlbiB9LFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICBdKX1cbiAgICA+XG4gICAgICB7aGVhZGVyICYmIGlzT3BlbiAmJiA8aDMgY2xhc3NOYW1lPXtzdHlsZXMubWVudUhlYWRlcn0+e2hlYWRlcn08L2gzPn1cbiAgICAgIDx1bD57aXNPcGVuICYmIGNoaWxkcmVufTwvdWw+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbk1lbnUuZGVmYXVsdFByb3BzID0ge1xuICBpc09wZW46IHRydWUsXG4gIHBsYWNlbWVudDogeyBob3Jpem9udGFsOiBcImxlZnRcIiwgdmVydGljYWw6IFwiYm90dG9tXCIgfSxcbn07XG5cbk1lbnUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc09wZW46IFByb3BUeXBlcy5ib29sLFxuICBoZWFkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHBsYWNlbWVudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBob3Jpem9udGFsOiBQcm9wVHlwZXMub25lT2YoW1wicmlnaHRcIiwgXCJsZWZ0XCJdKSxcbiAgICB2ZXJ0aWNhbDogUHJvcFR5cGVzLm9uZU9mKFtcInRvcFwiLCBcImJvdHRvbVwiXSksXG4gIH0pLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWVudTtcbiIsImltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnVDb250YWluZXIubW9kdWxlLmNzc1wiO1xuXG4vKiBmb3J3YXJkUmVmIGRvZXMgbm90IHN1cHBvcnQgcHJvcCB0eXBlcyAqL1xuLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXMgKi9cbmZ1bmN0aW9uIE1lbnVDb250YWluZXIoeyBjaGlsZHJlbiwgY2xhc3NOYW1lIH0sIHJlZikge1xuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5tZW51Q29udGFpbmVyLCBjbGFzc05hbWVdKX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZvcndhcmRSZWYoTWVudUNvbnRhaW5lcik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnVJdGVtLm1vZHVsZS5jc3NcIjtcblxuZnVuY3Rpb24gTWVudUl0ZW0oeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBpc0FjdGl2ZSwgb25DbGljayB9KSB7XG4gIHJldHVybiAoXG4gICAgPGxpXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLm1lbnVJdGVtLFxuICAgICAgICB7IFtzdHlsZXMuYWN0aXZlXTogaXNBY3RpdmUgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2xpPlxuICApO1xufVxuXG5NZW51SXRlbS5kZWZhdWx0UHJvcHMgPSB7XG4gIGlzQWN0aXZlOiBmYWxzZSxcbn07XG5cbk1lbnVJdGVtLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNBY3RpdmU6IFByb3BUeXBlcy5ib29sLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1lbnVJdGVtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9NZW51TGlua0l0ZW0ubW9kdWxlLmNzc1wiO1xuXG5mdW5jdGlvbiBNZW51TGlua0l0ZW0oeyBhczogQ29tcG9uZW50LCBjaGlsZHJlbiwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9KSB7XG4gIHJldHVybiAoXG4gICAgPENvbXBvbmVudFxuICAgICAgZGF0YS10ZXN0aWQ9XCJtZW51LWxpbmstaXRlbVwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMubWVudUxpbmtJdGVtLCBjbGFzc05hbWVdKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Db21wb25lbnQ+XG4gICk7XG59XG5cbk1lbnVMaW5rSXRlbS5kZWZhdWx0UHJvcHMgPSB7XG4gIGFzOiBcImFcIixcbn07XG5cbk1lbnVMaW5rSXRlbS5wcm9wVHlwZXMgPSB7XG4gIGFzOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWVudUxpbmtJdGVtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0xpc3RWaWV3Lm1vZHVsZS5jc3NcIjtcblxuZnVuY3Rpb24gTGlzdFZpZXcoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBoZWFkZXIgfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmNvbnRhaW5lciwgY2xhc3NOYW1lXSl9PlxuICAgICAge2hlYWRlciAmJiA8aDMgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT57aGVhZGVyfTwvaDM+fVxuICAgICAgPHVsIGNsYXNzTmFtZT17c3R5bGVzLmxpc3R9PntjaGlsZHJlbn08L3VsPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5MaXN0Vmlldy5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhlYWRlcjogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExpc3RWaWV3O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL0J1dHRvblwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzc1wiO1xuXG5mdW5jdGlvbiBMaXN0Vmlld0l0ZW0oe1xuICBjaGlsZHJlbixcbiAgYWN0aXZlLFxuICBkaXNhYmxlZCxcbiAgdHJhbnNwYXJlbnQsXG4gIG5vUGFkZGluZyxcbiAgc2l6ZSxcbiAgYWxpZ24sXG4gIG9uQ2xpY2ssXG59KSB7XG4gIHJldHVybiAoXG4gICAgPGxpIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5saXN0Vmlld0l0ZW1dKX0+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgaW52ZXJ0ZWQ9e2FjdGl2ZX1cbiAgICAgICAgdHJhbnNwYXJlbnQ9e3RyYW5zcGFyZW50fVxuICAgICAgICBub1BhZGRpbmc9e25vUGFkZGluZ31cbiAgICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICBzdHJldGNoSG9yaXpvbnRhbGx5XG4gICAgICAgIG5vU2hhZG93XG4gICAgICAgIG5vQm9yZGVyXG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvbGk+XG4gICk7XG59XG5cbkxpc3RWaWV3SXRlbS5kZWZhdWx0UHJvcHMgPSB7XG4gIGFjdGl2ZTogZmFsc2UsXG4gIHRyYW5zcGFyZW50OiBmYWxzZSxcbiAgbm9QYWRkaW5nOiBmYWxzZSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBzaXplOiBcIm1lZGl1bVwiLFxuICBhbGlnbjogXCJjZW50ZXJcIixcbn07XG5cbkxpc3RWaWV3SXRlbS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBhY3RpdmU6IFByb3BUeXBlcy5ib29sLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHRyYW5zcGFyZW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgbm9QYWRkaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2l6ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxpZ246IFByb3BUeXBlcy5vbmVPZihbXCJsZWZ0XCIsIFwiY2VudGVyXCJdKSxcbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMaXN0Vmlld0l0ZW07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgeyBCdXR0b25MaW5rIH0gZnJvbSBcIi4uL0J1dHRvbkxpbmtcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTGlzdFZpZXdJdGVtLm1vZHVsZS5jc3NcIjtcblxuZnVuY3Rpb24gTGlzdFZpZXdMaW5rSXRlbSh7XG4gIGNoaWxkcmVuLFxuICBhY3RpdmUsXG4gIHRyYW5zcGFyZW50LFxuICBub1BhZGRpbmcsXG4gIHNpemUsXG4gIGFsaWduLFxuICBhcyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8bGkgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmxpc3RWaWV3SXRlbV0pfT5cbiAgICAgIDxCdXR0b25MaW5rXG4gICAgICAgIGFzPXthc31cbiAgICAgICAgaW52ZXJ0ZWQ9e2FjdGl2ZX1cbiAgICAgICAgdHJhbnNwYXJlbnQ9e3RyYW5zcGFyZW50fVxuICAgICAgICBub1BhZGRpbmc9e25vUGFkZGluZ31cbiAgICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICBzdHJldGNoSG9yaXpvbnRhbGx5XG4gICAgICAgIG5vU2hhZG93XG4gICAgICAgIG5vQm9yZGVyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9CdXR0b25MaW5rPlxuICAgIDwvbGk+XG4gICk7XG59XG5cbkxpc3RWaWV3TGlua0l0ZW0uZGVmYXVsdFByb3BzID0ge1xuICBhY3RpdmU6IGZhbHNlLFxuICB0cmFuc3BhcmVudDogZmFsc2UsXG4gIG5vUGFkZGluZzogZmFsc2UsXG4gIHNpemU6IFwibWVkaXVtXCIsXG4gIGFsaWduOiBcImNlbnRlclwiLFxuICBhczogXCJhXCIsXG59O1xuXG5MaXN0Vmlld0xpbmtJdGVtLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIGFzOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHRyYW5zcGFyZW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgbm9QYWRkaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgYWxpZ246IFByb3BUeXBlcy5vbmVPZihbXCJsZWZ0XCIsIFwiY2VudGVyXCJdKSxcbiAgc2l6ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMaXN0Vmlld0xpbmtJdGVtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Ub2FzdC5tb2R1bGUuY3NzXCI7XG5cbmZ1bmN0aW9uIFRvYXN0KHsgY2hpbGRyZW4sIGltYWdlLCBidXR0b25zLCBvbkNsaWNrIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudG9hc3RdKX1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInRvYXN0XCJcbiAgICA+XG4gICAgICB7aW1hZ2UgJiYgKFxuICAgICAgICA8aW1nXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0b2FzdC1pbWFnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudG9hc3RJbWFnZX1cbiAgICAgICAgICBzcmM9e2ltYWdlLnNyY31cbiAgICAgICAgICBhbHQ9e2ltYWdlLmFsdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRvYXN0Q29udGVudH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50b2FzdEJ1dHRvbnN9PntidXR0b25zfTwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5Ub2FzdC5kZWZhdWx0UHJvcHMgPSB7XG4gIG9uQ2xpY2s6ICgpID0+IHt9LFxufTtcblxuVG9hc3QucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGJ1dHRvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgaW1hZ2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYWx0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgc3JjOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRvYXN0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Ub2FzdENvbnRhaW5lci5tb2R1bGUuY3NzXCI7XG5cbmZ1bmN0aW9uIFRvYXN0Q29udGFpbmVyKHsgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy50b2FzdENvbnRhaW5lcl0pfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJ0b2FzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuVG9hc3RDb250YWluZXIucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUb2FzdENvbnRhaW5lcjtcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUb2dnbGUoaW5pdGlhbFN0YXRlID0gZmFsc2UpIHtcbiAgY29uc3QgW2Jvb2wsIHNldEJvb2xdID0gdXNlU3RhdGUoXG4gICAgdHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gXCJib29sZWFuXCIgPyBpbml0aWFsU3RhdGUgOiBmYWxzZVxuICApO1xuICBjb25zdCB0b2dnbGUgPSAoKSA9PiBzZXRCb29sKChwcmV2Qm9vbCkgPT4gIXByZXZCb29sKTtcbiAgdG9nZ2xlLm9uID0gKCkgPT4gc2V0Qm9vbCh0cnVlKTtcbiAgdG9nZ2xlLm9mZiA9ICgpID0+IHNldEJvb2woZmFsc2UpO1xuXG4gIHJldHVybiBbYm9vbCwgdXNlQ2FsbGJhY2sodG9nZ2xlLCBbXSldO1xufVxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlT3V0c2lkZUNsaWNrKGNhbGxiYWNrKSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmICghcmVmLmN1cnJlbnQgfHwgcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCBoYW5kbGVDbGljayk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIGhhbmRsZUNsaWNrKTtcbiAgICB9O1xuICB9LCBbY2FsbGJhY2tdKTtcblxuICByZXR1cm4gcmVmO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQgeyBDb2xvclN3YXRjaCB9IGZyb20gXCIuLi9Db2xvclN3YXRjaFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Db2xvclBpY2tlci5tb2R1bGUuY3NzXCI7XG5cbmZ1bmN0aW9uIENvbG9yUGlja2VyKHsgY29sb3JzLCBkaXJlY3Rpb24sIG9uU2VsZWN0LCBzZWxlY3RlZENvbG9yIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb2xvclBpY2tlciwgc3R5bGVzW2RpcmVjdGlvbl1dKX0+XG4gICAgICB7Y29sb3JzLm1hcCgoY29sb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8Q29sb3JTd2F0Y2hcbiAgICAgICAgICAgIGtleT17Y29sb3Iua2V5fVxuICAgICAgICAgICAgY29sb3I9e2NvbG9yfVxuICAgICAgICAgICAgaXNTZWxlY3RlZD17Y29sb3IgPT09IHNlbGVjdGVkQ29sb3J9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNlbGVjdChjb2xvcil9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5Db2xvclBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGRpcmVjdGlvbjogXCJ2ZXJ0aWNhbFwiLFxufTtcblxuQ29sb3JQaWNrZXIucHJvcFR5cGVzID0ge1xuICBkaXJlY3Rpb246IFByb3BUeXBlcy5vbmVPZihbXCJob3Jpem9udGFsXCIsIFwidmVydGljYWxcIl0pLFxuICBjb2xvcnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBoZXhDb2RlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBrZXk6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgfSlcbiAgKS5pc1JlcXVpcmVkLFxuICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2VsZWN0ZWRDb2xvcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBoZXhDb2RlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAga2V5OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb2xvclBpY2tlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgTW9kYWwgfSBmcm9tIFwiLi4vTW9kYWxcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vQ29uZmlybWF0aW9uTW9kYWwubW9kdWxlLmNzc1wiO1xuXG5mdW5jdGlvbiBDb25maXJtYXRpb25Nb2RhbCh7XG4gIGJ1dHRvbnNMZWZ0LFxuICBidXR0b25zUmlnaHQsXG4gIGNoaWxkcmVuLFxuICBoZWFkZXIsXG4gIGlzT3BlbixcbiAgb25DbG9zZSxcbiAgbm9QYWRkaW5nLFxufSkge1xuICByZXR1cm4gKFxuICAgIDxNb2RhbCBpc09wZW49e2lzT3Blbn0gb25DbG9zZT17b25DbG9zZX0gc2hvd0Nsb3NlQnV0dG9uPXtmYWxzZX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRhaW5lcn0+XG4gICAgICAgIDxoMSBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEhlYWRlcn0+e2hlYWRlcn08L2gxPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgICAgICBzdHlsZXMubW9kYWxDb250ZW50LFxuICAgICAgICAgICAgeyBbc3R5bGVzLm5vUGFkZGluZ106IG5vUGFkZGluZyB9LFxuICAgICAgICAgIF0pfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCdXR0b25zfT57YnV0dG9uc0xlZnR9PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJ1dHRvbnN9PntidXR0b25zUmlnaHR9PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Nb2RhbD5cbiAgKTtcbn1cblxuQ29uZmlybWF0aW9uTW9kYWwuZGlzcGxheU5hbWUgPSBcIkNvbmZpcm1hdGlvbk1vZGFsXCI7XG5cbkNvbmZpcm1hdGlvbk1vZGFsLmRlZmF1bHRQcm9wcyA9IHtcbiAgYnV0dG9uc0xlZnQ6IFtdLFxuICBidXR0b25zUmlnaHQ6IFtdLFxuICBvbkNsb3NlOiAoKSA9PiB7fSxcbiAgbm9QYWRkaW5nOiBmYWxzZSxcbn07XG5cbkNvbmZpcm1hdGlvbk1vZGFsLnByb3BUeXBlcyA9IHtcbiAgYnV0dG9uc0xlZnQ6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5lbGVtZW50KSxcbiAgYnV0dG9uc1JpZ2h0OiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuZWxlbWVudCksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBoZWFkZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaXNPcGVuOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBub1BhZGRpbmc6IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbmZpcm1hdGlvbk1vZGFsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9GbG9hdGluZ1BhbmVsLm1vZHVsZS5jc3NcIjtcblxuZnVuY3Rpb24gRmxvYXRpbmdQYW5lbCh7IGNoaWxkcmVuLCBsYXlvdXQsIHBsYWNlbWVudCB9KSB7XG4gIGNvbnN0IGhvcml6b250YWxQbGFjZW1lbnQgPVxuICAgIHBsYWNlbWVudC5ob3Jpem9udGFsID09PSBcImNlbnRlclwiXG4gICAgICA/IFwiaG9yaXpvbnRhbENlbnRlclwiXG4gICAgICA6IHBsYWNlbWVudC5ob3Jpem9udGFsO1xuXG4gIGNvbnN0IHZlcnRpY2FsUGxhY2VtZW50ID1cbiAgICBwbGFjZW1lbnQudmVydGljYWwgPT09IFwiY2VudGVyXCIgPyBcInZlcnRpY2FsQ2VudGVyXCIgOiBwbGFjZW1lbnQudmVydGljYWw7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3RpZD1cImZsb2F0aW5nLXBhbmVsXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbaG9yaXpvbnRhbFBsYWNlbWVudF0sXG4gICAgICAgIHN0eWxlc1t2ZXJ0aWNhbFBsYWNlbWVudF0sXG4gICAgICAgIHN0eWxlc1tsYXlvdXRdLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5maXhlZF06IHBsYWNlbWVudC5wYXJlbnQgIT09IFwiY29udGFpbmVyXCIsXG4gICAgICAgIH0sXG4gICAgICBdKX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbkZsb2F0aW5nUGFuZWwuZGVmYXVsdFByb3BzID0ge1xuICBsYXlvdXQ6IFwiY29sdW1uXCIsXG4gIHBsYWNlbWVudDogeyBob3Jpem9udGFsOiBcImNlbnRlclwiLCB2ZXJ0aWNhbDogXCJib3R0b21cIiwgcGFyZW50OiBcInZpZXdwb3J0XCIgfSxcbn07XG5cbkZsb2F0aW5nUGFuZWwucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGxheW91dDogUHJvcFR5cGVzLm9uZU9mKFtcImNvbHVtblwiLCBcInJvd1wiXSksXG4gIHBsYWNlbWVudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBob3Jpem9udGFsOiBQcm9wVHlwZXMub25lT2YoW1xuICAgICAgXCJyaWdodFwiLFxuICAgICAgXCJyaWdodEVkZ2VcIixcbiAgICAgIFwicmlnaHRPbkVkZ2VcIixcbiAgICAgIFwibGVmdFwiLFxuICAgICAgXCJsZWZ0RWRnZVwiLFxuICAgICAgXCJsZWZ0T25FZGdlXCIsXG4gICAgICBcImxlZnRPbkVkZ2VcIixcbiAgICAgIFwiY2VudGVyXCIsXG4gICAgXSksXG4gICAgdmVydGljYWw6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICBcInRvcFwiLFxuICAgICAgXCJ0b3BFZGdlXCIsXG4gICAgICBcImJvdHRvbVwiLFxuICAgICAgXCJib3R0b21FZGdlXCIsXG4gICAgICBcImJvdHRvbU9uRWRnZVwiLFxuICAgICAgXCJjZW50ZXJcIixcbiAgICBdKSxcbiAgICBwYXJlbnQ6IFByb3BUeXBlcy5vbmVPZihbXCJ2aWV3cG9ydFwiLCBcImNvbnRhaW5lclwiXSksXG4gIH0pLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRmxvYXRpbmdQYW5lbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvblwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9JY29uQnV0dG9uLm1vZHVsZS5jc3NcIjtcblxuZnVuY3Rpb24gSWNvbkJ1dHRvbih7XG4gIGNsYXNzTmFtZSxcbiAgb25DbGljayxcbiAgc2l6ZSxcbiAgdHlwZSxcbiAgc3JjLFxuICBhbHQsXG4gIGRpc2FibGVkLFxuICBpbnZlcnRlZCxcbiAgbm9TaGFkb3csXG4gIG5vQm9yZGVyLFxuICBpc0FjdGl2ZSxcbiAgdHJhbnNwYXJlbnQsXG4gIHJvdW5kZWQsXG4gIG9mZnNldFNpZGVzLFxufSkge1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQsXG4gICAgICAgICAgW3N0eWxlcy5yb3VuZGVkXTogcm91bmRlZCxcbiAgICAgICAgICBbc3R5bGVzLmFjdGl2ZV06IGlzQWN0aXZlLFxuICAgICAgICAgIFtzdHlsZXMubm9TaGFkb3ddOiBub1NoYWRvdyxcbiAgICAgICAgICBbc3R5bGVzLm5vQm9yZGVyXTogbm9Cb3JkZXIsXG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICB9LFxuICAgICAgICBvZmZzZXRTaWRlcy5tYXAoKHNpZGUpID0+IHN0eWxlc1tgJHtzaWRlfU9mZnNldGBdKSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxJY29uIHNyYz17c3JjfSBhbHQ9e2FsdH0gc2l6ZT17c2l6ZX0gaW52ZXJ0ZWQ9e2ludmVydGVkfSAvPlxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG5JY29uQnV0dG9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgc2l6ZTogXCJtZWRpdW1cIixcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBpbnZlcnRlZDogZmFsc2UsXG4gIGlzQWN0aXZlOiBmYWxzZSxcbiAgbm9TaGFkb3c6IGZhbHNlLFxuICBub0JvcmRlcjogZmFsc2UsXG4gIHRyYW5zcGFyZW50OiBmYWxzZSxcbiAgcm91bmRlZDogZmFsc2UsXG4gIG9mZnNldFNpZGVzOiBbXSxcbn07XG5cbkljb25CdXR0b24ucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNyYzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBhbHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaXNBY3RpdmU6IFByb3BUeXBlcy5ib29sLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGludmVydGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgbm9TaGFkb3c6IFByb3BUeXBlcy5ib29sLFxuICBub0JvcmRlcjogUHJvcFR5cGVzLmJvb2wsXG4gIHRyYW5zcGFyZW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgcm91bmRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wic21hbGxcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSksXG4gIHR5cGU6IFByb3BUeXBlcy5vbmVPZihbXCJzdWJtaXRcIiwgXCJyZXNldFwiLCBcImJ1dHRvblwiXSksXG4gIG9mZnNldFNpZGVzOiBQcm9wVHlwZXMuYXJyYXlPZihbXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIl0pLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbkJ1dHRvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvblwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9JY29uQnV0dG9uTGluay5tb2R1bGUuY3NzXCI7XG5cbmZ1bmN0aW9uIEljb25CdXR0b25MaW5rKHtcbiAgYXM6IENvbXBvbmVudCxcbiAgY2xhc3NOYW1lLFxuICBzcmMsXG4gIGFsdCxcbiAgc2l6ZSxcbiAgaW52ZXJ0ZWQsXG4gIG5vU2hhZG93LFxuICBub0JvcmRlcixcbiAgdHJhbnNwYXJlbnQsXG4gIHJvdW5kZWQsXG4gIG9mZnNldFNpZGVzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRcbiAgICAgIGRhdGEtdGVzdGlkPVwiaWNvbi1idXR0b24tbGlua1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgc3R5bGVzW3NpemVdLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5pbnZlcnRlZF06IGludmVydGVkLFxuICAgICAgICAgIFtzdHlsZXMucm91bmRlZF06IHJvdW5kZWQsXG4gICAgICAgICAgW3N0eWxlcy5ub1NoYWRvd106IG5vU2hhZG93LFxuICAgICAgICAgIFtzdHlsZXMubm9Cb3JkZXJdOiBub0JvcmRlcixcbiAgICAgICAgICBbc3R5bGVzLnRyYW5zcGFyZW50XTogdHJhbnNwYXJlbnQsXG4gICAgICAgIH0sXG4gICAgICAgIG9mZnNldFNpZGVzLm1hcCgoc2lkZSkgPT4gc3R5bGVzW2Ake3NpZGV9T2Zmc2V0YF0pLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICBdKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8SWNvbiBzcmM9e3NyY30gYWx0PXthbHR9IHNpemU9e3NpemV9IGludmVydGVkPXtpbnZlcnRlZH0gLz5cbiAgICA8L0NvbXBvbmVudD5cbiAgKTtcbn1cblxuSWNvbkJ1dHRvbkxpbmsuZGVmYXVsdFByb3BzID0ge1xuICBhczogXCJhXCIsXG4gIHNpemU6IFwibWVkaXVtXCIsXG4gIGludmVydGVkOiBmYWxzZSxcbiAgbm9TaGFkb3c6IGZhbHNlLFxuICBub0JvcmRlcjogZmFsc2UsXG4gIHRyYW5zcGFyZW50OiBmYWxzZSxcbiAgcm91bmRlZDogZmFsc2UsXG4gIG9mZnNldFNpZGVzOiBbXSxcbn07XG5cbkljb25CdXR0b25MaW5rLnByb3BUeXBlcyA9IHtcbiAgYXM6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNyYzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBhbHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaW52ZXJ0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICBub1NoYWRvdzogUHJvcFR5cGVzLmJvb2wsXG4gIG5vQm9yZGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJhbnNwYXJlbnQ6IFByb3BUeXBlcy5ib29sLFxuICByb3VuZGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICBvZmZzZXRTaWRlczogUHJvcFR5cGVzLmFycmF5T2YoW1widG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJsZWZ0XCJdKSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEljb25CdXR0b25MaW5rO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9PdmVybGF5Lm1vZHVsZS5jc3NcIjtcblxuZnVuY3Rpb24gT3ZlcmxheSh7IGNoaWxkcmVuLCB0cmFuc3BhcmVudCwgaXNGaXhlZCwgb25DbGljayB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0aWQ9XCJvdmVybGF5XCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMub3ZlcmxheSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLmZpeGVkXTogaXNGaXhlZCxcbiAgICAgICAgfSxcbiAgICAgIF0pfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbk92ZXJsYXkuZGVmYXVsdFByb3BzID0ge1xuICB0cmFuc3BhcmVudDogZmFsc2UsXG4gIGlzRml4ZWQ6IGZhbHNlLFxuICBvbkNsaWNrOiAoKSA9PiB7fSxcbn07XG5cbk92ZXJsYXkucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICB0cmFuc3BhcmVudDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzRml4ZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE92ZXJsYXk7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vVGV4dElucHV0Lm1vZHVsZS5jc3NcIjtcblxuZnVuY3Rpb24gVGV4dElucHV0KHtcbiAgbGFiZWwsXG4gIG9uQ2hhbmdlLFxuICBwbGFjZWhvbGRlcixcbiAgdmFsdWUsXG4gIG5hbWUsXG4gIHR5cGUsXG4gIHNpemUsXG4gIGF1dG9Gb2N1cyxcbiAgaW5wdXRSZWYsXG59KSB7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiBvbkNoYW5nZShlLnRhcmdldC52YWx1ZSksIFtvbkNoYW5nZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzLnRleHRMYWJlbH0+XG4gICAgICB7bGFiZWx9XG4gICAgICA8aW5wdXRcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJpbnB1dFwiXG4gICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy50ZXh0SW5wdXQsIHN0eWxlc1tzaXplXV0pfVxuICAgICAgICBvbkNoYW5nZT17IWlucHV0UmVmID8gaGFuZGxlQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgYXV0b0ZvY3VzPXthdXRvRm9jdXN9XG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG4gICk7XG59XG5cblRleHRJbnB1dC5kZWZhdWx0UHJvcHMgPSB7XG4gIHR5cGU6IFwidGV4dFwiLFxuICBhdXRvRm9jdXM6IGZhbHNlLFxufTtcblxuVGV4dElucHV0LnByb3BUeXBlcyA9IHtcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdHlwZTogUHJvcFR5cGVzLm9uZU9mKFtcInRleHRcIiwgXCJwYXNzd29yZFwiLCBcImVtYWlsXCJdKSxcbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICBpbnB1dFJlZjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmZ1bmMsXG4gICAgUHJvcFR5cGVzLnNoYXBlKHsgY3VycmVudDogUHJvcFR5cGVzLmFueSB9KSxcbiAgXSksXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0SW5wdXQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL1ZpZGVvLm1vZHVsZS5jc3NcIjtcblxuLyoqXG4gKiBUaGVyZSBpcyBhIGtub3duIGlzc3VlIGluIFJlYWN0IGluIHJlZ2FyZHMgdG8gdGhlICdtdXRlZCcgcHJvcGVydHkgd2hpY2ggY2F1c2VzIHRoZSB3YXJuaW5nOlxuICogXCJXYXJuaW5nOiB1bnN0YWJsZV9mbHVzaERpc2NyZXRlVXBkYXRlczogQ2Fubm90IGZsdXNoIHVwZGF0ZXMgd2hlbiBSZWFjdCBpcyBhbHJlYWR5IHJlbmRlcmluZy5cIlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTAzODlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNjU0NFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpbmctbGlicmFyeS9yZWFjdC10ZXN0aW5nLWxpYnJhcnkvaXNzdWVzLzQ3MFxuICovXG5cbmZ1bmN0aW9uIFZpZGVvKHsgc3JjLCB0eXBlLCBtdXRlZCwgbG9vcCwgYXV0b1BsYXksIGxheW91dCwgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gY2hpbGRyZW4gPyAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMuY29udGFpbmVyLCBzdHlsZXMuaGFzT3ZlcmxheV0pfT5cbiAgICAgIDx2aWRlb1xuICAgICAgICBkYXRhLXRlc3RpZD1cInZpZGVvXCJcbiAgICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudmlkZW8sIHN0eWxlc1tsYXlvdXRdXSl9XG4gICAgICAgIHNyYz17c3JjfVxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBtdXRlZD17bXV0ZWR9XG4gICAgICAgIGxvb3A9e2xvb3B9XG4gICAgICAgIGF1dG9QbGF5PXthdXRvUGxheX1cbiAgICAgICAgcGxheXNJbmxpbmU9e3RydWV9XG4gICAgICAvPlxuICAgICAge2NoaWxkcmVuICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3ZlcmxheX0+e2NoaWxkcmVufTwvZGl2Pn1cbiAgICA8L2Rpdj5cbiAgKSA6IChcbiAgICA8dmlkZW9cbiAgICAgIGRhdGEtdGVzdGlkPVwidmlkZW9cIlxuICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnZpZGVvLCBzdHlsZXNbbGF5b3V0XV0pfVxuICAgICAgc3JjPXtzcmN9XG4gICAgICB0eXBlPXt0eXBlfVxuICAgICAgbXV0ZWQ9e211dGVkfVxuICAgICAgbG9vcD17bG9vcH1cbiAgICAgIGF1dG9QbGF5PXthdXRvUGxheX1cbiAgICAgIHBsYXlzSW5saW5lPXt0cnVlfVxuICAgIC8+XG4gICk7XG59XG5cblZpZGVvLmRlZmF1bHRQcm9wcyA9IHtcbiAgbXV0ZWQ6IHRydWUsXG4gIGxvb3A6IHRydWUsXG4gIGF1dG9QbGF5OiB0cnVlLFxuICBsYXlvdXQ6IFwiY29udGFpblwiLFxufTtcblxuVmlkZW8ucHJvcFR5cGVzID0ge1xuICBzcmM6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdHlwZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYXlvdXQ6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgXCJjb3ZlclwiLFxuICAgIFwiY29udGFpblwiLFxuICAgIFwic3RyZXRjaEhvcml6b250YWxseVwiLFxuICAgIFwic3RyZXRjaFZlcnRpY2FsbHlcIixcbiAgXSksXG4gIGF1dG9QbGF5OiBQcm9wVHlwZXMuYm9vbCxcbiAgbG9vcDogUHJvcFR5cGVzLmJvb2wsXG4gIG11dGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVmlkZW87XG4iXSwic291cmNlUm9vdCI6IiJ9
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=9)}([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(43)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(27);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(12);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(10);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(16);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(21);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(6),t),a(n(4),t),a(n(14),t),a(n(7),t),a(n(19),t),a(n(24),t),a(n(3),t),a(n(29),t),a(n(32),t),a(n(35),t),a(n(38),t),a(n(45),t),a(n(8),t),a(n(54),t),a(n(57),t),a(n(60),t),a(n(65),t),a(n(68),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(11));t.default=function(e){var t,n=e.children,r=e.className,u=e.onClick,l=e.disabled,d=void 0!==l&&l,c=e.inverted,f=void 0!==c&&c,s=e.rounded,v=void 0!==s&&s,p=e.noShadow,m=void 0!==p&&p,_=e.noPadding,y=void 0!==_&&_,h=e.noBorder,b=void 0!==h&&h,O=e.transparent,g=void 0!==O&&O,P=e.stretchHorizontally,j=void 0!==P&&P,E=e.stretchVertically,w=void 0!==E&&E,k=e.offsetSides,C=void 0===k?[]:k,x=e.align,M=void 0===x?"center":x,S=e.size,N=void 0===S?"medium":S,z=e.type;return a.default.createElement("button",{className:o.default([i.default.container,i.default[N],i.default[M],(t={},t[i.default.inverted]=f,t[i.default.rounded]=v,t[i.default.noShadow]=m,t[i.default.noPadding]=y,t[i.default.noBorder]=b,t[i.default.transparent]=g,t[i.default.stretchHorizontally]=j,t[i.default.stretchVertically]=w,t[i.default.leftOffset]=v&&C.includes("left"),t[i.default.rightOffset]=v&&C.includes("right"),t),r]),disabled:d,onClick:u,type:z,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(13));t.default=function(e){var t,n=e.as,o=e.children,d=e.className,c=e.size,f=e.inverted,s=void 0!==f&&f,v=e.rounded,p=void 0!==v&&v,m=e.transparent,_=void 0!==m&&m,y=e.noShadow,h=void 0!==y&&y,b=e.noPadding,O=void 0!==b&&b,g=e.noBorder,P=void 0!==g&&g,j=e.stretchHorizontally,E=void 0!==j&&j,w=e.stretchVertically,k=void 0!==w&&w,C=e.offsetSides,x=void 0===C?[]:C,M=e.align,S=void 0===M?"center":M,N=a(e,["as","children","className","size","inverted","rounded","transparent","noShadow","noPadding","noBorder","stretchHorizontally","stretchVertically","offsetSides","align"]);return void 0===n&&(n="a"),i.default.createElement(n,r({"data-testid":"button-link",className:u.default([l.default.container,l.default[c],l.default[S],(t={},t[l.default.inverted]=s,t[l.default.rounded]=p,t[l.default.noShadow]=h,t[l.default.noPadding]=O,t[l.default.noBorder]=P,t[l.default.transparent]=_,t[l.default.stretchHorizontally]=E,t[l.default.stretchVertically]=k,t[l.default.leftOffset]=p&&x.includes("left"),t[l.default.rightOffset]=p&&x.includes("right"),t),d])},N),"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(15);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(7),u=r(n(18));t.default=function(e){var t=e.colors,n=e.onSelect,r=e.selectedColor,l=e.direction,d=void 0===l?"vertical":l;return a.default.createElement("div",{className:o.default([u.default.colorPicker,u.default[d]])},t.map((function(e){return a.default.createElement(i.ColorSwatch,{key:e.key,color:e,isSelected:e===r,onClick:function(){return n(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(17));t.default=function(e){var t,n=e.color,r=e.onClick,u=e.isSelected,l=void 0!==u&&u;return a.default.createElement("button",{className:o.default([i.default.colorSwatch,(t={},t[i.default.selected]=l,t)]),"data-testid":"color-swatch",disabled:l,onClick:r,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(20);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(8),u=r(n(23));function l(e){var t,n=e.children,r=e.header,l=e.isOpen,d=e.buttonsLeft,c=void 0===d?[]:d,f=e.buttonsRight,s=void 0===f?[]:f,v=e.onClose,p=void 0===v?function(){}:v,m=e.noPadding,_=void 0!==m&&m;return a.default.createElement(i.Modal,{isOpen:l,onClose:p},a.default.createElement("div",{className:u.default.container},a.default.createElement("h1",{className:u.default.modalHeader},r),a.default.createElement("div",{className:o.default([u.default.modalContent,(t={},t[u.default.noPadding]=_,t)])},n),a.default.createElement("div",{className:u.default.modalButtonsContainer},a.default.createElement("div",{className:u.default.modalButtons},c),a.default.createElement("div",{className:u.default.modalButtons},s))))}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(71),d=i(n(22));t.default=function(e){var t=e.children,n=e.isOpen,r=e.button,a=e.onClose,o=void 0===a?function(){}:a;l.useHotkeys("Escape",o);var i=u.useCallback((function(){o()}),[o]);return n&&u.default.createElement(u.default.Fragment,null,u.default.createElement("div",{className:d.default.overlay,"data-testid":"modal-overlay",onClick:i}),u.default.createElement("div",{className:d.default.modal,"data-testid":"modal"},t),r&&u.default.createElement("div",{className:d.default.modalButton},r))}},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(25);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(26));t.default=function(e){var t,n=e.children,r=e.layout,u=void 0===r?"column":r,l=e.placement,d=void 0===l?{horizontal:"center",vertical:"bottom",parent:"viewport"}:l,c="center"===d.horizontal?"horizontalCenter":d.horizontal,f="center"===d.vertical?"verticalCenter":d.vertical;return a.default.createElement("div",{"data-testid":"floating-panel",className:o.default([i.default.container,i.default[c],i.default[f],i.default[u],(t={},t[i.default.fixed]="container"!==d.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(28));t.default=function(e){var t,n=e.src,r=e.alt,u=e.size,l=void 0===u?"medium":u,d=e.inverted,c=void 0!==d&&d;return a.default.createElement("img",{className:o.default([i.default.icon,i.default[l],(t={},t[i.default.inverted]=c,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(30);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(3),u=r(n(31));t.default=function(e){var t,n=e.className,r=e.src,l=e.alt,d=e.offsetSides,c=void 0===d?[]:d,f=e.onClick,s=void 0===f?function(){}:f,v=e.disabled,p=void 0!==v&&v,m=e.inverted,_=void 0!==m&&m,y=e.noShadow,h=void 0!==y&&y,b=e.noBorder,O=void 0!==b&&b,g=e.transparent,P=void 0!==g&&g,j=e.rounded,E=void 0!==j&&j,w=e.size,k=void 0===w?"medium":w,C=e.type,x=void 0===C?"button":C;return a.default.createElement("button",{className:o.default([u.default.container,u.default[k],(t={},t[u.default.inverted]=_,t[u.default.rounded]=E,t[u.default.noShadow]=h,t[u.default.noBorder]=O,t[u.default.transparent]=P,t[u.default.topOffset]=E&&c.includes("top"),t[u.default.rightOffset]=E&&c.includes("right"),t[u.default.bottomOffset]=E&&c.includes("bottom"),t[u.default.leftOffset]=E&&c.includes("left"),t),n]),disabled:p,onClick:s,type:x,role:"button"},a.default.createElement(i.Icon,{src:r,alt:l,size:k,inverted:_}))}},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(33);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(3),d=o(n(34));t.default=function(e){var t,n=e.as,o=e.className,c=e.src,f=e.alt,s=e.inverted,v=void 0!==s&&s,p=e.noShadow,m=void 0!==p&&p,_=e.noBorder,y=void 0!==_&&_,h=e.transparent,b=void 0!==h&&h,O=e.rounded,g=void 0!==O&&O,P=e.offsetSides,j=void 0===P?[]:P,E=e.size,w=void 0===E?"medium":E,k=a(e,["as","className","src","alt","inverted","noShadow","noBorder","transparent","rounded","offsetSides","size"]);return void 0===n&&(n="a"),i.default.createElement(n,r({"data-testid":"icon-button-link",className:u.default([d.default.container,d.default[w],(t={},t[d.default.inverted]=v,t[d.default.rounded]=g,t[d.default.noShadow]=m,t[d.default.noBorder]=y,t[d.default.transparent]=b,t[d.default.topOffset]=g&&j.includes("top"),t[d.default.rightOffset]=g&&j.includes("right"),t[d.default.bottomOffset]=g&&j.includes("bottom"),t[d.default.leftOffset]=g&&j.includes("left"),t),o])},k),i.default.createElement(l.Icon,{src:c,alt:f,size:w,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(36);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});var u=o(n(0)),l=i(n(1)),d=i(n(37));t.default=function(e){var t=e.src,n=e.alt,r=e.srcWidth,a=e.srcHeight,o=e.children,i=e.layout,c=void 0===i?"contain":i;return o?u.createElement("div",{className:l.default([d.default.container,d.default.hasOverlay])},u.createElement("img",{className:l.default([d.default.image,d.default[c]]),crossOrigin:"anonymous","data-testid":"image",alt:n,src:t,width:r,height:a}),o&&u.createElement("div",{className:d.default.overlay},o)):u.createElement("img",{className:l.default([d.default.image,d.default[c]]),crossOrigin:"anonymous","data-testid":"image",alt:n,src:t,width:r,height:a})}},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"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(39);Object.defineProperty(t,"ListView",{enumerable:!0,get:function(){return r.default}});var a=n(41);Object.defineProperty(t,"ListViewItem",{enumerable:!0,get:function(){return a.default}});var o=n(42);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(40));t.default=function(e){var t=e.children,n=e.className,r=e.header;return a.default.createElement("div",{className:o.default([i.default.container,n])},r&&a.default.createElement("h3",{className:i.default.header},r),a.default.createElement("ul",{className:i.default.list},t))}},function(e,t,n){e.exports={container:"CPHNd8osKjLvQDEQUErux",header:"_1e7hHSVo59e8yQnhc9B6Id",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(6),u=r(n(5));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,v=void 0!==s&&s,p=e.size,m=void 0===p?"medium":p,_=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:v,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(4),d=n(5),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(44);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(46);Object.defineProperty(t,"Menu",{enumerable:!0,get:function(){return r.default}});var a=n(48);Object.defineProperty(t,"MenuContainer",{enumerable:!0,get:function(){return a.default}});var o=n(50);Object.defineProperty(t,"MenuItem",{enumerable:!0,get:function(){return o.default}});var i=n(52);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(47));t.default=function(e){var t,n=e.children,r=e.className,u=e.isOpen,l=void 0===u||u,d=e.placement,c=void 0===d?{horizontal:"left",vertical:"bottom"}:d,f=e.header;return a.default.createElement("div",{className:o.default([i.default.menu,i.default[c.horizontal],i.default[c.vertical],(t={},t[i.default.open]=l,t),r])},f&&l&&a.default.createElement("h3",{className:i.default.menuHeader},f),a.default.createElement("ul",null,l&&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(49));t.default=u.forwardRef((function(e){var t=e.children,n=e.className,r=e.ref;return u.default.createElement("div",{ref:r,className:l.default([d.default.menuContainer,n])},t)}))},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(51));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(53));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(55);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(56));t.default=function(e){var t,n=e.children,r=e.transparent,u=void 0!==r&&r,l=e.isFixed,d=void 0!==l&&l,c=e.onClick,f=void 0===c?function(){}:c;return a.default.createElement("div",{"data-testid":"overlay",className:o.default([i.default.overlay,(t={},t[i.default.transparent]=u,t[i.default.fixed]=d,t)]),onClick:f},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(58);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=i(n(59));t.default=function(e){var t=e.label,n=e.onChange,r=e.placeholder,a=e.value,o=e.name,i=e.inputRef,c=e.size,f=void 0===c?"medium":c,s=e.autoFocus,v=void 0!==s&&s,p=e.type,m=void 0===p?"text":p,_=u.useCallback((function(e){return n(e.target.value)}),[n]);return u.default.createElement("label",{className:d.default.textLabel},t,u.default.createElement("input",{"data-testid":"input",ref:i,className:l.default([d.default.textInput,d.default[f]]),onChange:i?void 0:_,placeholder:r,name:o,type:m,value:a,autoFocus:v}))}},function(e,t,n){e.exports={textInput:"_2wfqOzWBoAn_K7goqvjXJe",small:"_1a4QOVJB0zW3Urf_5hqNjj",medium:"_3UJoe8nlpzhVTmC09TVso-",large:"_3DQ52Qd_1K4_VxxVv728SX",textLabel:"_31oAAOE_dvGoAz9qJmo8EG"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(61);Object.defineProperty(t,"Toast",{enumerable:!0,get:function(){return r.default}});var a=n(63);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(62));t.default=function(e){var t=e.children,n=e.image,r=e.buttons,u=e.onClick,l=void 0===u?function(){}:u;return a.default.createElement("div",{className:o.default([i.default.toast]),onClick:l,"data-testid":"toast"},n&&a.default.createElement("img",{"data-testid":"toast-image",className:i.default.toastImage,src:n.src,alt:n.alt}),a.default.createElement("div",{className:i.default.toastContent},t),a.default.createElement("div",{className:i.default.toastButtons},r))}},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(64));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(66);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(67));t.default=function(e){var t=e.src,n=e.type,r=e.children,u=e.muted,l=void 0===u||u,d=e.loop,c=void 0===d||d,f=e.autoPlay,s=void 0===f||f,v=e.layout,p=void 0===v?"contain":v;return r?a.default.createElement("div",{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[p]]),muted:l,loop:c,autoPlay:s,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[p]]),muted:l,loop:c,autoPlay:s,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(69);Object.defineProperty(t,"useToggle",{enumerable:!0,get:function(){return r.default}});var a=n(70);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("boolean"==typeof e&&e),n=t[0],a=t[1],o=function(){return a((function(e){return!e}))};return o.on=function(){return a(!0)},o.off=function(){return a(!1)},[n,r.useCallback(o,[])]}},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 M})),n.d(t,"useIsHotkeyPressed",(function(){return x}));
2
+ /*!
3
+ * hotkeys-js v3.8.1
4
+ * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies.
5
+ *
6
+ * Copyright (c) 2020 kenny wong <wowohoo@qq.com>
7
+ * http://jaywcjlove.github.io/hotkeys
8
+ *
9
+ * Licensed under the MIT license.
10
+ */
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 v=[],p="all",m=[],_=function(e){return u[e.toLowerCase()]||l[e.toLowerCase()]||e.toUpperCase().charCodeAt(0)};function y(e){p=e||"all"}function h(){return p||"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===v.indexOf(n)&&229!==n&&v.push(n),["ctrlKey","altKey","shiftKey","metaKey"].forEach((function(t){var n=d[t];e[t]&&-1===v.indexOf(n)?v.push(n):!e[t]&&v.indexOf(n)>-1?v.splice(v.indexOf(n),1):"metaKey"===t&&e[t]&&3===v.length&&(e.ctrlKey||e.shiftKey||e.altKey||(v=v.slice(v.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===v.indexOf(17)&&v.push(17),-1===v.indexOf(18)&&v.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],p=s.splitKey,m=s.key.split(p),y=[],b=0;b<m.length;b++)y.push(_(m[b]));y.sort().join("")===v.sort().join("")&&O(e,s,o)}}}function P(e,t,n){v=[];var r=i(e),u=[],d="all",s=document,p=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);p<r.length;p++)u=[],(e=r[p].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[p],method:n,key:r[p],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(){v=[]})),a(s,"keyup",(function(e){g(e),function(e){var t=e.keyCode||e.which||e.charCode,n=v.indexOf(t);if(n>=0&&v.splice(n,1),e.key&&"meta"===e.key.toLowerCase()&&v.splice(0,v.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 v.slice(0)},isPressed:function(e){return"string"==typeof e&&(e=_(e)),-1!==v.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 x(){return k.isPressed}function M(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xhc3NjYXQvc3JjL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb24vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzcz85YTRlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclN3YXRjaC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5tb2R1bGUuY3NzP2NkNDYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQnV0dG9uTGluay9CdXR0b25MaW5rLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9CdXR0b25MaW5rL0J1dHRvbkxpbmsubW9kdWxlLmNzcz8wODQxIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL0NvbG9yUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db2xvclN3YXRjaC9Db2xvclN3YXRjaC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvQ29sb3JTd2F0Y2gvQ29sb3JTd2F0Y2gubW9kdWxlLmNzcz8yM2ViIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0NvbG9yUGlja2VyL0NvbG9yUGlja2VyLm1vZHVsZS5jc3M/ZTE4OCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01vZGFsL01vZGFsLm1vZHVsZS5jc3M/MGVkZiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5tb2R1bGUuY3NzPzI3YjMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvRmxvYXRpbmdQYW5lbC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9GbG9hdGluZ1BhbmVsL0Zsb2F0aW5nUGFuZWwudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0Zsb2F0aW5nUGFuZWwvRmxvYXRpbmdQYW5lbC5tb2R1bGUuY3NzPzdhYmYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbi9JY29uLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uL0ljb24ubW9kdWxlLmNzcz85YjkzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b24vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSWNvbkJ1dHRvbi9JY29uQnV0dG9uLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uL0ljb25CdXR0b24ubW9kdWxlLmNzcz9kMjhkIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b25MaW5rL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b25MaW5rL0ljb25CdXR0b25MaW5rLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9JY29uQnV0dG9uTGluay9JY29uQnV0dG9uTGluay5tb2R1bGUuY3NzP2NjMzciLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSW1hZ2UvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSW1hZ2UvSW1hZ2UudHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0ltYWdlL0ltYWdlLm1vZHVsZS5jc3M/OTVhNyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9MaXN0Vmlldy9MaXN0Vmlldy50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXcubW9kdWxlLmNzcz80NjRlIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0xpc3RWaWV3L0xpc3RWaWV3SXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTGlzdFZpZXcvTGlzdFZpZXdMaW5rSXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnUubW9kdWxlLmNzcz8zNzA5Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL01lbnUvTWVudUNvbnRhaW5lci50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51Q29udGFpbmVyLm1vZHVsZS5jc3M/OTZkMiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVJdGVtLm1vZHVsZS5jc3M/NTA0OSIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9NZW51L01lbnVMaW5rSXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvTWVudS9NZW51TGlua0l0ZW0ubW9kdWxlLmNzcz8wNDI3Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL092ZXJsYXkvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvT3ZlcmxheS9PdmVybGF5LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9PdmVybGF5L092ZXJsYXkubW9kdWxlLmNzcz8yMWM1Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RleHRJbnB1dC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9UZXh0SW5wdXQvVGV4dElucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9UZXh0SW5wdXQvVGV4dElucHV0Lm1vZHVsZS5jc3M/Y2QzNiIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2FzdC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2FzdC9Ub2FzdC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9hc3QvVG9hc3QubW9kdWxlLmNzcz9jZjYxIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvYXN0L1RvYXN0Q29udGFpbmVyLnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy9Ub2FzdC9Ub2FzdENvbnRhaW5lci5tb2R1bGUuY3NzPzlhMzYiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVmlkZW8vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVmlkZW8vVmlkZW8udHN4Iiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1ZpZGVvL1ZpZGVvLm1vZHVsZS5jc3M/ZTIyMyIsIndlYnBhY2s6Ly8vLi9zcmMvaG9va3MvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2hvb2tzL3VzZVRvZ2dsZS50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaG9va3MvdXNlT3V0c2lkZUNsaWNrLnRzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9ob3RrZXlzLWpzL2Rpc3QvaG90a2V5cy5lc20uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWhvdGtleXMtaG9vay9kaXN0LXdlYi9pbmRleC5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsInJlcXVpcmUiLCJpc0FycmF5IiwiQXJyYXkiLCJjYyIsIm9iaiIsIm91dCIsInRtcCIsImsiLCJsZW5ndGgiLCJkZWZhdWx0IiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJpbnZlcnRlZCIsInJvdW5kZWQiLCJub1NoYWRvdyIsIm5vUGFkZGluZyIsIm5vQm9yZGVyIiwidHJhbnNwYXJlbnQiLCJzdHJldGNoSG9yaXpvbnRhbGx5Iiwic3RyZXRjaFZlcnRpY2FsbHkiLCJvZmZzZXRTaWRlcyIsImFsaWduIiwic2l6ZSIsInR5cGUiLCJjb250YWluZXIiLCJsZWZ0T2Zmc2V0IiwiaW5jbHVkZXMiLCJyaWdodE9mZnNldCIsInJvbGUiLCJjb250ZW50IiwiQ29tcG9uZW50IiwicHJvcHMiLCJjb2xvcnMiLCJvblNlbGVjdCIsInNlbGVjdGVkQ29sb3IiLCJkaXJlY3Rpb24iLCJjb2xvclBpY2tlciIsIm1hcCIsImNvbG9yIiwiQ29sb3JTd2F0Y2giLCJpc1NlbGVjdGVkIiwiY29sb3JTd2F0Y2giLCJzZWxlY3RlZCIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiaGV4Q29kZSIsInNyT25seSIsImxhYmVsIiwiQ29uZmlybWF0aW9uTW9kYWwiLCJoZWFkZXIiLCJpc09wZW4iLCJidXR0b25zTGVmdCIsImJ1dHRvbnNSaWdodCIsIm9uQ2xvc2UiLCJNb2RhbCIsIm1vZGFsSGVhZGVyIiwibW9kYWxDb250ZW50IiwibW9kYWxCdXR0b25zQ29udGFpbmVyIiwibW9kYWxCdXR0b25zIiwiZGlzcGxheU5hbWUiLCJidXR0b24iLCJ1c2VIb3RrZXlzIiwiaGFuZGxlT3ZlcmxheUNsaWNrIiwidXNlQ2FsbGJhY2siLCJvdmVybGF5IiwibW9kYWwiLCJtb2RhbEJ1dHRvbiIsImxheW91dCIsInBsYWNlbWVudCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsInBhcmVudCIsImhvcml6b250YWxQbGFjZW1lbnQiLCJ2ZXJ0aWNhbFBsYWNlbWVudCIsImZpeGVkIiwic3JjIiwiYWx0IiwiaWNvbiIsImNyb3NzT3JpZ2luIiwidG9wT2Zmc2V0IiwiYm90dG9tT2Zmc2V0IiwiSWNvbiIsInNyY1dpZHRoIiwic3JjSGVpZ2h0IiwiaGFzT3ZlcmxheSIsImltYWdlIiwid2lkdGgiLCJoZWlnaHQiLCJsaXN0IiwiYWN0aXZlIiwibGlzdFZpZXdJdGVtIiwiQnV0dG9uIiwiTGlzdFZpZXdMaW5rSXRlbSIsImFzIiwiY2xhc3NjYXQiLCJzdHlsZXMiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJub2RlIiwiaXNSZXF1aXJlZCIsImVsZW1lbnRUeXBlIiwiYm9vbCIsIm9uZU9mIiwic3RyaW5nIiwiZnVuYyIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwiZ2V0U2hpbSIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJudW1iZXIiLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIm1lbnUiLCJvcGVuIiwibWVudUhlYWRlciIsImZvcndhcmRSZWYiLCJyZWYiLCJtZW51Q29udGFpbmVyIiwiaXNBY3RpdmUiLCJtZW51SXRlbSIsIm1lbnVMaW5rSXRlbSIsImlzRml4ZWQiLCJvbkNoYW5nZSIsInBsYWNlaG9sZGVyIiwiaW5wdXRSZWYiLCJhdXRvRm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJlIiwidGFyZ2V0IiwidGV4dExhYmVsIiwidGV4dElucHV0IiwidW5kZWZpbmVkIiwiYnV0dG9ucyIsInRvYXN0IiwidG9hc3RJbWFnZSIsInRvYXN0Q29udGVudCIsInRvYXN0QnV0dG9ucyIsInRvYXN0Q29udGFpbmVyIiwibXV0ZWQiLCJsb29wIiwiYXV0b1BsYXkiLCJ2aWRlbyIsInBsYXlzSW5saW5lIiwiaW5pdGlhbFN0YXRlIiwidXNlU3RhdGUiLCJzZXRCb29sIiwidG9nZ2xlIiwicHJldkJvb2wiLCJvbiIsIm9mZiIsImNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiaGFuZGxlQ2xpY2siLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpc2ZmIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidG9Mb3dlckNhc2UiLCJpbmRleE9mIiwiYWRkRXZlbnQiLCJtZXRob2QiLCJhdHRhY2hFdmVudCIsImNvbmNhdCIsIndpbmRvdyIsImdldE1vZHMiLCJtb2RpZmllciIsIm1vZHMiLCJzbGljZSIsImdldEtleXMiLCJrZXlzIiwicmVwbGFjZSIsInNwbGl0IiwiaW5kZXgiLCJsYXN0SW5kZXhPZiIsInNwbGljZSIsIl9rZXlNYXAiLCJiYWNrc3BhY2UiLCJ0YWIiLCJjbGVhciIsImVudGVyIiwicmV0dXJuIiwiZXNjIiwiZXNjYXBlIiwic3BhY2UiLCJsZWZ0IiwidXAiLCJyaWdodCIsImRvd24iLCJkZWwiLCJkZWxldGUiLCJpbnMiLCJpbnNlcnQiLCJob21lIiwiZW5kIiwicGFnZXVwIiwicGFnZWRvd24iLCJjYXBzbG9jayIsIiciLCJfbW9kaWZpZXIiLCJzaGlmdCIsIm9wdGlvbiIsImN0cmwiLCJjb250cm9sIiwiY21kIiwiY29tbWFuZCIsIm1vZGlmaWVyTWFwIiwiMTYiLCIxOCIsIjE3IiwiOTEiLCJzaGlmdEtleSIsImN0cmxLZXkiLCJhbHRLZXkiLCJtZXRhS2V5IiwiX21vZHMiLCJfaGFuZGxlcnMiLCJfZG93bktleXMiLCJfc2NvcGUiLCJlbGVtZW50SGFzQmluZEV2ZW50IiwiY29kZSIsIngiLCJ0b1VwcGVyQ2FzZSIsImNoYXJDb2RlQXQiLCJzZXRTY29wZSIsInNjb3BlIiwiZ2V0U2NvcGUiLCJlYWNoVW5iaW5kIiwiX3JlZiIsIl9yZWYkc3BsaXRLZXkiLCJzcGxpdEtleSIsImZvckVhY2giLCJvcmlnaW5LZXkiLCJ1bmJpbmRLZXlzIiwibGVuIiwibGFzdEtleSIsImtleUNvZGUiLCJyZWNvcmQiLCJhMSIsImEyIiwiYXJyMSIsImFycjIiLCJpc0luZGV4IiwiY29tcGFyZUFycmF5IiwiZXZlbnRIYW5kbGVyIiwiaGFuZGxlciIsIm1vZGlmaWVyc01hdGNoIiwieSIsInNob3J0Y3V0IiwicHJldmVudERlZmF1bHQiLCJyZXR1cm5WYWx1ZSIsInN0b3BQcm9wYWdhdGlvbiIsImNhbmNlbEJ1YmJsZSIsImRpc3BhdGNoIiwiYXN0ZXJpc2siLCJ3aGljaCIsImNoYXJDb2RlIiwiaG90a2V5cyIsImZpbHRlciIsInRoaXMiLCJwdXNoIiwia2V5TmFtZSIsImtleU51bSIsImdldE1vZGlmaWVyU3RhdGUiLCJrZXlkb3duIiwia2V5dXAiLCJfaSIsImtleVNob3J0Y3V0IiwiX2Rvd25LZXlzQ3VycmVudCIsImEiLCJzb3J0Iiwiam9pbiIsInRvU3RyaW5nIiwiaXNFbGVtZW50QmluZCIsImNsZWFyTW9kaWZpZXIiLCJfYXBpIiwiZGVsZXRlU2NvcGUiLCJuZXdTY29wZSIsImhhbmRsZXJzIiwiZ2V0UHJlc3NlZEtleUNvZGVzIiwiaXNQcmVzc2VkIiwic3JjRWxlbWVudCIsInRhZ05hbWUiLCJmbGFnIiwiaXNDb250ZW50RWRpdGFibGUiLCJyZWFkT25seSIsInVuYmluZCIsImtleXNJbmZvIiwiaW5mbyIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsIl9ob3RrZXlzIiwibm9Db25mbGljdCIsImRlZXAiLCJ1c2VJc0hvdGtleVByZXNzZWQiLCJvcHRpb25zIiwiZGVwcyIsImVuYWJsZU9uVGFncyIsIm1lbW9pc2VkQ2FsbGJhY2siLCJrZXlib2FyZEV2ZW50IiwiaG90a2V5c0V2ZW50IiwiYWN0aXZlRWxlbWVudCIsInRhcmdldFRhZ05hbWUiLCJCb29sZWFuIl0sIm1hcHBpbmdzIjoiNkRBQ0UsSUFBSUEsRUFBbUIsR0FHdkIsU0FBU0MsRUFBb0JDLEdBRzVCLEdBQUdGLEVBQWlCRSxHQUNuQixPQUFPRixFQUFpQkUsR0FBVUMsUUFH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QVdzSSxFQUFNekIsRUFBVXdKLEVBQVNDLEdBQ3JDRCxhQUFtQmxVLFFBQ25CbVUsRUFBT0QsRUFDUEEsT0FBVTNLLEdBRWQsTUFBTSxhQUFFNkssRUFBWSxPQUFFekMsR0FBV3VDLEdBQVcsR0FDdEMxTCxFQUFNLGlCQUFPLE1BQ2I2TCxFQUFtQixzQkFBWSxDQUFDQyxFQUFlQyxLQUM3QixPQUFoQi9MLEVBQUl1QyxTQUFvQkUsU0FBU3VKLGdCQUFrQmhNLEVBQUl1QyxXQUN2REwsRUFBUzRKLEVBQWVDLElBQ2pCLEdBR1pKLEVBQU8sQ0FBQzNMLEtBQVEyTCxHQUFRLENBQUMzTCxJQWM1QixPQWJBLG9CQUFVLEtBQ0YwTCxHQUFXQSxFQUFRRSxlQUNuQixFQUFRekMsT0FBUyxFQUFHdkksU0FBUThKLGlCQUV4QixNQUFNdUIsRUFBaUJyTCxHQUFVQSxFQUFPK0osU0FBYUQsR0FBY0EsRUFBV0MsUUFDOUUsT0FBT3VCLFFBQVFELEdBQWlCTCxHQUFnQkEsRUFBYTFTLFNBQVMrUyxNQUcxRTlDLElBQ0EsRUFBUUEsT0FBU0EsR0FDckIsRUFBUXhGLEVBQU0rSCxHQUFXLEdBQUlHLEdBQ3RCLElBQU0sRUFBUWQsT0FBT3BILEVBQU1rSSxJQUNuQyxDQUFDQSxFQUFrQkgsRUFBU0UsRUFBY3pDLEVBQVF4RixJQUM5QzNEIiwiZmlsZSI6ImJ1bmRsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA5KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsInZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjYyhvYmopIHtcbiAgdmFyIG91dCA9IFwiXCJcblxuICBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2Ygb2JqID09PSBcIm51bWJlclwiKSByZXR1cm4gb2JqIHx8IFwiXCJcblxuICBpZiAoaXNBcnJheShvYmopKVxuICAgIGZvciAodmFyIGsgPSAwLCB0bXA7IGsgPCBvYmoubGVuZ3RoOyBrKyspIHtcbiAgICAgIGlmICgodG1wID0gY2Mob2JqW2tdKSkgIT09IFwiXCIpIHtcbiAgICAgICAgb3V0ICs9IChvdXQgJiYgXCIgXCIpICsgdG1wXG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgayBpbiBvYmopIHtcbiAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykgJiYgb2JqW2tdKSBvdXQgKz0gKG91dCAmJiBcIiBcIikgKyBrXG4gICAgfVxuXG4gIHJldHVybiBvdXRcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvbiB9IGZyb20gXCIuL0ljb25cIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQnV0dG9uTGluayB9IGZyb20gXCIuL0J1dHRvbkxpbmtcIjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJsaXN0Vmlld0l0ZW1cIjpcIl8yTGdqcUFCd2pIdHBiR3prUVFrcWlRXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQnV0dG9uIH0gZnJvbSBcIi4vQnV0dG9uXCI7XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIENvbG9yU3dhdGNoIH0gZnJvbSBcIi4vQ29sb3JTd2F0Y2hcIjtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgTW9kYWwgfSBmcm9tIFwiLi9Nb2RhbFwiO1xuIiwiZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9CdXR0b25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvQnV0dG9uTGlua1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Db2xvclBpY2tlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Db2xvclN3YXRjaFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9Db25maXJtYXRpb25Nb2RhbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9GbG9hdGluZ1BhbmVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL0ljb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvSWNvbkJ1dHRvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9JY29uQnV0dG9uTGlua1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9JbWFnZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9MaXN0Vmlld1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9NZW51XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL01vZGFsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL092ZXJsYXlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dElucHV0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL1RvYXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL1ZpZGVvXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ob29rc1wiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0J1dHRvbi5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgQnV0dG9uUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBpbnZlcnRlZD86IGJvb2xlYW47XG4gIHJvdW5kZWQ/OiBib29sZWFuO1xuICBub1NoYWRvdz86IGJvb2xlYW47XG4gIG5vUGFkZGluZz86IGJvb2xlYW47XG4gIG5vQm9yZGVyPzogYm9vbGVhbjtcbiAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICBzdHJldGNoSG9yaXpvbnRhbGx5PzogYm9vbGVhbjtcbiAgc3RyZXRjaFZlcnRpY2FsbHk/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKGV2ZW50OiBSZWFjdC5TeW50aGV0aWNFdmVudCkgPT4gdm9pZDtcbiAgc2l6ZT86IFNpemUsXG4gIHR5cGU/OiBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIHwgXCJidXR0b25cIixcbiAgYWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCIsXG4gIG9mZnNldFNpZGVzPzogQXJyYXk8XCJsZWZ0XCIgfCBcInJpZ2h0XCI+LFxufVxuXG5mdW5jdGlvbiBCdXR0b24oe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvbkNsaWNrLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBpbnZlcnRlZCA9IGZhbHNlLFxuICByb3VuZGVkID0gZmFsc2UsXG4gIG5vU2hhZG93ID0gZmFsc2UsXG4gIG5vUGFkZGluZyA9IGZhbHNlLFxuICBub0JvcmRlciA9IGZhbHNlLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICBzdHJldGNoSG9yaXpvbnRhbGx5ID0gZmFsc2UsXG4gIHN0cmV0Y2hWZXJ0aWNhbGx5ID0gZmFsc2UsXG4gIG9mZnNldFNpZGVzID0gW10sXG4gIGFsaWduID0gXCJjZW50ZXJcIixcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIHR5cGUsXG59OiBCdXR0b25Qcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHN0eWxlc1thbGlnbl0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQsXG4gICAgICAgICAgW3N0eWxlcy5yb3VuZGVkXTogcm91bmRlZCxcbiAgICAgICAgICBbc3R5bGVzLm5vU2hhZG93XTogbm9TaGFkb3csXG4gICAgICAgICAgW3N0eWxlcy5ub1BhZGRpbmddOiBub1BhZGRpbmcsXG4gICAgICAgICAgW3N0eWxlcy5ub0JvcmRlcl06IG5vQm9yZGVyLFxuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLnN0cmV0Y2hIb3Jpem9udGFsbHldOiBzdHJldGNoSG9yaXpvbnRhbGx5LFxuICAgICAgICAgIFtzdHlsZXMuc3RyZXRjaFZlcnRpY2FsbHldOiBzdHJldGNoVmVydGljYWxseSxcbiAgICAgICAgICBbc3R5bGVzLmxlZnRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwibGVmdFwiKSxcbiAgICAgICAgICBbc3R5bGVzLnJpZ2h0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInJpZ2h0XCIpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICBdKX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICB0eXBlPXt0eXBlfVxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAge3R5cGVvZiBjaGlsZHJlbiAhPT0gXCJzdHJpbmdcIiAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5sZW5ndGggID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRlbnR9PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgICkgOiBjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiTTlfZWdFQzhtc3UxMzVvUEdWZElmXCIsXCJsZWZ0XCI6XCJSU1JiVGc4WWM0LXM4azZxVV92Q2dcIixcInNtYWxsXCI6XCJfMWJOUWhiWndMQThFckxtd2RRaXRKZVwiLFwibGFyZ2VcIjpcIl8yRHdMRkQtNGdEejlIRUFBaXdXSlBxXCIsXCJpbnZlcnRlZFwiOlwiXzMxQ2ZtVFVZcEVoMWhadmN0UTlsSzRcIixcInJvdW5kZWRcIjpcIl8yYnEzMXFLRDdCNnI2Q1RDT0wzZHJXXCIsXCJyaWdodE9mZnNldFwiOlwiXzJlVUNXUU1FVE9naVh1aWI3WGZUaFpcIixcImxlZnRPZmZzZXRcIjpcIkc4b19PTURVRnNFUTF5dFU3b1VZR1wiLFwibm9TaGFkb3dcIjpcIl8ydmtuaFVGQUlHbWpYczd0Z2tBQzdJXCIsXCJub0JvcmRlclwiOlwiXzJwMEdwZG1QS0lGQ1VlczU4NFlIZVZcIixcInRyYW5zcGFyZW50XCI6XCJfOHZNbFNSSF85SG9SR0poOFN3a2FcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIm5aOXJPWnd6R1hWSTNheVJnQTNRQ1wiLFwic3RyZXRjaFZlcnRpY2FsbHlcIjpcIl8xeThpZmI5NXNwVExXR0Ftc2J3MVIyXCIsXCJub1BhZGRpbmdcIjpcIl8zY080OUpFTE5LdEd5YUZ4UmxzaHlPXCIsXCJjb250ZW50XCI6XCJvOGQ3WW9UODN1bWVQUFNGekszMVlcIn07IiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgUmVhY3RUeXBlLCBBbmNob3JIVE1MQXR0cmlidXRlcyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0J1dHRvbkxpbmsubW9kdWxlLmNzc1wiO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG50eXBlIE9mZnNldFNpZGUgPSBcImxlZnRcIiB8IFwicmlnaHRcIjtcblxudHlwZSBCdXR0b25MaW5rUHJvcHMgPSB7XG4gIGFzPzogUmVhY3RUeXBlO1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGludmVydGVkPzogYm9vbGVhbjtcbiAgcm91bmRlZD86IGJvb2xlYW47XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgbm9TaGFkb3c/OiBib29sZWFuO1xuICBub1BhZGRpbmc/OiBib29sZWFuO1xuICBub0JvcmRlcj86IGJvb2xlYW47XG4gIHN0cmV0Y2hIb3Jpem9udGFsbHk/OiBib29sZWFuO1xuICBzdHJldGNoVmVydGljYWxseT86IGJvb2xlYW47XG4gIHNpemU/OiBTaXplO1xuICBvZmZzZXRTaWRlcz86IEFycmF5PE9mZnNldFNpZGU+O1xuICBhbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIjtcbn0gfCBhbnk7XG5cbmZ1bmN0aW9uIEJ1dHRvbkxpbmsoe1xuICBhczogQ29tcG9uZW50LFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBzaXplLFxuICBpbnZlcnRlZCA9IGZhbHNlLFxuICByb3VuZGVkID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIG5vU2hhZG93ID0gZmFsc2UsXG4gIG5vUGFkZGluZyA9IGZhbHNlLFxuICBub0JvcmRlciA9IGZhbHNlLFxuICBzdHJldGNoSG9yaXpvbnRhbGx5ID0gZmFsc2UsXG4gIHN0cmV0Y2hWZXJ0aWNhbGx5ID0gZmFsc2UsXG4gIG9mZnNldFNpZGVzID0gW10sXG4gIGFsaWduID0gXCJjZW50ZXJcIixcbiAgLi4ucHJvcHNcbn06IEJ1dHRvbkxpbmtQcm9wcykge1xuICBpZiAodHlwZW9mIENvbXBvbmVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIENvbXBvbmVudCA9IFwiYVwiO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcG9uZW50XG4gICAgICBkYXRhLXRlc3RpZD1cImJ1dHRvbi1saW5rXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHN0eWxlc1thbGlnbl0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQsXG4gICAgICAgICAgW3N0eWxlcy5yb3VuZGVkXTogcm91bmRlZCxcbiAgICAgICAgICBbc3R5bGVzLm5vU2hhZG93XTogbm9TaGFkb3csXG4gICAgICAgICAgW3N0eWxlcy5ub1BhZGRpbmddOiBub1BhZGRpbmcsXG4gICAgICAgICAgW3N0eWxlcy5ub0JvcmRlcl06IG5vQm9yZGVyLFxuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLnN0cmV0Y2hIb3Jpem9udGFsbHldOiBzdHJldGNoSG9yaXpvbnRhbGx5LFxuICAgICAgICAgIFtzdHlsZXMuc3RyZXRjaFZlcnRpY2FsbHldOiBzdHJldGNoVmVydGljYWxseSxcbiAgICAgICAgICBbc3R5bGVzLmxlZnRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwibGVmdFwiKSxcbiAgICAgICAgICBbc3R5bGVzLnJpZ2h0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInJpZ2h0XCIpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICBdKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7dHlwZW9mIGNoaWxkcmVuICE9PSBcInN0cmluZ1wiICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCAgPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY29udGVudH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgKSA6IChcbiAgICAgICAgY2hpbGRyZW5cbiAgICAgICl9XG4gICAgPC9Db21wb25lbnQ+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbkxpbms7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJfM2VWQmdta0c2aGpWb2ttNVh5NFVNUVwiLFwibGVmdFwiOlwiXzNGNmhNRVFrSmd5d1VrdDFmd21Uc3lcIixcInNtYWxsXCI6XCJfOEk5ZmhuemJNdkNybDVLUGo5ZjBcIixcIm1lZGl1bVwiOlwiY3NqNFBLUWdkUEJlRjdSZDVaLVdRXCIsXCJsYXJnZVwiOlwiXzNfU3dxbURXT0d2ODc3aUhBQ25KcENcIixcImludmVydGVkXCI6XCJfMXhPYTNDQlJIelBDUldOc2lKNjVhQ1wiLFwicm91bmRlZFwiOlwiXzNVR2xPSXR6S29rVmcwd0dIMGVJbFhcIixcInJpZ2h0T2Zmc2V0XCI6XCJfMTN0UHNwNmRmQTFUd2IxTU1IUmlHVFwiLFwibGVmdE9mZnNldFwiOlwiTkk1bjZiRVZSQ1FQeTZBT0FzUTFxXCIsXCJub1NoYWRvd1wiOlwiZ0lZOWl1dkMyVld4Y3Z3d0NtYUpKXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzNYZmxoM1ExQVpuVE9EMGN0cXVJNndcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIl8yRmJSREVHU183ZU1VY0owVmlPQlUwXCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwiXzFyUG0tdDVaV3dyUy1MOWw3ejY2amJcIixcIm5vUGFkZGluZ1wiOlwiXzNKOERlYUxxNWl3M0FwN3FLSmtQOUJcIixcIm5vQm9yZGVyXCI6XCJfM2NFUXMtS19tU2hGTkRnRFAzMldkNlwiLFwiY29udGVudFwiOlwiXzFWVHlmVHdWbG9BY1p3WUNaeXNsc0pcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBDb2xvclBpY2tlciB9IGZyb20gXCIuL0NvbG9yUGlja2VyXCI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IENvbG9yU3dhdGNoIH0gZnJvbSBcIi4uL0NvbG9yU3dhdGNoXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0NvbG9yUGlja2VyLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IENvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgQ29sb3JQaWNrZXJQcm9wcyA9IHtcbiAgZGlyZWN0aW9uPzogXCJob3Jpem9udGFsXCIgfCBcInZlcnRpY2FsXCI7XG4gIGNvbG9yczogQ29sb3JbXTtcbiAgb25TZWxlY3Q6IChjb2xvcjogQ29sb3IpID0+IHZvaWQ7XG4gIHNlbGVjdGVkQ29sb3I/OiBDb2xvcjtcbn1cblxuZnVuY3Rpb24gQ29sb3JQaWNrZXIoeyBjb2xvcnMsIG9uU2VsZWN0LCBzZWxlY3RlZENvbG9yLCBkaXJlY3Rpb24gPSBcInZlcnRpY2FsXCJ9OiBDb2xvclBpY2tlclByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMuY29sb3JQaWNrZXIsIHN0eWxlc1tkaXJlY3Rpb25dXSl9PlxuICAgICAge2NvbG9ycy5tYXAoKGNvbG9yOiBDb2xvcikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxDb2xvclN3YXRjaFxuICAgICAgICAgICAga2V5PXtjb2xvci5rZXl9XG4gICAgICAgICAgICBjb2xvcj17Y29sb3J9XG4gICAgICAgICAgICBpc1NlbGVjdGVkPXtjb2xvciA9PT0gc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2VsZWN0KGNvbG9yKX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yUGlja2VyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0NvbG9yU3dhdGNoLm1vZHVsZS5jc3NcIjtcbmltcG9ydCB7IENvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgQ29sb3JTd2F0Y2hQcm9wcyA9IHtcbiAgY29sb3I6IENvbG9yO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbiAgb25DbGljazogKCkgPT4gdm9pZDtcbn1cblxuZnVuY3Rpb24gQ29sb3JTd2F0Y2goeyBjb2xvciwgb25DbGljaywgaXNTZWxlY3RlZCA9IGZhbHNlIH06IENvbG9yU3dhdGNoUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmNvbG9yU3dhdGNoLFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5zZWxlY3RlZF06IGlzU2VsZWN0ZWQsXG4gICAgICAgIH0sXG4gICAgICBdKX1cbiAgICAgIGRhdGEtdGVzdGlkPVwiY29sb3Itc3dhdGNoXCJcbiAgICAgIGRpc2FibGVkPXtpc1NlbGVjdGVkfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogY29sb3IuaGV4Q29kZSB9fVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNyT25seX0+e2BTZWxlY3QgJHtjb2xvci5sYWJlbH0gY29sb3JgfTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sb3JTd2F0Y2g7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29sb3JTd2F0Y2hcIjpcIl8xM3NzMXhzTU5penZFZ1BfaHhFVjhCXCIsXCJzZWxlY3RlZFwiOlwiTDZmQXQ2UlpZel96M3dQYmpaRXhIXCIsXCJzck9ubHlcIjpcIl8zdko1bXhwemFZc0theGYtOHRCMzF4XCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb2xvclBpY2tlclwiOlwiXzMxRndIX25XcjcyazNwdWdBcEp1YjlcIixcImhvcml6b250YWxcIjpcIlFhLUJwdVRUMmt4cG1WX0FRZ0NqSFwiLFwidmVydGljYWxcIjpcIl8yeDRTQW5ib3B5Wm1reWNXTEMwRVhrXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQ29uZmlybWF0aW9uTW9kYWwgfSBmcm9tIFwiLi9Db25maXJtYXRpb25Nb2RhbFwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0RWxlbWVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcIi4uL01vZGFsXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0NvbmZpcm1hdGlvbk1vZGFsLm1vZHVsZS5jc3NcIjtcblxudHlwZSBDb25maXJtYXRpb25Nb2RhbFByb3BzID0ge1xuICBidXR0b25zTGVmdD86IFJlYWN0RWxlbWVudFtdLFxuICBidXR0b25zUmlnaHQ/OiBSZWFjdEVsZW1lbnRbXSxcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZSxcbiAgaGVhZGVyOiBzdHJpbmcsXG4gIGlzT3BlbjogYm9vbGVhbixcbiAgbm9QYWRkaW5nPzogYm9vbGVhbixcbiAgb25DbG9zZT86ICgpID0+IHZvaWQsXG59XG5cbmZ1bmN0aW9uIENvbmZpcm1hdGlvbk1vZGFsKHtcbiAgY2hpbGRyZW4sXG4gIGhlYWRlcixcbiAgaXNPcGVuLFxuICBidXR0b25zTGVmdCA9IFtdLFxuICBidXR0b25zUmlnaHQgPSBbXSxcbiAgb25DbG9zZSA9ICgpID0+IHt9LFxuICBub1BhZGRpbmcgPSBmYWxzZSxcbn06IENvbmZpcm1hdGlvbk1vZGFsUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8TW9kYWwgaXNPcGVuPXtpc09wZW59IG9uQ2xvc2U9e29uQ2xvc2V9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250YWluZXJ9PlxuICAgICAgICA8aDEgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxIZWFkZXJ9PntoZWFkZXJ9PC9oMT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICAgICAgc3R5bGVzLm1vZGFsQ29udGVudCxcbiAgICAgICAgICAgIHsgW3N0eWxlcy5ub1BhZGRpbmddOiBub1BhZGRpbmcgfSxcbiAgICAgICAgICBdKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1vZGFsQnV0dG9uc30+e2J1dHRvbnNMZWZ0fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubW9kYWxCdXR0b25zfT57YnV0dG9uc1JpZ2h0fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvTW9kYWw+XG4gICk7XG59XG5cbkNvbmZpcm1hdGlvbk1vZGFsLmRpc3BsYXlOYW1lID0gXCJDb25maXJtYXRpb25Nb2RhbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBDb25maXJtYXRpb25Nb2RhbDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VIb3RrZXlzIH0gZnJvbSBcInJlYWN0LWhvdGtleXMtaG9va1wiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01vZGFsLm1vZHVsZS5jc3NcIjtcblxudHlwZSBNb2RhbFByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlLFxuICBpc09wZW46IGJvb2xlYW4sXG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLFxuICBidXR0b24/OiBSZWFjdE5vZGUsXG59XG5cbmZ1bmN0aW9uIE1vZGFsKHtcbiAgY2hpbGRyZW4sXG4gIGlzT3BlbixcbiAgYnV0dG9uLFxuICBvbkNsb3NlID0gKCkgPT4ge31cbiB9OiBNb2RhbFByb3BzKSB7XG4gIHVzZUhvdGtleXMoXCJFc2NhcGVcIiwgb25DbG9zZSk7XG5cbiAgY29uc3QgaGFuZGxlT3ZlcmxheUNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9uQ2xvc2UoKTtcbiAgfSwgW29uQ2xvc2VdKTtcblxuICByZXR1cm4gKFxuICAgIGlzT3BlbiAmJiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3ZlcmxheX1cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1vZGFsLW92ZXJsYXlcIlxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU92ZXJsYXlDbGlja31cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbH0gZGF0YS10ZXN0aWQ9XCJtb2RhbFwiPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtidXR0b24gJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5tb2RhbEJ1dHRvbn0+e2J1dHRvbn08L2Rpdj59XG4gICAgICA8Lz5cbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGFsO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm92ZXJsYXlcIjpcIl8xeXhDYlFKcVN0VXZ5dHZLRWVOQzNuXCIsXCJtb2RhbFwiOlwiRDhTakJ4M2lrejYzNll1Ym5IWUFZXCIsXCJtb2RhbEJ1dHRvblwiOlwibzhWUlZ4TXJzMXhYYXZBRHl4akxHXCJ9OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcImtrZ0hvQlFoRlBzS2pfeDFaRmRSSFwiLFwibW9kYWxIZWFkZXJcIjpcIl8xV3V2SEQtR2RYTHJ0cXdhMDRXMXF5XCIsXCJtb2RhbENvbnRlbnRcIjpcIl8yN2VVeVNRcXZxNXFsb05DbElqSVNUXCIsXCJub1BhZGRpbmdcIjpcIl8yZ3RCWEw5UEZTcEhzVzBBOXhkNTVTXCIsXCJtb2RhbEJ1dHRvbnNDb250YWluZXJcIjpcIl81Z0lweUYzWDV0aFBRQW5zQUM0ejlcIixcIm1vZGFsQnV0dG9uc1wiOlwic3dzb0NpaTF3NHhObDdpb0RWa081XCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgRmxvYXRpbmdQYW5lbCB9IGZyb20gXCIuL0Zsb2F0aW5nUGFuZWxcIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9GbG9hdGluZ1BhbmVsLm1vZHVsZS5jc3NcIjtcblxudHlwZSBQbGFjZW1lbnQgPSB7XG4gIGhvcml6b250YWw6IFwicmlnaHRcIiB8IFwicmlnaHRFZGdlXCIgfCBcInJpZ2h0T25FZGdlXCIgfCBcImxlZnRcIiB8IFwibGVmdEVkZ2VcIiB8IFwibGVmdE9uRWRnZVwiIHwgXCJsZWZ0T25FZGdlXCIgfCBcImNlbnRlclwiO1xuICB2ZXJ0aWNhbDogXCJ0b3BcIiB8IFwidG9wRWRnZVwiIHwgXCJib3R0b21cIiB8IFwiYm90dG9tRWRnZVwiIHwgXCJib3R0b21PbkVkZ2VcIiB8IFwiY2VudGVyXCI7XG4gIHBhcmVudDogXCJ2aWV3cG9ydFwiIHwgXCJjb250YWluZXJcIjtcbn07XG5cbnR5cGUgRmxvYXRpbmdQYW5lbFByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBsYXlvdXQ/OiBcImNvbHVtblwiIHwgXCJyb3dcIjtcbiAgcGxhY2VtZW50PzogUGxhY2VtZW50O1xufTtcblxuZnVuY3Rpb24gRmxvYXRpbmdQYW5lbCh7XG4gIGNoaWxkcmVuLFxuICBsYXlvdXQgPSBcImNvbHVtblwiLFxuICBwbGFjZW1lbnQgPSB7IGhvcml6b250YWw6IFwiY2VudGVyXCIsIHZlcnRpY2FsOiBcImJvdHRvbVwiLCBwYXJlbnQ6IFwidmlld3BvcnRcIiB9XG59OiBGbG9hdGluZ1BhbmVsUHJvcHMpIHtcbiAgY29uc3QgaG9yaXpvbnRhbFBsYWNlbWVudCA9XG4gICAgcGxhY2VtZW50Lmhvcml6b250YWwgPT09IFwiY2VudGVyXCJcbiAgICAgID8gXCJob3Jpem9udGFsQ2VudGVyXCJcbiAgICAgIDogcGxhY2VtZW50Lmhvcml6b250YWw7XG5cbiAgY29uc3QgdmVydGljYWxQbGFjZW1lbnQgPVxuICAgIHBsYWNlbWVudC52ZXJ0aWNhbCA9PT0gXCJjZW50ZXJcIiA/IFwidmVydGljYWxDZW50ZXJcIiA6IHBsYWNlbWVudC52ZXJ0aWNhbDtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtdGVzdGlkPVwiZmxvYXRpbmctcGFuZWxcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tob3Jpem9udGFsUGxhY2VtZW50XSxcbiAgICAgICAgc3R5bGVzW3ZlcnRpY2FsUGxhY2VtZW50XSxcbiAgICAgICAgc3R5bGVzW2xheW91dF0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmZpeGVkXTogcGxhY2VtZW50LnBhcmVudCAhPT0gXCJjb250YWluZXJcIixcbiAgICAgICAgfSxcbiAgICAgIF0pfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRmxvYXRpbmdQYW5lbDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcImE2TkhPMkNWVkNmaW5peWUyWExOLVwiLFwicm93XCI6XCJfM1JTZ0I3NnJFQm5pUGMyWWNyOFpidlwiLFwiY29sdW1uXCI6XCJfMUprWDE1aWdjbG5ibTVzUlNjV1ZEWVwiLFwiZml4ZWRcIjpcIk1NUTF5akVhZldrWUZWREhNcFRiSVwiLFwicGxhaW5cIjpcIl8zbTJNX05hcmM1eHdMYXk4SEpsamtjXCIsXCJ0cmFuc3BhcmVudFwiOlwiXzFyZmE0OXpoWnhOaWZ6NjRPcWJfNlBcIixcInRvcFwiOlwiX2tVYWxuRGVFZnZ6cUFqaTBBTURvXCIsXCJ0b3BFZGdlXCI6XCJXOEpBSXdMak84SlFHYnZpWnBQUXdcIixcInRvcE9uRWRnZVwiOlwiXzNvcEo3RWI2dGozOTR1VjhhNTdpeHpcIixcInJpZ2h0XCI6XCJfMy12YndqcDBhUGNMRVYxU3gwSUNnUFwiLFwicmlnaHRFZGdlXCI6XCJfM1hORnk1Wm9NQ29ZQklhYmVHTjRCUVwiLFwicmlnaHRPbkVkZ2VcIjpcIl8xMmMzQ3pVTVFFOEFHM0FMOEhpa2kyXCIsXCJib3R0b21cIjpcIl8zZ2VCRU5INW9FcnFHZHQtUXlIblBoXCIsXCJib3R0b21FZGdlXCI6XCJfM19zYU00R3MzMm5SYklISHhJRWJGNlwiLFwiYm90dG9tT25FZGdlXCI6XCJfMlBMRTRkbUdobmNnay1sRW5vVTRrdlwiLFwibGVmdFwiOlwiXzFpU0JueVpnUGVGVVdvTTRpNmRTcFVcIixcImxlZnRFZGdlXCI6XCJfMWZYMTlxSU9TaG4ybzV1dXNSelRnc1wiLFwibGVmdE9uRWRnZVwiOlwiS0JIRG9ja3VIVEVPS01HT3phZFhpXCIsXCJob3Jpem9udGFsQ2VudGVyXCI6XCJfMzF0NnRIUko1cy01RGNETEZUS2gxbVwiLFwidmVydGljYWxDZW50ZXJcIjpcIl8yaHE3ZmtEWEh4cnh6MnQ3TExnNF85XCJ9OyIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vSWNvbi5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgSWNvblByb3BzID0ge1xuICBzcmM6IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xuICBzaXplPzogXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIjtcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xufVxuZnVuY3Rpb24gSWNvbih7IHNyYywgYWx0LCBzaXplID0gXCJtZWRpdW1cIiwgaW52ZXJ0ZWQgPSBmYWxzZSB9OiBJY29uUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aW1nXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLmljb24sXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAgeyBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQgfSxcbiAgICAgIF0pfVxuICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJpY29uXCJcbiAgICAgIGFsdD17YWx0fVxuICAgICAgc3JjPXtzcmN9XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJpY29uXCI6XCJ1aDh6a21RcDV5Yms1V0pTbGE2OURcIixcInNtYWxsXCI6XCJfOURJQ3RxbVFTbkxQam0xWEk3WVZzXCIsXCJtZWRpdW1cIjpcInNKcHhmWWdpVHo3aWs2Sk9HdTF3aVwiLFwibGFyZ2VcIjpcIl8ycmd1Y0FIOEJubGktY21qejlpMkMyXCIsXCJpbnZlcnRlZFwiOlwiSS1lSTVxOHJkMmJTcDlCLUZoVXphXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvbkJ1dHRvbiB9IGZyb20gXCIuL0ljb25CdXR0b25cIjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ljb25CdXR0b24ubW9kdWxlLmNzc1wiO1xuXG50eXBlIEljb25CdXR0b25Qcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzcmM6IHN0cmluZztcbiAgYWx0OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICBub1NoYWRvdz86IGJvb2xlYW47XG4gIG5vQm9yZGVyPzogYm9vbGVhbjtcbiAgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICByb3VuZGVkPzogYm9vbGVhbjtcbiAgb25DbGljaz86ICgpID0+IHZvaWQsXG4gIHNpemU/OiBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiO1xuICB0eXBlPzogXCJzdWJtaXRcIiB8IFwicmVzZXRcIiB8IFwiYnV0dG9uXCI7XG4gIG9mZnNldFNpZGVzPzogQXJyYXk8XCJ0b3BcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCIgfCBcImxlZnRcIj47XG59XG5cbmZ1bmN0aW9uIEljb25CdXR0b24oe1xuICBjbGFzc05hbWUsXG4gIHNyYyxcbiAgYWx0LFxuICBvZmZzZXRTaWRlcyA9IFtdLFxuICBvbkNsaWNrID0gKCkgPT4ge30sXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIGludmVydGVkID0gZmFsc2UsXG4gIG5vU2hhZG93ID0gZmFsc2UsXG4gIG5vQm9yZGVyID0gZmFsc2UsXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIHJvdW5kZWQgPSBmYWxzZSxcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIHR5cGUgPSBcImJ1dHRvblwiLFxufTogSWNvbkJ1dHRvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5jb250YWluZXIsXG4gICAgICAgIHN0eWxlc1tzaXplXSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuaW52ZXJ0ZWRdOiBpbnZlcnRlZCxcbiAgICAgICAgICBbc3R5bGVzLnJvdW5kZWRdOiByb3VuZGVkLFxuICAgICAgICAgIFtzdHlsZXMubm9TaGFkb3ddOiBub1NoYWRvdyxcbiAgICAgICAgICBbc3R5bGVzLm5vQm9yZGVyXTogbm9Cb3JkZXIsXG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMudG9wT2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInRvcFwiKSxcbiAgICAgICAgICBbc3R5bGVzLnJpZ2h0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcInJpZ2h0XCIpLFxuICAgICAgICAgIFtzdHlsZXMuYm90dG9tT2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImJvdHRvbVwiKSxcbiAgICAgICAgICBbc3R5bGVzLmxlZnRPZmZzZXRdOiByb3VuZGVkICYmIG9mZnNldFNpZGVzLmluY2x1ZGVzKFwibGVmdFwiKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxJY29uIHNyYz17c3JjfSBhbHQ9e2FsdH0gc2l6ZT17c2l6ZX0gaW52ZXJ0ZWQ9e2ludmVydGVkfSAgLz5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSWNvbkJ1dHRvbjtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8yTVB1SjNBcHZyQXZyZXdqU1dHQUEyXCIsXCJzbWFsbFwiOlwibE9rb2FuN2RicC1nb0R0SlZ1SzdCXCIsXCJtZWRpdW1cIjpcIl8zYTljV3RzX1k3eDNwYWprOHVtTjN6XCIsXCJsYXJnZVwiOlwiXzJhRzZ6WHFURUtWY3ZCYWFuaUNOQnlcIixcInJvdW5kZWRcIjpcIl8ySlgwMzRxVVRDb1RkV0MycHBBNDg3XCIsXCJ0b3BPZmZzZXRcIjpcIl8xd3BDLVdYZ0wwNlFLeHRQek93TlJLXCIsXCJyaWdodE9mZnNldFwiOlwiTEl6clFDN3BvUVQ5alVSQnFNREtoXCIsXCJib3R0b21PZmZzZXRcIjpcIl8yaV93NVVMa1VLN0xWdzVoRU85N0V3XCIsXCJsZWZ0T2Zmc2V0XCI6XCJfMzhlS2xUUVRWMVlsbkVlMUdtTnRRa1wiLFwiaW52ZXJ0ZWRcIjpcIl8yTmtaNTBya0EzZVpDeXNZOUZBcC1lXCIsXCJub1NoYWRvd1wiOlwiXzNVeTVIWmR2a1dmN2JpbFQwd3h3VmVcIixcIm5vQm9yZGVyXCI6XCJfMkY0SHk5bHE1T0NyRXBQWlBoNXhBSlwiLFwidHJhbnNwYXJlbnRcIjpcIl8ydTdxVE1lRTlENXJ0Y3NFY1NvQVkzXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvbkJ1dHRvbkxpbmsgfSBmcm9tIFwiLi9JY29uQnV0dG9uTGlua1wiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0VHlwZSwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vSWNvblwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9JY29uQnV0dG9uTGluay5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBTaXplIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgT2Zmc2V0U2lkZSA9IFwidG9wXCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCI7XG5cbnR5cGUgSWNvbkJ1dHRvbkxpbmtQcm9wcyA9IHtcbiAgYXM/OiBSZWFjdFR5cGU7XG4gIHNyYzogc3RyaW5nO1xuICBhbHQ6IHN0cmluZztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpbnZlcnRlZD86IGJvb2xlYW47XG4gIHJvdW5kZWQ/OiBib29sZWFuO1xuICB0cmFuc3BhcmVudD86IGJvb2xlYW47XG4gIG5vU2hhZG93PzogYm9vbGVhbjtcbiAgbm9Cb3JkZXI/OiBib29sZWFuO1xuICBzaXplPzogU2l6ZTtcbiAgb2Zmc2V0U2lkZXM/OiBBcnJheTxPZmZzZXRTaWRlPjtcbn0gfCBhbnk7XG5cbmZ1bmN0aW9uIEljb25CdXR0b25MaW5rKHtcbiAgYXM6IENvbXBvbmVudCxcbiAgY2xhc3NOYW1lLFxuICBzcmMsXG4gIGFsdCxcbiAgaW52ZXJ0ZWQgPSBmYWxzZSxcbiAgbm9TaGFkb3cgPSBmYWxzZSxcbiAgbm9Cb3JkZXIgPSBmYWxzZSxcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZSxcbiAgcm91bmRlZCA9IGZhbHNlLFxuICBvZmZzZXRTaWRlcyA9IFtdLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgLi4ucHJvcHNcbn06IEljb25CdXR0b25MaW5rUHJvcHMpIHtcbiAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBDb21wb25lbnQgPSBcImFcIjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbXBvbmVudFxuICAgICAgZGF0YS10ZXN0aWQ9XCJpY29uLWJ1dHRvbi1saW5rXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW1xuICAgICAgICBzdHlsZXMuY29udGFpbmVyLFxuICAgICAgICBzdHlsZXNbc2l6ZV0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLmludmVydGVkXTogaW52ZXJ0ZWQsXG4gICAgICAgICAgW3N0eWxlcy5yb3VuZGVkXTogcm91bmRlZCxcbiAgICAgICAgICBbc3R5bGVzLm5vU2hhZG93XTogbm9TaGFkb3csXG4gICAgICAgICAgW3N0eWxlcy5ub0JvcmRlcl06IG5vQm9yZGVyLFxuICAgICAgICAgIFtzdHlsZXMudHJhbnNwYXJlbnRdOiB0cmFuc3BhcmVudCxcbiAgICAgICAgICBbc3R5bGVzLnRvcE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJ0b3BcIiksXG4gICAgICAgICAgW3N0eWxlcy5yaWdodE9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJyaWdodFwiKSxcbiAgICAgICAgICBbc3R5bGVzLmJvdHRvbU9mZnNldF06IHJvdW5kZWQgJiYgb2Zmc2V0U2lkZXMuaW5jbHVkZXMoXCJib3R0b21cIiksXG4gICAgICAgICAgW3N0eWxlcy5sZWZ0T2Zmc2V0XTogcm91bmRlZCAmJiBvZmZzZXRTaWRlcy5pbmNsdWRlcyhcImxlZnRcIiksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgIF0pfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxJY29uIHNyYz17c3JjfSBhbHQ9e2FsdH0gc2l6ZT17c2l6ZX0gaW52ZXJ0ZWQ9e2ludmVydGVkfSAvPlxuICAgIDwvQ29tcG9uZW50PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBJY29uQnV0dG9uTGluaztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8xdWlmbUtOUER6ZHU1WURuaGd3UFFLXCIsXCJzbWFsbFwiOlwicGZIY1lhZXctSHJIdFROdVI0djdoXCIsXCJsYXJnZVwiOlwiXzI2WjlGSC1DTlBxZjU1WlJQMXZuYWJcIixcInJvdW5kZWRcIjpcIl8ycTdXdlJPaE5tM2dzUklSYVFRZWFVXCIsXCJ0b3BPZmZzZXRcIjpcIndaeV92dWxaa01iV1NYMGFrY1pIQVwiLFwicmlnaHRPZmZzZXRcIjpcIl8yamhocG02MF95UEVmeFEtd2F6ai01XCIsXCJib3R0b21PZmZzZXRcIjpcIkRubnJHN1pYbVRJaG1XVWNzOTltMVwiLFwibGVmdE9mZnNldFwiOlwiXzFZZENnN1Q2WGpobXh3Y2pMTlNFYi1cIixcImludmVydGVkXCI6XCJIVjBSLWxxd215ZXFzUzFaOHBvWlNcIixcIm5vU2hhZG93XCI6XCJfMUxQcHQ3MEpqaW02U2ZaZTM1RzJrYlwiLFwibm9Cb3JkZXJcIjpcIlJrelNyR2l4TTI4Sk1hdDZJQjVMclwiLFwidHJhbnNwYXJlbnRcIjpcIl8xS2RYZlkzUGs2dEVOWUg4MXRXcnBzXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgSW1hZ2UgfSBmcm9tIFwiLi9JbWFnZVwiO1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0ltYWdlLm1vZHVsZS5jc3NcIjtcblxudHlwZSBJbWFnZVByb3BzID0ge1xuICBzcmM6IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xuICBzcmNXaWR0aD86IG51bWJlcjtcbiAgc3JjSGVpZ2h0PzogbnVtYmVyO1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgbGF5b3V0PzogXCJjb3ZlclwiIHwgXCJjb250YWluXCIgfCBcInN0cmV0Y2hIb3Jpem9udGFsbHlcIiB8IFwic3RyZXRjaFZlcnRpY2FsbHlcIjtcbn07XG5cbmZ1bmN0aW9uIEltYWdlKHsgc3JjLCBhbHQsIHNyY1dpZHRoLCBzcmNIZWlnaHQsIGNoaWxkcmVuLCBsYXlvdXQgPSBcImNvbnRhaW5cIiB9OiBJbWFnZVByb3BzKSB7XG4gIHJldHVybiBjaGlsZHJlbiA/IChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb250YWluZXIsIHN0eWxlcy5oYXNPdmVybGF5XSl9PlxuICAgICAgPGltZ1xuICAgICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMuaW1hZ2UsIHN0eWxlc1tsYXlvdXRdXSl9XG4gICAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJpbWFnZVwiXG4gICAgICAgIGFsdD17YWx0fVxuICAgICAgICBzcmM9e3NyY31cbiAgICAgICAgd2lkdGg9e3NyY1dpZHRofVxuICAgICAgICBoZWlnaHQ9e3NyY0hlaWdodH1cbiAgICAgIC8+XG4gICAgICB7Y2hpbGRyZW4gJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vdmVybGF5fT57Y2hpbGRyZW59PC9kaXY+fVxuICAgIDwvZGl2PlxuICApIDogKFxuICAgIDxpbWdcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5pbWFnZSwgc3R5bGVzW2xheW91dF1dKX1cbiAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwiaW1hZ2VcIlxuICAgICAgYWx0PXthbHR9XG4gICAgICBzcmM9e3NyY31cbiAgICAgIHdpZHRoPXtzcmNXaWR0aH1cbiAgICAgIGhlaWdodD17c3JjSGVpZ2h0fVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImNvbnRhaW5lclwiOlwiXzN6d2xuOHhwa1p3cFRZNWk2SjdiT0RcIixcImhhc092ZXJsYXlcIjpcIl8yZWw4eFdxcWYzdzRTM3gwczJEOXhsXCIsXCJvdmVybGF5XCI6XCJFZzNpbWZiWGRJNlU2cmZSRTAtcU9cIixcImltYWdlXCI6XCJ0MTg5N2RmdHNfcHFIelNud21XQldcIixcImNvdmVyXCI6XCJfMS1SX0hEak82cU5ueXdjTmlTOGJ5RFwiLFwiY29udGFpblwiOlwiXzNtRHBDakhKMmc2NmUwdzRSMkVaa0dcIixcInN0cmV0Y2hIb3Jpem9udGFsbHlcIjpcIl8zeUV0SDdjcXBVbFZGYUdpV0cxMjl3XCIsXCJzdHJldGNoVmVydGljYWxseVwiOlwibHlpQnM2T0J4dlJFbndJUjBsczJDXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgTGlzdFZpZXcgfSBmcm9tIFwiLi9MaXN0Vmlld1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaXN0Vmlld0l0ZW0gfSBmcm9tIFwiLi9MaXN0Vmlld0l0ZW1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGlzdFZpZXdMaW5rSXRlbSB9IGZyb20gXCIuL0xpc3RWaWV3TGlua0l0ZW1cIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MaXN0Vmlldy5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTGlzdFZpZXdQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIExpc3RWaWV3KHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgaGVhZGVyIH06IExpc3RWaWV3UHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb250YWluZXIsIGNsYXNzTmFtZV0pfT5cbiAgICAgIHtoZWFkZXIgJiYgPGgzIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+e2hlYWRlcn08L2gzPn1cbiAgICAgIDx1bCBjbGFzc05hbWU9e3N0eWxlcy5saXN0fT57Y2hpbGRyZW59PC91bD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXc7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wiY29udGFpbmVyXCI6XCJDUEhOZDhvc0tqTHZRREVRVUVydXhcIixcImhlYWRlclwiOlwiXzFlN2hIU1ZvNTllOHlRbmhjOUI2SWRcIixcImxpc3RcIjpcIl8xdzFXOEU2X0h6ZmVzM1daVFlaYUpLXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL0J1dHRvblwiO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9MaXN0Vmlld0l0ZW0ubW9kdWxlLmNzc1wiO1xuXG50eXBlIExpc3RWaWV3SXRlbVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgbm9QYWRkaW5nPzogYm9vbGVhbjtcbiAgc2l6ZT86IFNpemU7XG4gIGFsaWduPzogXCJsZWZ0XCIgfCBcImNlbnRlclwiO1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZCxcbn1cblxuZnVuY3Rpb24gTGlzdFZpZXdJdGVtKHtcbiAgY2hpbGRyZW4sXG4gIGFjdGl2ZSA9IGZhbHNlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICB0cmFuc3BhcmVudCA9IGZhbHNlLFxuICBub1BhZGRpbmcgPSBmYWxzZSxcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIGFsaWduID0gXCJjZW50ZXJcIixcbiAgb25DbGljayA9ICgpID0+IHt9LFxufTogTGlzdFZpZXdJdGVtUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8bGkgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLmxpc3RWaWV3SXRlbV0pfT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBpbnZlcnRlZD17YWN0aXZlfVxuICAgICAgICB0cmFuc3BhcmVudD17dHJhbnNwYXJlbnR9XG4gICAgICAgIG5vUGFkZGluZz17bm9QYWRkaW5nfVxuICAgICAgICBhbGlnbj17YWxpZ259XG4gICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgIHN0cmV0Y2hIb3Jpem9udGFsbHlcbiAgICAgICAgbm9TaGFkb3dcbiAgICAgICAgbm9Cb3JkZXJcbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9saT5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXdJdGVtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHsgQnV0dG9uTGluayB9IGZyb20gXCIuLi9CdXR0b25MaW5rXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0xpc3RWaWV3SXRlbS5tb2R1bGUuY3NzXCI7XG5cbmZ1bmN0aW9uIExpc3RWaWV3TGlua0l0ZW0oe1xuICBjaGlsZHJlbixcbiAgYWN0aXZlLFxuICB0cmFuc3BhcmVudCxcbiAgbm9QYWRkaW5nLFxuICBzaXplLFxuICBhbGlnbixcbiAgYXMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiAoXG4gICAgPGxpIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5saXN0Vmlld0l0ZW1dKX0+XG4gICAgICA8QnV0dG9uTGlua1xuICAgICAgICBhcz17YXN9XG4gICAgICAgIGludmVydGVkPXthY3RpdmV9XG4gICAgICAgIHRyYW5zcGFyZW50PXt0cmFuc3BhcmVudH1cbiAgICAgICAgbm9QYWRkaW5nPXtub1BhZGRpbmd9XG4gICAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgc3RyZXRjaEhvcml6b250YWxseVxuICAgICAgICBub1NoYWRvd1xuICAgICAgICBub0JvcmRlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQnV0dG9uTGluaz5cbiAgICA8L2xpPlxuICApO1xufVxuXG5MaXN0Vmlld0xpbmtJdGVtLmRlZmF1bHRQcm9wcyA9IHtcbiAgYWN0aXZlOiBmYWxzZSxcbiAgdHJhbnNwYXJlbnQ6IGZhbHNlLFxuICBub1BhZGRpbmc6IGZhbHNlLFxuICBzaXplOiBcIm1lZGl1bVwiLFxuICBhbGlnbjogXCJjZW50ZXJcIixcbiAgYXM6IFwiYVwiLFxufTtcblxuTGlzdFZpZXdMaW5rSXRlbS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBhczogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICBhY3RpdmU6IFByb3BUeXBlcy5ib29sLFxuICB0cmFuc3BhcmVudDogUHJvcFR5cGVzLmJvb2wsXG4gIG5vUGFkZGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIGFsaWduOiBQcm9wVHlwZXMub25lT2YoW1wibGVmdFwiLCBcImNlbnRlclwiXSksXG4gIHNpemU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTGlzdFZpZXdMaW5rSXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJleHBvcnQgeyBkZWZhdWx0IGFzIE1lbnUgfSBmcm9tIFwiLi9NZW51XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1lbnVDb250YWluZXIgfSBmcm9tIFwiLi9NZW51Q29udGFpbmVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1lbnVJdGVtIH0gZnJvbSBcIi4vTWVudUl0ZW1cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWVudUxpbmtJdGVtIH0gZnJvbSBcIi4vTWVudUxpbmtJdGVtXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnUubW9kdWxlLmNzc1wiO1xuXG50eXBlIFBsYWNlbWVudCA9IHtcbiAgaG9yaXpvbnRhbDogXCJyaWdodFwiIHwgXCJsZWZ0XCIsXG4gIHZlcnRpY2FsOiBcInRvcFwiIHwgXCJib3R0b21cIixcbn1cblxudHlwZSBNZW51UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaXNPcGVuPzogYm9vbGVhbjtcbiAgaGVhZGVyPzogc3RyaW5nO1xuICBwbGFjZW1lbnQ/OiBQbGFjZW1lbnRcbn07XG5cblxuZnVuY3Rpb24gTWVudSh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGlzT3BlbiA9IHRydWUsXG4gIHBsYWNlbWVudCA9IHsgaG9yaXpvbnRhbDogXCJsZWZ0XCIsIHZlcnRpY2FsOiBcImJvdHRvbVwiIH0sXG4gIGhlYWRlclxufTogTWVudVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5tZW51LFxuICAgICAgICBzdHlsZXNbcGxhY2VtZW50Lmhvcml6b250YWxdLFxuICAgICAgICBzdHlsZXNbcGxhY2VtZW50LnZlcnRpY2FsXSxcbiAgICAgICAgeyBbc3R5bGVzLm9wZW5dOiBpc09wZW4gfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgPlxuICAgICAge2hlYWRlciAmJiBpc09wZW4gJiYgPGgzIGNsYXNzTmFtZT17c3R5bGVzLm1lbnVIZWFkZXJ9PntoZWFkZXJ9PC9oMz59XG4gICAgICA8dWw+e2lzT3BlbiAmJiBjaGlsZHJlbn08L3VsPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm1lbnVcIjpcIl8yYWhpOEpjbnhHSHJuWm1EMHhUOVJMXCIsXCJ0b3BcIjpcIl8zZ3BGVGQxRmR4NEVBZnExNzBUR3M3XCIsXCJyaWdodFwiOlwiXzFMNUFUcE05R1h5LVNPUkZyMEc2UzRcIixcImxlZnRcIjpcIkNZRUpsMzlUa0VmbkthbDN2dHZ6OVwiLFwiYm90dG9tXCI6XCJfM3p5cC1OZFRCZUJES3ZrMjZwc1p1cFwiLFwib3BlblwiOlwiXzFpYWF6aVpyVklfLUU4RDk5V2ROamlcIixcImVudHJhbmNlXCI6XCJfMmZpS2U0LVg4UHFjRzRfOXFlQjNaT1wiLFwibWVudUhlYWRlclwiOlwiXzE5bmsxSU1OUy11X1lJUUxsbVlSdFVcIn07IiwiaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL01lbnVDb250YWluZXIubW9kdWxlLmNzc1wiO1xuXG50eXBlIE1lbnVDb250YWluZXJQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWY/OiAoKSA9PiB2b2lkIHwgeyBjdXJyZW50OiBhbnkgfTtcbn1cblxuZnVuY3Rpb24gTWVudUNvbnRhaW5lcih7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiB9OiBNZW51Q29udGFpbmVyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMubWVudUNvbnRhaW5lciwgY2xhc3NOYW1lXSl9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmb3J3YXJkUmVmKE1lbnVDb250YWluZXIpO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm1lbnVDb250YWluZXJcIjpcIl8yLVNGd3NwcEV1b2JCSmtBd3dRckZDXCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9NZW51SXRlbS5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgTWVudUl0ZW1Qcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBpc0FjdGl2ZT86IGJvb2xlYW4sXG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkLFxufTtcblxuZnVuY3Rpb24gTWVudUl0ZW0oe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBvbkNsaWNrLFxuICBpc0FjdGl2ZSA9IGZhbHNlXG59OiBNZW51SXRlbVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGxpXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtcbiAgICAgICAgc3R5bGVzLm1lbnVJdGVtLFxuICAgICAgICB7IFtzdHlsZXMuYWN0aXZlXTogaXNBY3RpdmUgfSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgXSl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2xpPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNZW51SXRlbTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJtZW51SXRlbVwiOlwiXzNnR2N6Ukp3ck5lblhUQkxRbkMyOU1cIixcImFjdGl2ZVwiOlwiXzJqMWlsVU5rYkZHU2d1bFhTb0hBZFBcIn07IiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgUmVhY3RUeXBlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NjYXQgZnJvbSBcImNsYXNzY2F0XCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vTWVudUxpbmtJdGVtLm1vZHVsZS5jc3NcIjtcblxudHlwZSBNZW51TGlua0l0ZW1Qcm9wcyA9IHtcbiAgYXM6IFJlYWN0VHlwZTtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG59IHwgYW55O1xuXG5mdW5jdGlvbiBNZW51TGlua0l0ZW0oe1xuICBhczogQ29tcG9uZW50LFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogTWVudUxpbmtJdGVtUHJvcHMpIHtcbiAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBDb21wb25lbnQgPSBcImFcIjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbXBvbmVudFxuICAgICAgZGF0YS10ZXN0aWQ9XCJtZW51LWxpbmstaXRlbVwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMubWVudUxpbmtJdGVtLCBjbGFzc05hbWVdKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Db21wb25lbnQ+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1lbnVMaW5rSXRlbTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJtZW51TGlua0l0ZW1cIjpcIl8yRHkxTFRmU2NHWnRTYl81THVkLWxVXCIsXCJhY3RpdmVcIjpcIl8yVXdzN2JqM3llam1uMWs3WGl5S2ZRXCIsXCJtZW51SXRlbVwiOlwiXzJsSTdTMnQ1eldoUXN2Z19YblE3LS1cIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBPdmVybGF5IH0gZnJvbSBcIi4vT3ZlcmxheVwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9PdmVybGF5Lm1vZHVsZS5jc3NcIjtcblxudHlwZSBPdmVybGF5UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgaXNGaXhlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xufTtcblxuXG5mdW5jdGlvbiBPdmVybGF5KHtcbiAgY2hpbGRyZW4sXG4gIHRyYW5zcGFyZW50ID0gZmFsc2UsXG4gIGlzRml4ZWQgPSBmYWxzZSxcbiAgb25DbGljayA9ICgpID0+IHt9XG59OiBPdmVybGF5UHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3RpZD1cIm92ZXJsYXlcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbXG4gICAgICAgIHN0eWxlcy5vdmVybGF5LFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy50cmFuc3BhcmVudF06IHRyYW5zcGFyZW50LFxuICAgICAgICAgIFtzdHlsZXMuZml4ZWRdOiBpc0ZpeGVkLFxuICAgICAgICB9LFxuICAgICAgXSl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgT3ZlcmxheTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJvdmVybGF5XCI6XCJfMlFncHlyRGNVUXlLWUVTQzVEWFhKclwiLFwidHJhbnNwYXJlbnRcIjpcIl8yOGZWbW94cDY5T1ByODhFdzB6VmVOXCIsXCJmaXhlZFwiOlwiXzJzVTM1MTVFYkZGZ2VQMXlLMlp1YnpcIn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0SW5wdXQgfSBmcm9tIFwiLi9UZXh0SW5wdXRcIjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL1RleHRJbnB1dC5tb2R1bGUuY3NzXCI7XG5pbXBvcnQgeyBTaXplLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbnR5cGUgVGV4dElucHV0UHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gIHNpemU/OiBTaXplO1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBpbnB1dFJlZj86ICgpID0+IHZvaWQgfCB7IGN1cnJlbnQ6IGFueSB9XG59O1xuXG5mdW5jdGlvbiBUZXh0SW5wdXQoe1xuICBsYWJlbCxcbiAgb25DaGFuZ2UsXG4gIHBsYWNlaG9sZGVyLFxuICB2YWx1ZSxcbiAgbmFtZSxcbiAgaW5wdXRSZWYsXG4gIHNpemUgPSBcIm1lZGl1bVwiLFxuICBhdXRvRm9jdXMgPSBmYWxzZSxcbiAgdHlwZSA9IFwidGV4dFwiLFxufTogVGV4dElucHV0UHJvcHMpIHtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LkZvcm1FdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gb25DaGFuZ2UoKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKSxcbiAgICBbb25DaGFuZ2VdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8bGFiZWwgY2xhc3NOYW1lPXtzdHlsZXMudGV4dExhYmVsfT5cbiAgICAgIHtsYWJlbH1cbiAgICAgIDxpbnB1dFxuICAgICAgICBkYXRhLXRlc3RpZD1cImlucHV0XCJcbiAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnRleHRJbnB1dCwgc3R5bGVzW3NpemVdXSl9XG4gICAgICAgIG9uQ2hhbmdlPXshaW5wdXRSZWYgPyBoYW5kbGVDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICBhdXRvRm9jdXM9e2F1dG9Gb2N1c31cbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVGV4dElucHV0O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcInRleHRJbnB1dFwiOlwiXzJ3ZnFPeldCb0FuX0s3Z29xdmpYSmVcIixcInNtYWxsXCI6XCJfMWE0UU9WSkIwelczVXJmXzVocU5qalwiLFwibWVkaXVtXCI6XCJfM1VKb2U4bmxwemhWVG1DMDlUVnNvLVwiLFwibGFyZ2VcIjpcIl8zRFE1MlFkXzFLNF9WeHhWdjcyOFNYXCIsXCJ0ZXh0TGFiZWxcIjpcIl8zMW9BQU9FX2R2R29BejlxSm1vOEVHXCJ9OyIsImV4cG9ydCB7IGRlZmF1bHQgYXMgVG9hc3QgfSBmcm9tIFwiLi9Ub2FzdFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUb2FzdENvbnRhaW5lciB9IGZyb20gXCIuL1RvYXN0Q29udGFpbmVyXCI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBSZWFjdE5vZGVBcnJheSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL1RvYXN0Lm1vZHVsZS5jc3NcIjtcblxudHlwZSBJbWFnZVR5cGUgPSB7XG4gIHNyYzogc3RyaW5nO1xuICBhbHQ6IHN0cmluZztcbn1cblxudHlwZSBUb2FzdFByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlLFxuICBidXR0b25zOiBSZWFjdE5vZGVBcnJheSxcbiAgaW1hZ2U/OiBJbWFnZVR5cGUsXG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkLFxufTtcblxuZnVuY3Rpb24gVG9hc3QoeyBjaGlsZHJlbiwgaW1hZ2UsIGJ1dHRvbnMsIG9uQ2xpY2sgPSAoKSA9PiB7fX06IFRvYXN0UHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudG9hc3RdKX1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInRvYXN0XCJcbiAgICA+XG4gICAgICB7aW1hZ2UgJiYgKFxuICAgICAgICA8aW1nXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0b2FzdC1pbWFnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudG9hc3RJbWFnZX1cbiAgICAgICAgICBzcmM9e2ltYWdlLnNyY31cbiAgICAgICAgICBhbHQ9e2ltYWdlLmFsdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRvYXN0Q29udGVudH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50b2FzdEJ1dHRvbnN9PntidXR0b25zfTwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBUb2FzdDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ0b2FzdFwiOlwiXzNzQnNfRVJYVjNrMFNRTUdVeTJXajRcIixcImVudHJhbmNlXCI6XCJfMV94anRMZVVNb0VYTkEtcU9FWmhjeFwiLFwidG9hc3RDb250ZW50XCI6XCJfMTBsQkVUQ1UzVU5GUjhweTFxMXEtaFwiLFwidG9hc3RJbWFnZVwiOlwiXzNDaTB3cE9iazZvcWY3ZHdrSHNGV29cIixcInRvYXN0QnV0dG9uc1wiOlwiRkVXRG5Ec1AtOUE5SkhHMjBxQlM1XCJ9OyIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IGNsYXNzY2F0IGZyb20gXCJjbGFzc2NhdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9Ub2FzdENvbnRhaW5lci5tb2R1bGUuY3NzXCI7XG5cbnR5cGUgVG9hc3RDb250YWluZXJQcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5mdW5jdGlvbiBUb2FzdENvbnRhaW5lcih7IGNoaWxkcmVuIH06IFRvYXN0Q29udGFpbmVyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzY2F0KFtzdHlsZXMudG9hc3RDb250YWluZXJdKX1cbiAgICAgIGRhdGEtdGVzdGlkPVwidG9hc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRvYXN0Q29udGFpbmVyO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcInRvYXN0Q29udGFpbmVyXCI6XCJfM0Y4Y0pVMXdtS21icmppZGctTzN6cFwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIFZpZGVvIH0gZnJvbSBcIi4vVmlkZW9cIjtcbiIsImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc2NhdCBmcm9tIFwiY2xhc3NjYXRcIjtcblxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9WaWRlby5tb2R1bGUuY3NzXCI7XG5cbi8qKlxuICogVGhlcmUgaXMgYSBrbm93biBpc3N1ZSBpbiBSZWFjdCBpbiByZWdhcmRzIHRvIHRoZSAnbXV0ZWQnIHByb3BlcnR5IHdoaWNoIGNhdXNlcyB0aGUgd2FybmluZzpcbiAqIFwiV2FybmluZzogdW5zdGFibGVfZmx1c2hEaXNjcmV0ZVVwZGF0ZXM6IENhbm5vdCBmbHVzaCB1cGRhdGVzIHdoZW4gUmVhY3QgaXMgYWxyZWFkeSByZW5kZXJpbmcuXCJcbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEwMzg5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzY1NDRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aW5nLWxpYnJhcnkvcmVhY3QtdGVzdGluZy1saWJyYXJ5L2lzc3Vlcy80NzBcbiAqL1xuXG50eXBlIExheW91dCA9IFwiY292ZXJcIiB8IFwiY29udGFpblwiIHwgXCJzdHJldGNoSG9yaXpvbnRhbGx5XCIgfCBcInN0cmV0Y2hWZXJ0aWNhbGx5XCI7XG5cbnR5cGUgVmlkZW9Qcm9wcyA9IHtcbiAgc3JjOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgbGF5b3V0PzogTGF5b3V0LFxuICBhdXRvUGxheT86IGJvb2xlYW47XG4gIGxvb3A/OiBib29sZWFuO1xuICBtdXRlZD86IGJvb2xlYW47XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufTtcblxuZnVuY3Rpb24gVmlkZW8oe1xuICBzcmMsXG4gIHR5cGUsXG4gIGNoaWxkcmVuLFxuICBtdXRlZCA9IHRydWUsXG4gIGxvb3AgPSB0cnVlLFxuICBhdXRvUGxheSA9IHRydWUsXG4gIGxheW91dCA9IFwiY29udGFpblwiXG59OiBWaWRlb1Byb3BzKSB7XG4gIHJldHVybiBjaGlsZHJlbiA/IChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy5jb250YWluZXIsIHN0eWxlcy5oYXNPdmVybGF5XSl9PlxuICAgICAgPHZpZGVvXG4gICAgICAgIGRhdGEtdGVzdGlkPVwidmlkZW9cIlxuICAgICAgICBjcm9zc09yaWdpbj1cImFub255bW91c1wiXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NjYXQoW3N0eWxlcy52aWRlbywgc3R5bGVzW2xheW91dF1dKX1cbiAgICAgICAgbXV0ZWQ9e211dGVkfVxuICAgICAgICBsb29wPXtsb29wfVxuICAgICAgICBhdXRvUGxheT17YXV0b1BsYXl9XG4gICAgICAgIHBsYXlzSW5saW5lPXt0cnVlfVxuICAgICAgPlxuICAgICAgICA8c291cmNlIGRhdGEtdGVzdGlkPVwic291cmNlXCIgc3JjPXtzcmN9IHR5cGU9e3R5cGV9IC8+XG4gICAgICA8L3ZpZGVvPlxuICAgICAge2NoaWxkcmVuICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3ZlcmxheX0+e2NoaWxkcmVufTwvZGl2Pn1cbiAgICA8L2Rpdj5cbiAgKSA6IChcbiAgICA8dmlkZW9cbiAgICAgIGRhdGEtdGVzdGlkPVwidmlkZW9cIlxuICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2NhdChbc3R5bGVzLnZpZGVvLCBzdHlsZXNbbGF5b3V0XV0pfVxuICAgICAgbXV0ZWQ9e211dGVkfVxuICAgICAgbG9vcD17bG9vcH1cbiAgICAgIGF1dG9QbGF5PXthdXRvUGxheX1cbiAgICAgIHBsYXlzSW5saW5lPXt0cnVlfVxuICAgID5cbiAgICAgIDxzb3VyY2UgZGF0YS10ZXN0aWQ9XCJzb3VyY2VcIiBzcmM9e3NyY30gdHlwZT17dHlwZX0gLz5cbiAgICA8L3ZpZGVvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBWaWRlbztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJjb250YWluZXJcIjpcIl8yRVFCZnI1dzhoMXgxYnEtMmZwNndUXCIsXCJoYXNPdmVybGF5XCI6XCJfM0dSTXBtR2tfUHFJVGNVdjBOZm10M1wiLFwidmlkZW9cIjpcIl8ydFpmWGtFaENrd0F6ZmFHX0JWbjBCXCIsXCJjb3ZlclwiOlwiXzNPWUhmYnphTDNRSGFuV1pCajhSeE9cIixcImNvbnRhaW5cIjpcIl8zSV9jN3NoY1NydEdfRnh2dlUySWVFXCIsXCJzdHJldGNoSG9yaXpvbnRhbGx5XCI6XCJfMVo3ZEw5dUVkMEtzeDNDa3JaaHNCOFwiLFwic3RyZXRjaFZlcnRpY2FsbHlcIjpcIl8xemJyRFlPMGZZRkpWYzd4dnNUWWk2XCIsXCJvdmVybGF5XCI6XCJfMm9zWGQ3U2t3RjBMaC0yeWlxdVlRTVwifTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIHVzZVRvZ2dsZSB9IGZyb20gXCIuL3VzZVRvZ2dsZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi91c2VPdXRzaWRlQ2xpY2tcIjtcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUb2dnbGUoaW5pdGlhbFN0YXRlID0gZmFsc2UpIHtcbiAgY29uc3QgW2Jvb2wsIHNldEJvb2xdID0gdXNlU3RhdGUoXG4gICAgdHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gXCJib29sZWFuXCIgPyBpbml0aWFsU3RhdGUgOiBmYWxzZVxuICApO1xuICBjb25zdCB0b2dnbGUgPSAoKSA9PiBzZXRCb29sKChwcmV2Qm9vbCkgPT4gIXByZXZCb29sKTtcbiAgdG9nZ2xlLm9uID0gKCkgPT4gc2V0Qm9vbCh0cnVlKTtcbiAgdG9nZ2xlLm9mZiA9ICgpID0+IHNldEJvb2woZmFsc2UpO1xuXG4gIHJldHVybiBbYm9vbCwgdXNlQ2FsbGJhY2sodG9nZ2xlLCBbXSldO1xufVxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBDYWxsYmFjayA9IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU91dHNpZGVDbGljayhjYWxsYmFjazogQ2FsbGJhY2spIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxFbGVtZW50PigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXJlZi5jdXJyZW50IHx8IHJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCBoYW5kbGVDbGljayk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIGhhbmRsZUNsaWNrKTtcbiAgICB9O1xuICB9LCBbY2FsbGJhY2tdKTtcblxuICByZXR1cm4gcmVmO1xufVxuIiwiLyohXG4gKiBob3RrZXlzLWpzIHYzLjguMVxuICogQSBzaW1wbGUgbWljcm8tbGlicmFyeSBmb3IgZGVmaW5pbmcgYW5kIGRpc3BhdGNoaW5nIGtleWJvYXJkIHNob3J0Y3V0cy4gSXQgaGFzIG5vIGRlcGVuZGVuY2llcy5cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIwIGtlbm55IHdvbmcgPHdvd29ob29AcXEuY29tPlxuICogaHR0cDovL2pheXdjamxvdmUuZ2l0aHViLmlvL2hvdGtleXNcbiAqIFxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbnZhciBpc2ZmID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgPyBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpID4gMCA6IGZhbHNlOyAvLyDnu5Hlrprkuovku7ZcblxuZnVuY3Rpb24gYWRkRXZlbnQob2JqZWN0LCBldmVudCwgbWV0aG9kKSB7XG4gIGlmIChvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBtZXRob2QsIGZhbHNlKTtcbiAgfSBlbHNlIGlmIChvYmplY3QuYXR0YWNoRXZlbnQpIHtcbiAgICBvYmplY3QuYXR0YWNoRXZlbnQoXCJvblwiLmNvbmNhdChldmVudCksIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1ldGhvZCh3aW5kb3cuZXZlbnQpO1xuICAgIH0pO1xuICB9XG59IC8vIOS/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==