PageSourceSearch

https://app.kuberx.in/npm.rc-menu.fb22b9dc5601a2340ee8.js

js kuberx.in collected 2026-10-02 16:06:40 UTC 180,036 bytes, 2 lines download raw bytes

1"use strict";(globalThis.webpackChunkpidgey||=[]).push([[7183],{95391(e,n,t){t.d(n,{cG:()=>ze,q7:()=>ye,te:()=>Fe,Dr:()=>ye,g8:()=>Le,Ay:()=>Ye,Wj:()=>S});var r=t(58168),o=t(64467),i=t(89379),l=t(60436),u=t(5544),a=t(53986),c=t(46942),s=t.n(c),f=t(99591),d=t(12533),v=t(43210),p=t(68210),m=t(96540),A=t(40961),y=m.createContext(null);function b(e,n){return void 0===e?null:"".concat(e,"-").concat(n)}function h(e){return b(m.useContext(y),e)}var g=t(28104),C=["children","locked"],E=m.createContext(null);function M(e){var n=e.children,t=e.locked,r=(0,a.A)(e,C),o=m.useContext(E),l=(0,g.A)(function(){return e=o,n=r,t=(0,i.A)({},e),Object.keys(n).forEach(function(e){var r=n[e];void 0!==r&&(t[e]=r)}),t;var e,n,t},[o,r],function(e,n){return!(t||e[0]===n[0]&&(0,v.A)(e[1],n[1],!0))});return m.createElement(E.Provider,{value:l},n)}var w=[],k=m.createContext(null);function I(){return m.useContext(k)}var x=m.createContext(w);function S(e){var n=m.useContext(x);return m.useMemo(function(){return void 0!==e?[].concat((0,l.A)(n),[e]):n},[n,e])}var R=m.createContext(null);const K=m.createContext({});var P=t(4989),N=t(16928),D=t(25371),O=N.A.LEFT,T=N.A.RIGHT,L=N.A.UP,_=N.A.DOWN,z=N.A.ENTER,V=N.A.ESC,j=N.A.HOME,F=N.A.END,B=[L,_,O,T];function H(e,n){return(0,P.jD)(e,!0).filter(function(e){return n.has(e)})}function W(e,n,t){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(!e)return null;var o=H(e,n),i=o.length,l=o.findIndex(function(e){return t===e});return r<0?-1===l?l=i-1:l-=1:r>0&&(l+=1),o[l=(l+i)%i]}var q=function(e,n){var t=new Set,r=new Map,o=new Map;return e.forEach(function(e){var i=document.querySelector("[data-menu-id='".concat(b(n,e),"']"));i&&(t.add(i),o.set(i,e),r.set(e,i))}),{elements:t,key2element:r,element2key:o}};function G(e,n,t,r,i,l,u,a,c,s){var f=m.useRef(),d=m.useRef();d.current=n;var v=function(){D.A.cancel(f.current)};return m.useEffect(function(){return function(){v()}},[]),function(p){var m=p.which;if([].concat(B,[z,V,j,F]).includes(m)){var A=l(),y=q(A,r),b=y,h=b.elements,g=b.key2element,C=b.element2key,E=function(e,n){for(var t=e||document.activeElement;t;){if(n.has(t))return t;t=t.parentElement}return null}(g.get(n),h),M=C.get(E),w=function(e,n,t,r){var i,l="prev",u="next",a="children",c="parent";if("inline"===e&&r===z)return{inlineTrigger:!0};var s=(0,o.A)((0,o.A)({},L,l),_,u),f=(0,o.A)((0,o.A)((0,o.A)((0,o.A)({},O,t?u:l),T,t?l:u),_,a),z,a),d=(0,o.A)((0,o.A)((0,o.A)((0,o.A)((0,o.A)((0,o.A)({},L,l),_,u),z,a),V,c),O,t?a:c),T,t?c:a);switch(null===(i={inline:s,horizontal:f,vertical:d,inlineSub:s,horizontalSub:d,verticalSub:d}["".concat(e).concat(n?"":"Sub")])||void 0===i?void 0:i[r]){case l:return{offset:-1,sibling:!0};case u:return{offset:1,sibling:!0};case c:return{offset:-1,sibling:!1};case a:return{offset:1,sibling:!1};default:return null}}(e,1===u(M,!0).length,t,m);if(!w&&m!==j&&m!==F)return;(B.includes(m)||[j,F].includes(m))&&p.preventDefault();var k=function(e){if(e){var n=e,t=e.querySelector("a");null!=t&&t.getAttribute("href")&&(n=t);var r=C.get(e);a(r),v(),f.current=(0,D.A)(function(){d.current===r&&n.focus()})}};if([j,F].includes(m)||w.sibling||!E){var I,x,S=H(I=E&&"inline"!==e?function(e){for(var n=e;n;){if(n.getAttribute("data-menu-list"))return n;n=n.parentElement}return null}(E):i.current,h);x=m===j?S[0]:m===F?S[S.length-1]:W(I,h,E,w.offset),k(x)}else if(w.inlineTrigger)c(M);else if(w.offset>0)c(M,!0),v(),f.current=(0,D.A)(function(){y=q(A,r);var e=E.getAttribute("aria-controls"),n=W(document.getElementById(e),y.elements);k(n)},5);else if(w.offset<0){var R=u(M,!0),K=R[R.length-2],P=g.get(K);c(K,!1),k(P)}}null==s||s(p)}}var U="__RC_UTIL_PATH_SPLIT__",X=function(e){return e.join(U)},Y="rc-menu-more";function J(){var e=m.useState({}),n=(0,u.A)(e,2)[1],t=(0,m.useRef)(new Map),r=(0,m.useRef)(new Map),o=m.useState([]),i=(0,u.A)(o,2),a=i[0],c=i[1],s=(0,m.useRef)(0),f=(0,m.useRef)(!1),d=(0,m.useCallback)(function(e,o){var i=X(o);r.current.set(i,e),t.current.set(e,i),s.current+=1;var l,u=s.current;l=function(){u===s.current&&(f.current||n({}))},Promise.resolve().then(l)},[]),v=(0,m.useCallback)(function(e,n){var o=X(n);r.current.delete(o),t.current.delete(e)},[]),p=(0,m.useCallback)(function(e){c(e)},[]),A=(0,m.useCallback)(function(e,n){var r=t.current.get(e)||"",o=r.split(U);return n&&a.includes(o[0])&&o.unshift(Y),o},[a]),y=(0,m.useCallback)(function(e,n){return e.filter(function(e){return void 0!==e}).some(function(e){return A(e,!0).includes(n)})},[A]),b=(0,m.useCallback)(function(e){var n="".concat(t.current.get(e)).concat(U),o=new Set;
1return(0,l.A)(r.current.keys()).forEach(function(e){e.startsWith(n)&&o.add(r.current.get(e))}),o},[]);return m.useEffect(function(){return function(){f.current=!0}},[]),{registerPath:d,unregisterPath:v,refreshOverflowKeys:p,isSubPathKey:y,getKeyPath:A,getKeys:function(){var e=(0,l.A)(t.current.keys());return a.length&&e.push(Y),e},getSubPathKeys:b}}function Q(e){var n=m.useRef(e);n.current=e;var t=m.useCallback(function(){for(var e,t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];return null===(e=n.current)||void 0===e?void 0:e.call.apply(e,[n].concat(r))},[]);return e?t:void 0}var Z=Math.random().toFixed(5).toString().slice(2),$=0;var ee=t(23029),ne=t(92901),te=t(85501),re=t(29426),oe=t(19853),ie=t(8719);function le(e,n,t,r){var o=m.useContext(E),i=o.activeKey,l=o.onActive,u=o.onInactive,a={active:i===e};return n||(a.onMouseEnter=function(n){null==t||t({key:e,domEvent:n}),l(e)},a.onMouseLeave=function(n){null==r||r({key:e,domEvent:n}),u(e)}),a}function ue(e){var n=m.useContext(E),t=n.mode,r=n.rtl,o=n.inlineIndent;if("inline"!==t)return null;return r?{paddingRight:e*o}:{paddingLeft:e*o}}function ae(e){var n,t=e.icon,r=e.props,o=e.children;return null===t||!1===t?null:("function"==typeof t?n=m.createElement(t,(0,i.A)({},r)):"boolean"!=typeof t&&(n=t),n||o||null)}var ce=["item"];function se(e){var n=e.item,t=(0,a.A)(e,ce);return Object.defineProperty(t,"item",{get:function(){return(0,p.Ay)(!1,"`info.item` is deprecated since we will move to function component that not provides React Node instance in future."),n}}),t}var fe=["title","attribute","elementRef"],de=["style","className","eventKey","warnKey","disabled","itemIcon","children","role","onMouseEnter","onMouseLeave","onClick","onKeyDown","onFocus"],ve=["active"],pe=function(e){(0,te.A)(t,e);var n=(0,re.A)(t);function t(){return(0,ee.A)(this,t),n.apply(this,arguments)}return(0,ne.A)(t,[{key:"render",value:function(){var e=this.props,n=e.title,t=e.attribute,o=e.elementRef,i=(0,a.A)(e,fe),l=(0,oe.A)(i,["eventKey","popupClassName","popupOffset","onTitleClick"]);return(0,p.Ay)(!t,"`attribute` of Menu.Item is deprecated. Please pass attribute directly."),m.createElement(f.A.Item,(0,r.A)({},t,{title:"string"==typeof n?n:void 0},l,{ref:o}))}}]),t}(m.Component),me=m.forwardRef(function(e,n){var t=e.style,u=e.className,c=e.eventKey,f=(e.warnKey,e.disabled),d=e.itemIcon,v=e.children,p=e.role,A=e.onMouseEnter,y=e.onMouseLeave,b=e.onClick,g=e.onKeyDown,C=e.onFocus,M=(0,a.A)(e,de),w=h(c),k=m.useContext(E),I=k.prefixCls,x=k.onItemClick,R=k.disabled,P=k.overflowDisabled,D=k.itemIcon,O=k.selectedKeys,T=k.onActive,L=m.useContext(K)._internalRenderMenuItem,_="".concat(I,"-item"),z=m.useRef(),V=m.useRef(),j=R||f,F=(0,ie.xK)(n,V),B=S(c);var H=function(e){return{key:c,keyPath:(0,l.A)(B).reverse(),item:z.current,domEvent:e}},W=d||D,q=le(c,j,A,y),G=q.active,U=(0,a.A)(q,ve),X=O.includes(c),Y=ue(B.length),J={};"option"===e.role&&(J["aria-selected"]=X);var Q=m.createElement(pe,(0,r.A)({ref:z,elementRef:F,role:null===p?"none":p||"menuitem",tabIndex:f?null:-1,"data-menu-id":P&&w?null:w},(0,oe.A)(M,["extra"]),U,J,{component:"li","aria-disabled":f,style:(0,i.A)((0,i.A)({},Y),t),className:s()(_,(0,o.A)((0,o.A)((0,o.A)({},"".concat(_,"-active"),G),"".concat(_,"-selected"),X),"".concat(_,"-disabled"),j),u),onClick:function(e){if(!j){var n=H(e);null==b||b(se(n)),x(n)}},onKeyDown:function(e){if(null==g||g(e),e.which===N.A.ENTER){var n=H(e);null==b||b(se(n)),x(n)}},onFocus:function(e){T(c),null==C||C(e)}}),v,m.createElement(ae,{props:(0,i.A)((0,i.A)({},e),{},{isSelected:X}),icon:W}));return L&&(Q=L(Q,e,{selected:X})),Q});
1function Ae(e,n){var t=e.eventKey,o=I(),i=S(t);return m.useEffect(function(){if(o)return o.registerPath(t,i),function(){o.unregisterPath(t,i)}},[i]),o?null:m.createElement(me,(0,r.A)({},e,{ref:n}))}const ye=m.forwardRef(Ae);var be=["className","children"],he=function(e,n){var t=e.className,o=e.children,i=(0,a.A)(e,be),l=m.useContext(E),u=l.prefixCls,c=l.mode,f=l.rtl;return m.createElement("ul",(0,r.A)({className:s()(u,f&&"".concat(u,"-rtl"),"".concat(u,"-sub"),"".concat(u,"-").concat("inline"===c?"inline":"vertical"),t),role:"menu"},i,{"data-menu-list":!0,ref:n}),o)},ge=m.forwardRef(he);ge.displayName="SubMenuList";const Ce=ge;var Ee=t(82546);function Me(e,n){return(0,Ee.A)(e).map(function(e,t){if(m.isValidElement(e)){var r,o,i=e.key,u=null!==(r=null===(o=e.props)||void 0===o?void 0:o.eventKey)&&void 0!==r?r:i;null==u&&(u="tmp_key-".concat([].concat((0,l.A)(n),[t]).join("-")));var a={key:u,eventKey:u};return m.cloneElement(e,a)}return e})}var we=t(62427),ke={adjustX:1,adjustY:1},Ie={topLeft:{points:["bl","tl"],overflow:ke},topRight:{points:["br","tr"],overflow:ke},bottomLeft:{points:["tl","bl"],overflow:ke},bottomRight:{points:["tr","br"],overflow:ke},leftTop:{points:["tr","tl"],overflow:ke},leftBottom:{points:["br","bl"],overflow:ke},rightTop:{points:["tl","tr"],overflow:ke},rightBottom:{points:["bl","br"],overflow:ke}},xe={topLeft:{points:["bl","tl"],overflow:ke},topRight:{points:["br","tr"],overflow:ke},bottomLeft:{points:["tl","bl"],overflow:ke},bottomRight:{points:["tr","br"],overflow:ke},rightTop:{points:["tr","tl"],overflow:ke},rightBottom:{points:["br","bl"],overflow:ke},leftTop:{points:["tl","tr"],overflow:ke},leftBottom:{points:["bl","br"],overflow:ke}};function Se(e,n,t){return n||(t?t[e]||t.other:void 0)}var Re={horizontal:"bottomLeft",vertical:"rightTop","vertical-left":"rightTop","vertical-right":"leftTop"};function Ke(e){var n=e.prefixCls,t=e.visible,r=e.children,l=e.popup,a=e.popupStyle,c=e.popupClassName,f=e.popupOffset,d=e.disabled,v=e.mode,p=e.onVisibleChange,A=m.useContext(E),y=A.getPopupContainer,b=A.rtl,h=A.subMenuOpenDelay,g=A.subMenuCloseDelay,C=A.builtinPlacements,M=A.triggerSubMenuAction,w=A.forceSubMenuRender,k=A.rootClassName,I=A.motion,x=A.defaultMotions,S=m.useState(!1),R=(0,u.A)(S,2),K=R[0],P=R[1],N=b?(0,i.A)((0,i.A)({},xe),C):(0,i.A)((0,i.A)({},Ie),C),O=Re[v],T=Se(v,I,x),L=m.useRef(T);"inline"!==v&&(L.current=T);var _=(0,i.A)((0,i.A)({},L.current),{},{leavedClassName:"".concat(n,"-hidden"),removeOnLeave:!1,motionAppear:!0}),z=m.useRef();return m.useEffect(function(){return z.current=(0,D.A)(function(){P(t)}),function(){D.A.cancel(z.current)}},[t]),m.createElement(we.A,{prefixCls:n,popupClassName:s()("".concat(n,"-popup"),(0,o.A)({},"".concat(n,"-rtl"),b),c,k),stretch:"horizontal"===v?"minWidth":null,getPopupContainer:y,builtinPlacements:N,popupPlacement:O,popupVisible:K,popup:l,popupStyle:a,popupAlign:f&&{offset:f},action:d?[]:[M],mouseEnterDelay:h,mouseLeaveDelay:g,onPopupVisibleChange:p,forceRender:w,popupMotion:_,fresh:!0},r)}var Pe=t(57557);function Ne(e){var n=e.id,t=e.open,o=e.keyPath,l=e.children,a="inline",c=m.useContext(E),s=c.prefixCls,f=c.forceSubMenuRender,d=c.motion,v=c.defaultMotions,p=c.mode,A=m.useRef(!1);A.current=p===a;var y=m.useState(!A.current),b=(0,u.A)(y,2),h=b[0],g=b[1],C=!!A.current&&t;m.useEffect(function(){A.current&&g(!1)},[p]);var w=(0,i.A)({},Se(a,d,v));o.length>1&&(w.motionAppear=!1);var k=w.onVisibleChanged;return w.onVisibleChanged=function(e){return A.current||e||g(!0),null==k?void 0:k(e)},h?null:m.createElement(M,{mode:a,locked:!A.current},m.createElement(Pe.Ay,(0,r.A)({visible:C},w,{forceRender:f,removeOnLeave:!1,leavedClassName:"".concat(s,"-hidden")}),function(e){var t=e.className,r=e.style;return m.createElement(Ce,{id:n,className:t,style:r},l)}))}var De=["style","className","title","eventKey","warnKey","disabled","internalPopupClose","children","itemIcon","expandIcon","popupClassName","popupOffset","popupStyle","onClick","onMouseEnter","onMouseLeave","onTitleClick","onTitleMouseEnter","onTitleMouseLeave"],Oe=["active"],Te=m.forwardRef(function(e,n){var t=e.style,l=e.className,c=e.title,d=e.eventKe
1y,v=(e.warnKey,e.disabled),p=e.internalPopupClose,A=e.children,y=e.itemIcon,b=e.expandIcon,g=e.popupClassName,C=e.popupOffset,w=e.popupStyle,k=e.onClick,I=e.onMouseEnter,x=e.onMouseLeave,P=e.onTitleClick,N=e.onTitleMouseEnter,D=e.onTitleMouseLeave,O=(0,a.A)(e,De),T=h(d),L=m.useContext(E),_=L.prefixCls,z=L.mode,V=L.openKeys,j=L.disabled,F=L.overflowDisabled,B=L.activeKey,H=L.selectedKeys,W=L.itemIcon,q=L.expandIcon,G=L.onItemClick,U=L.onOpenChange,X=L.onActive,Y=m.useContext(K)._internalRenderSubMenuItem,J=m.useContext(R).isSubPathKey,Z=S(),$="".concat(_,"-submenu"),ee=j||v,ne=m.useRef(),te=m.useRef();var re=null!=y?y:W,oe=null!=b?b:q,ie=V.includes(d),ce=!F&&ie,fe=J(H,d),de=le(d,ee,N,D),ve=de.active,pe=(0,a.A)(de,Oe),me=m.useState(!1),Ae=(0,u.A)(me,2),ye=Ae[0],be=Ae[1],he=function(e){ee||be(e)},ge=m.useMemo(function(){return ve||"inline"!==z&&(ye||J([B],d))},[z,ve,B,ye,d,J]),Ee=ue(Z.length),Me=Q(function(e){null==k||k(se(e)),G(e)}),we=T&&"".concat(T,"-popup"),ke=m.useMemo(function(){return m.createElement(ae,{icon:"horizontal"!==z?oe:void 0,props:(0,i.A)((0,i.A)({},e),{},{isOpen:ce,isSubMenu:!0})},m.createElement("i",{className:"".concat($,"-arrow")}))},[z,oe,e,ce,$]),Ie=m.createElement("div",(0,r.A)({role:"menuitem",style:Ee,className:"".concat($,"-title"),tabIndex:ee?null:-1,ref:ne,title:"string"==typeof c?c:null,"data-menu-id":F&&T?null:T,"aria-expanded":ce,"aria-haspopup":!0,"aria-controls":we,"aria-disabled":ee,onClick:function(e){ee||(null==P||P({key:d,domEvent:e}),"inline"===z&&U(d,!ie))},onFocus:function(){X(d)}},pe),c,ke),xe=m.useRef(z);if("inline"!==z&&Z.length>1?xe.current="vertical":xe.current=z,!F){var Se=xe.current;Ie=m.createElement(Ke,{mode:Se,prefixCls:$,visible:!p&&ce&&"inline"!==z,popupClassName:g,popupOffset:C,popupStyle:w,popup:m.createElement(M,{mode:"horizontal"===Se?"vertical":Se},m.createElement(Ce,{id:we,ref:te},A)),disabled:ee,onVisibleChange:function(e){"inline"!==z&&U(d,e)}},Ie)}var Re=m.createElement(f.A.Item,(0,r.A)({ref:n,role:"none"},O,{component:"li",style:t,className:s()($,"".concat($,"-").concat(z),l,(0,o.A)((0,o.A)((0,o.A)((0,o.A)({},"".concat($,"-open"),ce),"".concat($,"-active"),ge),"".concat($,"-selected"),fe),"".concat($,"-disabled"),ee)),onMouseEnter:function(e){he(!0),null==I||I({key:d,domEvent:e})},onMouseLeave:function(e){he(!1),null==x||x({key:d,domEvent:e})}}),Ie,!F&&m.createElement(Ne,{id:we,open:ce,keyPath:Z},A));return Y&&(Re=Y(Re,e,{selected:fe,active:ge,open:ce,disabled:ee})),m.createElement(M,{onItemClick:Me,mode:"horizontal"===z?"vertical":z,itemIcon:re,expandIcon:oe},Re)});const Le=m.forwardRef(function(e,n){var t,o=e.eventKey,i=e.children,l=S(o),u=Me(i,l),a=I();return m.useEffect(function(){if(a)return a.registerPath(o,l),function(){a.unregisterPath(o,l)}},[l]),t=a?u:m.createElement(Te,(0,r.A)({ref:n},e),u),m.createElement(x.Provider,{value:l},t)});var _e=t(82284);function ze(e){var n=e.className,t=e.style,r=m.useContext(E).prefixCls;return I()?null:m.createElement("li",{role:"separator",className:s()("".concat(r,"-item-divider"),n),style:t})}var Ve=["className","title","eventKey","children"],je=m.forwardRef(function(e,n){var t=e.className,o=e.title,i=(e.eventKey,e.children),l=(0,a.A)(e,Ve),u=m.useContext(E).prefixCls,c="".concat(u,"-item-group");return m.createElement("li",(0,r.A)({ref:n,role:"presentation"},l,{onClick:function(e){return e.stopPropagation()},className:s()(c,t)}),m.createElement("div",{role:"presentation",className:"".concat(c,"-title"),title:"string"==typeof o?o:void 0},o),m.createElement("ul",{role:"group",className:"".concat(c,"-list")},i))});
1const Fe=m.forwardRef(function(e,n){var t=e.eventKey,o=Me(e.children,S(t));return I()?o:m.createElement(je,(0,r.A)({ref:n},(0,oe.A)(e,["warnKey"])),o)});var Be=["label","children","key","type","extra"];function He(e,n,t){var o=n.item,i=n.group,l=n.submenu,u=n.divider;return(e||[]).map(function(e,c){if(e&&"object"===(0,_e.A)(e)){var s=e,f=s.label,d=s.children,v=s.key,p=s.type,A=s.extra,y=(0,a.A)(s,Be),b=null!=v?v:"tmp-".concat(c);return d||"group"===p?"group"===p?m.createElement(i,(0,r.A)({key:b},y,{title:f}),He(d,n,t)):m.createElement(l,(0,r.A)({key:b},y,{title:f}),He(d,n,t)):"divider"===p?m.createElement(u,(0,r.A)({key:b},y)):m.createElement(o,(0,r.A)({key:b},y,{extra:A}),f,(!!A||0===A)&&m.createElement("span",{className:"".concat(t,"-item-extra")},A))}return null}).filter(function(e){return e})}function We(e,n,t,r,o){var l=e,u=(0,i.A)({divider:ze,item:ye,group:Fe,submenu:Le},r);return n&&(l=He(n,u,o)),Me(l,t)}var qe=["prefixCls","rootClassName","style","className","tabIndex","items","children","direction","id","mode","inlineCollapsed","disabled","disabledOverflow","subMenuOpenDelay","subMenuCloseDelay","forceSubMenuRender","defaultOpenKeys","openKeys","activeKey","defaultActiveFirst","selectable","multiple","defaultSelectedKeys","selectedKeys","onSelect","onDeselect","inlineIndent","motion","defaultMotions","triggerSubMenuAction","builtinPlacements","itemIcon","expandIcon","overflowedIndicator","overflowedIndicatorPopupClassName","getPopupContainer","onClick","onOpenChange","onKeyDown","openAnimation","openTransitionName","_internalRenderMenuItem","_internalRenderSubMenuItem","_internalComponents"],Ge=[],Ue=m.forwardRef(function(e,n){var t,c=e,p=c.prefixCls,b=void 0===p?"rc-menu":p,h=c.rootClassName,g=c.style,C=c.className,E=c.tabIndex,w=void 0===E?0:E,I=c.items,x=c.children,S=c.direction,P=c.id,N=c.mode,D=void 0===N?"vertical":N,O=c.inlineCollapsed,T=c.disabled,L=c.disabledOverflow,_=c.subMenuOpenDelay,z=void 0===_?.1:_,V=c.subMenuCloseDelay,j=void 0===V?.1:V,F=c.forceSubMenuRender,B=c.defaultOpenKeys,W=c.openKeys,U=c.activeKey,X=c.defaultActiveFirst,ee=c.selectable,ne=void 0===ee||ee,te=c.multiple,re=void 0!==te&&te,oe=c.defaultSelectedKeys,ie=c.selectedKeys,le=c.onSelect,ue=c.onDeselect,ae=c.inlineIndent,ce=void 0===ae?24:ae,fe=c.motion,de=c.defaultMotions,ve=c.triggerSubMenuAction,pe=void 0===ve?"hover":ve,me=c.builtinPlacements,Ae=c.itemIcon,be=c.expandIcon,he=c.overflowedIndicator,ge=void 0===he?"...":he,Ce=c.overflowedIndicatorPopupClassName,Ee=c.getPopupContainer,Me=c.onClick,we=c.onOpenChange,ke=c.onKeyDown,Ie=(c.openAnimation,c.openTransitionName,c._internalRenderMenuItem),xe=c._internalRenderSubMenuItem,Se=c._internalComponents,Re=(0,a.A)(c,qe),Ke=m.useMemo(function(){return[We(x,I,Ge,Se,b),We(x,I,Ge,{},b)]},[x,I,Se]),Pe=(0,u.A)(Ke,2),Ne=Pe[0],De=Pe[1],Oe=m.useState(!1),Te=(0,u.A)(Oe,2),_e=Te[0],ze=Te[1],Ve=m.useRef(),je=function(e){var n=(0,d.A)(e,{value:e}),t=(0,u.A)(n,2),r=t[0],o=t[1];return m.useEffect(function(){$+=1;var e="".concat(Z,"-").concat($);o("rc-menu-uuid-".concat(e))},[]),r}(P),Fe="rtl"===S;var Be=(0,d.A)(B,{value:W,postState:function(e){return e||Ge}}),He=(0,u.A)(Be,2),Ue=He[0],Xe=He[1],Ye=function(e){function n(){Xe(e),null==we||we(e)}arguments.length>1&&void 0!==arguments[1]&&arguments[1]?(0,A.flushSync)(n):n()},Je=m.useState(Ue),Qe=(0,u.A)(Je,2),Ze=Qe[0],$e=Qe[1],en=m.useRef(!1),nn=m.useMemo(function(){return"inline"!==D&&"vertical"!==D||!O?[D,!1]:["vertical",O]},[D,O]),tn=(0,u.A)(nn,2),rn=tn[0],on=tn[1],ln="inline"===rn,un=m.useState(rn),an=(0,u.A)(un,2),cn=an[0],sn=an[1],fn=m.useState(on),dn=(0,u.A)(fn,2),vn=dn[0],pn=dn[1];m.useEffect(function(){sn(rn),pn(on),en.current&&(ln?Xe(Ze):Ye(Ge))},[rn,on]);var mn=m.useState(0),An=(0,u.A)(mn,2),yn=An[0],bn=An[1],hn=yn>=Ne.length-1||"horizontal"!==cn||L;m.useEffect(function(){ln&&$e(Ue)},[Ue]),m.useEffect(function(){return en.current=!0,function(){en.current=!1}},[]);var gn=J(),Cn=gn.registerPath,En=gn.unregisterPath,Mn=gn.refreshOverflowKeys,wn=gn.isSubPathKey,kn=gn.getKeyPath,In=gn.getKeys,xn=gn.getSubPathKeys,Sn=m.useMemo(function(){return{registerPath:Cn,unregisterPath:En}},[Cn,En]),Rn=m.useMemo(function(){return{isSubPathKey:wn}},[wn]);m.useEffect(function(){Mn(hn?Ge:Ne.slice(yn+1).map(function(e){return e.key}))},[yn,hn]);var Kn=(0,d.A)(U||X&&(null===(t=Ne[0])||void 0===t?void 0:t.key),{value:U}),Pn=(0,u.A)(Kn,2),Nn=Pn[0],Dn=Pn[1],On=Q(function(e){Dn(e)}),Tn=Q(function(){Dn(void 0)});(0,m.useImperativeHandle)(n,function(){return{list:Ve.current,focus:function(e){var n,t,r=In(),o=q(r,je),i=o.elements,l=o.key2element,u=o.element2key,a=H(Ve.current,i),c=null!=Nn?Nn:a[0]?u.get(a[0]):null===(n=Ne.find(function(e){return!e.props.disabled}))||void 0===n?void 0:n.key,s=l.get(c);c&&s&&(null==s||null===(t=s.focus)||void 0===t||t.call(s,e))}}});var Ln=(0,d.A)(oe||[],{value:ie,postState:function(e){return Array.isArray(e)?e:null==e?Ge:[e]}}),_n=(0,u.A)(Ln,2),zn=_n[0],Vn=_n[1],jn=Q(function(e){null==Me||Me(se(e)),function(e){if(ne){var n,t=e.key,r=zn.includes(t);n=re?r?zn.filter(function(e){return e!==t}):[].concat((0,l.A)(zn),[t]):[t],Vn(n);var o=(0,i.A)((0,i.A)({},e),{},{selectedKeys:n});
1r?null==ue||ue(o):null==le||le(o)}!re&&Ue.length&&"inline"!==cn&&Ye(Ge)}(e)}),Fn=Q(function(e,n){var t=Ue.filter(function(n){return n!==e});if(n)t.push(e);else if("inline"!==cn){var r=xn(e);t=t.filter(function(e){return!r.has(e)})}(0,v.A)(Ue,t,!0)||Ye(t,!0)}),Bn=G(cn,Nn,Fe,je,Ve,In,kn,Dn,function(e,n){var t=null!=n?n:!Ue.includes(e);Fn(e,t)},ke);m.useEffect(function(){ze(!0)},[]);var Hn=m.useMemo(function(){return{_internalRenderMenuItem:Ie,_internalRenderSubMenuItem:xe}},[Ie,xe]),Wn="horizontal"!==cn||L?Ne:Ne.map(function(e,n){return m.createElement(M,{key:e.key,overflowDisabled:n>yn},e)}),qn=m.createElement(f.A,(0,r.A)({id:P,ref:Ve,prefixCls:"".concat(b,"-overflow"),component:"ul",itemComponent:ye,className:s()(b,"".concat(b,"-root"),"".concat(b,"-").concat(cn),C,(0,o.A)((0,o.A)({},"".concat(b,"-inline-collapsed"),vn),"".concat(b,"-rtl"),Fe),h),dir:S,style:g,role:"menu",tabIndex:w,data:Wn,renderRawItem:function(e){return e},renderRawRest:function(e){var n=e.length,t=n?Ne.slice(-n):null;return m.createElement(Le,{eventKey:Y,title:ge,disabled:hn,internalPopupClose:0===n,popupClassName:Ce},t)},maxCount:"horizontal"!==cn||L?f.A.INVALIDATE:f.A.RESPONSIVE,ssr:"full","data-menu-list":!0,onVisibleChange:function(e){bn(e)},onKeyDown:Bn},Re));return m.createElement(K.Provider,{value:Hn},m.createElement(y.Provider,{value:je},m.createElement(M,{prefixCls:b,rootClassName:h,mode:cn,openKeys:Ue,rtl:Fe,disabled:T,motion:_e?fe:null,defaultMotions:_e?de:null,activeKey:Nn,onActive:On,onInactive:Tn,selectedKeys:zn,inlineIndent:ce,subMenuOpenDelay:z,subMenuCloseDelay:j,forceSubMenuRender:F,builtinPlacements:me,triggerSubMenuAction:pe,getPopupContainer:Ee,itemIcon:Ae,expandIcon:be,onItemClick:jn,onOpenChange:Fn},m.createElement(R.Provider,{value:Rn},qn),m.createElement("div",{style:{display:"none"},"aria-hidden":!0},m.createElement(k.Provider,{value:Sn},De)))))});var Xe=Ue;Xe.Item=ye,Xe.SubMenu=Le,Xe.ItemGroup=Fe,Xe.Divider=ze;const Ye=Xe}}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,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EVBQ0F2UyxVQUFBdVIsSUFDR3BnQixLQUdILE9BQXNCZixFQUFBaUMsY0FBb0JVLEVBQWNULFNBQUEsQ0FDeERMLE1BQUF3ZixJQUNrQnJoQixFQUFBaUMsY0FBb0JsQyxFQUFTbUMsU0FBQSxDQUMvQ0wsTUFBQTFCLElBQ2tCSCxFQUFBaUMsY0FBb0J0QixFQUFtQixDQUN6RG9QLFVBQUFBLEVBQ0FnRixjQUFBQSxFQUNBM1AsS0FBQXNaLEdBQ0E3RyxTQUFBNkYsR0FDQXpRLElBQUEzSCxHQUdBZ0gsU0FBQUEsRUFHQXdILE9BQUFtSixHQUFBbkosR0FBQSxLQUNBQyxlQUFBa0osR0FBQWxKLEdBQUEsS0FHQTFPLFVBQUFxYSxHQUNBaFQsU0FBQUEsR0FDQUMsV0FBQUEsR0FHQXlELGFBQUFvUSxHQUdBdFQsYUFBQUEsR0FHQXdILGlCQUFBQSxFQUNBQyxrQkFBQUEsRUFDQUcsbUJBQUFBLEVBQ0FGLGtCQUFBQSxHQUNBQyxxQkFBQUEsR0FDQUosa0JBQUFBLEdBR0FoRixTQUFBQSxHQUNBZ0ksV0FBQUEsR0FHQXpILFlBQUEwUSxHQUNBM0ksYUFBQWdKLElBQ2tCL2dCLEVBQUFpQyxjQUFvQlMsRUFBZVIsU0FBQSxDQUNyREwsTUFBQTBkLElBQ0doYyxJQUEyQnZELEVBQUFpQyxjQUFtQixPQUNqRHFOLE1BQUEsQ0FDQThTLFFBQUEsUUFFQSxrQkFDa0JwaUIsRUFBQWlDLGNBQW9CRyxFQUFtQkYsU0FBQSxDQUN6REwsTUFBQXlkLElBQ0d0QyxPQUNILEdDdmRBLElBQUFxRixHRHdkQSxHQ3ZkQUEsR0FBQXJULEtBQWtCOEMsR0FDbEJ1USxHQUFBQyxRQUFxQmxKLEdBQ3JCaUosR0FBQUUsVUFBdUI1SSxHQUN2QjBJLEdBQUEvSSxRQUFxQkEsR0FDckIsTUFBQWtKLEdBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9waWRnZXkvLi9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy9jb250ZXh0L0lkQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9waWRnZXkvLi9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy9jb250ZXh0L01lbnVDb250ZXh0LmpzIiwid2VicGFjazovL3BpZGdleS8uL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL2NvbnRleHQvUGF0aENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcGlkZ2
2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvY29udGV4dC9Qcml2YXRlQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9waWRnZXkvLi9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy9ob29rcy91c2VBY2Nlc3NpYmlsaXR5LmpzIiwid2VicGFjazovL3BpZGdleS8uL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL2hvb2tzL3VzZUtleVJlY29yZHMuanMiLCJ3ZWJwYWNrOi8vcGlkZ2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvdXRpbHMvdGltZVV0aWwuanMiLCJ3ZWJwYWNrOi8vcGlkZ2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvaG9va3MvdXNlTWVtb0NhbGxiYWNrLmpzIiwid2VicGFjazovL3BpZGdleS8uL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL2hvb2tzL3VzZVVVSUQuanMiLCJ3ZWJwYWNrOi8vcGlkZ2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvaG9va3MvdXNlQWN0aXZlLmpzIiwid2VicGFjazovL3BpZGdleS8uL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL2hvb2tzL3VzZURpcmVjdGlvblN0eWxlLmpzIiwid2VicGFjazovL3BpZGdleS8uL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL0ljb24uanMiLCJ3ZWJwYWNrOi8vcGlkZ2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvdXRpbHMvd2FyblV0aWwuanMiLCJ3ZWJwYWNrOi8vcGlkZ2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvTWVudUl0ZW0uanMiLCJ3ZWJwYWNrOi8vcGlkZ2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvU3ViTWVudS9TdWJNZW51TGlzdC5qcyIsIndlYnBhY2s6Ly9waWRnZXkvLi9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy91dGlscy9jb21tb25VdGlsLmpzIiwid2VicGFjazovL3BpZGdleS8uL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL3BsYWNlbWVudHMuanMiLCJ3ZWJwYWNrOi8vcGlkZ2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvdXRpbHMvbW90aW9uVXRpbC5qcyIsIndlYnBhY2s6Ly9waWRnZXkvLi9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy9TdWJNZW51L1BvcHVwVHJpZ2dlci5qcyIsIndlYnBhY2s6Ly9waWRnZXkvLi9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy9TdWJNZW51L0lubGluZVN1Yk1lbnVMaXN0LmpzIiwid2VicGFjazovL3BpZGdleS8uL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL1N1Yk1lbnUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGlkZ2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvRGl2aWRlci5qcyIsIndlYnBhY2s6Ly9waWRnZXkvLi9ub2RlX21vZHVsZXMvcmMtbWVudS9lcy9NZW51SXRlbUdyb3VwLmpzIiwid2VicGFjazovL3BpZGdleS8uL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL3V0aWxzL25vZGVVdGlsLmpzIiwid2VicGFjazovL3BpZGdleS8uL25vZGVfbW9kdWxlcy9yYy1tZW51L2VzL01lbnUuanMiLCJ3ZWJwYWNrOi8vcGlkZ2V5Ly4vbm9kZV9tb2R1bGVzL3JjLW1lbnUvZXMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IHZhciBJZENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51SWQodXVpZCwgZXZlbnRLZXkpIHtcbiAgaWYgKHV1aWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBcIlwiLmNvbmNhdCh1dWlkLCBcIi1cIikuY29uY2F0KGV2ZW50S2V5KTtcbn1cblxuLyoqXG4gKiBHZXQgYGRhdGEtbWVudS1pZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbnVJZChldmVudEtleSkge1xuICB2YXIgaWQgPSBSZWFjdC51c2VDb250ZXh0KElkQ29udGV4dCk7XG4gIHJldHVybiBnZXRNZW51SWQoaWQsIGV2ZW50S2V5KTtcbn0iLCJpbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbnZhciBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImxvY2tlZFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZW1vIGZyb20gXCJyYy11dGlsL2VzL2hvb2tzL3VzZU1lbW9cIjtcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJyYy11dGlsL2VzL2lzRXF1YWxcIjtcbmV4cG9ydCB2YXIgTWVudUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmZ1bmN0aW9uIG1lcmdlUHJvcHMob3JpZ2luLCB0YXJnZXQpIHtcbiAgdmFyIGNsb25lID0gX29iamVjdFNwcmVhZCh7fSwgb3JpZ2luKTtcbiAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgdmFsdWUgPSB0YXJnZXRba2V5XTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xvbmVba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjbG9uZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEluaGVyaXRhYmxlQ29udGV4dFByb3ZpZGVyKF9yZWYpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICBsb2NrZWQgPSBfcmVmLmxvY2tlZCxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KE1lbnVDb250ZXh0KTtcbiAgdmFyIGluaGVyaXRhYmxlQ29udGV4dCA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBtZXJnZVByb3BzKGNvbnRleHQsIHJlc3RQcm9wcyk7XG4gIH0sIFtjb250ZXh0LCByZXN0UHJvcHNdLCBmdW5jdGlvbiAocHJldiwgbmV4dCkge1xuICAgIHJldHVybiAhbG9ja2VkICYmIChwcmV2WzBdICE9PSBuZXh0WzBdIHx8ICFpc0VxdWFsKHByZXZbMV0sIG5leHRbMV0sIHRydWUpKTtcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNZW51Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBpbmhlcml0YWJsZUNvbnRleHRcbiAgfSwgY2hpbGRyZW4pO
21xufSIsImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG52YXIgRW1wdHlMaXN0ID0gW107XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT0gUGF0aCBSZWdpc3RlciA9PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB2YXIgUGF0aFJlZ2lzdGVyQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lYXN1cmUoKSB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KFBhdGhSZWdpc3RlckNvbnRleHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09IFBhdGggVHJhY2tlciA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHZhciBQYXRoVHJhY2tlckNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChFbXB0eUxpc3QpO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUZ1bGxQYXRoKGV2ZW50S2V5KSB7XG4gIHZhciBwYXJlbnRLZXlQYXRoID0gUmVhY3QudXNlQ29udGV4dChQYXRoVHJhY2tlckNvbnRleHQpO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGV2ZW50S2V5ICE9PSB1bmRlZmluZWQgPyBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHBhcmVudEtleVBhdGgpLCBbZXZlbnRLZXldKSA6IHBhcmVudEtleVBhdGg7XG4gIH0sIFtwYXJlbnRLZXlQYXRoLCBldmVudEtleV0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gUGF0aCBVc2VyID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdmFyIFBhdGhVc2VyQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBQcml2YXRlQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmV4cG9ydCBkZWZhdWx0IFByaXZhdGVDb250ZXh0OyIsImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgeyBnZXRGb2N1c05vZGVMaXN0IH0gZnJvbSBcInJjLXV0aWwvZXMvRG9tL2ZvY3VzXCI7XG5pbXBvcnQgS2V5Q29kZSBmcm9tIFwicmMtdXRpbC9lcy9LZXlDb2RlXCI7XG5pbXBvcnQgcmFmIGZyb20gXCJyYy11dGlsL2VzL3JhZlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0TWVudUlkIH0gZnJvbSBcIi4uL2NvbnRleHQvSWRDb250ZXh0XCI7XG4vLyBkZXN0cnVjdCB0byByZWR1Y2UgbWluaWZ5IHNpemVcbnZhciBMRUZUID0gS2V5Q29kZS5MRUZULFxuICBSSUdIVCA9IEtleUNvZGUuUklHSFQsXG4gIFVQID0gS2V5Q29kZS5VUCxcbiAgRE9XTiA9IEtleUNvZGUuRE9XTixcbiAgRU5URVIgPSBLZXlDb2RlLkVOVEVSLFxuICBFU0MgPSBLZXlDb2RlLkVTQyxcbiAgSE9NRSA9IEtleUNvZGUuSE9NRSxcbiAgRU5EID0gS2V5Q29kZS5FTkQ7XG52YXIgQXJyb3dLZXlzID0gW1VQLCBET1dOLCBMRUZULCBSSUdIVF07XG5mdW5jdGlvbiBnZXRPZmZzZXQobW9kZSwgaXNSb290TGV2ZWwsIGlzUnRsLCB3aGljaCkge1xuICB2YXIgX29mZnNldHM7XG4gIHZhciBwcmV2ID0gJ3ByZXYnO1xuICB2YXIgbmV4dCA9ICduZXh0JztcbiAgdmFyIGNoaWxkcmVuID0gJ2NoaWxkcmVuJztcbiAgdmFyIHBhcmVudCA9ICdwYXJlbnQnO1xuXG4gIC8vIElubGluZSBlbnRlciBpcyBzcGVjaWFsIHRoYXQgd2UgdXNlIHVuaXF1ZSBvcGVyYXRpb25cbiAgaWYgKG1vZGUgPT09ICdpbmxpbmUnICYmIHdoaWNoID09PSBFTlRFUikge1xuICAgIHJldHVybiB7XG4gICAgICBpbmxpbmVUcmlnZ2VyOiB0cnVlXG4gICAgfTtcbiAgfVxuICB2YXIgaW5saW5lID0gX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eSh7fSwgVVAsIHByZXYpLCBET1dOLCBuZXh0KTtcbiAgdmFyIGhvcml6b250YWwgPSBfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoe30sIExFRlQsIGlzUnRsID8gbmV4dCA6IHByZXYpLCBSSUdIVCwgaXNSdGwgPyBwcmV2IDogbmV4dCksIERPV04sIGNoaWxkcmVuKSwgRU5URVIsIGNoaWxkcmVuKTtcbiAgdmFyIHZlcnRpY2FsID0gX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoe30sIFVQLCBwcmV2KSwgRE9XTiwgbmV4dCksIEVOVEVSLCBjaGlsZHJlbiksIEVTQywgcGFyZW50KSwgTEVGVCwgaXNSdGwgPyBjaGlsZHJlbiA6IHBhcmVudCksIFJJR0hULCBpc1J0bCA/IHBhcmVudCA6IGNoaWxkcmVuKTtcbiAgdmFyIG9mZnNldHMgPSB7XG4gICAgaW5saW5lOiBpbmxpbmUsXG4gICAgaG9yaXpvbnRhbDogaG9yaXpvbnRhbCxcbiAgICB2ZXJ0aWNhbDogdmVydGljYWwsXG4gICAgaW5saW5lU3ViOiBpbmxpbmUsXG4gICAgaG9yaXpvbnRhbFN1YjogdmVydGljYWwsXG4gICAgdmVydGljYWxTdWI6IHZlcnRpY2FsXG4gIH07XG4gIHZhciB0eXBlID0gKF9vZmZzZXRzID0gb2Zmc2V0c1tcIlwiLmNvbmNhdChtb2RlKS5jb25jYXQoaXNSb290TGV2ZWwgPyAnJyA6ICdTdWInKV0pID09PSBudWxsIHx8IF9vZmZzZXRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb2Zmc2V0c1t3aGljaF07XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgcHJldjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9mZnNldDogLTEsXG4gICAgICAgIHNpYmxpbmc6IHRydWVcbiAgICAgIH07XG4gICAgY2FzZSBuZXh0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICBzaWJsaW5nOiB0cnVlXG4gICAgICB9O1xuICAgIGNhc2UgcGFyZW50OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2Zmc2V0OiAtMSxcbiAgICAgICAgc2libGluZzogZmFsc2VcbiAgICAgIH07XG4gICAgY2FzZSBjaGlsZHJlbjpcbiAgICAgIHJldHVybi
2B7XG4gICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgc2libGluZzogZmFsc2VcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5mdW5jdGlvbiBmaW5kQ29udGFpbmVyVUwoZWxlbWVudCkge1xuICB2YXIgY3VycmVudCA9IGVsZW1lbnQ7XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgaWYgKGN1cnJlbnQuZ2V0QXR0cmlidXRlKCdkYXRhLW1lbnUtbGlzdCcpKSB7XG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9XG4gICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIC8vIE5vcm1hbGx5IHNob3VsZCBub3QgcmVhY2ggdGhpcyBsaW5lXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEZpbmQgZm9jdXNlZCBlbGVtZW50IHdpdGhpbiBlbGVtZW50IHNldCBwcm92aWRlZFxuICovXG5mdW5jdGlvbiBnZXRGb2N1c0VsZW1lbnQoYWN0aXZlRWxlbWVudCwgZWxlbWVudHMpIHtcbiAgdmFyIGN1cnJlbnQgPSBhY3RpdmVFbGVtZW50IHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgaWYgKGVsZW1lbnRzLmhhcyhjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR2V0IGZvY3VzYWJsZSBlbGVtZW50cyBmcm9tIHRoZSBlbGVtZW50IHNldCB1bmRlciBwcm92aWRlZCBjb250YWluZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvY3VzYWJsZUVsZW1lbnRzKGNvbnRhaW5lciwgZWxlbWVudHMpIHtcbiAgdmFyIGxpc3QgPSBnZXRGb2N1c05vZGVMaXN0KGNvbnRhaW5lciwgdHJ1ZSk7XG4gIHJldHVybiBsaXN0LmZpbHRlcihmdW5jdGlvbiAoZWxlKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLmhhcyhlbGUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGdldE5leHRGb2N1c0VsZW1lbnQocGFyZW50UXVlcnlDb250YWluZXIsIGVsZW1lbnRzLCBmb2N1c01lbnVFbGVtZW50KSB7XG4gIHZhciBvZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IDE7XG4gIC8vIEtleSBvbiB0aGUgbWVudSBpdGVtIHdpbGwgbm90IGdldCB2YWxpZGF0ZSBwYXJlbnQgY29udGFpbmVyXG4gIGlmICghcGFyZW50UXVlcnlDb250YWluZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIExpc3QgY3VycmVudCBsZXZlbCBtZW51IGl0ZW0gZWxlbWVudHNcbiAgdmFyIHNhbWVMZXZlbEZvY3VzYWJsZU1lbnVFbGVtZW50TGlzdCA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKHBhcmVudFF1ZXJ5Q29udGFpbmVyLCBlbGVtZW50cyk7XG5cbiAgLy8gRmluZCBuZXh0IGZvY3VzIGluZGV4XG4gIHZhciBjb3VudCA9IHNhbWVMZXZlbEZvY3VzYWJsZU1lbnVFbGVtZW50TGlzdC5sZW5ndGg7XG4gIHZhciBmb2N1c0luZGV4ID0gc2FtZUxldmVsRm9jdXNhYmxlTWVudUVsZW1lbnRMaXN0LmZpbmRJbmRleChmdW5jdGlvbiAoZWxlKSB7XG4gICAgcmV0dXJuIGZvY3VzTWVudUVsZW1lbnQgPT09IGVsZTtcbiAgfSk7XG4gIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgaWYgKGZvY3VzSW5kZXggPT09IC0xKSB7XG4gICAgICBmb2N1c0luZGV4ID0gY291bnQgLSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb2N1c0luZGV4IC09IDE7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9mZnNldCA+IDApIHtcbiAgICBmb2N1c0luZGV4ICs9IDE7XG4gIH1cbiAgZm9jdXNJbmRleCA9IChmb2N1c0luZGV4ICsgY291bnQpICUgY291bnQ7XG5cbiAgLy8gRm9jdXMgbWVudSBpdGVtXG4gIHJldHVybiBzYW1lTGV2ZWxGb2N1c2FibGVNZW51RWxlbWVudExpc3RbZm9jdXNJbmRleF07XG59XG5leHBvcnQgdmFyIHJlZnJlc2hFbGVtZW50cyA9IGZ1bmN0aW9uIHJlZnJlc2hFbGVtZW50cyhrZXlzLCBpZCkge1xuICB2YXIgZWxlbWVudHMgPSBuZXcgU2V0KCk7XG4gIHZhciBrZXkyZWxlbWVudCA9IG5ldyBNYXAoKTtcbiAgdmFyIGVsZW1lbnQya2V5ID0gbmV3IE1hcCgpO1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIltkYXRhLW1lbnUtaWQ9J1wiLmNvbmNhdChnZXRNZW51SWQoaWQsIGtleSksIFwiJ11cIikpO1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBlbGVtZW50cy5hZGQoZWxlbWVudCk7XG4gICAgICBlbGVtZW50MmtleS5zZXQoZWxlbWVudCwga2V5KTtcbiAgICAgIGtleTJlbGVtZW50LnNldChrZXksIGVsZW1lbnQpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZWxlbWVudHM6IGVsZW1lbnRzLFxuICAgIGtleTJlbGVtZW50OiBrZXkyZWxlbWVudCxcbiAgICBlbGVtZW50MmtleTogZWxlbWVudDJrZXlcbiAgfTtcbn07XG5leHBvcnQgZnVuY3Rpb24gdXNlQWNjZXNzaWJpbGl0eShtb2RlLCBhY3RpdmVLZXksIGlzUnRsLCBpZCwgY29udGFpbmVyUmVmLCBnZXRLZXlzLCBnZXRLZXlQYXRoLCB0cmlnZ2VyQWN0aXZlS2V5LCB0cmlnZ2VyQWNjZXNzaWJpbGl0eU9wZW4sIG9yaWdpbk9uS2V5RG93bikge1xuICB2YXIgcmFmUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHZhciBhY3RpdmVSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgYWN0aXZlUmVmLmN1cnJlbnQgPSBhY3RpdmVLZXk7XG4gIHZhciBjbGVhblJhZiA9IGZ1bmN0aW9uIGNsZWFuUmFmKCkge1xuICAgIHJhZi5jYW5jZWwocmFmUmVmLmN1cnJlbnQpO1xuICB9O1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBjbGVhblJhZigpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHdoaWNoID0gZS53aGljaDtcbiAgICBpZiAoW10uY29uY2F0KEFycm93S2V5cywgW0VOVEVSLCBFU0MsIEhPTUUsIEVORF0pLmluY2x1ZGVzKHdoaWNoKSkge1xuICAgICAgdmFyIGtleXMgPSBnZXRLZXlzKCk7XG4gICAgICB2Y
2XIgcmVmcmVzaGVkRWxlbWVudHMgPSByZWZyZXNoRWxlbWVudHMoa2V5cywgaWQpO1xuICAgICAgdmFyIF9yZWZyZXNoZWRFbGVtZW50cyA9IHJlZnJlc2hlZEVsZW1lbnRzLFxuICAgICAgICBlbGVtZW50cyA9IF9yZWZyZXNoZWRFbGVtZW50cy5lbGVtZW50cyxcbiAgICAgICAga2V5MmVsZW1lbnQgPSBfcmVmcmVzaGVkRWxlbWVudHMua2V5MmVsZW1lbnQsXG4gICAgICAgIGVsZW1lbnQya2V5ID0gX3JlZnJlc2hlZEVsZW1lbnRzLmVsZW1lbnQya2V5O1xuXG4gICAgICAvLyBGaXJzdCB3ZSBzaG91bGQgZmluZCBjdXJyZW50IGZvY3VzZWQgTWVudUl0ZW0vU3ViTWVudSBlbGVtZW50XG4gICAgICB2YXIgYWN0aXZlRWxlbWVudCA9IGtleTJlbGVtZW50LmdldChhY3RpdmVLZXkpO1xuICAgICAgdmFyIGZvY3VzTWVudUVsZW1lbnQgPSBnZXRGb2N1c0VsZW1lbnQoYWN0aXZlRWxlbWVudCwgZWxlbWVudHMpO1xuICAgICAgdmFyIGZvY3VzTWVudUtleSA9IGVsZW1lbnQya2V5LmdldChmb2N1c01lbnVFbGVtZW50KTtcbiAgICAgIHZhciBvZmZzZXRPYmogPSBnZXRPZmZzZXQobW9kZSwgZ2V0S2V5UGF0aChmb2N1c01lbnVLZXksIHRydWUpLmxlbmd0aCA9PT0gMSwgaXNSdGwsIHdoaWNoKTtcblxuICAgICAgLy8gU29tZSBtb2RlIGRvIG5vdCBoYXZlIGZ1bGx5IGFycm93IG9wZXJhdGlvbiBsaWtlIGlubGluZVxuICAgICAgaWYgKCFvZmZzZXRPYmogJiYgd2hpY2ggIT09IEhPTUUgJiYgd2hpY2ggIT09IEVORCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEFycm93IHByZXZlbnQgZGVmYXVsdCB0byBhdm9pZCBwYWdlIHNjcm9sbFxuICAgICAgaWYgKEFycm93S2V5cy5pbmNsdWRlcyh3aGljaCkgfHwgW0hPTUUsIEVORF0uaW5jbHVkZXMod2hpY2gpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIHZhciB0cnlGb2N1cyA9IGZ1bmN0aW9uIHRyeUZvY3VzKG1lbnVFbGVtZW50KSB7XG4gICAgICAgIGlmIChtZW51RWxlbWVudCkge1xuICAgICAgICAgIHZhciBmb2N1c1RhcmdldEVsZW1lbnQgPSBtZW51RWxlbWVudDtcblxuICAgICAgICAgIC8vIEZvY3VzIHRvIGxpbmsgaW5zdGVhZCBvZiBtZW51IGl0ZW0gaWYgcG9zc2libGVcbiAgICAgICAgICB2Y
2XIgbGluayA9IG1lbnVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2EnKTtcbiAgICAgICAgICBpZiAobGluayAhPT0gbnVsbCAmJiBsaW5rICE9PSB2b2lkIDAgJiYgbGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSkge1xuICAgICAgICAgICAgZm9jdXNUYXJnZXRFbGVtZW50ID0gbGluaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHRhcmdldEtleSA9IGVsZW1lbnQya2V5LmdldChtZW51RWxlbWVudCk7XG4gICAgICAgICAgdHJpZ2dlckFjdGl2ZUtleSh0YXJnZXRLZXkpO1xuXG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRG8gbm90IGB1c2VFZmZlY3RgIGhlcmUgc2luY2UgYHRyeUZvY3VzYCBtYXkgdHJpZ2dlciBhc3luY1xuICAgICAgICAgICAqIHdoaWNoIG1ha2VzIFJlYWN0IHN5bmMgdXBkYXRlIHRoZSBgYWN0aXZlS2V5YFxuICAgICAgICAgICAqIHRoYXQgZm9yY2UgcmVuZGVyIGJlZm9yZSBgdXNlUmVmYCBzZXQgdGhlIG5leHQgYWN0aXZlS2V5XG4gICAgICAgICAgICovXG4gICAgICAgICAgY2xlYW5SYWYoKTtcbiAgICAgICAgICByYWZSZWYuY3VycmVudCA9IHJhZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlUmVmLmN1cnJlbnQgPT09IHRhcmdldEtleSkge1xuICAgICAgICAgICAgICBmb2N1c1RhcmdldEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChbSE9NRSwgRU5EXS5pbmNsdWRlcyh3aGljaCkgfHwgb2Zmc2V0T2JqLnNpYmxpbmcgfHwgIWZvY3VzTWVudUVsZW1lbnQpIHtcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT0gU2libGluZyA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAvLyBGaW5kIHdhbGthYmxlIGZvY3VzIG1lbnUgZWxlbWVudCBjb250YWluZXJcbiAgICAgICAgdmFyIHBhcmVudFF1ZXJ5Q29udGFpbmVyO1xuICAgICAgICBpZiAoIWZvY3VzTWVudUVsZW1lbnQgfHwgbW9kZSA9PT0gJ2lubGluZScpIHtcbiAgICAgICAgICBwYXJlbnRRdWVyeUNvbnRhaW5lciA9IGNvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudFF1ZXJ5Q29udGFpbmVyID0gZmluZENvbnRhaW5lclVMKGZvY3VzTWVudUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IG5leHQgZm9jdXMgZWxlbWVudFxuICAgICAgICB2Y
2XIgdGFyZ2V0RWxlbWVudDtcbiAgICAgICAgdmFyIGZvY3VzYWJsZUVsZW1lbnRzID0gZ2V0Rm9jdXNhYmxlRWxlbWVudHMocGFyZW50UXVlcnlDb250YWluZXIsIGVsZW1lbnRzKTtcbiAgICAgICAgaWYgKHdoaWNoID09PSBIT01FKSB7XG4gICAgICAgICAgdGFyZ2V0RWxlbWVudCA9IGZvY3VzYWJsZUVsZW1lbnRzWzBdO1xuICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09PSBFTkQpIHtcbiAgICAgICAgICB0YXJnZXRFbGVtZW50ID0gZm9jdXNhYmxlRWxlbWVudHNbZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0RWxlbWVudCA9IGdldE5leHRGb2N1c0VsZW1lbnQocGFyZW50UXVlcnlDb250YWluZXIsIGVsZW1lbnRzLCBmb2N1c01lbnVFbGVtZW50LCBvZmZzZXRPYmoub2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBGb2N1cyBtZW51IGl0ZW1cbiAgICAgICAgdHJ5Rm9jdXModGFyZ2V0RWxlbWVudCk7XG5cbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT0gSW5saW5lVHJpZ2dlciA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgfSBlbHNlIGlmIChvZmZzZXRPYmouaW5saW5lVHJpZ2dlcikge1xuICAgICAgICAvLyBJbmxpbmUgdHJpZ2dlciBubyBuZWVkIHN3aXRjaCB0byBzdWIgbWVudSBpdGVtXG4gICAgICAgIHRyaWdnZXJBY2Nlc3NpYmlsaXR5T3Blbihmb2N1c01lbnVLZXkpO1xuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0gTGV2ZWwgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICB9IGVsc2UgaWYgKG9mZnNldE9iai5vZmZzZXQgPiAwKSB7XG4gICAgICAgIHRyaWdnZXJBY2Nlc3NpYmlsaXR5T3Blbihmb2N1c01lbnVLZXksIHRydWUpO1xuICAgICAgICBjbGVhblJhZigpO1xuICAgICAgICByYWZSZWYuY3VycmVudCA9IHJhZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gQXN5bmMgc2hvdWxkIHJlc3luYyBlbGVtZW50c1xuICAgICAgICAgIHJlZnJlc2hlZEVsZW1lbnRzID0gcmVmcmVzaEVsZW1lbnRzKGtleXMsIGlkKTtcbiAgICAgICAgICB2Y
2XIgY29udHJvbElkID0gZm9jdXNNZW51RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKTtcbiAgICAgICAgICB2YXIgc3ViUXVlcnlDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250cm9sSWQpO1xuXG4gICAgICAgICAgLy8gR2V0IHN1YiBmb2N1c2FibGUgbWVudSBpdGVtXG4gICAgICAgICAgdmFyIHRhcmdldEVsZW1lbnQgPSBnZXROZXh0Rm9jdXNFbGVtZW50KHN1YlF1ZXJ5Q29udGFpbmVyLCByZWZyZXNoZWRFbGVtZW50cy5lbGVtZW50cyk7XG5cbiAgICAgICAgICAvLyBGb2N1cyBtZW51IGl0ZW1cbiAgICAgICAgICB0cnlGb2N1cyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgfSwgNSk7XG4gICAgICB9IGVsc2UgaWYgKG9mZnNldE9iai5vZmZzZXQgPCAwKSB7XG4gICAgICAgIHZhciBrZXlQYXRoID0gZ2V0S2V5UGF0aChmb2N1c01lbnVLZXksIHRydWUpO1xuICAgICAgICB2YXIgcGFyZW50S2V5ID0ga2V5UGF0aFtrZXlQYXRoLmxlbmd0aCAtIDJdO1xuICAgICAgICB2YXIgcGFyZW50TWVudUVsZW1lbnQgPSBrZXkyZWxlbWVudC5nZXQocGFyZW50S2V5KTtcblxuICAgICAgICAvLyBGb2N1cyBtZW51IGl0ZW1cbiAgICAgICAgdHJpZ2dlckFjY2Vzc2liaWxpdHlPcGVuKHBhcmVudEtleSwgZmFsc2UpO1xuICAgICAgICB0cnlGb2N1cyhwYXJlbnRNZW51RWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUGFzcyBvcmlnaW4ga2V5IGRvd24gZXZlbnRcbiAgICBvcmlnaW5PbktleURvd24gPT09IG51bGwgfHwgb3JpZ2luT25LZXlEb3duID09PSB2b2lkIDAgfHwgb3JpZ2luT25LZXlEb3duKGUpO1xuICB9O1xufSIsImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5XCI7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJlZiwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgd2FybmluZyBmcm9tIFwicmMtdXRpbC9lcy93YXJuaW5nXCI7XG5pbXBvcnQgeyBuZXh0U2xpY2UgfSBmcm9tIFwiLi4vdXRpbHMvdGltZVV0aWxcIjtcbnZhciBQQVRIX1NQTElUID0gJ19fUkNfVVRJTF9QQVRIX1NQTElUX18nO1xudmFyIGdldFBhdGhTdHIgPSBmdW5jdGlvbiBnZXRQYXRoU3RyKGtleVBhdGgpIHtcbiAgcmV0dXJuIGtleVBhdGguam9pbihQQVRIX1NQTElUKTtcbn07XG52YXIgZ2V0UGF0aEtleXMgPSBmdW5jdGlvbiBnZXRQYXRoS2V5cyhrZXlQYXRoU3RyKSB7XG4gIHJldHVybiBrZXlQYXRoU3RyLnNwbGl0KFBBVEhfU1BMSVQpO1xufTtcbmV4cG9ydCB2YXIgT1ZFUkZMT1dfS0VZID0gJ3JjLW1lbnUtbW9yZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VLZXlSZWNvcmRzKCkge1xuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoe30pLFxuICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgIGludGVybmFsRm9yY2VVcGRhdGUgPSBfUmVhY3QkdXNlU3RhdGUyWzFdO1xuICB2YXIga2V5MnBhdGhSZWYgPSB1c2VSZWYobmV3IE1hcCgpKTtcbiAgdmFyIHBhdGgya2V5UmVmID0gdXNlUmVmKG5ldyBNYXAoKSk7XG4gIHZhciBfUmVhY3QkdXNlU3RhdGUzID0gUmVhY3QudXNlU3RhdGUoW10pLFxuICAgIF9SZWFjdCR1c2VTdGF0ZTQgPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGUzLCAyKSxcbiAgICBvdmVyZmxvd0tleXMgPSBfUmVhY3QkdXNlU3RhdGU0WzBdLFxuICAgIHNldE92ZXJmbG93S2V5cyA9IF9SZWFjdCR1c2VTdGF0ZTRbMV07XG4gIHZhciB1cGRhdGVSZWYgPSB1c2VSZWYoMCk7XG4gIHZhciBkZXN0cm95UmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgdmFyIGZvcmNlVXBkYXRlID0gZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgaWYgKCFkZXN0cm95UmVmLmN1cnJlbnQpIHtcbiAgICAgIGludGVybmFsRm9yY2VVcGRhdGUoe30pO1xuICAgIH1cbiAgfTtcbiAgdmFyIHJlZ2lzdGVyUGF0aCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChrZXksIGtleVBhdGgpIHtcbiAgICAvLyBXYXJuaW5nIGZvciBpbnZhbGlkYXRlIG9yIGR1cGxpY2F0ZWQgYGtleWBcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybmluZygha2V5MnBhdGhSZWYuY3VycmVudC5oYXMoa2V5KSwgXCJEdXBsaWNhdGVkIGtleSAnXCIuY29uY2F0KGtleSwgXCInIHVzZWQgaW4gTWVudSBieSBwYXRoIFtcIikuY29uY2F0KGtleVBhdGguam9pbignID4gJyksIFwiXVwiKSk7XG4gICAgfVxuXG4gICAgLy8gRmlsbCBtYXBcbiAgICB2YXIgY29ubmVjdGVkUGF0aCA9IGdldFBhdGhTdHIoa2V5UGF0aCk7XG4gICAgcGF0aDJrZXlSZWYuY3VycmVudC5zZXQoY29ubmVjdGVkUGF0aCwga2V5KTtcbiAgICBrZXkycGF0aFJlZi5jdXJyZW50LnNldChrZXksIGNvbm5lY3RlZFBhdGgpO1xuICAgIHVwZGF0ZVJlZi5jdXJyZW50ICs9IDE7XG4gICAgdmFyIGlkID0gdXBkYXRlUmVmLmN1cnJlbnQ7XG4gICAgbmV4dFNsaWNlKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChpZCA9PT0gdXBkYXRlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZm9yY2VVcGRhdGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW10pO1xuICB2YXIgdW5yZWdpc3RlclBhdGggPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoa2V5LCBrZXlQYXRoKSB7XG4gICAgdmFyIGNvbm5lY3RlZFBhdGggPSBnZXRQYXRoU3RyKGtleVBhdGgpO1xuICAgIHBhdGgya2V5UmVmLmN1cnJlbnQuZGVsZXRlKGNvbm5lY3RlZFBhdGgpO1xuICAgIGtleTJwYXRoUmVmLmN1cnJlbnQuZGVsZXRlKGtleSk7XG4gIH0sIFtdKTtcbiAgdmFyIHJlZnJlc2hPdmVyZmxvd0tleXMgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoa2V5cykge1xuICAgIHNldE92ZXJmbG93S2V5cyhrZXlzKTtcbiAgfSwgW10pO1xuICB2YXIgZ2V0S2V5UGF0aCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudEtleSwgaW5jbHVkZU92ZXJmbG93KSB7XG4gICAgdmFyIGZ1bGxQYXRoID0ga2V5MnBhdGhSZWYuY3VycmVudC5nZXQoZXZlbnRLZXkpIHx8ICcnO1xuICAgIHZhciBrZXlzID0gZ2V0UGF0aEtleXMoZnVsbFBhdGgpO1xuICAgIGlmIChpbmNsdWRlT3ZlcmZsb3cgJiYgb3ZlcmZsb3dLZXlzLmluY2x1ZGVzKGtleXNbMF0pKSB7XG4gICAgICBrZXlzLnVuc2hpZnQoT1ZFUkZMT1dfS0VZKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleXM7XG4gIH0sIFtvdmVyZmxvd0tleXNdKTtcbiAgdmFyIGlzU3ViUGF0aEtleSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChwYXRoS2V5cywgZXZlbnRLZXkpIHtcbiAgICByZXR1cm4gcGF0aEtleXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbSAhPT0gdW5kZWZpbmVkO1xuICAgIH0pLnNvbWUoZnVuY3Rpb24gKHBhdGhLZXkpIHtcbiAgICAgIHZhciBwYXRoS2V5TGlzdCA9IGdldEtleVBhdGgocGF0aEtleSwgdHJ1ZSk7XG4gICAgICByZXR1cm4gcGF0aEtleUxpc3QuaW5jbHVkZXMoZXZlbnRLZXkpO1xuICAgIH0pO1xuICB9LCBbZ2V0S2V5UGF0aF0pO1xuICB2YXIgZ2V0S2V5cyA9IGZ1bmN0aW9uIGdldEtleXMoKSB7XG4gICAgdmFyIGtleXMgPSBfdG9Db25zdW1hYmxlQXJyYXkoa2V5MnBhdGhSZWYuY3VycmVudC5rZXlzKCkpO1xuICAgIGlmIChvdmVyZmxvd0tleXMubGVuZ3RoKSB7XG4gICAgICBrZXlzLnB1c2goT1ZFUkZMT1dfS0VZKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZpbmQgY3VycmVudCBrZXkgcmVsYXRlZCBjaGlsZCBwYXRoIGtleXNcbiAgICovXG4gIHZhciBnZXRTdWJQYXRoS2V5cyA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgY29ubmVjdGVkUGF0aCA9IFwiXCIuY29uY2F0KGtleTJwYXR
2oUmVmLmN1cnJlbnQuZ2V0KGtleSkpLmNvbmNhdChQQVRIX1NQTElUKTtcbiAgICB2YXIgcGF0aEtleXMgPSBuZXcgU2V0KCk7XG4gICAgX3RvQ29uc3VtYWJsZUFycmF5KHBhdGgya2V5UmVmLmN1cnJlbnQua2V5cygpKS5mb3JFYWNoKGZ1bmN0aW9uIChwYXRoS2V5KSB7XG4gICAgICBpZiAocGF0aEtleS5zdGFydHNXaXRoKGNvbm5lY3RlZFBhdGgpKSB7XG4gICAgICAgIHBhdGhLZXlzLmFkZChwYXRoMmtleVJlZi5jdXJyZW50LmdldChwYXRoS2V5KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhdGhLZXlzO1xuICB9LCBbXSk7XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlc3Ryb3lSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW10pO1xuICByZXR1cm4ge1xuICAgIC8vIFJlZ2lzdGVyXG4gICAgcmVnaXN0ZXJQYXRoOiByZWdpc3RlclBhdGgsXG4gICAgdW5yZWdpc3RlclBhdGg6IHVucmVnaXN0ZXJQYXRoLFxuICAgIHJlZnJlc2hPdmVyZmxvd0tleXM6IHJlZnJlc2hPdmVyZmxvd0tleXMsXG4gICAgLy8gVXRpbFxuICAgIGlzU3ViUGF0aEtleTogaXNTdWJQYXRoS2V5LFxuICAgIGdldEtleVBhdGg6IGdldEtleVBhdGgsXG4gICAgZ2V0S2V5czogZ2V0S2V5cyxcbiAgICBnZXRTdWJQYXRoS2V5czogZ2V0U3ViUGF0aEtleXNcbiAgfTtcbn0iLCJleHBvcnQgZnVuY3Rpb24gbmV4dFNsaWNlKGNhbGxiYWNrKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oY2FsbGJhY2spO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBDYWNoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGFsd2F5cyByZXR1cm4gc2FtZSByZWYgaW5zdGVhZC5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgY29udGV4dCBvcHRpbWl6YXRpb24uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1lbW9DYWxsYmFjayhmdW5jKSB7XG4gIHZhciBmdW5SZWYgPSBSZWFjdC51c2VSZWYoZnVuYyk7XG4gIGZ1blJlZi5jdXJyZW50ID0gZnVuYztcbiAgdmFyIGNhbGxiYWNrID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBfZnVuUmVmJGN1cnJlbnQ7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICByZXR1cm4gKF9mdW5SZWYkY3VycmVudCA9IGZ1blJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZnVuUmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mdW5SZWYkY3VycmVudC5jYWxsLmFwcGx5KF9mdW5SZWYkY3VycmVudCwgW2Z1blJlZl0uY29uY2F0KGFyZ3MpKTtcbiAgfSwgW10pO1xuICByZXR1cm4gZnVuYyA/IGNhbGxiYWNrIDogdW5kZWZpbmVkO1xufSIsImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lcmdlZFN0YXRlIGZyb20gXCJyYy11dGlsL2VzL2hvb2tzL3VzZU1lcmdlZFN0YXRlXCI7XG52YXIgdW5pcXVlUHJlZml4ID0gTWF0aC5yYW5kb20oKS50b0ZpeGVkKDUpLnRvU3RyaW5nKCkuc2xpY2UoMik7XG52YXIgaW50ZXJuYWxJZCA9IDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VVVUlEKGlkKSB7XG4gIHZhciBfdXNlTWVyZ2VkU3RhdGUgPSB1c2VNZXJnZWRTdGF0ZShpZCwge1xuICAgICAgdmFsdWU6IGlkXG4gICAgfSksXG4gICAgX3VzZU1lcmdlZFN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VNZXJnZWRTdGF0ZSwgMiksXG4gICAgdXVpZCA9IF91c2VNZXJnZWRTdGF0ZTJbMF0sXG4gICAgc2V0VVVJRCA9IF91c2VNZXJnZWRTdGF0ZTJbMV07XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaW50ZXJuYWxJZCArPSAxO1xuICAgIHZhciBuZXdJZCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcgPyAndGVzdCcgOiBcIlwiLmNvbmNhdCh1bmlxdWVQcmVmaXgsIFwiLVwiKS5jb25jYXQoaW50ZXJuYWxJZCk7XG4gICAgc2V0VVVJRChcInJjLW1lbnUtdXVpZC1cIi5jb25jYXQobmV3SWQpKTtcbiAgfSwgW10pO1xuICByZXR1cm4gdXVpZDtcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBNZW51Q29udGV4dCB9IGZyb20gXCIuLi9jb250ZXh0L01lbnVDb250ZXh0XCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VBY3RpdmUoZXZlbnRLZXksIGRpc2FibGVkLCBvbk1vdXNlRW50ZXIsIG9uTW91c2VMZWF2ZSkge1xuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KE1lbnVDb250ZXh0KSxcbiAgICBhY3RpdmVLZXkgPSBfUmVhY3QkdXNlQ29udGV4dC5hY3RpdmVLZXksXG4gICAgb25BY3RpdmUgPSBfUmVhY3QkdXNlQ29udGV4dC5vbkFjdGl2ZSxcbiAgICBvbkluYWN0aXZlID0gX1JlYWN0JHVzZUNvbnRleHQub25JbmFjdGl2ZTtcbiAgdmFyIHJldCA9IHtcbiAgICBhY3RpdmU6IGFjdGl2ZUtleSA9PT0gZXZlbnRLZXlcbiAgfTtcblxuICAvLyBTa2lwIHdoZW4gZGlzYWJsZWRcbiAgaWYgKCFkaXNhYmxlZCkge1xuICAgIHJldC5vbk1vdXNlRW50ZXIgPSBmdW5jdGlvbiAoZG9tRXZlbnQpIHtcbiAgICAgIG9uTW91c2VFbnRlciA9PT0gbnVsbCB8fCBvbk1vdXNlRW50ZXIgPT09IHZvaWQgMCB8fCBvbk1vdXNlRW50ZXIoe1xuICAgICAgICBrZXk6IGV2ZW50S2V5LFxuICAgICAgICBkb21FdmVudDogZG9tRXZlbnRcbiAgICAgIH0pO1xuICAgICAgb25BY3RpdmUoZXZlbnRLZXkpO1xuICAgIH07XG4gICAgcmV0Lm9uTW91c2VMZWF2ZSA9IGZ1bmN0aW9uIChkb21FdmVudCkge1xuICAgICAgb25Nb3VzZUxlYXZlID09PSBudWxsIHx8IG9uTW91c2VMZWF2ZSA9PT0gdm9pZCAwIHx8IG9uTW91c2VMZWF2ZSh7XG4gICAgICAgIGtleTogZXZlbnRLZXksXG4gICAgICAgIGRvbUV2ZW50OiBkb21FdmVudFxuICAgICAgfSk7XG4gICAgICBvbkluYWN0aXZlKGV2ZW50S2V5KTtcbiAgICB9O1xuICB9XG4gI
2HJldHVybiByZXQ7XG59IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTWVudUNvbnRleHQgfSBmcm9tIFwiLi4vY29udGV4dC9NZW51Q29udGV4dFwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRGlyZWN0aW9uU3R5bGUobGV2ZWwpIHtcbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChNZW51Q29udGV4dCksXG4gICAgbW9kZSA9IF9SZWFjdCR1c2VDb250ZXh0Lm1vZGUsXG4gICAgcnRsID0gX1JlYWN0JHVzZUNvbnRleHQucnRsLFxuICAgIGlubGluZUluZGVudCA9IF9SZWFjdCR1c2VDb250ZXh0LmlubGluZUluZGVudDtcbiAgaWYgKG1vZGUgIT09ICdpbmxpbmUnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGxlbiA9IGxldmVsO1xuICByZXR1cm4gcnRsID8ge1xuICAgIHBhZGRpbmdSaWdodDogbGVuICogaW5saW5lSW5kZW50XG4gIH0gOiB7XG4gICAgcGFkZGluZ0xlZnQ6IGxlbiAqIGlubGluZUluZGVudFxuICB9O1xufSIsImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBJY29uKF9yZWYpIHtcbiAgdmFyIGljb24gPSBfcmVmLmljb24sXG4gICAgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgdmFyIGljb25Ob2RlO1xuICBpZiAoaWNvbiA9PT0gbnVsbCB8fCBpY29uID09PSBmYWxzZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICh0eXBlb2YgaWNvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGljb25Ob2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoaWNvbiwgX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaWNvbiAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAvLyBDb21wYXRpYmxlIGZvciBvcmlnaW4gZGVmaW5pdGlvblxuICAgIGljb25Ob2RlID0gaWNvbjtcbiAgfVxuICByZXR1cm4gaWNvbk5vZGUgfHwgY2hpbGRyZW4gfHwgbnVsbDtcbn0iLCJpbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xudmFyIF9leGNsdWRlZCA9IFtcIml0ZW1cIl07XG5pbXBvcnQgd2FybmluZyBmcm9tIFwicmMtdXRpbC9lcy93YXJuaW5nXCI7XG5cbi8qKlxuICogYG9uQ2xpY2tgIGV2ZW50IHJldHVybiBgaW5mby5pdGVtYCB3aGljaCBwb2ludCB0byByZWFjdCBub2RlIGRpcmVjdGx5LlxuICogV2Ugc2hvdWxkIHdhcm5pbmcgdGhpcyBzaW5jZSBpdCB3aWxsIG5vdCB3b3JrIG9uIEZDLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2Fybkl0ZW1Qcm9wKF9yZWYpIHtcbiAgdmFyIGl0ZW0gPSBfcmVmLml0ZW0sXG4gICAgcmVzdEluZm8gPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3RJbmZvLCAnaXRlbScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHdhcm5pbmcoZmFsc2UsICdgaW5mby5pdGVtYCBpcyBkZXByZWNhdGVkIHNpbmNlIHdlIHdpbGwgbW92ZSB0byBmdW5jdGlvbiBjb21wb25lbnQgdGhhdCBub3QgcHJvdmlkZXMgUmVhY3QgTm9kZSBpbnN0YW5jZSBpbiBmdXR1cmUuJyk7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdEluZm87XG59IiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c1wiO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXJcIjtcbnZhciBfZXhjbHVkZWQgPSBbXCJ0aXRsZVwiLCBcImF0dHJpYnV0ZVwiLCBcImVsZW1lbnRSZWZcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJzdHlsZVwiLCBcImNsYXNzTmFtZVwiLCBcImV2ZW50S2V5XCIsIFwid2FybktleVwiLCBcImRpc2FibGVkXCIsIFwiaXRlbUljb25cIiwgXCJjaGlsZHJlblwiLCBcInJvbGVcIiwgXCJvbk1vdXNlRW50ZXJcIiwgXCJvbk1vdXNlTGVhdmVcIiwgXCJvbkNsaWNrXCIsIFwib25LZXlEb3duXCIsIFwib25Gb2N1c1wiXSxcbiAgX2V4Y2x1ZGVkMyA9IFtcImFjdGl2ZVwiXTtcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IE92ZXJmbG93IGZyb20gJ3JjLW92ZXJmbG93JztcbmltcG9ydCBLZXlDb2RlIGZyb20gXCJyYy11dGlsL2VzL0tleUNvZGVcIjtcbmltcG9ydCBvbWl0IGZyb20gXCJyYy11dGlsL2VzL29taXRcIjtcbmltcG9ydCB7IHVzZUNvbXBvc2VSZWYgfSBmcm9tIFwicmMtdXRpbC9lcy9yZWZcIjtcbmltcG9ydCB3YXJuaW5nIGZyb20gXCJyYy11dGlsL2VzL3dhcm5pbmdcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZU1lbnVJZCB9IGZyb20gXCIuL2NvbnRleHQvSWRDb250ZXh0XCI7XG5pbXBvcnQgeyBNZW51Q29udGV4dCB9IGZyb20gXCIuL2NvbnRleHQvTWVudUNvbnRleHRcIjtcbmltcG9ydCB7
2IHVzZUZ1bGxQYXRoLCB1c2VNZWFzdXJlIH0gZnJvbSBcIi4vY29udGV4dC9QYXRoQ29udGV4dFwiO1xuaW1wb3J0IFByaXZhdGVDb250ZXh0IGZyb20gXCIuL2NvbnRleHQvUHJpdmF0ZUNvbnRleHRcIjtcbmltcG9ydCB1c2VBY3RpdmUgZnJvbSBcIi4vaG9va3MvdXNlQWN0aXZlXCI7XG5pbXBvcnQgdXNlRGlyZWN0aW9uU3R5bGUgZnJvbSBcIi4vaG9va3MvdXNlRGlyZWN0aW9uU3R5bGVcIjtcbmltcG9ydCBJY29uIGZyb20gXCIuL0ljb25cIjtcbmltcG9ydCB7IHdhcm5JdGVtUHJvcCB9IGZyb20gXCIuL3V0aWxzL3dhcm5VdGlsXCI7XG4vLyBTaW5jZSBNZW51IGV2ZW50IHByb3ZpZGUgdGhlIGBpbmZvLml0ZW1gIHdoaWNoIHBvaW50IHRvIHRoZSBNZW51SXRlbSBub2RlIGluc3RhbmNlLlxuLy8gV2UgaGF2ZSB0byB1c2UgY2xhc3MgY29tcG9uZW50IGhlcmUuXG4vLyBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGZyb20gZG9jICYgYXBpIGluIGZ1dHVyZS5cbnZhciBMZWdhY3lNZW51SXRlbSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoTGVnYWN5TWVudUl0ZW0sIF9SZWFjdCRDb21wb25lbnQpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKExlZ2FjeU1lbnVJdGVtKTtcbiAgZnVuY3Rpb24gTGVnYWN5TWVudUl0ZW0oKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExlZ2FjeU1lbnVJdGVtKTtcbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKExlZ2FjeU1lbnVJdGVtLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgdGl0bGUgPSBfdGhpcyRwcm9wcy50aXRsZSxcbiAgICAgICAgYXR0cmlidXRlID0gX3RoaXMkcHJvcHMuYXR0cmlidXRlLFxuICAgICAgICBlbGVtZW50UmVmID0gX3RoaXMkcHJvcHMuZWxlbWVudFJlZixcbiAgICAgICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzLCBfZXhjbHVkZWQpO1xuXG4gICAgICAvLyBIZXJlIHRoZSBwcm9wcyBhcmUgZXZlbnR1YWxseSBwYXNzZWQgdG8gdGhlIERPTSBlbGVtZW50LlxuICAgICAgLy8gUmVhY3QgZG9lcyBub3QgcmVjb2duaXplIG5vbi1zdGFuZGFyZCBhdHRyaWJ1dGVzLlxuICAgICAgLy8gVGhlcmVmb3JlLCByZW1vdmUgdGhlIHByb3BzIHRoYXQgaXMgbm90IHVzZWQgaGVyZS5cbiAgICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvNDEzOTVcbiAgICAgIHZhciBwYXNzZWRQcm9wcyA9IG9taXQocmVzdFByb3BzLCBbJ2V2ZW50S2V5JywgJ3BvcHVwQ2xhc3NOYW1lJywgJ3BvcHVwT2Zmc2V0JywgJ29uVGl0bGVDbGljayddKTtcbiAgICAgIHdhcm5pbmcoIWF0dHJpYnV0ZSwgJ2BhdHRyaWJ1dGVgIG9mIE1lbnUuSXRlbSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcGFzcyBhdHRyaWJ1dGUgZGlyZWN0bHkuJyk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoT3ZlcmZsb3cuSXRlbSwgX2V4dGVuZHMoe30sIGF0dHJpYnV0ZSwge1xuICAgICAgICB0aXRsZTogdHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJyA/IHRpdGxlIDogdW5kZWZpbmVkXG4gICAgICB9LCBwYXNzZWRQcm9wcywge1xuICAgICAgICByZWY6IGVsZW1lbnRSZWZcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIExlZ2FjeU1lbnVJdGVtO1xufShSZWFjdC5Db21wb25lbnQpO1xuLyoqXG4gKiBSZWFsIE1lbnUgSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEludGVybmFsTWVudUl0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgZXZlbnRLZXkgPSBwcm9wcy5ldmVudEtleSxcbiAgICB3YXJuS2V5ID0gcHJvcHMud2FybktleSxcbiAgICBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLFxuICAgIGl0ZW1JY29uID0gcHJvcHMuaXRlbUljb24sXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICByb2xlID0gcHJvcHMucm9sZSxcbiAgICBvbk1vdXNlRW50ZXIgPSBwcm9wcy5vbk1vdXNlRW50ZXIsXG4gICAgb25Nb3VzZUxlYXZlID0gcHJvcHMub25Nb3VzZUxlYXZlLFxuICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLFxuICAgIG9uS2V5RG93biA9IHByb3BzLm9uS2V5RG93bixcbiAgICBvbkZvY3VzID0gcHJvcHMub25Gb2N1cyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZDIpO1xuICB2YXIgZG9tRGF0YUlkID0gdXNlTWVudUlkKGV2ZW50S2V5KTtcbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChNZW51Q29udGV4dCksXG4gICAgcHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQucHJlZml4Q2xzLFxuICAgIG9uSXRlbUNsaWNrID0gX1JlYWN0JHVzZUNvbnRleHQub25JdGVtQ2xpY2ssXG4gICAgY29udGV4dERpc2FibGVkID0gX1JlYWN0JHVzZUNvbnRleHQuZGlzYWJsZWQsXG4gICAgb3ZlcmZsb3dEaXNhYmxlZCA9IF9SZWFjdCR1c2VDb250ZXh0Lm92ZXJmbG93RGlzYWJsZWQsXG4gICAgY29udGV4dEl0ZW1JY29uID0gX1JlYWN0JHVzZUNvbnRleHQuaXRlbUljb24sXG4gICAgc2VsZWN0ZWRLZXlzID0gX1JlYWN0JHVzZUNvbnRleHQuc2VsZWN0ZWRLZXlzLFxuICAgIG9uQWN0aXZlID0gX1JlYWN0JHVzZUNvbnRleHQub25BY3RpdmU7XG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dDIgPSBSZWFjdC51c2VDb250ZXh0KFByaXZhdGVDb250ZXh0KSxcbiAgICBfaW50ZXJuYWxSZW5kZXJNZW51SXRlbSA9IF9SZWFjdCR1c2VDb250ZXh0Mi5faW50ZXJuYWxSZW5kZXJNZW51SXRlbTtcbiAgdmFyIGl0ZW1DbHMgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWl0ZW1cIik7XG4gIHZhciBsZWdhY3lNZW51SXRlbVJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICB2YXIgZWxlbWVudFJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICB2YXIgbWVyZ2VkRGlzYWJsZWQgPSBjb250ZXh0RGlzYWJsZWQgfHwgZGlzYWJsZWQ7XG4gIHZhciBtZXJnZWRFbGVSZWYgPSB1c2VDb21wb3NlUmVmKHJlZiwgZWxlbWVudFJlZik7XG4gIHZhciBjb25uZWN0ZWRLZXlzID0gdXNlRnVsbFBhdGgoZXZlbnRLZXkpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFdhcm4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2Fyb
2ktleSkge1xuICAgIHdhcm5pbmcoZmFsc2UsICdNZW51SXRlbSBzaG91bGQgbm90IGxlYXZlIHVuZGVmaW5lZCBga2V5YC4nKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEluZm8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIGdldEV2ZW50SW5mbyA9IGZ1bmN0aW9uIGdldEV2ZW50SW5mbyhlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogZXZlbnRLZXksXG4gICAgICAvLyBOb3RlOiBGb3IgbGVnYWN5IGNvZGUgaXMgcmV2ZXJzZWQgd2hpY2ggbm90IGxpa2Ugb3RoZXIgYW50ZCBjb21wb25lbnRcbiAgICAgIGtleVBhdGg6IF90b0NvbnN1bWFibGVBcnJheShjb25uZWN0ZWRLZXlzKS5yZXZlcnNlKCksXG4gICAgICBpdGVtOiBsZWdhY3lNZW51SXRlbVJlZi5jdXJyZW50LFxuICAgICAgZG9tRXZlbnQ6IGVcbiAgICB9O1xuICB9O1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEljb24gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIG1lcmdlZEl0ZW1JY29uID0gaXRlbUljb24gfHwgY29udGV4dEl0ZW1JY29uO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQWN0aXZlID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIF91c2VBY3RpdmUgPSB1c2VBY3RpdmUoZXZlbnRLZXksIG1lcmdlZERpc2FibGVkLCBvbk1vdXNlRW50ZXIsIG9uTW91c2VMZWF2ZSksXG4gICAgYWN0aXZlID0gX3VzZUFjdGl2ZS5hY3RpdmUsXG4gICAgYWN0aXZlUHJvcHMgP
2SBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3VzZUFjdGl2ZSwgX2V4Y2x1ZGVkMyk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBTZWxlY3QgPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB2YXIgc2VsZWN0ZWQgPSBzZWxlY3RlZEtleXMuaW5jbHVkZXMoZXZlbnRLZXkpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PSBEaXJlY3Rpb25TdHlsZSA9PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIGRpcmVjdGlvblN0eWxlID0gdXNlRGlyZWN0aW9uU3R5bGUoY29ubmVjdGVkS2V5cy5sZW5ndGgpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRXZlbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIG9uSW50ZXJuYWxDbGljayA9IGZ1bmN0aW9uIG9uSW50ZXJuYWxDbGljayhlKSB7XG4gICAgaWYgKG1lcmdlZERpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBpbmZvID0gZ2V0RXZlbnRJbmZvKGUpO1xuICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwIHx8IG9uQ2xpY2sod2Fybkl0ZW1Qcm9wKGluZm8pKTtcbiAgICBvbkl0ZW1DbGljayhpbmZvKTtcbiAgfTtcbiAgdmFyIG9uSW50ZXJuYWxLZXlEb3duID0gZnVuY3Rpb24gb25JbnRlcm5hbEtleURvd24oZSkge1xuICAgIG9uS2V5RG93biA9PT0gbnVsbCB8fCBvbktleURvd24gPT09IHZvaWQgMCB8fCBvbktleURvd24oZSk7XG4gICAgaWYgKGUud2hpY2ggPT09IEtleUNvZGUuRU5URVIpIHtcbiAgICAgIHZhciBpbmZvID0gZ2V0RXZlbnRJbmZvKGUpO1xuXG4gICAgICAvLyBMZWdhY3kuIEtleSB3aWxsIGFsc28gdHJpZ2dlciBjbGljayBldmVudFxuICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgfHwgb25DbGljayh3YXJuSXRlbVByb3AoaW5mbykpO1xuICAgICAgb25JdGVtQ2xpY2soaW5mbyk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBhY2Nlc3NpYmlsaXR5LiBIZWxwZXIgd2lsbCBmb2N1cyBlbGVtZW50IHdpdGhvdXQga2V5IGJvYXJkLlxuICAgKiBXZSBzaG91bGQgbWFudWFsbHkgdHJpZ2dlciBhbiBhY3RpdmVcbiAgICovXG4gIHZhciBvbkludGVybmFsRm9jdXMgPSBmdW5jdGlvbiBvbkludGVybmFsRm9jdXMoZSkge1xuICAgIG9uQWN0aXZlKGV2ZW50S2V5KTtcbiAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCB8fCBvbkZvY3VzKGUpO1xuICB9O1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIG9wdGlvblJvbGVQcm9wcyA9IHt9O1xuICBpZiAocHJvcHMucm9sZSA9PT0gJ29wdGlvbicpIHtcbiAgICBvcHRpb25Sb2xlUHJvcHNbJ2FyaWEtc2VsZWN0ZWQnXSA9IHNlbGVjdGVkO1xuICB9XG4gIHZhciByZW5kZXJOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGVnYWN5TWVudUl0ZW0sIF9leHRlbmRzKHtcbiAgICByZWY6IGxlZ2FjeU1lbnVJdGVtUmVmLFxuICAgIGVsZW1lbnRSZWY6IG1lcmdlZEVsZVJlZixcbiAgICByb2xlOiByb2xlID09PSBudWxsID8gJ25vbmUnIDogcm9sZSB8fCAnbWVudWl0ZW0nLFxuICAgIHRhYkluZGV4OiBkaXNhYmxlZCA/IG51bGwgOiAtMSxcbiAgICBcImRhdGEtbWVudS1pZFwiOiBvdmVyZmxvd0Rpc2FibGVkICYmIGRvbURhdGFJZCA/IG51bGwgOiBkb21EYXRhSWRcbiAgfSwgb21pdChyZXN0UHJvcHMsIFsnZXh0cmEnXSksIGFjdGl2ZVByb3BzLCBvcHRpb25Sb2xlUHJvcHMsIHtcbiAgICBjb21wb25lbnQ6IFwibGlcIixcbiAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQsXG4gICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZGlyZWN0aW9uU3R5bGUpLCBzdHlsZSksXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGl0ZW1DbHMsIF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChpdGVtQ2xzLCBcIi1hY3RpdmVcIiksIGFjdGl2ZSksIFwiXCIuY29uY2F0KGl0ZW1DbHMsIFwiLXNlbGVjdGVkXCIpLCBzZWxlY3RlZCksIFwiXCIuY29uY2F0KGl0ZW1DbHMsIFwiLWRpc2FibGVkXCIpLCBtZXJnZWREaXNhYmxlZCksIGNsYXNzTmFtZSksXG4gICAgb25DbGljazogb25JbnRlcm5hbENsaWNrLFxuICAgIG9uS2V5RG93bjogb25JbnRlcm5hbEtleURvd24sXG4gICAgb25Gb2N1czogb25JbnRlcm5hbEZvY3VzXG4gIH0pLCBjaGlsZHJlbiwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbiwge1xuICAgIHByb3BzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICAgIGlzU2VsZWN0ZWQ6IHNlbGVjdGVkXG4gICAgfSksXG4gICAgaWNvbjogbWVyZ2VkSXRlbUljb25cbiAgfSkpO1xuICBpZiAoX2ludGVybmFsUmVuZGVyTWVudUl0ZW0pIHtcbiAgICByZW5kZXJOb2RlID0gX2ludGVybmFsUmVuZGVyTWVudUl0ZW0ocmVuZGVyTm9kZSwgcHJvcHMsIHtcbiAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZFxuICAgIH0pO1xuICB9XG4gIHJldHVybiByZW5kZXJOb2RlO1xufSk7XG5mdW5jdGlvbiBNZW51SXRlbShwcm9wcywgcmVmKSB7XG4gIHZhciBldmVudEtleSA9IHByb3BzLmV2ZW50S2V5O1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09IFJlY29yZCBLZXlQYXRoID09PT09PT09PT09PT09PT09PT09XG4gIHZhciBtZWFzdXJlID0gdXNlTWVhc3VyZSgpO1xuICB2YXIgY29ubmVjdGVkS2V5UGF0aCA9IHVzZUZ1bGxQYXRoKGV2ZW50S2V5KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAobWVhc3VyZSkge1xuICAgICAgbWVhc3VyZS5yZWdpc3RlclBhdGgoZXZlbnRLZXksIGNvbm5lY3RlZEtleVBhdGgpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbWVhc3VyZS51bnJlZ2lzdGVyUGF0aChldmVudEtleSwgY29ubmVjdGVkS2V5UGF0aCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2Nvbm5lY3RlZEtleVBhdGhdKTtcbiAgaWYgKG1lYXN1cmUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09PT09XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnRlcm5hbE1lbnVJdGVtLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZlxuICB9KSk7XG59XG5leHBvcnQgZGVmYXVsdCAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihNZW51SXRlbSk7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xudmFyIF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNoaWxkcmVuXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBNZW51Q29udGV4dCB9IGZyb20gXCIuLi9jb250ZXh0L01lbnVDb250ZXh0XCI7XG52YXIgSW50ZXJuYWxTdWJNZW51TGlzdCA9IGZ1bmN0aW9uIEludGVybmFsU3ViTWVudUxpc3QoX3JlZiwgcmVmKSB7XG4gIHZhciBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoTWVudUNvbnRleHQpLFxuICAgIHByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LnByZWZpeENscyxcbiAgICBtb2RlID0gX1JlYWN0JHVzZUNvbnRleHQubW9kZSxcbiAgICBydGwgPSBfUmVhY3QkdXNlQ29udGV4dC5ydGw7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMocHJlZml4Q2xzLCBydGwgJiYgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIFwiXCIuY29uY2F0KHByZWZpeENscywgXCItc3ViXCIpLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQobW9kZSA9PT0gJ2lubGluZScgPyAnaW5saW5lJyA6ICd2ZXJ0aWNhbCc
2pLCBjbGFzc05hbWUpLFxuICAgIHJvbGU6IFwibWVudVwiXG4gIH0sIHJlc3RQcm9wcywge1xuICAgIFwiZGF0YS1tZW51LWxpc3RcIjogdHJ1ZSxcbiAgICByZWY6IHJlZlxuICB9KSwgY2hpbGRyZW4pO1xufTtcbnZhciBTdWJNZW51TGlzdCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKEludGVybmFsU3ViTWVudUxpc3QpO1xuU3ViTWVudUxpc3QuZGlzcGxheU5hbWUgPSAnU3ViTWVudUxpc3QnO1xuZXhwb3J0IGRlZmF1bHQgU3ViTWVudUxpc3Q7IiwiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCB0b0FycmF5IGZyb20gXCJyYy11dGlsL2VzL0NoaWxkcmVuL3RvQXJyYXlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNoaWxkcmVuKGNoaWxkcmVuLCBrZXlQYXRoKSB7XG4gIHJldHVybiB0b0FycmF5KGNoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xuICAgIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgdmFyIF9ldmVudEtleSwgX2NoaWxkJHByb3BzO1xuICAgICAgdmFyIGtleSA9IGNoaWxkLmtleTtcbiAgICAgIHZhciBldmVudEtleSA9IChfZXZlbnRLZXkgPSAoX2NoaWxkJHByb3BzID0gY2hpbGQucHJvcHMpID09PSBudWxsIHx8IF9jaGlsZCRwcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NoaWxkJHByb3BzLmV2ZW50S2V5KSAhPT0gbnVsbCAmJiBfZXZlbnRLZXkgIT09IHZvaWQgMCA/IF9ldmVudEtleSA6IGtleTtcbiAgICAgIHZhciBlbXB0eUtleSA9IGV2ZW50S2V5ID09PSBudWxsIHx8IGV2ZW50S2V5ID09PSB1bmRlZmluZWQ7XG4gICAgICBpZiAoZW1wdHlLZXkpIHtcbiAgICAgICAgZXZlbnRLZXkgPSBcInRtcF9rZXktXCIuY29uY2F0KFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoa2V5UGF0aCksIFtpbmRleF0pLmpvaW4oJy0nKSk7XG4gICAgICB9XG4gICAgICB2Y
2XIgY2xvbmVQcm9wcyA9IHtcbiAgICAgICAga2V5OiBldmVudEtleSxcbiAgICAgICAgZXZlbnRLZXk6IGV2ZW50S2V5XG4gICAgICB9O1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZW1wdHlLZXkpIHtcbiAgICAgICAgY2xvbmVQcm9wcy53YXJuS2V5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCBjbG9uZVByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KTtcbn0iLCJ2YXIgYXV0b0FkanVzdE92ZXJmbG93ID0ge1xuICBhZGp1c3RYOiAxLFxuICBhZGp1c3RZOiAxXG59O1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzID0ge1xuICB0b3BMZWZ0OiB7XG4gICAgcG9pbnRzOiBbJ2JsJywgJ3RsJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvd1xuICB9LFxuICB0b3BSaWdodDoge1xuICAgIHBvaW50czogWydicicsICd0ciddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3dcbiAgfSxcbiAgYm90dG9tTGVmdDoge1xuICAgIHBvaW50czogWyd0bCcsICdibCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3dcbiAgfSxcbiAgYm90dG9tUmlnaHQ6IHtcbiAgICBwb2ludHM6IFsndHInLCAnYnInXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93XG4gIH0sXG4gIGxlZnRUb3A6IHtcbiAgICBwb2ludHM6IFsndHInLCAndGwnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93XG4gIH0sXG4gIGxlZnRCb3R0b206IHtcbiAgICBwb2ludHM6IFsnYnInLCAnYmwnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93XG4gIH0sXG4gIHJpZ2h0VG9wOiB7XG4gICAgcG9pbnRzOiBbJ3RsJywgJ3RyJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvd1xuICB9LFxuICByaWdodEJvdHRvbToge1xuICAgIHBvaW50czogWydibCcsICdiciddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3dcbiAgfVxufTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50c1J0bCA9IHtcbiAgdG9wTGVmdDoge1xuICAgIHBvaW50czogWydibCcsICd0bCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3dcbiAgfSxcbiAgdG9wUmlnaHQ6IHtcbiAgICBwb2ludHM6IFsnYnInLCAndHInXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93XG4gIH0sXG4gIGJvdHRvbUxlZnQ6IHtcbiAgICBwb2ludHM6IFsndGwnLCAnYmwnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93XG4gIH0sXG4gIGJvdHRvbVJpZ2h0OiB7XG4gICAgcG9pbnRzOiBbJ3RyJywgJ2JyJ10sXG4gICAgb3ZlcmZsb3c6IGF1dG9BZGp1c3RPdmVyZmxvd1xuICB9LFxuICByaWdodFRvcDoge1xuICAgIHBvaW50czogWyd0cicsICd0bCddLFxuICAgIG92ZXJmbG93OiBhdXRvQWRqdXN0T3ZlcmZsb3dcbiAgfSxcbiAgcmlnaHRCb3R0b206IHtcbiAgICBwb2ludHM6IFsnYnInLCAnYmwnXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93XG4gIH0sXG4gIGxlZnRUb3A6IHtcbiAgICBwb2ludHM6IFsndGwnLCAndHInXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93XG4gIH0sXG4gIGxlZnRCb3R0b206IHtcbiAgICBwb2ludHM6IFsnYmwnLCAnYnInXSxcbiAgICBvdmVyZmxvdzogYXV0b0FkanVzdE92ZXJmbG93XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBwbGFjZW1lbnRzOyIsImV4cG9ydCBmdW5jdGlvbiBnZXRNb3Rpb24obW9kZSwgbW90aW9uLCBkZWZhdWx0TW90aW9ucykge1xuICBpZiAobW90aW9uKSB7XG4gICAgcmV0dXJuIG1vdGlvbjtcbiAgfVxuICBpZiAoZGVmYXVsdE1vdGlvbnMpIHtcbiAgICByZXR1cm4gZGVmYXVsdE1vdGlvbnNbbW9kZV0gfHwgZGVmYXVsdE1vdGlvbnMub3RoZXI7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn0iLCJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRyaWdnZXIgZnJvbSAnQHJjLWNvbXBvbmVudC90cmlnZ2VyJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHJhZiBmcm9tIFwicmMtdXRpbC9lcy9yYWZcIjtcbmltcG9ydCB7IE1lbnVDb250ZXh0IH0gZnJvbSBcIi4uL2NvbnRleHQvTWVudUNvbnRleHRcIjtcbmltcG9ydCB7IHBsYWNlbWVudHMsIHBsYWNlbWVudHNSdGwgfSBmcm9tIFwiLi4vcGxhY2VtZW50c1wiO1xuaW1wb3J0IHsgZ2V0TW90aW9uIH0gZnJvbSBcIi4uL3V0aWxzL21vdGlvblV0aWxcIjtcbnZhciBwb3B1cFBsYWNlbWVudE1hcCA9IHtcbiAgaG9yaXpvbnRhbDogJ2JvdHRvbUxlZnQnLFxuICB2ZXJ0aWNhbDogJ3JpZ2h0VG9wJyxcbiAgJ3ZlcnRpY2FsLWxlZnQnOiAncmlnaHRUb3AnLFxuICAndmVydGljYWwtcmlnaHQnOiAnbGVmdFRvcCdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQb3B1cFRyaWdnZXIoX3JlZikge1xuICB2YXIgcHJlZml4Q2xzID0gX3JlZi5wcmVmaXhDbHMsXG4gICAgdmlzaWJsZSA9IF9yZWYudmlzaWJsZSxcbiAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgcG9wdXAgPSBfcmVmLnBvcHVwLFxuICAgIHBvcHVwU3R5bGUgPSBfcmVmLnBvcHVwU3R5bGUsXG4gICAgcG9wdXBDbGFzc05hbWUgPSBfcmVmLnBvcHVwQ2xhc3NOYW1lLFxuICAgIHBvcHVwT2Zmc2V0ID0gX3JlZi5wb3B1cE9mZnNldCxcbiAgICBkaXNhYmxlZCA9IF9yZWYuZGlzYWJsZWQsXG4gICAgbW9kZSA9IF9yZWYubW9kZSxcbiAgICBvblZpc2libGVDaGFuZ2UgPSBfcmVmLm9uVmlzaWJsZUNoYW5nZTtcbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChNZW51Q29udGV4dCksXG4gICAgZ2V0UG9wdXBDb250YWluZXIgPSBfUmVhY3QkdXNlQ29udGV4dC5nZXRQb3B1cENvbnRhaW5lcixcbiAgICBydGwgPSBfUmVhY3QkdXNlQ29udGV4dC5ydGwsXG4gICAgc3ViTWVudU9wZW5EZWxheSA9IF9SZWFjdCR1c2VDb250ZXh0LnN1Yk1lbnVPcGVuRGVsYXksXG4gICAgc3ViTWVudUNsb3NlRGVsYXkgPSBfUmVhY3QkdXNlQ29udGV4dC5zdWJNZW51Q2xvc2VEZWxheSxcbiAgICBidWlsdGluUGxhY2VtZW50cyA9IF9SZWFjdCR1c2VDb250ZXh0LmJ1aWx0aW5QbGFjZW1lbnRzLFxuICAgIHRyaWdnZXJTdWJNZW51QWN0aW9uID0gX1JlYWN0JHVzZUNvbnRleHQudHJpZ2dlclN1Yk1lbnVBY3Rpb24sXG4gICAgZm9yY2VTdWJNZW51UmVuZGVyID0gX1JlYWN0JHVzZUNvbnRleHQuZm9yY2VTdWJNZW51UmVuZGVyLFxuICAgIHJvb3RDbGFzc05hbWUgPSBfUmVhY3QkdXNlQ29udGV4dC5yb290Q2xhc3NOYW1lLFxuICAgIG1vdGlvbiA9I
2F9SZWFjdCR1c2VDb250ZXh0Lm1vdGlvbixcbiAgICBkZWZhdWx0TW90aW9ucyA9IF9SZWFjdCR1c2VDb250ZXh0LmRlZmF1bHRNb3Rpb25zO1xuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLFxuICAgIF9SZWFjdCR1c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfUmVhY3QkdXNlU3RhdGUsIDIpLFxuICAgIGlubmVyVmlzaWJsZSA9IF9SZWFjdCR1c2VTdGF0ZTJbMF0sXG4gICAgc2V0SW5uZXJWaXNpYmxlID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcbiAgdmFyIHBsYWNlbWVudCA9IHJ0bCA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcGxhY2VtZW50c1J0bCksIGJ1aWx0aW5QbGFjZW1lbnRzKSA6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcGxhY2VtZW50cyksIGJ1aWx0aW5QbGFjZW1lbnRzKTtcbiAgdmFyIHBvcHVwUGxhY2VtZW50ID0gcG9wdXBQbGFjZW1lbnRNYXBbbW9kZV07XG4gIHZhciB0YXJnZXRNb3Rpb24gPSBnZXRNb3Rpb24obW9kZSwgbW90aW9uLCBkZWZhdWx0TW90aW9ucyk7XG4gIHZhciB0YXJnZXRNb3Rpb25SZWYgPSBSZWFjdC51c2VSZWYodGFyZ2V0TW90aW9uKTtcbiAgaWYgKG1vZGUgIT09ICdpbmxpbmUnKSB7XG4gICAgLyoqXG4gICAgICogUG9wdXBUcmlnZ2VyIGlzIG9ubHkgdXNlZCBmb3IgdmVydGljYWwgYW5kIGhvcml6b250YWwgdHlwZXMuXG4gICAgICogV2hlbiBjb2xsYXBzZWQgaXMgdW5mb2xkZWQsIHRoZSBpbmxpbmUgYW5pbWF0aW9uIHdpbGwgZGVzdHJveSB0aGUgdmVydGljYWwgYW5pbWF0aW9uLlxuICAgICAqL1xuICAgIHRhcmdldE1vdGlvblJlZi5jdXJyZW50ID0gdGFyZ2V0TW90aW9uO1xuICB9XG4gIHZhciBtZXJnZWRNb3Rpb24gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRhcmdldE1vdGlvblJlZi5jdXJyZW50KSwge30sIHtcbiAgICBsZWF2ZWRDbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaGlkZGVuXCIpLFxuICAgIHJlbW92ZU9uTGVhdmU6IGZhbHNlLFxuICAgIG1vdGlvbkFwcGVhcjogdHJ1ZVxuICB9KTtcblxuICAvLyBEZWxheSB0byBjaGFuZ2UgdmlzaWJsZVxuICB2YXIgdmlzaWJsZVJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZpc2libGVSZWYuY3VycmVudCA9IHJhZihmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRJbm5lclZpc2libGUodmlzaWJsZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJhZi5jYW5jZWwodmlzaWJsZVJlZi5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbdmlzaWJsZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVHJpZ2dlciwge1xuICAgIHByZWZpeENsczogcHJlZml4Q2xzLFxuICAgIHBvcHVwQ2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItcG9wdXBcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIHJ0bCksIHBvcHVwQ2xhc3NOYW1lLCByb290Q2xhc3NOYW1lKSxcbiAgICBzdHJldGNoOiBtb2RlID09PSAnaG9yaXpvbnRhbCcgPyAnbWluV2lkdGgnIDogbnVsbCxcbiAgICBnZXRQb3B1cENvbnRhaW5lcjogZ2V0UG9wdXBDb250YWluZXIsXG4gICAgYnVpbHRpblBsYWNlbWVudHM6IHBsYWNlbWVudCxcbiAgICBwb3B1cFBsYWNlbWVudDogcG9wdXBQbGFjZW1lbnQsXG4gICAgcG9wdXBWaXNpYmxlOiBpbm5lclZpc2libGUsXG4gICAgcG9wdXA6IHBvcHVwLFxuICAgIHBvcHVwU3R5bGU6IHBvcHVwU3R5bGUsXG4gICAgcG9wdXBBbGlnbjogcG9wdXBPZmZzZXQgJiYge1xuICAgICAgb2Zmc2V0OiBwb3B1cE9mZnNldFxuICAgIH0sXG4gICAgYWN0aW9uOiBkaXNhYmxlZCA/IFtdIDogW3RyaWdnZXJTdWJNZW51QWN0aW9uXSxcbiAgICBtb3VzZUVudGVyRGVsYXk6IHN1Yk1lbnVPcGVuRGVsYXksXG4gICAgbW91c2VMZWF2ZURlbGF5OiBzdWJNZW51Q2xvc2VEZWxheSxcbiAgICBvblBvcHVwVmlzaWJsZUNoYW5nZTogb25WaXNpYmxlQ2hhbmdlLFxuICAgIGZvcmNlUmVuZGVyOiBmb3JjZVN1Yk1lbnVSZW5kZXIsXG4gICAgcG9wdXBNb3Rpb246IG1lcmdlZE1vdGlvbixcbiAgICBmcmVzaDogdHJ1ZVxuICB9LCBjaGlsZHJlbik7XG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ1NTTW90aW9uIGZyb20gJ3JjLW1vdGlvbic7XG5pbXBvcnQgeyBnZXRNb3Rpb24gfSBmcm9tIFwiLi4vdXRpbHMvbW90aW9uVXRpbFwiO1xuaW1wb3J0IE1lbnVDb250ZXh0UHJvdmlkZXIsIHsgTWVudUNvbnRleHQgfSBmcm9tIFwiLi4vY29udGV4dC9NZW51Q29udGV4dFwiO1xuaW1wb3J0IFN1Yk1lbnVMaXN0IGZyb20gXCIuL1N1Yk1lbnVMaXN0XCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBJbmxpbmVTdWJNZW51TGlzdChfcmVmKSB7XG4gIHZhciBpZCA9IF9yZWYuaWQsXG4gICAgb3BlbiA9IF9yZWYub3BlbixcbiAgICBrZXlQYXRoID0gX3JlZi5rZXlQYXRoLFxuICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgdmFyIGZpeGVkTW9kZSA9ICdpbmxpbmUnO1xuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KE1lbnVDb250ZXh0KSxcbiAgICBwcmVmaXhDbHMgPSBfUmVhY3QkdXNlQ29udGV4dC5wcmVmaXhDbHMsXG4gICAgZm9yY2VTdWJNZW51UmVuZGVyID0gX1JlYWN0JHVzZUNvbnRleHQuZm9yY2VTdWJNZW51UmVuZGVyLFxuICAgIG1vdGlvbiA9IF9SZWFjdCR1c2VDb250ZXh0Lm1vdGlvbixcbiAgICBkZWZhdWx0TW90aW9ucyA9IF9SZWFjdCR1c2VDb250ZXh0LmRlZmF1bHRNb3Rpb25zLFxuICAgIG1vZGUgPSBfUmVhY3QkdXNlQ29udGV4dC5tb2RlO1xuXG4gIC8vIEFsd2F5cyB1c2UgbGF0ZXN0IG1vZGUgY2hlY2tcbiAgdmFyIHNhbWVNb2RlUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgc2FtZU1vZGVSZWYuY3VycmVudCA9IG1vZGUgPT09IGZpeGVkTW9kZTtcblxuICAvLyBXZSByZWNvcmQgYGRlc3Ryb3lgIG1hcmsgaGVyZSBzaW5jZSB3aGVuIG1vZGUgY2hhbmdlIGZyb20gYGlubGluZWAgdG8gb3RoZXJzLlxuICAvLyBUaGUgaW5saW5lIGxpc3Qgc2hvdWxkIHJlbW92ZSB3aGVuIG1vdGlvbiBlbmQuXG4gIHZhciBfUmVhY3QkdXNlU3Rh
2dGUgPSBSZWFjdC51c2VTdGF0ZSghc2FtZU1vZGVSZWYuY3VycmVudCksXG4gICAgX1JlYWN0JHVzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgZGVzdHJveSA9IF9SZWFjdCR1c2VTdGF0ZTJbMF0sXG4gICAgc2V0RGVzdHJveSA9IF9SZWFjdCR1c2VTdGF0ZTJbMV07XG4gIHZhciBtZXJnZWRPcGVuID0gc2FtZU1vZGVSZWYuY3VycmVudCA/IG9wZW4gOiBmYWxzZTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRWZmZWN0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBSZXNldCBkZXN0cm95IHN0YXRlIHdoZW4gbW9kZSBjaGFuZ2UgYmFja1xuICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChzYW1lTW9kZVJlZi5jdXJyZW50KSB7XG4gICAgICBzZXREZXN0cm95KGZhbHNlKTtcbiAgICB9XG4gIH0sIFttb2RlXSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFJlbmRlciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIG1lcmdlZE1vdGlvbiA9IF9vYmplY3RTcHJlYWQoe30sIGdldE1vdGlvbihmaXhlZE1vZGUsIG1vdGlvbiwgZGVmYXVsdE1vdGlvbnMpKTtcblxuICAvLyBObyBuZWVkIGFwcGVhciBzaW5jZSBuZXN0IGlubGluZUNvbGxhcHNlIGNoYW5nZWRcbiAgaWYgKGtleVBhdGgubGVuZ3RoID4gMSkge1xuICAgIG1lcmdlZE1vdGlvbi5tb3Rpb25BcHBlYXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIEhpZGUgaW5saW5lIGxpc3Qgd2hlbiBtb2RlIGNoYW5nZWQgYW5kIG1vdGlvbiBlbmRcbiAgdmFyIG9yaWdpbk9uVmlzaWJsZUNoYW5nZWQgPSBtZXJnZWRNb3Rpb24ub25WaXNpYmxlQ2hhbmdlZDtcbiAgbWVyZ2VkTW90aW9uLm9uVmlzaWJsZUNoYW5nZWQgPSBmdW5jdGlvbiAobmV3VmlzaWJsZSkge1xuICAgIGlmICghc2FtZU1vZGVSZWYuY3VycmVudCAmJiAhbmV3VmlzaWJsZSkge1xuICAgICAgc2V0RGVzdHJveSh0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbk9uVmlzaWJsZUNoYW5nZWQgPT09IG51bGwgfHwgb3JpZ2luT25WaXNpYmxlQ2hhbmdlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3JpZ2luT25WaXNpYmxlQ2hhbmdlZChuZXdWaXNpYmxlKTtcbiAgfTtcbiAgaWYgKGRlc3Ryb3kpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudUNvbnRleHRQcm92aWRlciwge1xuICAgIG1vZGU6IGZpeGVkTW9kZSxcbiAgICBsb2NrZWQ6ICFzYW1lTW9kZVJlZi5jdXJyZW50XG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENTU01vdGlvbiwgX2V4dGVuZHMoe1xuICAgIHZpc2libGU6IG1lcmdlZE9wZW5cbiAgfSwgbWVyZ2VkTW90aW9uLCB7XG4gICAgZm9yY2VSZW5kZXI6IGZvcmNlU3ViTWVudVJlbmRlcixcbiAgICByZW1vdmVPbkxlYXZlOiBmYWxzZSxcbiAgICBsZWF2ZWRDbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaGlkZGVuXCIpXG4gIH0pLCBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICB2YXIgbW90aW9uQ2xhc3NOYW1lID0gX3JlZjIuY2xhc3NOYW1lLFxuICAgICAgbW90aW9uU3R5bGUgPSBfcmVmMi5zdHlsZTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3ViTWVudUxpc3QsIHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGNsYXNzTmFtZTogbW90aW9uQ2xhc3NOYW1lLFxuICAgICAgc3R5bGU6IG1vdGlvblN0eWxlXG4gICAgfSwgY2hpbGRyZW4pO1xuICB9KSk7XG59IiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDJcIjtcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbnZhciBfZXhjbHVkZWQgPSBbXCJzdHlsZVwiLCBcImNsYXNzTmFtZVwiLCBcInRpdGxlXCIsIFwiZXZlbnRLZXlcIiwgXCJ3YXJuS2V5XCIsIFwiZGlzYWJsZWRcIiwgXCJpbnRlcm5hbFBvcHVwQ2xvc2VcIiwgXCJjaGlsZHJlblwiLCBcIml0ZW1JY29uXCIsIFwiZXhwYW5kSWNvblwiLCBcInBvcHVwQ2xhc3NOYW1lXCIsIFwicG9wdXBPZmZzZXRcIiwgXCJwb3B1cFN0eWxlXCIsIFwib25DbGlja1wiLCBcIm9uTW91c2VFbnRlclwiLCBcIm9uTW91c2VMZWF2ZVwiLCBcIm9uVGl0bGVDbGlja1wiLCBcIm9uVGl0bGVNb3VzZUVudGVyXCIsIFwib25UaXRsZU1vdXNlTGVhdmVcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJhY3RpdmVcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBPdmVyZmxvdyBmcm9tICdyYy1vdmVyZmxvdyc7XG5pbXBvcnQgd2FybmluZyBmcm9tIFwicmMtdXRpbC9lcy93YXJuaW5nXCI7XG5pbXBvcnQgU3ViTWVudUxpc3QgZnJvbSBcIi4vU3ViTWVudUxpc3RcIjtcbmltcG9ydCB7IHBhcnNlQ2hpbGRyZW4gfSBmcm9tIFwiLi4vdXRpbHMvY29tbW9uVXRpbFwiO1xuaW1wb3J0IE1lbnVDb250ZXh0UHJvdmlkZXIsIHsgTWVudUNvbnRleHQgfSBmcm9tIFwiLi4vY29udGV4dC9NZW51Q29udGV4dFwiO1xuaW1wb3J0IHVzZU1lbW9DYWxsYmFjayBmcm9tIFwiLi4vaG9va3MvdXNlTWVtb0NhbGxiYWNrXCI7XG5pbXBvcnQgUG9wdXBUcmlnZ2VyIGZyb20gXCIuL1BvcHVwVHJpZ2dlclwiO1xuaW1wb3J0IEljb24gZnJvbSBcIi4uL0ljb25cIjtcbmltcG9ydCB1c2VBY3RpdmUgZnJvbSBcIi4uL2hvb2tzL3VzZUFjdGl2ZVwiO1xuaW1wb3J0IHsgd2Fybkl0ZW1Qcm9wIH0gZnJvbSBcIi4uL3V0aWxzL3dhcm5VdGlsXCI7XG5pbXBvcnQgdXNlRGlyZWN0aW9uU3R5bGUgZnJvbSBcIi4uL2hvb2tzL3VzZURpcmVjdGlvblN0eWxlXCI7XG5pbXBvcnQgSW5saW5lU3ViTWVudUxpc3QgZnJvbSBcIi4vSW5saW5lU3ViTWVudUxpc3RcIjtcbmltcG9ydCB7
2IFBhdGhUcmFja2VyQ29udGV4dCwgUGF0aFVzZXJDb250ZXh0LCB1c2VGdWxsUGF0aCwgdXNlTWVhc3VyZSB9IGZyb20gXCIuLi9jb250ZXh0L1BhdGhDb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VNZW51SWQgfSBmcm9tIFwiLi4vY29udGV4dC9JZENvbnRleHRcIjtcbmltcG9ydCBQcml2YXRlQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9Qcml2YXRlQ29udGV4dFwiO1xudmFyIEludGVybmFsU3ViTWVudSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBzdHlsZSA9IHByb3BzLnN0eWxlLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICB0aXRsZSA9IHByb3BzLnRpdGxlLFxuICAgIGV2ZW50S2V5ID0gcHJvcHMuZXZlbnRLZXksXG4gICAgd2FybktleSA9IHByb3BzLndhcm5LZXksXG4gICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICBpbnRlcm5hbFBvcHVwQ2xvc2UgPSBwcm9wcy5pbnRlcm5hbFBvcHVwQ2xvc2UsXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpdGVtSWNvbiA9IHByb3BzLml0ZW1JY29uLFxuICAgIGV4cGFuZEljb24gPSBwcm9wcy5leHBhbmRJY29uLFxuICAgIHBvcHVwQ2xhc3NOYW1lID0gcHJvcHMucG9wdXBDbGFzc05hbWUsXG4gICAgcG9wdXBPZmZzZXQgPSBwcm9wcy5wb3B1cE9mZnNldCxcbiAgICBwb3B1cFN0eWxlID0gcHJvcHMucG9wdXBTdHlsZSxcbiAgICBvbkNsaWNrID0gcHJvcHMub25DbGljayxcbiAgICBvbk1vdXNlRW50ZXIgPSBwcm9wcy5vbk1vdXNlRW50ZXIsXG4gICAgb25Nb3VzZUxlYXZlID0gcHJvcHMub25Nb3VzZUxlYXZlLFxuICAgIG9uVGl0bGVDbGljayA9IHByb3BzLm9uVGl0bGVDbGljayxcbiAgICBvblRpdGxlTW91c2VFbnRlciA9IHByb3BzLm9uVGl0bGVNb3VzZUVudGVyLFxuICAgIG9uVGl0bGVNb3VzZUxlYXZlID0gcHJvcHMub25UaXRsZU1vdXNlTGVhdmUsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQpO1xuICB2YXIgZG9tRGF0YUlkID0gdXNlTWVudUlkKGV2ZW50S2V5KTtcbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChNZW51Q29udGV4dCksXG4gICAgcHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQucHJlZml4Q2xzLFxuICAgIG1vZGUgPSBfUmVhY3QkdXNlQ29udGV4dC5tb2RlLFxuICAgIG9wZW5LZXlzID0gX1JlYWN0JHVzZUNvbnRleHQub3BlbktleXMsXG4gICAgY29udGV4dERpc2FibGVkID0gX1JlYWN0JHVzZUNvbnRleHQuZGlzYWJsZWQsXG4gICAgb3ZlcmZsb3dEaXNhYmxlZCA9IF9SZWFjdCR1c2VDb250ZXh0Lm92ZXJmbG93RGlzYWJsZWQsXG4gICAgYWN0aXZlS2V5ID0gX1JlYWN0JHVzZUNvbnRleHQuYWN0aXZlS2V5LFxuICAgIHNlbGVjdGVkS2V5cyA9IF9SZWFjdCR1c2VDb250ZXh0LnNlbGVjdGVkS2V5cyxcbiAgICBjb250ZXh0SXRlbUljb24gPSBfUmVhY3QkdXNlQ29udGV4dC5pdGVtSWNvbixcbiAgICBjb250ZXh0RXhwYW5kSWNvbiA9IF9SZWFjdCR1c2VDb250ZXh0LmV4cGFuZEljb24sXG4gICAgb25JdGVtQ2xpY2sgPSBfUmVhY3QkdXNlQ29udGV4dC5vbkl0ZW1DbGljayxcbiAgICBvbk9wZW5DaGFuZ2UgPSBfUmVhY3QkdXNlQ29udGV4dC5vbk9wZW5DaGFuZ2UsXG4gICAgb25BY3RpdmUgPSBfUmVhY3QkdXNlQ29udGV4dC5vbkFjdGl2ZTtcbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0MiA9IFJlYWN0LnVzZUNvbnRleHQoUHJpdmF0ZUNvbnRleHQpLFxuICAgIF9pbnRlcm5hbFJlbmRlclN1Yk1lbnVJdGVtID0gX1JlYWN0JHVzZUNvbnRleHQyLl9pbnRlcm5hbFJlbmRlclN1Yk1lbnVJdGVtO1xuICB2YXIgX1JlYWN0JHVzZUNvbnRleHQzID0gUmVhY3QudXNlQ29udGV4dChQYXRoVXNlckNvbnRleHQpLFxuICAgIGlzU3ViUGF0aEtleSA9IF9SZWFjdCR1c2VDb250ZXh0My5pc1N1YlBhdGhLZXk7XG4gIHZhciBjb25uZWN0ZWRQYXRoID0gdXNlRnVsbFBhdGgoKTtcbiAgdmFyIHN1Yk1lbnVQcmVmaXhDbHMgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLXN1Ym1lbnVcIik7XG4gIHZhciBtZXJnZWREaXNhYmxlZCA9IGNvbnRleHREaXNhYmxlZCB8fCBkaXNhYmxlZDtcbiAgdmFyIGVsZW1lbnRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgdmFyIHBvcHVwUmVmID0gUmVhY3QudXNlUmVmKCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gV2FybiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuS2V5KSB7XG4gICAgd2FybmluZyhmYWxzZSwgJ1N1Yk1lbnUgc2hvdWxkIG5vdCBsZWF2ZSB1bmRlZmluZWQgYGtleWAuJyk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBJY29uID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHZhciBtZXJnZWRJdGVtSWNvbiA9IGl0ZW1JY29uICE9PSBudWxsICYmIGl0ZW1JY29uICE9PSB2b2lkIDAgPyBpdGVtSWNvbiA6IGNvbnRleHRJdGVtSWNvbjtcbiAgdmFyIG1lcmdlZEV4cGFuZEljb24gPSBleHBhbmRJY29uICE9PSBudWxsICYmIGV4cGFuZEljb24gIT09IHZvaWQgMCA/IGV4cGFuZEljb24gOiBjb250ZXh0RXhwYW5kSWNvbjtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBPcGVuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHZhciBvcmlnaW5PcGVuID0gb3BlbktleXMuaW5jbHVkZXMoZXZlbnRLZXkpO1xuICB2YXIgb3BlbiA9ICFvdmVyZmxvd0Rpc2FibGVkICYmIG9yaWdpbk9wZW47XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBTZWxlY3QgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB2YXIgY2hpbGRyZW5TZWxlY3RlZCA9IGlzU3ViUGF0aEtleShzZWxlY3RlZEtleXMsIGV2ZW50S2V5KTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEFjdGl2ZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHZhciBfdXNlQWN0aXZlID0gdXNlQWN0aXZlKGV2ZW50S2V5LCBtZXJnZWREaXNhYmxlZCwgb25UaXRsZU1vdXNlRW50ZXIsIG9uVGl0bGVNb3VzZUxlYXZlKSxcbiAgICBhY3RpdmUgPSBfdXNlQWN0aXZlLmFjdGl2ZSxcbiAgICBhY3RpdmVQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdXNlQWN0aXZlLCBfZXhjbHVkZWQyKTtcblxuICAvLyBGYWxsYmFjayBvZiBhY3RpdmUgY2hlY2sgdG8gYXZvaWQgaG92ZXIgb24gbWVudSB0aXRsZSBvciBkaXNhYmxlZCBpdGVtXG4gIHZhciBfUmVhY3QkdXNlU3Rh
2dGUgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksXG4gICAgX1JlYWN0JHVzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZSwgMiksXG4gICAgY2hpbGRyZW5BY3RpdmUgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgIHNldENoaWxkcmVuQWN0aXZlID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcbiAgdmFyIHRyaWdnZXJDaGlsZHJlbkFjdGl2ZSA9IGZ1bmN0aW9uIHRyaWdnZXJDaGlsZHJlbkFjdGl2ZShuZXdBY3RpdmUpIHtcbiAgICBpZiAoIW1lcmdlZERpc2FibGVkKSB7XG4gICAgICBzZXRDaGlsZHJlbkFjdGl2ZShuZXdBY3RpdmUpO1xuICAgIH1cbiAgfTtcbiAgdmFyIG9uSW50ZXJuYWxNb3VzZUVudGVyID0gZnVuY3Rpb24gb25JbnRlcm5hbE1vdXNlRW50ZXIoZG9tRXZlbnQpIHtcbiAgICB0cmlnZ2VyQ2hpbGRyZW5BY3RpdmUodHJ1ZSk7XG4gICAgb25Nb3VzZUVudGVyID09PSBudWxsIHx8IG9uTW91c2VFbnRlciA9PT0gdm9pZCAwIHx8IG9uTW91c2VFbnRlcih7XG4gICAgICBrZXk6IGV2ZW50S2V5LFxuICAgICAgZG9tRXZlbnQ6IGRvbUV2ZW50XG4gICAgfSk7XG4gIH07XG4gIHZhciBvbkludGVybmFsTW91c2VMZWF2ZSA9IGZ1bmN0aW9uIG9uSW50ZXJuYWxNb3VzZUxlYXZlKGRvbUV2ZW50KSB7XG4gICAgdHJpZ2dlckNoaWxkcmVuQWN0aXZlKGZhbHNlKTtcbiAgICBvbk1vdXNlTGVhdmUgPT09IG51bGwgfHwgb25Nb3VzZUxlYXZlID09PSB2b2lkIDAgfHwgb25Nb3VzZUxlYXZlKHtcbiAgICAgIGtleTogZXZlbnRLZXksXG4gICAgICBkb21FdmVudDogZG9tRXZlbnRcbiAgICB9KTtcbiAgfTtcbiAgdmFyIG1lcmdlZEFjdGl2ZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHJldHVybiBhY3RpdmU7XG4gICAgfVxuICAgIGlmIChtb2RlICE9PSAnaW5saW5lJykge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuQWN0aXZlIHx8IGlzU3ViUGF0aEtleShbYWN0aXZlS2V5XSwgZXZlbnRLZXkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFttb2RlLCBhY3RpdmUsIGFjdGl2ZUtleSwgY2hpbGRyZW5BY3RpdmUsIGV2ZW50S2V5LCBpc1N1YlBhdGhLZXldKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBEaXJlY3Rpb25TdHlsZSA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB2YXIgZGlyZWN0aW9uU3R5bGUgPSB1c2VEaXJlY3Rpb25TdHlsZShjb25uZWN0ZWRQYXRoLmxlbmd0aCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBFdmVudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyA+Pj4+IFRpdGxlIGNsaWNrXG4gIHZhciBvbkludGVybmFsVGl0bGVDbGljayA9IGZ1bmN0aW9uIG9uSW50ZXJuYWxUaXRsZUNsaWNrKGUpIHtcbiAgICAvLyBTa2lwIGlmIGRpc2FibGVkXG4gICAgaWYgKG1lcmdlZERpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9uVGl0bGVDbGljayA9PT0gbnVsbCB8fCBvblRpdGxlQ2xpY2sgPT09IHZvaWQgMCB8fCBvblRpdGxlQ2xpY2soe1xuICAgICAga2V5OiBldmVudEtleSxcbiAgICAgIGRvbUV2ZW50OiBlXG4gICAgfSk7XG5cbiAgICAvLyBUcmlnZ2VyIG9wZW4gYnkgY2xpY2sgd2hlbiBtb2RlIGlzIGBpbmxpbmVgXG4gICAgaWYgKG1vZGUgPT09ICdpbmxpbmUnKSB7XG4gICAgICBvbk9wZW5DaGFuZ2UoZXZlbnRLZXksICFvcmlnaW5PcGVuKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gPj4+PiBDb250ZXh0IGZvciBjaGlsZHJlbiBjbGlja1xuICB2YXIgb25NZXJnZWRJdGVtQ2xpY2sgPSB1c2VNZW1vQ2FsbGJhY2soZnVuY3Rpb24gKGluZm8pIHtcbiAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCB8fCBvbkNsaWNrKHdhcm5JdGVtUHJvcChpbmZvKSk7XG4gICAgb25JdGVtQ2xpY2soaW5mbyk7XG4gIH0pO1xuXG4gIC8vID4+Pj4+IFZpc2libGUgY2hhbmdlXG4gIHZhciBvblBvcHVwVmlzaWJsZUNoYW5nZSA9IGZ1bmN0aW9uIG9uUG9wdXBWaXNpYmxlQ2hhbmdlKG5ld1Zpc2libGUpIHtcbiAgICBpZiAobW9kZSAhPT0gJ2lubGluZScpIHtcbiAgICAgIG9uT3BlbkNoYW5nZShldmVudEtleSwgbmV3VmlzaWJsZSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBhY2Nlc3NpYmlsaXR5LiBIZWxwZXIgd2lsbCBmb2N1cyBlbGVtZW50IHdpdGhvdXQga2V5IGJvYXJkLlxuICAgKiBXZSBzaG91bGQgbWFudWFsbHkgdHJpZ2dlciBhbiBhY3RpdmVcbiAgICovXG4gIHZhciBvbkludGVybmFsRm9jdXMgPSBmdW5jdGlvbiBvbkludGVybmFsRm9jdXMoKSB7XG4gICAgb25BY3RpdmUoZXZlbnRLZXkpO1xuICB9O1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIHBvcHVwSWQgPSBkb21EYXRhSWQgJiYgXCJcIi5jb25jYXQoZG9tRGF0YUlkLCBcIi1wb3B1cFwiKTtcbiAgdmFyIGV4cGFuZEljb25Ob2RlID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEljb24sIHtcbiAgICAgIGljb246IG1vZGUgIT09ICdob3Jpem9udGFsJyA/IG1lcmdlZEV4cGFuZEljb24gOiB1bmRlZmluZWQsXG4gICAgICBwcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICAgIGlzT3Blbjogb3BlbixcbiAgICAgICAgLy8gW0xlZ2FjeV0gTm90IHN1cmUgd2h5IG5lZWQgdGhpcyBtYXJrXG4gICAgICAgIGlzU3ViTWVudTogdHJ1ZVxuICAgICAgfSlcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChzdWJNZW51UHJlZml4Q2xzLCBcIi1hcnJvd1wiKVxuICAgIH0pKTtcbiAgfSwgW21vZGUsIG1lcmdlZEV4cGFuZEljb24sIHByb3BzLCBvcGVuLCBzdWJNZW51UHJlZml4Q2xzXSk7XG5cbiAgLy8gPj4+Pj4gVGl0bGVcbiAgdmFyIHRpdGxlTm9kZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICByb2xlOiBcIm1lbnVpdGVtXCIsXG4gICAgc3R5bGU6IGRpcmVjdGlvblN0eWxlLFxuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoc3ViTWVudVByZWZpeENscywgXCItdGl0bGVcIiksXG4gICAgdGFiSW5kZXg6IG1lcmdlZERpc2FibGVkID8gbnVsbCA6IC0xLFxuICAgIHJlZjogZWxlbWVudFJlZixcbiAgICB0aXRsZTogdHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJyA/IHRpdGxlIDogbnVsbCxcbiAgICBcImRhdGEtbWVudS1pZFwiOiBvdmVyZmxvd0Rpc2FibGVkICYmIGRvbURhdGFJZCA/IG51bGwgOiBkb21EYXRhSWQsXG4gICAgXCJhcmlhLWV4cGFuZGVkXCI6IG9wZW4sXG4gICAgXCJhcmlhLWhhc3BvcHVwXCI6IHRydWUsXG4gICAgXCJhcmlhLWNvbnRyb2xzXCI6IHBvcHVwSWQsXG4gICAgXCJhcmlhLWRpc2FibGVkXCI6IG1lcmdlZERpc2FibGVkLFxuICAgIG9uQ2xpY2s6IG9uSW50ZXJuYWxUaXRsZUNsaWNrLFxuICAgIG9uRm9jdXM6IG9uSW50ZXJuYWxGb2N1c1xuICB9LCBhY3RpdmVQcm9wcyksIHRpdGxlLCBleHBhbmRJY29uTm9kZSk7XG5cbiAgLy8gQ2FjaGUgbW9kZSBpZiBpdCBjaGFuZ2UgdG8gYGlubGluZWAgd2hpY2ggZG8gbm90IGhhdmUgcG9wdXAgbW90aW9uXG4gIHZhciB0cmlnZ2VyTW9kZVJlZiA9IFJlYWN0LnVzZVJlZihtb2RlKTtcbiAgaWYgKG1vZGUgIT09ICdpbmxpbmUnICYmIGNvbm5lY3RlZFBhdGgubGVuZ3RoID4gMSkge1xuICAgIHRyaWdnZXJNb2RlUmVmLmN1cnJlbnQgPSAndmVydGljYWwnO
21xuICB9IGVsc2Uge1xuICAgIHRyaWdnZXJNb2RlUmVmLmN1cnJlbnQgPSBtb2RlO1xuICB9XG4gIGlmICghb3ZlcmZsb3dEaXNhYmxlZCkge1xuICAgIHZhciB0cmlnZ2VyTW9kZSA9IHRyaWdnZXJNb2RlUmVmLmN1cnJlbnQ7XG5cbiAgICAvLyBTdGlsbCB3cmFwIHdpdGggVHJpZ2dlciBoZXJlIHNpbmNlIHdlIG5lZWQgYXZvaWQgcmVhY3QgcmUtbW91bnQgZG9tIG5vZGVcbiAgICAvLyBXaGljaCBtYWtlcyBtb3Rpb24gZmFpbGVkXG4gICAgdGl0bGVOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUG9wdXBUcmlnZ2VyLCB7XG4gICAgICBtb2RlOiB0cmlnZ2VyTW9kZSxcbiAgICAgIHByZWZpeENsczogc3ViTWVudVByZWZpeENscyxcbiAgICAgIHZpc2libGU6ICFpbnRlcm5hbFBvcHVwQ2xvc2UgJiYgb3BlbiAmJiBtb2RlICE9PSAnaW5saW5lJyxcbiAgICAgIHBvcHVwQ2xhc3NOYW1lOiBwb3B1cENsYXNzTmFtZSxcbiAgICAgIHBvcHVwT2Zmc2V0OiBwb3B1cE9mZnNldCxcbiAgICAgIHBvcHVwU3R5bGU6IHBvcHVwU3R5bGUsXG4gICAgICBwb3B1cDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudUNvbnRleHRQcm92aWRlclxuICAgICAgLy8gU3BlY2lhbCBoYW5kbGUgb2YgaG9yaXpvbnRhbCBtb2RlXG4gICAgICAsIHtcbiAgICAgICAgbW9kZTogdHJpZ2dlck1vZGUgPT09ICdob3Jpem9udGFsJyA/ICd2ZXJ0aWNhbCcgOiB0cmlnZ2VyTW9kZVxuICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3ViTWVudUxpc3QsIHtcbiAgICAgICAgaWQ6IHBvcHVwSWQsXG4gICAgICAgIHJlZjogcG9wdXBSZWZcbiAgICAgIH0sIGNoaWxkcmVuKSksXG4gICAgICBkaXNhYmxlZDogbWVyZ2VkRGlzYWJsZWQsXG4gICAgICBvblZpc2libGVDaGFuZ2U6IG9uUG9wdXBWaXNpYmxlQ2hhbmdlXG4gICAgfSwgdGl0bGVOb2RlKTtcbiAgfVxuXG4gIC8vID4+Pj4+IExpc3Qgbm9kZVxuICB2YXIgbGlzdE5vZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChPdmVyZmxvdy5JdGVtLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiByZWYsXG4gICAgcm9sZTogXCJub25lXCJcbiAgfSwgcmVzdFByb3BzLCB7XG4gICAgY29tcG9uZW50OiBcImxpXCIsXG4gICAgc3R5bGU6IHN0eWxlLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhzdWJNZW51UHJlZml4Q2xzLCBcIlwiLmNvbmNhdChzdWJNZW51UHJlZml4Q2xzLCBcIi1cIikuY29uY2F0KG1vZGUpLCBjbGFzc05hbWUsIF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQoc3ViTWVudVByZWZpeENscywgXCItb3BlblwiKSwgb3BlbiksIFwiXCIuY29uY2F0KHN1Yk1lbnVQcmVmaXhDbHMsIFwiLWFjdGl2ZVwiKSwgbWVyZ2VkQWN0aXZlKSwgXCJcIi5jb25jYXQoc3ViTWVudVByZWZpeENscywgXCItc2VsZWN0ZWRcIiksIGNoaWxkcmVuU2VsZWN0ZWQpLCBcIlwiLmNvbmNhdChzdWJNZW51UHJlZml4Q2xzLCBcIi1kaXNhYmxlZFwiKSwgbWVyZ2VkRGlzYWJsZWQpKSxcbiAgICBvbk1vdXNlRW50ZXI6IG9uSW50ZXJuYWxNb3VzZUVudGVyLFxuICAgIG9uTW91c2VMZWF2ZTogb25JbnRlcm5hbE1vdXNlTGVhdmVcbiAgfSksIHRpdGxlTm9kZSwgIW92ZXJmbG93RGlzYWJsZWQgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5saW5lU3ViTWVudUxpc3QsIHtcbiAgICBpZDogcG9wdXBJZCxcbiAgICBvcGVuOiBvcGVuLFxuICAgIGtleVBhdGg6IGNvbm5lY3RlZFBhdGhcbiAgfSwgY2hpbGRyZW4pKTtcbiAgaWYgKF9pbnRlcm5hbFJlbmRlclN1Yk1lbnVJdGVtKSB7XG4gICAgbGlzdE5vZGUgPSBfaW50ZXJuYWxSZW5kZXJTdWJNZW51SXRlbShsaXN0Tm9kZSwgcHJvcHMsIHtcbiAgICAgIHNlbGVjdGVkOiBjaGlsZHJlblNlbGVjdGVkLFxuICAgICAgYWN0aXZlOiBtZXJnZWRBY3RpdmUsXG4gICAgICBvcGVuOiBvcGVuLFxuICAgICAgZGlzYWJsZWQ6IG1lcmdlZERpc2FibGVkXG4gICAgfSk7XG4gIH1cblxuICAvLyA+Pj4+PiBSZW5kZXJcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVDb250ZXh0UHJvdmlkZXIsIHtcbiAgICBvbkl0ZW1DbGljazogb25NZXJnZWRJdGVtQ2xpY2ssXG4gICAgbW9kZTogbW9kZSA9PT0gJ2hvcml6b250YWwnID8gJ3ZlcnRpY2FsJyA6IG1vZGUsXG4gICAgaXRlbUljb246IG1lcmdlZEl0ZW1JY29uLFxuICAgIGV4cGFuZEljb246IG1lcmdlZEV4cGFuZEljb25cbiAgfSwgbGlzdE5vZGUpO1xufSk7XG52YXIgU3ViTWVudSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBldmVudEtleSA9IHByb3BzLmV2ZW50S2V5LFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBjb25uZWN0ZWRLZXlQYXRoID0gdXNlRnVsbFBhdGgoZXZlbnRLZXkpO1xuICB2YXIgY2hpbGRMaXN0ID0gcGFyc2VDaGlsZHJlbihjaGlsZHJlbiwgY29ubmVjdGVkS2V5UGF0aCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT0gUmVjb3JkIEtleVBhdGggPT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIG1lYXN1cmUgPSB1c2VNZWFzdXJlKCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKG1lYXN1cmUpIHtcbiAgICAgIG1lYXN1cmUucmVnaXN0ZXJQYXRoKGV2ZW50S2V5LCBjb25uZWN0ZWRLZXlQYXRoKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG1lYXN1cmUudW5yZWdpc3RlclBhdGgoZXZlbnRLZXksIGNvbm5lY3RlZEtleVBhdGgpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtjb25uZWN0ZWRLZXlQYXRoXSk7XG4gIHZhciByZW5kZXJOb2RlO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PSBSZW5kZXIgPT09PT09PT09PT09PT09PT09PT09PT09XG4gIGlmIChtZWFzdXJlKSB7XG4gICAgcmVuZGVyTm9kZSA9IGNoaWxkTGlzdDtcbiAgfSBlbHNlIHtcbiAgICByZW5kZXJOb2RlID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW50ZXJuYWxTdWJNZW51LCBfZXh0ZW5kcyh7XG4gICAgICByZWY6IHJlZlxuICAgIH0sIHByb3BzKSwgY2hpbGRMaXN0KTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGF0aFRyYWNrZXJDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbm5lY3RlZEtleVBhdGhcbiAgfSwgcmVuZGVyTm9kZSk7XG59KTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFN1Yk1lbnUuZGlzcGxheU5hbWUgPSAnU3ViTWVudSc7XG59XG5leHBvcnQgZGVmYXVsdCBTdWJNZW51OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgTWVudUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L01lbnVDb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VNZWFzdXJlIH0gZnJvbSBcIi4vY29udGV4dC9QYXRoQ29udGV4dFwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGl2aWRlcihfcmVmKSB7XG4gIHZhciBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICBzdHlsZSA9IF9yZWYuc3R5bGU7XG4gIHZhciBfUmVhY3QkdXNlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoTWVudUNvbnRleHQpLFxuICAgIHByZWZpeENscyA9IF9SZWFjdCR1c2VDb250ZXh0LnByZWZpeENscztcbiAgdmFyIG1lYXN1cmUgPSB1c2VNZWFzdXJlKCk7XG4gIGlmIChtZWFzdXJlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwge1xuICAgIHJvbGU6IFwic2VwYXJhdG9yXCIsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKFwiXCIuY29uY2F0KHByZWZpeENscywgXCItaXRlbS1kaXZpZG
2VyXCIpLCBjbGFzc05hbWUpLFxuICAgIHN0eWxlOiBzdHlsZVxuICB9KTtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCI7XG52YXIgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwidGl0bGVcIiwgXCJldmVudEtleVwiLCBcImNoaWxkcmVuXCJdO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgb21pdCBmcm9tIFwicmMtdXRpbC9lcy9vbWl0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBNZW51Q29udGV4dCB9IGZyb20gXCIuL2NvbnRleHQvTWVudUNvbnRleHRcIjtcbmltcG9ydCB7IHVzZUZ1bGxQYXRoLCB1c2VNZWFzdXJlIH0gZnJvbSBcIi4vY29udGV4dC9QYXRoQ29udGV4dFwiO1xuaW1wb3J0IHsgcGFyc2VDaGlsZHJlbiB9IGZyb20gXCIuL3V0aWxzL2NvbW1vblV0aWxcIjtcbnZhciBJbnRlcm5hbE1lbnVJdGVtR3JvdXAgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgIHRpdGxlID0gcHJvcHMudGl0bGUsXG4gICAgZXZlbnRLZXkgPSBwcm9wcy5ldmVudEtleSxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgdmFyIF9SZWFjdCR1c2VDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChNZW51Q29udGV4dCksXG4gICAgcHJlZml4Q2xzID0gX1JlYWN0JHVzZUNvbnRleHQucHJlZml4Q2xzO1xuICB2YXIgZ3JvdXBQcmVmaXhDbHMgPSBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWl0ZW0tZ3JvdXBcIik7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIF9leHRlbmRzKHtcbiAgICByZWY6IHJlZixcbiAgICByb2xlOiBcInByZXNlbnRhdGlvblwiXG4gIH0sIHJlc3RQcm9wcywge1xuICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZSkge1xuICAgICAgcmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoZ3JvdXBQcmVmaXhDbHMsIGNsYXNzTmFtZSlcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICByb2xlOiBcInByZXNlbnRhdGlvblwiLFxuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQoZ3JvdXBQcmVmaXhDbHMsIFwiLXRpdGxlXCIpLFxuICAgIHRpdGxlOiB0eXBlb2YgdGl0bGUgPT09ICdzdHJpbmcnID8gdGl0bGUgOiB1bmRlZmluZWRcbiAgfSwgdGl0bGUpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHtcbiAgICByb2xlOiBcImdyb3VwXCIsXG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChncm91cFByZWZpeENscywgXCItbGlzdFwiKVxuICB9LCBjaGlsZHJlbikpO1xufSk7XG52YXIgTWVudUl0ZW1Hcm91cCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBldmVudEtleSA9IHByb3BzLmV2ZW50S2V5LFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBjb25uZWN0ZWRLZXlQYXRoID0gdXNlRnVsbFBhdGgoZXZlbnRLZXkpO1xuICB2YXIgY2hpbGRMaXN0ID0gcGFyc2VDaGlsZHJlbihjaGlsZHJlbiwgY29ubmVjdGVkS2V5UGF0aCk7XG4gIHZhciBtZWFzdXJlID0gdXNlTWVhc3VyZSgpO1xuICBpZiAobWVhc3VyZSkge1xuICAgIHJldHVybiBjaGlsZExpc3Q7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEludGVybmFsTWVudUl0ZW1Hcm91cCwgX2V4dGVuZHMoe1xuICAgIHJlZjogcmVmXG4gIH0sIG9taXQocHJvcHMsIFsnd2FybktleSddKSksIGNoaWxkTGlzdCk7XG59KTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIE1lbnVJdGVtR3JvdXAuZGlzcGxheU5hbWUgPSAnTWVudUl0ZW1Hcm91cCc7XG59XG5leHBvcnQgZGVmYXVsdCBNZW51SXRlbUdyb3VwOyIsImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mXCI7XG52YXIgX2V4Y2x1ZGVkID0gW1wibGFiZWxcIiwgXCJjaGlsZHJlblwiLCBcImtleVwiLCBcInR5cGVcIiwgXCJleHRyYVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBEaXZpZGVyIGZyb20gXCIuLi9EaXZpZGVyXCI7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcIi4uL01lbnVJdGVtXCI7XG5pbXBvcnQgTWVudUl0ZW1Hcm91cCBmcm9tIFwiLi4vTWVudUl0ZW1Hcm91cFwiO1xuaW1wb3J0IFN1Yk1lbnUgZnJvbSBcIi4uL1N1Yk1lbnVcIjtcbmltcG9ydCB7IHBhcnNlQ2hpbGRyZW4gfSBmcm9tIFwiLi9jb21tb25VdGlsXCI7XG5mdW5jdGlvbiBjb252ZXJ0SXRlbXNUb05vZGVzKGxpc3QsIGNvbXBvbmVudHMsIHByZWZpeENscykge1xuICB2YXIgTWVyZ2VkTWVudUl0ZW0gPSBjb21wb25lbnRzLml0ZW0sXG4gICAgTWVyZ2VkTWVudUl0ZW1Hcm91cCA9IGNvbXBvbmVudHMuZ3JvdXAsXG4gICAgTWVyZ2VkU3ViTWVudSA9IGNvbXBvbmVudHMuc3VibWVudSxcbiAgICBNZXJnZWREaXZpZGVyID0gY29tcG9uZW50cy5kaXZpZGVyO1xuICByZXR1cm4gKGxpc3QgfHwgW10pLm1hcChmdW5jdGlvbiAob3B0LCBpbmRleCkge1xuICAgIGlmIChvcHQgJiYgX3R5cGVvZihvcHQpID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFyIF9yZWYgPSBvcHQsXG4gICAgICAgIGxhYmVsID0gX3JlZi5sYWJlbCxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgICAgICBrZXkgPSBfcmVmLmtleSxcbiAgICAgICAgdHlwZSA9IF9yZWYudHlwZSxcbiAgICAgICAgZXh0cmEgP
2SBfcmVmLmV4dHJhLFxuICAgICAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgICAgIHZhciBtZXJnZWRLZXkgPSBrZXkgIT09IG51bGwgJiYga2V5ICE9PSB2b2lkIDAgPyBrZXkgOiBcInRtcC1cIi5jb25jYXQoaW5kZXgpO1xuXG4gICAgICAvLyBNZW51SXRlbUdyb3VwICYgU3ViTWVudUl0ZW1cbiAgICAgIGlmIChjaGlsZHJlbiB8fCB0eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgIGlmICh0eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgLy8gR3JvdXBcbiAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVyZ2VkTWVudUl0ZW1Hcm91cCwgX2V4dGVuZHMoe1xuICAgICAgICAgICAga2V5OiBtZXJnZWRLZXlcbiAgICAgICAgICB9LCByZXN0UHJvcHMsIHtcbiAgICAgICAgICAgIHRpdGxlOiBsYWJlbFxuICAgICAgICAgIH0pLCBjb252ZXJ0SXRlbXNUb05vZGVzKGNoaWxkcmVuLCBjb21wb25lbnRzLCBwcmVmaXhDbHMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN1YiBNZW51XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNZXJnZWRTdWJNZW51LCBfZXh0ZW5kcyh7XG4gICAgICAgICAga2V5OiBtZXJnZWRLZXlcbiAgICAgICAgfSwgcmVzdFByb3BzLCB7XG4gICAgICAgICAgdGl0bGU6IGxhYmVsXG4gICAgICAgIH0pLCBjb252ZXJ0SXRlbXNUb05vZGVzKGNoaWxkcmVuLCBjb21wb25lbnRzLCBwcmVmaXhDbHMpKTtcbiAgICAgIH1cblxuICAgICAgLy8gTWVudUl0ZW0gJiBEaXZpZGVyXG4gICAgICBpZiAodHlwZSA9PT0gJ2RpdmlkZXInKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNZXJnZWREaXZpZGVyLCBfZXh0ZW5kcyh7XG4gICAgICAgICAga2V5OiBtZXJnZWRLZXlcbiAgICAgICAgfSwgcmVzdFByb3BzKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVyZ2VkTWVudUl0ZW0sIF9leHRlbmRzKHtcbiAgICAgICAga2V5OiBtZXJnZWRLZXlcbiAgICAgIH0sIHJlc3RQcm9wcywge1xuICAgICAgICBleHRyYTogZXh0cmFcbiAgICAgIH0pLCBsYWJlbCwgKCEhZXh0cmEgfHwgZXh0cmEgPT09IDApICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1pdGVtLWV4dHJhXCIpXG4gICAgICB9LCBleHRyYSkpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uIChvcHQpIHtcbiAgICByZXR1cm4gb3B0O1xuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUl0ZW1zKGNoaWxkcmVuLCBpdGVtcywga2V5UGF0aCwgY29tcG9uZW50cywgcHJlZml4Q2xzKSB7XG4gIHZhciBjaGlsZE5vZGVzID0gY2hpbGRyZW47XG4gIHZhciBtZXJnZWRDb21wb25lbnRzID0gX29iamVjdFNwcmVhZCh7XG4gICAgZGl2aWRlcjogRGl2aWRlcixcbiAgICBpdGVtOiBNZW51SXRlbSxcbiAgICBncm91cDogTWVudUl0ZW1Hcm91cCxcbiAgICBzdWJtZW51OiBTdWJNZW51XG4gIH0sIGNvbXBvbmVudHMpO1xuICBpZiAoaXRlbXMpIHtcbiAgICBjaGlsZE5vZGVzID0gY29udmVydEl0ZW1zVG9Ob2RlcyhpdGVtcywgbWVyZ2VkQ29tcG9uZW50cywgcHJlZml4Q2xzKTtcbiAgfVxuICByZXR1cm4gcGFyc2VDaGlsZHJlbihjaGlsZE5vZGVzLCBrZXlQYXRoKTtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMlwiO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheVwiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbnZhciBfZXhjbHVkZWQgPSBbXCJwcmVmaXhDbHNcIiwgXCJyb290Q2xhc3NOYW1lXCIsIFwic3R5bGVcIiwgXCJjbGFzc05hbWVcIiwgXCJ0YWJJbmRleFwiLCBcIml0ZW1zXCIsIFwiY2hpbGRyZW5cIiwgXCJkaXJlY3Rpb25cIiwgXCJpZFwiLCBcIm1vZGVcIiwgXCJpbmxpbmVDb2xsYXBzZWRcIiwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVkT3ZlcmZsb3dcIiwgXCJzdWJNZW51T3BlbkRlbGF5XCIsIFwic3ViTWVudUNsb3NlRGVsYXlcIiwgXCJmb3JjZVN1Yk1lbnVSZW5kZXJcIiwgXCJkZWZhdWx0T3BlbktleXNcIiwgXCJvcGVuS2V5c1wiLCBcImFjdGl2ZUtleVwiLCBcImRlZmF1bHRBY3RpdmVGaXJzdFwiLCBcInNlbGVjdGFibGVcIiwgXCJtdWx0aXBsZVwiLCBcImRlZmF1bHRTZWxlY3RlZEtleXNcIiwgXCJzZWxlY3RlZEtleXNcIiwgXCJvblNlbGVjdFwiLCBcIm9uRGVzZWxlY3RcIiwgXCJpbmxpbmVJbmRlbnRcIiwgXCJtb3Rpb25cIiwgXCJkZWZhdWx0TW90aW9uc1wiLCBcInRyaWdnZXJTdWJNZW51QWN0aW9uXCIsIFwiYnVpbHRpblBsYWNlbWVudHNcIiwgXCJpdGVtSWNvblwiLCBcImV4cGFuZEljb25cIiwgXCJvdmVyZmxvd2VkSW5kaWNhdG9yXCIsIFwib3ZlcmZsb3dlZEluZGljYXRvclBvcHVwQ2xhc3NOYW1lXCIsIFwiZ2V0UG9wdXBDb250YWluZXJcIiwgXCJvbkNsaWNrXCIsIFwib25PcGVuQ2hhbmdlXCIsIFwib25LZXlEb3duXCIsIFwib3BlbkFuaW1hdGlvblwiLCBcIm9wZW5UcmFuc2l0aW9uTmFtZVwiLCBcIl9pbnRlcm5hbFJlbmRlck1lbnVJdGVtXCIsIFwiX2ludGVybmFsUmVuZGVyU3ViTWVudUl0ZW1cIiwgXCJfaW50ZXJuYWxDb21wb25lbnRzXCJdO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgT3ZlcmZsb3cgZnJvbSAncmMtb3ZlcmZsb3cnO1xuaW1wb3J0IHVzZU1lcmdlZ
2FN0YXRlIGZyb20gXCJyYy11dGlsL2VzL2hvb2tzL3VzZU1lcmdlZFN0YXRlXCI7XG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwicmMtdXRpbC9lcy9pc0VxdWFsXCI7XG5pbXBvcnQgd2FybmluZyBmcm9tIFwicmMtdXRpbC9lcy93YXJuaW5nXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VJbXBlcmF0aXZlSGFuZGxlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZmx1c2hTeW5jIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IElkQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHQvSWRDb250ZXh0XCI7XG5pbXBvcnQgTWVudUNvbnRleHRQcm92aWRlciBmcm9tIFwiLi9jb250ZXh0L01lbnVDb250ZXh0XCI7XG5pbXBvcnQgeyBQYXRoUmVnaXN0ZXJDb250ZXh0LCBQYXRoVXNlckNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L1BhdGhDb250ZXh0XCI7XG5pbXBvcnQgUHJpdmF0ZUNvbnRleHQgZnJvbSBcIi4vY29udGV4dC9Qcml2YXRlQ29udGV4dFwiO1xuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlRWxlbWVudHMsIHJlZnJlc2hFbGVtZW50cywgdXNlQWNjZXNzaWJpbGl0eSB9IGZyb20gXCIuL2hvb2tzL3VzZUFjY2Vzc2liaWxpdHlcIjtcbmltcG9ydCB1c2VLZXlSZWNvcmRzLCB7IE9WRVJGTE9XX0tFWSB9IGZyb20gXCIuL2hvb2tzL3VzZUtleVJlY29yZHNcIjtcbmltcG9ydCB1c2VNZW1vQ2FsbGJhY2sgZnJvbSBcIi4vaG9va3MvdXNlTWVtb0NhbGxiYWNrXCI7XG5pbXBvcnQgdXNlVVVJRCBmcm9tIFwiLi9ob29rcy91c2VVVUlEXCI7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSBcIi4vTWVudUl0ZW1cIjtcbmltcG9ydCBTdWJNZW51IGZyb20gXCIuL1N1Yk1lbnVcIjtcbmltcG9ydCB7IHBhcnNlSXRlbXMgfSBmcm9tIFwiLi91dGlscy9ub2RlVXRpbFwiO1xuaW1wb3J0IHsgd2Fybkl0ZW1Qcm9wIH0gZnJvbSBcIi4vdXRpbHMvd2FyblV0aWxcIjtcblxuLyoqXG4gKiBNZW51IG1vZGlmeSBhZnRlciByZWZhY3RvcjpcbiAqICMjIEFkZFxuICogLSBkaXNhYmxlZFxuICpcbiAqICMjIFJlbW92ZVxuICogLSBvcGVuVHJhbnNpdGlvbk5hbWVcbiAqIC0gb3BlbkFuaW1hdGlvblxuICogLSBvbkRlc3Ryb3lcbiAqIC0gc2lkZXJDb2xsYXBzZWQ6IFNlZW1zIGFudGQgZG8gbm90IHVzZSB0aGlzIHByb3AgKE5lZWQgdGVzdCBpbiBhbnRkKVxuICogLSBjb2xsYXBzZWRXaWR0aDogU2VlbXMgdGhpcyBsb2dpYyBzaG91bGQgYmUgaGFuZGxlIGJ5IGFudGQgTGF5b3V0LlNpZGVyXG4gKi9cblxuLy8gb3B0aW1pemUgZm9yIHJlbmRlclxudmFyIEVNUFRZX0xJU1QgPSBbXTtcbnZhciBNZW51ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIF9jaGlsZExpc3QkO1xuICB2YXIgX3JlZiA9IHByb3BzLFxuICAgIF9yZWYkcHJlZml4Q2xzID0gX3JlZi5wcmVmaXhDbHMsXG4gICAgcHJlZml4Q2xzID0gX3JlZiRwcmVmaXhDbHMgPT09IHZvaWQgMCA/ICdyYy1tZW51JyA6IF9yZWYkcHJlZml4Q2xzLFxuICAgIHJvb3RDbGFzc05hbWUgPSBfcmVmLnJvb3RDbGFzc05hbWUsXG4gICAgc3R5bGUgPSBfcmVmLnN0eWxlLFxuICAgIGNsYXNzTmFtZSA9IF9yZWYuY2xhc3NOYW1lLFxuICAgIF9yZWYkdGFiSW5kZXggPSBfcmVmLnRhYkluZGV4LFxuICAgIHRhYkluZGV4ID0gX3JlZiR0YWJJbmRleCA9PT0gdm9pZCAwID8gMCA6IF9yZWYkdGFiSW5kZXgsXG4gICAgaXRlbXMgPSBfcmVmLml0ZW1zLFxuICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICBkaXJlY3Rpb24gPSBfcmVmLmRpcmVjdGlvbixcbiAgICBpZCA9IF9yZWYuaWQsXG4gICAgX3JlZiRtb2RlID0gX3JlZi5tb2RlLFxuICAgIG1vZGUgPSBfcmVmJG1vZGUgPT09IHZvaWQgMCA/ICd2ZXJ0aWNhbCcgOiBfcmVmJG1vZGUsXG4gICAgaW5saW5lQ29sbGFwc2VkID0gX3JlZi5pbmxpbmVDb2xsYXBzZWQsXG4gICAgZGlzYWJsZWQgPSBfcmVmLmRpc2FibGVkLFxuICAgIGRpc2FibGVkT3ZlcmZsb3cgPSBfcmVmLmRpc2FibGVkT3ZlcmZsb3csXG4gICAgX3JlZiRzdWJNZW51T3BlbkRlbGF5ID0gX3JlZi5zdWJNZW51T3BlbkRlbGF5LFxuICAgIHN1Yk1lbnVPcGVuRGVsYXkgPSBfcmVmJHN1Yk1lbnVPcGVuRGVsYXkgPT09IHZvaWQgMCA/IDAuMSA6IF9yZWYkc3ViTWVudU9wZW5EZWxheSxcbiAgICBfcmVmJHN1Yk1lbnVDbG9zZURlbGEgPSBfcmVmLnN1Yk1lbnVDbG9zZURlbGF5LFxuICAgIHN1Yk1lbnVDbG9zZURlbGF5ID0gX3JlZiRzdWJNZW51Q2xvc2VEZWxhID09PSB2b2lkIDAgPyAwLjEgOiBfcmVmJHN1Yk1lbnVDbG9zZURlbGEsXG4gICAgZm9yY2VTdWJNZW51UmVuZGVyID0gX3JlZi5mb3JjZVN1Yk1lbnVSZW5kZXIsXG4gICAgZGVmYXVsdE9wZW5LZXlzID0gX3JlZi5kZWZhdWx0T3BlbktleXMsXG4gICAgb3BlbktleXMgPSBfcmVmLm9wZW5LZXlzLFxuICAgIGFjdGl2ZUtleSA9IF9yZWYuYWN0aXZlS2V5LFxuICAgIGRlZmF1bHRBY3RpdmVGaXJzdCA9IF9yZWYuZGVmYXVsdEFjdGl2ZUZpcnN0LFxuICAgIF9yZWYkc2VsZWN0YWJsZSA9IF9yZWYuc2VsZWN0YWJsZSxcbiAgICBzZWxlY3RhYmxlID0gX3JlZiRzZWxlY3RhYmxlID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRzZWxlY3RhYmxlLFxuICAgIF9yZWYkbXVsdGlwbGUgPSBfcmVmLm11bHRpcGxlLFxuICAgIG11bHRpcGxlID0gX3JlZiRtdWx0aXBsZSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmJG11bHRpcGxlLFxuICAgIGRlZmF1bHRTZWxlY3RlZEtleXMgPSBfcmVmLmRlZmF1bHRTZWxlY3RlZEtleXMsXG4gICAgc2VsZWN0ZWRLZXlzID0gX3JlZi5zZWxlY3RlZEtleXMsXG4gICAgb25TZWxlY3QgPSBfcmVmLm9uU2VsZWN0LFxuICAgIG9uRGVzZWxlY3QgPSBfcmVmLm9uRGVzZWxlY3QsXG4gICAgX3JlZiRpbmxpbmVJbmRlbnQgPSBfcmVmLmlubGluZUluZGVudCxcbiAgICBpbmxpbmVJbmRlbnQgPSBfcmVmJGlubGluZUluZGVudCA9PT0gdm9pZCAwID8gMjQgOiBfcmVmJGlubGluZUluZGVudCxcbiAgICBtb3Rpb24gPSBfcmVmLm1vdGlvbixcbiAgICBkZWZhdWx0TW90aW9ucyA9IF9yZWYuZGVmYXVsdE1vdGlvbnMsXG4gICAgX3JlZiR0cmlnZ2VyU3ViTWVudUFjID0gX3JlZi50cmlnZ2VyU3ViTWVudUFjdGlvbixcbiAgICB0cmlnZ2VyU3ViTWVudUFjdGlvbiA9I
2F9yZWYkdHJpZ2dlclN1Yk1lbnVBYyA9PT0gdm9pZCAwID8gJ2hvdmVyJyA6IF9yZWYkdHJpZ2dlclN1Yk1lbnVBYyxcbiAgICBidWlsdGluUGxhY2VtZW50cyA9IF9yZWYuYnVpbHRpblBsYWNlbWVudHMsXG4gICAgaXRlbUljb24gPSBfcmVmLml0ZW1JY29uLFxuICAgIGV4cGFuZEljb24gPSBfcmVmLmV4cGFuZEljb24sXG4gICAgX3JlZiRvdmVyZmxvd2VkSW5kaWNhID0gX3JlZi5vdmVyZmxvd2VkSW5kaWNhdG9yLFxuICAgIG92ZXJmbG93ZWRJbmRpY2F0b3IgPSBfcmVmJG92ZXJmbG93ZWRJbmRpY2EgPT09IHZvaWQgMCA/ICcuLi4nIDogX3JlZiRvdmVyZmxvd2VkSW5kaWNhLFxuICAgIG92ZXJmbG93ZWRJbmRpY2F0b3JQb3B1cENsYXNzTmFtZSA9IF9yZWYub3ZlcmZsb3dlZEluZGljYXRvclBvcHVwQ2xhc3NOYW1lLFxuICAgIGdldFBvcHVwQ29udGFpbmVyID0gX3JlZi5nZXRQb3B1cENvbnRhaW5lcixcbiAgICBvbkNsaWNrID0gX3JlZi5vbkNsaWNrLFxuICAgIG9uT3BlbkNoYW5nZSA9IF9yZWYub25PcGVuQ2hhbmdlLFxuICAgIG9uS2V5RG93biA9IF9yZWYub25LZXlEb3duLFxuICAgIG9wZW5BbmltYXRpb24gPSBfcmVmLm9wZW5BbmltYXRpb24sXG4gICAgb3BlblRyYW5zaXRpb25OYW1lID0gX3JlZi5vcGVuVHJhbnNpdGlvbk5hbWUsXG4gICAgX2ludGVybmFsUmVuZGVyTWVudUl0ZW0gPSBfcmVmLl9pbnRlcm5hbFJlbmRlck1lbnVJdGVtLFxuICAgIF9pbnRlcm5hbFJlbmRlclN1Yk1lbnVJdGVtID0gX3JlZi5faW50ZXJuYWxSZW5kZXJTdWJNZW51SXRlbSxcbiAgICBfaW50ZXJuYWxDb21wb25lbnRzID0gX3JlZi5faW50ZXJuYWxDb21wb25lbnRzLFxuICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICB2YXIgX1JlYWN0JHVzZU1lbW8gPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBbcGFyc2VJdGVtcyhjaGlsZHJlbiwgaXRlbXMsIEVNUFRZX0xJU1QsIF9pbnRlcm5hbENvbXBvbmVudHMsIHByZWZpeENscyksIHBhcnNlSXRlbXMoY2hpbGRyZW4sIGl0ZW1zLCBFTVBUWV9MSVNULCB7fSwgcHJlZml4Q2xzKV07XG4gICAgfSwgW2NoaWxkcmVuLCBpdGVtcywgX2ludGVybmFsQ29tcG9uZW50c10pLFxuICAgIF9SZWFjdCR1c2VNZW1vMiA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VNZW1vLCAyKSxcbiAgICBjaGlsZExpc3QgPSBfUmVhY3QkdXNlTWVtbzJbMF0sXG4gICAgbWVhc3VyZUNoaWxkTGlzdCA9IF9SZWFjdCR1c2VNZW1vMlsxXTtcbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSxcbiAgICBfUmVhY3QkdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX1JlYWN0JHVzZVN0YXRlLCAyKSxcbiAgICBtb3VudGVkID0gX1JlYWN0JHVzZVN0YXRlMlswXSxcbiAgICBzZXRNb3VudGVkID0gX1JlYWN0JHVzZVN0YXRlMlsxXTtcbiAgdmFyIGNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICB2YXIgdXVpZCA9IHVzZVVVSUQoaWQpO1xuICB2YXIgaXNSdGwgPSBkaXJlY3Rpb24gPT09ICdydGwnO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT0gV2FybiA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgd2FybmluZyghb3BlbkFuaW1hdGlvbiAmJiAhb3BlblRyYW5zaXRpb25OYW1lLCAnYG9wZW5BbmltYXRpb25gIGFuZCBgb3BlblRyYW5zaXRpb25OYW1lYCBpcyByZW1vdmVkLiBQbGVhc2UgdXNlIGBtb3Rpb25gIG9yIGBkZWZhdWx0TW90aW9uYCBpbnN0ZWFkLicpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PSBPcGVuID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIF91c2VNZXJnZWRTdGF0ZSA9IHVzZU1lcmdlZFN0YXRlKGRlZmF1bHRPcGVuS2V5cywge1xuICAgICAgdmFsdWU6IG9wZW5LZXlzLFxuICAgICAgcG9zdFN0YXRlOiBmdW5jdGlvbiBwb3N0U3RhdGUoa2V5cykge1xuICAgICAgICByZXR1cm4ga2V5cyB8fCBFTVBUWV9MSVNUO1xuICAgICAgfVxuICAgIH0pLFxuICAgIF91c2VNZXJnZWRTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlTWVyZ2VkU3RhdGUsIDIpLFxuICAgIG1lcmdlZE9wZW5LZXlzID0gX3VzZU1lcmdlZFN0YXRlMlswXSxcbiAgICBzZXRNZXJnZWRPcGVuS2V5cyA9IF91c2VNZXJnZWRTdGF0ZTJbMV07XG5cbiAgLy8gUmVhY3QgMTggd2lsbCBtZXJnZSBtb3VzZSBldmVudCB3aGljaCBtZWFucyB3ZSBvcGVuIGtleSB3aWxsIG5vdCBzeW5jXG4gIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi9pc3N1ZXMvMzg4MThcbiAgdmFyIHRyaWdnZXJPcGVuS2V5cyA9IGZ1bmN0aW9uIHRyaWdnZXJPcGVuS2V5cyhrZXlzKSB7XG4gICAgdmFyIGZvcmNlRmx1c2ggPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICAgIGZ1bmN0aW9uIGRvVXBkYXRlKCkge1xuICAgICAgc2V0TWVyZ2VkT3BlbktleXMoa2V5cyk7XG4gICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgfHwgb25PcGVuQ2hhbmdlKGtleXMpO1xuICAgIH1cbiAgICBpZiAoZm9yY2VGbHVzaCkge1xuICAgICAgZmx1c2hTeW5jKGRvVXBkYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9VcGRhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gPj4+Pj4gQ2FjaGUgJiBSZXNldCBvcGVuIGtleXMgd2hlbiBpbmxpbmVDb2xsYXBzZWQgY2hhbmdlZFxuICB2YXIgX1JlYWN0JHVzZVN0YXRlMyA9IFJlYWN0LnVzZVN0YXRlKG1lcmdlZE9wZW5LZXlzKSxcbiAgICBfUmVhY3QkdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX1JlYWN0JHVzZVN0YXRlMywgMiksXG4gICAgaW5saW5lQ2FjaGVPcGVuS2V5cyA9IF9SZWFjdCR1c2VTdGF0ZTRbMF0sXG4gICAgc2V0SW5saW5lQ2FjaGVPcGVuS2V5cyA9IF9SZWFjdCR1c2VTdGF0ZTRbMV07XG4gIHZhciBtb3VudFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PSBNb2RlID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIF9SZWFjdCR1c2VNZW1vMyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKChtb2RlID09PSAnaW5saW5lJyB8fCBtb2RlID09PSAndmVydGljYWwnKSAmJiBpbmxpbmVDb2xsYXBzZWQpIHtcbiAgICAgICAgcmV0dXJuIFsndmVydGljYWwnLCBpbmxpbmVDb2xsYXBzZWRdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFttb2RlLCBmYWxzZV07XG4gICAgfSwgW21vZGUsIGlubGluZUNvbGxhcHNlZF0pLFxuICAgIF9SZWFjdCR1c2VNZW1vNCA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VNZW1vMywgMiksXG4gICAgbWVyZ2VkTW9kZSA9IF9SZWFjdCR1c2VNZW1vNFswXSxcbiAgICBtZXJnZWRJbmxpbmVDb2xsYXBzZWQgPSBfUmVhY3QkdXNlTWVtbzRbMV07XG4gIHZhciBpc0lubGluZU1vZGUgPSBtZXJnZWRNb2RlID09PSAnaW5saW5lJztcbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZTUgPSBSZWFjdC51c2VTdGF0ZShtZXJnZWRNb2RlKSxcbiAgICBfUmVhY3QkdXNlU3Rh
2dGU2ID0gX3NsaWNlZFRvQXJyYXkoX1JlYWN0JHVzZVN0YXRlNSwgMiksXG4gICAgaW50ZXJuYWxNb2RlID0gX1JlYWN0JHVzZVN0YXRlNlswXSxcbiAgICBzZXRJbnRlcm5hbE1vZGUgPSBfUmVhY3QkdXNlU3RhdGU2WzFdO1xuICB2YXIgX1JlYWN0JHVzZVN0YXRlNyA9IFJlYWN0LnVzZVN0YXRlKG1lcmdlZElubGluZUNvbGxhcHNlZCksXG4gICAgX1JlYWN0JHVzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZTcsIDIpLFxuICAgIGludGVybmFsSW5saW5lQ29sbGFwc2VkID0gX1JlYWN0JHVzZVN0YXRlOFswXSxcbiAgICBzZXRJbnRlcm5hbElubGluZUNvbGxhcHNlZCA9IF9SZWFjdCR1c2VTdGF0ZThbMV07XG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgc2V0SW50ZXJuYWxNb2RlKG1lcmdlZE1vZGUpO1xuICAgIHNldEludGVybmFsSW5saW5lQ29sbGFwc2VkKG1lcmdlZElubGluZUNvbGxhcHNlZCk7XG4gICAgaWYgKCFtb3VudFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFN5bmNocm9ub3VzbHkgdXBkYXRlIE1lcmdlZE9wZW5LZXlzXG4gICAgaWYgKGlzSW5saW5lTW9kZSkge1xuICAgICAgc2V0TWVyZ2VkT3BlbktleXMoaW5saW5lQ2FjaGVPcGVuS2V5cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRyaWdnZXIgb3BlbiBldmVudCBpbiBjYXNlIGl0cyBpbiBjb250cm9sXG4gICAgICB0cmlnZ2VyT3BlbktleXMoRU1QVFlfTElTVCk7XG4gICAgfVxuICB9LCBbbWVyZ2VkTW9kZSwgbWVyZ2VkSW5saW5lQ29sbGFwc2VkXSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PSBSZXNwb25zaXZlID09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIF9SZWFjdCR1c2VTdGF0ZTkgPSBSZWFjdC51c2VTdGF0ZSgwKSxcbiAgICBfUmVhY3QkdXNlU3RhdGUxMCA9IF9zbGljZWRUb0FycmF5KF9SZWFjdCR1c2VTdGF0ZTksIDIpLFxuICAgIGxhc3RWaXNpYmxlSW5kZXggPSBfUmVhY3QkdXNlU3RhdGUxMFswXSxcbiAgICBzZXRMYXN0VmlzaWJsZUluZGV4ID0gX1JlYWN0JHVzZVN0YXRlMTBbMV07XG4gIHZhciBhbGxWaXNpYmxlID0gbGFzdFZpc2libGVJbmRleCA+PSBjaGlsZExpc3QubGVuZ3RoIC0gMSB8fCBpbnRlcm5hbE1vZGUgIT09ICdob3Jpem9udGFsJyB8fCBkaXNhYmxlZE92ZXJmbG93O1xuXG4gIC8vIENhY2hlXG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGlzSW5saW5lTW9kZSkge1xuICAgICAgc2V0SW5saW5lQ2FjaGVPcGVuS2V5cyhtZXJnZWRPcGVuS2V5cyk7XG4gICAgfVxuICB9LCBbbWVyZ2VkT3BlbktleXNdKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBtb3VudFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbW91bnRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09IFBhdGggPT09PT09PT09PT09PT09PT09PT09PT09PVxuICB2YXIgX3VzZUtleVJlY29yZHMgPSB1c2VLZXlSZWNvcmRzKCksXG4gICAgcmVnaXN0ZXJQYXRoID0gX3VzZUtleVJlY29yZHMucmVnaXN0ZXJQYXRoLFxuICAgIHVucmVnaXN0ZXJQYXRoID0gX3VzZUtleVJlY29yZHMudW5yZWdpc3RlclBhdGgsXG4gICAgcmVmcmVzaE92ZXJmbG93S2V5cyA9IF91c2VLZXlSZWNvcmRzLnJlZnJlc2hPdmVyZmxvd0tleXMsXG4gICAgaXNTdWJQYXRoS2V5ID0gX3VzZUtleVJlY29yZHMuaXNTdWJQYXRoS2V5LFxuICAgIGdldEtleVBhdGggPSBfdXNlS2V5UmVjb3Jkcy5nZXRLZXlQYXRoLFxuICAgIGdldEtleXMgPSBfdXNlS2V5UmVjb3Jkcy5nZXRLZXlzLFxuICAgIGdldFN1YlBhdGhLZXlzID0gX3VzZUtleVJlY29yZHMuZ2V0U3ViUGF0aEtleXM7XG4gIHZhciByZWdpc3RlclBhdGhDb250ZXh0ID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2lzdGVyUGF0aDogcmVnaXN0ZXJQYXRoLFxuICAgICAgdW5yZWdpc3RlclBhdGg6IHVucmVnaXN0ZXJQYXRoXG4gICAgfTtcbiAgfSwgW3JlZ2lzdGVyUGF0aCwgdW5yZWdpc3RlclBhdGhdKTtcbiAgdmFyIHBhdGhVc2VyQ29udGV4dCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpc1N1YlBhdGhLZXk6IGlzU3ViUGF0aEtleVxuICAgIH07XG4gIH0sIFtpc1N1YlBhdGhLZXldKTtcbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZWZyZXNoT3ZlcmZsb3dLZXlzKGFsbFZpc2libGUgPyBFTVBUWV9MSVNUIDogY2hpbGRMaXN0LnNsaWNlKGxhc3RWaXNpYmxlSW5kZXggKyAxKS5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQua2V5O1xuICAgIH0pKTtcbiAgfSwgW2xhc3RWaXNpYmxlSW5kZXgsIGFsbFZpc2libGVdKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gQWN0aXZlID09PT09PT09PT09PT09PT09PT09PT09PVxuICB2YXIgX3VzZU1lcmdlZFN0YXRlMyA9IHVzZU1lcmdlZFN0YXRlKGFjdGl2ZUtleSB8fCBkZWZhdWx0QWN0aXZlRmlyc3QgJiYgKChfY2hpbGRMaXN0JCA9IGNoaWxkTGlzdFswXSkgPT09IG51bGwgfHwgX2NoaWxkTGlzdCQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jaGlsZExpc3QkLmtleSksIHtcbiAgICAgIHZhbHVlOiBhY3RpdmVLZXlcbiAgICB9KSxcbiAgICBfdXNlTWVyZ2VkU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZU1lcmdlZFN0YXRlMywgMiksXG4gICAgbWVyZ2VkQWN0aXZlS2V5ID0gX3VzZU1lcmdlZFN0YXRlNFswXSxcbiAgICBzZXRNZXJnZWRBY3RpdmVLZXkgPSBfdXNlTWVyZ2VkU3RhdGU0WzFdO1xuICB2YXIgb25BY3RpdmUgPSB1c2VNZW1vQ2FsbGJhY2soZnVuY3Rpb24gKGtleSkge1xuICAgIHNldE1lcmdlZEFjdGl2ZUtleShrZXkpO1xuICB9KTtcbiAgdmFyIG9uSW5hY3RpdmUgPSB1c2VNZW1vQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHNldE1lcmdlZEFjdGl2ZUtleSh1bmRlZmluZWQpO1xuICB9KTtcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGlzdDogY29udGFpbmVyUmVmLmN1cnJlbnQsXG4gICAgICBmb2N1czogZnVuY3Rpb24gZm9jdXMob3B0aW9ucykge1xuICAgICAgICB2Y
2XIgX2NoaWxkTGlzdCRmaW5kO1xuICAgICAgICB2YXIga2V5cyA9IGdldEtleXMoKTtcbiAgICAgICAgdmFyIF9yZWZyZXNoRWxlbWVudHMgPSByZWZyZXNoRWxlbWVudHMoa2V5cywgdXVpZCksXG4gICAgICAgICAgZWxlbWVudHMgPSBfcmVmcmVzaEVsZW1lbnRzLmVsZW1lbnRzLFxuICAgICAgICAgIGtleTJlbGVtZW50ID0gX3JlZnJlc2hFbGVtZW50cy5rZXkyZWxlbWVudCxcbiAgICAgICAgICBlbGVtZW50MmtleSA9IF9yZWZyZXNoRWxlbWVudHMuZWxlbWVudDJrZXk7XG4gICAgICAgIHZhciBmb2N1c2FibGVFbGVtZW50cyA9IGdldEZvY3VzYWJsZUVsZW1lbnRzKGNvbnRhaW5lclJlZi5jdXJyZW50LCBlbGVtZW50cyk7XG4gICAgICAgIHZhciBzaG91bGRGb2N1c0tleSA9IG1lcmdlZEFjdGl2ZUtleSAhPT0gbnVsbCAmJiBtZXJnZWRBY3RpdmVLZXkgIT09IHZvaWQgMCA/IG1lcmdlZEFjdGl2ZUtleSA6IGZvY3VzYWJsZUVsZW1lbnRzWzBdID8gZWxlbWVudDJrZXkuZ2V0KGZvY3VzYWJsZUVsZW1lbnRzWzBdKSA6IChfY2hpbGRMaXN0JGZpbmQgPSBjaGlsZExpc3QuZmluZChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHJldHVybiAhbm9kZS5wcm9wcy5kaXNhYmxlZDtcbiAgICAgICAgfSkpID09PSBudWxsIHx8IF9jaGlsZExpc3QkZmluZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NoaWxkTGlzdCRmaW5kLmtleTtcbiAgICAgICAgdmFyIGVsZW1lbnRUb0ZvY3VzID0ga2V5MmVsZW1lbnQuZ2V0KHNob3VsZEZvY3VzS2V5KTtcbiAgICAgICAgaWYgKHNob3VsZEZvY3VzS2V5ICYmIGVsZW1lbnRUb0ZvY3VzKSB7XG4gICAgICAgICAgdmFyIF9lbGVtZW50VG9Gb2N1cyRmb2N1cztcbiAgICAgICAgICBlbGVtZW50VG9Gb2N1cyA9PT0gbnVsbCB8fCBlbGVtZW50VG9Gb2N1cyA9PT0gdm9pZCAwIHx8IChfZWxlbWVudFRvRm9jdXMkZm9jdXMgPSBlbGVtZW50VG9Gb2N1cy5mb2N1cykgPT09IG51bGwgfHwgX2VsZW1lbnRUb0ZvY3VzJGZvY3VzID09PSB2b2lkIDAgfHwgX2VsZW1lbnRUb0ZvY3VzJGZvY3VzLmNhbGwoZWxlbWVudFRvRm9jdXMsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09IFNlbGVjdCA9PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gPj4+Pj4gU2VsZWN0IGtleXNcbiAgdmFyIF91c2VNZXJnZWRTdGF0ZTUgPSB1c2VNZXJnZWRTdGF0ZShkZWZhdWx0U2VsZWN0ZWRLZXlzIHx8IFtdLCB7XG4gICAgICB2YWx1ZTogc2VsZWN0ZWRLZXlzLFxuICAgICAgLy8gTGVnYWN5IGNvbnZlcnQga2V5IHRvIGFycmF5XG4gICAgICBwb3N0U3RhdGU6IGZ1bmN0aW9uIHBvc3RTdGF0ZShrZXlzKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGtleXMpKSB7XG4gICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleXMgPT09IG51bGwgfHwga2V5cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZX0xJU1Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtrZXlzXTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBfdXNlTWVyZ2VkU3RhdGU2ID0gX3NsaWNlZFRvQXJyYXkoX3VzZU1lcmdlZFN0YXRlNSwgMiksXG4gICAgbWVyZ2VkU2VsZWN0S2V5cyA9IF91c2VNZXJnZWRTdGF0ZTZbMF0sXG4gICAgc2V0TWVyZ2VkU2VsZWN0S2V5cyA9IF91c2VNZXJnZWRTdGF0ZTZbMV07XG5cbiAgLy8gPj4+Pj4gVHJpZ2dlciBzZWxlY3RcbiAgdmFyIHRyaWdnZXJTZWxlY3Rpb24gPSBmdW5jdGlvbiB0cmlnZ2VyU2VsZWN0aW9uKGluZm8pIHtcbiAgICBpZiAoc2VsZWN0YWJsZSkge1xuICAgICAgLy8gSW5zZXJ0IG9yIFJlbW92ZVxuICAgICAgdmFyIHRhcmdldEtleSA9IGluZm8ua2V5O1xuICAgICAgdmFyIGV4aXN0ID0gbWVyZ2VkU2VsZWN0S2V5cy5pbmNsdWRlcyh0YXJnZXRLZXkpO1xuICAgICAgdmFyIG5ld1NlbGVjdEtleXM7XG4gICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgaWYgKGV4aXN0KSB7XG4gICAgICAgICAgbmV3U2VsZWN0S2V5cyA9IG1lcmdlZFNlbGVjdEtleXMuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBrZXkgIT09IHRhcmdldEtleTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdTZWxlY3RLZXlzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShtZXJnZWRTZWxlY3RLZXlzKSwgW3RhcmdldEtleV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdTZWxlY3RLZXlzID0gW3RhcmdldEtleV07XG4gICAgICB9XG4gICAgICBzZXRNZXJnZWRTZWxlY3RLZXlzKG5ld1NlbGVjdEtleXMpO1xuXG4gICAgICAvLyBUcmlnZ2VyIGV2ZW50XG4gICAgICB2Y
2XIgc2VsZWN0SW5mbyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaW5mbyksIHt9LCB7XG4gICAgICAgIHNlbGVjdGVkS2V5czogbmV3U2VsZWN0S2V5c1xuICAgICAgfSk7XG4gICAgICBpZiAoZXhpc3QpIHtcbiAgICAgICAgb25EZXNlbGVjdCA9PT0gbnVsbCB8fCBvbkRlc2VsZWN0ID09PSB2b2lkIDAgfHwgb25EZXNlbGVjdChzZWxlY3RJbmZvKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uU2VsZWN0ID09PSBudWxsIHx8IG9uU2VsZWN0ID09PSB2b2lkIDAgfHwgb25TZWxlY3Qoc2VsZWN0SW5mbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2hhdGV2ZXIgc2VsZWN0YWJsZSwgYWx3YXlzIGNsb3NlIGl0XG4gICAgaWYgKCFtdWx0aXBsZSAmJiBtZXJnZWRPcGVuS2V5cy5sZW5ndGggJiYgaW50ZXJuYWxNb2RlICE9PSAnaW5saW5lJykge1xuICAgICAgdHJpZ2dlck9wZW5LZXlzKEVNUFRZX0xJU1QpO1xuICAgIH1cbiAgfTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09IE9wZW4gPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvKipcbiAgICogQ2xpY2sgZm9yIGl0ZW0uIFN1Yk1lbnUgZG8gbm90IGhhdmUgc2VsZWN0aW9uIHN0YXR1c1xuICAgKi9cbiAgdmFyIG9uSW50ZXJuYWxDbGljayA9IHVzZU1lbW9DYWxsYmFjayhmdW5jdGlvbiAoaW5mbykge1xuICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwIHx8IG9uQ2xpY2sod2Fybkl0ZW1Qcm9wKGluZm8pKTtcbiAgICB0cmlnZ2VyU2VsZWN0aW9uKGluZm8pO1xuICB9KTtcbiAgdmFyIG9uSW50ZXJuYWxPcGVuQ2hhbmdlID0gdXNlTWVtb0NhbGxiYWNrKGZ1bmN0aW9uIChrZXksIG9wZW4pIHtcbiAgICB2YXIgbmV3T3BlbktleXMgPSBtZXJnZWRPcGVuS2V5cy5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiBrICE9PSBrZXk7XG4gICAgfSk7XG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIG5ld09wZW5LZXlzLnB1c2goa2V5KTtcbiAgICB9IGVsc2UgaWYgKGludGVybmFsTW9kZSAhPT0gJ2lubGluZScpIHtcbiAgICAgIC8vIFdlIG5lZWQgZmluZCBhbGwgcmVsYXRlZCBwb3B1cCB0byBjbG9zZVxuICAgICAgdmFyIHN1YlBhdGhLZXlzID0gZ2V0U3ViUGF0aEtleXMoa2V5KTtcbiAgICAgIG5ld09wZW5LZXlzID0gbmV3T3BlbktleXMuZmlsdGVyKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgIHJldHVybiAhc3ViUGF0aEtleXMuaGFzKGspO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghaXNFcXVhbChtZXJnZWRPcGVuS2V5cywgbmV3T3BlbktleXMsIHRydWUpKSB7XG4gICAgICB0cmlnZ2VyT3BlbktleXMobmV3T3BlbktleXMsIHRydWUpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT0gQWNjZXNzaWJpbGl0eSA9PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIHRyaWdnZXJBY2Nlc3NpYmlsaXR5T3BlbiA9IGZ1bmN0aW9uIHRyaWdnZXJBY2Nlc3NpYmlsaXR5T3BlbihrZXksIG9wZW4pIHtcbiAgICB2YXIgbmV4dE9wZW4gPSBvcGVuICE9PSBudWxsICYmIG9wZW4gIT09IHZvaWQgMCA/IG9wZW4gOiAhbWVyZ2VkT3BlbktleXMuaW5jbHVkZXMoa2V5KTtcbiAgICBvbkludGVybmFsT3BlbkNoYW5nZShrZXksIG5leHRPcGVuKTtcbiAgfTtcbiAgdmFyIG9uSW50ZXJuYWxLZXlEb3duID0gdXNlQWNjZXNzaWJpbGl0eShpbnRlcm5hbE1vZGUsIG1lcmdlZEFjdGl2ZUtleSwgaXNSdGwsIHV1aWQsIGNvbnRhaW5lclJlZiwgZ2V0S2V5cywgZ2V0S2V5UGF0aCwgc2V0TWVyZ2VkQWN0aXZlS2V5LCB0cmlnZ2VyQWNjZXNzaWJpbGl0eU9wZW4sIG9uS2V5RG93bik7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09IEVmZmVjdCA9PT09PT09PT09PT09PT09PT09PT09PT1cbiAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBzZXRNb3VudGVkKHRydWUpO1xuICB9LCBbXSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT0gQ29udGV4dCA9PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIHByaXZhdGVDb250ZXh0ID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9pbnRlcm5hbFJlbmRlck1lbnVJdGVtOiBfaW50ZXJuYWxSZW5kZXJNZW51SXRlbSxcbiAgICAgIF9pbnRlcm5hbFJlbmRlclN1Yk1lbnVJdGVtOiBfaW50ZXJuYWxSZW5kZXJTdWJNZW51SXRlbVxuICAgIH07XG4gIH0sIFtfaW50ZXJuYWxSZW5kZXJNZW51SXRlbSwgX2ludGVybmFsUmVuZGVyU3ViTWVudUl0ZW1dKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gUmVuZGVyID09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vID4+Pj4+IENoaWxkcmVuXG4gIHZhciB3cmFwcGVkQ2hpbGRMaXN0ID0gaW50ZXJuYWxNb2RlICE9PSAnaG9yaXpvbnRhbCcgfHwgZGlzYWJsZWRPdmVyZmxvdyA/IGNoaWxkTGlzdCA6XG4gIC8vIE5lZWQgd3JhcCBmb3Igb3ZlcmZsb3cgZHJvcGRvd24gdGhhdCBkbyBub3QgcmVzcG9uc2UgZm9yIG9wZW5cbiAgY2hpbGRMaXN0Lm1hcChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgIC8vIEFsd2F5cyB3cmFwIHByb3ZpZGVyIHRvIGF2b2lkIHN1YiBub2RlIHJlLW1vdW50XG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAga2V5OiBjaGlsZC5rZXksXG4gICAgICAgIG92ZXJmbG93RGlzYWJsZWQ6IGluZGV4ID4gbGFzdFZpc2libGVJbmRleFxuICAgICAgfSwgY2hpbGQpXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gPj4+Pj4gQ29udGFpbmVyXG4gIHZhciBjb250YWluZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChPdmVyZmxvdywgX2V4dGVuZHMoe1xuICAgIGlkOiBpZCxcbiAgICByZWY6IGNvbnRhaW5lclJlZixcbiAgICBwcmVmaXhDbHM6IFwiXCIuY29uY2F0KHByZWZpeENscywgXCItb3ZlcmZsb3dcIiksXG4gICAgY29tcG9uZW50OiBcInVsXCIsXG4gICAgaXRlbUNvbXBvbmVudDogTWVudUl0ZW0sXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHByZWZpeENscywgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1yb290XCIpLCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLVwiKS5jb25jYXQoaW50ZXJuYWxNb2RlKSwgY2xhc3NOYW1lLCBfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXhDbHMsIFwiLWlubGluZS1jb2xsYXBzZWRcIiksIGludGVybmFsSW5saW5lQ29sbGFwc2VkKSwgXCJcIi5jb25jYXQocHJlZml4Q2xzLCBcIi1ydGxcIiksIGlzUnRsKSwgcm9vdENsYXNzTmFtZSksXG4gICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgc3R5bGU6IHN0eWxlLF
2xuICAgIHJvbGU6IFwibWVudVwiLFxuICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICBkYXRhOiB3cmFwcGVkQ2hpbGRMaXN0LFxuICAgIHJlbmRlclJhd0l0ZW06IGZ1bmN0aW9uIHJlbmRlclJhd0l0ZW0obm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfSxcbiAgICByZW5kZXJSYXdSZXN0OiBmdW5jdGlvbiByZW5kZXJSYXdSZXN0KG9taXRJdGVtcykge1xuICAgICAgLy8gV2UgdXNlIG9yaWdpbiBsaXN0IHNpbmNlIHdyYXBwZWQgbGlzdCB1c2UgY29udGV4dCB0byBwcmV2ZW50IG9wZW5cbiAgICAgIHZhciBsZW4gPSBvbWl0SXRlbXMubGVuZ3RoO1xuICAgICAgdmFyIG9yaWdpbk9taXRJdGVtcyA9IGxlbiA/IGNoaWxkTGlzdC5zbGljZSgtbGVuKSA6IG51bGw7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3ViTWVudSwge1xuICAgICAgICBldmVudEtleTogT1ZFUkZMT1dfS0VZLFxuICAgICAgICB0aXRsZTogb3ZlcmZsb3dlZEluZGljYXRvcixcbiAgICAgICAgZGlzYWJsZWQ6IGFsbFZpc2libGUsXG4gICAgICAgIGludGVybmFsUG9wdXBDbG9zZTogbGVuID09PSAwLFxuICAgICAgICBwb3B1cENsYXNzTmFtZTogb3ZlcmZsb3dlZEluZGljYXRvclBvcHVwQ2xhc3NOYW1lXG4gICAgICB9LCBvcmlnaW5PbWl0SXRlbXMpO1xuICAgIH0sXG4gICAgbWF4Q291bnQ6IGludGVybmFsTW9kZSAhPT0gJ2hvcml6b250YWwnIHx8IGRpc2FibGVkT3ZlcmZsb3cgPyBPdmVyZmxvdy5JTlZBTElEQVRFIDogT3ZlcmZsb3cuUkVTUE9OU0lWRSxcbiAgICBzc3I6IFwiZnVsbFwiLFxuICAgIFwiZGF0YS1tZW51LWxpc3RcIjogdHJ1ZSxcbiAgICBvblZpc2libGVDaGFuZ2U6IGZ1bmN0aW9uIG9uVmlzaWJsZUNoYW5nZShuZXdMYXN0SW5kZXgpIHtcbiAgICAgIHNldExhc3RWaXNpYmxlSW5kZXgobmV3TGFzdEluZGV4KTtcbiAgICB9LFxuICAgIG9uS2V5RG93bjogb25JbnRlcm5hbEtleURvd25cbiAgfSwgcmVzdFByb3BzKSk7XG5cbiAgLy8gPj4+Pj4gUmVuZGVyXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQcml2YXRlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBwcml2YXRlQ29udGV4dFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJZENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogdXVpZFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNZW51Q29udGV4dFByb3ZpZGVyLCB7XG4gICAgcHJlZml4Q2xzOiBwcmVmaXhDbHMsXG4gICAgcm9vdENsYXNzTmFtZTogcm9vdENsYXNzTmFtZSxcbiAgICBtb2RlOiBpbnRlcm5hbE1vZGUsXG4gICAgb3BlbktleXM6IG1lcmdlZE9wZW5LZXlzLFxuICAgIHJ0bDogaXNSdGxcbiAgICAvLyBEaXNhYmxlZFxuICAgICxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICAvLyBNb3Rpb25cbiAgICAsXG4gICAgbW90aW9uOiBtb3VudGVkID8gbW90aW9uIDogbnVsbCxcbiAgICBkZWZhdWx0TW90aW9uczogbW91bnRlZCA/IGRlZmF1bHRNb3Rpb25zIDogbnVsbFxuICAgIC8vIEFjdGl2ZVxuICAgICxcbiAgICBhY3RpdmVLZXk6IG1lcmdlZEFjdGl2ZUtleSxcbiAgICBvbkFjdGl2ZTogb25BY3RpdmUsXG4gICAgb25JbmFjdGl2ZTogb25JbmFjdGl2ZVxuICAgIC8vIFNlbGVjdGlvblxuICAgICxcbiAgICBzZWxlY3RlZEtleXM6IG1lcmdlZFNlbGVjdEtleXNcbiAgICAvLyBMZXZlbFxuICAgICxcbiAgICBpbmxpbmVJbmRlbnQ6IGlubGluZUluZGVudFxuICAgIC8vIFBvcHVwXG4gICAgLFxuICAgIHN1Yk1lbnVPcGVuRGVsYXk6IHN1Yk1lbnVPcGVuRGVsYXksXG4gICAgc3ViTWVudUNsb3NlRGVsYXk6IHN1Yk1lbnVDbG9zZURlbGF5LFxuICAgIGZvcmNlU3ViTWVudVJlbmRlcjogZm9yY2VTdWJNZW51UmVuZGVyLFxuICAgIGJ1aWx0aW5QbGFjZW1lbnRzOiBidWlsdGluUGxhY2VtZW50cyxcbiAgICB0cmlnZ2VyU3ViTWVudUFjdGlvbjogdHJpZ2dlclN1Yk1lbnVBY3Rpb24sXG4gICAgZ2V0UG9wdXBDb250YWluZXI6IGdldFBvcHVwQ29udGFpbmVyXG4gICAgLy8gSWNvblxuICAgICxcbiAgICBpdGVtSWNvbjogaXRlbUljb24sXG4gICAgZXhwYW5kSWNvbjogZXhwYW5kSWNvblxuICAgIC8vIEV2ZW50c1xuICAgICxcbiAgICBvbkl0ZW1DbGljazogb25JbnRlcm5hbENsaWNrLFxuICAgIG9uT3BlbkNoYW5nZTogb25JbnRlcm5hbE9wZW5DaGFuZ2VcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGF0aFVzZXJDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IHBhdGhVc2VyQ29udGV4dFxuICB9LCBjb250YWluZXIpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgIH0sXG4gICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFBhdGhSZWdpc3RlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogcmVnaXN0ZXJQYXRoQ29udGV4dFxuICB9LCBtZWFzdXJlQ2hpbGRMaXN0KSkpKSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IE1lbnU7IiwiaW1wb3J0IE1lbnUgZnJvbSBcIi4vTWVudVwiO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gXCIuL01lbnVJdGVtXCI7XG5pbXBvcnQgU3ViTWVudSBmcm9tIFwiLi9TdWJNZW51XCI7XG5pbXBvcnQgTWVudUl0ZW1Hcm91cCBmcm9tIFwiLi9NZW51SXRlbUdyb3VwXCI7XG5pbXBvcnQgeyB1c2VGdWxsUGF0aCB9IGZyb20gXCIuL2NvbnRleHQvUGF0aENvbnRleHRcIjtcbmltcG9ydCBEaXZpZGVyIGZyb20gXCIuL0RpdmlkZXJcIjtcbmV4cG9ydCB7IFN1Yk1lbnUsIE1lbnVJdGVtIGFzIEl0ZW0sIE1lbnVJdGVtLCBNZW51SXRlbUdyb3VwLCBNZW51SXRlbUdyb3VwIGFzIEl0ZW1Hcm91cCwgRGl2aWRlciwgLyoqIEBwcml2YXRlIE9ubHkgdXNlZCBmb3IgYW50ZCBpbnRlcm5hbC4gRG8gbm90IHVzZSBpbiB5b3VyIHByb2R1Y3Rpb24uICovXG51c2VGdWxsUGF0aCB9O1xudmFyIEV4cG9ydE1lbnUgPSBNZW51O1xuRXhwb3J0TWVudS5JdGVtID0gTWVudUl0ZW07XG5FeHBvcnRNZW51LlN1Yk1lbnUgPSBTdWJNZW51O1xuRXhwb3J0TWVudS5JdGVtR3JvdXAgPSBNZW51SXRlbUdyb3VwO1xuRXhwb3J0TWVudS5EaXZpZG
2VyID0gRGl2aWRlcjtcbmV4cG9ydCBkZWZhdWx0IEV4cG9ydE1lbnU7Il0sIm5hbWVzIjpbIklkQ29udGV4dCIsInJlYWN0IiwiY3JlYXRlQ29udGV4dCIsImdldE1lbnVJZCIsInV1aWQiLCJldmVudEtleSIsInVuZGVmaW5lZCIsImNvbmNhdCIsInVzZU1lbnVJZCIsInVzZUNvbnRleHQiLCJfZXhjbHVkZWQiLCJNZW51Q29udGV4dCIsIkluaGVyaXRhYmxlQ29udGV4dFByb3ZpZGVyIiwiX3JlZiIsImNoaWxkcmVuIiwibG9ja2VkIiwicmVzdFByb3BzIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJBIiwiY29udGV4dCIsImluaGVyaXRhYmxlQ29udGV4dCIsInVzZU1lbW8iLCJvcmlnaW4iLCJ0YXJnZXQiLCJjbG9uZSIsIm9iamVjdFNwcmVhZDIiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInZhbHVlIiwicHJldiIsIm5leHQiLCJpc0VxdWFsIiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwiRW1wdHlMaXN0IiwiUGF0aFJlZ2lzdGVyQ29udGV4dCIsInVzZU1lYXN1cmUiLCJQYXRoVHJhY2tlckNvbnRleHQiLCJ1c2VGdWxsUGF0aCIsInBhcmVudEtleVBhdGgiLCJ0b0NvbnN1bWFibGVBcnJheSIsIlBhdGhVc2VyQ29udGV4dCIsImNvbnRleHRfUHJpdmF0ZUNvbnRleHQiLCJMRUZUIiwiS2V5Q29kZSIsIlJJR0hUIiwiVVAiLCJET1dOIiwiRU5URVIiLCJFU0MiLCJIT01FIiwiRU5EIiwiQXJyb3dLZXlzIiwiZ2V0Rm9jdXNhYmxlRWxlbWVudHMiLCJjb250YWluZXIiLCJlbGVtZW50cyIsIkRvbV9mb2N1cyIsImpEIiwiZmlsdGVyIiwiZWxlIiwiaGFzIiwiZ2V0TmV4dEZvY3VzRWxlbWVudCIsInBhcmVudFF1ZXJ5Q29udGFpbmVyIiwiZm9jdXNNZW51RWxlbWVudCIsIm9mZnNldCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNhbWVMZXZlbEZvY3VzYWJsZU1lbnVFbGVtZW50TGlzdCIsImNvdW50IiwiZm9jdXNJbmRleCIsImZpbmRJbmRleCIsInJlZnJlc2hFbGVtZW50cyIsImlkIiwiU2V0Iiwia2V5MmVsZW1lbnQiLCJNYXAiLCJlbGVtZW50MmtleSIsImVsZW1lbnQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJhZGQiLCJzZXQiLCJ1c2VBY2Nlc3NpYmlsaXR5IiwibW9kZSIsImFjdGl2ZUtleSIsImlzUnRsIiwiY29udGFpbmVyUmVmIiwiZ2V0S2V5cyIsImdldEtleVBhdGgiLCJ0cmlnZ2VyQWN0aXZlS2V5IiwidHJpZ2dlckFjY2Vzc2liaWxpdHlPcG
2VuIiwib3JpZ2luT25LZXlEb3duIiwicmFmUmVmIiwidXNlUmVmIiwiYWN0aXZlUmVmIiwiY3VycmVudCIsImNsZWFuUmFmIiwicmFmIiwiY2FuY2VsIiwidXNlRWZmZWN0IiwiZSIsIndoaWNoIiwiaW5jbHVkZXMiLCJyZWZyZXNoZWRFbGVtZW50cyIsIl9yZWZyZXNoZWRFbGVtZW50cyIsImFjdGl2ZUVsZW1lbnQiLCJwYXJlbnRFbGVtZW50IiwiZ2V0Rm9jdXNFbGVtZW50IiwiZ2V0IiwiZm9jdXNNZW51S2V5Iiwib2Zmc2V0T2JqIiwiaXNSb290TGV2ZWwiLCJfb2Zmc2V0cyIsInBhcmVudCIsImlubGluZVRyaWdnZXIiLCJpbmxpbmUiLCJkZWZpbmVQcm9wZXJ0eSIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsImlubGluZVN1YiIsImhvcml6b250YWxTdWIiLCJ2ZXJ0aWNhbFN1YiIsInNpYmxpbmciLCJnZXRPZmZzZXQiLCJwcmV2ZW50RGVmYXVsdCIsInRyeUZvY3VzIiwibWVudUVsZW1lbnQiLCJmb2N1c1RhcmdldEVsZW1lbnQiLCJsaW5rIiwiZ2V0QXR0cmlidXRlIiwidGFyZ2V0S2V5IiwiZm9jdXMiLCJ0YXJnZXRFbGVtZW50IiwiZm9jdXNhYmxlRWxlbWVudHMiLCJmaW5kQ29udGFpbmVyVUwiLCJjb250cm9sSWQiLCJnZXRFbGVtZW50QnlJZCIsImtleVBhdGgiLCJwYXJlbnRLZXkiLCJwYXJlbnRNZW51RWxlbWVudCIsIlBBVEhfU1BMSVQiLCJnZXRQYXRoU3RyIiwiam9pbiIsIk9WRVJGTE9XX0tFWSIsInVzZUtleVJlY29yZHMiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImludGVybmFsRm9yY2VVcGRhdGUiLCJzbGljZWRUb0FycmF5Iiwia2V5MnBhdGhSZWYiLCJwYXRoMmtleVJlZiIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0Iiwib3ZlcmZsb3dLZXlzIiwic2V0T3ZlcmZsb3dLZXlzIiwidXBkYXRlUmVmIiwiZGVzdHJveVJlZiIsInJlZ2lzdGVyUGF0aCIsInVzZUNhbGxiYWNrIiwiY29ubmVjdGVkUGF0aCIsImNhbGxiYWNrIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwidW5yZWdpc3RlclBhdGgiLCJkZWxldGUiLCJyZWZyZXNoT3ZlcmZsb3dLZXlzIiwiaW5jbHVkZU92ZXJmbG93IiwiZnVsbFBhdGgiLCJzcGxpdCIsInVuc2hpZnQiLCJpc1N1YlBhdGhLZXkiLCJwYXRoS2V5cyIsIml0ZW0iLCJzb21lIiwicGF0aEtleSIsImdldFN1YlBhdGhLZXlzIiwic3RhcnRzV2l0aCIsInB1c2giLCJ1c2VNZW1vQ2FsbGJhY2siLCJmdW5jIiwiZnVuUmVmIiwiX2Z1blJlZiRjdXJyZW50IiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiYXBwbHkiLCJ1bmlxdWVQcmVmaXgiLCJNYXRoIiwicmFuZG9tIiwidG9GaXhlZCIsInRvU3RyaW5nIiwic2xpY2UiLCJpbnRlcm5hbElkIiwidXNlQWN0aXZlIiwiZGlzYWJsZWQiLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJfUmVhY3QkdXNlQ29udGV4dCIsIm9uQWN0aXZlIiwib25JbmFjdGl2ZSIsInJldCIsImFjdGl2ZSIsImRvbUV2ZW50IiwidXNlRGlyZWN0aW9uU3R5bGUiLCJsZXZlbCIsInJ0bCIsImlubGluZUluZGVudCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdMZWZ0IiwiSWNvbiIsImljb25Ob2RlIiwiaWNvbiIsInByb3BzIiwid2FyblV0aWxfZXhjbHVkZWQiLCJ3YXJuSXRlbVByb3AiLCJyZXN0SW5mbyIsIndhcm5pbmciLCJBeSIsIk1lbnVJdGVtX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9leGNsdWRlZDMiLCJMZWdhY3lNZW51SXRlbSIsIl9SZWFjdCRDb21wb25lbnQiLCJpbmhlcml0cyIsIl9zdXBlciIsImNyZWF0ZVN1cGVyIiwiY2xhc3NDYWxsQ2hlY2siLCJ0aGlzIiwiY3JlYXRlQ2xhc3MiLCJfdGhpcyRwcm9wcyIsInRpdGxlIiwiYXR0cmlidXRlIiwiZWxlbWVudFJlZiIsInBhc3NlZFByb3BzIiwib21pdCIsImVzIiwiSXRlbSIsImVzbV9leHRlbmRzIiwicmVmIiwiQ29tcG9uZW50IiwiSW50ZXJuYWxNZW51SXRlbSIsImZvcndhcmRSZWYiLCJzdHlsZSIsImNsYXNzTmFtZSIsIndhcm5LZXkiLCJpdGVtSWNvbiIsInJvbGUiLCJvbkNsaWNrIiwib25LZXlEb3duIiwib25Gb2N1cyIsImRvbURhdGFJZCIsInByZWZpeENscyIsIm9uSXRlbUNsaWNrIiwiY29udGV4dERpc2FibGVkIiwib3ZlcmZsb3dEaXNhYmxlZCIsImNvbnRleHRJdGVtSWNvbiIsInNlbGVjdGVkS2V5cyIsIl9pbnRlcm5hbFJlbmRlck1lbnVJdGVtIiwiaXRlbUNscyIsImxlZ2FjeU1lbnVJdGVtUmVmIiwibWVyZ2VkRGlzYWJsZWQiLCJtZXJnZWRFbGVSZWYiLCJlc19yZWYiLCJ4SyIsImNvbm5lY3RlZEtleXMiLCJnZXRFdmVudEluZm8iLCJyZXZlcnNlIiwibWVyZ2VkSXRlbUljb24iLCJfdXNlQWN0aXZlIiwiYWN0aXZlUHJvcHMiLCJzZWxlY3RlZCIsImRpcmVjdGlvblN0eWxlIiwib3B0aW9uUm9sZVByb3BzIiwicmVuZGVyTm9kZSIsInRhYkluZGV4IiwiY29tcG9uZW50IiwiY2xhc3NuYW1lc19kZWZhdWx0IiwiaW5mbyIsImlzU2VsZWN0ZWQiLCJNZW51SXRlbSIsIm1lYXN1cmUiLCJjb25uZWN0ZWRLZXlQYXRoIiwiZXNfTWVudUl0ZW0iLCJTdWJNZW51TGlzdF9leGNsdWRlZCIsIkludGVybmFsU3ViTWVudUxpc3QiLCJTdWJNZW51TGlzdCIsImRpc3BsYXlOYW1lIiwiU3ViTWVudV9TdWJNZW51TGlzdCIsInBhcnNlQ2hpbGRyZW4iLCJ0b0FycmF5IiwibWFwIiwiY2hpbGQiLCJpbmRleCIsImlzVmFsaWRFbGVtZW50IiwiX2V2ZW50S2V5IiwiX2NoaWxkJHByb3BzIiwiY2xvbmVQcm9wcyIsImNsb25lRWxlbWVudCIsImF1dG9BZGp1c3RPdmVyZmxvdyIsImFkanVzdFgiLCJhZGp1c3RZIiwicGxhY2VtZW50cyIsInRvcExlZnQiLCJwb2ludHMiLCJvdmVyZmxvdyIsInRvcFJpZ2h0IiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibGVmdFRvcCIsImxlZnRCb3R0b20iLCJyaWdodFRvcCIsInJpZ2h0Qm90dG9tIiwicGxhY2VtZW50c1J0bCIsImdldE1vdGlvbiIsIm1vdGlvbiIsImRlZmF1bHRNb3Rpb25zIiwib3RoZXIiLCJwb3B1cFBsYWNlbWVudE1hcCIsIlBvcHVwVHJpZ2dlciIsInZpc2libGUiLCJwb3B1cCIsInBvcHVwU3R5bGUiLCJwb3B1cENsYXNzTmFtZSIsInBvcHVwT2Zmc2V0Iiwib25WaXNpYmxlQ2hhbmdlIiwiZ2V0UG9wdXBDb250YWluZXIiLCJzdWJNZW51T3BlbkRlbGF5Iiwic3ViTWVudUNsb3NlRGVsYXkiLCJidWlsdGluUGxhY2VtZW50cyIsInRyaWdnZXJTdWJNZW51QWN0aW9uIiwiZm9yY2VTdWJNZW51UmVuZGVyIiwicm9vdENsYXNzTmFtZSIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJpbm5lclZpc2libGUiLCJzZXRJbm5lclZpc2libGUiLCJwbGFjZW1lbnQiLCJwb3B1cFBsYWNlbWVudCIsInRhcmdldE1vdGlvbiIsInRhcmdldE1vdGlvblJlZiIsIm1lcmdlZE1vdGlvbiIsImxlYXZlZENsYXNzTmFtZSIsInJlbW92ZU9uTGVhdmUiLCJtb3Rpb25BcHBlYXIiLCJ2aXNpYmxlUmVmIiwidHJpZ2dlcl9lcyIsInN0cmV0Y2giLCJwb3B1cFZpc2libGUiLCJwb3B1cEFsaWduIiwiYWN0aW9uIiwibW91c2VFbnRlckRlbGF5IiwibW91c2VMZWF2ZURlbGF5Iiwib25Qb3B1cFZpc2libGVDaGFuZ2UiLCJmb3JjZVJlbmRlciIsInBvcHVwTW90aW9uIiwiZnJlc2giLCJJbmxpbmVTdWJNZW51TGlzdCIsIm9wZW4iLCJmaXhlZE1vZGUiLCJzYW1lTW9kZVJlZiIsImRlc3Ryb3kiLCJzZXREZXN0cm95IiwibWVyZ2VkT3BlbiIsIm9yaWdpbk9uVmlzaWJsZUNoYW5nZWQiLCJvblZpc2libGVDaGFuZ2VkIiwibmV3VmlzaWJsZSIsInJjX21vdGlvbl9lcyIsIl9yZWYyIiwibW90aW9uQ2xhc3NOYW1lIiwibW90aW9uU3R5bGUiLCJTdWJNZW51X2V4Y2x1ZGVkIiwiU3ViTWVudV9leGNsdWRlZDIiLCJJbnRlcm5hbFN1Yk1lbnUiLCJpbnRlcm5hbFBvcHVwQ2xvc2UiLCJleHBhbmRJY29uIiwib25UaXRsZUNsaWNrIiwib25UaXRsZU1vdXNlRW50ZXIiLCJvblRpdGxlTW91c2VMZWF2ZSIsIm9wZW5LZXlzIiwiY29udGV4dEV4cGFuZEljb24iLCJvbk9wZW5DaGFuZ2UiLCJfaW50ZXJuYWxSZW5kZXJTdWJNZW51SXRlbSIsInN1Yk1lbnVQcmVmaXhDbHMiLCJwb3B1cFJlZiIsIm1lcmdlZEV4cGFuZEljb24iLCJvcmlnaW5PcGVuIiwiY2hpbGRyZW5TZWxlY3RlZCIsImNoaWxkcmVuQWN0aXZlIiwic2V0Q2hpbGRyZW5BY3RpdmUiLCJ0cmlnZ2VyQ2hpbGRyZW5BY3RpdmUiLCJuZXdBY3RpdmUiLCJtZXJnZWRBY3RpdmUiLCJvbk1lcmdlZEl0ZW1DbGljayIsInBvcHVwSWQiLCJleHBhbmRJY29uTm9kZSIsImlzT3BlbiIsImlzU3ViTWVudSIsInRpdGxlTm9kZSIsInRyaWdnZXJNb2RlUmVmIiwidHJpZ2dlck1vZGUiLCJsaXN0Tm9kZSIsImVzX1N1Yk1lbnUiLCJjaGlsZExpc3QiLCJEaXZpZGVyIiwiTWVudUl0ZW1Hcm91cF9leGNsdWRlZCIsIkludGVybmFsTWVudUl0ZW1Hcm91cCIsImdyb3VwUHJlZml4Q2xzIiwic3RvcFByb3BhZ2F0aW9uIiwiZXNfTWVudUl0ZW1Hcm91cCIsIm5vZGVVdGlsX2V4Y2x1ZGVkIiwiY29udmVydEl0ZW1zVG9Ob2RlcyIsImxpc3QiLCJjb21wb25lbnRzIiwiTWVyZ2VkTWVudUl0ZW0iLCJNZXJnZWRNZW51SXRlbUdyb3VwIiwiZ3JvdXAiLCJNZXJnZWRTdWJNZW51Iiwic3VibWVudSIsIk1lcmdlZERpdmlkZXIiLCJkaXZpZGVyIiwib3B0IiwiZXNtX3R5cGVvZiIsImxhYmVsIiwidHlwZSIsImV4dHJhIiwibWVyZ2VkS2V5IiwicGFyc2VJdGVtcyIsIml0ZW1zIiwiY2hpbGROb2RlcyIsIm1lcmdlZENvbXBvbmVudHMiLCJNZW51X2V4Y2x1ZGVkIiwiRU1QVFlfTElTVCIsIk1lbnUiLCJfY2hpbGRMaXN0JCIsIl9yZWYkcHJlZml4Q2xzIiwiX3JlZiR0YWJJbmRleCIsImRpcmVjdGlvbiIsIl9yZWYkbW9
2kZSIsImlubGluZUNvbGxhcHNlZCIsImRpc2FibGVkT3ZlcmZsb3ciLCJfcmVmJHN1Yk1lbnVPcGVuRGVsYXkiLCJfcmVmJHN1Yk1lbnVDbG9zZURlbGEiLCJkZWZhdWx0T3BlbktleXMiLCJkZWZhdWx0QWN0aXZlRmlyc3QiLCJfcmVmJHNlbGVjdGFibGUiLCJzZWxlY3RhYmxlIiwiX3JlZiRtdWx0aXBsZSIsIm11bHRpcGxlIiwiZGVmYXVsdFNlbGVjdGVkS2V5cyIsIm9uU2VsZWN0Iiwib25EZXNlbGVjdCIsIl9yZWYkaW5saW5lSW5kZW50IiwiX3JlZiR0cmlnZ2VyU3ViTWVudUFjIiwiX3JlZiRvdmVyZmxvd2VkSW5kaWNhIiwib3ZlcmZsb3dlZEluZGljYXRvciIsIm92ZXJmbG93ZWRJbmRpY2F0b3JQb3B1cENsYXNzTmFtZSIsIm9wZW5BbmltYXRpb24iLCJvcGVuVHJhbnNpdGlvbk5hbWUiLCJfaW50ZXJuYWxDb21wb25lbnRzIiwiX1JlYWN0JHVzZU1lbW8iLCJfUmVhY3QkdXNlTWVtbzIiLCJtZWFzdXJlQ2hpbGRMaXN0IiwibW91bnRlZCIsInNldE1vdW50ZWQiLCJfdXNlTWVyZ2VkU3RhdGUiLCJ1c2VNZXJnZWRTdGF0ZSIsIl91c2VNZXJnZWRTdGF0ZTIiLCJzZXRVVUlEIiwibmV3SWQiLCJ1c2VVVUlEIiwicG9zdFN0YXRlIiwibWVyZ2VkT3BlbktleXMiLCJzZXRNZXJnZWRPcGVuS2V5cyIsInRyaWdnZXJPcGVuS2V5cyIsImRvVXBkYXRlIiwicmVhY3RfZG9tIiwiZmx1c2hTeW5jIiwiaW5saW5lQ2FjaGVPcGVuS2V5cyIsInNldElubGluZUNhY2hlT3BlbktleXMiLCJtb3VudFJlZiIsIl9SZWFjdCR1c2VNZW1vMyIsIl9SZWFjdCR1c2VNZW1vNCIsIm1lcmdlZE1vZGUiLCJtZXJnZWRJbmxpbmVDb2xsYXBzZWQiLCJpc0lubGluZU1vZGUiLCJfUmVhY3QkdXNlU3RhdGU1IiwiX1JlYWN0JHVzZVN0YXRlNiIsImludGVybmFsTW9kZSIsInNldEludGVybmFsTW9kZSIsIl9SZWFjdCR1c2VTdGF0ZTciLCJfUmVhY3QkdXNlU3RhdGU4IiwiaW50ZXJuYWxJbmxpbmVDb2xsYXBzZWQiLCJzZXRJbnRlcm5hbElubGluZUNvbGxhcHNlZCIsIl9SZWFjdCR1c2VTdGF0ZTkiLCJfUmVhY3QkdXNlU3RhdGUxMCIsImxhc3RWaXNpYmxlSW5kZXgiLCJzZXRMYXN0VmlzaWJsZUluZGV4IiwiYWxsVmlzaWJsZSIsIl91c2VLZXlSZWNvcmRzIiwicmVnaXN0ZXJQYXRoQ29udGV4dCIsInBhdGhVc2VyQ29udGV4dCIsIl91c2VNZXJnZWRTdGF0ZTMiLCJfdXNlTWVyZ2VkU3RhdGU0IiwibWVyZ2VkQWN0aXZlS2V5Iiwic2V0TWVyZ2VkQWN0aXZlS2V5IiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsIm9wdGlvbnMiLCJfY2hpbGRMaXN0JGZpbmQiLCJfZWxlbWVudFRvRm9jdXMkZm9jdXMiLCJfcmVmcmVzaEVsZW1lbnRzIiwic2hvdWxkRm9jdXNLZXkiLCJmaW5kIiwibm9kZSIsImVsZW1lbnRUb0ZvY3VzIiwiX3VzZU1lcmdlZFN0YXRlNSIsImlzQXJyYXkiLCJfdXNlTWVyZ2VkU3RhdGU2IiwibWVyZ2VkU2VsZWN0S2V5cyIsInNldE1lcmdlZFNlbGVjdEtleXMiLCJvbkludGVybmFsQ2xpY2siLCJuZXdTZWxlY3RLZXlzIiwiZXhpc3QiLCJzZWxlY3RJbmZvIiwidHJpZ2dlclNlbGVjdGlvbiIsIm9uSW50ZXJuYWxPcGVuQ2hhbmdlIiwibmV3T3BlbktleXMiLCJrIiwic3ViUGF0aEtleXMiLCJvbkludGVybmFsS2V5RG93biIsIm5leHRPcGVuIiwicHJpdmF0ZUNvbnRleHQiLCJ3cmFwcGVkQ2hpbGRMaXN0IiwiaXRlbUNvbXBvbmVudCIsImRpciIsImRhdGEiLCJyZW5kZXJSYXdJdGVtIiwicmVuZGVyUmF3UmVzdCIsIm9taXRJdGVtcyIsImxlbiIsIm9yaWdpbk9taXRJdGVtcyIsIm1heENvdW50IiwiSU5WQUxJREFURSIsIlJFU1BPTlNJVkUiLCJzc3IiLCJuZXdMYXN0SW5kZXgiLCJkaXNwbGF5IiwiRXhwb3J0TWVudSIsIlN1Yk1lbnUiLCJJdGVtR3JvdXAiLCJyY19tZW51X2VzIl0sInNvdXJjZVJvb3QiOiIifQ==

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.